以下示例中的中间公式在符号周围的间距似乎不正确=
。唯一的区别是我使用了=&
来对齐=
符号周围,而不是&=
。
这让我很担心,因为有时候我想模拟“多行方程”,并且我希望方程像那样对齐,但根本不加符号=
。
这是已知的、可解释的行为吗?也就是说,这是一个错误还是一个功能?
\documentclass{minimal}
\usepackage{amsmath}
\begin{document}
\[
a=b
\]
\begin{align*}
a =& b\\
c =& d
\end{align*}
\begin{align*}
a &= b\\
c &= d
\end{align*}
\end{document}
答案1
技术原因是align
环境{}
向开始的第二在每个对齐列中,但不将其添加到结尾的第一的一。这样,当您写入 时,等号的行为就如同位于两个变量之间&=
。老实说,我不明白为什么它不在第一个单元格中也添加一个;尽管它偶尔会改变间距(例如在写入 时=&
),但它似乎从未以明显错误的方式这样做过。
正如其他人所建议的,您可以={}&
在希望等号具有正确间距时进行书写。
答案2
这是一个功能,而且非常重要:对于绝大多数情况来说,它简单而高效,因为它经常align
用于对齐关系符号处的连续行。有了它,&=
您就能保证在=
符号周围获得正确的间距。
另一方面,有时也需要“在等号后对齐”。有多种方法可以完成此任务。
例如,如果要对齐的等式的右边太长,则可以使用aligned
:
\begin{align}
a &= b\\
c &= \!\begin{aligned}[t]
&axy+b\\
&+y
\end{aligned}
\end{align}
这绝不是一种“变通方法”:它正确地标记了人们将要实现的目标(除了可能确实算作小错误但也会存在语法的小调整=&
)。
为什么 的开发者amsmath
选择这个而不是=&
? 嗯,一个原因是他们从 TeXbook 中借鉴了一些想法。 但更重要的是, 的许多案例都align
遵循了模式
\begin{align}
x &= <some expression> \\
&= <a development of that expression> \\
&= <a further development>
\end{align}
语法=&
会很麻烦。
在某些情况下,采用不同的对齐方式可能会很方便;我发现其中一些
a = {} &
解决了间距问题。
答案3
在对齐环境中,它被视为 A & B
。 $A$ ${}B$
这意味着如果你输入
\begin{align*}
A & B \\
C & D
\edn{align*}
它实际输出的是一个包含四个项目的表格,例如
这就是 align 的工作原理。
至于你的问题,仅当其后有内容时才添加间距。如果“=”后面没有任何内容,则不会添加空格。
我也搞明白了为什么他们不在第一个单元格中添加 {} $A{}$ ${}B$
。考虑A&=-B
一下。如果在两个单元格中都添加 {},则“=”和“-”之间的间距会变大(空格被加了两次)。此外,“=”应该在右侧,否则减号会被识别为二元运算符,从而导致减号和 B 之间有额外的空格。
除了第一个之外,您看不到其他任何正确的间距。
在现实生活中,关系符号后面常常跟普通的,但要以普通/二进制/运算符来进行。因此作者建议“=”必须放在右边,以便“=”后面的字符能够被正确分类(Ord/Bin/Op)。
在我们的小例子中,只有当 Rel 在右边时,TeX 才能将减号理解为普通的而不是二进制的。
至于您的问题,如果您不介意手动调整间距,您可以使用A={} & B
。或者您可以使用
A & = B \\
&\phantom{\;=\;}C
\; 通常由 TeX 自动添加。