数式の導出を書いていると、等号で揃えて複数行にわたる式変形を見せたくなる場面が頻繁にあります。たとえば、方程式を一行ずつ変形していく過程を読者に追わせるとき、等号が縦に揃っていれば格段に読みやすくなります。
また、連立方程式を左揃えで並べたり、場合分け(piecewise)の定義を書いたりする場面でも、数式の整列は欠かせません。
本記事の内容
align環境の基本的な使い方- 複数の整列ポイントを持つ数式
- 数式番号の制御
cases環境による場合分けgatheredとaligned環境- KaTeXでの注意点
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- 分数をLaTeXで書く — 分数を含む複数行数式
- 偏微分・全微分をLaTeXで書く — 導出で多用
align 環境の基本
なぜ整列が必要か
数式の導出を書くとき、各行の等号を揃えないと次のようになってしまいます。
$$ f(x) = (x + 1)^2 $$
$$ = x^2 + 2x + 1 $$
$$ = (x + 1)(x + 1) $$
等号の位置がバラバラで、読者は各行のつながりを把握しにくくなります。align 環境を使えば、等号の位置を縦に揃えて見やすく表示できます。
基本構文
align 環境では、& で整列ポイントを指定し、\\ で改行します。
$$ \begin{align} f(x) &= (x + 1)^2 \\ &= x^2 + 2x + 1 \\ &= (x + 1)(x + 1) \end{align} $$
$$
\begin{align}
f(x) &= (x + 1)^2 \\
&= x^2 + 2x + 1 \\
&= (x + 1)(x + 1)
\end{align}
$$
& を等号の直前に置くことで、すべての等号が縦に揃います。これが align 環境の最も基本的な使い方です。
仕組みの理解
align 環境の & は「この位置で揃えてください」というマーカーです。テーブルの列区切りと同じ原理で、すべての行の & の位置が縦に揃えられます。
% & の位置が揃う
f(x) &= ... % 1行目の & の位置
&= ... % 2行目の & の位置(1行目と揃う)
&= ... % 3行目の & の位置(同上)
実例:二次方程式の解の導出
具体的な導出例を見てみましょう。
$$ \begin{align} ax^2 + bx + c &= 0 \\ x^2 + \frac{b}{a}x &= -\frac{c}{a} \\ x^2 + \frac{b}{a}x + \frac{b^2}{4a^2} &= \frac{b^2}{4a^2} – \frac{c}{a} \\ \left(x + \frac{b}{2a}\right)^2 &= \frac{b^2 – 4ac}{4a^2} \\ x &= \frac{-b \pm \sqrt{b^2 – 4ac}}{2a} \end{align} $$
$$
\begin{align}
ax^2 + bx + c &= 0 \\
x^2 + \frac{b}{a}x &= -\frac{c}{a} \\
x^2 + \frac{b}{a}x + \frac{b^2}{4a^2} &= \frac{b^2}{4a^2} - \frac{c}{a} \\
\left(x + \frac{b}{2a}\right)^2 &= \frac{b^2 - 4ac}{4a^2} \\
x &= \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
\end{align}
$$
各行の等号がきれいに揃っているため、導出の流れが一目でわかります。
align 環境の基本を理解しました。次に、複数の整列ポイントを使う方法を見ていきましょう。
複数の整列ポイント
2列の整列
連立方程式のように、左辺と右辺をそれぞれ揃えたい場合は、& を複数使います。align 環境では & が奇数個目は右揃え、偶数個目は左揃えの境界になります。
$$ \begin{align} x + y &= 5 & \quad 2x – y &= 1 \end{align} $$
$$
\begin{align}
x + y &= 5 & \quad 2x - y &= 1
\end{align}
$$
連立方程式の縦並び
連立方程式を縦に並べて揃える場合は、次のように書きます。
$$ \begin{align} 3x + 2y &= 7 \\ x – y &= 1 \end{align} $$
$$
\begin{align}
3x + 2y &= 7 \\
x - y &= 1
\end{align}
$$
条件と本体を揃える
導出の各行に理由(条件)を添える場合にも、複数の整列ポイントが便利です。
$$ \begin{align} \|\bm{x} + \bm{y}\|^2 &= (\bm{x} + \bm{y})^\mathrm{T}(\bm{x} + \bm{y}) & &\text{(ノルムの定義)} \\ &= \bm{x}^\mathrm{T}\bm{x} + 2\bm{x}^\mathrm{T}\bm{y} + \bm{y}^\mathrm{T}\bm{y} & &\text{(展開)} \\ &= \|\bm{x}\|^2 + 2\langle \bm{x}, \bm{y} \rangle + \|\bm{y}\|^2 & &\text{(内積の定義)} \end{align} $$
$$
\begin{align}
\|\bm{x} + \bm{y}\|^2 &= (\bm{x} + \bm{y})^\mathrm{T}(\bm{x} + \bm{y})
& &\text{(ノルムの定義)} \\
&= \bm{x}^\mathrm{T}\bm{x} + 2\bm{x}^\mathrm{T}\bm{y} + \bm{y}^\mathrm{T}\bm{y}
& &\text{(展開)} \\
&= \|\bm{x}\|^2 + 2\langle \bm{x}, \bm{y} \rangle + \|\bm{y}\|^2
& &\text{(内積の定義)}
\end{align}
$$
右端に \text{...} で日本語の説明を添えることで、各変形の意図が明確になります。
複数の整列ポイントの使い方がわかりました。次に、数式番号の制御方法を解説します。
数式番号の制御
align と align*
LaTeX文書では、align 環境は各行に自動で数式番号を付けます。数式番号が不要な場合は align*(アスタリスク付き)を使います。
% 数式番号あり
\begin{align}
E &= mc^2 \\
F &= ma
\end{align}
% 数式番号なし
\begin{align*}
E &= mc^2 \\
F &= ma
\end{align*}
特定の行の番号を消す:\nonumber
align 環境で一部の行だけ番号を消したい場合は \nonumber を使います。
\begin{align}
f(x) &= x^2 + 2x + 1 \nonumber \\
&= (x + 1)^2
\end{align}
1行目には番号が付かず、2行目にだけ番号が付きます。
KaTeXでの番号
KaTeXでは数式番号の扱いがLaTeXとは異なります。ブログで使う場合は $$..$$ の中に align を書くスタイルが一般的で、この場合は数式番号は表示されません。
$$ \begin{align} E &= mc^2 \\ F &= ma \end{align} $$
KaTeXのブログ環境では、番号の有無を気にする必要はほとんどありません。
数式番号の制御を理解しました。次に、場合分け定義を書くための cases 環境を紹介します。
cases 環境:場合分け
場合分けとは
関数や式の値が条件によって変わる場合、場合分け(piecewise definition)を使います。たとえば、絶対値関数は「$x$ が0以上なら $x$、負なら $-x$」という場合分けで定義されます。
基本構文
$$ |x| = \begin{cases} x & (x \geq 0) \\ -x & (x < 0) \end{cases} $$
$$
|x| = \begin{cases}
x & (x \geq 0) \\
-x & (x < 0)
\end{cases}
$$
cases 環境は左側に大きな波括弧を自動で付け、各行を \\ で区切ります。& の左側が値、右側が条件です。
実例:ReLU関数
機械学習でよく使われるReLU(Rectified Linear Unit)関数を場合分けで書くと次のようになります。
$$ \text{ReLU}(x) = \begin{cases} x & (x > 0) \\ 0 & (x \leq 0) \end{cases} $$
$$
\text{ReLU}(x) = \begin{cases}
x & (x > 0) \\
0 & (x \leq 0)
\end{cases}
$$
実例:クロネッカーのデルタ
$$ \delta_{ij} = \begin{cases} 1 & (i = j) \\ 0 & (i \neq j) \end{cases} $$
$$
\delta_{ij} = \begin{cases}
1 & (i = j) \\
0 & (i \neq j)
\end{cases}
$$
3つ以上の場合分け
3つ以上の条件に分ける場合も同様です。
$$ \text{sgn}(x) = \begin{cases} 1 & (x > 0) \\ 0 & (x = 0) \\ -1 & (x < 0) \end{cases} $$
$$
\text{sgn}(x) = \begin{cases}
1 & (x > 0) \\
0 & (x = 0) \\
-1 & (x < 0)
\end{cases}
$$
cases 環境は条件分岐のある定義を書くときに非常に便利です。次に、数式のグルーピングに使える gathered と aligned 環境を紹介します。
gathered と aligned 環境
gathered:中央揃えのグループ
gathered 環境は、複数行の数式を中央揃えでグループ化します。大きな数式の中に複数行の式を埋め込みたいときに使います。
$$ \left.\begin{gathered} x + y = 5 \\ 2x - y = 1 \end{gathered}\right\} \quad \text{連立方程式} $$
$$
\left.\begin{gathered}
x + y = 5 \\
2x - y = 1
\end{gathered}\right\} \quad \text{連立方程式}
$$
\left. は見えない左括弧、\right\} は右波括弧です。この組み合わせで、連立方程式の右側に波括弧を付けて「これらをまとめて解く」ことを表しています。
aligned:整列されたグループ
aligned 環境は、align と同じ整列機能を持ちつつ、他の数式の中に埋め込むことができます。
$$ f(x) = \left\{\begin{aligned} x^2 &\quad (x \geq 0) \\ -x^2 &\quad (x < 0) \end{aligned}\right. $$
$$
f(x) = \left\{\begin{aligned}
x^2 &\quad (x \geq 0) \\
-x^2 &\quad (x < 0)
\end{aligned}\right.
$$
cases 環境との違いは、aligned のほうが整列のカスタマイズ性が高い点です。
align vs aligned vs cases の使い分け
| 環境 | 用途 | 特徴 |
|---|---|---|
align |
独立した複数行数式 | トップレベルで使用 |
aligned |
他の式に埋め込む複数行数式 | $$...$$ の中で使用 |
gathered |
中央揃えの複数行グループ | 整列なし |
cases |
場合分け定義 | 左に波括弧が付く |
gathered と aligned の使い方を理解しました。次に、数式間にテキストを挿入する方法を紹介します。
数式間にテキストを挿入する
\text コマンド
align 環境の中で日本語や英語のテキストを挿入するには \text{} を使います。
$$ \begin{align} x^2 - 1 &= (x + 1)(x - 1) \\ &= 0 \\ \text{したがって} \quad x &= 1 \quad \text{または} \quad x = -1 \end{align} $$
$$
\begin{align}
x^2 - 1 &= (x + 1)(x - 1) \\
&= 0 \\
\text{したがって} \quad x &= 1 \quad \text{または} \quad x = -1
\end{align}
$$
\intertext:行間にテキスト
式と式の間に説明文を入れたい場合は \intertext が便利です(LaTeXのみ)。
\begin{align}
f(x) &= x^2 + 2x + 1 \\
\intertext{ここで平方完成すると、}
&= (x + 1)^2
\end{align}
ただし、KaTeXでは \intertext がサポートされていない場合があります。その場合は align 環境をいったん閉じて、テキストを挟んでから新しい align 環境を始めましょう。
テキストの挿入方法を学んだところで、KaTeXとの互換性を確認します。
LaTeX vs KaTeX の注意点
| 環境/コマンド | KaTeX対応 | 備考 |
|---|---|---|
align |
対応 | `$$` 内で使用 | | `align*` | 対応 | — | | `aligned` | 対応 | — | | `gathered` | 対応 | — | | `cases` | 対応 | — | | `\nonumber` | 対応 | — | | `\text` | 対応 | — | | `\intertext` | 非対応の場合あり | 代替方法を使用 | | `split` | 対応 | — | | `multline` | 対応 | — | KaTeXでブログに数式を書く場合、`align` と `cases` は問題なく使えます。`\intertext` が使えない場合は、環境をいったん閉じてテキストを入れる方法で対応できます。 ## よくある間違いとTips ### 間違い1:`&` を忘れる `align` 環境で `&` を入れ忘れると、整列されません。 ```latex % NG: & がない \begin{align} f(x) = x^2 \\ = (x)(x) \end{align} % OK: & で整列 \begin{align} f(x) &= x^2 \\ &= (x)(x) \end{align} ``` ### 間違い2:`\\` の後にスペースがない `\\` の直後に `&` を書く場合、間にスペースがなくてもエラーにはなりませんが、ソースコードの可読性のために改行することを推奨します。 ### 間違い3:`equation` と `align` の混同 1行だけの数式には `equation` 環境(`$$...$$`)を使い、複数行の数式には `align` 環境を使います。1行の式に `align` を使うことは可能ですが、無駄です。 ### Tips1:行間の調整 `\\` の後に `[長さ]` を付けると、行間を調整できます。 ```latex \begin{align} f(x) &= x^2 \\[10pt] g(x) &= x^3 \end{align} ``` `[10pt]` で10ポイント分の余白を追加しています。数式が詰まりすぎる場合に使いましょう。 ### Tips2:長い式の改行 1行に収まらない長い式を途中で改行する場合は、演算子($+$, $-$, $=$など)の前で改行するのが慣例です。 $$ |
| \begin{align} | ||
| f(x) &= a_0 + a_1 x + a_2 x^2 + a_3 x^3 \ | ||
| &\quad + a_4 x^4 + a_5 x^5 + \cdots | ||
| \end{align} | ||
| $$ ```latex $$ | ||
| \begin{align} | ||
| f(x) &= a_0 + a_1 x + a_2 x^2 + a_3 x^3 \ | ||
| &\quad + a_4 x^4 + a_5 x^5 + \cdots | ||
| \end{align} | ||
| $$ | ||
| ``` |
2行目の先頭に \quad でインデントを入れると、「1行目の続きである」ことが視覚的にわかります。
まとめ
本記事では、LaTeXで複数行の数式を整列する方法を解説しました。
align環境:&で整列ポイントを指定し、\\で改行する- 複数の整列ポイント:
&を複数使って左辺と右辺を独立に揃える cases環境: 場合分け定義を波括弧付きで書くgathered/aligned: 他の式に埋め込む複数行数式のグループ\text: 数式内にテキストを挿入する
数式の整列は、導出を書くときの基本スキルです。align 環境を使いこなして、読みやすい数式を書きましょう。
次のステップとして、以下の記事も参考にしてください。
- 括弧のサイズ調整 — align内での括弧の使い方
- 数式に波括弧の注釈をつける — 導出に注釈を付ける
- 偏微分・全微分をLaTeXで書く — 導出で頻出する偏微分