我对这段代码的输出有点困惑
\mathsurround=0pt
1)%
\setbox0=\hbox{$\mkern18mu$}
\number\wd0
2)%
\setbox0=\hbox{$\kern1em$}
\number\wd0
3)
\number\fontdimen6\textfont0
4)
\number\fontdimen6\textfont2
\bye
返回
1) 655344
2) 655361
3) 655361
4) 655361
显然与声明相矛盾18mu=1em
。现在,如果我没记错的话\kern
记错的话,数学公式中可能指的是最后一个文本字体,因此可以解释 1) 和 2) 之间的差异。但是,如果是这样的话,那么 2) 和 3) 应该输出相同的数字(除非我严重误解了某些内容,这很有可能)。
无可否认,我无法看出 90nm 的差异,但我仍然想知道我错在哪里。
答案1
尝试这个:
\newdimen\tmpdim
\tmpdim=655361sp
\number\tmpdim
\divide\tmpdim by18 \multiply\tmpdim by18
\number\tmpdim
\bye
结果是 655361 和 655344。您可以看到,这只是舍入问题。
答案2
单位mu
定义为 18mu 与当前字体中数学系列 2(数学符号)的 1em 相同。因此,它使用 em 表示或\textfont2
,具体取决于 mkern 或 mskip 最终采用的数学样式。\scriptfont2
\scriptscriptfont2
在 Computer Modern 的标准设置中,cmr10 和 cmsy10 中的 em 是相同的,但这并不是强制的,对于其他字体,em 大小可以不同。
如果使用,就会出现“很大”的差异\scriptscriptstyle
,因为的 em\fiverm
为 6.80565pt,而对于\fivesy
(或\scriptscriptfont2
),它是 7.3612pt。
您\setbox0=\hbox{$\scriptstyle\mkern18mu$}\showthe\wd0
得到了 8.19443pt,但\showthe\fontdimen6\scriptfont2
由于较小的舍入误差,结果为 8.19447pt。
其他风格也一样。