TeX 基元参考说原始人\the
可以
- 排版参数值(整数、dimen、glue 或 muglue)或内部数量(\font 除外)
- 为 token 参数生成 token 列表的副本
\the\le
排版12820
和\the\ge
排版12821
。
这是否意味着\le
是一个参数值或内部量,或者这种行为是否与的数学模式定义\le
有关\mathchar"3214
?
答案1
你应该看一下⟨内部数量⟩的定义,你会发现它是练习 24.7(第 336 页)的答案
⟨内部数量⟩ → ⟨内部整数⟩ | ⟨内部尺寸⟩
| ⟨内部胶水⟩ | ⟨内部 muglue⟩ | ⟨内部非数字⟩
现在我们来找到⟨内部整数⟩的定义,它在第 271 页:
⟨内部整数⟩ → ⟨整数参数⟩ | ⟨特殊整数⟩ | \lastpenalty
| ⟨countdef 标记⟩ | \count
⟨8 位数⟩ | ⟨codename⟩⟨8 位数⟩
| ⟨chardef 标记⟩ | ⟨mathchardef 标记⟩ | \parshape
| \inputlineno
| \hyphenchar
⟨font⟩ | \skewchar
⟨font⟩ |\badness
最后,\le
是一个⟨mathchardef token⟩:plain.tex
我们发现
\mathchardef\leq="3214 \let\le=\leq
并在中找到等效定义fontmath.ltx
,即
\DeclareMathSymbol{\leq}{\mathrel}{symbols}{"14}
在 TeX 开发的某个阶段,Knuth 意识到\chardef
和\mathchardef
标记可以用作整数常量,这样就不会浪费宝贵的计数器寄存器,因此添加了在语法需要整数时使用此类标记的能力。
例如,常数 10000 存储在 中plain.tex
,\@M
其定义为
\mathchardef\@M=10000
每次\penalty\@M
在定义中都会节省四个或五个标记。