ISO/JIS の数式組版規則

理工系の数式には「何を斜体(イタリック)にし、何を立体(ローマン体)にするか」という国際的な約束ごとがあります。これを定めているのが ISO 80000-2 で、日本では JIS Z 8000-2 として一致採用されています。要点は単純で、変化しうる量(変数)は斜体、値の決まったもの(定数・演算子・関数名・単位)は立体 ——たとえば積分の dxd は、変数の d とは別物として立体で組みます。LaTeX の既定は多くの規則をすでに満たしますが、e・i・d・π など満たさないものもあります。このページでは規則そのものと、LaTeX で正しく従う方法を整理します。

ISO 80000-2 と JIS Z 8000-2

ISO 80000-2(Quantities and units — Part 2: Mathematics)は、数学記号の意味と 組み方(書体) を定めた国際規格です。最新版は 2019 年版(初版は 2009 年)。日本ではこれを一致規格(IDT)として翻訳した JIS Z 8000-2:2022「量及び単位—第2部:数学記号」 が 2022 年に制定され、それまでの JIS Z 8201:1981「数学記号」 を置き換えました。古い文献やソフトでは JIS Z 8201 や、その前身にあたる ISO 31-11 の名前を見かけますが、現行の拠り所はこの ISO 80000-2 / JIS Z 8000-2 です。

なぜ書体まで規格が決めるのでしょうか。数式では 書体そのものが意味を担う からです。たとえば e は、文脈次第で「ある変数 e」にも「自然対数の底(2.718…)」にもなります。これを斜体の e と立体の e で書き分ければ、添え書きをしなくても両者を区別できます。規格は、この区別を世界共通の規則に固定し、論文・教科書・技術文書のあいだで表記がぶれないようにするものです。LaTeX で数式を組むことは、この規格を守る出発点としてはとても有利です——なぜなら数式モードでは英字が自動で斜体になり、\sin などの関数名や数字は立体で組まれるからです。

基本原則 ——「変わるものは斜体、決まったものは立体」

規格の中心にある考え方は一つです。値が文脈によって変わりうる量は斜体、意味や値が一意に決まっているものは立体 で組みます。xy のような変数、ab のように「その場では定数とみなすパラメータ」、一般の関数記号 fg は、いずれも値が固定されていないので 斜体。これらは LaTeX 数式モードの既定どおりなので、特別なことをしなくても規格に従えます。

一方、次のものは値や意味が決まっているため 立体 で組みます。値の確定した 数学定数(自然対数の底 e、虚数単位 i、円周率 π など)、微分演算子 d とその仲間(偏微分の ∂、div など)、系統的に定義された関数名(sin、exp、ln、Γ など)、そして 数字単位記号。規格はこれらを「変数ではないのだから、変数の書体(斜体)で組んではならない」と位置づけています。

直感的なテストは「それは記号を別の文字に置き換えられるか」です。xt に置き換えても式の意味は保たれます——だから変数で、斜体。しかし積分の dx の d を別の字に替えることはできません——意味の決まった演算子だから、立体です。

立体・斜体の早見表

以下に、規格が定める主な書体と、LaTeX の既定がそれを満たすか、満たさない場合の書き方をまとめます。「既定で OK」は素の数式モードでそのまま規格どおりに組まれるもの、「要対応」は明示的に立体化が必要なものです。

対象規格の書体LaTeX での書き方
variables変数・量 x, y, t斜体x(数式モードの既定で OK)
parametersパラメータ・一般の関数 a, b, f, g斜体a, f(x)(既定で OK)
constant e自然対数の底 e立体\mathrm{e}(既定の e は斜体=不適合。要対応)
constant i虚数単位 i(電気系では j)立体\mathrm{i}\mathrm{j})。要対応
constant pi円周率 π(定数として)立体\uppi(upgreek)。素の \pi は斜体=不適合。要対応
differential d微分演算子 d(d/dx, ∫…dx)立体\mathrm{d}x。素の d は斜体=不適合。要対応
partial偏微分記号 ∂立体\partial(既定で立体=OK)
functions定義された関数 sin, exp, ln立体\sin, \exp, \ln(既定で立体=OK)
capital greek関数の Γ など大文字ギリシャ立体\Gamma(標準 LaTeX では既定で立体=OK)
digits数字 0–9立体123(既定で立体=OK)
units単位記号 m, kg, s立体siunitx の \unit{} / \qty{}{}。要対応
vectorsベクトル・行列 a, A太字斜体\bm{a} / isomath の \vectorsym{a}。要対応
tensorsテンソル Tサンセリフ太字斜体isomath の \tensorsym{T}。要対応

表から分かるとおり、LaTeX が 既定で満たすのは関数名・偏微分・数字・大文字ギリシャ。逆に 自分で立体化が必要なのは e・i・π・微分演算子 d・単位・ベクトル/テンソル です。次節以降でこの「要対応」分を具体的に見ます。

定数 e・i・π と微分演算子 d

まず最もよく問われる三点——自然対数の底 e、虚数単位 i、微分演算子 d です。LaTeX の数式モードでは eid は単なる英字なので 斜体の変数 として組まれます。規格に従うには、これらを立体にする \mathrm{…} で囲みます。\mathrm{e} は立体の e、\mathrm{d} は立体の d を出力し、変数として組まれる斜体の e・d とはっきり区別がつきます。

latex
% 規格に従った書き方 — e, i, d を立体に
\[
  \mathrm{e}^{\mathrm{i}\pi} + 1 = 0,
  \qquad
  \frac{\mathrm{d}}{\mathrm{d}x} \mathrm{e}^{x} = \mathrm{e}^{x},
  \qquad
  \int_0^1 x^2 \,\mathrm{d}x = \frac{1}{3}.
\]

この例では、指数の底 e、虚数単位 i、そして微分・積分の d がすべて立体で組まれ、変数 x だけが斜体になります。とくに積分では \,\mathrm{d}x のように、被積分関数と d のあいだに細い空き \, を入れるのが慣例です(規格そのものは空きの量までは定めませんが、見やすさのため広く行われます)。なお \mathrm は引数を立体にする命令で、\mathrm{e} は「立体の e」一文字を意味します。

毎回 \mathrm{d} と書くのは煩雑なので、プリアンブルで 自分用の短い命令を定義する のが定番です。たとえば次のようにすると、本文では \dd x\eu\iu と書けます。\newcommand で定義しておけば、後から書体の方針を変えたくなっても定義一か所の修正で済みます。

latex
% プリアンブルで定義 / define once in the preamble
\newcommand{\dd}{\mathrm{d}}   % 立体の微分演算子 d / upright differential d
\newcommand{\eu}{\mathrm{e}}   % 自然対数の底 / base of natural log
\newcommand{\iu}{\mathrm{i}}   % 虚数単位 / imaginary unit

% 本文 / in the body
\[ \int_0^\infty \eu^{-x}\,\dd x = 1. \]

円周率 π は少し事情が複雑です。規格では定数の π は立体ですが、**標準 LaTeX の \pi は斜体** です(小文字ギリシャ文字は既定で斜体に設計されているため)。厳密に従うには upgreek パッケージを読み込み、**立体の \uppi** を使います。ただし慣行として、π を斜体のまま用いる文書も非常に多く、許容と見なされることもしばしばです。本文書の方針として立体に統一するなら \uppi、慣行に合わせるなら \pi、と決めておくとよいでしょう。

関数名と単位

関数名 については、LaTeX の既定がそのまま規格を満たします。\sin\cos\log\ln\exp\lim などはすべて 立体 で、前後に適切な空きを伴って組まれます。sin x と素のまま打つと sin という三つの斜体変数の積に見えてしまうので、必ず \sin x のように専用命令を使ってください。一覧にない関数名(rank など)を立体で組むには、amsmath の \operatorname{rank} を使うか、\DeclareMathOperator{\rank}{rank} で命令を定義します。これらの詳細は「log 型関数と mod」のページに譲ります。

単位 は常に立体で組み、数値との間に適切な空きを入れるのが規格の要求です。これを自力で \mathrm{m} などと書くと、空き・複合単位・指数の扱いがばらつきがちです。実務では siunitx パッケージ を使うのが標準で、単位や数値つき量を一貫した規則で組んでくれます。現行版では単位を \unit{…}、数値つき量を \qty{…}{…} で書きます(以前の \si\SI も使えます)。

latex
\usepackage{siunitx}   % プリアンブル / preamble

光速はおよそ \qty{2.998e8}{m/s} である。
The speed of light is about \qty{2.998e8}{m/s}.

単位だけなら \unit{kg.m/s^2}(= ニュートン)。

この例では、数値 2.998 × 10⁸ と単位 m/s が立体で、規則どおりの空きをもって組まれます。kg.m/s^2 のように区切り(ピリオド)と冪で複合単位を書け、siunitx が立体・空き・乗除を整えてくれます。単位を斜体の変数として組んでしまう誤りを根本から防げるのが利点です。

ベクトル・行列・テンソル

規格は、量の「型」に応じた書体も定めています。ベクトルと行列の記号は太字斜体(bold italic)テンソルの記号はサンセリフ太字斜体(sans-serif bold italic) です。つまりベクトルと行列は同じ書体(太字の斜体)で、テンソルだけ字種を変えて区別します。なお、ゼロベクトルのように 数値的なベクトル は太字の立体で組む、という細則もあります。

ここで注意したいのは、よく使われる \mathbf{v}太字の立体 を出すことです。これは規格が言う「太字斜体」ではありません。太字斜体のベクトルを得るには、bm パッケージの \bm{v} を使うのが手軽です(\bm は記号を太字にしつつ斜体を保ちます)。規格準拠をうたうなら isomath パッケージ が最適で、ベクトル・行列・テンソルそれぞれに意味づけされた命令を用意しています。

latex
\usepackage{isomath}   % プリアンブル / preamble

\[
  \vectorsym{v} = \matrixsym{A}\,\vectorsym{x},
  \qquad
  \tensorsym{T}_{ij}.
\]

この例では、ベクトル v と行列 A が太字斜体で、テンソル T がサンセリフ太字斜体で組まれます。isomath は ISO 80000-2 に沿った書体方針を一括で適用するパッケージで、\vectorsym\matrixsym\tensorsym のほか、太字斜体の数式アルファベット \mathbfit なども提供します。

もう一つ、規格に厳密な点として、isomath は 大文字ギリシャ文字を既定で斜体 に変えます。標準 LaTeX では大文字ギリシャ(\Gamma など)は立体ですが、ISO 80000-2 は「変数として使う大文字ギリシャは斜体」と定めるため、isomath はその挙動に合わせます。関数名としての Γ など立体が必要な場面とは衝突しうるので、混在する文書では使い分けに注意してください。

実務での方針

規格に厳密に従うか、慣行に寄せるかは文書の性格しだいです。投稿先の学会や出版社が ISO/JIS 準拠を求めるなら、次のように整えるのが堅実です。

  • e・i・d は立体に。 プリアンブルで \dd\eu\iu\mathrm{…} として定義し、本文ではそれを使う。
  • π を厳密にするなら upgreek を読み込み \uppi。慣行に合わせて斜体の \pi のままにする場合は、文書内で統一する。
  • 単位は siunitx に任せる。 手書きの \mathrm{…} を避け、\unit{} / \qty{}{} で組む。
  • ベクトル・行列は太字斜体。 \mathbf(太字立体)ではなく \bm、または規格準拠の isomath\vectorsym 等)を使う。
  • 関数名・偏微分・数字・大文字ギリシャは既定のまま。 \sin\partial\Gamma などは LaTeX の既定で規格を満たす。
  • 方針は一文書で統一する。 同じ記号が斜体と立体で混在しないよう、命令で一元管理する。

なお、physics パッケージは微分の \dd や導関数の \dv を立体で手軽に出せますが、siunitx など他パッケージと命令が衝突することが知られており(補修用の physics-patch も存在します)、近年は derivative パッケージなど代替も使われます。手早く済ませたいときの選択肢として知っておくとよいでしょう。いずれにせよ、書体の意味を意識して一貫させることが、規格遵守の本質です。