
Alimentando
\documentclass{article}
\showoutput
\begin{document}\noindent
A B\\
A\ B\\
A\hskip\fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font B
\end{document}
produz latex
três vezes o mesmo “AB” no arquivo DVI sem qualquer diferença visível. No entanto, os valores de expansão e redução na saída do console são diferentes:
....\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
A diferença é pequena ( plus 1.66498 minus 1.11221
na primeira linha vs. plus 1.66666 minus 1.11111
na segunda e terceira linhas), mas ainda existe. Por que isso acontece? SeguindoO TeXbook, pensei que \
era assim que compomos um espaço usual após um comando (digamos,
\foo\
vs. \foo
), sem qualquer diferença na semântica, mas aparentemente, eu estava errado nisso.
Responder1
O espaço adicionado por é o espaço especificado pelas dimensões da fonte ajustadas por
\spacefactor
, especificamente o plus
componente é multiplicado por \spacefactor/1000
normalmente \spacefactor
1000, mas é 999 após uma letra maiúscula, portanto os valores diferem por um fator de 999/1000, pois \
não é afetado por \spacefactor
e sempre adiciona um espaço de palavra padrão mesmo após a pontuação (ou letras maiúsculas). O minus
componente é semelhante, mas multiplicado por1000/\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}
Isso mostra as quatro configurações de cola como
....\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
mostrando que o cálculo da última linha corresponde à cola.