您可以通过用指定的标记符开始行来在AsciiDoc中创建无序列表。无序列表是一种列表,其项目前面带有符号,例如圆点(也称为项目符号)。
AsciiDoc 基于一种深入人心的传统,这种传统是使用星号或者连字符来标识列表项。相邻的列表项会合并成一个列表。无序列表可以通过改变标记字符或长度(仅限星号)来进行嵌套。列表项中可以包含附加的块。它们也可以与其他类型的列表交错。
基本无序列表
在下面的例子中,每个列表项都用星号(*
)标记,这是AsciiDoc语法指定的无序列表项。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=base]
列表项的第一行文本必须至少与标记(*
)之间隔一个空格。在列表前后必须有空行。此外,在列表项之间允许有空行,但不是必需的。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=base]
您可以通过在标题前加上句点(.
)来为列表添加标题。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=base-t]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=base-t]
你的直觉是使用连字符(-
)而不是星号来标记列表项吗?猜猜看?这也行!
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=base-alt]
你应该只在有单一级别的列表时使用连字符,因为连字符标记(-
)并不适用于嵌套列表。现在我们提到了嵌套列表,让我们进入下一节,并学习如何创建多级别的列表。
嵌套无序列表
要嵌套一个项目,只需在标记符号上增加另一个星号(*
)。对于每个后续的层级,继续这样做。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=nest]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=nest]
如果您愿意,您可以从左边距将标记缩进任意数量的空格。缩进并不重要,它可能有助于视觉上识别嵌套层级。
你可以把无序列表嵌套到任何深度。但是请记住,有些界面在列表达到一定深度后会开始将其展平。例如,GitHub在列表嵌套达到10级后会开始展平。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=max]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=max]
确定列表深度
虽然看起来星号的数量代表嵌套层级,但这并不是深度确定的方式。每遇到一个新的标记就会创建一个新层级。例如,你可以使用连字符标记来创建第二层级,而不是两个星号。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=nest-alt]
然而,遵循标记长度(即星号的数量)等于嵌套层级这一约定更为直观。连字符应仅用作第一层的标记。
标记长度 = 嵌套层级
毕竟,我们的目标是明了易懂的纯文本标记,即使是_原样_阅读也是如此。
标记物
当呈现时,无序列表项由领先的标记(项目符号)指示(不要与用来定义列表的标记混淆)。这个标记可以使用列表样式来控制。如果没有指定标记,渲染器将选择一个默认的标记。
默认标记
默认情况下,AsciiDoc 假设在渲染时,无序列表的前三个级别将分别使用 disc、circle 和 square 标记进行样式设计。请考虑以下列表:
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=markers]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=markers]
观察到第一层级的标记是一个圆盘(实心圆),第二层级是一个圆圈(轮廓),第三层级是一个正方形(实心)。AsciiDoc处理器在模型或转换后的输出中并不显式指定这些标记。相反,这些默认设置是由渲染器(例如,CSS)添加的,遵循HTML建立的惯例。
嵌套超过第三层后,标记的选择并没有指定。通常情况下,渲染器会继续使用正方形标记,正如之前的例子所展示的那样。
自定义标记
AsciiDoc为列表提供了多种标记样式。可以使用列表的块样式来指定列表标记。
无序列表的标记可以使用以下任何一种块样式来设置。
-
正方形;广场;平方
-
圆圈
-
光盘
-
无或者无项目符号(缩进,但没有项目符号)
-
未添加样式(无缩进或项目符号)(DocBook输出不支持)
Note
|
这些样式受到默认的Asciidoctor样式表的支持。 |
当存在时,样式名称按如下方式分配给无序列表元素:
- 对于HTML
-
样式名称被分配给`<ul>`元素上的`class`属性。
- 针对DocBook
-
样式名称被赋予了`<itemizedlist>`元素上的`mark`属性。
这是一个带有方形标记的无序列表:
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=square]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=square]
一旦设置了列表的样式,该样式就会用于所有嵌套列表,直到再次被设置。假设不再可能推断出交替变化,所以它就停止了。继承的样式没有在模型中指定出来,而是由渲染器(例如,CSS)应用的。例如,如果我们在顶级列表上设置了列表样式为圆圈,那么这种样式将会被用于所有层级。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=marker-lock]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=marker-lock]
继承的样式可以在任何层次上被设置或重置。
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=marker-override]
Unresolved directive in unordered.adoc - include::example$unordered.adoc[tag=marker-override]