描述列表(在AsciiDoc中通常缩写为dlist)是一个关联列表,由一个或多个术语(或一组术语)组成,每个术语都有一个描述。当您有一系列需要强调并用文本或其他支持内容描述的术语时,这种列表类型非常有用。

Note
你可能知道这个列表变体的过时术语是_definition list_(定义列表)。现在更倾向于使用_description list_(描述列表)这个术语,这与https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element[HTML规范^]使用的术语相匹配。

解剖学

描述列表项标志着描述列表的开始。描述列表中的每个项目包括:

  • 一个或多个术语,每个术语后面跟着一个术语分隔符(通常是双冒号`::`,除非列表是嵌套的)

  • 一个空格或换行符

  • 形式为文本、附加块或两者结合的描述。

如果一个术语有锚点,锚点必须在与术语相同的行起始处定义。

第一个术语定义了描述列表用于术语分隔的分隔符。同一级别下其余条目的术语必须使用相同的分隔符。

有效的术语分隔符集是固定的。当术语分隔符发生变化时,该术语将开始一个新的、嵌套的描述列表(与有序和无序列表的工作方式类似)。你可以用于此目的的可用术语分隔符如下:

  • ::

  • :::

  • ::::

  • ;;

定界符中字符的数量与嵌套层级之间没有直接的相关性。每当你更换定界符(从上述集合中选择)时,就引入了一个新的嵌套层级。这就是在具有左对齐语法的语言中如何暗示列表深度的方式。通常按照上面显示的顺序使用定界符,以提供列表嵌套在某个特定层级的暗示。

基础描述列表

这是一个描述列表的例子,它识别计算机的各个部分:

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

默认情况下,每个项目的内容会在渲染时显示在标签下方。这是这个列表呈现方式的预览:

Example 1. 一个基本的描述列表

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

混合列表

描述列表的内容可以是任何AsciiDoc元素。例如,我们可以重写上面的杂货清单,使每个过道都是一个标签,而不是一个父列表项目。

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

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

描述列表对空白的要求相当宽松,所以你可以分散列表项,并且如果这样能让你读起来更容易,甚至可以缩进内容:

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

嵌套描述列表

最终,你可以在单个复合列表中混合使用这三种列表类型。AsciiDoc语法努力推断出对我们人类最直观的项目之间的关系。

这里有一个列表,混合了描述性列表、有序列表和无序列表。注意列表项的分隔符是如何从 :: 变更为 ::: 来创建一个嵌套的描述性列表。

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

列表的呈现方式是这样的:

Example 2. 一个混合列表

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

你也可以在列表项中包括更复杂的内容,比如复杂内容