文档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 源代码,因此它已经存在很长时间了:-)