答案1
您收到的错误消息表明^^A
结果为数学标记。plain.TeX
您可以在其中找到:
\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts
(注:此部分内容plain.tex
也可在《The TeXbook》附录B第343页找到。)
从这一点开始^^A
是一个数学下标。这对应于终端输出
\showthe\catcode`\^^A
\bye
8. l.1 \showthe\catcode`\^^A
注:后面
\mathcode`\^^A="3223 % \downarrow
plain.tex
对于 的 catcode来说,是无关紧要的^^A
。而且,由于 的 catcode^^A
既不是 11(字母),也不是 12(其他),因此 mathcode 也与输出无关。但它可能会变得相关,例如,在更改 的 catcode 之后^^A
:
$x^^A{y}$
\catcode`\^^A=12 $x^^A{y}$
\bye
有关\mathcode
其工作原理和差异的更多信息,请\catcode
参阅“TeXbook”和“mathcode 和 catcode 之间有什么区别以及如何使用 mathcode?”
答案2
你可以参考到不可见的 ASCII 字符,但是 TeXbook 并没有说你可以或应该只是为了好玩而使用它们。
例如,^^@
(空字节)的类别代码为 9,因此
Hell^^@ w^^@rld
会导致“地狱世界”。事实上,你得到了三输出中的字符而不是四个。
相反,^^A
(1 个字节)的类别代码为 8。这是在纯 TeX 中设置的类别代码表:
为什么选择^^@
?因为有些操作系统使用空字节来填充其固定长度记录。看到 被分配类别代码 5 应该不足为奇^^M
。剩下两种情况,即^^A
和^^K
。
Knuth 以前使用的键盘在按下和时可以显示↓
和,他更喜欢这些视觉提示,而不是和。这样做的结果是↑
CtrlACtrlK^
_
$x^^A0$
效果与 相同$x_0$
。当然,这$^^A$
会引发错误,因为它就像$_$
。
您可以在第 369 页的表格中找到 Knuth 键盘上的符号。该表还解释了为什么其中一些字节被分配了数学码。
例如,在 Knuth 的屏幕上CtrlD会产生∧
,我们确实发现
\mathcode`\^^D="225E % \land
在plain.tex
。
出于完整性考虑,您可以使用^^00
而不是^^@
。此约定也在第 8 章中描述,并已添加到 TeX 版本 3 中。
答案3
因为在 Don Knuth 使用的带有旧键盘的旧计算机系统上,字符集将向下箭头作为字符 1 (^^A)。这似乎是下划线作为数学下标字符的有用同义词,因此它的 catcode 为 8。同样,对于位置 11 处的向上箭头字符,给出 catcode 7,如 ^。字符集显示在附录 C 中。