有没有办法将两个方程式堆栈中的所有等号对齐,以便它们均匀占据相同的区域?这是我当前的代码:
\begin{eqnarray}
m \Vec{a} \cdot \Hat{u}_L = - m L \Dot{\theta}^2 &=& \Vec{T_f} \cdot \Hat{u}_L + m \Vec{g} \cdot \Hat{u}_L \\
m \Vec{a} \cdot \Hat{u}_\theta = m L \Ddot{\theta} &=& \underbrace{\Vec{T_f} \cdot \Hat{u}_\theta}_{=0} + m \Vec{g} \cdot \Hat{u}_\theta
\end{eqnarray}
答案1
我建议您使用一个alignat{3}
环境,以便您可以在两组=
符号以及+
符号上放置对齐点。
\documentclass{article}
\usepackage{amsmath} % for 'alignat' env.
\begin{document}
\begin{alignat}{3}
m \vec{a} \cdot \hat{u}_L
&= - m L \dot{\theta}^2
&&= \vec{T}_f \cdot \hat{u}_L
&&+ m \vec{g} \cdot \hat{u}_L \\
m \vec{a} \cdot \hat{u}_\theta
&= \phantom{-}m L \ddot{\theta}
&&= {\underbrace{\vec{T}_f \cdot \hat{u}_\theta}_{=0}}
&&+ m \vec{g} \cdot \hat{u}_\theta
\end{alignat}
\end{document}
答案2
对于复杂的对齐,我建议使用IEEEeqnarray
它,尽管它的名字如此,但它是完全安全的,而事实eqnarray
并非如此(有缺陷且已弃用)。
我提供了两种中期实现方案,请您选择。
您将C
获得一个可以设置关系或操作符号的列,这些符号具有适当的间距;lcr
具有明显的含义。
我建议用一个\ubrace
命令来替换它\underbrace
,如果没有用括号括起来,它的语法和行为也会很奇怪。
\documentclass{article}
\usepackage{amsmath}
\usepackage{IEEEtrantools}
\newcommand{\ubrace}[2]{{\underbrace{#1}_{#2}}}
\begin{document}
\begin{IEEEeqnarray}{rCcClCl}
m \vec{a} \cdot \hat{u}_L
&=& - m L \dot{\theta}^2
&=& \vec{T}_f \cdot \hat{u}_L
&+& m \vec{g} \cdot \hat{u}_L \\
m \vec{a} \cdot \hat{u}_\theta
&=& m L \ddot{\theta}
&=& \ubrace{\vec{T}_f \cdot \hat{u}_\theta}{=0}
&+& m \vec{g} \cdot \hat{u}_\theta
\end{IEEEeqnarray}
\begin{IEEEeqnarray}{rClClCl}
m \vec{a} \cdot \hat{u}_L
&=& - m L \dot{\theta}^2
&=& \vec{T}_f \cdot \hat{u}_L
&+& m \vec{g} \cdot \hat{u}_L \\
m \vec{a} \cdot \hat{u}_\theta
&=& \hphantom{-}m L \ddot{\theta}
&=& \ubrace{\vec{T}_f \cdot \hat{u}_\theta}{=0}
&+& m \vec{g} \cdot \hat{u}_\theta
\end{IEEEeqnarray}
\end{document}
顺便说一句,\Vec
、\Hat
和\Dot
与\Ddot
不大写的命令完全相同。它们仅因历史原因而存在;请使用全小写的版本。