章节和离散标题支持自动生成ID。除非你为这些块分配了自定义ID,或者你取消了`sectids`文档属性,否则AsciiDoc处理器将会使用标题自动生成并分配该块的ID。此页面解释了ID是如何派生的,以及如何控制这种行为。
如何计算节的ID
AsciiDoc 处理器根据以下事件顺序和规则从标题构建 ID:
-
内联格式化将被应用(按标题替换顺序)。
-
所有字符都被转换为小写。
-
idprefix attribute的值(默认为`_`)被添加到前面。
-
字符引用、HTML/XML标签(不包括其内容)以及无效的ID字符将被移除。
-
请参考XML规范中的https://www.w3.org/TR/REC-xml/#NT-Name[NT-Name^]部分,以获取有效ID字符的列表。
-
-
空格、连字符和句点会被替换为idseparator属性的值(默认为`_`)。
-
连续的分隔符会被压缩。
-
如果必要,将追加一个序列号,直到该ID在文档中是唯一的。
鉴于以下章节标题:
== 威利与儿子公司
处理器将生成以下ID:
威利孙公司
您可以使用 sectids
开启或关闭 ID 自动生成,并通过 自定义 ID 前缀和单词分隔符。
Caution
|
如果标题中包含向前看的交叉引用(即,对文档顺序后面的元素的引用),您必须要么为该块分配一个自定义ID,要么在标题周围使用 disable ID generation 禁用ID生成。否则,AsciiDoc处理器可能会警告说引用无效。这是因为,为了生成ID,处理器必须转换标题。这种转换在处理器访问目标元素之前就发生了。因此,处理器无法查找引用,所以必须认为它是无效的。 |
禁用自动节ID生成
要禁用自动生成的部分和独立标题ID,请取消设置`sectids`属性。
:!sectids:
即使禁用了自动节ID,仍然使用
。自定义ID
你可以在文档中允许使用属性条目的任何地方取消设置此属性。通过这样做,你可以仅对某些部分和独立标题禁用ID生成。
== 开启ID生成 :!sectids: == 关闭ID生成 :sectids: == ID再次生成
如果您禁用了自动生成的章节ID,并且您没有为章节或独立标题指定自定义ID,那么您将无法创建到该元素的交叉引用。