Asciidoctor是一个快速文本处理器和发布工具链,用于将文本内容转为HTML,PDF,PPT或者其他格式
默认提供了一系列样式,用于表现HTML内容.
Asciidoctor可以运行在Ruby,JVM或者NodeJS环境中,具体参考 官网
文章及更新出自我的博客,CSDN不定期维护,更多内容参考
我的博客
需要安装Ruby
运行环境
安装
gem install asciidoctor
查看版本
asciidoctor --version
升级版本
gem update asciidoctor
以下语法仅为官网推荐语法,不包括用户或者第三方自定义实现.
markdown
语法区别需求 | Markdown | AsciiDoc |
---|---|---|
加粗 | **加粗内容** | *加粗内容* |
加粗(不受约束) | **加粗**内容 | **加粗**内容 |
斜体 | *斜体内容* | _斜体内容_ |
斜体(不受约束) | _斜体_内容 | |
等宽 | `等宽内容` | `等宽内容` |
等宽(不受约束) | `等宽`内容 | ``等宽``内容 |
链接 | [链接提示](网址URL) | 网址URL[链接提示] |
相对链接 | [链接提示](相对路径) | link:相对路径[链接提示] xref:相对路径[链接提示] |
文件链接 | [文件名称](文件URL) | link:文件位置 |
参考链接 | #H标签ID[提示] | <<标题名称>> |
参考锚点 | <h2 id=“锚点”>标题</h2> | [#锚点] ==标题 |
内联锚点 | .[[步骤]] 提示 | |
图片 | ![图片描述](图片地址) | image:图片地址[图片描述] |
图片(无描述) | image::图片地址[图片描述] | |
标题 | ## 二级标题 | == 二级标题 |
引用 | > 引用内容 > 引用内容 | ____ 引用内容 ____ |
文字块 | $ 文字内容 | 制表 文字内容 .... 文字内容 .... |
代码块 | ``` 语法 代码块 ``` | [source, 语法] ---- 代码块 ---- |
无序列表 | * 一级列表 ** 二级列表 *** 三级列表 | * 一级列表 ** 二级列表 *** 三级列表 |
有序列表 | 1. 一级列表 2. 二级列表 3. 三级列表 | . 一级列表 . 二级列表 . 三级列表 |
主题打断 | *** * * * --- - - - ___ _ _ _ | ‘’’ |
文档描述信息 | --- title: 文档标题 --- | = 文档标题 :awestruct-layout: base |
警告 | TIP: 讲警告内容 | |
侧边栏 | ||
加粗标题 | ||
包含其他文档 | include:: 文档.adoc[] | |
URI跳转 | [页面ID]: 页面地址 “页面描述” Go [页面ID] | :页面ID: 页面地址 Go {页面ID}[页面描述]. |
自定义CSS | [.path] __样式文本__ |
属性名称不区分大小写,同时各环境中的相同属性名称具有优先级先后
API或CLI中定义的属性 > 文档中定义的属性 > 属性的默认值
另外,可以人为修改属性值优先级顺序.
:leveloffset:
方式声明一个属性
:leveloffset:3
方式声明并赋值一个属性
!leveloffset:
或 :leveloffset !:
取消一个属性
我们可以在文档的头信息中设置属性信息,如果value
中有空格,逗号等特殊字符,需要用""
双引号包裹.
:name: value
:toc:
文章目录
:toc: right
文章目录,右浮动显示
:imagesdir: ./images
图片默认目录
:iconsdir: ./icons
图标默认目录
:stylesdir: ./styles
CSS样式默认目录
介绍了基本的语法规则,至于预览文件,可以参考附件.
通过 =
开头,指定文档名.同时,可以在文档下面标识属性.
= 模板示例
:keywords: adoc, example
:author: Jion
:email: jionjion@aliyun.com
:revnumber: v1.0
:revdate: 2019-05-01
:toc: left
:toc-title: 目录
:toclevels: 2
这是一个模板,介绍了相关语法. +
{author}写作,更多联系 <jionjion@aliyun.com>
doctype
可选参数有
book
图书,具有顶级标题,附录等,由article
构成
article
文章,具有附录,摘要等…
manpage
手册,简短的描述
inline
片段,被以上包含
使用 //
和 分别表示单行注释和多行注释.
// 这是注释内容
这是多行注释,
这是多行注释
建议使用属性 toc
, toc-title
, toclevels
分别表示启用目录及其对齐, 目录标题, 目录层深度
在文件标题和一级标题之间的段落,会被自动设置为摘要.
= 文档标题
摘要内容,........
== 标题一
= 文件标题
== 一级标题
=== 二级标题
==== 三级标题
===== 四级标题
====== 五级标题
[#header-id]
====== 带有ID的标题
更多属性参考标题属性
= 文档标题
:revdate: 1.0
:author: jionjion
:email: {author_email}
使用 \*
或者 **
包裹,构成粗体字体
*主题样式*
**粗体样式**
使用 \_
或者 __
包裹,构成斜体字体
_斜体样式_
__斜体样式__
使用 `` 包裹,构成等宽字体
多用在特殊名词或者其他特定解释词语
`等宽样式`
`Hello Word`
使用 ~
包裹作为下脚标
使用 ^
包裹作为上角标
H~2~O
E=mc^2^
使用 -
作为基本的无序列表
- 无序列表
使用 *
可以进行无序列表之间的嵌套
* 无序列表
** 列表嵌套
*** 列表嵌套
**** 列表嵌套
***** 列表嵌套
具有icon图标的代办信息
* [*] 完成
* [x] 完成
* [ ] 未完成
通过 序号 .
的形式进行列表的序号指定.
1. 列表一
2. 列表二
3. 列表三
当然,也可以通过 .
自动进行序号的匹配
. 列表一
. 列表二
. 列表三
[start=起始数字]
进行列表的起始数字的指定
[start=6]
. 列表六
. 列表七
[%reversed]
可以对列表数字进行倒序排列
[%reversed]
. 列表三
. 列表二
. 列表一
支持列表嵌套,自定义列表序号格式
关键词1:: 关键词1解释
关键词2:: 关键词2解释
标题::
计划:::
. 事件一
. 事件二
[qanda]
问题?::
答案.........
简单的分配行列的表格
|===
| 第一行,第一列 | 第一行,第二列
| 第二行,第一列 | 第二行,第二列
|===
只是指定列数,自动分配行数的表格
3*
表示具有三个完全一样配置的列配置
[cols="3*"]
|===
| 单元格1
| 单元格2
| 单元格3
| 单元格4
| 单元格5
| 单元格6
|===
使用 <
, ^
, >
分别表示水平左对齐,水平居中对齐,水平右对齐.
默认使用水平左对齐
[cols="<,^,>"]
|===
| 第一行,第一列,左对齐
| 第一行,第二列,居中对齐
| 第一列,第三列,右对齐
| 第二行,第一列,左对齐
| 第二行,第二列,居中对齐
| 第三行,第三列,右对齐
|===
使用 .<
, .^
, .>
分别表示垂直顶部对齐,垂直居中对齐,垂直底部对齐
默认使用垂直顶部对齐
[cols=", .<, .^, .>"]
|===
| 第一行,第一列,内容............................................
| 第一行,第一列
| 第一行,第二列,内容
| 第一列,第三列,右对齐
| 第一行,第一列,内容............................................
| 第二行,第一列,左对齐
| 第二行,第二列,居中对齐
| 第三行,第三列,右对齐
|===
可以采用百分比的方式进行调整各列所占的宽度. +
数字在[1,99]之间,表示占总数的百分比
[cols="2,5,3"]
|===
| 占宽比20%
| 占宽比50%
| 占宽比30%
|===
使用 3*|
开头表示当前单元格重复3次 +
使用 2+|
开头表示当前单元格跨列2列 +
使用 .2+|
开头表示当前单元格跨行2行
|===
| 第一行,第一列 | 第一行,第二列 | 第一行,第三列 | 第一行,第四列
3*| 第二行,重复的 | 第二行,第四列
| 第三行,第一列
| 第三行,第二列
2+| 第三行,跨列
| 第四行,第一列
.2+| 第四行,跨行
| 第四行,第三列
| 第四行,第四列
| 第五行,第一列
| 第五行,第三列
| 第五行,第四列
|===
通过使用 options="header"
开启表头,使第一行成为表头
[cols=2*,options="header"]
|===
| 第一列表头
| 第二列表头
| 第二行,第一列
| 第二行,第二列
|===
通过使用 options="footer"
开启表脚,使最后一行变为表脚
[options="footer"]
|===
| 第一列表头 | 第二列表头
| 第二行,第一列
| 第二行,第二列
| 第一列表脚
| 第二列表脚
|===
[%autowidth]
可以使表格整体根据表格内容调整宽度
[%autowidth]
|===
| 第一行,第一列
| 第一行,第二列
|===
[width=75%]
可以使表格整体宽度占当前页面 70%
[width=75%]
|===
| 第一行,第一列
| 第一行,第二列
|===
[grid=rows]
可以使表格为只显示行与行之间的边框,可选值为 rows
,cols
或 none
[grid=rows]
|===
| 第一列 | 第二列 | 第三列
| 第二行,第一列
| 第二行,第二列
| 第二行,第三列
| 第三行,第一列
| 第三行,第二列
| 第三行,第三列
|===
参考 官网
可以使用 ---
, - - -
, ***
, * * *
完成水平线
---
- - -
***
* * *
使用 <<<
进行分页
默认会将正文中的网络地址,转为超链接.
如果不需要,则需要在网路链接前加 \
此外,可以将链接指向文件,或者其他相对位置
不显示下划线的超链接
\https://asciidoctor.org/docs/user-manual
只显示链接提示
https://asciidoctor.org/docs/user-manual[官网]
对于一些需要特殊命令执行的链接,如查看网页源代码,可以使用宏链接指向
link:view-source:asciidoctor.org[查看Asciidoctor官网源代码]
在当前AsciiDoc文档中指向其他标题或者另外一个AsciiDoc.称之为交叉引用.
使用标题时,系统会自动根据标题其创建锚点,但是对于中文不友好,更多情况下我们自定义锚点,并在其他地方引用.
使用 [[ID]]
或者 [#ID]
自定义锚点,锚点不限于标题,也可以在段落,表格上增添,或者直接在内容前指定.
[#header_anchor]
== 示例标题
[[text_anchor]]
这是一段示例描述自然段...
[[inner_text_anchor]]这是一个内联的锚点...
使用 <<ID,描述>>
跳转到已经定义的锚点上.如果是通过标题自动生成的锚点,使用 <<标题>>
直接进行跳转.
跳转锚点 <<text_anchor, 这是...>>
跳转锚点 xref:text_anchor[这是].
参考 官网
将一个文件导入到当前文件.
语法 include::path[<attrlist>]
,其中 path
为文档的绝对路径或者相对路径. []
中的 attrlist
为可选参数.
包含一个子文件,文件名为content
include::content.adoc[]
可以通过声明属性表示文件路径,配合包含文档或者代码文件
:includedir: _includes
:sourcedir: ../src/main/java
include::{includedir}/fragment1.adoc[]
[source,java]
----
include::{sourcedir}/org/asciidoctor/Asciidoctor.java[]
----
使用 image::
引入一个块图片,占据整行.如果要使用内联图片,则使用 image:
命令.
后跟网络或者本地位置. []
中指定参数.参数顺序依次为标题,宽,高.
一个具有提示标题,宽,高的超链接图片
[link=https://www.flickr.com/photos/javh/5448336655]
image::sunset.jpg[Sunset,300,200]
使用 alt
表示图片描述, width
表示图片宽度, height
表示图片高度
image::sunset.jpg[alt=Flower,width=640,height=480]
使用 image::
和 image:
分别表示内联图片和外联图片.
image:https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg[Linux,25,35] everywhere these days.
image::https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg[Tux,250,350]
文件路径由属性 imagesdir
控制,默认为空,并自动添加到每个图像目标的开头,无需明确设置.
使图片右浮动,并居中
image::tiger.png[Tiger,200,200,float="right",align="center"]
更多属性参考 官网
语法
video::video_file.mp4[]
更多属性参考 官网
语法
audio::ocean_waves.mp3[options="autoplay,loop"]
更多属性参考 官网
NOTE
小贴士,用来提示友好的提示TIP
新的主意,表示一个提问或者新的方向IMPORTANT
错误,红色感叹号,表示十分重要CAUTION
注意,表示一个可能会引起错误的地方WARNING
警告,表示一个不被允许的操作表示不同的提示等级.注意,必须大写
关键字必须大写,且后空一格
NOTE: 这是一个 NOTE
提示
TIP: 这是一个 TIP
提示
IMPORTANT: 这是一个 IMPORTANT
提示
CAUTION: 这是一个 CAUTION
提示
WARNING: 这是一个 WARNING
提示
通过 []
在 ====
示例块上标注提示属性,进而将整体作为一个提示
[TIP]
====
这是一大段提示内容
各种提示的格式
- 提示1
- 提示2
====
通过使用 ****
包裹内容,使其独立于文档内容之外,有其独立的标题,内容
.关于作者
****
一条咸菜鱼,又闲又菜又多余.
****
通过 ====
包裹内容,作为一个示例内容.并将内容原文本输出
.示例文档标题
====
以下内容会被格式输出,作为一个示例
- 示例格式
- 示例格式
The document header is useful, but not required.
====
通过使用 ` ` ` 进行包裹,将文档只显示源格式,不会对文档进行格式的替换
常用作代码块的编写,用 ----
包裹.其中 %nowrap
表示当代码过长时,不进行自动换行,而是显示水平线.
[source%nowrap, java]
----
System.out.println('Hello Word!');
----
通过 [quote]
属性进行引用
[quote, 作者(可选), 副标题或者出处(可选)]
这是引用的正文
使用 ____
进行包裹,然后标注属性 [quote]
输出格式
[quote, 作者(可选)]
____
自然段1.......
自然段2......
____
改引用方式可以在保持换行和缩进,便于读取
通过 [verse]
进行诗歌的引用
[verse, 作者(可选), 副标题或者出处(可选)]
首联,
颔联.
颈联,
尾联.
当诗歌之间出现空行时,采用这种方式.
[verse, 作者(可选), 副标题或者出处(可选)]
____
(仄)仄仄平平,(仄)仄平平仄。
(仄)仄平平仄仄平,(仄)仄平平仄。
(仄)仄仄平平,(仄)仄平平仄。
(仄)仄平平仄仄平,(仄)仄平平仄。
____
使用 --
包裹并配合 []
属性可以作为以上各种块
参考 官网
参考 官网
使用命令 asciidoctor Example.adoc
将文件输出为HTML
使用第三方支持插件完成转换
参考 官网
参考 官网