
Кормление
\documentclass{article}
\showoutput
\begin{document}\noindent
A B\\
A\ B\\
A\hskip\fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font B
\end{document}
в latex
результате трижды повторяется «AB» в файле DVI без видимой разницы. Однако значения растяжения и сжатия в выводе консоли различаются:
....\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
показывая последнюю строку расчета, соответствующую клею.