数式モードの英字は既定で数式イタリックになりますが、集合論の ℝ(黒板太字)、関手の名前に使う花文字、Lie 環の名前に使う飾り文字(フラクトゥール)など、分野ごとに決まった「書体(数式アルファベット)」が要る場面があります。このページでは、\mathbf や \mathbb といった数式アルファベット命令と、それぞれに必要なパッケージ、そしてベクトルや記号を太字にする \boldsymbol・\bm の使い分けを整理します。最後に、XeLaTeX・LuaLaTeX で OpenType 数式フォントを使う unicode-math も扱います。
数式アルファベットとは
数式モードに入った英字は、ひとつひとつが変数とみなされ 数式イタリック で組まれます。これが既定の「数式アルファベット」です。これに対し、\mathbf{v} のように命令で囲むと、囲まれた範囲だけ別の書体に切り替わります。LaTeX はこうした切り替え命令を、本文用の \textbf・\textsf などに対応させる形で \math… という名前で用意しています。
注意したいのは、数式アルファベット命令は 引数を「一文字ずつの数学記号の並び」として組み直す という点です。本文書体の命令とは別物で、たとえば \mathbf{fit} は単語 “fit” ではなく f・i・t という三つの太字記号の積として扱われます。単語をそのまま立体で入れたいときは、数式の中でも \text{…}(amsmath)を使います。
基本となる七つの命令はパッケージなしで使えます。下の表で、まず標準で使えるものを押さえましょう(\mathnormal は既定の数式イタリックそのものを明示する命令です)。
| 命令 | 見た目 | 備考 |
|---|---|---|
\mathnormal | 既定の数式イタリック | 標準。変数の既定の書体 |
\mathrm | 立体(ローマン体) | 標準。立体の定数・略号に |
\mathbf | 立体の太字 | 標準。立体なので変数には不向き(後述) |
\mathsf | サンセリフ体 | 標準。テンソルや圏の名前などに |
\mathtt | 等幅(タイプライタ体) | 標準。コード片を数式に入れるときなど |
\mathit | 本文用イタリック体 | 標準。多文字語を斜体で(字間が単語向き) |
\mathcal | 花文字(カリグラフィック)。大文字のみ | 標準。集合族・圏などに |
\mathit と \mathnormal は紛らわしいので一言。\mathnormal(既定)は一字ずつを変数として組むため字間が広め、\mathit は本文用のイタリックで、\mathit{diff} のように 多文字の語をひとまとまりの斜体 にしたいときに向きます。
黒板太字・花文字・フラクトゥール・スクリプト
次の四つは数学でとくによく使う書体ですが、**標準の \mathcal を除きパッケージの読み込みが必要** です。それぞれ見た目と用途、必要なパッケージが異なります。
\mathbb(黒板太字, blackboard bold)** は、縦棒などを二重線にした独特の太字で、もとは黒板でボールド体を書くために線を重ねた書き方に由来します。amssymb(または amsfonts)が必要で、大文字だけ に対応します。用途はほぼ決まっていて、数の集合——実数 ℝ、複素数 ℂ、整数 ℤ、有理数 ℚ、自然数 ℕ——を表すのに使います。\mathbb{R} と書けば、縦棒が二重線になった「黒板太字の R」が出ます。
\mathcal(花文字, calligraphic) は、流れるような装飾的な大文字で、標準で使え、大文字のみ** です。集合族 𝒜、フーリエ変換 ℱ、圏や層の名前などに広く使われます。\mathcal{F} で「飾りのついた F」になります。
\mathscr(スクリプト体, script)** は、\mathcal よりさらに筆記体らしい、いっそう流麗な書体です。**mathrsfs パッケージ**(Ralph Smith の Formal Script を読み込む)が定番で、euscript パッケージ(Euler Script)でも別系統のスクリプトが使えます。\mathcal と区別して二種類の飾り文字を併用したいときに重宝します(こちらも実用上は大文字向けです)。
\mathfrak(フラクトゥール/亀甲文字, Fraktur)** は、ドイツの古い活字に由来する角ばった装飾書体で、Lie 環 𝔤 やイデアル 𝔭・𝔮 の名前などに使われます。amssymb(または amsfonts。内部で eufrak を読み込む)が必要で、\mathbb や \mathcal と違い 大文字・小文字の両方 に対応します。
\usepackage{amssymb} % \mathbb と \mathfrak
\usepackage{mathrsfs} % \mathscr
% ...
\[
\mathbb{R} \subset \mathbb{C}, \qquad
\mathcal{F}(f) = \hat{f}, \qquad
\mathscr{L}(f) = F, \qquad
\mathfrak{g} = \operatorname{Lie}(G).
\]この例では、\mathbb{R}・\mathbb{C} が黒板太字、\mathcal{F} が花文字、\mathscr{L} がより流麗なスクリプト、\mathfrak{g} が角ばったフラクトゥールの小文字で組まれます。下の表に、書体ごとの必要パッケージと対応範囲をまとめます。
| 命令 | 必要なパッケージ | 対応範囲と典型的な用途 |
|---|---|---|
\mathbb | amssymb(または amsfonts) | 大文字のみ。数の集合 ℝ ℂ ℤ ℚ ℕ |
\mathcal | 標準(不要) | 大文字のみ。集合族・圏・変換名 |
\mathscr | mathrsfs(または euscript) | 実用上は大文字。より流麗なスクリプト |
\mathfrak | amssymb / amsfonts(eufrak) | 大文字・小文字。Lie 環・イデアル |
共通する重要な制限として、これらの装飾アルファベットは 収録している文字が限られます。\mathbb と \mathcal は大文字 A–Z が中心で、数字やギリシャ文字、小文字までは(標準のフォントでは)揃っていないのがふつうです。「\mathbb{2} で黒板太字の 2 を」といった用途は標準では満たせず、別のフォントパッケージ(たとえば mathalpha/mathalfa、bbm、dsfont など)や、後述の unicode-math が必要になります。
数式を太字にする
数式を太字にしたい場面——たとえばベクトルや行列を太字で表す——は多いのですが、ここには落とし穴があります。先に挙げた **\mathbf は「立体の太字」 で、本来は太字の 定数や略号**(立体でよいもの)向けです。これでベクトル \mathbf{v} を組むと太字にはなりますが 立体 になり、斜体であるべき変数の約束から外れます。さらに \mathbf は記号やギリシャ文字には効きません(\mathbf{\alpha} としても α は太字になりません)。
斜体を保ったまま太字にしたいときの第一候補が **\boldsymbol です。これは amsmath**(内部の amsbsy)が提供する命令で、変数だけでなく ギリシャ文字や記号も太字 にでき、しかも元の字形(斜体など)を保ちます。\boldsymbol{\beta} で「太字の斜体 β」が得られます。
そして、現在もっとも勧められる頑健な方法が **bm パッケージ の \bm** です。\bm{…} は「与えられたものに 太さだけを加え、斜体などその他の見た目はそのまま保つ」よう設計されており、変数・ギリシャ文字・記号のどれでも、また複雑な入力でもほぼそのまま太字化できます。字間(スペーシング)の扱いも \boldsymbol より優れています。bm は \boldsymbol を \bm の別名として再定義し、さらに極太用の \hm(\heavysymbol)も提供します。
\usepackage{amsmath} % \boldsymbol
\usepackage{bm} % \bm(推奨)
% ...
\[
\mathbf{v} \neq \bm{v}, \qquad
\bm{\beta} = (\beta_1, \dots, \beta_n), \qquad
\nabla \bm{F} = \bm{0}.
\]この例では、\mathbf{v} は 立体の太字 v、\bm{v} は 斜体のまま太字の v となり、両者が別物であることが見て取れます。\bm{\beta} は太字の斜体 β、\bm{0} は太字のゼロ(零ベクトル)です。原則として、**変数・ベクトル・記号の太字には \bm**、立体でよい定数や略号には \mathbf、と使い分けるのが安全です。
\mathbf** — 立体の太字。標準で使えるが、斜体であるべき変数には不向き。記号・ギリシャ文字には効かない。\boldsymbol** — amsmath(amsbsy)。斜体を保ち、ギリシャ文字・記号も太字にできる。\bm— bm パッケージ。推奨**。太さだけを足し、字形と字間を保つ。最も頑健で守備範囲が広い。
unicode-math(XeLaTeX・LuaLaTeX)
ここまでは、各書体を専用パッケージで一つずつ足していく従来のやり方でした。XeLaTeX・LuaLaTeX という新しいエンジンでは、unicode-math パッケージを使うと、数式全体を 一つの OpenType 数式フォント でまとめて組めます。本文フォントを差し替える感覚で数式書体を切り替えられ、\mathbb などを個別に足す在来方式に取って代わります(同じ文書で両方式を混在させることはできません)。
使い方の核心は **\setmathfont{…}** です。amsmath を読み込んだ上で unicode-math を(ほかのフォント関係パッケージより後に)読み込み、\setmathfont で OpenType 数式フォントを指定します。代表的なフォントには Latin Modern Math(Computer Modern の系譜)、STIX Two Math、TeX Gyre 系(Termes/Pagella/Bonum/Schola Math)などがあります。\begin{document} までに数式フォントを指定しなければ、既定で Latin Modern Math が読み込まれます。
% コンパイルは xelatex または lualatex
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{STIX Two Math} % OpenType 数式フォント
% ...
\[
\symbb{R} \subset \symbb{C}, \qquad
\symcal{F}, \quad \symscr{L}, \quad \symfrak{g}, \qquad
\symbf{v} = \symbf{0}.
\]マニュアルでは、在来の \math… 命令に代えて **\sym… 命令** を使うことが推奨されています。対応は素直で、\symbf(太字)・\symbb(黒板太字)・\symcal(花文字)・\symscr(スクリプト)・\symfrak(フラクトゥール)・\symup(立体)・\symit(斜体)・\symsf(サンセリフ)などがあります。これらは Unicode 上の対応する数学英数記号へ写像するため、出力 PDF から文字をコピーしても意味が保たれます。従来の \mathbb などの名前も後方互換として残りますが、新規文書では \sym… が勧められます。
一つの数式フォントですべての字種をまかなえないときは、\setmathfont の **range= オプション で数式アルファベットの 一部だけ** を別フォントから取れます。range= には Unicode の範囲("1D538-"1D56B" のような形)のほか、range=\int のように特定の記号、range=\symbb(または range=bb)のように アルファベット様式 を指定できます。たとえば「黒板太字だけ別フォントにする」「ギリシャ小文字・大文字だけ差し替える」といった調整が可能です。なお range= を使う前に、主たる数式フォントを通常どおり読み込んでおく必要があります。
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math} % 主たる数式フォント
\setmathfont{STIX Two Math}[range=\symbb] % 黒板太字だけ別フォント
\setmathfont{TeX Gyre Termes Math}[range=bfit/{greek,Greek}] % 太字斜体のギリシャだけこの例では、本体は Latin Modern Math で組みつつ、黒板太字(\symbb)だけを STIX Two Math から、太字斜体のギリシャ文字だけを TeX Gyre Termes Math から取り込んでいます。unicode-math は効率のため、range= 指定のフォントは必要な範囲だけを読み込みます。総じて、XeLaTeX・LuaLaTeX を使うなら、書体ごとにパッケージを足す在来方式よりも unicode-math + \setmathfont が今日の標準的なやり方です。