LaTeX2e \makebox !=\hbox?

LaTeX2e \makebox !=\hbox?

文档source2e(第 233 页)在描述时\makebox指出:

... 如果  缺失,则位置也失踪了对象  放置在\hbox其自然宽度内……

然而,这似乎只是故事的一半。它还在\leavevmode后面加上了,因此虽然宽度与基元的宽度相同,但\hbox行为却不同。在 TeX 中,两个连续的\hboxes将被排版在两条垂直线上,但在 LaTeX2e 中,它们将保持在同一行上。\leavevmode当然是\unhbox\voidb@x

对文档进行更正是否合适,或者我是否在某个地方错了?

MWE 用于实验。

\documentclass{article}
\begin{document}
\newbox\temp
\savebox\temp{test}
LaTeX

\makebox{test} \mbox{test}

TeX

\hbox{test} \hbox{test}

LaTeX with leavemode

\makeatletter
\leavevmode\hbox to \wd\temp{test} \unhbox\voidb@x\hbox to \wd\temp{test}
\end{document}

答案1

你当然是对的。另一方面,文档并不完全错误,只是,正如你所说,没有说出全部真相。这可能不是内部文档中唯一可以这么说的一行,所以这取决于人们愿意分配多少资源来改变这些事情。

这条评论只是经过轻微(半自动)编辑的版本

%  \makebox [WID][POS]{OBJ}
%          : puts OBJ in an \hbox of width WID, positioned by POS.
%            POS = l -> flushleft, POS = r -> flushright.
%            Default is centered.
%            If WID is missing, then POS is also missing and OBJ
%            is put in an \hbox of its natural width.

来自 LaTeX 2.09 源代码,因此它已经存在很长时间了:-)

相关内容