如何永远不会意外地写出实际上是非故意的特殊序列,例如“或?”

如何永远不会意外地写出实际上是非故意的特殊序列,例如“或?”

在 LaTeX 文档中,我读到只有:# $ % & ~ # _ ^ \ { } 是特殊字符。由此我推断,输入字符集中的所有其他字符都按字面意思理解,即在输出中以它们本身的形式出现。但显然,许多(如果不是大多数)其他 ASCII 标点符号也可以用作特殊字符。例如,输入字符序列 --(两个“连字符”U+002D)在输出中变成一个“EN DASH”U+2013,!`(“问号”,“重音符”)变成一个“倒感叹号”U+00A1。

至少目前我不知道这种不按字面意思理解的特殊序列的详尽列表。我认为很难不意外地写出一个字符序列(除了:# $ % & ~ # _ ^ \ { }),我本想按字面意思理解,但实际上却被解释为特殊序列。更糟糕的是,我可能会通过加载包意外弄乱现有文档。例如,为了论证的目的,假设我的文档包含序列“o”,而我真正想的是按字面意思理解。当我现在加载德语的 babel 包时,该序列在我不知情的情况下变成了字符“带分音符的拉丁大写字母 O”U+00D6,因为我不知道该包也在我真正感兴趣的东西中引入了该特殊序列。

我不想对每个标点符号序列使用 \verb|...| & Co. 我不能完全确定它是否按字面意思解释,因为我想我当时不得不使用 verb|...| 太多次了。

我如何才能大致确定我的 LaTeX 文档中的哪些字符会按预期出现在输出中?或者至少,我在哪里可以找到详尽无遗不按字面意思理解的特殊字符序列列表?

答案1

这取决于所使用的字体编码。例如,在经典的 OT1 字体编码中<,和>不会以自身形式出现,而是以反转!和的形式出现?--变成一个en-dash连字,在字体中实现,就像ff变成 ff 连字一样。因此,您的字符打印为自身的列表可能会包含也可能不包含,这f取决于您如何定义事物。如果您愿意,可以关闭所有 babel 简写,但其他软件包可能会使字符处于活动状态,例如,设置 是很常见的,|所以这| zzzzz |是 的简写\verb

相关内容