未转义的脱字符或帽子字符“ ^ ”的作用是什么?

未转义的脱字符或帽子字符“ ^ ”的作用是什么?

当不在数学模式下时,(La)TeX 中未转义的字符有什么用处吗^?如果没有用,我不明白为什么需要对其进行转义。

答案1

是的,有一个非常基本的方法:当读取输入行时,如果 TeX 发现两个连续的^字符,它会以一种非常特殊的方式解释输入:

  1. 如果^^组合后跟两个十六进制小写数字0123456789abcdef),然后TeX将这四个字节转换成十六进制数对应的字节;

  2. 否则,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以保持一致性,但从长度可以看出,它被认为仅用于设置编码文件,而不是任何人在文档中真正想要的东西。

相关内容