Harmoniser les polices du texte et des mathématiques

Bien que les sciences du langage soient classées parmi les sciences humaines et sociales, les mathématiques y jouent un rôle important: théorie des langages formels et des automates, théorie de l’information, statistiques et probabilités, logique formelle, etc. Comme évoqué précédemment, il n’est donc pas rare en linguistique d’avoir à noter quelques symboles et formules mathématiques.

LaTeX est particulièrement recommandé pour la mise en forme des formules mathématiques, puisqu’il a été créé dans ce but et reste sans doute insurpassé à ce jour. Pour cela, LaTeX utilise un système de polices propres. Si l’on change la police du texte de base avec XeLaTeX, la différence avec la police mathématique est flagrante.

Par exemple, si l’on mélange du texte normal en police Brill, recommandée pour la linguistique, avec quelques formules susceptibles d’apparaître dans un texte linguistique:

  1. une équation simple
  2. une formule glottochronologique
  3. la densité de probabilité de la loi normale
  4. l’entropie de Shannon
L'apparence du texte normal \textit{x + y =} 3 et celle des \\
formules mathématiques $x+y=3$ peuvent différer.
\[t=\sqrt{\frac{\ln(c)}{-2\lambda\sqrt{c}}} \quad\quad
f(x)=\frac{1}{\sqrt{2\pi\sigma}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
\[ H(X)=-\sum_{i=1}P(x_i)\log_bP(x_i) \]

maths

Pour les formules les plus simples, on peut s’en tirer sans passer par le mode mathématique de LaTeX, mais celui-ci devient vite indispensable pour les fractions, racines carrées, sommes, etc.

Il est souhaitable dès lors d’harmoniser la police mathématique avec celle du texte normal.

Utiliser une police mathématique différente mais similaire

La première solution, la plus simple mais pas forcément la plus satisfaisante, consiste à utiliser une police mathématique similaire à celle du texte de base.

Dans le cas de la police Brill, le package libertinust1math charge la police mathématique Lib­ert­i­nus Math, un dérivé de Linux LIbertine O, et la combinaison des deux est plutôt satisfaisante. Attention! il faut passer l’option no-math à fontspec pour pouvoir combiner les deux polices.

\usepackage{libertinust1math}
\usepackage[no-math]{fontspec}
\setmainfont{Brill}

math-libt1

Tout dépend évidemment de la police de base choisie, et il n’est pas garanti de trouver une police mathématique se mariant bien avec celle-ci. Le catalogue des polices LaTeX est indispensable pour trouver si une telle police existe.

Si vous utilisez Charis SIL, sachez que cette police est quasi-identique à Bitstream Charter, qui est utilisable dans LaTeX et dispose d’une extension mathématique.

\usepackage[bitstream-charter]{mathdesign}
\usepackage[no-math]{fontspec}
\setmainfont{Charis SIL}

mathcharis

Utiliser la police du texte en mode mathématique

Dans le cas où l’on ne trouve pas de police mathématique adaptée, ou bien si l’on veut absolument un style uniforme pour le texte et les mathématiques, il est possible de définir la même police pour le mode mathématique que pour le mode texte. Cela est possible grâce au package mathspec, qui vient remplacer fontspec.

Le package mathspec donne accès à la commande \setmathsfont, qui prend comme argument le nom de la police que l’on affecte au mode mathématique. Cette commande peut prendre les mêmes options entre crochets que fontspec. Pour les mathématiques, il peut être utile de préciser l’option Numbers=Lining, afin ne pas avoir des chiffres elzéviriens. La commande prend aussi un autre jeu d’options entre parenthèses, qui définit les jeux de caractères auxquels s’appliquent la police: lettres latines, lettres grecques, chiffres.

\usepackage{mathspec}
\setmathsfont(Digits,Latin,Greek)[Numbers=Lining]{Brill}

mathspec

Cette solution est toutefois loin d’être parfaite puisque mathspec ne permet pas de définir la police des symboles non alphabétiques (+, =, {}, etc.) et des symboles composés de plusieurs lettres (log, sin, etc.).

Pour résoudre ce problème, on peut utiliser le package mathastext, qui applique la même police que le texte aux mathématiques. Une différence majeure avec mathspec est que mathastext ne permet pas semble-t-il de régler les options typographiques comme Numbers=Lining. Il vaut donc mieux le charger après mathspec et la déclaration de \setmathsfont pour qu’il ne change que les symboles non-affectés par mathspec. Le package mathastext possède de nombreuses options bien documentées.

\usepackage{mathspec}
\setmainfont{Brill}
\setmathsfont(Digits,Latin,Greek)[Numbers=Lining]{Brill}
\usepackage[italic,asterisk,mathaccents,defaultmathsizes]{mathastext}

mathastext

Un dernier problème est celui des symboles absents de la police du texte, et qui restent donc dans la police mathématique par défaut. Il est possible de charger avant la déclaration de mathspec une police mathématique qui sera alors utilisée uniquement pour les symboles absents.

\usepackage{libertinust1math}
\usepackage{mathspec}
\setmainfont{Brill}
\setmathsfont(Digits,Latin,Greek)[Numbers=Lining]{Brill}
\usepackage[italic,asterisk,mathaccents,defaultmathsizes]{mathastext}

mathastextlib

Derniers problèmes

Bien sûr, tous les problèmes ne peuvent pas être résolus puisqu’une police de texte n’a pas les spécifications nécessaires pour la mise en forme des mathématiques. En particulier l’alignement et l’espace des symboles peuvent poser des difficultés.

$f^i_j$

mathprob

Il semble difficile de résoudre ce genre de problèmes à moins d’investir beaucoup de temps à faire des réglages pour une police particulière ou bien à moins de faire des réglages à la main pour résoudre chaque problème individuel.

Ce billet peut être cité de la façon suivante: Thomas Pellard, « Harmoniser les polices du texte et des mathématiques », Cipanglossia, 5 octobre 2016, http://cipanglo.hypotheses.org/253.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *