
給餌
\documentclass{article}
\showoutput
\begin{document}\noindent
A B\\
A\ B\\
A\hskip\fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font B
\end{document}
は、DVI ファイルで 3 回同じ「AB」をlatex
生成しますが、目に見える違いはありません。ただし、コンソール出力の拡大と縮小の値は異なります。
....\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
1行目とplus 1.66666 minus 1.11111
2行目、3行目)、それでも存在します。なぜこのようなことが起こるのでしょうか?TeXbook について、私は、コマンドの後に\
通常のスペースをタイプセットする方法(つまり、と との比較)は意味的に何の違いもないと思っていましたが、どうやら私は間違っていたようです。\foo\
\foo
答え1
によって追加されるスペースは、フォント寸法によって指定されるスペースを によって調整したものです
\spacefactor
。具体的には、plus
は\spacefactor/1000
通常\spacefactor
1000 ですが大文字の後では 999 であるため、 の要素は によって乗算されます。したがって、値は の\
影響を受けず\spacefactor
、句読点 (または大文字) の後でも常に標準的な単語スペースが追加されるため、 999/1000 の係数で異なります。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}
これは4つの接着設定を示しています
....\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
最後の行の計算が接着剤と一致していることを示します。