第一种情况:Alpha \hfil\ Omega\par

第一种情况:Alpha \hfil\ Omega\par

为什么Alpha \hfil\ Omega\parAlpha \hfil\ Omega将“Omega”刷新到右侧?

答案1

每个段落\parfillskip的最后一行末尾都会添加粘连。通常的值为\parfillskip0pt plus 1fil它恰好与 \hfil 相等。因此,

Alpha\hfil Omega\par

“Omega” 前后的空间相等。另一方面

Alpha\hfill Omega\par

“Omega” 左侧的拉伸强度无限大,因此“Omega”与右边缘齐平。

如果在段落中间使用 或 ,并且用户没有强制换行,通常会发现 TeX 会尽可能地填满行而不会缩小任何空格,然后仅拉伸\hfil或以填充行。为了将“Omega”对齐到右边缘,可以使用 或 并在“Omega”后立即换行:\hfill\hfil\hfill\hfil\hfil

Alpha\hfil Omega\break Beta Gamma

\\如果您用(一种自然的方式)打破界限,则应该使用\hfill 因为\\添加\hfil(通常)。

Alpha\hfill Omega\\ Beta Gamma

如果\centering或有效,\flushleft那么\raggedright每行末尾都会添加粘连。该粘连通常相当于\hfil,因此还需要\hfill确保“Omega”位于右侧。

总之,要将“Omega”刷新到右边缘,请\hfill在其前面使用,并在其后面放置换行符(或段落末尾)。

有关更多详细信息和示例,请参阅 Heiko 的精彩回答。

答案2

第一种情况:Alpha \hfil\ Omega\par

一个例子:

\documentclass[a5paper]{article}
\usepackage[hmargin=23mm,vmargin=10mm]{geometry}
\usepackage{parskip}
\usepackage{color}
\usepackage{lipsum}

\newcommand*{\lip}{\lipsum*[101]\unskip}
\newcommand*{\om}{\textcolor{red}{Omega}}

\begin{document}

\verb|\parfillskip=|\texttt{\the\parfillskip}

1. Alpha \hfil \om\par

2. Alpha \hfill \om\par

3. Alpha \hfil \om\hspace{-\parfillskip}\par

4. Alpha \hfil \om\hspace{-\parfillskip}\null\par

5. Alpha \hfil \om\hspace*{-\parfillskip}\par

6. Alpha \hfil \om{\setlength{\parfillskip}{0pt}\par}

7. \lip\hfill \om\par

8. \lip~\hfill \om\par

9. \lip\nobreak\hfill~\om\par

\end{document}

结果

  • 该示例将“Alpha”和“Omega”之间的间距减小到一个空格和一个\hfil(l)。如果最小间距应该更大,那么我宁愿使用\hspace*{2em plus 1fill},例如。

  • 情况 1:在段落末尾,TeX 还添加了一个填充组件\parfillskip。其0pt plus 1fil占用的空间与\hfil之前相同。

  • 案例二:的第二l\hfill推翻。1fil\parfillskip

  • 情况 3:添加负片的技巧\parfillskip不起作用,因为 TeX 在插入之前会删除段落末尾的水平粘连\parfillskip

  • 情况4:\null阻止删除段落末尾的先前粘连。

  • \hspace*{...}情况 5:段落末尾的空格同样不会被删除,因为星号形式设置了两个粘合命令,第二个命令的宽度为零,可以在段落末尾将其删除而不会造成任何损害。

  • 情况 6:\parfillskip在此段中本地重置为零。

  • \hfil情况 7:删除一行的开头。

  • 案例 8/9:no-break-space~\nobreak可防止在 处换行\hfil

还需要考虑:Omega可能会被连字符连接。可以通过 来防止这种情况\mbox。将更强大的变体放在Omega段落末尾:

~\hfill\mbox{Omega}\par

\hspace*{.5em plus 1fill}\mbox{Omega}\par

第二种情况:Alpha \hfil\ Omega在段落中间

如果Omega应该位于一行的末尾,那么该行应该在之后立即结束Omega

\documentclass[a5paper]{article}
\usepackage[hmargin=24.5mm,vmargin=10mm]{geometry}
\usepackage{parskip}
\usepackage{color}
\usepackage{lipsum}

\begin{document}
  1. \lipsum*[101]Alpha~\hfil\mbox{\color{red}Omega}\\
  \lipsum[103]

  2. \lipsum*[101]Alpha~\hfill\mbox{\color{red}Omega}\\
  \lipsum[103]

\end{document}

结果

  • 情况 1:\hfil也是通过新行添加的\\
  • 案例2 :\hfill驳回\hfil\\

相关内容