空间和控制空间在拉伸和收缩方面是否不同?

空间和控制空间在拉伸和收缩方面是否不同?

喂食

\documentclass{article}
\showoutput
\begin{document}\noindent
A B\\
A\ B\\
A\hskip\fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font B
\end{document}

在 DVI 文件中产生latex三倍相同的“AB”,没有任何明显差异。但是,控制台输出中的拉伸和收缩值确实不同:

....\OT1/cmr/m/n/10 A
....\glue 3.33333 plus 1.66498 minus 1.11221
....\OT1/cmr/m/n/10 B
....\penalty 10000
....\glue 0.0 plus 1.0fil
....\penalty -10000
....\glue(\rightskip) 0.0
...\penalty 150
...\glue(\baselineskip) 5.16669
...\hbox(6.83331+0.0)x345.0, glue set 327.0833fil
....\OT1/cmr/m/n/10 A
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 B
....\penalty 10000
....\glue 0.0 plus 1.0fil
....\penalty -10000
....\glue(\rightskip) 0.0
...\penalty 150
...\glue(\baselineskip) 5.16669
...\hbox(6.83331+0.0)x345.0, glue set 327.0833fil
....\OT1/cmr/m/n/10 A
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 B

差别很小(plus 1.66498 minus 1.11221第一行与第二行相比)。plus 1.66666 minus 1.11111第二行和第三行),但仍然存在。为什么会发生这种情况?以下TeXbook,我以为这就是我们在命令后\排版通常空格的方式(比如,与),而语义上没有任何区别,但显然,我错了。\foo\\foo

答案1

添加的空间是字体尺寸指定的空间,调整了\spacefactor,具体来说,plus组件乘以,\spacefactor/1000通常\spacefactor为 1000,但在大写字母后为 999,因此值相差 999/1000 倍,不受影响,\并且\spacefactor始终在标点符号(或大写字母)后添加标准单词空间。minus组件类似,但乘以1000/\spacefactor

\documentclass{article}
\showoutput
\begin{document}\noindent
A B\\
A\ B\\
A\hskip\fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font B\\
A\dimen0=\fontdimen3\font
\multiply\dimen0 \spacefactor % = 999 not 1000
\divide\dimen0 1000
\dimen2=\fontdimen4\font
\multiply\dimen2 1000
\divide\dimen2 \spacefactor
A\hskip\fontdimen2\font plus\dimen0 minus\dimen2 B

a\showthe\spacefactor  A\showthe\spacefactor 
\end{document}

这显示了四种胶水设置

....\glue 3.33333 plus 1.66498 minus 1.11221
....\glue 3.33333 plus 1.66666 minus 1.11111
....\glue 3.33333 plus 1.66666 minus 1.11111
....\glue 3.33333 plus 1.66498 minus 1.11221

显示最后一行计算与胶水相匹配。

相关内容