> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/fr/autres-sujets/29-knitr.md).

# Knitr

Comme indiqué sur Wikipédia, [Knitr est un moteur de génération de rapports dynamiques avec R](https://en.wikipedia.org/wiki/Knitr), un langage de programmation orienté vers les statistiques. Cet article explique comment ajouter du code R à votre document LaTeX afin de générer une sortie dynamique.

Dans une distribution LaTeX standard, vous devez avoir R configuré sur votre système d'exploitation et exécuter certaines commandes spéciales pour le compiler. Overleaf peut vous éviter ce désagrément, **knitr** fonctionne immédiatement.

## Introduction

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

```latex
\documentclass{article}
\begin{document}

Vous pouvez taper des commandes R dans votre document \LaTeX{} ; elles seront traitées et leur sortie sera incluse dans le document :

<<>>=
# Créer une séquence de nombres
X = 2:10

# Afficher des mesures statistiques de base
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/611b392adcb3b92104d354777b5ab938c764b272)

&#x20;[Ouvrez ceci `knitr` exemple 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 le voyez, le texte entre les caractères `<<>>=` et `@` correspond au code R ; ce code et sa sortie sont imprimés dans un format de type liste. Ce bloc de code peut prendre quelques paramètres supplémentaires pour personnaliser la sortie dynamique. Voir la section suivante.

## Blocs de code

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

```latex
\documentclass{article}
\begin{document}

Vous pouvez taper des commandes R dans votre document \LaTeX{} ; elles seront traitées et leur sortie sera incluse dans le document :

<<echo=FALSE, cache=TRUE>>=
# Créer une séquence de nombres
X = 2:10

# Afficher des mesures statistiques de base
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/0bf62efaa85892b8f4af4d150e344631b3fd42f9)

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

Trois options supplémentaires sont passées dans `<<` et `>>`.

**echo=FALSE**

Cela masque le code et n'affiche que la sortie générée par R.

**cache=TRUE**

Si cache est défini sur true, le bloc n'est pas exécuté, seulement les objets qu'il génère. Cela permet de gagner du temps si les données de ce bloc n'ont pas changé. Notez que l'option cache=TRUE n'est pas actuellement prise en charge dans Overleaf, mais elle devrait fonctionner localement.

Voir le [guide de référence](#reference-guide) pour plus d'options.

## Commandes en ligne

Il est possible d'accéder aux objets générés dans un bloc et de les afficher en ligne.

```latex
\documentclass{article}
\begin{document}

Vous pouvez taper des commandes R dans votre document \LaTeX{} ; elles seront traitées et leur sortie sera incluse dans le document :

<<echo=FALSE, cache=TRUE>>=
# Créer une séquence de nombres
X = 2:10

# Afficher des mesures statistiques de base
summary(X)

@

Ainsi, la moyenne des données est $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/f0a44a5f7df711be41585d20615ec0b9cc041c06)

&#x20;[Ouvrez ceci `knitr` exemple 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 la sortie renvoyée par le code R `mean(X)`. À l'intérieur des accolades, n'importe quelle commande R peut être passée.

## Graphiques

Des graphiques peuvent également être ajoutés à un **knitr** document. Voir l'exemple suivant

```latex
\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")

@

La figure \ref{fig:plot1} est un histogramme simple.

\end{document}
```

![KnitrDemo4.png](/files/45c4f60f75874c2285857fa8170fe525fc6b3008)

&#x20;[Ouvrez ceci `knitr` exemple 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ées dans le répertoire de travail actuel. Quelques options liées à la figure sont passées au bloc.

**plot1**

C'est l'étiquette utilisée pour référencer le 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. C'est le même que celui utilisé dans l'environnement figure.

**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 **knitr** document. 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 appelé `mycode.R` que nous incluons dans notre document LaTeX :

```latex
## ---- myrcode1
# Créer une séquence de nombres
 X = 2:10

## ---- myrcode2
# Afficher des mesures statistiques de base
summary(X)
```

Remarquez les lignes

```latex
## ---- myrcode1
```

et

```latex
## ---- myrcode2
```

Elles marquent le début d'un bloc de code et sont obligatoires si vous voulez utiliser ce script dans notre document, comme le montre l'extrait de code suivant :

```latex
Le bloc ci-dessous ne sera pas imprimé

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

Le code doit apparaître ici

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/9d7eeae90907e80e7e4520937c87d5eb68411e19)

Le premier bloc n'est pas imprimé, il est seulement utilisé pour 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 bloc en utilisant l'étiquette définie après `## ----`. Dans ce cas, c'est `myrcode2`.

Nous avons placé tous les fragments de code de l'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 bloc**

* `résultats`. Modifie le comportement des résultats générés par le code R, les valeurs possibles sont
  * `markup` Utilise LaTeX pour mettre en forme la sortie.
  * `asis` Affiche les résultats bruts de R.
  * `hold` Conserve les résultats de sortie pour les afficher à la fin du bloc.
  * `hide` Masque les résultats.
* `echo`. Indique s'il faut inclure le code source R. Peut prendre d'autres paramètres, `echo=2:3` n'affiche que les deuxième et troisième lignes ; `echo=-2:-3` exclut uniquement les deuxième et troisième lignes.
* `cache`. Indique s'il faut mettre en cache le bloc de code. Les valeurs possibles sont `TRUE` et `FALSE`
* `highlight`. Indique s'il faut mettre en évidence le code source. Les valeurs possibles sont `TRUE` et `FALSE`
* `background`. Couleur d'arrière-plan du bloc, les formats rgb et HTML peuvent être utilisés, la valeur par défaut est *"#F7F7F7"*.

## Lectures complémentaires

Pour plus d'informations, consultez

* [Surlignage de code avec minted](/latex/fr/mise-en-forme/12-code-highlighting-with-minted.md)
* [Utiliser les couleurs dans LaTeX](/latex/fr/mise-en-forme/13-using-colors-in-latex.md)
* [graphiques dans LaTeX](/latex/fr/specifique-a-un-domaine/08-pgfplots-package.md)
* [Insertion d’images](/latex/fr/autres-sujets/27-inserting-images.md)
* [Tableaux](/latex/fr/figures-et-tableaux/01-tables.md)
* [Positionnement des images et des tableaux](/latex/fr/figures-et-tableaux/02-positioning-images-and-tables.md)
* [Package TikZ](/latex/fr/figures-et-tableaux/05-tikz-package.md)
* [Expressions mathématiques](/latex/fr/mathematiques/01-mathematical-expressions.md)
* [le **knitr** page web](http://yihui.name/knitr/)
* [le **knitr** manuel du paquet](https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/fr/autres-sujets/29-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
