我有一个问题,我无法弄清楚,我有一个定义
\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 总是只有一个盒子的垂直列表,并且所有结构都位于该盒子内部。
因此,上述删除“最后一行”的代码将始终删除整个内容。
没有任何背景信息,就不可能建议如何解决这个问题。