\h行間を埋める

\h行間を埋める

次のプログラムによって出力される最初の段落では、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

強制的に改行せずに、破棄できない塗りつぶしの接着剤を追加する必要があります。

関連情報