动机
我想在我的 LaTeX 文档中包含一系列相关方程式,例如,用于证明。据我所知,我有两个不错的选择,eqnarray
和align
。
问题
eqnarray
和之间有什么区别align
?我怎么知道应该使用哪一个?或者这到底重要吗?
答案1
尽管eqnarray
看起来效果“还不错”,避免使用 eqnarray! 避免使用 eqnarray! 避免使用 eqnarray!
其中提到了两个主要问题上面的文档:
eqnarray
在操作符周围设置水平空间=
,该空间与其他环境中设置的空间不一致,例如\[...\]
或$$...$$
(它更宽)。eqnarray
(还有eqnarray*
!)公式编号定义不明确,导致引用时出现编号错误——主要是在使用命令\nonumber
使用align
和其余的 ams 环境。请参阅texdoc amsldoc
(PDF) 或者LaTeX 数学简明指南以获取有关如何使用它们的文档。
答案2
align
来自amsmath
,而eqnarray
来自基本 LaTeX,因此我认为前者更好。以下是一些区别:
eqnarray
有两个对齐点(基本上只是array
带有默认前导码);align
有一个。x + y &=& z
与x + y &= z
eqnarray
根据不同的因素改变对齐点的间距;align
保持固定(这通常是你想要的)eqnarray
允许行间分页;align
不允许\\ *
\\*
与中的处理方式相同eqnarray
,但在 中不起作用align
(因为*
在方程中经常出现)
(主要摘自《LaTeX Companion》第 8.2.1 节)
答案3
除了间距更好、需要输入的“&”符号更少之外,align
vs的一个很大的优点eqnarray
是,您可以\qedhere
在最后一行的末尾包含一个,并将漂亮的 CQFD 方块(也称为“Halmos”)放置在与您的最后一个公式相同的高度,而不是在下面。
\begin{proof} The proof is a follows:
\begin{align}
(x+y)^3&=(x+y)(x+y)^2\\
&=(x+y)(x^2+2xy+y^2)\\
&=x^3+3x^2y+3xy^3+x^3.\qedhere
\end{align}
\end{proof}
答案4
如果你必须使用该eqnarray
环境,那么有一个名为eqnarray
(可用这里) 至少可以消除中间列周围的多余空间。比较:
\documentclass{article}
\usepackage{eqnarray,amsmath}
\begin{document}
\begin{eqnarray*}
A&=&B,\\
C&=&D,\\
E&=&F
\end{eqnarray*}
\begin{align*}
A&=B,\\
C&=D,\\
E&=F
\end{align*}
\end{document}
该软件包适用于 LaTeX 2.09,但它可能仍然有效。
我注意到,在我的示例中, 和eqnarray*
的align*
居中位置略有不同(eqnarray*
比 左侧少 1 点align*
)。我不确定为什么。如果在 中使用{B,}
和{D,}
而不是 和B,
,则两个显示的居中位置完全相同,因此我认为结尾的标点符号导致了问题。(默认设置似乎存在同样的问题。)D,
eqnarray*
eqnarray*