multiple line - yarakos95/LaTeX-for-math GitHub Wiki
equation+split で出来る.あたりまえ体操を踊りたくなるが,あまり考えたことがなかった.eqnarray 環境を使いたい人もこのように書くと良いのだろう.
\begin{equation}
\begin{split}
(x+1)^2
&= (x+1)(x+1) \\
&= x^2+2x+1
\end{split}
\end{equation}
split 環境はsplit が入る数式環境の仕様に依存しているので,equation 環境に入れた場合には1つの式番号で出力される.
たとえば,以下のような左辺が長い数式の場合,右辺は左辺より少し右にずらしていた方が自然である.
\begin{align}
&\framebox[10cm][c]{ Long Left Hand Side } \\
& = \framebox[6cm][c]{ Right Hand Side } \\
& \leq \dots
\end{align}
右辺を少し右にずらすには,&
の後に\qquad
などの空白を挿入することで可能にするが,改行のたびに挿入する必要があり面倒である.
そこで,\MoveEqLeft
コマンドを使おう.(mathtools §3.4.4参照)
これによって,右辺を右にずらすことが出来る.[^moveeqleft]
[^moveeqleft]: 実はこれは少し嘘である.本当は,1行目の数式がアンパサンドの整列から左にずれるようになっている.コマンド名が\MoveEqRight
でないのはこのためである.
\begin{align}
\MoveEqLeft % <-- 今回の主役!!
\framebox[10cm][c]{ Long Left Hand Side } \\
& = \framebox[6cm][c]{ Right Hand Side } \\
& \leq \dots
\end{align}
デフォルトでは左から2em だけ右にずらすようになっている.\MoveEqLeft[1]
などとすれば,1em に変更することも可能である.
右辺の途中で改行する場合には,以下のようにするとよい.[^mathtoolsoffialmoveeqleft]
[^mathtoolsoffialmoveeqleft]: 公式にはsplit 環境を用いずに右辺の式を途中改行していたが,式番号を付与することを考えるとsplit 環境を用いた方が有用だろうと思われる.
\begin{align}
\MoveEqLeft[3] % [3] とすることを公式で推奨されていた
\framebox[10cm][c]{Long Left Hand Side} \\
\begin{split}
= {} & \framebox[8cm][c]{ Right Hand Side 1st part } \\ % "=" と "&" の順序注意
& + \framebox[6cm][c]{ Right Hand Side 2nd part }
\end{split}\\
= {} & \framebox[8cm][c]{ Right Hand Side }
% "{}" を挿入しておかないと "=" と数式の間が詰まるので注意.
\end{align}
これと併せて「すぐに忘れるLaTeX数式のインデントまとめ - Qiita」も参照すると良いだろう.
また,これに関連して拙文「autobreak を使いこなす - Qiita」を紹介しておく.実は,上の記事を書いた人がautobreak パッケージの作成者でした.(\MoveEqLeft
なんて誰も紹介していないだろ?とググっていたら出てきました.)
amsmath パッケージが使用されているとき,数式の行間で改ページされることを通常は許可していない.ディスプレイ数式の途中で改ページすることは著者の責任で行うべきと言う思想らしい.
数式途中で改ページをさせる方法が2つあるので紹介する.
特定の数式中での改ページを許す場合,\displaybreak
を使う.
このコマンドには引数によってその改ページへのレベルを0~4で指定することができ,“ 引数の指定がない ” または “ 引数が4 ” のとき強制的に改ページされる.[^pagebreak]
[^pagebreak]: \pagebreak
の引数と同様らしい.筆者は使ったことがないのでよく分からない.
\begin{align}
f(x)
&=ax^2+bx+c \\
&=a\left(x^2+\frac{b}{a}x\right)+c \displaybreak \\ % ここで強制改ページ
&=a\left{\left(x+\frac{b}{2a}\right)^2-\frac{b^2}{4a^2}\right}+c \\
&=a\left(x+\frac{b}{a}\right)^2-\frac{b^2}{4a}+c
\end{align}
改行\\
の直前に配置することが望ましいようだ.
改ページをどの場所であっても複数行の式の途中で行って良い場合は,\allowdisplaybreaks[引数]
コマンドをプリアンブルで使用すると良いだろう.[^allowdisplaybreaks]
引数には1~4を指定することができ,[1]
は改ページを許可するが,出来るだけ避けたいことを意味するようだ.数字が増えれば許容度が増える.
また,\allowdisplaybreaks
を有効にしていても,改ページをさせたくない複数行ある数式の改行で\\*
としておけばその行での改ページを禁止させることが出来るようだ.
[^allowdisplaybreaks]: split, aligned, gathered, alignedat などは改ページが出来ない数式環境のようだ.これは,内容を分割することのできないボックスで囲んでいることに起因するらしい.
べらぼうに長い数式で紙面を超えてしまう場合には有用な手だてなように思われる. しかしながら,オフィシャルな文章ではあまり数式途中で改ページを挟むようなものを見たことがない.これに関しては私見ではあるが,複数行に渡る数式の途中で改ページするのはあまり望ましくないのではないかと思う. まとめノートなどの私用で使う分には有用かもしれない.