\hbox 导致对齐错误

\hbox 导致对齐错误

我有一个问题,我无法弄清楚,我有一个定义

\let\rendsplit@old=\rendsplit@
\def\rendsplit@{%
  \global\setbox\z@\vbox{\hbox{\vbox{\unvcopy\z@}}}%
  \rendsplit@old%
}

等式:

\begin{align}\begin{split}{E}_{\varepsilon }\dot{x}\left(\vrule height 7.79312pt depth 0.15717pt width 0ptt\vrule height 7.79312pt depth 0.15717pt width 0pt\right)&=Ax\left(\vrule height 7.79312pt depth 0.15717pt width 0ptt\vrule height 7.79312pt depth 0.15717pt width 0pt\right)\mathbin{+}B\varphi \left(\vrule height 5.93326pt depth 3.39229pt width 0pty\vrule height 5.93326pt depth 3.39229pt width 0pt\right)\mathbin{+}{B}_{u}u\left(\vrule height 7.79312pt depth 0.15717pt width 0ptt\vrule height 7.79312pt depth 0.15717pt width 0pt\right),\label{EEq1}\end{split}\tag*{$\text{(1)}$}\\[5pt]\begin{split}y\left(\vrule height 7.79312pt depth 0.15717pt width 0ptt\vrule height 7.79312pt depth 0.15717pt width 0pt\right)&=Cx\left(\vrule height 7.79312pt depth 0.15717pt width 0ptt\vrule height 7.79312pt depth 0.15717pt width 0pt\right),\label{EEq2}\end{split}\tag*{$\text{(2)}$}\end{align}

应该出现在等号处对齐,但我注意到没有在等号处对齐,但在修复上述定义后,如下所示

\let\rendsplit@old=\rendsplit@
\def\rendsplit@{%
  \global\setbox\z@\vbox{\unvcopy\z@}%
  \rendsplit@old%
}

等式在等号处正确对齐。所以我的问题是,为什么 \hbox 命令会导致对齐错误。

注意:我使用 \hbox 来指定 \vbox 内部之前和 \vbox 之后的一些与 DVISVGM 工具相关的特殊命令的 x 和 y 点。

提前致谢

答案1

原始宏确实

 \vtop{%
            \unvcopy\z@
            \global\setbox8 \lastbox

(它不应该对框 8 进行全局分配,但现在请忽略这一点)

这将从框 0 中的垂直列表中删除最后一个框(行)。

你的重新定义(确实不应该对框 0 进行全局分配)

  \global\setbox\z@\vbox{\hbox{\vbox{\unvcopy\z@}}}%

这意味着盒子 0 总是只有一个盒子的垂直列表,并且所有结构都位于该盒子内部。

因此,上述删除“最后一行”的代码将始终删除整个内容。

没有任何背景信息,就不可能建议如何解决这个问题。

相关内容