読者です 読者をやめる 読者になる 読者になる

連立方程式を一番美しく書けるempheq

empheqとは?

  • empheqは連立方程式を表現するためのスタイルファイル
  • 特殊な記号を使ってもその通りに表示することが可能
  • 他にもオプションがたくさんある
  • 少なくとも自分の実行環境であるTexLive2014では標準で入っている
  • ない人はCTANなどからダウンロードしてください

    他のスタイルファイルとの違い

  • 連立方程式を表現するスタイルファイルはarray,cases,empheqなどがある

    array

    array環境は式を2段組にして1つの式として扱います.元々は連立方程式を扱うための環境ではありません. array環境で連立方程式は次のように表現します.

\begin{align}
\left\{
\begin{array}{ll}
f(x) &= x^2+3x+1 \\
f'(x) &= 2x+3
\end{array}
\right.
\end{align}

align環境を使っているのでamsmathパッケージを入れる必要があります. f:id:muscle_keisuke:20151123143909p:plain ゴリ押し感が半端ないですね.\left{で左の大きい括弧を表現していますが右に括弧はいらないので\right.とやって無理やり消しています. 数式同士の間隔も狭いです.

cases

cases環境は同名で2つあります.

casesパッケージのnumcasesとsubnumcases

式番号の付け方でnumcasesとsubnumcasesは違います. numcasesは連立してる式の一つ一つに(1),(2),(3)...
subnumcasesは(1a),(1b),(1c)...
と付けます.他は特に変わりません.なのでnumcases環境を基に説明していきます. numcases環境は引数を1つ取ります.その引数に指定した数式が連立方程式の左辺に来ます.しかし,これには問題があります.
この引数は省略できないことです.なので左辺に式が必要無い時は次のように記述する必要があります.

\begin{numcases}
{}
f(x)=x^2+3x+1 \\
f'(x)=2x+3
\end{numcases}

caseパッケージを入れる必要があります. その他の問題点もあります.それは数式を任意の位置に揃える時に発生します.連立方程式に限らずalign環境やeqnarray環境(非推奨)を使って複数の数式を並べるとき&をつけることによって数式の位置を揃えることが出来ました.numcases環境を使って数式を揃える時も同じなのですが, & を使った後に数式モードが解除されるという問題点があります.なので&を記述した後はまた$$で挟んで数式モードに戻る必要があります.

\begin{numcases}
{}
f(x)&=$x^2+3x+1$ \\
f'(x)&=$2x+3x+1$
\end{numcases}

f:id:muscle_keisuke:20151123144419p:plain

amsmathパッケージのcases環境

arrayやnumcasesよりもいい環境なのがcases環境です.式同士の間隔も適切で左辺に式を持ってくるのも簡単です.また,式の位置を揃える時も変なことになりません.次のように記述します.

\begin{align}
\begin{cases}
f(x)&=x^2+3x+1 \\
f'(x)&=2x+3
\end{cases}
\end{align}

amsmathパッケージをいれる必要があります. f:id:muscle_keisuke:20151123144738p:plain

共通の問題点

cases環境はarray環境やnumcases環境のデメリットを完全になくしています.しかし,これらの環境全てに共通して起こっている問題点があります.それは大型の数式がインラインモードでしか入らないことです(numcasesはディスプレイモードになるが&を使った後はインラインモードにしかならない).それらの問題点を全て克服したのがempheq環境です.今のところ問題点は見つかっていません.

empheq

書き方は今までの環境と少し違います.次のように記述します.

\begin{empheq}[left=\empheqlbrace]{align}
\f(x) &= x^2+3x+1 \\
\f'(x) &= 2x+3
\end{empheq}

empheqパッケージを入れる必要があります.

括弧の種類を変える

empheqには多種のオプションがあります.まず,括弧の種類を変えることができます.

コマンド 括弧の種類
\empheqlbrace {
\empheqrbrace }
\empheqlbrack [
\empheqrbrack ]
\empheqlangle <
\empheqrangle >
\empheqlparen (
\empheqrparen )
\empheqlvert |
\empheqrvert |
\empheqlVert ||
\empheqrVert ||

オプション([]内)で上記のコマンドのいずれかを指定します.左に括弧を付けたい場合はleft=hogehogeといった具合です. 連立方程式の場合は{が普通ですので[left=\empheqlbrace]と指定します.右に括弧を付けたい場合はleft=の部分をright=にするだけです.

数式を2列以上にする

連立方程式ですので数式を2行以上にできるのは当たり前ですがempheqでは数式を2列以上にできます.これは例えば条件によって式が別れる時の条件式などに使えます.以下のような例です. f:id:muscle_keisuke:20151123145150p:plain このように数式を2列以上にする場合はempheqの引数であるalignをalignat=列数とします.そして列の分かれ目で\quadコマンドを使うことで次の列を記述できます.上の画像の式は次のように書きます.

\begin{empheq}[left={|x|=\empheqlbrace}]{alignat=2}
x & \quad (x\geq0) \\
-x & \quad (otherwise)
\end{empheq}
式番号を番号以外にする

矛盾しているように聞こえますがこれは式番号に使われる(1),(2),(3)などを(*),(※)とかに変更できるということです. 次のように記述します.

\begin{empheq}[left={|x|=\empheqlbrace}]{alignat=2}
x & \quad (x\geq0) \tag{*} \\
-x & \quad (otherwise) \tag{}
\end{empheq}

ちなみに式番号を省略したい場合は引数のalignやalignat=2の部分をalignやalignat=2とすれば省略できます. align単体で使う時と一緒ですね.

式をボックスで囲む

これは使うことあるのかわからないですが一応紹介しておきます. left=やright=を指定するオプション内でbox=hogehogeとすることで任意のボックスで式を囲むことができます.

\begin{empheq}[box=\fbox,left={|x|=\empheqlbrace}]{alignat=2}
x & \quad (x\geq0) \tag{*} \\
-x & \quad (otherwise) \tag{}
\end{empheq}

\fboxで角ばったボックスで囲めます. 左辺や左括弧を囲みたくない場合はbox=の部分をinnerbox=とします. 自分で定義したボックスで囲むことも可能です.

\definecolor{myblue}{rgb}{.8, .8, 1}
\newcommand*\mybluebox[1]{%
\colorbox{myblue}{\hspace{1em}#1\hspace{1em}}}
\begin{empheq}[box=\mybluebox,left={|x|=\empheqlbrace}]{alignat=2}
x & \quad (x\geq0) \tag{*} \\
-x & \quad (otherwise) \tag{}
\end{empheq}

f:id:muscle_keisuke:20151123145630p:plain

比較

今まで紹介した環境を比較してみます.

f:id:muscle_keisuke:20151123213849p:plain