LaTeX の記号を探す道具は、記号の一覧が長くなりすぎたせいで生まれました。手描き認識ツール Detexify は、その動機を自分の紹介文にそのまま書いています——symbols-a4.pdf のなかから、覚えきれない記号を探し出すのは時間がかかりすぎる、と。その symbols-a4.pdf こそが The Comprehensive LaTeX Symbol List で、TeX Live 2024 に同梱されている版は 481 ページ、20,323 個の記号が並びます。このページは新しい記号表ではありません。「いま目の前にあるこの字は LaTeX でどう打つのか」を突き止めるための道具箱を、手に取るべき順に並べたものです——amssymb、Comprehensive LaTeX Symbol List、Detexify、そして XeLaTeX/LuaLaTeX 向けの unicode-math。
その記号はどのパッケージにある? まず amssymb
標準 LaTeX に無い数学記号なら、答えはたいてい \usepackage{amssymb} の一行です。アメリカ数学会(AMS)のパッケージで、中身を開くと拍子抜けするほど単純——amssymb.sty(v3.01, 2013 年)は 200 行あまりの \DeclareMathSymbol が並ぶだけ、つまり AMS の記号フォントに入っている字に 名前を与えているだけ のファイルです。よく混同される amsmath との違いもここにあります。amsmath は数式の 構造(align 環境や分数まわりの仕組み)を担当し、amssymb は 記号そのもの を増やします。目的が「記号が足りない」なら amssymb、「式の並べ方を整えたい」なら amsmath です。
「名前を与えるだけ」なら、字はどこにあるのでしょうか。amssymb を読み込むと内部で \RequirePackage{amsfonts} が走り、AMSa(NFSS 名 U/msa、フォント msam10)と AMSb(U/msb、msbm10)という二つの記号フォントが数式フォントとして登録されます。amssymb.sty はその二つのフォントの何番目の字がどの命令か、を宣言しているわけです。実務上ありがたいのは、この連鎖のおかげで \usepackage{amssymb} だけ書けば amsfonts の提供分も一緒に付いてくること——\mathbb(黒板太字)・\mathfrak(フラクトゥール)・\hbar・\checkmark・\dashrightarrow は厳密には amsfonts.sty 側の定義ですが、別途 \usepackage{amsfonts} と書く必要はありません。
そして探しものが amssymb にありそうかどうかは、五つの仲間を知っていればほぼ判断できます。この五つに当てはまらない形——楽譜記号、電気回路、チェスの駒のたぐい——なら、amssymb を眺めるのは時間の無駄で、次節の Comprehensive LaTeX Symbol List に直行したほうが早いということです。
- 追加の関係子。
\leqslant(斜めの「以下」)・\geqslant、\lesssim・\gtrsim、二重線の\subseteqq・\supseteqqなど、標準の関係子の異体字や仲間。 - 否定された関係子。
\nleq(以下でない)・\ngeq・\nsim・\nsubseteq・\nmid(割り切らない)など、最初からスラッシュが描かれた専用の字。 - 追加の矢印。
\twoheadrightarrow(二又=全射)・\rightrightarrows(二本並び)・\rightsquigarrow(波線)・\dashrightarrow(破線)といった装飾的な矢印。 - 雑記号。
\varnothing(丸い空集合)・\square/\blacksquare・\complement(補集合)・\nexists・\circledastなど。 - ヘブライ文字。 基数に使う
\beth・\gimel・\daleth。\alephだけは標準 LaTeX にあります。
\usepackage{amssymb} % extra relations, negations, arrows, misc symbols, Hebrew
% ...
\[ 0 \leqslant x \lesssim 1, \qquad a \nmid b, \qquad A \subseteqq B \]
\[ f \colon X \twoheadrightarrow Y, \qquad \varnothing \ne S, \qquad \aleph_0 < \beth_1 \]\leqslant と \nleq — amssymb の関係子と否定
五つの仲間のうち、日々いちばん手が伸びるのが関係子の異体字と否定形です。斜めの \leqslant(⩽)は多くの数学書が水平の \leq(≤)より好む字形で、片方に決めたら文書全体で揃えるのが鉄則——同じ論文に ≤ と ⩽ が混在するのは、読者にとっては別の記号が使い分けられている合図に見えます。否定も同じで、専用の字がある関係子には必ずそれを使ってください。下は代表例で、網羅ではありません(すべて amssymb が必要)。
| 命令 | 字形 | 意味(すべて amssymb) |
|---|---|---|
\leqslant | ⩽ | 以下(斜めの異体字) |
\geqslant | ⩾ | 以上(斜めの異体字) |
\lesssim | ≲ | おおむね以下(近似的に小さい) |
\gtrsim | ≳ | おおむね以上 |
\subseteqq | ⫅ | 部分集合(二重線の等号つき) |
\nleq | ≰ | 以下でない |
\ngeq | ≱ | 以上でない |
\nsim | ≁ | 相似でない |
\nsubseteq | ⊈ | 部分集合でない |
\nmid | ∤ | 割り切らない(整除の否定) |
\nparallel | ∦ | 平行でない |
専用の否定形が無い関係子は、前に \not を置けばその場で否定できます(\not\equiv など)。ただし \not は大きさも傾きも固定のスラッシュを重ねるだけなので、字によっては線が中心からずれて不格好になります——\nleq のような専用の字が用意されているのは、まさにそれを避けるためです。逆に \ne(≠)と \notin(∉)は標準 LaTeX に専用命令があり、amssymb も \not も要りません。関係子が前後にとる空きの仕組みや \not の細かい挙動は「関係演算子」のページで扱います。
\varnothing・\twoheadrightarrow・ℶ — amssymb の矢印と雑記号
残る三つの仲間では、形そのものが意味を語る字が目を引きます。矢尻が二重の \twoheadrightarrow(↠)は全射、矢に尾が付いた \rightarrowtail(↣)は単射——「上に乗り切る」「下から潜り込む」という直観がそのまま字形になっています。雑記号では、丸い空集合 \varnothing(∅)が標準の \emptyset より好まれることが多く、証明の締めには \square(□)か \blacksquare(■)を使います。
| 命令 | 字形 | 意味・備考(すべて amssymb) |
|---|---|---|
\twoheadrightarrow | ↠ | 二又の右矢印。全射に |
\rightarrowtail | ↣ | 尾つきの右矢印。単射に |
\rightrightarrows | ⇉ | 右向き二本並びの矢印 |
\rightsquigarrow | ⇝ | 波線の右矢印 |
\varnothing | ∅ | 丸い空集合(標準 \emptyset の異体) |
\square | □ | 白四角/証明終わり(QED) |
\blacksquare | ■ | 黒四角 |
\complement | ∁ | 補集合 |
\nexists | ∄ | 存在しない(∃ の否定) |
\checkmark | ✓ | チェックマーク(amsfonts 由来) |
\beth | ℶ | ヘブライ文字ベート(基数) |
\gimel | ℷ | ヘブライ文字ギメル |
\daleth | ℸ | ヘブライ文字ダレット |
ヘブライ文字は集合論の基数(無限の濃度)に使われます。\aleph(ℵ)だけは標準 LaTeX にありますが、続く \beth・\gimel・\daleth は amssymb が必要です。ギリシャ文字の異体字 \digamma(ϝ)と \varkappa(ϰ)も同じ出所で、こちらは「ギリシャ文字」のページで扱います。ここまでで気づいたと思いますが、このページに載せた表はどれも代表例だけです。矢印・雑記号・関係子それぞれの網羅的な一覧は各カテゴリのページにあり、このメタページの役目は「どこを見ればよいか」を示すことにあります。
Comprehensive LaTeX Symbol List — 2 万 5 千の記号から引き当てる
amssymb にも無い記号を探すとき、あるいは「これはどのパッケージに入っているのか」を突き止めたいときの決定版が、Scott Pakin の The Comprehensive LaTeX Symbol List です。CTAN でのパッケージ名は comprehensive、ライセンスは LPPL。収録数は版を追って増え続け、CTAN の説明によれば 2026 年 4 月に公開された バージョン 16.0 で「25,000 を超える」記号 に達しました。手元の TeX Live 2024 に入っている版でも 20,323 個・481 ページで、「収録数が多すぎて探しにくい」という贅沢な問題そのものです。
その大きさに面食らわないための入り口が二つあります。ひとつは冒頭の「Frequently Requested Symbols(よく聞かれる記号)」の節——ここに載っている字なら数秒で終わります。もうひとつは章立てで、本文記号・数学記号・科学技術記号・ディンバット・古代文字・音楽記号・ゲーム記号・地理記号、と分野で切ってあります。「LaTeX の記号一覧に古代文字とゲームの章がある」と聞くと大袈裟に響きますが、この版は 225 の書体から字を集めているので、それくらいの幅にはなります。分野で当たりをつけ、パッケージ別の表で命令名を確かめる——これが最短の道筋です。
# open the copy already installed with TeX Live / MiKTeX -- no network needed
texdoc comprehensive
# or name the PDF directly (symbols-letter for US Letter paper)
texdoc symbols-a4この一覧は TeX Live にも MiKTeX にも同梱されているので、ネットに繋がなくても手元で開けます。ただし 収録されている=すぐ使える、ではありません。多くの記号は専用のフォントやパッケージを別途インストールしてはじめて組めるようになり、一覧自体もそのことを冒頭で断っています。もうひとつ実務で効くのが巻末の「Symbol Name Clashes(命令名の衝突)」の節です。二つの記号パッケージを同時に読み込んで ! LaTeX Error: Command \... already defined に出くわしたとき、どちらがどの名前を主張しているのかを引けるのはここだけです。
Detexify — 記号を描いて LaTeX 命令を探す
記号の名前も分野も分からず、形だけが分かっている——分野の章立てが役に立たないこの状況のために作られたのが Detexify です。枠のなかにマウスや指で記号を描くと、形の近い LaTeX 命令が候補として並びます。着想は Philipp Kühl、実装は Daniel Kirsch。作った動機は Detexify 自身が説明しており、それがまさに前節の 481 ページの PDF——覚えていない記号を symbols-a4.pdf から探すのは時間がかかりすぎる、というものでした。記号一覧が肥大した結果、一覧を引かずに済む道具が生まれたわけです。
中身は素朴な機械学習です。Kirsch 自身の解説によれば、描かれた線は「位置と時刻を持つ点の列(ストローク)」として送られ、そこから画数・点の密度・方向といった特徴量が取り出されます。あとは k 近傍法——蓄積された手書きサンプルのなかから、特徴が近いものを順に拾い、5 種類の記号が集まるまで見て票を数える、という仕組みです。統計に基づく以上、一発で当たるとは限りませんが、実務上ありがたいのは 候補ごとに必要なパッケージが表示される ことで、字形が分かった瞬間に \usepackage まで決まります。公式サイトは detexify.kirelabs.org。学習データは公開されていて、誰かが正解を選ぶたびに次の精度が上がる作りになっています。
Too many math alphabets used in version normal が出たら
記号パッケージを足していくと、いつか ! LaTeX Error: Too many math alphabets used in version normal. で組版が止まります。原因は記号の数ではなく 数式フォントの「枠」の数 です。LaTeX は数式フォントを 16 枠しか持てず(カーネル latex.ltx の \e@mathgroup@top が 16)、amssymb を読み込むだけで AMSa・AMSb の 2 枠、\mathfrak を使えばさらに 1 枠、後述する mathcomp の \tcdigitoldstyle でもう 1 枠が消えていきます。16 という数字は TeX の設計に由来します——TeX は数式中の 1 文字を「クラス・フォント枠・位置」に詰めて表現し、フォント枠に割り当てられたのが 4 ビット、つまり 16 通りだからです。
対処は二つあります。ひとつは 読み込むパッケージを減らす こと。記号パッケージ同士は枠だけでなく命令名も奪い合い、amssymb 自身も stix が先に読み込まれていると「amssymb は不要なので読み込まない」と警告を出して自ら降ります。もうひとつが エンジンを乗り換える ことです。XeLaTeX と LuaLaTeX では枠の上限が 256 に上がり、さらに Will Robertson らの unicode-math を使えば発想そのものが変わります。OpenType 数式フォント 1 つが何千もの字を抱えるので、「記号を足すたびに枠を消費する」という算段が要らなくなるからです。同梱の unicode-math-table.tex は Unicode の数式文字 2,448 個に命令名を対応させた表で、たとえば U+2200 が \forall にあたります。ただし unicode-math は pdfLaTeX では動きません。
% XeLaTeX or LuaLaTeX only -- one OpenType font carries thousands of glyphs
\usepackage{unicode-math}
\setmathfont{latinmodern-math.otf}
% ...
\[ \forall \varepsilon > 0,\ \exists \delta > 0 \]℃・Ω・µ を数式のなかで立体に組む(mathcomp / textcomp)
単位を数式に混ぜると、記号探しとは別の問題が起きます。数式モードの µ は斜体の変数として組まれるのに、単位のマイクロは 立体 でなければならないからです。これを直す小さなパッケージが mathcomp で、\usepackage{mathcomp} と書けば \tcmu(µ)・\tcohm(Ω)・\tccelsius(℃)などが数式モードで使えるようになります。名前の付け方は単純で、テキストモード側の \textmu・\textdegree の text を tc(text companion)に置き換えるだけです。
tc の由来は TS1(Text Companion) エンコーディングです。かつては本文で \textdegree(°)や \textperthousand(‰)を出すのに \usepackage{textcomp} が必須でしたが、LaTeX News 31 が伝えるとおり 2020 年のリリースで TS1 の記号はカーネルに取り込まれ、いまは textcomp を読み込まなくても本文で使えます。それでも textcomp には役目が残っていて、\usepackage[error]{textcomp} や [warn] と書くと、フォントに字が無くて代替されたときにエラーや警告として知らせてくれます。一方 数式モード側は自動化されていない ため、立体の単位記号を数式に入れるには mathcomp が今も必要です。
| 命令(mathcomp) | 字形 | 意味 |
|---|---|---|
\tcohm | Ω | オーム(抵抗の単位)。立体 |
\tcmu | µ | マイクロ記号(µm などの µ)。立体 |
\tcdegree | ° | 度記号 |
\tccelsius | ℃ | 摂氏(\tccentigrade も同義) |
\tcperthousand | ‰ | パーミル(千分率) |
\tcpertenthousand | ‱ | パーミリアド(万分率) |
\usepackage{mathcomp} % loads textcomp and adds the \tc... commands for math mode
% ...
\[ R = 4.7\,\mathrm{k}\tcohm, \qquad d = 25\,\tcmu\mathrm{m}, \qquad T = 37\,\tccelsius \]mathcomp の提供する記号はこの 6 つに \tcdigitoldstyle{0} … \tcdigitoldstyle{9}(オールドスタイル数字)を加えた小さな集合で、オプションで書体も選べます(\usepackage[ppl]{mathcomp} なら Palatino の TC フォント)。注意点がひとつ——\tcohm(Ω)はギリシャ大文字の \Omega とは別の字で、単位として正しいのは前者です。そして先ほどの枠の話がここでも効きます。\tcdigitoldstyle は数式フォントの枠をひとつ使うので、記号パッケージを積み上げた文書ではこれが最後の一押しになりかねません。単位を本格的に組むなら、記号を一つずつ拾うより siunitx に任せるほうが速く、量と単位の空きや複合単位の扱いまで面倒を見てくれます(「単位(siunitx)」のページ参照)。