amsmath / AMSFonts

本格的に数学を組むなら、まず読み込むべきパッケージが amsmath です。アメリカ数学会(AMS)が整備した数式組版の事実上の標準で、別行立ての整列環境から細かな空き調整まで、LaTeX 標準の数式機能を大きく補強します。このページでは、整列環境そのものの使い方(別ページに譲ります)ではなく、なぜ amsmath を入れるのか、そして環境をまたいで効く横断的な命令——\text\operatorname\DeclareMathOperator\intertext\substack\numberwithin——を整理します。あわせて、黒板太字やフラクトゥール、無数の追加記号をもたらす相棒 amssymb / AMSFonts、定理環境の amsthm も紹介します。

amsmath とは

amsmath は、アメリカ数学会(American Mathematical Society, AMS)が自誌の組版のために育ててきた数式パッケージです。LaTeX 標準の数式機能は最小限で、複数行にわたる数式の整列や、式番号の細かな制御、関数名の正しい組版などには手が届きません。amsmath はこうした不足をまとめて補い、いまでは数学・物理系の文書では 事実上必須 とされています。読み込みはプリアンブルに一行書くだけです。

latex
\usepackage{amsmath}

amsmath は単体のパッケージというより、いくつかの小さなパッケージを束ねた集合体です。公式の User’s Guide が明記するとおり、amsmath は amstext(数式中の文章を組む \text)、amsopn(作用素を定義する \DeclareMathOperator ほか)、amsbsy(数式の太字 \boldsymbol)を 取り込んで います。つまり \usepackage{amsmath} の一行で、これらの機能もまとめて使えるようになります。

amsmath が提供する機能のうち、最も目立つのは 複数行の数式を整列して組む環境 です。aligngathermultlinesplitalignat、そして場合分けの cases などがそれにあたりますが、これらは分量が多いので別ページ「別行立て・整列・番号付き数式」で扱います。ここでは名前を挙げるにとどめ、本ページでは どの環境のなかでも使える横断的な命令 に焦点を当てます。

amssymb と AMSFonts

amsmath と対になるのが、記号とフォントを供給する amssymb(AMSFonts の一部)です。両者は役割が違います。amsmath は 組版の仕組み(整列・空き・番号)を、amssymb は 書ける記号と書体 を増やします。amssymb はプリアンブルでこう読み込みます。

latex
\usepackage{amssymb}

amssymb は、AMS の記号フォント msam・msbm に含まれるすべての記号を定義し、標準の LaTeX にはない 数百の追加記号 を使えるようにします。たとえば \leqslant\geqslant(斜めの不等号)、\nleq\subsetneq(否定・真部分集合)、\therefore\because(ゆえに・なぜならば)、\square\blacksquare\varnothing(空集合の別字体)などが代表例です。amssymb は内部で amsfonts を読み込むので、amsfonts を別途指定する必要はありません。

amssymb(より正確には AMSFonts)はさらに、数式用のアルファベットを二つ増やします。黒板太字\mathbb{...} と、フラクトゥール(ドイツ文字)\mathfrak{...} です。\mathbb{R}\mathbb{C}\mathbb{Z} はそれぞれ実数体・複素数体・整数環を表す中抜きの太字 R・C・Z になります。ただし 黒板太字は大文字だけ で、小文字や数字はありません。フラクトゥールの方は大文字・小文字ともにそろっており、\mathfrak{g} でリー環の g、\mathfrak{p} で素イデアルの p のように使います。

latex
\[
  \mathbb{R} \subset \mathbb{C}, \qquad
  \mathfrak{g} = \operatorname{Lie}(G)
\]

この例は、実数体 R が複素数体 C に含まれることを中抜き太字で示し、続けてリー群 G のリー環をフラクトゥールの g で書いたものです。なお \mathbb\mathfrak は AMSFonts の機能なので、記号は要らずフォントだけ欲しいときは \usepackage{amsfonts} でも足りますが、ふつうは記号も合わせて使うため amssymb を読み込んでおけば確実です。

数式中の文章 — `\text`

数式モードでは英字がすべて変数とみなされるため、area と打てば四つの変数の積になってしまいます。数式のなかに ふつうの語句を立体・正しい字間で 入れたいときは、amsmath(正確には取り込まれた amstext)の \text{...} を使います。中に書いた文字列は、本文と同じ書体・字間で組まれます。

\text の利点は サイズに追従 することです。古くからある \mbox{...} も数式中に立体の文章を入れられますが、添字や上付きのなかでも本文サイズのまま組まれてしまい、まわりの小さな文字と釣り合いません。\text は添字のなかでは添字のサイズに、二段目の添字ではさらに小さくと、文脈に応じて縮みます。名前も用途(テキストを入れる)を素直に表しています。

latex
\[
  f(x) = x^2 \quad \text{for all } x \in \mathbb{R},
  \qquad v_{\text{max}} = 3.
\]

この例では、式の右に \text{for all } が立体・本文サイズで組まれ(末尾の空白も活きます)、続く v の添字 \text{max}添字のサイズに縮んだ 立体で組まれます。\mbox だと後者がまわりに比べて大きすぎる仕上がりになります。なお \text{...} のなかでさらに $...$ を書けば、その部分だけ数式に戻せます。

名前付き作用素 — `\operatorname` と `\DeclareMathOperator`

\sin\log\lim のような関数名は LaTeX 標準で立体・適切な空き付きに定義されていますが、一覧にない作用素——rankHomess sup など——は自分で定義する必要があります。これを担うのが amsmath(取り込まれた amsopn)の二つの命令です。

その場かぎりで一度だけ立体の作用素を組むなら \operatorname{...} を使います。たとえば \operatorname{rank} A と書けば rank が立体で、後ろに作用素としての適切な空きを伴って組まれ、続く A と詰まりすぎたり離れすぎたりしません。同じ作用素を何度も使うなら、プリアンブルで \DeclareMathOperator{\rank}{rank}一度定義 しておき、本文では \rank と書くのがきれいです。\DeclareMathOperator は前文(プリアンブル)専用の命令で、本文中では使えません。

どちらの命令にも 星付きの形 があり、これは添字の置き方を変えます。星なしの \operatorname / \DeclareMathOperator は、添字を作用素の 右下 に置きます(\log と同じ扱い)。星付きの \operatorname* / \DeclareMathOperator* は、ディスプレイスタイルで添字を作用素の 真下 に置きます——\lim\sup\max と同じ「リミット位置」です。下限つきの argmaxargmin などはこの星付きで定義します。

latex
% プリアンブル / in the preamble
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator*{\argmax}{arg\,max}

% 本文 / in the body
\[
  \rank A \le n, \qquad
  \hat{x} = \argmax_{x \in S} f(x)
\]

この例では、プリアンブルで二つの作用素を定義しています。本文の \rank Arank が立体で組まれ、\argmax の方は別行立てなので x ∈ Sarg max真下 に置かれます(星付きで定義したため)。定義名のなかの \,argmax の間の細い空きで、arg max と二語に見えるよう整えています。

整列のなかの文章と多段の添字

次の二つは、整列環境や大型作用素と組み合わせて効く命令です。まず \intertext{...} は、align のような複数行の数式の 途中に一行の文章を挟みつつ、整列をそのまま保つ ための命令です。素朴に環境をいったん閉じて文章を書き、また開き直すと、前後で揃え位置がずれてしまいます。\intertext を使えば、文章を入れても上下の行の & の位置がそろったままになります。

latex
\begin{align}
  A &= B + C \\
  \intertext{ここで $C$ を展開すると / expanding $C$ gives}
  A &= B + D + E
\end{align}

この例では、二つの等式の間に「ここで C を展開すると」という説明文が一行入りますが、A &== の位置は上下でそろったままです。\intertextalign などの整列環境のなかでのみ意味を持ちます(整列環境そのものの詳細は別ページを参照)。

もう一つの \substack{...} は、総和や積などの 大型作用素の下に、複数行の条件を積んで 置くための命令です。行は \\ で区切ります。たとえば総和の下に「0 ≤ i ≤ m」と「0 < j < n」を二段で出したいときに使います。同様の働きをする subarray 環境もあり、こちらは l(左揃え)などの整列指定ができます。

latex
\[
  \sum_{\substack{0 \le i \le m \\ 0 < j < n}} a_{ij}
\]

この例では、総和記号の下に二つの条件が二段に積まれ、その範囲にわたる a_{ij} の和を表します。\substack のなかは数式モードのままなので、\le などの関係子もそのまま使えます。

分数・二項係数と式番号の制御

分数命令 \frac 自体は LaTeX 標準のものですが、amsmath はその スタイル固定版 を追加します。\dfrac{...}{...} は文脈によらず常にディスプレイスタイル(大きい分数)で、\tfrac{...}{...} は常にテキストスタイル(小さい分数)で組みます。本文中の分数を大きく見せたいときは \dfrac、別行立てのなかで一部だけ小さくしたいときは \tfrac が便利です。連分数には \cfrac{...}{...} があり、何段重ねても各段が読みやすい大きさで組まれます。

二項係数には \binom{n}{k} があり、丸括弧のなかに n と k を縦に並べた組合せの記号を組みます。これにも \dbinom(常にディスプレイスタイル)・\tbinom(常にテキストスタイル)のスタイル固定版があります。

latex
\[
  \binom{n}{k} = \dfrac{n!}{k!\,(n-k)!}
\]

この例では、左辺に二項係数(丸括弧に n, k を縦並び)、右辺に \dfrac で大きく組んだ分数 n!/(k!(n−k)!) が置かれます。分母の \, は階乗記号と括弧の間の細い空きです。

式番号まわりでは、\numberwithin{equation}{section} が便利です。プリアンブルでこう書くと、式番号が 節番号と連動 し、節が変わるたびに式番号がリセットされます。たとえば第 2 節の最初の式は「(2.1)」のように節番号付きで振られます。長い文書で式番号が三桁・四桁になるのを防ぐ定番の設定です。

amsmath はこのほかにも、行列環境(pmatrixbmatrix など)、大きさの自動調整される括弧、別行立ての整列環境、\boldsymbol による数式の太字など、多くの機能を提供します。行列は「行列と配列」、整列環境は「別行立て・整列・番号付き数式」、和や大型作用素は「和・積分・大型作用素」のページで詳しく扱います。

プリアンブルに何を書くか

実際のところ、数学を含む文書では次の三行をまとめてプリアンブルに置くのが定番です。amsmath(組版の仕組み)、amssymb(記号と黒板太字・フラクトゥール)、そして定理・証明環境のための amsthm です。読み込む順序は、amsthm を amsmath より後に置く点だけ気をつければ、おおむね自由です。

document.tex
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\begin{document}
\[
  \zeta(s) = \sum_{n=1}^{\infty} \frac{1}{n^{s}}, \qquad s \in \mathbb{C}
\]
\end{document}

この最小例では、三つのパッケージを読み込んだうえで、リーマンゼータ関数の定義を別行立てで組んでいます。総和記号の下に n=1、上に が付き、\mathbb{C} で複素数体 C が中抜き太字で出ます。amsthm が提供する theoremproof などの定理環境は、独立した話題なので別ページ「定理・証明環境(amsthm)」で扱います。

パッケージ役割主な提供物
amsmath数式組版の仕組み整列環境・\text\operatorname\dfrac\binom ほか
amssymb記号と数式書体msam/msbm の数百の記号・\mathbb\mathfrak(amsfonts を内部読込)
amsfontsフォントのみ\mathbb\mathfrak(記号は含まない)
amsthm定理・証明環境\newtheoremproof 環境・\theoremstyle