为什么这些作业在 LaTeX 的定义中是必要的\parbox
?
\let\hss\vss\let\unhbox\unvbox
编辑
我应该补充一点,我想知道这些分配是否会影响对宏和的原始定义的任何 parbox 内调用(即,由 parbox 材料进行的调用)\hss
,\unhbox
因为可能会出现兼容性问题。
答案1
如果你看一下 的定义\@iiiparbox
,你会发现:
\long\def\@iiiparbox#1#2[#3]#4#5{%
\leavevmode
\@pboxswfalse
\setlength\@tempdima{#4}%
\@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
\ifx\relax#2\else
\setlength\@tempdimb{#2}%
\edef\@parboxto{to\the\@tempdimb}%
\fi
\if#1b\vbox
\else\if #1t\vtop
\else\ifmmode\vcenter
\else\@pboxswtrue $\vcenter
\fi\fi\fi
\@parboxto{\let\hss\vss\let\unhbox\unvbox
\csname bm@#3\endcsname}%
\if@pboxsw \m@th$\fi
\@end@tempboxa}
参数#3
实际上是位置参数,因此\csname bm@#3\endcsname
将产生\bm@c
,\bm@l
,\bm@r
,\bm@b
, \bm@t
和\bm@s
。但它们的定义如下:
\def\bm@c{\hss\unhbox\@tempboxa\hss}
\def\bm@l{\unhbox\@tempboxa\hss}\let\bm@t\bm@l
\def\bm@r{\hss\unhbox\@tempboxa}\let\bm@b\bm@r
\def\bm@s{\unhbox\@tempboxa}
显然,这些是用于水平模式\parbox
,因此在 或环境中,您需要有这些的垂直版本,这样才解释了定义中minipage
的 的存在。\let\hss\vss\let\unhbox\unvbox
\@iiiparbox