基础有序列表

有时候,我们需要给列表中的项目编号。本能会告诉你在每个项目前加上一个数字,就像下面这个列表一样:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base-num]

上述方法是可行的,但由于编号是显而易见的,如果你省略了编号,AsciiDoc处理器会为你自动插入这些编号。

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base]

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base]

如果你明确编号有序列表,你必须手动保持列表数字的顺序。否则,你将收到一个警告。这与其他轻量级标记语言不同。但这样做是有原因的。

使用显式编号是调整列表编号偏移的一种方式。例如,您可以输入:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base-num-start]

然而,有一种更简单的方法可以达到相同的结果而无需手动劳动。您可以在列表上使用`start`属性来定义您希望数字开始的编号。

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base-start]

起始值始终是一个正整数值,即使使用不同的编号风格,例如小写字母编号。

何时不使用start属性

当有序列表项包含块内容——比如图片、源代码块或表格——你可能会注意到下一个列表项的数字重置为1。事实上,发生的是开始了一个新的列表,在这个列表中数字由于缺少列表续行而重置。

在这些情况下,你不应该借助使用`start`属性来修正编号。这不仅需要在列表项添加时进行手工调整,它同样没有解决潜在的语义问题——这正是引起问题的原因。相反,你应该在每个你想要连接到列表项的块元素之间使用列表延续,以确保列表项是连续的。列表延续将一个项内的块粘合在一起,并保持它们具有相同的缩进级别。

要以相反的顺序显示列表项目,请添加 reversed 选项:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=reversed]

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=reversed]

你可以通过在行首加上一个点,紧接着写上文本(点后不留空格)来给列表加一个标题。

这是一个带标题的列表示例:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base-t]

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=base-t]

嵌套有序列表

你通过在每个项目前面使用一个或多个点来创建嵌套项目。

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=nest]

AsciiDoc为每个嵌套级别选择不同的编号方案。以下是前一个列表的呈现方式:

Example 1. 嵌套的有序列表

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=nest]

Tip

就像无序列表中的星号一样,有序列表中的点的数量并不代表嵌套的层级。然而,遵循点的数量等于嵌套层级的约定会更加直观。

点的数量等于嵌套的层级

再次强调,我们的目标是让纯文本标记即便是以原样阅读也具有可读性。

您可以在一个混合列表中混合和匹配三种列表类型:有序列表、无序列表描述列表。AsciiDoc语法努力推断出对我们人类来说最直观的项目之间的关系。

这是一个在有序列表内嵌套无序列表的例子:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=mix]

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=mix]

你可以展开条目并缩进嵌套列表,如果这样对你来说更易读的话:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=mix-alt]

描述列表页面演示了如何结合所有三种列表类型。

数字样式

对于有序列表,AsciiDoc支持诸如lowergreek和decimal-leading-zero等编号样式。可以应用于有序列表的编号样式完整列表如下:

块式布局 CSS列表样式类型

arabic

十进制

decimal [1]

前导零十进制

loweralpha

小写字母

upperalpha

大写字母

lowerroman

小写罗马数字

upperroman

大写罗马数字

lowergreek [1]

小写希腊字母

[1] 这些样式只被HTML转换器支持。

以下是几个示例,显示了由表头行中的块样式定义的各种编号风格:

[阿拉伯数字] [2] [十进制] [小写字母] [小写希腊字母]
  1. 三个a

[loweralpha] . 一 . 两 . 三个a

[lowergreek] . 一 . 两 . 三

如果未指定块样式,则默认数字编号为2.

Tip
自定义编号样式可以通过自定义角色实现。在样式表中定义一个新的类选择器(例如,.custom),将 list-style-type 属性设置为你选择的值。然后,将该类的名称作为角色分配给任何你想应用该编号的列表。

当在有序列表上使用角色缩写(.custom)时,编号样式不再被省略。

您可以通过设置其样式(块属性列表中的第一个位置条目)来覆盖任何级别的编号方案。您还可以使用 start 属性来设置起始编号:

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=num]

Unresolved directive in ordered.adoc - include::example$ordered.adoc[tag=num]

Important
"`start` 属性必须是一个数字,即使在使用不同的编号样式时也是如此。例如,要从字母“c”开始一个字母列表,将编号样式设置为 loweralpha 并将 start 属性设置为 3。"

逃离列表标记

如果你有一个段落文本以列表标记开始,但你不希望它成为列表项,你需要使用属性引用来逃避该标记以打破模式。

考虑到这样一种情况:行首是一个邮政信箱(P.O. box)的引用:

邮政信箱

为了防止这段文字被解析为一个有序列表,你需要将第一个空格替换为 {empty}

邮政信箱

现在这个段落将保持为一个段落。

在未来,将有可能使用反斜杠来转义有序列表标记,但目前还做不到。