\hpreencher entre linhas

\hpreencher entre linhas

No primeiro parágrafo do programa seguinte, dolorestá colocado na margem direita. No segundo, isso não acontece, provavelmente porque quando \hfillacontece 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

saída

Como posso garantir que isso dolorseja 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

insira a descrição da imagem aqui

Responder2

\leavevmode\penalty50\hbox{}\nobreak\hfill dolor

deve adicionar cola de preenchimento não descartável sem forçar uma quebra de linha.

informação relacionada