【轉載請注明出處】http://www.cnblogs.com/mashiqi
2016/10/20
一年多沒寫博文了。今天寫一個短的,記錄一下使用LaTeX的一些經驗。
有些時候,我們的latex文檔是這樣開頭的
\documentclass[fleqn,leqno]{article}
其中 leqno 參數的作用是使得公式的編號顯示在左邊。當參數 fleqn 存在時,公式往往不能正確的居中。這時,我們就需要特別小心的使用equation、align、flalign、alignat等命令。下面詳細講講。
1、多行公式在一個地方對齊
如何居中多行的公式呢?我試過很多種方法后,覺得下面這個最好用:
\begin{flalign*} % In this way (this arrange of &), the equation will in the center and align at the third &. If use this method for 'split', equations will not be centered % However, 'flalign' will give each line a separate number. It cannot number the whole equations in one number. && a & = b & \\ && a & = b & \\ && a & = b & \\ && a & = b & \end{flalign*}
其中的多個&符號是專門安排好的。只用往第二個和第三個&符號后面添加代碼就行了,它們就能對齊 並且所有公式作為一個整體進行居中。但這里有個問題,就是編號的問題。這里沒有公式的編號。如果把flalign后面的*號去掉的話,那么就有編號了,但是是每一行公式一個編號,有些情況下這不太合適。因此,為了編號,我們要對上述代碼做如下更改:
\begin{flalign} % In this way (this arrange of &), the equation will in the center and align at the third &. If use this method for 'split', equations will not be centered % However, 'flalign' will give each line a separate number. It cannot number the whole equations in one number. && a & = b & \nonumber\\ && a & = b & \\ && a & = b & \nonumber\\ && a & = b & \label{eq2}\\ && a & = b & \nonumber \end{flalign} Now we refer equation (\ref{eq2}).
現在去掉了flalign后面的*號,那么給不想編號的行的結尾加上 \nonumber,給想加編號的行的后面 不添加任何東西 或者加上 \label{...} 。當 不添加任何東西 時,此行是有編號的,但這個編號將不能被引用到;當加上了 \label{...} 時,可以通過 \ref{...} 來引用這個編號。
下圖就是上面兩段代碼的輸出結果:
以上就基本解決了:多行公式、居中、對齊、加編號、引用編號這些問題。唯一的小缺點就是編號並不在整個公式的中間。不過這個小缺點可以容忍。
2、多行公式在多個地方對齊
為了達到多行公式在多個地方對齊的目的,我們必須取消最開始的 fleqn 命令。
有了上面使用 flalign 的經驗之后,我們可以使用 \begin{alignat*}{·} 進行多行公式在多個地方對齊的操作。“alignat”后面的那個括號里的數字是每行的“&”符號的個數加1后除以2。舉例如下:
\begin{alignat*}{2}
a & = b &\quad c & = d \\
a & = b & c & = d
\end{alignat*}
注意:為了讓各個公式之間能有一個間隔,要在分隔各個公式的&符號之后加一個 \quad 。其實 flalign 也可以通過上面的方法實現多個地方對齊,但是當每一行的公式不多時,為了故意填滿一整行,公式間的間距會很大。而 alignat 命令不會可以去填滿一整行,而是會使得各個公式間盡量靠攏,所以各個公式間的水平距離會看起來更舒服一些。 alignat 和 flalign 之間的區別舉例如下:
\begin{alignat*}{2}
a & = b &\quad c & = d \\
a & = b & c & = d
\end{alignat*}
\begin{flalign*}
&& a & = b & c & = d && \\
&& a & = b & c & = d &&
\end{flalign*}
3、 其他命令加編號
另外,使用
$$...$$
命令也是可以加編號的,方法是使用 \eqno{...} 命令。舉例如下:
$$a=b \eqno{(1)}$$
但這時的編號 (1) 要手動輸入,而且不能被引用。