
次のプログラムによって出力される最初の段落では、dolor
が右余白に設定されます。 2 番目の段落では、 が\hfill
発生したときにまだ最初の行にあるため、これは発生しません。
\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
発生する位置に関係なく、右余白に設定されていることをどのように確認すればよいでしょうかdolor
。つまり、dolor の前のテキストの長さが変更された場合、3 番目の段落の効果は得られますが、4 番目の段落 (追加の改行を含む) の効果は得られないようにするにはどうすればよいでしょうか。
答え1
これは TeXbook で詳しく説明されています (索引で 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
答え2
\leavevmode\penalty50\hbox{}\nobreak\hfill dolor
強制的に改行せずに、破棄できない塗りつぶしの接着剤を追加する必要があります。