Symboles textuels et icônes

Copyright ©, marque déposée ®, pied-de-mouche ¶, signe de section §, pour mille ‰, degré Celsius ℃ — la sagesse reçue veut que composer ces symboles de texte en LaTeX exige \usepackage{textcomp}. Cela a cessé d’être vrai avec la version du noyau du 2 février 2020. Tout le répertoire du codage TS1 (Text Companion) a été intégré à LaTeX lui-même, et sur TeX Live 2024, \textcopyright, \texttrademark et \textcelsius s’impriment sans une seule ligne de package dans le préambule. textcomp.sty est même devenu un package qui ne définit plus aucun symbole : seulement des options. Cette page vérifie par la compilation ce qui relève désormais du standard et ce qui demande encore un package, puis rassemble le reste en tables : la famille de \S et \P, les couleurs de cartes ♠ ♥ ♦ ♣, une table des numéros \ding de pifont établie par mesure, les icônes de fontawesome5, et les nombres cerclés et glyphes variantes japonais.

\usepackage{textcomp} n’est plus nécessaire : TS1 est entré dans le noyau en 2020

Composez © ® ™ ℠ € ¢ ¥ £ ‰ ° ℃ • ¶ § ¦ ♪ ℮ ¤ № ※ ‽ Ω µ ₩ ₤ ƒ ₦ sur TeX Live 2024 sans charger le moindre package : pas un avertissement, pas une erreur. Ouvrez textcomp.sty et vous comprenez pourquoi. Le fichier commence par \ProvidesPackage{textcomp}[2020/02/02 v2.0n], et son corps ne contient que des déclarations d’options : full, almostfull, euro, safe, error, warn, info, quiet, force. Pas une seule définition de symbole n’y subsiste ; toutes ont migré dans latex.ltx.

Ce déménagement n’était pas un simple rangement : il a corrigé la sortie. Avant 2020, les valeurs par défaut de \textbullet, \textdagger, \textsection, \textparagraph, \textperiodcentered et consorts n’étaient pas TS1 mais OMS — la fonte des symboles mathématiques. Le § de votre texte courant était donc discrètement emprunté aux mathématiques. L’écart se mesure : dans un document composé en Helvetica, \textsection fait 5,55994 pt de large (le § propre à Helvetica) tandis que \textlegacysection, qui reproduit l’ancien comportement, fait 4,44447 pt (le § mathématique de Computer Modern). Pour \textbullet, l’écart se creuse encore : 3,5 pt contre 5,00002 pt. Des portes de sortie subsistent : \UseLegacyTextSymbols rétablit d’un bloc l’ancien comportement, et des commandes symbole par symbole comme \textlegacybullet existent également.

document.tex
\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}

Dans le texte courant, les deux impriment le même ©. La différence porte sur le comportement en mode mathématique. La définition dans latex.ltx est \DeclareRobustCommand{\copyright}{\ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi} : \copyright examine donc le mode et bascule tout seul, tandis que \textcopyright est réservé au texte. \pounds (£) est bâti de la même façon et devient \mathsterling dans une formule. En pratique : dans le corps, l’un vaut l’autre ; à un endroit dont on ne voit pas le contexte, dans une macro par exemple, \copyright est le plus sûr des deux.

Il vaut aussi la peine de regarder l’implémentation par défaut de \texttrademark. latex.ltx porte encore \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}, ainsi qu’une définition de \textregistered fondée sur \textcircled{...}. Autrement dit, dans un environnement de fontes qui n’atteint pas TS1, ™ n’est pas un vrai glyphe mais un faux fait d’un T et d’un M en exposant, et ® une composition superposant un rond à une lettre. Depuis 2020 la valeur par défaut est TS1, on ne voit donc plus guère cela ; mais choisissez une police dépourvue des glyphes TS1 et l’ancienne implémentation refait surface. Notez enfin qu’un mot de contrôle absorbe l’espace qui le suit : au milieu d’un mot, écrivez \textregistered{} avec des accolades vides, ou ajoutez \ .

CommandeSymboleSensRemarques
\textcopyright©copyright\copyright fonctionne aussi en mode mathématique
\textregistered®marque déposéesans TS1, retombe sur une composition \textcircled
\texttrademarkmarque commercialele repli est un faux : \textsuperscript{TM}
\textservicemarkmarque de servicepour les services plutôt que les biens, surtout aux États-Unis
\texteuroeuropour une forme uniforme, voir \euro d’eurosym plus bas
\textcent¢cent\textsterling donne £ et \textyen donne ¥
\textperthousandpour millepour dix mille ‱ : \textpertenthousand
\textdegree°degréaccolé à un nombre, \ang / \qty de siunitx sont plus sûrs
\textcelsiusdegré Celsiusla ligature ℃ ; Computer Modern la possède
\textnumerosigne numérole « n° » des usages russe et français
\textmusicalnotecrochepour le texte courant ; la gravure musicale est un autre sujet
\textbrokenbar¦barre brisée\textbardbl donne la double barre ‖ ; aucune n’est celle des maths
\textestimatedsigne estiméle « e » des emballages de l’UE
\textinterrobangpoint exclarrogatifla ligature ?! ; présente dans cmr, absente de beaucoup de fontes
\textcircled{a}lettre cercléeune composition ; Computer Modern superpose un rond

§, ¶ et † : \S, \P et \dag fonctionnent aussi en mode mathématique

Ces quatre-là sont rares parmi les symboles : ils examinent eux-mêmes le mode. Les définitions de latex.ltx se lisent telles quelles : \DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi} et \DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}. Aussi une référence d’article \S 3 dans le texte et un appel de note x^\dag dans une formule passent-ils tous deux. \dag (†) et \ddag (‡) sont bâtis pareillement et deviennent \dagger et \ddagger en mathématiques. Notez que \S est le signe de section, non un chapitre : dans la citation juridique et les documents normatifs, c’est la marque usuelle d’un article numéroté, et le doubler en \S\S signifie conventionnellement plusieurs articles.

CommandeSymboleTexte / mathsRemarques
\S§les deuxsigne de section ; \textsection est le synonyme texte
\Ples deuxpied-de-mouche ; \textparagraph donne le même
\dagles deuxobèle ; devient \dagger en mathématiques
\ddagles deuxdouble obèle ; \ddagger en mathématiques
\copyright©les deuxen mathématiques, il repasse au texte via \nfss@text
\pounds£les deuxen mathématiques, devient \mathsterling, le £ italique

Comprendre Symbol \textohm not provided by font family cmr in TS1 encoding.

Cet avertissement signale que le symbole ne figure pas dans votre fonte de texte et que LaTeX l’a emprunté à une autre. TS1 compte environ 128 positions, et seule une minorité de fontes de texte les remplit toutes. LaTeX suit donc, via \DeclareEncodingSubset, la part de TS1 que chaque famille implémente. latex.ltx en donne les valeurs réelles : Computer Modern (cmr) est en sous-ensemble 0, c’est-à-dire complet, Latin Modern (lmr) en 1, Helvetica (phv) et Courier (pcr) en 5 — un commentaire y précise que blank, interrobang et ohm y sont des tofus — et une famille inconnue est en 9, le strict minimum. Lorsque le symbole demandé sort du sous-ensemble, LaTeX bascule vers une famille de remplacement, l’y compose et émet cet avertissement.

C’est ici, enfin, que textcomp gagne son écot. Par défaut, ce rapport n’est même pas un avertissement : c’est un \@latex@info qui ne va que dans le journal. Ajoutez \usepackage[warn]{textcomp} et il devient un véritable avertissement ; [error] en fait une erreur et [quiet] le fait taire. Pour relire un document dont on a changé la police, une passe avec [warn] montre d’un coup d’œil quels symboles sont composés dans une fonte d’emprunt. Au passage, \textbackslash et \textbar ne relèvent pas du tout de TS1 : leur valeur par défaut est OMS, la fonte des symboles mathématiques, et il faut charger T1 pour obtenir le caractère de la fonte de texte. \textasciitilde va plus loin encore : son implémentation par défaut est une composition posant un tilde sur un caractère vide.

document.tex
% 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.

Pour le seul signe euro, un package dédié reste en service. \usepackage{eurosym} fournit \euro, et des options comme official et gen choisissent une forme proche du dessin officiel de la Commission européenne. Mais extrayez le texte d’un PDF TeX Live 2024 contenant le \euro d’eurosym : il en sort un simple e (alors que \texteuro rend un vrai €). C’est peut-être plus beau à l’impression ; pour un document qui doit résister au copier-coller et à la recherche, \texteuro est le choix pratique.

Composer les couleurs ♠ ♥ ♦ ♣ et les formes △ □ ◇

Les couleurs sont des symboles mathématiques du LaTeX standard et ne demandent aucun package : fontmath.ltx contient quatre lignes consécutives, de \DeclareMathSymbol{\clubsuit}{\mathord}{symbols}{"7C} jusqu’à \spadesuit ; il suffit donc d’écrire $\clubsuit$, $\diamondsuit$, $\heartsuit$ et $\spadesuit$ en mode mathématique. \triangle (△) loge à la même adresse. Mais les couleurs de Computer Modern sont asymétriques : trèfle et pique sont pleins, cœur et carreau évidés (♣ ♢ ♡ ♠), et un cœur ou un carreau plein n’existe tout simplement pas dans le jeu standard. Pour quatre couleurs homogènes en mode texte, la réponse est \ding{168} à \ding{171} de pifont, à la section suivante.

Les carrés et les losanges sont l’endroit où l’on se trompe le plus souvent de package. Les sources de TeX Live 2024 tranchent. \Box (□) et \Diamond (◇) viennent de latexsym et de sa fonte lasylatexsym.sty contient \DeclareMathSymbol\Box{\mathord}{lasy}{"32} — et ne sont pas dans amssymb. Ce que fournit amssymb, ce sont \square et \lozenge, avec leurs versions pleines \blacksquare et \blacklozenge, issues de la fonte AMSa. En bref : \Box relève de latexsym, \square d’amssymb. La coche \checkmark et la croix de Malte \maltese sont définies dans amsfonts, que amssymb charge pour vous.

CommandeSymbolePackageRemarques
\clubsuit \spadesuit♣ ♠aucunpleins ; à employer en mode mathématique
\heartsuit \diamondsuit♡ ♢aucunévidés ; pas de version pleine dans le jeu standard
\triangleaucunà distinguer de \triangleq (≜) et apparentés
\Box \Diamond□ ◇latexsymnécessité et possibilité en logique modale ; pas amssymb
\square \lozenge□ ◊amssymbversions pleines : \blacksquare et \blacklozenge
\checkmark \maltese✓ ✠amssymben réalité définis dans amsfonts ; en mode mathématique

Là encore, attention à ce qui subsiste dans le PDF. La fonte lasy derrière latexsym n’embarque aucune table de correspondance Unicode : extraire le texte d’un PDF TeX Live 2024 contenant $\Box \Diamond \mho \Join$ renvoie la suite de chiffres 2 3 0 1. Si vos lecteurs peuvent copier et rechercher le texte, préférez \square et \lozenge d’amssymb lorsque le sens le permet. Il est également bon de savoir que latexsym est écrit de façon à faire \endinput d’emblée, sans rien faire, si les fontes AMS sont déjà en place — de quoi cesser de s’inquiéter de l’ordre de chargement des packages.

latex
\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}

\ding{N} de pifont : une table de numéros vérifiée par compilation

Les pictogrammes — coches, ciseaux, étoiles, mains pointées — sont regroupés dans la police Zapf Dingbats, accessible via \usepackage{pifont} puis \ding{NN}, qui sélectionne un glyphe par son numéro. Ces numéros se consultent, ils ne s’apprennent pas ; et comme les tables qui circulent en ligne se contredisent, celle-ci a été établie en composant 32–126 et 161–254 sur TeX Live 2024 et en relisant le résultat avec pdftotext. Les plus utiles : \ding{51} donne ✓ (coche fine), \ding{52} donne ✔ (coche grasse), \ding{53} donne ✕, \ding{55} donne ✗ (la croix de bulletin) et \ding{56} donne ✘ (la croix grasse). L’étoile ★ est \ding{72}, \ding{43} est ☞, une main pointant à droite, et \ding{164} est ❤, un cœur plein.

FormeRésultatPlageRemarques
\ding{51} \ding{52}✓ ✔51–56coche fine et grasse ; 53–56 sont ✕ ✖ ✗ ✘
\ding{43}42–4342 est la main vers la gauche ☛
\ding{72}65–107la grande plage d’étoiles et de fleurs ; ★ est 72
\ding{168}168–171dans l’ordre ♣ ♦ ♥ ♠ — couleurs pleines en mode texte
\ding{164}161–167un cœur plein ; 165–167 sont ❥ ❦ ❧
\ding{172}172–211172–181 donnent ①–⑩ et 182–191 donnent ❶–❿
\ding{213}212–254la plage des flèches ; 214 est ↔ et 215 est ↕
\dingline{56}une règle décorative faite de ce symbole\dingfill{NN} est un \hfill rempli de symboles
dinglistliste dont les marqueurs sont un dingbatdingautolist incrémente le numéro à chaque élément
\Pisymbol{psy}{NN}un glyphe de la police Symboll’appel générique pour les polices Pi autres que ZapfDingbats
latex
\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}

Les icônes de fontawesome5 : \faGithub et \faIcon{github}

Pour les logos de marque et les icônes d’interface — roue dentée, enveloppe, téléphone —, chargez \usepackage{fontawesome5}. Deux façons d’appeler une icône : une commande dédiée formée en mettant le nom en camel case avec le préfixe fa (\faGithub, \faEnvelope, \faAddressBook), ou la commande générique \faIcon{github}, qui reçoit le nom officiel entre accolades. Trois styles existent — solid (le plein par défaut), regular (contour) et brands (logos) — choisis par un argument optionnel, comme dans \faIcon[regular]{heart} ; les logos de marque sont automatiquement traités en brands. Une seule dépendance au moteur : pdfLaTeX donne accès au jeu gratuit (Font Awesome 5 Free), mais l’ensemble complet avec tous les styles, ainsi que le jeu payant Pro, exigent XeLaTeX ou LuaLaTeX.

latex
\usepackage{fontawesome5}
% ...
Source: \faGithub\ github.com/example \quad \faEnvelope\ mail@example
\faIcon{rocket} \quad \faIcon[regular]{heart}   % outlined style
\faCog \quad \faCheck \quad \faPython

Nombres cerclés et kanji variantes en japonais : \ajMaru et \UTF d’otf

La composition japonaise réclame des nombres cerclés ①②③, des chiffres encadrés, des chiffres romains Ⅰ Ⅱ Ⅲ, ainsi que les kanji variantes qui apparaissent dans les noms propres (﨑, 髙, 𠮷). C’est le rôle du package otf (japanese-otf) : \usepackage{otf} fournit une famille de commandes accédant aux glyphes Adobe-Japan1. Les nombres cerclés ou encadrés prennent simplement le nombre en argument — \ajMaru{3} donne ③, \ajKaku{3} la version encadrée, \ajKuroMaru{3} le blanc sur noir, \ajRoman{3} donne Ⅲ, \ajroman{3} donne ⅲ et \ajKakko{3} donne (3). Pour les glyphes sans commande dédiée, on passe par le point de code avec \UTF{XXXX} (hexadécimal à quatre ou cinq chiffres) ou par le CID Adobe-Japan1 avec \CID{numéro}.

Le moteur compte. otf est réservé à pLaTeX / upLaTeX et suppose le passage par DVI puis dvipdfmx pour produire le PDF ; il ne fonctionne pas sous pdfLaTeX. Sous LuaLaTeX, utilisez luatexja-otf ; sous XeLaTeX, zxotf. Le package lui-même accepte des options comme deluxe (plusieurs graisses), expert (formes changeant entre composition verticale et horizontale) et jis2004 (formes JIS 2004). Notez enfin que pour les seuls nombres cerclés, la section précédente offre une solution indépendante du moteur : \ding{172} à \ding{181} de pifont donnent ①–⑩ et fonctionnent dans un document pdfLaTeX.

document.tex
% 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}

Pour résumer la répartition : les symboles occidentaux (© ® ™ € § ¶ ‰ ° ℃) relèvent du LaTeX standard — depuis 2020, textcomp ne sert plus qu’à obtenir les rapports de substitution. Les couleurs de cartes et △ sont également standard ; □ et ◇ viennent de latexsym, la famille \square d’amssymb. Les pictogrammes viennent de \ding dans pifont, appelés par numéro, les icônes d’interface et de marque de fontawesome5, et les nombres cerclés et kanji variantes japonais de \ajMaru et \UTF dans otf. Une seule chose se confond facilement : le moteur. textcomp (c’est-à-dire le noyau) et pifont fonctionnent partout, fontawesome5 réclame un moteur Unicode pour tout couvrir, et otf reste cantonné à pLaTeX / upLaTeX.