空間和控制空間在拉伸和收縮方面是否不同?

空間和控制空間在拉伸和收縮方面是否不同?

餵食

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

latex在 DVI 檔案中產生三次相同的“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第二行和第三行),但它仍然存在。為什麼會出現這種情況?下列的教材,我認為這就是我們在命令後\排版常用空格的方式(例如,與),在語義上沒有任何區別,但顯然,我在這一點上錯了。\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

顯示最後一行計算與膠水相符。

相關內容