Polices mathématiques

Vous avez passé le texte en Times ou Palatino, mais les équations restent en Computer Modern : le décalage se voit. Cette page explique comment éviter ce conflit. Dans LaTeX, la fonte de texte et la fonte mathématique sont choisies séparément ; il faut donc sélectionner volontairement une fonte mathématique pour tout le document et l’harmoniser avec le texte. Nous couvrons à la fois les paquets hérités de l’époque pdfLaTeX, mathptmx, mathpazo, newtxmath, et la méthode moderne avec XeLaTeX et LuaLaTeX, unicode-math avec \setmathfont, chaque fois avec un exemple fonctionnel. Les commandes d’alphabet mathématique par symbole comme \mathbb et \mathcal relèvent d’une autre page (Math fonts, dans la section maths) et ne sont pas reprises ici.

Texte et maths se choisissent séparément

Commençons par le principe. Dans LaTeX, la fonte du texte courant et celle du mode mathématique sont gérées comme deux systèmes indépendants. Remplacer la fonte de texte n’entraîne pas automatiquement les maths ; d’où le décalage : “J’ai mis le corps en Times avec \usepackage{...}, mais le x et le \sum de mes équations gardent l’ancienne fonte.” Une bonne composition exige d’aligner les deux volontairement, pour que variables et symboles des formules aient le même poids et la même présence que le texte environnant.

La fonte mathématique par défaut est Computer Modern math, dessinée par Knuth avec TeX. Avec pdfLaTeX et sans choix de fonte, texte et maths sont composés en Computer Modern ; comme ils ont été conçus comme un ensemble, ils s’accordent naturellement. Charger le paquet lmodern remplace le texte par Latin Modern, son descendant aux contours plus lisses, et les maths par la Latin Modern Math assortie (cette dernière s’utilise surtout via unicode-math). Autrement dit, ne rien faire donne déjà un point de départ où texte et maths correspondent.

À partir du moment où vous voulez une autre fonte de texte, deux voies s’ouvrent. Avec pdfLaTeX, la voie héritée charge un paquet dédié par fonte mathématique ; avec XeLaTeX et LuaLaTeX, la voie moderne nomme une seule police mathématique OpenType via unicode-math. Les sections suivantes les examinent tour à tour.

La méthode héritée (pdfLaTeX / Type1)

Avec pdfLaTeX, on change la fonte mathématique de tout le document au moyen d’un paquet de fonte mathématique. La plupart sont conçus pour s’accorder avec une fonte de texte ; chargés avec le paquet côté texte, ils placent corps et maths dans la même famille. Le tableau ci-dessous rassemble les plus courants.

PaquetTexte / fonte assortieNotes
mathptmxTimesMaths de style Times (Times, Symbol et CM) ; simple mais un peu daté
mathpazoPalatinoMaths Palatino avec alphabets Pazo Math
newtxmathTimes (avec newtxtext)Maths modernes de style Times ; options [libertine]/[utopia] pour d’autres textes
newpxmathPalatino (avec newpxtext)Maths de style Palatino (nécessite TeX Gyre Pagella)
fourierUtopiaRègle ensemble texte Utopia et maths Fourier
kpfontsSuite texte et maths proprePaquet complet fournissant texte et maths
mathdesignGaramond / Charter / UtopiaMaths assorties au texte choisi (garamond/charter/utopia)
eulervm(n’importe quelle fonte de texte)Alphabet mathématique Euler ; va avec des textes sans maths propres

Le schéma typique consiste à charger ensemble le paquet côté texte et le paquet côté maths. mathpazo, par exemple, règle d’un coup le texte Palatino et les maths Pazo. La recommandation la plus simple aujourd’hui est la famille newtx : \usepackage{newtxtext,newtxmath} donne un texte de style Times et des maths modernes assorties. newtxmath offre beaucoup d’options : [libertine] pour des maths assorties à un texte Libertine (libertinus), ou [utopia] (avec les fontes Erewhon) pour une fonte de texte Utopia.

document.tex
% --- Palatino 本文+数式 / Palatino text & math ---
\usepackage{mathpazo}            % Palatino + Pazo math

% --- Times 本文+数式(おすすめ) / Times text & math (recommended) ---
\usepackage{newtxtext}           % 本文 / text
\usepackage{newtxmath}           % 数式 / math

% --- Libertine 本文に数式を合わせる / match math to Libertine text ---
% \usepackage{libertine}
% \usepackage[libertine]{newtxmath}

Le point à surveiller : définir texte et maths par des paquets séparés facilite les combinaisons discordantes. Mélanger des éléments non assortis, par exemple newtxtext avec newpxmath (texte Times, maths Palatino), fabrique exactement le décalage que cette page veut éviter. L’ordre de chargement compte aussi : placez le paquet de fonte mathématique après le paquet de fonte de texte. La règle est simple : choisir texte et maths comme une paire assortie.

La méthode moderne : unicode-math (XeLaTeX et LuaLaTeX)

Avec XeLaTeX ou LuaLaTeX, vous pouvez éliminer l’empilement hérité de paquets. Le paquet unicode-math compose toute la mathématique avec une seule police mathématique OpenType, nommée par \setmathfont{…}. Passez le corps à une police de texte OpenType avec fontspec, puis les maths à la police mathématique OpenType correspondante avec \setmathfont : ces deux lignes alignent texte et maths. unicode-math charge fontspec pour vous et requiert le moteur XeTeX ou LuaTeX (pas pdfLaTeX). Il s’appuie aussi sur amsmath, donc chargez amsmath d’abord.

Les polices mathématiques OpenType utilisables offrent de bons choix libres : Latin Modern Math (lignée Computer Modern), STIX Two Math (large couverture de symboles scientifiques), la famille TeX Gyre avec Termes (style Times), Pagella (style Palatino), Bonum et Schola en variantes Math, Libertinus Math (successeur de Libertine / Linux Libertine), ainsi que XITS (dérivée de STIX), Asana Math et Fira Math. Si aucune fonte mathématique n’est nommée avant \begin{document}, Latin Modern Math est chargée par défaut.

Police mathématique OpenTypeLignée / caractèreTexte assorti
Latin Modern MathLignée Computer Modern ; défautLatin Modern
TeX Gyre Termes MathStyle TimesTeX Gyre Termes / Times
TeX Gyre Pagella MathStyle PalatinoTeX Gyre Pagella / Palatino
STIX Two MathStyle Times, très vaste jeu de symbolesSTIX Two Text / Times
Libertinus MathSuccesseur de LibertineLibertinus Serif
XITS / Asana / Fira MathBasée sur STIX / propre / style sansselon l’usage

Voici un exemple minimal. Chargez amsmath, puis unicode-math, et nommez la fonte mathématique avec \setmathfont. Aucun paquet par fonte comme mathptmx ou mathpazo n’est nécessaire : cette seule ligne prend en charge toutes les maths. Pour assortir aussi le corps, définissez la fonte de texte correspondante avec \setmainfont de fontspec (le chargement explicite de fontspec peut être omis, puisque unicode-math l’importe).

document.tex
% コンパイルは xelatex または lualatex / compile with xelatex or lualatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Termes}       % 本文(fontspec)/ text
\setmathfont{TeX Gyre Termes Math} % 数式(対の OpenType フォント)/ matching math
\begin{document}
\[
  f(x) = \int_{-\infty}^{\infty} \hat f(\xi)\, e^{2\pi i x \xi}\, d\xi.
\]
\end{document}

Dans cet exemple, le corps est en TeX Gyre Termes (style Times) et les maths en TeX Gyre Termes Math assortie ; intégrales, indices et variables partagent donc l’allure du texte. Si une seule fonte mathématique ne suffit pas, l’option range= de \setmathfont permet de prendre une partie de l’alphabet mathématique dans une autre fonte (voir la page Math fonts). Globalement, avec un moteur Unicode, unicode-math avec \setmathfont est le standard actuel, bien plus simple à configurer que les paquets hérités.

Que choisir : appairer texte et maths

Au final, le conseil clé est unique : choisir la fonte de texte et la fonte mathématique comme une paire. Avec pdfLaTeX, utilisez des combinaisons conçues pour aller ensemble : newtxtext + newtxmath (Times) ou mathpazo (Palatino). Avec XeLaTeX ou LuaLaTeX, faites correspondre les familles avec \setmainfont{...} et \setmathfont{...} : texte Libertinus avec Libertinus Math, texte TeX Gyre Pagella avec sa Math, etc.

  • Ne rien faire : Computer Modern (pdfLaTeX) ou Latin Modern Math (défaut de unicode-math) ; texte et maths correspondent déjà.
  • Changer le texte avec pdfLaTeX : utiliser un paquet appairé : Times via newtxtext+newtxmath, Palatino via mathpazo/newpxmath, Utopia via fourier ou mathdesign.
  • Avec XeLaTeX/LuaLaTeX : charger amsmath puis unicode-math, et nommer les fontes OpenType de texte et de maths assorties avec \setmainfont et \setmathfont.
  • À éviter : mélanger texte et maths non appairés, par exemple texte Times avec maths Palatino.

Notez que les commandes qui mettent seulement certaines lettres d’une formule dans une autre fonte, comme \mathbb, \mathcal, \mathfrak, sont un sujet distinct du choix de la fonte mathématique globale traité ici ; elles sont sur la page “Math fonts” dans la section maths. Pour les fontes de texte elles-mêmes, voyez “Western font families” ; pour nommer les fontes de texte avec un moteur Unicode, “fontspec” ; et pour la mécanique sous-jacente (NFSS), “Font system”.