使用 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 節
- 計算分隔符號。 開頭範例中的每個代數式列都有三個
&標記,並使用{2}。 - 檢查說明儲存格。 在後續各列保留
&&,讓說明留在第四個儲存格。 - 檢查列結尾。 步驟之間保留
\\,如完整範例所示。 - 檢查包裝環境。 使用獨立的
alignat*,或在equation內使用alignedat。 - 檢視最長的一列。 如果內容擠滿頁面,先嘗試縮短說明或將句子移到步驟之間,再縮小間距。
將顯示的代數式及其說明視為同一個版面。先採用四儲存格模式,依讀者引用推導式的方式選擇編號,並將側欄留給精簡的理由。較長的說明之後可以移到步驟之間,避免遮蔽數學推導的順序。
來源
- 取得 LaTeX — LaTeX Project。
- Amsmath — LaTeX 的 AMS 數學功能 — CTAN。
- amsmath 套件使用者指南 — 美國數學學會和 LaTeX Project,經由 CTAN 提供。
- amsmath 套件 — LaTeX Project,經由 CTAN 提供。
- mathtools 套件 — Morten Høgholm、Lars Madsen 和 LaTeX3 Project,經由 CTAN 提供。