
No primeiro parágrafo do programa seguinte, dolor
está colocado na margem direita. No segundo, isso não acontece, provavelmente porque quando \hfill
acontece ainda estamos na primeira linha.
\hsize 4in
lorem ipsum
lorem ipsum
lorem ip
\hfill dolor
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ip
\hfill dolor
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ip%
\break\null
\hfill dolor
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
\break\null
\hfill dolor
\bye
Como posso garantir que isso dolor
seja definido na margem direita, independentemente da posição em que ocorre? Ou seja, como posso obter o efeito do terceiro parágrafo, mas não o do quarto (com uma quebra de linha extra) se o comprimento do texto antes de dolor for alterado?
Responder1
Isso está bem descrito no TeXbook (procure Bourbaki no índice).
\def\NN#1{\leavevmode\llap{\hbox to\parindent{#1\hss}}\ignorespaces} % for reference
\def\signed#1{{\unskip\nobreak\hfil\penalty50
\hskip2em\hbox{}\nobreak\hfil#1%
\parfillskip=0pt \finalhyphendemerits=0 \par}}
\hsize 4in
\NN1
lorem ipsum
lorem ipsum
lorem ip
\signed{dolor}
\NN2
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ip
\signed{dolor}
\NN3
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ip%
\signed{dolor}
\NN4
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
l
\signed{dolor}
\NN5
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lorem ipsum
lo
\signed{dolor}
\bye
Responder2
\leavevmode\penalty50\hbox{}\nobreak\hfill dolor
deve adicionar cola de preenchimento não descartável sem forçar uma quebra de linha.