Accueil > Généralités techniques > Des virgules dans les nombres

Des virgules dans les nombres

samedi 13 novembre 2021, par Philippe MICHEL

En mode mathématique, même en utilisant un package francisant (l’option french de babel par ex.) LaTeX suit ce qu’on écrit : $12.345$ donnera 12.456 et $12,345$ donnera 12,456

Pour LaTeX

La solution générale est de placer dans le préambule :

  1.  \usepackage[output-decimal-marker={,}]{siunitx}
  2. \mathcode`\.="013B

Télécharger

La première ligne règle la virgule comme séparateur décimal pour tout ce qui est géré par
 \siunitx comme \num{123.45} ou \SI{123.45}{\m\per\sec}, la seconde pour ce qui relève des mathématiques. Mais si le code est généré automatiquement, par exemple importé de R par knitr ou simplement un xtable, on obtiendra le point décimal anglo-saxon. Sauf à mettre le nombre dans une commande \num ou, pour un tableau, de définir comme type de colonne S.

Pour R

Si vous voulez gérer ce problème au niveau de R il faut activer l’option :

options(OutDec = ",")

Par exemple pour avoir un tableau généré par xtable avec des virgules :

  1.  options(OutDec = ",")
  2.  matable<-xtable(table1, ...)
  3. print(matable)
  4. options(OutDec = ".")# Pour revenir au point décimal

Télécharger

Ne pas oublier de l’annuler après car sinon ça peut introduire des erreurs dans la suite de la session. Dans le corps du texte, un nombre généré par un \Sepxr n’est pas en mode mathématique. Il faut forcer la reconnaissance. Deux solutions : -* Brutale, simple mais pas toujours idéale : $\Sepxr{mean(taille)}$. Des problèmes de police peuvent se poser. -* Plus élégante. On charge le package siunitx (de toute façon je ne vois pas comment faire sans) et on écrit : \num{\Sepxr{mean(taille)}} ou, encore plus élégant quand on a une unité : \SI{\Sepxr{mean(taille)}}{\meter}.