> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Code R (knitr)

Overleaf propose une intégration avec **knitr**, qui vous permet d'ajouter du code R à votre document LaTeX afin de générer une sortie dynamique.

Les documents contenant du code R doivent être enregistrés avec l'extension `.Rtex` ou `.Rnw`, sinon le code ne fonctionnera pas. Voyons un exemple :

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo1.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=4cd20c6acbeeab2b1ae2b115efece70d" alt="KnitrDemo1.png" width="2150" height="681" data-path="images/texlive/knitrdemo1.png" />

[Ouvrir cet exemple `knitr` sur Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Comme vous pouvez le constater, le texte situé entre les caractères `<<>>=` et `@` est du code R. Ce code et sa sortie sont affichés dans un format semblable à un listing. Ce bloc de code peut accepter des paramètres supplémentaires pour personnaliser la sortie dynamique, comme décrit dans la section suivante.

### Blocs de code (chunks)

Un bloc de code comme celui présenté dans la section précédente est généralement appelé un *chunk*. Vous pouvez définir des options supplémentaires dans les chunks knitr. Voyez l'exemple ci-dessous :

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143420.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=9c79c98b1894d1cd22f783c29356de1f" alt="KnitrDemo2.png" width="1910" height="559" data-path="images/texlive/screenshot-2025-12-16-143420.png" />

[Ouvrir cet exemple `knitr` sur Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Deux options supplémentaires sont passées entre `<<` et `>>`.

* `echo=FALSE` : masque le code et n'affiche que la sortie générée par R.
* `cache=TRUE` : si le cache est activé, le chunk n'est pas réexécuté ; seuls les objets qu'il a générés sont utilisés. Cela fait gagner du temps si les données de ce chunk n'ont pas changé.

  <Info><em>Notez que l'option cache=TRUE n'est actuellement pas prise en charge dans Overleaf, mais elle devrait fonctionner en local.</em></Info>

Consultez le [guide de référence](https://learn.overleaf.com/learn/Knitr#Reference_guide) pour plus d'options.

### Commandes en ligne

Il est possible d'accéder aux objets générés dans un chunk et de les afficher dans le texte.

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@

So, the mean of the data is $\Sexpr{mean(X)}$
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143647.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=8b59926a477373b2787f884267d7c263" alt="KnitrDemo3.png" width="1910" height="630" data-path="images/texlive/screenshot-2025-12-16-143647.png" />

[Ouvrir cet exemple `knitr` sur Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

La commande `\Sexpr{mean(X)}` affiche le résultat renvoyé par le code R `mean(X)`. N'importe quelle commande R peut être passée entre les accolades.

### Graphiques

Des graphiques peuvent également être ajoutés à un document knitr, comme dans cet exemple :

```latex wrap theme={null}
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="First plot">>=

xdata = read.csv(file="data.txt", head=TRUE,sep=" ")

hist(xdata$data, main="Overleaf histogram", xlab="Data")

@

The figure \ref{fig:plot1} is simple histogram.

\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/GmaXa-Cu4QQRFT4C/images/texlive/screenshot-2025-12-16-143811.png?fit=max&auto=format&n=GmaXa-Cu4QQRFT4C&q=85&s=af1985b1e5b5ce56b777c5d9e3066420" alt="KnitrDemo4.png" width="1915" height="756" data-path="images/texlive/screenshot-2025-12-16-143811.png" />

[Ouvrir cet exemple `knitr` sur Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Cet histogramme utilise des données stockées dans « data.txt », enregistré dans le répertoire de travail courant. Quelques options liées aux figures sont passées au chunk.

`plot1` : étiquette utilisée pour faire référence au graphique. Le préfixe « fig: » est obligatoire. Vous pouvez voir dans l'exemple que la figure est référencée avec `\ref{fig:plot1}`. `fig.pos="t"` : paramètre de positionnement, identique à celui utilisé dans [l'environnement figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment). `fig.height=4, fig.width=4` : largeur et hauteur de la figure. `fig.cap="First plot"` : légende de la figure.

### Scripts R externes

Vous pouvez importer des parties d'un script R externe dans un document knitr. C'est très utile, car il est assez courant d'écrire et de déboguer le script dans un programme externe avant de l'inclure dans votre document.

Supposons que nous ayons le code R suivant dans un fichier nommé `mycode.R`, que nous incluons dans notre document LaTeX :

```r theme={null}
## ---- myrcode1
# Create a sequence of numbers
 X = 2:10

## ---- myrcode2
# Display basic statistical measures
summary(X)
```

Remarquez les lignes :

```r theme={null}
## ---- myrcode1
```

et

```r theme={null}
## ---- myrcode2
```

Elles marquent le début d'un chunk de code et sont obligatoires si vous souhaitez utiliser ce script dans votre document, comme le montre le fragment de code suivant :

```r theme={null}
The chunk below will not be printed

<<echo=FALSE, cache=FALSE>>=
read_chunk("mycode.R")
@

The code must show up here

<<myrcode2>>=

@
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo5.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=0f1fd4088c9359058547a7c58f121bd5" alt="KnitrDemo5.png" width="1544" height="436" data-path="images/texlive/knitrdemo5.png" />

Le premier chunk n'est pas affiché et sert uniquement à importer le script avec la commande `read_chunk("mycode.R")`. C'est pourquoi l'option `echo=FALSE` est définie. De plus, les scripts ne doivent pas être mis en cache. Une fois le script importé, vous pouvez afficher un chunk à l'aide de l'étiquette définie après `## ----`. Dans ce cas, il s'agit de `myrcode2`.

Nous avons regroupé tous les fragments de code de cet article dans un projet que [vous pouvez ouvrir sur Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### Guide de référence

Quelques options de chunk :

* `results`. Modifie le comportement des résultats générés par le code R. Valeurs possibles :
  * `markup` : utilise LaTeX pour mettre en forme la sortie.
  * `asis` : affiche les résultats bruts de R.
  * `hold` : retient les résultats et les place à la fin du chunk.
  * `hide` : masque les résultats.
* `echo`. Indique s'il faut inclure le code source R. Autres paramètres possibles :
  * `echo=2:3` n'affiche que la deuxième et la troisième ligne ;
  * `echo=-2:-3` exclut uniquement la deuxième et la troisième ligne.
* `cache`. Indique s'il faut mettre en cache le chunk de code. Valeurs possibles : `TRUE` et `FALSE`
* `highlight`. Indique s'il faut appliquer la coloration syntaxique au code source. Valeurs possibles : `TRUE` et `FALSE`
* `background`. Couleur d'arrière-plan du chunk. Les formats rgb et HTML peuvent être utilisés. La valeur par défaut est *"#F7F7F7"*.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.