\hspace*{\fill} 和 \hfill 有什么区别?

\hspace*{\fill} 和 \hfill 有什么区别?

在里面memoir手册第 183 页给出了此示例:

\begin{figure}
\centering
\hspace*{\fill}
{ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
\hspace*{\fill}
\caption{Example float with two illustrations}
\label{fig:mult1}
\end{figure}

我试图弄清楚,\hspace*{\fill}和之间\hfill有什么区别!?

\hfill定义\hspace定义对我没什么帮助。

答案1

以您的代码片段为例,\centering只会对产生影响\caption。然而,

\hspace*{\fill}
{ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
\hspace*{\fill}

旨在设置ILLUSTRATION 1ILLUSTRATION 2分布于\textwidth

在此处输入图片描述

\documentclass{article}
\usepackage{showframe}% http://ctan.org/pkg/showframe
\begin{document}
\begin{figure}
\centering
\hspace*{\fill}
{ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
\hspace*{\fill}
\caption{Example float with two illustrations}
\label{fig:mult1}
\end{figure}
\end{document}

但是,如果\hspace*{\fill}用替换\hfill,右边距的空间就会被“吞噬”:

在此处输入图片描述

\documentclass{article}
\usepackage{showframe}% http://ctan.org/pkg/showframe
\begin{document}
\begin{figure}
\centering
\hfill%\hspace*{\fill}
{ILLUSTRATION 1} \hfill {ILLUSTRATION 2}%
\hfill%\hspace*{\fill}
\caption{Example float with two illustrations}
\label{fig:mult1}
\end{figure}
\end{document}

为命令定义赋予值\hspace*

LaTeX 会删除行末的水平空格。如果您不希望 LaTeX 删除此空格,请包含可选参数*。这样就不会删除空格。

\hfill如果比 更直观,则使用 的另一种方法是在行的(开始和)结尾处\hspace*{\fill}插入虚拟文本(如\null或)。这样就会始终有“可以无限延伸的东西”:\mbox{}\hfill

\null\hfill%
{ILLUSTRATION 1} \hfill {ILLUSTRATION 2}%
\hfill\null%

在上面的例子中,showframe仅突出显示了文本块。

答案2

这里有一个很好的讨论和答案“fil” 和 “fill” 有什么区别?

与您的问题中的具体内容相关的\hfill是,TeX 原语可以扩展为,

 \hfill = \hskip 0pt plus 1fill minus 0pt

\hspace*{\fill}是 LaTeX 宏,它留下的空格等于1fill。如果要在行首插入粘连,则使用该命令的星号版本。

相关内容