答案1
TeXbook 第 289 页解释了如何\char〈8-bit number〉
形成 〈character〉,并且 〈character〉 是 〈math symbol〉 的一个特例。第 291 页解释了在数学模式中找到的 〈math symbol〉 的作用,但让我们回到第 289 页关于 〈character〉 的内容:
当 TeX 处于数学模式或显示数学模式时,〈character〉 命令具有额外的意义:它指定一个介于 0 和 32767 = 2 15 − 1 之间的数字。这是通过用字符
\mathcode
值替换字符号来实现的。但是,如果该\mathcode
值为32768
="8000
,则 〈character〉 将被具有原始字符代码(0 到 255)的活动字符标记替换;TeX 会忘记原始的 〈character〉 并根据第 20 章的规则扩展这个活动字符。
\char〈8-bit number〉
因此,在数学模式下查找时,重要的是\mathcode
指定字符的 。 在您的例子中,字符是数字 5,即`\^^E
。 plain.tex 的第 59 行显示:
\mathcode`\^^E="023A % \lnot
因此\char"5
在数学模式下是一个带有 的 〈数学符号〉\mathcode
"023A
。它指定类别 0(普通,参见 TeXbook 第 154 页)、系列 2 和"3A
相应字体中的位置。
所讨论的字体是这样的\textfont2
,因为你\rm
在这里什么都不做,AFAICT:
\rm:
macro:->\fam \z@ \tenrm
\fam
对第 7 类(变量)的符号有影响,但此处的符号属于第 0 类;此外,据\tenrm
我所知,它会影响文本字体,并且对数学模式没有影响(当然,除非您暂时使用美元符号内的命令离开数学模式\hbox
)。
您可能会问这是什么字体:
\tracingonline=1
\showthe\textfont2
输出:
> \tensy .
l.3 \showthe\textfont2
并确认了可以看到的内容\tracingoutput=1
:
Completed box being shipped out [1]
\vbox(667.20255+0.0)x469.75499
(...)
.\vbox(643.20255+0.0)x469.75499, glue set 633.20255fill
..\glue(\topskip) 5.69446
..\hbox(4.30554+0.0)x469.75499, glue set 443.0883fil
...\hbox(0.0+0.0)x20.0
...\mathon
...\tensy :
...\mathoff
(...)
:
确实有 ASCII 码"3A
。因此,输出中得到的字符位于"3A
字体的位置\tensy
。TeXbook 第 350 页 (plain.tex) 声明:
\font\tensy=cmsy10
您可以通过(此处第 33 页)验证字体的texdoc encguide
字符确实是我们在屏幕截图上看到的。"3A
cmsy10
\lnot
注意:这与问题没有直接关系,但由于问题的关键是,\mathcode
我从 TeXbook 中引用的段落解释了在\mathcode
等于的特殊情况下会发生什么"8000
,我将抓住机会,向我们亲爱的读者指出这一点答案特殊"8000
情况得到了充分利用(参见\__hs_cls_activate_comma:
其回答中的功能)。