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
- 区切りの数を数える。 冒頭の例では、各代数式の行に
&マーカーが3つあり、{2}を使っています。 - 説明セルを確認する。 続く行でも
&&を残し、説明が4番目のセルに入るようにします。 - 行末を確認する。 完全な例にあるとおり、ステップ間では
\\を使います。 - ラッパーを確認する。 単独の
alignat*を使うか、equation内でalignedatを使います。 - 最も長い行を見直す。 ページが窮屈になる場合は、間隔を狭める前に、説明を短くするか、文をステップ間に移してください。
表示する代数式と説明は、1つのレイアウトとして扱ってください。まず4セルのパターンから始め、読者が導出式を参照する方法に合わせて番号付けを選び、横の列には簡潔な理由を置きます。長い説明はその後、数学的な順序を見えにくくすることなくステップ間に移せます。
出典
- LaTeXの入手 — LaTeX Project。
- Amsmath — LaTeX向けAMS数式機能 — CTAN。
- amsmathパッケージのユーザーガイド — American Mathematical SocietyおよびLaTeX Project、CTAN経由。
- amsmathパッケージ — LaTeX Project、CTAN経由。
- mathtoolsパッケージ — Morten Høgholm、Lars Madsen、LaTeX3 Project、CTAN経由。