amsmathのalignat*環境を使うと、等号を揃え、各ステップの横に説明を別の列として配置できます。このガイドでは、Macで編集するための完全な文書例を示し、その後、番号付け、間隔、長い注釈の変更方法を説明します。

注釈付き導出式の完全な例から始める

動作するLaTeX環境と、プレーンテキストの.texファイルを保存できるエディターが必要です。macOSでは、LaTeX Projectが、TeXシステムとエディターを含むMacTeXを案内しています。すでに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へのワークフローを使ってファイルをコンパイルしてください。出力された数式では、3つの等号が同じ縦位置に、3つの説明が別の同じ縦位置に並びます。2行目と3行目では、元の左辺の式を意図的に省略しています。

amsmathのユーザーガイドでは、行ごとの注釈と、間隔を制御したalignatの変種が明示的に示されています。また、このパッケージは、数式中の語句に使う\textを提供するamstextも読み込みます。amsmathパッケージのユーザーガイド、§3.6、CTAN: amsmath

これらの例はドキュメントと照合しましたが、この環境にはLaTeX実行ファイルがないため、ここではコンパイルしていません。

配置マーカーはどのように説明列を作るのでしょうか?

各行を4つのセルとして読みます。左辺の式、関係記号と右辺の式、間隔用セル、説明です。引数{2}は、右揃え列と左揃え列の2組を指定します。最初の&は等号の前に置きます。amsmathパッケージのユーザーガイド、§§3.1、3.6

完全な文書から抜き出した、ラベル付きの1行目を示します。

  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

続く行は、最初のセルが空なので&=から始まります。代数式の後の&&によって間隔用セルを空のままにし、説明セルへ進みます。3行とも、同じ4セル構造に従っています。

この例では、1行目の\qquadが共通の間隔列の幅を決めます。そのため、代数式の長さが異なっていても、説明は揃います。レイアウトは列構造によって決まるので、ソースに空白を追加する必要はありません。

別の書き方を見てみましょう。

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

ここでは説明が式のセルに残ります。その位置は個々の式の幅に左右されるため、説明列を共通の位置に揃えることはできません。後続のテキストをこのように見せたい場合にだけ、この配置を使ってください。

自分の導出式に適用するときは、配置マーカーをすべて保ったまま、まず代数式を置き換えてください。次に説明文を置き換えます。PDFを確認してから、最後に間隔を調整してください。この順序なら、問題の原因が数式、列構造、それとも使える幅なのかを特定しやすくなります。

どの環境を選べばよいでしょうか?

必要な番号付けと間隔に応じてレイアウトを選びます。次の選択ガイドは、各環境のドキュメント上の違いと、この用途における実用的な推奨をまとめたものです。amsmathパッケージのユーザーガイド、§§3.6–3.7

希望する結果 環境 パッケージ
列の組の間に自動で間隔を設け、ステップと説明を揃える alignまたはalign* amsmath
説明の前の間隔を明示的に調整する alignatまたはalignat* amsmath
注釈付き導出式全体に1つの式番号を付ける equationの中にalignedatを配置 amsmath
自動の列間隔を使ったコンパクトな内側の整列 数式環境内のaligned amsmath
ステップの間に短い説明文を挟む 適切な整列環境内の\shortintertext mathtools

冒頭の例では、間隔をソース上で確認でき、数式に番号も不要なので、alignat*が出発点として便利です。自動間隔を使いたい場合はalign*を選び、切り替える際に{2}を削除します。現在の実装ドキュメントでは、これらは別個の環境として記載され、アスタリスク付きの形式もそれぞれ定義されています。amsmathパッケージ、§17.6

導出式全体に1つの番号を付ける

議論全体を1つの番号で参照するには、次の完全な文書を使います。外側の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}

この代案では、見せ方を意図的に変えています。共有された等号の配置を保ちながら、1文で行間のつながりを説明します。より長い文章を挟むには\intertextをamsmath経由で使えます。上に示したコンパクトなコマンドにはmathtoolsが必要です。mathtoolsパッケージ、§3.5

配置がずれた結果をどう診断すればよいでしょうか?

間隔を調整する前に、文書を最小の完全な例と比較してください。以下の確認事項は、ここで使った構造を対象としています。実装ドキュメントには、列数のエラーと不正なネストについて記載されています。amsmathパッケージ、§17

  1. 区切りの数を数える。 冒頭の例では、各代数式の行に&マーカーが3つあり、{2}を使っています。
  2. 説明セルを確認する。 続く行でも&&を残し、説明が4番目のセルに入るようにします。
  3. 行末を確認する。 完全な例にあるとおり、ステップ間では\\を使います。
  4. ラッパーを確認する。 単独のalignat*を使うか、equation内でalignedatを使います。
  5. 最も長い行を見直す。 ページが窮屈になる場合は、間隔を狭める前に、説明を短くするか、文をステップ間に移してください。

表示する代数式と説明は、1つのレイアウトとして扱ってください。まず4セルのパターンから始め、読者が導出式を参照する方法に合わせて番号付けを選び、横の列には簡潔な理由を置きます。長い説明はその後、数学的な順序を見えにくくすることなくステップ間に移せます。

出典