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{report}
\pagestyle{empty}
\begin{document}
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.

Le package decimalcomma propose un fonctionnement identique à ncccomma mais avec un code plus léger, et sans les incompatibilités. Cf. la documentation de decimalcomma.

Si unicode-math ou icomma sont utilisés, il 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.

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.

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{report}
\usepackage{numprint}
\pagestyle{empty}
\begin{document}
\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 sur l’ensemble du document : output-decimal-marker. En voici un exemple.

\documentclass{report}
\usepackage{numprint}
\pagestyle{empty}
\begin{document}
\numprint{123456.78}
\end{document}