LaTeX の場合分け:cases・条件の整列・数式番号の付け方
LaTeX で場合分けを書くには、amsmath パッケージの cases 環境を数式モード内で使います。各行に値を書き、& で条件を区切り、\\ で次の分岐に進みます。全体を equation に入れると、定義に数式番号が1つ付きます。
まずはコンパイルできる例から
次の内容を main.tex として保存し、pdfLaTeX でコンパイルしてください。この article 文書に必要なのは amsmath だけです。同名の cases パッケージを追加する必要はありません。
\documentclass[a4paper,11pt]{article}\usepackage{amsmath}\begin{document}\begin{equation}\label{eq:absolute} |x| = \begin{cases} x, & \text{if } x \ge 0, \\ -x, & \text{if } x < 0. \end{cases}\end{equation}See equation~\eqref{eq:absolute}.\end{document}PDF には左の波括弧、値と条件が並ぶ2行、定義全体の番号が表示されます。参照が解決すると、本文の番号も一致します。x = 0 は第1分岐、負数は第2分岐に属し、実数の範囲に抜けや重複はありません。
場合分けの構造図。左列が値、右列が条件です。境界点 0 は第1行に含めます。
&、\\ と条件の文章
&は左揃えの2列を区切ります。ソースのインデント用空白では、PDF の列は揃いません。\\で次の分岐を始めます。通常は最終行には付けません。ソース上で改行するだけでは数式の行は変わりません。\text{if }は英単語を通常の文字で組みます。数式条件との間隔を空けるため、波括弧内の空白を残します。残りの場合には\text{otherwise}を使います。- 左の波括弧は
casesが用意するため、\left\{の追加は不要です。\[...\]やequationなどの数式モード内に置いてください。複数行の定義は独立した数式にすると読みやすくなります。
次の階段関数では、実数の定義域における otherwise は、零を含む x <= 0 を表します。
\[s(x)=\begin{cases} 1, & \text{if } x > 0, \\ 0, & \text{otherwise}.\end{cases}\]条件内の数式は数式モードに保ちます。if を数式として入力すると斜体の変数になり、通常の空白も失われます。逆に条件全体を通常の文章として入力すると、数学記号が正しく組まれません。後述の dcases* は右列の規則が異なります。
論文での例:Huber 損失と境界の確認
r を実数の残差、しきい値を δ > 0 とします。Huber 損失は、小さな残差には二次式、大きな残差には絶対残差についての一次式を使います。
\[L_{\delta}(r) =\begin{cases} \frac{1}{2}r^2, & \text{if } |r| \le \delta, \\ \delta\left(|r|-\frac{1}{2}\delta\right), & \text{if } |r| > \delta.\end{cases}\]第1分岐は |r| = δ を含み、第2分岐は |r| > δ にだけ適用されます。境界では両方の式が δ²/2 になりますが、条件上は第1分岐にだけ属します。δ = 1 のとき、r = 0、1、2 に対する損失はそれぞれ 0、0.5、1.5 です。
例を変更する際は、定義域とすべての境界を確認してください。両側を等号なしの不等式にすると境界が抜け、両側に等号を付けると重複することがあります。コンパイルの成功だけでは、数学的な条件は検証できません。
分数が小さいときは dcases
通常の cases は \textstyle で組まれます。外側が独立数式でも、内側の \frac は小さくなります。分数、総和、積分を大きく表示するには、プリアンブルの \usepackage{amsmath} を \usepackage{mathtools} に置き換え、dcases を使います。mathtools は amsmath を自動的に読み込みます。
mathtools を読み込んだ文書の本文に、次の比較例を入れてください。
\[g(x)=\begin{cases} \frac{1}{1+x^2}, & x \ge 0, \\ 0, & x < 0.\end{cases}\qquadg(x)=\begin{dcases} \frac{1}{1+x^2}, & x \ge 0, \\ 0, & x < 0.\end{dcases}\]
組版スタイルの比較図。定義と条件は同じで、dcases では分数が大きくなり、行間も広がります。実際の出力は使用するテンプレートで確認してください。
1つの分数だけを大きくするなら、cases 内の \frac を \dfrac に変更できます。これは個々の分数を変えますが、dcases は分岐の式をディスプレイスタイルにします。特に狭い段組では、行間と幅も確認して選びます。
dcases* の右列は通常の文章
dcases の条件列は数式モードなので、英単語には \text{...} が必要です。dcases* の右列は通常の文章として組まれるため、数学的な条件を $...$ に入れます。
\[g(x)=\begin{dcases*} \frac{1}{1+x^2}, & if $x \ge 0$, \\ 0, & otherwise.\end{dcases*}\]どちらも mathtools の環境です。環境名を変更するときは右列の書き方も変更してください。
全体または各分岐に番号を付ける
| 目的 | 書き方 | パッケージと入れ子の規則 |
|---|---|---|
| 番号なし | \[...\] 内の cases | amsmath |
| 定義全体に1つの番号 | equation 内の cases | \label と \eqref で参照 |
| 分岐ごとに番号 | numcases | cases パッケージを追加。環境自体が独立数式 |
| 同一グループの枝番号 | subnumcases | cases パッケージ。(1a)、(1b) など |
通常の関数定義では番号は1つで十分です。分岐を個別に参照する場合は、プリアンブルに \usepackage{amsmath} と \usepackage{cases} を指定し、本文に次を入れます。
\begin{numcases}{h(x)=} x, & if $x \ge 0$ \label{eq:positive} \\ -x, & if $x < 0$ \label{eq:negative}\end{numcases}See equations~\eqref{eq:positive} and~\eqref{eq:negative}.{h(x)=} は波括弧の左側です。右列は既定では文章なので、数学的な条件は $...$ に入れます。numcases をさらに equation や \[...\] で囲んではいけません。各行の \label がその行の番号を参照します。枝番号が必要なら subnumcases に変更し、参照を確認してください。
詳しくは数式番号と相互参照を参照してください。
よくある症状と修正箇所
| 症状 | 確認する点 | 修正方法 |
|---|---|---|
| 数式モードや整列のエラー | 外側の数式環境と amsmath | 完全な例の環境とパッケージを確認 |
Environment dcases undefined | amsmath だけを読み込んでいないか | mathtools を読み込む |
| 値と条件がつながる | & の不足 | 各行を1つの & で区切る |
| 分岐が1行になる | \\ の不足 | 分岐間にバックスラッシュを2つ入れる |
Extra alignment tab など | & の過剰 | 通常の cases は2列にする |
| 英単語が斜体、空白がない | 単語を数式として入力していないか | 通常の cases では \text{...} を使う |
| 左の波括弧が2つある | 手動の \left\{ | cases が作る括弧だけを残す |
参照が ?? | ラベル、番号付き環境、コンパイル回数 | \label を確認して再コンパイルし、ログを見る |
同じ症状にも複数の原因があります。ログの最初のエラーと周辺のソースから確認してください。
ローカル環境と EasyLaTeX で確認する
TeX Live / MiKTeX では、main.tex があるディレクトリで次を実行します。
pdflatex -interaction=nonstopmode -halt-on-error main.texpdflatex -interaction=nonstopmode -halt-on-error main.texmain.log でエラー、未解決の参照、Overfull \hbox を確認します。新しい main.pdf を開き、括弧、条件列、分数、番号を点検してください。Huber 損失に δ = 1 の3つの残差を代入すれば、係数の転記ミスも確認できます。
EasyLaTeX では例をプロジェクトのメインファイルに入れ、メインファイルの選択を確認します。この英語の article 例には pdfLaTeX を選んでください。コンパイル完了を待ち、問題があれば Bug パネルと Original Log を確認します。Agent に関係するソースとログを渡して原因の調査を依頼する場合も、変更を確認してから再コンパイルします。既存の日本語文書や投稿用テンプレートでは、適切なエンジンと設定を保ってください。
完全な最小文書とほかの5つのコード例は、TeXLive.net の pdfLaTeX でコンパイルし、ログと PDF を確認済みです。製品のコンパイラや特定の学会誌テンプレートでの実測ではありません。原稿に組み込んだ後も、パッケージの互換性と最新 PDF を確認してください。
関連項目:上付き・下付き、分数、括弧、行列、数式の改行、コンパイルエラーの調べ方。
参考資料
- amsmath ユーザーガイド:数式環境、
cases、\text、テキストスタイル。 - mathtools 公式文書:
dcasesと星付き環境。 - cases パッケージ文書:
numcases、subnumcases、条件列の構文。