著作権記号 ©、登録商標 ®、段落記号 ¶、節記号 §、パーミル ‰、摂氏 ℃——LaTeX でこうしたテキスト記号を出すには長らく \usepackage{textcomp} が要る、と教えられてきました。その常識は 2020 年 2 月 2 日のカーネル更新で終わっています。 TS1(Text Companion)エンコーディングの記号一式が LaTeX 本体に取り込まれ、TeX Live 2024 で試すと \textcopyright も \texttrademark も \textcelsius も、パッケージを一行も書かずに出ます。それどころか textcomp.sty 自身が記号を一つも定義しない「オプションだけのパッケージ」になりました。このページは、いま何が標準で出せて何にパッケージが要るのかを実測で確かめながら、\S・\P の一群、トランプのスート ♠ ♥ ♦ ♣、pifont の \ding 番号表、fontawesome5 のアイコン、そして日本語の丸数字と異体字までを一覧にします。
\usepackage{textcomp} はもう要らない——2020 年に TS1 がカーネルに入った
TeX Live 2024 でパッケージを一つも読み込まずに © ® ™ ℠ € ¢ ¥ £ ‰ ° ℃ • ¶ § ¦ ♪ ℮ ¤ № ※ ‽ Ω µ ₩ ₤ ƒ ₦ をすべて組んでみると、警告もエラーも一行も出ません。理由は textcomp.sty を開けばわかります。冒頭は \ProvidesPackage{textcomp}[2020/02/02 v2.0n] で、中身は full・almostfull・euro・safe・error・warn・info・quiet・force という オプションの宣言だけ。記号の定義は一つも残っていません。全部 latex.ltx に移りました。
この移動は単なる整理ではなく、出力そのものを直しました。2020 年より前、\textbullet・\textdagger・\textsection・\textparagraph・\textperiodcentered などの既定は TS1 ではなく OMS——数式記号フォント でした。つまり本文の § が、こっそり数式フォントから借りてきた字だったのです。差は測れます。Helvetica を本文書体にした文書で \textsection の幅は 5.55994pt(Helvetica 自身の §)、旧来の実装に相当する \textlegacysection は 4.44447pt(Computer Modern の数式 §)。\textbullet では 3.5pt 対 5.00002pt とさらに開きます。互換のための逃げ道も残されていて、\UseLegacyTextSymbols を呼べば一括で旧挙動に戻り、\textlegacybullet のように記号ごとの命令も用意されています。
\documentclass{article}
% no \usepackage{textcomp} needed since the 2020-02-02 kernel
\begin{document}
Foo\textregistered{} is a trademark of Bar Inc.\texttrademark
\textcopyright\ 2026 \quad 40\textperthousand \quad 25\textcelsius \quad 90\textdegree
\end{document}© ® ™ を出す——\copyright と \textcopyright の違い
本文では両方とも同じ © が出ます。違いは 数式モードに入ったときの振る舞い です。latex.ltx の定義は \DeclareRobustCommand{\copyright}{\ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi} ——つまり \copyright はモードを見て自分で切り替える「両用」の命令で、\textcopyright はテキスト専用です。同じ作りの命令が \pounds(£)にもあり、こちらは数式では \mathsterling に切り替わります。迷ったら本文中はどちらでもよく、マクロの中など文脈が読めない場所では \copyright のほうが安全、と覚えておけば足ります。
もう一つ、\texttrademark の 既定の実装 を見ておく価値があります。latex.ltx には \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}、\textregistered には \textcircled{...} を使う定義が残っています。TS1 に届かないフォント環境では、™ は本物のグリフではなく T と M を上付きにしただけの偽物 になり、® は丸を重ねた合成になる、ということです。2020 年以降は既定が TS1 に切り替わったので普段はこれを見ませんが、TS1 のグリフを持たない書体を指定すると、この古い実装が顔を出すことがあります。なお命令のあとの空白は制御綴に食われるので、語の途中では \textregistered{} と空の中括弧を添えるか \ を入れます。
| 命令 | 記号 | 意味 | 備考 |
|---|---|---|---|
\textcopyright | © | 著作権 | \copyright は数式モードでも使える両用版 |
\textregistered | ® | 登録商標 | TS1 に届かないと \textcircled の合成になる |
\texttrademark | ™ | 商標 | 既定の代替は \textsuperscript{TM} という偽物 |
\textservicemark | ℠ | サービスマーク | 役務商標。米国の表示に使う |
\texteuro | € | ユーロ | 字形をそろえたいなら eurosym の \euro(後述) |
\textcent | ¢ | セント | \textsterling は £、\textyen は ¥ |
\textperthousand | ‰ | パーミル(千分率) | 万分率 ‱ は \textpertenthousand |
\textdegree | ° | 度(角度・温度) | 数値に添えるなら siunitx の \ang/\qty が確実 |
\textcelsius | ℃ | セ氏度 | °C の合字。Computer Modern には収録がある |
\textnumero | № | 番号記号 | ロシア語・フランス語の「第 n 号」 |
\textmusicalnote | ♪ | 八分音符 | 本文用。楽譜組版は別の話 |
\textbrokenbar | ¦ | 破断線 | \textbardbl は二重縦線 ‖。どちらも数式の縦線とは別 |
\textestimated | ℮ | 推定記号 | EU の包装表示にある e マーク |
\textinterrobang | ‽ | インテロバング | ?! の合字。cmr にはあるが多くの欧文書体には無い |
\textcircled{a} | ⓐ | 丸囲み文字 | 合成。Computer Modern では丸を重ねて作る |
§ と ¶ と † ——\S \P \dag は数式モードでも動く
この四つは、記号のなかでも珍しく モードを自分で判定する 命令です。latex.ltx の定義はそのまま読めます——\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}、\DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}。だから法令の条番号 \S 3 を本文に書いても、脚注記号として数式のなかで x^\dag と書いても、どちらも通ります。\dag(†)と \ddag(‡)も同じ作りで、数式では \dagger・\ddagger に切り替わります。\S は「§ 記号」であって「章」ではありません ——法学の引用や規格書では条・項を指す標準の記号で、二つ重ねた \S\S は複数条を表す慣用です。
| 命令 | 記号 | テキスト/数式 | 備考 |
|---|---|---|---|
\S | § | 両方 | 節記号。\textsection はテキスト専用の同義語 |
\P | ¶ | 両方 | 段落記号(ピルクロウ)。\textparagraph も同じ |
\dag | † | 両方 | 短剣符。数式では \dagger に切り替わる |
\ddag | ‡ | 両方 | 二重短剣符。数式では \ddagger |
\copyright | © | 両方 | 数式では \nfss@text でテキストに戻して組む |
\pounds | £ | 両方 | 数式では \mathsterling(数式イタリックの £) |
Symbol \textohm not provided by font family cmr in TS1 encoding. の読み方
この警告は「その記号は本文書体には無いので、別の書体から借りて組んだ」という報告です。TS1 は 128 個ほどの位置を持ちますが、それを全部埋めている欧文書体はごく一部です。そこで LaTeX は各書体が実装している範囲を \DeclareEncodingSubset で番号付けして管理しています。latex.ltx の実物を見ると、Computer Modern(cmr)は 0 番=全部あり、Latin Modern(lmr)は 1、Helvetica(phv)と Courier(pcr)は 5(コメントに「blank・interrobang・ohm は tofu」と書かれています)、そして 未知の書体は 9=最小限。要求された記号がその範囲を超えると、代替書体に切り替えて組み、この警告を出します。
ここでようやく textcomp の出番があります。既定ではこの報告は警告ですらなく、ログに残るだけの \@latex@info です。\usepackage[warn]{textcomp} を付けると本物の警告に格上げされ、[error] ならエラー、[quiet] なら完全に黙ります。書体を差し替えた原稿の校正では、まず [warn] を付けて一度通すと、どの記号が別書体で組まれているかが一望できます。ちなみに \textbackslash・\textbar は TS1 ではなく 既定が OMS(数式記号フォント) で、T1 を読み込んで初めて本文書体の字になります。\textasciitilde に至っては、既定の実装が「何もない文字の上にチルダを載せる」という合成です。
% textcomp defines no symbols any more — it only sets the reporting policy
\usepackage[warn]{textcomp}
% options: full / almostfull / euro / safe / error / warn / info / quiet / force
%
% Package textcomp Warning: Symbol \textohm not provided by
% (textcomp) font family cmr in TS1 encoding.
% (textcomp) Default family used instead on input line 5.ユーロ記号だけは専用パッケージが今も現役です。\usepackage{eurosym} を読み込むと \euro が使え、official・gen などのオプションで欧州委員会の公式デザインに近い字形を選べます。ただし TeX Live 2024 で eurosym の \euro を組んだ PDF から文字を抜くと、e の一字として抽出されます(\texteuro なら € がそのまま返ってきます)。表示は美しくても、コピーや検索を通したい文書なら \texteuro のほうが実用的です。
トランプのスート ♠ ♥ ♦ ♣ と、△ □ ◇ を出す
スートは LaTeX 標準の数式記号 です。パッケージは要りません——fontmath.ltx に \DeclareMathSymbol{\clubsuit}{\mathord}{symbols}{"7C} から \spadesuit まで四つ並んでいて、$\clubsuit$ $\diamondsuit$ $\heartsuit$ $\spadesuit$ と数式モードで書くだけです。\triangle(△)も同じ場所の住人です。ただし Computer Modern のスートは、クラブとスペードが黒塗り、ハートとダイヤが白抜き(♣ ♢ ♡ ♠)という非対称な組み合わせで、塗りつぶしたハートやダイヤは標準では出せません。テキストモードで揃った四つが欲しいなら、次節の pifont の \ding{168}〜\ding{171} が答えになります。
四角と菱形は、どのパッケージに入っているかが混同されやすい ところです。TeX Live 2024 のソースを見ると答えははっきりしています。\Box(□)と \Diamond(◇)は latexsym の lasy フォント(latexsym.sty に \DeclareMathSymbol\Box{\mathord}{lasy}{"32})で、amssymb には入っていません。amssymb が持っているのは \square・\lozenge とその塗りつぶし版 \blacksquare・\blacklozenge(AMSa フォント)です。つまり \Box は latexsym、\square は amssymb。チェックマーク \checkmark とマルタ十字 \maltese は amsfonts の定義で、amssymb を読み込めば一緒に来ます。
| 命令 | 記号 | パッケージ | 備考 |
|---|---|---|---|
\clubsuit \spadesuit | ♣ ♠ | 標準(不要) | 黒塗り。数式モードで使う |
\heartsuit \diamondsuit | ♡ ♢ | 標準(不要) | 白抜き。塗りつぶしは標準では出せない |
\triangle | △ | 標準(不要) | \triangleq(≜)などとは別命令 |
\Box \Diamond | □ ◇ | latexsym | 様相論理の必然・可能。amssymb ではない |
\square \lozenge | □ ◊ | amssymb | 塗りつぶしは \blacksquare・\blacklozenge |
\checkmark \maltese | ✓ ✠ | amssymb | 実体は amsfonts の定義。数式モードで使う |
ここでも PDF に残るものに注意が要ります。latexsym の lasy フォントには Unicode への対応表が付いていないので、TeX Live 2024 で $\Box \Diamond \mho \Join$ を組んだ PDF から文字を抜くと 2 3 0 1 という数字列 が返ってきます。読者が本文をコピーして検索する可能性がある文書なら、同じ意味なら amssymb の \square・\lozenge を選ぶほうが安全です。なお latexsym は、AMS フォントが既に読み込まれていると先頭で \endinput して何もしない設計になっている点も覚えておくと、パッケージの読み込み順で悩まずに済みます。
\usepackage{amssymb} % \square \lozenge \blacksquare \checkmark
\usepackage{latexsym} % \Box \Diamond \mho \Join
\usepackage{pifont} % \ding{168}--\ding{171}: solid suits in TEXT mode
% ...
Math: $\clubsuit\, \diamondsuit\, \heartsuit\, \spadesuit\, \triangle$
Text: \ding{168}\ding{169}\ding{170}\ding{171}pifont の \ding{番号} ——実際にコンパイルして確かめた番号表
チェックマーク、ハサミ、星、指差し手といった絵記号は Zapf Dingbats というフォントにまとまっていて、\usepackage{pifont} のあと \ding{NN} と 番号で 呼び出します。番号は覚えるものではなく引くものですが、ネット上に出回っている対応表には食い違いがあるので、TeX Live 2024 で 32〜126 と 161〜254 を全部組んで pdftotext で確認しました。よく使われるものを挙げると——\ding{51} が ✓(細いチェック)、\ding{52} が ✔(太いチェック)、\ding{53} が ✕、\ding{55} が ✗(投票用のバツ)、\ding{56} が ✘(太いバツ)。星 ★ は \ding{72} で、\ding{43} は ☞(右を指す手)、\ding{164} は ❤(塗りつぶしのハート)です。
| 記法 | 出るもの | 番号帯 | 備考 |
|---|---|---|---|
\ding{51} \ding{52} | ✓ ✔ | 51–56 | チェックの細字と太字。53–56 は ✕ ✖ ✗ ✘ |
\ding{43} | ☞ | 42–43 | 42 は左向きの ☛ |
\ding{72} | ★ | 65–107 | 星・花・雪の大きな帯。★ は 72 |
\ding{168} | ♣ | 168–171 | ♣ ♦ ♥ ♠ の順。テキストモードの塗りつぶしスート |
\ding{164} | ❤ | 161–167 | 塗りつぶしのハート。165–167 は ❥ ❦ ❧ |
\ding{172} | ① | 172–211 | 172–181 が ①–⑩、182–191 が ❶–❿ |
\ding{213} | → | 212–254 | 矢印の帯。214 は ↔、215 は ↕ |
\dingline{56} | その記号を横に並べた飾り罫 | — | \dingfill{NN} は \hfill の記号版 |
dinglist | 行頭記号がダインの箇条書き | — | dingautolist は番号を 1 ずつ進める |
\Pisymbol{psy}{NN} | Symbol フォントの記号 | — | ZapfDingbats 以外の Pi フォントを呼ぶ汎用命令 |
\usepackage{pifont}
% ...
\ding{51}\ pass \qquad \ding{55}\ fail \qquad \ding{72}\ starred
\dingline{56} % a rule made of that symbol
\begin{dingautolist}{172} % numbers step: (1) (2) (3) ...
\item first step
\item second step
\end{dingautolist}fontawesome5 のアイコン——\faGithub と \faIcon{github}
ブランドのロゴや歯車・封筒・電話といった UI アイコンを本文に入れるなら \usepackage{fontawesome5} です。呼び出し方は二通りあり、アイコン名をキャメルケースにして fa を冠した専用命令(\faGithub、\faEnvelope、\faAddressBook)か、公式名を中括弧で渡す汎用命令 \faIcon{github}。スタイルは solid(既定の塗り)・regular(線画)・brands(ロゴ) の三種で、\faIcon[regular]{heart} のように省略可能引数で選びます(ブランドロゴは自動的に brands 扱い)。エンジン依存が一点だけあります——pdfLaTeX でも無料セット(Font Awesome 5 Free)は使えますが、全アイコン・全スタイル、および有償の Pro セットには XeLaTeX か LuaLaTeX が必要 です。
\usepackage{fontawesome5}
% ...
Source: \faGithub\ github.com/example \quad \faEnvelope\ mail@example
\faIcon{rocket} \quad \faIcon[regular]{heart} % outlined style
\faCog \quad \faCheck \quad \faPython日本語の丸数字と異体字——otf の \ajMaru と \UTF
日本語組版では、丸数字 ①②③、角囲みの数字、ローマ数字 Ⅰ Ⅱ Ⅲ、そして人名に現れる異体字(﨑・髙・𠮷)を出したい場面があります。これを担うのが otf(japanese-otf)パッケージ で、\usepackage{otf} を読み込むと Adobe-Japan1 のグリフを呼ぶ命令群が使えます。丸囲み・角囲みは数字を引数に渡すだけ——\ajMaru{3} が ③、\ajKaku{3} が角囲み、\ajKuroMaru{3} が黒地に白抜きの数字、\ajRoman{3} が Ⅲ、\ajroman{3} が ⅲ、\ajKakko{3} が (3) です。命令の用意がないグリフは 符号位置で直接呼ぶ \UTF{XXXX}(4〜5 桁の 16 進数)か、Adobe-Japan1 の CID を指定する \CID{番号} で取り出します。
注意すべきはエンジンです。otf は pLaTeX/upLaTeX 専用 で、DVI を経由して dvipdfmx で PDF にする経路が前提になっています。pdfLaTeX では動きません。LuaLaTeX なら luatexja-otf、XeLaTeX なら zxotf が同じ役割を担います。otf 自体にも deluxe(多ウェイト)・expert(縦組み・横組みで字形を切り替える)・jis2004(JIS2004 字形)といったオプションがあります。なお 丸数字だけなら、エンジンを選ばない別解が前節にあります ——pifont の \ding{172}〜\ding{181} が ①〜⑩ を出すので、pdfLaTeX の文書でも使えます。
% pLaTeX / upLaTeX only; produce the PDF with dvipdfmx
\documentclass{ujarticle}
\usepackage[deluxe]{otf}
\begin{document}
\ajMaru{1}\ajMaru{2}\ajMaru{3} \quad \ajKakko{1} \quad \ajRoman{3}
\UTF{FA11} % a variant kanji, called by code point
\CID{13706} % or by Adobe-Japan1 CID
\end{document}まとめると住み分けはこうなります。欧文の記号(© ® ™ € § ¶ ‰ ° ℃)は LaTeX 標準——2020 年以降 textcomp は不要で、必要なのは警告を出させたいときだけ。トランプのスートと △ も標準、□ ◇ は latexsym、\square 系は amssymb。絵記号は pifont の \ding を番号で、UI とブランドのアイコンは fontawesome5、日本語の丸数字と異体字は otf の \ajMaru/\UTF。取り違えやすいのはエンジン依存の一点だけです——textcomp(=カーネル)と pifont はどこでも動き、fontawesome5 は全機能なら Unicode エンジン、otf は pLaTeX/upLaTeX に限られます。