本文将讨论全局与局部的公式对齐方式的调节,并对比各种常见的公式环境的差异(尤其是在对齐方面),介绍多行公式、多公式的编写方式。

针对各种常见环境(尤其是多行公式环境)的差异,对它们分别适用于哪种应用环境提出建议。


本文有另一个采用MarkDown重置的版本:http://blog.csdn.net/yanxiangtianji/article/details/54767265,相比这个较旧的版本可视化效果可能更好。


全局设置

全局对齐

默认的公式对齐方式是居中对齐。
如果全文要大量使用左对齐方式,可以采用在documentclass或者amsmath包前面加上参数fleqn,这样全局的默认对齐方式就是左对齐了。
\documentclass[fleqn]{article}

\usepackage[fleqn]{amsmath}

公式跨页

默认一个公式环境里面的多行公式是不会跨页显示的,可以使用下面命令开启全局的自动跨页显示:
\allowdisplaybreaks

\allowdisplaybreaks[n]
n的值为0到4,表示分页的坚决程度,例如0表示能不分页就不分页,4表示强制分页。

也可以在公式环境中使用\displaybreak 手工指定分页,它同样可以带有这个参数。

常见公式环境的差异

下面讨论各种常见公式环境,并重点讨论它们在对齐方面的差异。

1,在这些环境里面默认的输入文本都是公式,即不需要再输入$...$或\[...\]等。

2,如果要输入一般文本建议用\text{...},它由包amstext提供。它对于latex内置的\mbox{}的优势在于它可以根据当前位置自动调整文本样式(尤其是大小),而\mbox采用统一的正文样式。这一点在你的文本被用作上下标的时候非常重要。

3,对于非简写的环境(begin和end包裹的)都有两种形式,一种直接写环境名,会参与自动编号;另一种是在环境名后面加一个星号“*”,不会参与编号。如果没有故意修改编号都是在最右边,在公式排版时,可以认为页面的右边缘被向左移动了一个编号所占用的距离。

下面的讨论为了描述简便都是在带有星号,并且页面是单栏的情况下进行的。

简写形式(一个公式)

$ equation $
$$ equation $$
\[ equation \]
他们都 不产生编号公式。
后两种公式单独占一行,即不能嵌入正文中。
用$$表示的公式自动居中,而\[ \]表示的公式会根据配置的全局对齐方式对齐。

标准单个公式环境

\begin{equation}
...
\end{equation}
它是最一般的公式环境,表示一个公式,默认情况下之表示一个单行的公式,但是它的功能可以通过内嵌各种其他环境进行扩展。
它可以内嵌的一些关于对齐的环境将在后面介绍。

align(多个公式)

这是最基本的对齐环境,其他多公式环境都不同程度地依赖它。

与表格环境一样,它采用“&”分割各个对齐单元,使用“\\”换行。

它的每行是一个公式,都会独立编号。

在排版过程中,它将&分出来的列又分成组,组间特定方式排版,具体方式在flalign环境中讨论。

\begin{align*}
 f(x) &= (x+a)(x+b) \\
 &= x^2 + (a+b)x + ab
\end{align*}

\begin{align}f(x) &= (x+a)(x+b) \\&= x^2 + (a+b)x + ab\end{align}\,

其他多公式环境

这些环境的各自对齐方式会覆盖全局的对齐方式,例如即使全局配置的是居中对齐,而flalign也会使它的首列左对齐。
Environment name Description Notes
eqnarray and eqnarray*Similar to align and align*Not recommended since spacing is inconsistent
multline and multline*First line left aligned, last line right alignedEquation number aligned vertically with first line and not centered as with other environments.
gather and gather*Consecutive equations without alignment 
flalign and flalign*Similar to align, but left aligns first equation column, and right aligns last column 
alignat and alignat*Takes an argument specifying number of columns. Allows to control explicitly the horizontal space between equationsYou can calculate the number of columns by counting & characters in a line and adding 1
表格引用自:http://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
其中除了eqnarray是内置的以外,其他的都需要amsmath包支持。

需要注意的是表格中说的对齐方式是从大方面说的,例如flalign的首列左对齐是相对与整个页面而言的,而各行不同长度的第一列却采用右对齐的方式,即其中最长的一个的左端顶着页边,其他的列的右端与它的右端对齐。尾列的右对齐与之类似。后面详细说明。

eqnarray

与align相同,只是在名字上更直接地表示它包含了多个公式。

gather

它是最简单的多行公式环境,自己不提供任何对齐。其中的各行公式按照全局方式分别对齐。
在设置了全局左对齐之后,因为不存在内部各个公式之间对排版的干扰,这种环境非常适合写数学推导或者证明。

\begin{gather*}
E(X)=\lambda	\qquad	D(X)=\lambda	\\
E(\bar{X})=\lambda	\\
D(\bar{X})=\frac{\lambda}{n}	\\
E(S^2)=\frac{n-1}{n}\lambda	\\
\end{gather*}

flalign

虽然可以使用多个&,但是比较一般的用法是在只在等号前面使用一个&,它使所有列表现地像是根据等号对齐了,因此这个环境很适合用来编写多行的公式推导和数值计算过程。例如:
\begin{align*}
E(S^2)	&=E\left(\frac{1}{n} \sumi1n (X_i-\bar{X})^2\right)	\\
&	=E\left(\frac{1}{n}\sumi1n X_i^2\right) - E\left(\frac{1}{n}\sumi1n 2\bar{X}X_i\right) + E\left(\frac{1}{n}\sumi1n \bar{X}^2\right)	\\
&	=EX^2 -E(\bar{X}^2)	\\
&	=DX + (EX)^2 - D\bar{X} - (E\bar{X})^2	\\
&	=\frac{n-1}{n}DX	
\end{align*}


下面完整地描述一下flalign和align环境是如何处理多&情况下的对齐的。

根据& (假设n个)将一行分为n+1列。从左向右将列两个分为一组,第一组紧靠页左侧,最后一组紧靠页左侧,其余均匀散布在整个行中。当公式比较短时,中间可能会有几段空白。
需要注意的是:
1,每一组内部也是有对齐结构的!它们在所在位置上向中间对齐的,即第一列向右对齐,第二列向左对齐。
2,所谓紧靠页左/右是在进行了组内对齐调整之后,最长的一块紧靠上去。也就是说对于长度不一两行,较短的那一行是靠不上去的。
3,如果总共有奇数个列,及最后一组只有一个列,则它右对齐到页右侧,即所有行的最后一列的右侧都靠在页右侧。

下面用一个极端的例子来说明这个环境的特点:
\begin{flalign*}
xyz &= b+c &=123 &=123 &=ssss \\
x  &= 1+12 &=432523452345 &=2 &=a\\
  &= 2  &=982739 &=p &=ttt
\end{flalign*}
 
 
 
 
\begin{flalign*}
xyz &= b+c &=123 &=123 &=wera &=ssss \\
x  &= 1+12 &=432523452345 &=2 &=aeir &=a\\
  &= 2  &=982739 &=p &=panie &=ttt
\end{flalign*}

multline

注意是multline 不是multiline,虽然它就是那个意思。
它不支持“&”分列。首行左对齐,末行右对齐,其余各行分别按照全局方式对齐。

没有常见的应用模式。

alignat

它接收一个参数用来指定根据哪一列对齐。

\begin{alignat}{2}
 \sigma_1 &= x + y  &\quad \sigma_2 &= \frac{x}{y} \\  
 \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2'
    &= \frac{\partial \frac{x}{y}}{\partial x}
\end{alignat}

\begin{align} \sigma_1 &= x + y  &\sigma_2 &= \frac{x}{y}  &\qquad&\qquad&(1)   \\ \sigma_1' &= \frac{\partial x + y}{\partial x} & \sigma_2' &= \frac{\partial \frac{x}{y}}{\partial x} &&&(2)\end{align}

用于内嵌的对齐环境

这些环境无法独立构成一个数学环境,必须要嵌入在其他环境内部。

Math environment name Description
gatheredAllows to gather few equations to be set under each other and assigned a single equation number
splitSimilar to align*, but used inside another displayed mathematics environment
alignedSimilar to align, to be used inside another mathematics environment.
alignedatSimilar to alignat, and just as it, takes an additional argument specifying number of columns of equations to set.

这些环境都需要amsmath包支持。

例如:

\begin{equation}
 \left.\begin{aligned}
        B'&=-\partial \times E,\\
        E'&=\partial \times B - 4\pi j,
       \end{aligned}
 \right\}
 \qquad \text{Maxwell's equations}
\end{equation
}

\left.\begin{align}        B'&=-\partial \times E,\\        E'&=\partial \times B - 4\pi j,\end{align}\right\}\quad\text{Maxwell}'\text{s equations}\qquad\mathrm{(1.1)}

\left和\right后加一个括号的表示用于自动调整各种括号的大小,必须配对使用。公式中的\left. 是一个虚的\left,目的是为了和\right\}配对。

split

它用于将一个公式拆分成多行,但是它整体还只是一个公式。

\begin{equation}
 \begin{split}
 (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}
 
 
\begin{equation}
 \begin{split}
  (a + b)^3 &= (a + b) (a + b)^2        \\
            &= (a + b)(a^2 + 2ab + b^2) \\
            &= a^3 + 3a^2b + 3ab^2 + b^3
 \end{split}
\end{equation}



原载于http://blog.csdn.net/yanxiangtianji

转载请注明出处


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐