LaTeX には、地の文とは別に「数式モード」という特別な状態があります。数式は専用のフォント・字間・組版規則で組まれるため、x ひとつ取っても本文中の x とは別物として扱われます。このページでは、数式モードに入る二つの入口——行のなかに収める インライン数式 と、独立した行に組む ディスプレイ数式——を整理し、モードのなかで効いている規則(空白が無視される、文字が変数になる、関数名は専用命令で組む)を見ていきます。
数式モードとは
LaTeX は文章を組むとき、いくつかの モード(状態) を切り替えています。ふだん本文を読み書きしている状態が テキストモード、数式を組む状態が 数式モード です。両者は単に見た目が違うだけでなく、内部の組版規則そのものが入れ替わります。数式モードでは、文字は数学用のイタリック体(数式イタリック)になり、字間はアルファベットの並びとしてではなく数式の構造から計算され、+ や = のような記号の前後には演算子・関係子としての適切な空きが自動で入ります。
なぜ専用のモードが要るのでしょうか。数学の組版には、ふつうの文章にはない約束ごとが山ほどあるからです。変数は斜体、定数や関数名は立体、添字は小さく、分数や根号は字の高さを越えて組まれ、記号の間隔にも細かな決まりがあります。これらを一つひとつ手で指定するのは現実的ではありません。そこで「ここからは数式」と宣言してしまえば、あとは LaTeX が数学の流儀でまとめて面倒を見てくれる——これが数式モードの考え方です。本文に $x$ と書けば、たとえ前後が日本語でも、その x だけが数学の変数として正しく組まれます。
数式モードには大きく二つの形があります。文章の流れのなかに数式を埋め込む インライン数式(本文数式) と、段落から切り離して独立した行に大きく組む ディスプレイ数式(別行立て数式) です。同じ数式でも、どちらで組むかによって記号の大きさや配置が変わります。順に見ていきましょう。
インライン数式
本文の途中に数式を差し込むのがインライン数式です。LaTeX が推奨する書き方は \( と \) で挟む形で、TeX 由来の短い書き方として $ … $ も広く使われます。どちらも結果は同じで、好みの問題とされています(\begin{math} … \end{math} という環境形も同じ働きですが、長くなるためインラインではあまり使いません)。
アインシュタインの関係式は \( E = mc^2 \) である。
The mass--energy relation is $E = mc^2$.いずれも、本文の行の高さを大きく崩さないよう、数式が控えめな大きさで行のなかに収まります。E・m・c は変数として斜体になり、2 は上付きの指数として小さく組まれます。なお $ は開きと閉じが同じ記号なので、閉じ忘れると以降の地の文がまるごと数式モードに飲み込まれ、原因の分かりにくいエラーになりがちです。\( … \) は開き・閉じが区別でき、対応を取り違えにくい利点があります。
インライン数式は行の高さの制約を受けるため、分数や総和などは詰めて組まれます。詳しくは後述の「インラインとディスプレイのスタイル差」で扱います。
ディスプレイ数式
重要な数式や大きな数式は、段落から切り離して独立した行に組みます。これがディスプレイ数式(別行立て)です。LaTeX 推奨の書き方は \[ … \] で、これは **displaymath 環境**(\begin{displaymath} … \end{displaymath})とまったく同じ働きの省略形です。いずれも 式番号は付きません。標準では中央に組まれ、fleqn オプションを文書全体に与えると左寄せになります。
次の等式が成り立つ。
\[
\int_0^1 x^2 \, dx = \frac{1}{3}
\]
これは基本的な積分である。これは、積分記号が字の高さを越えて大きく組まれ、0 から 1 までの範囲が積分記号の下と上に付き、分数 1/3 が横線を挟んで縦に大きく組まれた数式が、独立した行の中央に置かれて出力されます。前後の本文とは上下に少し空きが入ります。
式に番号を付けて後から参照したいときは、\[ … \] ではなく **equation 環境** を使います。こちらは別行立てで組んだうえに、右端(横書きの既定)に通し番号を自動で振ります。\label{…} と \ref{…} を組み合わせれば「式 (3) より」のように番号を本文から参照できます(番号や整列の詳しい扱いは別ページに譲ります)。
\begin{equation}
e^{i\pi} + 1 = 0
\end{equation}番号を付けたくない別行立てなら \[ … \] のほか、amsmath パッケージの equation* 環境も使えます(こちらは displaymath と同等で、amsmath の各種機能を併用できます)。次の表に、別行立ての主な書き方を整理します。
| 書き方 | 番号 | 備考 |
|---|---|---|
\[ … \] | なし | LaTeX 推奨。displaymath の省略形 |
displaymath | なし | \[ \] と同一の環境形 |
equation | あり | 通し番号を自動付与。\label で参照可 |
equation* | なし | amsmath が必要。displaymath と同等 |
$$ … $$ | なし | 非推奨(次節参照) |
`$$ … $$` を使わない理由
別行立ての数式を $$ … $$ で囲む書き方を見かけることがありますが、これは plain TeX 時代の書き方 で、LaTeX では非推奨です。見た目は \[ … \] と似ていても、LaTeX が公式に対応している記法ではなく、いくつかの実害があります。
\[…\]が入れる 適切な上下の空き が得られず、別行立て前後の縦方向のスペーシングが変わってしまう。- 文書全体を左寄せにする **
fleqnオプションが効かない**。 - LaTeX が行う 整合性チェック(開き・閉じの対応確認など)が働かない。
\[…\]は再定義できるマクロなので、用途に応じて挙動を差し替えられるが、$$にはその柔軟性がない。
AMS の "Short Math Guide for LaTeX" でも $$ … $$ の使用は強く戒められています。別行立てには \[ … \](番号なし)か equation 環境(番号あり)を使いましょう。
インラインとディスプレイのスタイル差
同じ数式でも、インラインで組むかディスプレイで組むかでスタイル(組み方)が変わります。インライン数式は行の高さを大きく崩さないよう テキストスタイル で控えめに、ディスプレイ数式はゆとりをもって ディスプレイスタイル で組まれます。違いがとくに目立つのは、総和・積分の 範囲(極限)の位置、そして 分数や添字の大きさ です。
- 総和・積分の範囲: ディスプレイスタイルでは
\sumの範囲が記号の 上下 に付くのに対し、テキストスタイル(インライン)では記号の 右脇 に付く。\intの積分範囲も同様に位置が変わる。 - 分数:
\fracはディスプレイスタイルで大きく、テキストスタイルでは小さく詰めて組まれる。 - 上付き・下付き: 添字の大きさや位置もスタイルに応じて変わり、入れ子になるほど段階的に小さくなる。
このスタイルは命令で上書きできます。\displaystyle は「独立した行で組むときのスタイル」、\textstyle は「本文中で組むときのスタイル」を、それぞれその場に適用します。さらに添字用の \scriptstyle、二段目の添字用の \scriptscriptstyle があり、この順に文字は小さくなります。たとえば本文中の総和の範囲を上下に出したいときは、インライン数式のなかで \displaystyle を使います。
インライン: $\sum_{i=1}^{n} i$ では範囲が右脇に付く。
強制ディスプレイ: $\displaystyle\sum_{i=1}^{n} i$ では範囲が上下に付く。上の例では、前者は総和記号の右脇に i=1 と n が小さく付き、後者は同じ範囲が総和記号の真下と真上に付きます。ただし \displaystyle を本文中で多用すると行間が広がりやすいので、必要な箇所にとどめるのが無難です。
数式モードのなかの規則
数式モードに入ると、地の文とは違う三つの規則が効きます。これらを知らないと「空白を入れたのに詰まる」「英単語が斜体でバラバラになる」と戸惑うことになります。
第一に、ソースに打った空白は無視されます。数式中の字間はすべて LaTeX が数式の構造から決めるためで、a+b と書いても a + b と書いても出力は同じです。意図的に空きを入れたいときは \,(細い空き)や \quad・\qquad(広い空き)といった専用命令を使います。改行も同様に無視されるので、ソースを読みやすく折り返してもかまいません。
第二に、英字はすべて変数名とみなされ、数式イタリックで組まれます。だから数式中に area と書くと、「面積」という単語ではなく a・r・e・a という四つの変数の積として、字間も変数の並びとして組まれてしまいます。
第三に、数式のなかに ふつうの語句(立体・正しい字間)を入れたいときは専用命令を使います。amsmath パッケージの \text{…} が標準で、なかに書いた文字列を本文と同じ書体・字間で組みます。amsmath を使わない場合は \mbox{…} でも同様のことができますが、添字のなかでサイズが追従しないなどの問題があり、名前も用途を表しません。
\[
V = \frac{4}{3}\pi r^3 \quad \text{(半径 $r$ の球)}
\]この例では、球の体積の式の右に \quad の空きを置き、\text{…} のなかの「(半径 r の球)」が立体の本文書体で組まれます。\text{…} のなかでさらに $r$ と書けば、その部分だけ数式に戻せる点にも注目してください。
演算子と関数名
前節の規則から、sin x とそのまま打つと s・i・n という三つの変数の積に見えてしまうことが分かります。\sin のように 専用の命令 を使うのが正解です。LaTeX には、よく使う関数・作用素の名前があらかじめ定義されており、いずれも 立体(ローマン体) で、前後に適切な空きを伴って組まれます。
- 三角・双曲線:
\sin\cos\tan\cot\sec\csc、\sinh\cosh\tanh\coth、逆関数\arcsin\arccos\arctan。 - 対数・指数:
\log\ln\lg\exp。 - 極限・上下限:
\lim\limsup\liminf\sup\inf\max\min。 - 代数ほか:
\arg\det\dim\gcd\ker\hom\deg\Pr、剰余の\bmod\pmod。
これらの一部(\lim \max \sup など)は、ディスプレイスタイルで下付き(添字)を 真下 に置きます。たとえば \lim_{n\to\infty} は、別行立てでは lim の真下に n→∞ が組まれます(インラインでは右下に付きます)。
\[
\lim_{n \to \infty} \left(1 + \frac{1}{n}\right)^{n} = e,
\qquad \sin^2\theta + \cos^2\theta = 1.
\]一覧にない関数名を立体で組みたいときは、amsmath パッケージの \operatorname{…} を使います。たとえば \operatorname{rank} A と書けば rank が立体・適切な空きで組まれます。同じ作用素を何度も使うなら、プリアンブルで \DeclareMathOperator{\rank}{rank} と定義しておくと、本文では \rank と書けます。\lim のように添字を真下に置きたい作用素は、星付きの \DeclareMathOperator*{\argmax}{arg\,max} で定義します。