log 型関数と mod

数式のなかで \sin\log のように関数名を打つと、それらは 立体(ローマン体) で、前後に適切な空きを伴って組まれます。これは飾りではありません。数式モードでは英字は変数とみなされるため、sin(x) とそのまま打つと s・i・n という三つの変数の積に化けてしまう——だから LaTeX はよく使う関数名をあらかじめ命令として用意しているのです。このページでは、三角・対数・指数の仲間、\lim\max のように添字を真下に置く仲間、そして \bmod\pmod といった剰余の記法、さらに一覧にない関数を自分で定義する方法までを扱います。

なぜ専用の命令が要るのか

数式モードのなかでは、英字は一文字ずつが変数の名前とみなされ、数式イタリックで組まれます。ですから sin x と打つと、出力は「正弦」ではなく sinx という四つの量の積として、斜体で、変数の並びとしての字間で組まれてしまいます。これは数学の慣習——関数名や定数は立体で組む——に反します。

正しくは \sin のように 専用の命令 を使います。LaTeX はよく使う関数・作用素の名前をあらかじめ定義しており、いずれも 立体 で組まれ、かつ前後に演算子としての適切な空きが自動で入ります。たとえば \sin x は、立体の「sin」と変数 x のあいだに細い空きが入った、教科書どおりの組版になります。これらの命令はすべて標準の LaTeX に含まれ、追加のパッケージは要りません(自作する場合のみ amsmath が要ります。後述)。

三角・対数・指数の仲間

もっともよく使うのが、三角関数・双曲線関数・対数・指数の仲間です。これらは添字を取っても 記号の右脇 に置かれる、ふつうの作用素です(真下に置くタイプは次節)。

  • 三角関数: \sin \cos \tan \cot \sec \csc、および逆関数 \arcsin \arccos \arctan
  • 双曲線関数: \sinh \cosh \tanh \coth
  • 対数: \log(一般の対数)、\ln(自然対数)、\lg(2 を底とする対数)。
  • 指数ほか: \exp(指数関数)、\deg(次数)、\dim(次元)、\ker(核)、\hom\arg(偏角)。

底や指数は、添字の仕組みでそのまま添えられます。\log_2 x は「log」の右下に小さな 2 が付いた底つきの対数になり、\sin^2\theta は「sin」の右肩に指数 2 が付いた形——慣用の sin²θ——になります。\log\ln\lg の使い分けは中身が表すとおりで、自然対数なら \ln、2 を底とする対数(情報理論などで頻出)なら \lg が用意されています。

latex
\[
  \sin^2\theta + \cos^2\theta = 1, \qquad
  \log_2 8 = 3, \qquad
  \ln e = 1.
\]

この別行立てでは、「sin」「cos」「log」「ln」がいずれも立体で組まれ、\sin^2\theta は sin の右肩に 2、\log_2 8 は log の右下に 2 が付きます。三つの式は \qquad の広い空きで区切られて 1 行に並びます。比較として sin^2\theta のように \ を落とすと、s・i・n が斜体の変数として組まれ、空きも乱れてしまいます。

添字を真下に置く作用素

前節の関数とは別に、添字(下付き)を 記号の真下 に置く作用素の一群があります。極限や上限・下限、最大・最小などがこれにあたり、いずれも「どの範囲・どの条件で」を記号の下に大きく示すのが数学の慣習だからです。

  • \lim(極限)、\limsup(上極限)、\liminf(下極限)。
  • \sup(上限)、\inf(下限)、\max(最大)、\min(最小)。
  • \det(行列式)、\gcd(最大公約数)、\Pr(確率)。

これらは ディスプレイスタイル(別行立て)では添字が真下 に、テキストスタイル(インライン)では右下 に付きます。\sum\int などの大型作用素とまったく同じ振る舞いで、これはスタイルによって決まります(インラインでも真下に出したいときは \displaystyle を使います。詳しくは「和・積分・大型作用素」を参照)。たとえば \lim_{x \to 0} は、別行立てでは「lim」の真下に x→0 が、本文中では「lim」の右下に小さく組まれます。

latex
\[
  \lim_{x \to 0} \frac{\sin x}{x} = 1, \qquad
  \max_{1 \le i \le n} a_i .
\]

この別行立てでは、「lim」の真下に x→0、「max」の真下に 1≤i≤n が組まれ、本体の式がその右に続きます。\sin x も立体で正しく組まれます。同じ式をインラインで $\lim_{x\to0}\frac{\sin x}{x}$ と書くと、範囲は「lim」の右下に小さく付きます。

剰余(mod)の記法

剰余(合同式)の「mod」には、置かれる文脈によっていくつかの書き方があり、それぞれ空きや括弧の付き方が違います。LaTeX は標準で \bmod\pmod を、amsmath はさらに \mod\pod を用意しています。

\bmod二項演算子 としての mod です(b は binary の b)。5 \bmod 3 と書けば、5・「mod」・3 のあいだに二項演算子としての空きが入り、「5 mod 3」のように組まれます。値そのもの(余り)を表すときに使います。一方 \pmod{n}括弧つきの法 で、合同式の末尾に添えます。a \equiv b \pmod{n} と書くと、式の右に少し離して「(mod n)」が組まれ、「a ≡ b (mod n)」のようになります(引数 n は波括弧で渡します)。なお amsmath を読み込むと、\pmod の前の空きはインライン(テキストスタイル)では自動的に狭く調整されます。

latex
\[
  5 \bmod 3 = 2, \qquad
  17 \equiv 5 \pmod{12}.
\]

この別行立てでは、左の式が「5 mod 3 = 2」のように二項演算子の空きで組まれ、右の式が「17 ≡ 5 (mod 12)」のように、合同記号 \equiv を挟んだうえで末尾に「(mod 12)」が括弧つきで付きます。

amsmath が追加する二つは \pmod の変種です。\mod{n}括弧を付けず に「mod n」とだけ組み(前に空きを取る著者が好む書き方)、\pod{n}「mod」を省いて括弧だけ を残し「(n)」と組みます。四つの違いを次の表にまとめます。

命令出力(例 n=3)用途・備考
\bmoda mod b二項演算子。余りの値を表す。標準 LaTeX
\pmod(mod 3)合同式の末尾に。括弧つき。標準 LaTeX
\modmod 3括弧なしの変種。amsmath が必要
\pod(3)「mod」を省き括弧だけ。amsmath が必要

自分で作用素を定義する

一覧にない関数名——たとえば符号関数 sgn、跡 tr、階数 rank、像 Im——を立体で正しく組みたいことがあります。その場で済ませるなら amsmath の \operatorname{…} を使います。\operatorname{sgn} x と書けば「sgn」が立体・適切な空きで組まれ、\sin などと同じ品質になります。

同じ作用素を繰り返し使うなら、プリアンブルで一度 \DeclareMathOperator{\sgn}{sgn} と定義しておきます。すると本文では \sgn と書くだけでよく、定義は一箇所に集約されます。\lim のように添字を 真下 に置きたい作用素は、星付き\DeclareMathOperator*{\argmax}{arg\,max} で定義します(その場限りなら同様に星付きの \operatorname*{…} が使えます)。星なしは右脇、星付きは真下(ディスプレイ時)という違いです。これらはいずれも amsmath(内部的には amsopn パッケージ。amsmath が自動で読み込みます)が提供するため、\usepackage{amsmath} が要ります。

document.tex
\usepackage{amsmath}
\DeclareMathOperator{\sgn}{sgn}
\DeclareMathOperator*{\argmax}{arg\,max}
% 本文中 / in the body:
% \[ \sgn x, \qquad \argmax_{x \in S} f(x) \]

この定義のあと、別行立てで \sgn x は立体の「sgn」と変数 x\argmax_{x \in S} は「arg max」(あいだに \, の細い空き)の真下に x∈S が組まれます。名前の側に \, を入れているのは、「arg」と「max」のあいだに適切な空きを残すためです。一度定義しておけば、表記を変えたくなってもプリアンブルの一行を直すだけで文書全体に反映されます。