LaTeX の数式を改行するには?split・aligned・align・multline の選び方

ブログEasyLaTeX公開日

LaTeX の数式を改行するには、amsmath を読み込み、複数行に対応した環境を使います。1つの数式を分けて番号を1つ付けるなら equation と split、各行に番号を付けるなら align、位置を揃える必要がない長い式なら multline を選びます。通常の equation に \\ を加えるだけでは、意図した複数行の組版になりません。

コードはローカルの TeX Live・MiKTeX と EasyLaTeX で共通です。例は article、pdfLaTeX、英語の本文を使うため、日本語フォントの設定は不要です。日本語論文や投稿用テンプレートでは、元の文書クラスとエンジンを維持し、必要な数式部分だけを移してください。

コンパイルできる最小例

main.tex として保存します。二乗誤差と2つの正則化項を2行に分け、目的関数全体に番号を1つ付けます。

LaTeX
\documentclass[a4paper,11pt]{article}\usepackage{amsmath}\begin{document}\begin{equation}\begin{split}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\     &\quad + \lambda w^2 + \mu(w-w_0)^2.\end{split}\label{eq:objective}\end{equation}See Equation~\eqref{eq:objective}.\end{document}

n は正の整数、w、w_0、x_i、y_i は実数、\lambda と \mu は非負とします。2行目は加算の続きです。& は位置揃えの基準、\\ は行の区切りです。ソース内の通常の改行は、PDF 内の数式の改行にはなりません。

位置揃えと番号から環境を選ぶ

環境の選択図。まず番号の数を決め、次に位置揃えの要否を考えます。線は数式の内容を表しています。

目的環境番号と配置
1つの長い式を揃えて改行equation + split外側から番号を1つ付与
大きな数式の中に配置する整列ブロックaligned数式モード内で使用し、外側で番号を制御
複数の式や導出の各行を参照align各行に番号。単独で使用
共通の整列位置がない長い式multline全体に番号を1つ。単独で使用
番号を付けないalign*、multline*、または \[...\] 内の aligned揃え方に合わせて選択

ここでの split は各行に & を1つ使います。aligned は複数組の整列列を作れ、外側の括弧とも組み合わせられます。split は表示数式全体を占める1つの分割式に向きます。どちらも改行位置の自動選択はしません。

split と aligned:全体に番号を1つ

最小例は split です。同じ目的関数を aligned で書く場合は次の形になります。以降の断片は既存の本文内に置きます。

LaTeX
\begin{equation}\begin{aligned}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\     &\quad + \lambda w^2 + \mu(w-w_0)^2.\end{aligned}\label{eq:aligned}\end{equation}

aligned 自体は番号を付けません。equation 内では番号が1つ、\[...\] 内では番号なしです。aligned* や split* ではなく、外側の環境で制御します。

ソースと組版の対応図。D(w) はデータ誤差項、R(w) は2つの正則化項の和です。整列位置と行区切りを示しています。

\quad は字下げを加えます。行頭の加算記号の二項演算子としての間隔を保つには &\quad {}+ ... とも書けます。ソースに空白を並べても、整列位置は指定できません。

align:目的関数と導関数を別々に参照する

w に関する微分で、x_i、y_i、w_0、\lambda、\mu を定数として扱います。目的関数と導関数にそれぞれ番号を付けます。

LaTeX
\begin{align}J(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2       + \lambda w^2 + \mu(w-w_0)^2       \label{eq:loss} \\J'(w) &= \frac{2}{n}\sum_{i=1}^{n}x_i(w x_i-y_i)        + 2\lambda w + 2\mu(w-w_0).        \label{eq:gradient}\end{align}

本文では \eqref{eq:loss} と \eqref{eq:gradient} を使います。ここでは各行が別の等式です。単なる和の続きに等号を追加すると意味が変わるので注意してください。

すべて番号なしにする場合は align*、特定の行だけ省く場合はその行に \notag を使います。

LaTeX
\begin{align}(x+1)^2 &= x^2+2x+1 \notag \\        &= x(x+2)+1. \label{eq:expansion}\end{align}

ラベルは番号を残した行に置きます。参照が ?? ならローカルでは再コンパイルし、ラベルの重複も確認します。プラットフォームでは現在のコンパイル完了後に参照を確認します。

multline:位置を揃えずに長い式を分ける

同じ目的関数を、& を使わずに書けます。

LaTeX
\begin{multline}J(w) = \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2 \\       + \lambda w^2 + \mu(w-w_0)^2.\label{eq:multline}\end{multline}

この例の標準の右側番号では、先頭行は左寄せ、最終行は右寄せで、端には所定の余白があります。中間行は中央に置かれ、番号は最終行の右側です。文書クラスや amsmath のオプションで配置は変わります。番号なしは multline*。equation や \[...\] の中には入れません。

改行できないときの確認事項

症状・ログ対処
Environment align undefined主ファイルで amsmath を読み込む。ローカルではインストールも確認
equation 内で \\ が効かないsplit・aligned を加えるか独立の align・multline に変更
Erroneous nesting of equation structuresequation 内に align を入れていないか確認
Misplaced alignment tab character && を整列環境内で使う。multline には書かない
括弧や Missing \right. のエラー\left と \right が行境界をまたいでいないか確認
コンパイル後も式がはみ出す分割位置を変更し、Overfull \hbox と PDF を確認

この入れ子は誤りです。

LaTeX
% Incorrect nesting\begin{equation}\begin{align}a &= b \\  &= c\end{align}\end{equation}

番号を1つにするなら、次のように修正します。

LaTeX
\begin{equation}\begin{split}a &= b \\  &= c\end{split}\end{equation}

\left( と \right) は整列環境の行をまたいで対応させられません。固定サイズの括弧なら次のように書けます。

LaTeX
\[\begin{aligned}F(x) &= \Bigl(a+b+c \\     &\qquad +d+e\Bigr).\end{aligned}\]

a から e は加算する項です。数式環境内に空白段落を入れず、最終行の余分な \\ も通常は省きます。

2段組では各行を短くする

投稿テンプレートでは1段分の幅に収めます。誤差項と正則化項に名前を付けると、元の目的関数を保ったまま行を短くできます。

LaTeX
\begin{equation}\begin{split}J(w) &= D(w)+R(w), \\D(w) &= \frac{1}{n}\sum_{i=1}^{n}(w x_i-y_i)^2, \\R(w) &= \lambda w^2+\mu(w-w_0)^2.\end{split}\label{eq:compact}\end{equation}

実際のテンプレートで幅、番号、括弧を確認します。\resizebox による全体の縮小より、数学的なまとまりに沿った分割を優先します。段抜き数式は出版社の指定に従ってください。

ローカルと EasyLaTeX で確認する

コンパイル手順の模式図。どちらも最新 PDF の余白と番号を確認します。

ローカルでは完全例を main.tex に保存し、そのディレクトリで次のコマンドを2回実行します。エディターのビルドを使う場合もルートファイルとエンジンを確認してください。

Shell
pdflatex -interaction=nonstopmode -halt-on-error main.tex

main.log の最初のエラーから修正し、はみ出しの警告も調べます。最新の main.pdf で両行、番号1つ、括弧付きの参照を確認します。オンラインと結果が違う場合はクラス、エンジン、パッケージの版、段幅を比較します。

EasyLaTeX の空のテストプロジェクトでは main.tex を作成し、上部の主ファイル選択で指定します。エディター設定で pdfLaTeX を選び、コンパイルします。既存論文では元の主ファイル、エンジン、テンプレートを維持してください。コンパイラーはプロジェクト内でユーザーごとに設定されるため、共同編集者も各自確認します。

現在の処理が終わったら PDF を確認し、エラーは Bug の Original Log で調べます。AI Fix から Agent に依頼でき、Chat & Agent では次のように範囲を指定できます。

現在の目的関数を2行に分け、番号1つと既存ラベルを維持してください。全項、係数、括弧、符号を保ち、主ファイルと既存パッケージを確認してから該当の数式ブロックだけを変更してください。コンパイル後に残るエラーやはみ出しを報告してください。

ソースの差分と現在のコンパイル結果を確認します。古い PDF の表示は最新ビルドの成功を意味しません。数学的な内容も元の式と照合してから、PDF または LaTeX プロジェクトをダウンロードすると、投稿やローカルでの編集に使えます。

関連:複数行の数式と位置揃え、番号と参照、EasyLaTeX の使い方、コンパイルエラー。

参考文献