\parbox 定义中的一些作业

\parbox 定义中的一些作业

为什么这些作业在 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

相关内容