Polices mathématiques

Les lettres en mode mathématique sont par défaut en italique mathématique, mais de nombreux domaines demandent un alphabet mathématique précis : le ℝ en gras tableau de la théorie des ensembles, les lettres script pour les foncteurs, la Fraktur ornementée pour les algèbres de Lie. Cette page met de l’ordre dans les commandes d’alphabet mathématique comme \mathbf et \mathbb, les paquets nécessaires, et la différence entre \boldsymbol et \bm pour mettre vecteurs et symboles en gras. Elle se termine par unicode-math, la méthode moderne pour utiliser des polices mathématiques OpenType avec XeLaTeX et LuaLaTeX.

Qu’est-ce qu’un alphabet mathématique ?

Une lettre en mode mathématique est considérée comme une variable et composée en italique mathématique : c’est l’alphabet mathématique par défaut. L’envelopper dans une commande comme \mathbf{v} change seulement ce fragment de fonte. LaTeX fournit ces bascules sous des noms \math…, en parallèle des commandes de texte \textbf, \textsf, etc.

Point à surveiller : une commande d’alphabet mathématique recompose son argument comme une suite de symboles mathématiques individuels, pas comme du texte. Ainsi \mathbf{fit} est le produit de trois symboles gras f, i, t, et non le mot “fit”. Pour insérer un vrai mot droit dans une formule, utilisez plutôt \text{…} (amsmath).

Sept commandes de base sont disponibles sans aucun paquet. Le tableau ci-dessous présente celles qui sont intégrées à LaTeX (\mathnormal nomme simplement l’italique mathématique par défaut de façon explicite).

CommandeAspectNotes
\mathnormalItalique mathématique par défautIntégré ; aspect par défaut d’une variable
\mathrmRomain droitIntégré ; constantes et abréviations droites
\mathbfGras droitIntégré ; droit, donc peu adapté aux variables (voir plus bas)
\mathsfSans empattementIntégré ; tenseurs, noms de catégories, etc.
\mathttMonospace (machine à écrire)Intégré ; p. ex. jetons de type code en maths
\mathitItalique de texteIntégré ; mots de plusieurs lettres inclinés (espacement de texte)
\mathcalCalligraphique ; majuscules seulementIntégré ; familles d’ensembles, catégories, etc.

Un mot sur \mathit et \mathnormal, faciles à confondre : \mathnormal (par défaut) compose chaque lettre comme une variable, avec l’espacement plus large entre variables, tandis que \mathit est l’italique de texte et convient à un mot de plusieurs lettres pris comme une unité inclinée, comme \mathit{diff}.

Gras tableau, calligraphique, Fraktur et script

Les quatre suivantes sont parmi les plus utilisées en mathématiques, mais, sauf \mathcal qui est intégré, chacune exige de charger un paquet. Elles diffèrent par l’aspect, les usages typiques et le paquet nécessaire.

\mathbb (gras tableau, blackboard bold) est un gras distinctif dont certains traits sont doublés ; il imite la façon d’écrire du gras au tableau en repassant un trait. Il nécessite amssymb (ou amsfonts) et couvre seulement les majuscules. Son usage est presque fixé : les ensembles de nombres, réels ℝ, complexes ℂ, entiers ℤ, rationnels ℚ, naturels ℕ. \mathbb{R} donne un “R en gras tableau” avec une hampe doublée.

\mathcal (calligraphique) donne des majuscules fluides et ornées ; il est intégré et limité aux majuscules. On l’utilise pour les familles d’ensembles 𝒜, la transformée de Fourier ℱ, les noms de catégories ou de faisceaux, etc. \mathcal{F} produit un “F orné”.

\mathscr (script) est une fonte encore plus fluide et manuscrite que \mathcal. La source habituelle est le paquet mathrsfs (qui charge le Formal Script de Ralph Smith) ; le paquet euscript (Euler Script) propose aussi un autre script. C’est pratique quand il faut deux alphabets ornementaux distincts à côté de \mathcal (et, en pratique, pour les majuscules).

\mathfrak (Fraktur) est une fonte anguleuse et ornée issue de l’ancienne typographie allemande, utilisée pour les algèbres de Lie 𝔤 et les idéaux 𝔭, 𝔮. Elle nécessite amssymb (ou amsfonts, qui charge eufrak) et, contrairement à \mathbb et \mathcal, couvre majuscules et minuscules.

document.tex
\usepackage{amssymb}   % \mathbb と \mathfrak
\usepackage{mathrsfs}  % \mathscr
% ...
\[
  \mathbb{R} \subset \mathbb{C}, \qquad
  \mathcal{F}(f) = \hat{f}, \qquad
  \mathscr{L}(f) = F, \qquad
  \mathfrak{g} = \operatorname{Lie}(G).
\]

Dans cet exemple, \mathbb{R} et \mathbb{C} sont en gras tableau, \mathcal{F} en calligraphique, \mathscr{L} dans un script plus fluide, et \mathfrak{g} en minuscule Fraktur anguleuse. Le tableau ci-dessous résume le paquet nécessaire et la couverture de chaque alphabet.

CommandePaquet nécessaireCouverture et usage typique
\mathbbamssymb (ou amsfonts)Majuscules seulement ; ensembles ℝ ℂ ℤ ℚ ℕ
\mathcalIntégré (aucun)Majuscules seulement ; familles, catégories, transformées
\mathscrmathrsfs (ou euscript)Majuscules en pratique ; script plus fluide
\mathfrakamssymb / amsfonts (eufrak)Majuscules et minuscules ; algèbres de Lie, idéaux

Limitation commune importante : ces alphabets ornementaux ne couvrent qu’un jeu limité de caractères. \mathbb et \mathcal se résument essentiellement aux majuscules A–Z ; les chiffres, le grec et les minuscules ne sont généralement pas fournis dans les polices standard. Un besoin comme “un 2 en gras tableau avec \mathbb{2}” n’est pas satisfait par défaut : il faut un autre paquet de fontes (par exemple mathalpha/mathalfa, bbm ou dsfont) ou unicode-math, présenté plus bas.

Mettre les maths en gras

On veut souvent des maths en gras, par exemple pour les vecteurs et matrices, mais il y a un piège. Le \mathbf ci-dessus est un gras droit, destiné aux constantes ou abréviations en gras qui doivent rester droites. Composer un vecteur avec \mathbf{v} donne bien du gras, mais droit, ce qui rompt la convention selon laquelle les variables sont inclinées. De plus, \mathbf n’agit pas sur les symboles ni sur le grec (\mathbf{\alpha} ne met pas α en gras).

Le premier choix pour mettre en gras tout en gardant l’inclinaison est \boldsymbol. Fourni par amsmath (son amsbsy), il met en gras non seulement les variables mais aussi les lettres grecques et les symboles, tout en conservant la forme d’origine (inclinaison, etc.). \boldsymbol{\beta} donne un “β gras italique”.

La méthode robuste la plus recommandée aujourd’hui est \bm, du paquet bm. Comme bm fait partie du bundle obligatoire latex-tools, toute distribution TeX standard le fournit ; il n’y a rien à installer séparément. \bm{…} est conçu pour ajouter seulement du poids, en conservant l’inclinaison et le reste de la forme de son argument, et il gère variables, grec, symboles et même entrées complexes de façon presque transparente. Son espacement est aussi plus soigneux que celui de \boldsymbol ; la description CTAN dit que \bm procède avec plus de soin. bm redéfinit \boldsymbol comme alias de \bm et ajoute \hm (\heavysymbol) pour un poids extra-gras.

document.tex
\usepackage{amsmath}   % \boldsymbol
\usepackage{bm}        % \bm(推奨)
% ...
\[
  \mathbf{v} \neq \bm{v}, \qquad
  \bm{\beta} = (\beta_1, \dots, \beta_n), \qquad
  \nabla \bm{F} = \bm{0}.
\]

Dans cet exemple, \mathbf{v} est un v gras droit, tandis que \bm{v} est un v gras qui reste italique, ce qui rend la différence claire. \bm{\beta} est un β gras italique et \bm{0} un zéro gras (le vecteur nul). En règle générale : utilisez \bm pour les variables, vecteurs et symboles en gras, et \mathbf pour les constantes ou abréviations qui doivent rester droites.

  • \mathbf — gras droit ; intégré, mais peu adapté aux variables qui doivent être inclinées, et sans effet sur les symboles ou le grec.
  • \boldsymbol — fourni par amsmath (amsbsy) ; garde l’inclinaison et peut mettre le grec et les symboles en gras.
  • \bm — fourni par le paquet bm ; recommandé. Ajoute seulement du poids, en préservant forme et espacement ; le plus robuste et le plus large.

unicode-math (XeLaTeX et LuaLaTeX)

Jusqu’ici, nous avons ajouté chaque fonte une par une avec son paquet dédié : l’approche traditionnelle. Avec les moteurs modernes XeLaTeX et LuaLaTeX, le paquet unicode-math permet de composer toutes les maths avec une seule police mathématique OpenType. On change de fonte mathématique presque comme de fonte de texte, ce qui remplace l’approche ancienne consistant à ajouter \mathbb et les autres au coup par coup (les deux approches ne peuvent pas coexister dans le même document).

Le cœur de l’utilisation est \setmathfont{…}. Chargez amsmath, puis unicode-math (après les autres paquets liés aux fontes), et indiquez une police mathématique OpenType avec \setmathfont. Les fontes courantes incluent Latin Modern Math (dans la lignée de Computer Modern), STIX Two Math et la famille TeX Gyre (Termes/Pagella/Bonum/Schola Math). Si aucune fonte mathématique n’est définie avant \begin{document}, Latin Modern Math est chargée par défaut.

document.tex
% コンパイルは xelatex または lualatex
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{STIX Two Math}   % OpenType 数式フォント
% ...
\[
  \symbb{R} \subset \symbb{C}, \qquad
  \symcal{F}, \quad \symscr{L}, \quad \symfrak{g}, \qquad
  \symbf{v} = \symbf{0}.
\]

Le manuel recommande les commandes \sym… à la place des anciennes commandes \math…. La correspondance est directe : \symbf (gras), \symbb (gras tableau), \symcal (calligraphique), \symscr (script), \symfrak (Fraktur), \symup (droit), \symit (italique), \symsf (sans empattement), etc. Comme elles se mappent sur les caractères mathématiques alphanumériques Unicode correspondants, copier un glyphe depuis le PDF conserve son sens. Les anciens noms comme \mathbb restent pour compatibilité, mais \sym… est recommandé dans les nouveaux documents.

Quand une seule police mathématique ne couvre pas tous les caractères, l’option range= de \setmathfont permet de prendre seulement une partie de l’alphabet mathématique dans une autre fonte. range= accepte une plage Unicode (forme "1D538-"1D56B"), un symbole isolé comme range=\int, ou un style d’alphabet comme range=\symbb (ou range=bb). On peut ainsi prendre seulement les lettres en gras tableau, ou seulement le grec minuscule et majuscule, dans une autre police. Il faut toutefois charger normalement une police mathématique principale avant d’utiliser range=.

document.tex
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}                       % 主たる数式フォント
\setmathfont{STIX Two Math}[range=\symbb]            % 黒板太字だけ別フォント
\setmathfont{TeX Gyre Termes Math}[range=bfit/{greek,Greek}]  % 太字斜体のギリシャだけ

Dans cet exemple, le corps des maths est composé en Latin Modern Math, tandis que les lettres en gras tableau (\symbb) viennent de STIX Two Math et que seul le grec gras italique vient de TeX Gyre Termes Math. Par efficacité, unicode-math ne charge une fonte indiquée par range= que pour les emplacements nécessaires. En résumé, avec XeLaTeX ou LuaLaTeX, l’approche standard actuelle est unicode-math + \setmathfont, plutôt que l’ajout d’un paquet par fonte.