記号網羅(amssymb・一覧)

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)と AMSbU/msbmsbm10)という二つの記号フォントが数式フォントとして登録されます。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 にあります。
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\dalethamssymb が必要です。ギリシャ文字の異体字 \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 の書体から字を集めているので、それくらいの幅にはなります。分野で当たりをつけ、パッケージ別の表で命令名を確かめる——これが最短の道筋です。

terminal
# 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 では動きません。

latex
% 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\textdegreetexttc(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パーミリアド(万分率)
latex
\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)」のページ参照)。