Comment faire de la virgule le séparateur décimal ?#

En mode mathématique, utilise par défaut la convention anglophone : le point sert de séparateur décimal. Quand sert à mettre en forme un document en français, il ne réagit pas à la présence de la virgule comme séparateur décimal. Une espace est placée après la virgule. Ce qui ne produit pas une présentation conforme aux règles typographiques françaises.

1.  Sans extension#

Une solution simple à ce problème, en mode mathématique, consiste à taper 3{,}14 au lieu de 3,14. Bien qu’une telle technique puisse produire ponctuellement le résultat souhaité, elle ne se généralise que très mal à un document entier. Les solutions qui suivent lui sont donc préférables.

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page

\begin{document}
\Large Avant :
\[ 123,45 \]

Après :
\[ 123{,}45 \]
\end{document}

2.  Avec l’extension decimalcomma#

Dans le mode mathématique de la virgule est, par défaut, traitée comme un symbole de ponctuation et est donc suivie d’une espace. Ceci est approprié pour les intervalles : $[a,b]$ donne [a, b], mais n’est pas approprié pour les nombres où la virgule représente le séparateur décimal. Par exemple, $12,5$ est affiché comme 12, 5 au lieu de 12,5.

L’extension decimalcomma propose un fonctionnement identique à ncccomma mais avec un code plus léger et sans les incompatibilités. Ceci est détaillé dans la documentation de l’extension.

Si unicode-math ou icomma sont utilisés, ils doivent être chargés avant decimalcomma.

3.  Avec l’extension icomma#

L’extension icomma garantit qu’il n’y aura plus cette espace supplémentaire après une virgule. Toutefois, si vous placez une espace après la virgule (comme dans f(x, y) où, en l’absence de l’extension, vous n’avez pas besoin de cette espace) alors le petit espace habituel après la virgule apparaît.

À faire

Ajouter un exemple

4.  Avec l’extension ziffer#

L’extension ziffer est spécifiquement pensée pour de la composition en allemand. Elle couvre toutefois le besoin soulevé ici, tout en fournissant le signe double moins utilisé en allemand (et dans d’autres langues) pour représenter les centimes nuls dans un montant en devise.

À faire

Ajouter un exemple

5.  Avec l’extension numprint#

L’extension numprint fournit une commande \numprint{nombre} qui met en forme son argument nombre selon les paramètres que vous lui donnez, ou selon les paramètres choisis en accord avec la langue que vous avez sélectionnée dans babel. Cette commande fonctionne aussi bien dans du texte que dans des mathématiques. La commande est également très flexible : elle peut regrouper les chiffres de nombres « longs ». Cependant, l’extension reste moins pratique que icomma ou ziffer si vous tapez beaucoup de chiffres.

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{numprint}

\begin{document}
\Large \numprint{123456.78}
\end{document}

6.  Avec l’extension siunitx#

L’extension siunitx reprend quelques idées de numprint mais répond à une question plus large : celle de la présentation de quantité dans les unités du système international (SI). Pour le cas présent, elle propose une option permettant de gérer le choix du séparateur décimal : output-decimal-marker. En voici un exemple où l’option est passée dans l’ensmeble du document avec la commande \sisetup.

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{siunitx}
  \sisetup{output-decimal-marker={,}}

\begin{document}
\Large \num{123456.78}
\end{document}