字符替换替代步骤处理文本字符,例如标记、箭头和破折号,并将它们替换为其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`值时,记住这一点很重要。