使用 amsmath 的 alignat* 環境對齊等號,並在每個步驟旁的獨立欄位放置說明。本指南會展示一份可在 Mac 上編輯的完整文件,接著說明如何變更編號、間距和較長的註解。

先從完整的註解推導式開始

你需要可正常運作的 LaTeX 安裝,以及能儲存純文字 .tex 檔案的編輯器。對於 macOS,LaTeX Project 推薦 MacTeX,其中包含 TeX 系統和編輯器。如果你已能順利編譯 LaTeX 文件,就使用現有的設定。取得 LaTeX

建立名為 derivation.tex 的檔案,並貼上下列完整文件。這個範例使用環上的抽象元素:乘法對加法具有分配律、加法具有結合律,而乘法不一定具有交換律。

\documentclass{article}
\usepackage{amsmath}

\begin{document}

Let $a,b,c,d$ be elements of a ring.
\begin{alignat*}{2}
  a(b+c)+ad
    &= (ab+ac)+ad
    &\qquad& \text{distributivity} \\
    &= ab+(ac+ad)
    && \text{associativity of addition} \\
    &= ab+a(c+d)
    && \text{distributivity}
\end{alignat*}

\end{document}

使用編輯器的 LaTeX 轉 PDF 工作流程編譯檔案。在產生的顯示結果中,三個等號應位於同一垂直位置,三段說明也應位於另一個共同位置。第二行和第三行刻意省略原本的左側運算式。

amsmath 使用者指南明確示範逐行註解,以及可控制間距的 alignat 變體。此套件也會載入 amstext,提供在數學模式中排文字的 \text。amsmath 套件使用者指南,第 3.6 節、CTAN:amsmath

這些範例已對照文件檢查,但此處未進行編譯,因為此環境沒有 LaTeX 執行檔。

對齊標記如何建立說明欄?

將每一列看成四個儲存格:左側運算式、關係符號及其右側運算式、間距儲存格,以及說明。參數 {2} 指定兩組靠右對齊和靠左對齊的欄位。在等號前放置第一個 &。amsmath 套件使用者指南,第 3.1 和 3.6 節

以下是完整文件中第一列的標註片段:

  a(b+c)+ad       % cell 1: original expression
    &= (ab+ac)+ad % cell 2: relation and next expression
    &\qquad      % cell 3: explicit gap
    & \text{distributivity} % cell 4: explanation

後續各列以 &= 開頭,因為其第一個儲存格是空的。代數式後面的 && 會讓間距儲存格保持空白,並移至說明儲存格。三列仍都遵循相同的四儲存格結構。

在此範例中,第一列的 \qquad 設定共用間距欄的間隔。因此,即使代數式長度不同,各段說明仍會對齊。這也是不必在原始文字中加入空格的原因:版面由欄位結構決定。

請看另一種片段:

  &= ab+(ac+ad) \qquad \text{associativity of addition}

此處的說明仍留在運算式儲存格中。它的位置會隨該運算式的寬度而定,因此不會建立共用的說明欄。只有當你想要文字緊接在運算式後面的效果時,才使用這種安排。

編寫自己的推導式時,先在保留所有對齊標記的前提下替換代數式,再替換說明文字。最後才調整間距,並檢查產生的 PDF。依此順序操作,更容易判斷問題是來自數學式、欄位結構,還是可用寬度。

應該選哪種環境?

根據所需的編號和間距選擇版面。下列選擇指南結合了文件中對環境差異的說明,以及本任務的實用建議。amsmath 套件使用者指南,第 3.6–3.7 節

你想要的結果 環境 套件
對齊步驟與說明,並在欄位組之間自動留白 align 或 align* amsmath
明確控制說明前的間距 alignat 或 alignat* amsmath
整個註解推導式共用一個方程式編號 equation,內含 alignedat amsmath
在數學環境內使用自動欄組間距的精簡內部對齊 數學環境中的 aligned amsmath
在步驟之間插入簡短的文字說明 適當對齊環境中的 \shortintertext mathtools

對於開頭的範例,alignat* 是不錯的起點,因為原始碼中的間距一目了然,而且顯示式不需要編號。如果偏好自動間距,請使用 align*;變更時移除 {2}。目前的實作文件將這些列為不同的環境,並分別定義其星號形式。amsmath 套件,第 17.6 節

為整個推導式加上單一編號

若要單一引用整段論證,請使用以下完整文件。外層的 equation 提供編號;內層的 alignedat 提供欄位。

\documentclass{article}
\usepackage{amsmath}

\begin{document}

Let $a,b,c,d$ be elements of a ring.
\begin{equation}
\label{eq:regroup}
\begin{alignedat}{2}
  a(b+c)+ad
    &= (ab+ac)+ad
    &\qquad& \text{distributivity} \\
    &= ab+(ac+ad)
    && \text{associativity of addition} \\
    &= ab+a(c+d)
    && \text{distributivity}
\end{alignedat}
\end{equation}

The regrouping is shown in \eqref{eq:regroup}.

\end{document}

在此包裝環境中使用 alignedat。將頂層的 alignat 環境巢狀放入 equation 是錯誤的方程式結構。實作文件說明了內部環境,以及如何處理由錯誤巢狀造成的問題。amsmath 套件,第 17.4 和 17.6 節

如果每個步驟都需要編號,請改用非星號的 alignat 環境。在想要引用的每一列上放置獨立的 \label;若要隱藏不需要的列編號,請使用 \notag。amsmath 套件使用者指南,第 3.1 和 3.11 節

說明太長時該怎麼辦?

側欄應保留給「分配律」或「定義」等簡短理由。如果理由變成一整句,從編輯角度來看,將它移到步驟之間會比較合適。這樣就能為說明騰出空間,也讓代數式更容易瀏覽。

mathtools 套件會載入 amsmath,並提供 \shortintertext,可以在對齊式中插入文字,且所需的垂直間距比 \intertext 小。兩者都能在文字插入處維持對齊。mathtools 套件,第 2 和 3.5 節

\documentclass{article}
\usepackage{mathtools}

\begin{document}

Let $a,b,c,d$ be elements of a ring.
\begin{align*}
  a(b+c)+ad &= (ab+ac)+ad \\
  \shortintertext{Regroup the sum before factoring the last two terms.}
            &= ab+(ac+ad) \\
            &= ab+a(c+d)
\end{align*}

\end{document}

這個替代方式刻意改變了呈現方式:用一句話說明列與列之間的轉換,同時維持等號對齊。若要插入較長的文字說明,可透過 amsmath 使用 \intertext;上方展示的精簡指令則需要 mathtools。mathtools 套件,第 3.5 節

如何找出對齊錯誤的原因?

調整間距前,先將文件與最精簡的完整範例比對。以下檢查項目針對本文所用的結構;實作文件說明了欄數錯誤和不正確的巢狀用法。amsmath 套件,第 17 節

  1. 計算分隔符號。 開頭範例中的每個代數式列都有三個 & 標記,並使用 {2}。
  2. 檢查說明儲存格。 在後續各列保留 &&,讓說明留在第四個儲存格。
  3. 檢查列結尾。 步驟之間保留 \\,如完整範例所示。
  4. 檢查包裝環境。 使用獨立的 alignat*,或在 equation 內使用 alignedat。
  5. 檢視最長的一列。 如果內容擠滿頁面,先嘗試縮短說明或將句子移到步驟之間,再縮小間距。

將顯示的代數式及其說明視為同一個版面。先採用四儲存格模式,依讀者引用推導式的方式選擇編號,並將側欄留給精簡的理由。較長的說明之後可以移到步驟之間,避免遮蔽數學推導的順序。

來源