为什么Alpha \hfil\ Omega\par
不Alpha \hfil\ Omega
将“Omega”刷新到右侧?
答案1
每个段落\parfillskip
的最后一行末尾都会添加粘连。通常的值为\parfillskip
,0pt 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
。\\