Calligraphiques et script

La craie ne peut pas être grasse. Aussi, dans les amphithéâtres du milieu du XXe siècle, les mathématiciens ont-ils pris l'habitude de repasser certains traits une seconde fois : la ligne dédoublée tenait lieu de gras. Cette habitude de tableau noir a fini par être gravée en caractères d'imprimerie sous le nom de gras de tableau noir, dont descendent les ℝ, ℕ et ℤ imprimés. LaTeX propose quatre alphabets ornementaux : la calligraphie \mathcal, la script \mathscr, la fraktur \mathfrak et le gras de tableau noir \mathbb. Le plus gênant est que \mathbb, le plus demandé, n'est pas intégré, tandis que \mathcal, qui l'est, accepte une lettre minuscule sans broncher et compose en silence un tout autre symbole. Cette page sert à distinguer les quatre et à les employer sans accident.

\mathcal, \mathscr, \mathfrak, \mathbb : les différences

Les quatre ne diffèrent que par la fonte qu'ils appellent et par la part de l'alphabet que cette fonte contient réellement. Et voici le pivot de toute la page : \mathcal{A} n'est pas une commande qui transforme A en lettre calligraphique. Elle ne change que la famille de fontes mathématiques en vigueur sur son argument ; la position du caractère (l'emplacement) reste intacte. Le A demeure l'instruction « emplacement 65 de la fonte courante », désormais adressée à une autre fonte — et ce qui occupe cet emplacement sera composé. Presque tous les accidents liés à ces quatre alphabets découlent de ce seul fait.

CommandeAspectPackage requisCaractères présents
\mathcalcapitales calligraphiques fluidesaucun — intégrémajuscules A–Z seulement
\mathscrscript formelle fortement inclinéemathrsfs (ou eucal)majuscules A–Z seulement
\mathfrakgothique anguleuseamssymb ou amsfontsmajuscules, minuscules, chiffres
\mathbbgras à traits dédoublésamssymb ou amsfontsmajuscules A–Z seulement (plus \Bbbk)

Deux déséquilibres sautent aux yeux dans le tableau : seul \mathcal est intégré, et seul \mathfrak possède des minuscules. À eux deux, ces points expliquent la plupart des pièges qui suivent. Commençons par la question la plus recherchée : comment écrit-on ℝ ?

Écrire ℝ, ℕ et ℤ — et pourquoi \mathbb exige amssymb

Mettez \usepackage{amssymb} dans le préambule et écrivez $\mathbb{R}$ dans le corps du texte : c'est toute la recette. amsfonts fournit le même \mathbb (amssymb charge amsfonts en interne). Sans le package, la compilation s'arrête sur ! Undefined control sequence. LaTeX brut ne possède aucun gras de tableau noir : ce n'est pas une erreur de configuration, c'est le choix d'origine.

document.tex
\usepackage{amssymb}   % gives \mathbb, \mathfrak and \Bbbk
% ...
\[
  \mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q}
    \subset \mathbb{R} \subset \mathbb{C}
\]

Pourquoi n'est-ce pas intégré ? Par goût de Knuth. Le gras de tableau noir semble être né en France à la fin des années 1950 et s'être imposé au département de mathématiques de Princeton au début des années 1960 ; il gagne l'imprimé au milieu des années 1960, avec entre autres Analytic Functions of Several Complex Variables de Gunning et Rossi (1965). Knuth, lui, préférait le vrai gras et a délibérément écarté le gras de tableau noir de Computer Modern, la fonte qu'il avait créée pour TeX. C'est l'AMS qui a comblé le vide en 1985, avec un gras de tableau à l'allure de craie destiné à AMS-TeX, alors accessible par la commande \Bbb — un nom qui survit aujourd'hui encore dans amsfonts.sty sous forme d'alias obsolète redirigé vers \mathbb. En marge de cette affaire de goût : Jean-Pierre Serre employait le gras de tableau noir en cours, mais du gras ordinaire, invariablement, dans ses publications.

  • \mathbb{R} — les nombres réels ℝ.
  • \mathbb{C} — les nombres complexes ℂ.
  • \mathbb{Z} — les entiers relatifs ℤ, d'après l'allemand Zahlen (« nombres ») ; le choix est attribué à Hilbert et le plus ancien emploi connu dans un manuel se trouve dans l'Algèbre de Bourbaki (1947).
  • \mathbb{Q} — les nombres rationnels ℚ.
  • \mathbb{N} — les entiers naturels ℕ.
  • \mathbb{F}_q — le corps fini à q éléments ; l'indice reste en italique ordinaire.

\mathbb{k} donne ℸ — pour les minuscules, \Bbbk

Ne donnez jamais de minuscule à \mathbb. Réclamez un k en gras de tableau noir avec \mathbb{k} et vous obtiendrez, sans avertissement ni erreur, la lettre hébraïque daleth ℸ. C'est la conséquence directe du principe ci-dessus : k reste l'instruction « emplacement 107 », instruction adressée à la fonte msbm, où cet emplacement est occupé par \daleth. Pour la même raison, \mathbb{a} produit le G retourné ⅁ (\Game) et \mathbb{1} le signe ⊮ (\nVdash). Tout cela compile sans broncher : rien ne vous alerte avant l'examen du PDF.

document.tex
% lowercase blackboard bold is its own command, not \mathbb{k}
\[
  \Bbbk = \overline{\Bbbk}, \qquad V \otimes_{\Bbbk} W
\]

La bonne forme est \Bbbk. amssymb fournit le k minuscule en gras de tableau noir comme symbole autonome, ce dont ont précisément besoin les textes d'algèbre qui appellent k un corps. Notez qu'il ne prend pas d'argument : \Bbbk, et non \mathbb{k}. Pour toute autre minuscule ou chiffre — un 1 ou un 2 en gras de tableau, un h minuscule — il faut un autre package de fontes. dsfont propose les capitales plus h, k et le chiffre 1 via \mathds ; bbm fournit minuscules et chiffres via \mathbbm ; bbold redéfinit \mathbb lui-même et couvre bien davantage. Ce dernier entre en conflit avec amssymb : si les deux figurent dans le même document, décidez d'abord lequel possède \mathbb.

\mathcal n'a que des majuscules : \mathcal{a} donne ⊣

Limitez l'argument de \mathcal aux capitales A–Z. \mathcal{a} ne donne pas un a calligraphique mal formé, mais un ⊣ (\dashv) sans le moindre rapport — et pas même un avertissement. \mathcal est défini par \DeclareSymbolFontAlphabet{\mathcal}{symbols}, c'est-à-dire un basculement vers la fonte de symboles mathématiques cmsy10 : celle-ci loge les capitales calligraphiques aux emplacements 65 à 90, tandis que les positions des minuscules et des chiffres abritent de tout autres symboles. Et comme tous les emplacements de cette fonte sont occupés, TeX n'a jamais l'occasion de dire « ce caractère n'existe pas » : il compose sans bruit le voisin qu'il trouve.

Ce que vous écrivezCe qui apparaîtSymbole logé à cet emplacement
\mathcal{a}\dashv
\mathcal{b}\lfloor
\mathcal{g}}\rbrace
\mathcal{o}\wr
\mathcal{1}\infty
\mathcal{2}\in

Pour la même raison, \mathcal{Hom} ne compose pas le mot « Hom » — ni même trois lettres calligraphiques : seul le H l'est, le o et le m sortent en ≀ et ⇕. Retenez que l'argument d'un alphabet ornemental est traité comme une suite de symboles, pas comme un mot. La règle pratique est simple : ne donner à \mathcal qu'une seule capitale. \mathcal{A} pour une famille d'ensembles, \mathcal{F} pour la transformée de Fourier, \mathcal{B} pour une tribu, \mathcal{O} pour un anneau d'entiers — c'est à cela qu'il sert.

Différence entre \mathcal et \mathscr : charger mathrsfs

\mathcal est l'alphabet calligraphique de la fonte intégrée cmsy10 ; \mathscr est la script de rsfs10, que \usepackage{mathrsfs} met à disposition. Côte à côte, ce sont manifestement deux mains différentes : \mathcal est large et sobrement ornée, \mathscr penche fortement vers la droite avec un net contraste entre pleins et déliés — une véritable script formelle, celle qu'on emploie d'ordinaire pour le \mathscr{L} d'une transformée de Laplace ou d'un lagrangien. Pour disposer de deux alphabets ornementaux distincts dans un même article, c'est l'association la moins problématique.

document.tex
\usepackage{mathrsfs}   % adds \mathscr (RSFS); \mathcal is left alone
% ...
\[
  \mathcal{F} \subset \mathcal{P}(X), \qquad
  \mathscr{L}\{f\}(s) = F(s)
\]

RSFS est l'abréviation de Ralph Smith’s Formal Script. Ralph Smith, physicien à l'université de Californie à San Diego, l'a dessinée en Metafont et en a publié la version 1.0 en octobre 1991. Dans le README livré avec la fonte, il explique avoir imité de près une script formelle dessinée par R. Hunter Middleton, elle-même issue des écritures spencérienne et anglaise (Copperplate) répandues au XVIIIe siècle. Le même README dit son espoir d'ajouter un jour des minuscules pour en faire une fonte de texte — révision qui n'est jamais venue. C'est pourquoi, aujourd'hui encore, écrire \mathscr{a} inscrit ceci dans le journal : Missing character: There is no a in font rsfs10!

Cette ligne est en réalité une bonne nouvelle. Là où \mathcal substitue en silence un autre symbole, \mathscr signale honnêtement le caractère manquant : rsfs10 ne contient que des capitales, TeX peut donc le dire. Une seconde famille se cache aussi derrière \mathscr : l'Euler Script, appelée par le package eucal. Euler a été dessinée par Hermann Zapf en 1980-81 à la demande de l'AMS ; elle cherche à restituer l'écriture d'un mathématicien au tableau — droite plutôt qu'inclinée. Son allure n'a rien à voir avec la main classique très penchée du RSFS.

Manière de le chargerCe que vous obtenezFonte produite
\usepackage{mathrsfs}\mathscr (\mathcal intact)RSFS
\usepackage[scr]{rsfso}\mathscrRSFS à pente plus douce
\usepackage[mathscr]{eucal}\mathscr (\mathcal intact)Euler Script
\usepackage{eucal}\mathcal remplacéEuler Script
\usepackage{calrsfs}\mathcal remplacéRSFS

Les pièges se trouvent dans la moitié basse du tableau. calrsfs et un eucal sans option écrasent \mathcal lui-même. Une bonne part des questions du type « mon \mathcal a changé d'aspect » ou « les lettres diffèrent de la compilation de mon coauteur » remonte à l'ajout de l'un de ces packages par quelqu'un. De plus, si vous chargez à la fois mathrsfs et eucal avec l'option mathscr, le dernier chargé emporte \mathscr et vous obtenez une fonte que vous n'avez pas choisie. Tenez-vous-en à une seule famille de script. C'est la seule défense fiable.

Pourquoi \mathfrak est l'alphabet des idéaux et des algèbres de Lie

\mathfrak arrive lui aussi avec amssymb (ou amsfonts), mais c'est le seul des quatre à porter capitales, minuscules et chiffres. C'est aussi le seul dont le travail quotidien repose sur les minuscules. Les idéaux s'écrivent \mathfrak{p} pour un idéal premier, \mathfrak{m} pour un idéal maximal, \mathfrak{a} en général ; les algèbres de Lie s'écrivent \mathfrak{g}, \mathfrak{h}, \mathfrak{sl}, ce qui les distingue d'emblée des groupes de Lie G et H correspondants.

Pourquoi la gothique ? La raison tient à l'histoire de l'imprimerie, non aux mathématiques. Dans l'Allemagne du XIXe siècle, les livres en allemand se composaient ordinairement en fraktur. En 1876, Richard Dedekind, dans les suppléments qu'il rédigea pour la troisième édition des Vorlesungen über Zahlentheorie de Dirichlet, remplaça les nombres idéaux de Kummer par des ensembles concrets de nombres qu'il baptisa idéaux. La fraktur était simplement l'alphabet contrastant qu'un compositeur allemand avait sous la main : les idéaux s'écrivirent donc en minuscules gothiques. Longtemps après que l'imprimerie allemande a renoncé à ce caractère, seule la notation algébrique en perpétue l'usage.

document.tex
\usepackage{amsmath,amssymb}   % amssymb: \mathfrak — amsmath: \operatorname
% ...
\[
  \mathfrak{g} = \operatorname{Lie}(G), \qquad
  \mathfrak{p} \subset \mathfrak{m} \subset \mathcal{O}
\]

La fraktur qu'appelle amssymb n'est d'ailleurs pas un caractère du XIXe siècle, mais l'Euler Fraktur (fonte eufm10), dessinée par Hermann Zapf dans le cadre de l'AMS Euler. La lisibilité y gagne beaucoup — l'alphabet n'en reste pas moins chargé. Accumulez \mathfrak dans les indices, ou partout où le corps est petit, et \mathfrak{p} cesse de se distinguer de \mathfrak{q}. Là où la taille diminue, mieux vaut passer à un autre symbole ou nommer la lettre une fois dans le texte courant.

Avec XeLaTeX et LuaLaTeX : unicode-math et \symbb

Sous XeLaTeX ou LuaLaTeX avec unicode-math, les quatre alphabets ornementaux proviennent d'une seule fonte mathématique OpenType et s'appellent par \symbb, \symcal, \symscr et \symfrak. Comme c'est le caractère Unicode lui-même qui est sélectionné, la plupart des pièges de cette page s'évanouissent : \symbb{k} donne bel et bien 𝕜, et il n'y a plus de \Bbbk à retenir. Ce que vous obtenez dépend toutefois de la richesse de la fonte mathématique choisie — savoir si \symcal et \symscr peuvent différer visuellement, par exemple, relève de la fonte. Le choix selon le moteur est traité dans la page « Fontes mathématiques ».

document.tex
% XeLaTeX or LuaLaTeX only
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
% ...
\[
  \symbb{R}, \quad \symcal{F}, \quad \symscr{L},
  \quad \symfrak{g}, \quad \symbb{k}
\]