当不在数学模式下时,(La)TeX 中未转义的字符有什么用处吗^
?如果没有用,我不明白为什么需要对其进行转义。
答案1
是的,有一个非常基本的方法:当读取输入行时,如果 TeX 发现两个连续的^
字符,它会以一种非常特殊的方式解释输入:
如果
^^
组合后跟两个十六进制小写数字(0123456789abcdef
),然后TeX将这四个字节转换成十六进制数对应的字节;否则,TeX 将计算以下字符的字符代码,并将三个字节转换为 ASCII 码与计算结果相差 64 的字符,加上或减去 64,以使结果在 0–127 范围内。
因此^^20
完全相当于输入一个空格,而 则^^M
相当于输入通常的行末字符。
XeLaTeX 和 LuaTeX 添加了此机制。由于 Unicode 字符可以用 21 位指定,因此最多^
允许六个字符后跟相同数量的十六进制小写数字。
例如,
^^^^0021
在标准 TeX 中表示五个标记^^^
(类别代码 30,参见上面的规则,第二项),后跟^
0
0
2
1
;在 LuaTeX 或 XeTeX 中,它仅表示一个具有字符代码的字符"21
(十六进制,十进制为 33)。
技术说明。该约定实际上是关于两个(对于 Unicode 引擎,两个或更多)相同的字符具有类别代码 7。通常只^
给出类别代码 7。
答案2
除了egreg的回答之外,另一个原因是同样的原因\sin
导致错误,或者\hat
等等。
到目前为止,遇到^
文本模式的最常见原因是作者已经
等等等等,1 + x^2 = 2,等等......
但忘记标记数学模式区域。
在文本模式下将数学模式命令设为错误是贯穿 TeX 语言的明确设计决策。在^
普通文本中几乎从来不需要 A,纯 TeX 和 latex 2.09 甚至懒得定义访问它的命令,latex2e 添加了它\textasciicircumflex
以保持一致性,但从长度可以看出,它被认为仅用于设置编码文件,而不是任何人在文档中真正想要的东西。