--- myst: html_meta: keywords: LaTeX, domaines spécialisés, statistiques, R --- # Comment faire collaborer LaTeX et `R` ? Le principe est de générer un document LaTeX comportant des résultats (tableaux, graphiques, etc.) produits par `R` (ou `Python`, `Julia`, etc.). Il existe plusieurs solutions toutes basées sur le même principe : dans un document écrit dans un langage balisé (markdown ou LaTeX par ex.) on incorpore des morceaux de code R appelés *chunks* délimités par des triples backticks (```` ``` ````). Une première compilation produit un document LaTeX comportant les résultats du code `R` (un tableau par exemple). On compile ensuite ce document pour obtenir le fichier final (en PDF si on utilise LaTeX). De plus la maintenance est simplifiée : chaque chunk peut être exécuté seul (ce qui simplifie l'écriture et le déboguage) et il n'y a qu'un seul document (au pire deux ou trois avec d'éventuels fichiers de configuration). ## Knitr un fichier [`knitr`](https://yihui.org/knitr/) (`.Rnw`) est un fichier LaTeX standard qui contient des *chunks* de code `R`. Un exemple : ```{noedit} \section{Introduction} <>= plot(iris) @ bla, bla, bla. ``` L'écriture est lourde et il n'existe pas de modèles prédéfinis. ## R markdown [R markdown](https://rmarkdown.rstudio.com/) est un format de fichier qui mélange du code `R` et du texte en `Markdown`. Les réglages généraux sont écrits dans un en-tête en `yaml`. Après une première compilation pour `R`, le fichier est converti en LaTeX via [pandoc](https://pandoc.org/) puis compilé en PDF (toute la précédure étant automatisée). Un export en HTML voire en `.docx` est également possible. ````markdown ## Introduction ```{r, echo = FALSE, fig.cap = "Vue globale de Iris"} plot(iris) ``` bla, bla, bla. ```` ## `Quarto` [`Quarto`](https://quarto.org/) est une évolution de R Markdown. La syntaxe est plus simple et il existe nombre de fonctions pour des mises en page complexes, des pages de titre, etc. C'est le seul qui continue à être réellement maintenu. La documentation est très bien faite. ````markdown ## Introduction ```{r} #| label: irisf1 #| fig-cap: Vue globale de Iris plot(iris) ``` bla, bla, bla. ```` La suite de cette documentation se concentrera sur `Quarto`.