字符替换替代步骤处理文本字符,例如标记、箭头和破折号,并将它们替换为其Unicode码点的十进制格式,即它们的数字字符引用。替换步骤依赖于特殊字符步骤完成的替代。

Unresolved directive in replacements.adoc - include::partial$subs-symbol-repl.adoc[]

这个替换步骤还能识别https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references[HTML和XML字符引用],以及https://en.wikipedia.org/wiki/List_of_Unicode_characters[十进制和十六进制Unicode代码点],并将它们替换为相应的十进制形式Unicode代码点。

例如,要生成 § 符号,你可以写 §、§ 或 §。当文档被处理时,replacements 将用 § 替换节标识符的引用,无论它是命名字符引用还是数字字符引用。反过来,§ 将显示为 §。

AsciiDoc处理器允许您使用HTML中定义的任何命名字符引用(又称命名实体),例如,€会解析为€。然而,当生成非HTML输出(如PDF)时,使用命名字符引用可能会引起问题,因为可能没有定义解析这些名称所需的查找表。建议是避免使用命名字符引用,除了XML中定义的那些众所周知的引用(即lt, gt, amp, quot, apos)。相反,请使用数字字符引用(例如,€)。

字符引用的解剖

字符引用是一组标准字符序列,由AsciiDoc处理器替换为单个字符。字符引用有两种类型:命名字符引用和数字字符引用。

一个命名字符引用(通常称为_字符实体引用_)是指代一个字符(即,字形)的简短名字。要进行引用,名字必须以一个和号(&)作为前缀,并以分号(;)结尾。

例如:

  • †` 显示为 †

  • "`€` 显示为 €"

  • ◊` 显示为 ◊

数字字符引用是指十进制或十六进制的通用字符集/Unicode代码点,它们用来指代一个字符。

  • 小数形式的代码点引用以一个和号(&)开头,紧接着是一个井号(#),并以分号(;)结尾。

  • 十六进制代码点引用是以一个和号(&)开头,接着是一个井号(#),然后是一个小写的`x`,并以分号(;)结束。

例如:

  • †` 或 † 显示为 †

  • €`或`€`显示为€

  • ◊` 或 ◊ 显示为 ◊

开发人员可能更熟悉使用*Unicode转义序列*来进行文本替换。例如,要使用Unicode转义序列生成一个`@`符号,您需要在十六进制的Unicode代码点前加上反斜杠(\)和一个大写或小写的`u`,即`u0040`。然而,AsciiDoc语法目前还不支持Unicode转义序列。

Tip
AsciiDoc还提供了内置属性用于表示一些常见符号。这些属性及其相应的输出在attributes:character-replacement-ref.html中列出。

默认替换替补

'''受到替换替代影响的块级元素和内联元素 列出了替换子步骤自动应用于的特定块元素和行内元素。'''

Table 1. 受到替换替代影响的块级元素和内联元素

块和元素

默认应用的替换步骤

属性条目值

No

注释

No

示例

Yes

标题

No

字面、列表和源代码

No

宏

Yes
(除了直通宏)

开放式

Yes

段落

Yes

直通块

No

引用和诗歌

Yes

侧边栏

Yes

表格

不同

标题

替换值

替换置换步骤可以在块级元素和内联元素上进行修改。对于块级元素,该步骤的名称`replacements`可以分配给subs属性。对于内联元素,内置值`r`或`replacements`可以应用于内联文本以添加替换置换步骤。

Warning
替换步骤依赖于通过特殊字符步骤完成的替代。在对块元素和内联元素应用`replacements`值时,记住这一点很重要。