\hfill 行间

\hfill 行间

在以下程序输出的第一段中,dolor设置在右边距。在第二段中,这种情况没有发生,大概是因为当\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 之前的文本长度发生变化,我如何才能获得第三段的效果,而不是第四段的效果(带有额外的换行符)?

答案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

应添加不可丢弃的填充胶,而无需强制断线。

相关内容