计数器用于存储和显示临时的数字或拉丁字符序列。
Warning
|
计数器在AsciiDoc中定义不够明确,如果可能的话应该避免使用。如果你确实需要使用计数器,应该只在最基本的使用场景中使用它们,例如在列表、表格列或正文中创建序列。你*不应该*使用计数器来构建ID(即,引用)或引用文本。在引用的边界范围内使用计数器很可能导致意料之外的行为。 |
计数器作为一个特殊的文档属性被实现。你通过属性引用来声明和显示计数器,其中属性名以 counter:
为前缀(例如,{counter:name}
)。由于计数器是属性,计数器名称遵循与属性名相同的规则。最重要的规则需要注意的是,计数器名称中的字母 必须是小写。
每次解析 counter:
属性引用时,计数器的值都会增加并显示。术语[.term]*增加*意味着将属性值前进到序列中的下一个值。如果计数器的值是整数,就加1。如果计数器的值是字符,就移到拉丁字母表中的下一个字母(例如,a → b)。计数器的默认起始值是1。
要创建一个以1为起始的序列,请使用如下所示的简单形式 {counter:name}
。
沙拉需要 {counter:seq1}) 苹果,{counter:seq1}) 橙子和 {counter:seq1}) 梨。
这是结果输出:
沙拉需要 1) 苹果,2) 橙子和 3) 梨。
如果你想在节标题中使用计数器的值,你应该先用属性引用来定义它。
:seq1: {counter:seq1} == 章节 {seq1} 本节中的序列是{seq1}。 :seq1: {counter:seq1} == 章节 {seq1} 本节中的序列是{seq1}。
这是结果输出:
章节 1
本节中的序列是1。
章节 2
本节中的序列是2。
要增加计数器而不显示它(即跳过序列中的一个项目),请使用`counter2`前缀。
{counter2:seq1}
Warning
|
一个单独一行的`counter2`属性引用会产生一个空段落。您需要将它与最近的内容相邻,以避免这种副作用。 |
要显示计数器当前的值而不增加它,请像引用任何其他属性一样引用计数器名称:
这是第{pnum}段。
要创建一个字符序列,或者以非1的值开始一个数字序列,通过在计数器首次使用时附加一个开始值来指定一个开始值:
甜点需要 {counter:seq1:A}) 芒果,{counter:seq1}) 葡萄和 {counter:seq1}) 樱桃。
Caution
|
字符序列可以从a,b,c,…x,y,z,{,|…或者A,B,C,…,X,Y,Z,[,…根据开始值而变化。因此,他们对超过26个项目来说并不是真正有用的。 |
某个计数器的起始值只有在文档中该计数器处于“未设置”状态时才会被识别。否则,起始值将被忽略。
要重置计数器属性,请使用属性项取消设置相应属性。属性项必须与一个块相邻,否则它将被忽略。
沙拉需要 {counter:seq1:1} 个苹果,{counter:seq1} 个橙子和 {counter:seq1} 个梨。
:!seq1:
甜点需要 {counter:seq1:A}) 芒果,{counter:seq1}) 葡萄和 {counter:seq1}) 樱桃。
这意味着:
沙拉需要 1 个苹果,2 个橙子和 3 个梨。
甜点需要 A) 芒果,B) 葡萄和 C) 樱桃。
这里有一个完整的示例,展示了如何在表格中使用计数器来统计零件编号。
Unresolved directive in counters.adoc - include::example$counter.adoc[tag=base]
这是那张表格的输出结果:
Unresolved directive in counters.adoc - include::example$counter.adoc[tag=base]