首先,我们要明白这两个环境分别能干什么。下面两段文字摘抄自l-short:
单独成行的行间公式在LaTeX里由equation环境包裹。
更多情况的是,我们需要罗列一系列公式,并令其按照等号对齐。目前最常用的是align环境,它将公式用 & 分隔为两部分并对齐。
通俗地讲,equation环境是处理行间公式的一种通用的手段;而align更多侧重于处理通过等号或不等号对齐的多行公式。
下面,我列举几个最基本的例子:
egin{equation} z = (a+b)^4= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4. end{equation}
编译效果如下:
与equation环境相似的,可以用equation*环境生成不带编号的行间公式。与之相似的还有最常用的无编号行间公式环境 [...],以及现在基本被淘汰的 $$...$$ 环境。当然,还有完全等价的displaymath环境。下面是这三种环境的简单示例:
$$z = (a+b)^4= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4.$$ egin{equation*} z = (a+b)^4= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4. end{equation*} egin{displaymath} z = (a+b)^4= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4. end{displaymath}
编译效果如下:
可以看到,上图中的三个无编号行间公式是完全一样的。
下面详细介绍align环境。align环境将公式用 & 分隔为两部分并在 & 处对齐。通常情况下,分隔符 & 放在等号 = 的左边,但特殊情况我后文会介绍。首先看align环境的一个例子:
egin{align} z &= (a+b)^4 \ &= (a+b)^2(a+b)^2 \ &= (a^2+2ab+b^2)(a^2+2ab+b^2) \ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{align}
可以看到,align环境会给每一行公式都编上序号。如果我们不想在某行后面编号,可以使用 otag或 onumber命令取消这一行公式的编号:
egin{align} z &= (a+b)^4
otag\ &= (a+b)^2(a+b)^2
onumber\ &= (a^2+2ab+b^2)(a^2+2ab+b^2)\ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{align}
如果整个公式都不希望编号,可以用align*环境,这样编译的公式本身就不带编号:
egin{align*} z &= (a+b)^4 \ &= (a+b)^2(a+b)^2 \ &= (a^2+2ab+b^2)(a^2+2ab+b^2) \ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{align*}
相同的效果可以通过行间公式里嵌套split环境完成:
egin{align*} z &= (a+b)^4 \ &= (a+b)^2(a+b)^2 \ &= (a^2+2ab+b^2)(a^2+2ab+b^2) \ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{align*} [ egin{split} z &= (a+b)^4 \ &= (a+b)^2(a+b)^2 \ &= (a^2+2ab+b^2)(a^2+2ab+b^2) \ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{split} ]
可以看到,上面两种方式编译效果完全一致。
如果希望在多行公式仅仅有一个编号,可以在equation环境中嵌套split环境:
egin{equation} egin{split} z &= (a+b)^4 \ &= (a+b)^2(a+b)^2 \ &= (a^2+2ab+b^2)(a^2+2ab+b^2) \ &= a^4 + 4a^3b + 6a^2b^2 + 4ab^3 + b^4 end{split} end{equation}
这样生成的多行公式就仅有一个编号。
开始的时候说过一般情况下 & 放在 = 的左边,而在不一般的情况,也可以颠倒这个顺序:
egin{align*} sum_{i=1}^{n}|x_{i}+y_{i}|^{p} leqslant{}& sum_{i=1}^{n}left(|x_{i}|cdot|x_{i}+y_{i}|^{p-1}+|y_{i}|cdot|x_{i}+y_{i}|^{p-1}
ight)\ ={}& sum_{i=1}^{n}|x_{i}|cdot|x_{i}+y_{i}|^{p-1}+sum_{i=1}^{n}|y_{i}|cdot|x_{i}+y_{i}|^{p-1}\ leqslant{}& left(sum_{i=1}^{n}|x_{i}|^{p}
ight)^{1/p}left(sum_{i=1}^{n}|x_{i}+y_{i}|^{p}
ight)^{(p-1)/p}\ &+left(sum_{i=1}^{n}|x_{i}|^{p}
ight)^{1/p}left(sum_{i=1}^{n}|x_{i}+y_{i}|^{p}
ight)^{(p-1)/p}\ ={}& left(left(sum_{i=1}^{n}|x_{i}|^{p}
ight)^{1/p} +left(sum_{i=1}^{n}|y_{i}|^{p}
ight)^{1/p}
ight)left(sum_{i=1}^{n}|x_{i}+y_{i}|^{p}
ight)^{(p-1)/p}. end{align*}
上面这个多行公式是我在整理范数的三角不等式时的一个步骤,可以看到,第三行的公式太长了,放在文中会显示overfullbox,于是我在加号的位置换行,但要保证在 & 处对齐,于是其他行我调整了对齐符号和等号的位置,并加上了 { } 调整空格位置,达到上式效果。
总的来说,在LaTeX中使用数学公式,在大体原则正确的前提下,还需要灵活变通,才能达到预期的效果。