若要引用整個方程組及其中的個別方程,請載入 amsmath,將帶編號的陳列式放在 subequations 中,並在該環境內緊接著放置方程組標籤。為每個帶編號的列各加一個標籤,然後使用 \eqref 引用任一層級。amsmath 使用者指南,第 3.11 節。

本指南適用於在 Mac 上編輯 LaTeX 文件,且需要「系統 (1)」和「方程式 (1b)」等引用方式的使用者。範例採用抽象代數表達式,並區分會為各個方程分別編號的環境,以及只用於排列多行內容的環境。

建立方程組引用與個別方程引用

先準備可正常運作的 LaTeX 安裝環境。LaTeX Project 將 MacTeX 列為適用於 Mac 的發行版,內含 LaTeX、完整的 TeX 系統和文件編輯器。以下編號技巧取自 amsmath 套件。取得 LaTeX;CTAN:amsmath。

在 LaTeX 編輯器中,將以下完整文件存成 equation-group.tex。關鍵是將 \label{eq:system} 直接放在 \begin{subequations} 之後、內層 align 開始之前。套件指南明確說明,這個位置可用來擷取父編號。amsmath 使用者指南,第 3.11.3 節。

\documentclass{article}
\usepackage{amsmath}

\begin{document}

Consider the system~\eqref{eq:system}:
\begin{subequations}\label{eq:system}
\begin{align}
  a+b &= c \label{eq:sum} \\
  a-b &= d \label{eq:difference} \\
  2a  &= c+d \label{eq:combined}
\end{align}
\end{subequations}

The whole group is system~\eqref{eq:system}.
The second relation is equation~\eqref{eq:difference}.
Together, equations~\eqref{eq:sum} and~\eqref{eq:difference}
give equation~\eqref{eq:combined}.

\begin{equation}\label{eq:next}
  2b=c-d
\end{equation}

The next equation is~\eqref{eq:next}.

\end{document}

將主檔編譯兩次,讓 LaTeX 先寫入再讀取引用資訊。若 pdflatex 可用,且目前工作目錄包含已儲存的檔案,請在終端機執行以下命令。LaTeX 使用輔助檔案,因此第一次執行時引用可能會顯示為 ??。LearnLaTeX:交叉引用。

pdflatex -halt-on-error equation-group.tex
pdflatex -halt-on-error equation-group.tex

對於這份獨立文件,預期引用結果如下。這些結果是根據已記載的編號行為推定,並非本機編譯結果;研究環境中沒有 LaTeX 編譯器。

引用命令 預期結果 所指內容
\eqref{eq:system} (1) 整個方程組
\eqref{eq:sum} (1a) 第一個方程
\eqref{eq:difference} (1b) 第二個方程
\eqref{eq:combined} (1c) 第三個方程
\eqref{eq:next} (2) 方程組之後的方程

實作方式說明了編號順序:進入 subequations 時會遞增並儲存父方程編號,接著開始子計數器。離開外層環境時,主計數器會還原為父編號。因此,父編號為 (1) 的方程組包含三個子方程後,接續的一般方程編號為 (2)。amsmath 套件,第 15 節。

選擇符合引用需求的環境

選擇版面配置之前,先決定讀者需要引用哪些內容:整個集合、每個方程,或是分成多行的單一表達式。本選擇指南依據套件文件中的區分編寫。amsmath 使用者指南,第 3.2–3.7 節。

讀者的需求 適用結構 編號目標
引用一組方程,以及其中各個對齊的方程 在 align 外層使用 subequations 父編號及各個帶編號的列
引用一組分別置中的方程 在 gather 外層使用 subequations 父編號及各個帶編號的方程
引用以文字隔開的相關陳列式 在多個帶編號的陳列式外使用一個 subequations 父編號及各個陳列式
引用一個多行表達式 equation 中包含 split 或 aligned 一個方程編號
顯示沒有自動編號的對齊列 align* 不自動為各列編號

為什麼 aligned 不會建立個別子方程

aligned 是封裝在數學環境內的組成區塊。在 aligned 中使用 equation,會為外層方程編號;但不會為每一列建立個別的帶編號目標。若要引用個別列,請在 subequations 中選用 align。指南將這些陳列環境與其內部組成區塊分別說明。amsmath 使用者指南,第 3.7 節。

一個實用的規劃方法是先草擬引用該內容的句子。若需要「系統 (1) 中的第二個方程」,第一個範例便提供這兩種引用目標。若只需要「方程式 (1) 中的推導」,單一帶編號的多行陳列式可能就足夠。先選好結構再加標籤,能清楚指定預期的引用目標。

讓同一組方程跨越多個陳列式

外層環境可在方程之間包含文字。套件隨附的子方程範例展示了這種用法,也示範如何使用不同數學環境組成一組陳列式。最後一個相關陳列式結束後,再關閉外層環境。子編號方程範例。

以下是第二份完整文件。第一個子方程排版時佔兩行,但只有一個引用目標;第二個則是在一句文字之後出現的獨立陳列式。

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\begin{subequations}\label{eq:identities}
\begin{equation}\label{eq:expansion}
\begin{split}
  (a+b)^2 &= a^2+2ab+b^2 \\
          &= (a-b)^2+4ab
\end{split}
\end{equation}

A related identity is
\begin{equation}\label{eq:product}
  (a+b)(a-b)=a^2-b^2.
\end{equation}
\end{subequations}

The group is~\eqref{eq:identities}.
Its members are~\eqref{eq:expansion} and~\eqref{eq:product}.

\end{document}

在這個獨立範例中,預期方程組引用為 (1),成員引用則為 (1a) 和 (1b)。split 內的中間一行沒有獨立編號。若要將編號與第一份文件比較,請把此範例另存為獨立檔案。套件隨附範例也展示了多行表達式取得一個子編號的情況。子編號方程範例。

診斷錯誤或未解析的引用

先檢查問題現象,再修改計數器或在文字中直接輸入數字。以下步驟可協助區分引用查找問題,以及所選環境與預期引用目標不符的情況。

  1. 如果 PDF 顯示 ??,請再次編譯。 引用資訊會從先前執行所產生的輔助資料讀取。若問題仍然存在,請核對引用鍵與標籤的拼寫。LearnLaTeX:交叉引用。
  2. 如果方程組引用含有字母,請檢查標籤位置。 將父標籤放在 \begin{subequations} 之後。每個子標籤都應放在其帶編號列的 \\ 之前;最後一列則放在 \end{align} 之前。amsmath 使用者指南,第 3.11.3 節。
  3. 如果個別列沒有各自的編號,請檢查環境。 equation 中的 aligned 區塊只提供一個外層引用目標。若每一列都需要引用,請使用第一個範例中的結構。amsmath 使用者指南,第 3.7 節。
  4. 如果無關的方程也出現字母後綴,請檢查外層環境的結尾。 外層環境內所有帶編號的內容都會納入子編號序列。將 \end{subequations} 移至預定方程組的實際結尾。子編號方程範例。

套用範例時,可使用 eq:system 和 eq:difference 等描述性鍵。前綴 eq: 是作者採用的命名慣例;LaTeX 不會用它判斷標籤所指物件的類型。標籤的位置才會提供這項脈絡。LearnLaTeX:交叉引用。

確認編輯後引用仍然正確

文件初次編譯成功後,試著進行一項可控的編輯:在方程組前插入一個一般帶編號的方程。持續重新編譯,直到引用變動警告消失,接著檢查方程組引用、一個子方程引用,以及後續方程。在第一個範例中,它們現在應分別顯示為 (2)、(2b) 和 (3)。這是根據套件計數器行為推得的示意檢查。amsmath 套件,第 15 節。

這項編輯可檢驗使用標籤的目的:編號變動後,引用句仍應指向預期的方程。請將父標籤留在外層環境的開頭,為每個需要引用的子方程設定獨立的帶編號目標,並在套用至較大的手稿時,使用完整範例作為小型對照文件。

來源