\documentclass[a4paper]{report}
\begin{document}
\[\phantom{\ast}\hfil a\hfil\ast\]
As you can see, the \verb"\hfil"s get ignored… or at least the one on the right does. But if I swap \verb"\phantom" and \verb"\ast", I get:
\[\ast\hfil a\hfil\phantom{\ast},\]
where the \verb"\hfil" is still being ignored. Therefore I infer both are being ignored.
\end{document}
为什么会发生这种情况?
答案1
说与 说或者 在 LaTeXspeak 中\hfil
相同。\hskip 0pt plus 1fil
\hspace{0pt plus 1fil}
然而,TeX 只有在必要时才会使用拉伸分量。例如,
\hbox{a\hfil b} % Plain TeX
\makebox{a\hfil b} % LaTeX (or \mbox{a\hfil b})
拉伸组件不会产生任何效果,并且“a”和“b”之间不会出现空格。相反,会出现一个空格
\hbox to 2cm{a\hfil b} % Plain TeX
\makebox[2cm][s]{a\hfil b} % LaTeX
因为 TeX 想要占据规定的长度。
显示数学中的公式按其自然宽度排版,因此粘连将仅使用长度分量而不使用拉伸分量。长度分量为零\hfil
。
如果你想填满所有可用空间,你应该说
\[
\makebox[\displaywidth][s]{$\displaystyle\phantom{*}a\hfil{*}$}
\]
但最好这样说
\[
a\tag*{$*$}
\]
使用amsmath
功能。