和・積分・大型作用素

総和の Σ、積分の ∫、集合の和の ⋃ ——これらは数式のなかで大きく組まれ、上下や脇に「範囲(限界)」を伴う特別な記号です。LaTeX ではこの仲間を 可変サイズ作用素(大型作用素) と呼び、\sum\int\bigcup などの命令で出します。共通する仕組みは、下付き _ と上付き ^ がそのまま作用素の 限界(リミット) になり、別行立てでは記号の 上下に積まれ、本文中では 右脇に付く こと。このページでは、限界の付き方と位置の制御(\limits\nolimits)、多段の添字、そして自作の作用素までを整理します。

可変サイズ作用素とは

数式の記号には、字の高さに収まる固定サイズのもの(+=\cup など)と、組む文脈に応じて大きさを変える 可変サイズ作用素 があります。後者の代表が総和 \sum、総乗 \prod、積分 \int、集合の和 \bigcup です。これらは別行立て(ディスプレイスタイル)では大きく、本文中(テキストスタイル)では控えめに組まれ、いずれも下付き・上付きを 限界(リミット) として特別に扱います。

「限界」というのは、和や積分の 範囲 を表す添字のことです。\sum_{i=1}^{n} と書けば、i=1 が下限、n が上限になります。普通の下付き・上付き(x_ix^2 のように字の右肩・右下に付くもの)とは扱いが異なり、可変サイズ作用素に付けた添字は 記号の真下・真上 に置かれることがあります。どちらになるかは、組まれるスタイルと記号の種類で決まります——これが次節の主題です。

基本の仲間は標準の LaTeX(実際には下層の TeX)に組み込まれており、追加パッケージなしで使えます。複数積分 \iint\iiint や、後述の多段添字 \substack、作用素定義 \DeclareMathOperator などは amsmath パッケージ が必要です。amsmath は事実上の標準なので、数式を本格的に組むならプリアンブルに \usepackage{amsmath} を書いておくとよいでしょう。

総和・総乗と限界の付き方

総和は \sum、総乗は \prod、余積(双対積)は \coprod です。範囲は下付き _ と上付き ^ で与えます。たとえば総和の例 \sum_{k=0}^{n} a_k では、別行立てにすると総和記号 Σ が大きく組まれ、その **真下に k=0、真上に n** が置かれます。同じ式を本文中(インライン)に書くと、行の高さを乱さないよう Σ は小ぶりになり、k=0n は記号の 右脇 に上下に小さく付きます。

latex
別行立て:
\[
  \sum_{k=0}^{n} a_k = a_0 + a_1 + \dots + a_n,
  \qquad \prod_{k=1}^{n} k = n!
\]

本文中: 級数 $\sum_{k=0}^{n} a_k$ は行内に収まる。

この上下/脇の切り替えは スタイルに連動した既定の挙動 です。総和・総乗・余積のような 「和クラス(sum-class)」の記号 は、ディスプレイスタイルでは限界を上下に積み、テキストスタイルでは脇に付ける——この方式を amsmath の用語で displaylimits(表示時のみ上下)と呼びます。周囲の本文の行間がむやみに広がるのを避けるための合理的な既定です。

範囲が一つだけのときは片方の添字だけを書きます。\sum_{i \in S} のように下限に条件を書くこともでき、別行立てでは Σ の真下に i ∈ S が置かれます。添字が複数のトークンにわたるときは { } で必ず囲みます(\sum_{k=1}k=1 のように)。これを忘れて \sum_k=1 と書くと、k だけが下付きになり =1 が記号の右に流れ出てしまいます。

積分——脇に付く限界

積分記号は \int、その範囲(積分区間)も下付き・上付きで与えます。\int_a^b f(x)\,dx と書けば、下端 a・上端 b の定積分になります。ここで重要なのは、積分は総和と既定の挙動が違う ことです。\int のような 「積分クラス(integral-class)」の記号 は、別行立てであっても限界を 記号の右脇 に付けます。これは数学組版の慣習で、\int の定義には内部的に \nolimits(脇付け)が組み込まれているためです。

latex
\[
  \int_{0}^{\infty} e^{-x}\,dx = 1,
  \qquad \oint_{C} \mathbf{F}\cdot d\mathbf{r}
\]

この例は別行立てでも、∫ の **右下に 0、右上に ** が付きます(総和なら上下に積まれるところです)。被積分関数と dx の間の \,(細い空き)は、数学組版で慣用的に入れる微小な間隔です。周回積分(閉曲線に沿う積分)は \oint で、∫ に小さな円を重ねた記号になります。

多重積分は記号を並べて \int\int と書くこともできますが、記号間の空きが不格好になりがちです。amsmath を読み込むと、間隔を最適に詰めた専用命令 が使えます——二重積分 \iint、三重積分 \iiint、四重積分 \iiiint、そして点線でつないだ多重積分 \idotsint(∫⋯∫ のように二つの積分記号の間に点を置く)です。いずれも本文・別行立ての両方で間隔が調整されます。

latex
\[
  \iint_{D} f(x,y)\,dx\,dy,
  \qquad \iiint_{V} f\,dV,
  \qquad \idotsint_{A} f\,dV
\]

物理でよく使う、線・面・体積についての閉じた積分記号(環積分の二重・三重版など)が必要なら、esint パッケージが \oiint\oiiint などを提供します。標準では \oint のみが利用できます。

限界の位置を変える(`\limits` / `\nolimits`)

既定の付き方は、二つの命令で上書きできます。作用素の 直後\limits を置くと限界を 強制的に上下 に、\nolimits を置くと 強制的に脇 に付けます。たとえば本文中の総和の範囲を上下に出したいときは \sum\limits_{k=1}^{n} と書き、逆に別行立ての積分でも限界を上下に積みたいときは \int\limits_0^1 と書きます。

latex
本文中で上下に: $\sum\limits_{k=1}^{n} k$

別行立ての積分を上下に:
\[
  \int\limits_{0}^{1} x^2\,dx = \frac{1}{3}
\]

ここで肝心なのは 置く位置 です。\limits\nolimits は対象の作用素の すぐ後ろ(添字を書く前)に置かなければなりません。\sum_{k=1}\limits のように添字の後ろに置くとエラーになります。\limits\nolimits\displaylimits が続けて複数現れた場合は、最後のものが優先 されます。

なお、別行立てか本文中かに連動する既定の挙動(和クラスの displaylimits)に戻したいときは \displaylimits を使います。次の表に、記号の種類ごとの既定と、上書き命令の効果をまとめます。

対象 / 命令別行立て(ディスプレイ)本文中(インライン)
\sum, \prod, \bigcup …上下に積む右脇に付く
\int, \oint, \iint …右脇に付く右脇に付く
\limits(作用素の直後)上下に積む(強制)上下に積む(強制)
\nolimits(作用素の直後)右脇に付く(強制)右脇に付く(強制)
\displaylimits上下に積む右脇に付く

極限・上下限(`\lim` の仲間)

\lim(極限)、\limsup(上極限)、\liminf(下極限)は、関数名のように 立体(ローマン体) で組まれる作用素ですが、添字の扱いは可変サイズ作用素と同じ「和クラス」型です。つまり別行立てでは下付きが 真下 に、本文中では 右下 に付きます。\limsup\liminf はそれぞれ「lim sup」「lim inf」と二語で、語間にも適切な空きが入って組まれます。

latex
\[
  \lim_{n \to \infty} \frac{1}{n} = 0,
  \qquad \limsup_{n \to \infty} a_n \ge \liminf_{n \to \infty} a_n
\]

この例では、別行立てなので lim の真下に n→∞ が組まれます。同じ式を本文中に書くと n→∞lim の右下に小さく付きます。\sup\inf\max\min も同じ仲間で、下付きを下に置きます(これらは一覧として「数式モードの基本」の関数名の節にもまとめてあります)。\to、無限大は \infty です。

大きな記号(n 項演算子)

集合や論理、代数で使う n 項演算子 にも、\sum と同じ可変サイズの「大きな」版があります。命令は対応する二項演算子の名前に big を冠した形です。たとえば二項の和集合 \cup(A ∪ B)に対して、可変サイズ版が \bigcup。これらはすべて和クラスなので、別行立てでは限界を上下に積み、本文中では脇に付けます。

命令意味対応する二項演算子
\bigcup和集合(n 項)\cup(∪)
\bigcap共通部分(n 項)\cap(∩)
\bigsqcup非交和(角ばった和)\sqcup(⊔)
\biguplus多重集合の和\uplus(⊎)
\bigvee論理和・上限(n 項)\vee(∨)
\bigwedge論理積・下限(n 項)\wedge(∧)
\bigoplus直和(丸囲みの +)\oplus(⊕)
\bigotimesテンソル積(丸囲みの ×)\otimes(⊗)
\bigodot丸囲みの・(n 項)\odot(⊙)
latex
\[
  \bigcup_{i=1}^{n} A_i, \qquad
  \bigcap_{i \in I} A_i, \qquad
  V = \bigoplus_{k} V_k
\]

この例は別行立てなので、\bigcup_{i=1}^{n} では大きな ⋃ の真下に i=1、真上に n が積まれます。\bigoplus_{k} では ⊕ を大きくした記号の下に k が置かれ、直和 V = V₁ ⊕ V₂ ⊕ … を一つの記号で表せます。本文中に書けば、いずれの限界も記号の右脇に小さく付きます。

多段の添字(`\substack` と `subarray`)

総和や大型作用素の下に、条件を 複数行 にわたって書きたいことがあります(「0 ≤ i ≤ m かつ 0 < j < n」など)。amsmath の \substack{…} を使うと、\\ で区切った各行が中央揃えで積まれた添字になります。下付きの位置に \substack{…} をまるごと置く点に注意してください。

latex
\[
  \sum_{\substack{0 \le i \le m \\ 0 < j < n}} P(i,j)
\]

これは別行立てで、総和記号 Σ の真下に「0 ≤ i ≤ m」と「0 < j < n」が二行に積まれます。各行は中央でそろいます。なお \substack の中の \\ は行区切りで、最終行の後ろには付けません。

各行を 左揃え にしたいときは、より一般的な subarray 環境を使います。\begin{subarray}{l} … \end{subarray}{l} が左揃え({c} なら中央揃え)を指定し、中身は \substack と同じく \\ で改行します。条件式の頭をそろえたいときに読みやすくなります。

latex
\[
  \sum_{\begin{subarray}{l} i \in \Lambda \\ 0 < j < n \end{subarray}} P(i,j)
\]

自作の作用素(`\DeclareMathOperator*`)

一覧にない作用素名を立体で組み、しかも下付きを 真下 に置きたい——たとえば argmaxargminesssup のような——ときは、amsmath の \DeclareMathOperator を使います。プリアンブルで一度宣言すれば、本文で短い命令として呼び出せます。限界を真下に置く(\lim と同じ和クラスの挙動にする)には、**星付きの \DeclareMathOperator*** を使うのが要点です。星なしだと、下付きは関数名の右下に付きます。

latex
% プリアンブルで:
\usepackage{amsmath}
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator{\rank}{rank}

% 本文で:
\[
  \hat{\theta} = \argmax_{\theta} L(\theta),
  \qquad \rank A \le n
\]

この例では、\argmax は星付きで定義したので、別行立てでは arg max の真下に θ が置かれます(本文中なら右下)。名前テキスト中の \, は語間の細い空きで、「arg max」の二語を程よく離します。一方 \rank は星なしなので、\rank Arank A と立体・適切な空きで組まれ、添字を付ければ右下に付きます。一度きりの使用なら、宣言せずに \operatorname{rank}(限界を下に置くなら \operatorname*{…})と直接書くこともできます。

名前テキストの中では特別な約束があります。ハイフン - は本文と同じ普通のハイフンとして(マイナス記号ではなく)、アスタリスク * は上付きのテキストアスタリスクとして(中央の演算子の星ではなく)組まれます。関数名は \text{…} ではなく \DeclareMathOperator\mathrm で組むのが正しく、こうすると前後の空きが自動で調整され、定理環境などイタリックの文脈に置かれても立体が保たれます。

関連する小技として、和クラスの記号の 四隅 に添字を付けたいとき(総和記号に「プライム(′)」を付ける場合など)は amsmath の \sideset があります。\sideset{}{'}\sum_{n} a_n のように書くと、Σ の右上にプライムを付けつつ下に限界を置けます。\sideset は和クラスの記号専用で、最初の引数で左側、二番目の引数で右側の四隅を指定します。