下面第二个alignat
说明了我的问题。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{2}
a &= & b \\
& & + c
\end{alignat*}
\begin{alignat*}{2}
a &= & b \\
& & + c \\
&= \text{long expression}
\end{alignat*}
\end{document}
我想要等式的第三行不是改变前几行的间距。换句话说,我想要一个行为类似于tabbing
环境的数学环境。有人能帮忙吗?
编辑:我上面展示的例子是一个简化的例子。在我的实际问题中,对应于的部分= b
相当复杂。如果我们使用下面的 Werner 解决方案,我们将重复 中的整个复杂表达式\phantom{}
。所以,我猜没有现成的类似制表符的环境?
我目前的解决方法是使用\hspace*{}
代替\phantom{}
,手动调整位置。(我并不是说它更好。手动调整很烦人。)
编辑2:Werner 让我意识到,我大大简化了代码,因此\phantom{{}={}}
简化代码是一个很好的解决方案。因此,下面的示例更准确地说明了我最初的问题:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{align*}
a &= b [ c + d \\
&\phantom{{}=b [ c} + e] \\
&= \text{long expression}
\end{align*}
\end{document}
在这种情况下,(我认为)我们必须在 中重复上一行的一部分,当和很复杂\phantom
时,这很烦人。正如我在上面的“编辑”中所说,我目前使用来避免在 中重复复杂的表达式。b
c
\hspace*
phantom
答案1
有无数种方法可以实现这种一致性。以下仅列举两种:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\begin{alignat*}{2}
a &={} && b \\
& && + c
\end{alignat*}
\begin{align*}
a &= b \\
&\phantom{{}={}} + c \\
&= \text{long expression}
\end{align*}
\end{document}
答案2
为了让第三行不是影响您可以使用的前两个的间距\rlap{\text{long expression}}
,因此不需要更改该行之前的任何内容:
笔记:
- 我还添加了一对花括号,如,
{}+c
以便将其+
视为二元运算符。
代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{2}
a &= & b \\
& & {}+ c
\end{alignat*}
\begin{alignat*}{2}
a &= & b \\
& & {}+ c \\
&= \rlap{\text{long expression}}
\end{alignat*}
\end{document}