Trucs pour LaTeX & R

Avoir une virgule comme séparateur décimal

samedi 25 janvier 2014 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}.

Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 1000 / 127561

Suivre la vie du site fr  Suivre la vie du site LaTeX   ?    |    titre sites syndiques OPML   ?

Site réalisé avec SPIP 3.2.1 + AHUNTSIC

Creative Commons License