与其他标记语言不同,AsciiDoc中的等宽文本并非与字面文本同义。相反,它就像普通文本一样被解释。换句话说,默认情况下,它会受到所有文本替换的影响。
这一点起初可能令人惊讶。但是这种差异是有充分理由的。在AsciiDoc中,你可以在等宽字体文本跨度中利用属性引用和内联宏。当然,缺点是你必须小心地转义这些特殊字符,如果你打算输出它们而不进行特殊格式设置(即,作为文字文本)。
为了防止处理器解释等宽文本中的特殊字符,我们可以使用反斜线转义字符,就像处理普通文本一样。然而,以这种方式转义每一次出现的特殊字符可能非常繁琐。这就是为什么AsciiDoc提供了一种特殊类型的等宽格式化,称为字面等宽。
在AsciiDoc中创建一个真正的字面代码块,您必须将等宽文本放在一个透传中。你不是使用一对反引号,而是使用反引号和加号字符的组合,其中加号字符位于反引号字符的内侧(例如,`+text+`
)。加号字符是`pass:c[]`封闭的简写。
字面等宽语法包含字面意义上的、等宽的文本。
字面等宽语法
Unresolved directive in literal-monospace.adoc - include::example$text.adoc[tag=literal-mono]
这种简写语法可以适应大多数字面等宽字体的情况。主要的例外是当文本本身包含加号字符时。为了避免混淆处理器,您需要切换到使用更正式的直通宏来处理这些情况。
使用+字符的字面等宽语法 显示包含加号字符的字面、等宽文本。
使用+字符的字面等宽语法
Unresolved directive in literal-monospace.adoc - include::example$text.adoc[tag=literal-mono-with-plus]
Passthroughs 是 AsciiDoc 中的一个通用工具。您可以通过 pass:pass-macro.html 学习关于各种 passthrough 选项的信息。