
Im ersten Absatz des folgenden Programms dolor
wird am rechten Rand gesetzt. Im zweiten passiert das nicht, vermutlich weil \hfill
wir uns zu diesem Zeitpunkt noch in der ersten Zeile befinden.
\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
Wie kann ich sicherstellen, dass dolor
am rechten Rand gesetzt wird, unabhängig von der Position, an der es auftritt? Das heißt, wie kann ich die Wirkung des dritten Absatzes erzielen, aber nicht die des vierten (mit einem zusätzlichen Zeilenumbruch), wenn die Länge des Textes vor dolor geändert wird?
Antwort1
Dies ist im TeXbook gut beschrieben (suchen Sie im Index nach Bourbaki).
\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
Antwort2
\leavevmode\penalty50\hbox{}\nobreak\hfill dolor
sollte nicht verwerfbaren Füllkleber hinzufügen, ohne einen Zeilenumbruch zu erzwingen.