Lorsqu’on rédige un rapport d’analyse, ou une note technique, il est très utile de pouvoir numéroter automatiquement les titre, figures, les tables et les équations introduites, et de pouvoir ensuite faire des renvois (cross references) vers ces éléments. Ceci n’était pas très aisé avec R markdown, mais maintenant que Quarto est là, c’est très facile et très efficace !
Dans ce tutoriel, je vous montre en pas à pas, comment cela fonctionne.
Remarque : si vous êtes tout nouveau sur quarto, mais que vous connaissez déjà Rmarkdown, vous pouvez consulter mon article sur la transition de Rmarkdown vers Quarto
Tout d’abord, ajouter les options suivantes dans l’entête yaml (à répéter pour tous les formats de rendu souhaités)
df-print: "kable"
: pour obtenir de belles tables plutôt qu’une sortie logicieltbl-cap-location: "bottom"
: pour spécifier que vous souhaitez faire apparaitre la légende en dessous de la table (vous pouvez choisir “top”, “bottom”, ou “margin” )Comme ceci :
Ensuite, dans le chunk, ajouter les options :
label
pour donner une étiquette (nom) à votre table. Son nom doit obligatoirement commencer par tbl-
, par exemple tbl-iris
. tbl
est un mot clé qui permet de faire comprendre à Quarto qu’il s’agit d’une table. Cela permet ensuite de faire apparaitre `Table X: votre légende’. Attention à ne jamais employer d’underscore dans les labels, car ils ne sont pas reconnus ; cela empêche la numérotation de fonctionner.
tbl-cap:
pour préciser votre légende. Par exemple tbl-cap: “Les 6 premières lignes du jeu de données iris”
Comme ceci :
```{r}
#| label: tbl-iris
#| tbl-cap: "Les 6 premières lignes du jeu de données iris"
head(iris)
```
Voici le rendu obtenu. Vous pouvez constater que la numérotation est bien présente.
Et enfin, pour réaliser un renvoi vers cette table, vous devez employer la balise @tbl-label
, par exemple ici @tbl-iris
.
Voici un exemple :
Et le rendu obtenu :
Le principe est identique :
fig-
. Attention à ne jamais employer d’underscore dans les labels, car ils ne sont pas reconnus ; cela empêche la numérotation de fonctionner.fig.cap
@fig-label-de-votre-plot
pour faire le renvoi. Par exemple :
```{r}
#| label: fig-scatter-by-species
#| fig-cap: "Relation entre longueur et largeur des sépales, par espèces"
library(ggplot2)
ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
geom_point()+
geom_smooth(method=lm)+
facet_wrap(~Species)
```
Voici le rendu obtenu. La encore, vous pouvez constater que la numérotation est bien présente.
Voici un exemple de renvoi :
Et le rendu
Remarque : vous pouvez gérer la position de la légende des figures avec l’option fig-cap-location:
de la même façon que nous l’avons fait avec les tables (c’est-à-dire dans l’entête, et pour chaque type de format)
Le principe est très similaire :
#fig-
, mais ici directement après la balise d’insertion de l’image. Attention à ne pas oublier le # et de ne jamais employer d’underscore dans les noms, car ils ne sont pas reconnus ; cela empêche la numérotation de fonctionner.@fig-label-de-votre-image
pour faire le renvoiPar exemple :
![De bonnes vacances](images/ananas.png){#fig-ananas}
Voici un exemple de renvoi :
Et le rendu obtenu :
Remarque : vous pouvez gérer la position de la légende des figures avec l’option fig-cap-location:
de la même façon que nous l’avons fait avec les tables (c’est-à-dire dans l’entête, et pour chaque type de format)
Pour numéroter une équation et pouvoir réaliser un renvoi, il est nécessaire que l’équation soit sous forme d’un bloc, c’est-à-dire réalisée en utilisant 2 dollars ($$
) en début et fin de l’équation. Ensuite, le principe est très proche de celui de l’image :
#eq-einstein”
. Attention à ne pas employer d’underscore dans les noms, car ils ne sont pas reconnus@eq-label-de-votre-equation
pour faire le renvoi.Voici un exemple :
Voici le rendu :
Tout d’abord, pour obtenir une numérotation automatique de vos titres, vous devez ajouter, dans l’entête yaml, l’option number-sections: true
, pour chaque type de rendu souhaité.
Ensuite, le principe est toujours le même :
#seq-packages”
. Attention à ne pas employer d’underscore dans les noms, car ils ne sont pas reconnus@seq-label-de-votre-titre
pour faire le renvoi.Voici un exemple :
Et voici le rendu obtenu :
J’espère que ce petit tutoriel sur la gestion de la numérotation des tables, figures, équation, et section et leur renvoi avec quarto vous permettra de le mettre en place facilement sur vos documents.
Si ce tutoriel vous a été utile, n’hésitez pas à laisser un commentaire ci-dessous avec vos impressions ou questions, et partagez vos expériences avec quarto !
Si vous souhaitez vous former à Quarto, vous pouvez retrouver le programme de ma formation d’initiation à Quarto ainsi que les dates des prochaines sessions, et les modalités (tarif, programme) en cliquant ici
Retrouvez le programme de ma formation d’initiation à Quarto ainsi que le planning des prochaines session en cliquant ici
C’est possible en faisant un don sur la page Tipeee du blog
Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.
6 Responses
Bonjour Claire,
merci pour ce tuto bien complémentaire à la formation Quarto!
J’ai une petite question. Dans un de mes chunks, j’ai réalisé 2graphiques.
J’ai donc repris #| label: fig-variable-X #| fig-cap: “Histogramme de la variable X” pour mon 1er graphe et
#| label: fig-variable-Y#| fig-cap: “Histogramme de la variable Y”.
Effectivement, j’ai bien figure 1 et figure 2 qui s’affiche, mais le label écrit est “fig-cap: “Histogramme de la variable X”, il ignore mon 2ème fig-cap: “Histogramme de la variable Y”.
As tu une astuce pour récupérer ce 2ème fig-cap réalisé d’un même chunk. Faut il faire un chunk par figure?
Merci pour ton retour
Bonne journée
Nadine
Bonjour Nadine,
je ne suis pas certaine d’avoir bien compris ta question. Est ce que ce bout de code te permet de faire ce que tu souhaites :
```{r}
#| echo: fenced
#| layout-ncol: 2
#| fig-cap:
#| - "ScatterPlot"
#| - "Boxplot"
#| label: fig-by-species-iris
library(ggplot2)
ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length, colour=Species))+
geom_point()+
geom_smooth(method=lm)+
facet_wrap(~Species)
ggplot(iris, aes(x=Species, y=Sepal.Length, colour=Species))+
geom_point()+
geom_boxplot()
```
Par contre on ne peut pas faire de renvoi.
Pour faire le renvoi, je pense que la solution des deux chunks est la bonne.
Bonjour,
Il existe la métadonnées `fig-subcap` pour faire ce que vous décrivez.
#| label: fig-variables
#| fig-cap: “Histogrammes des variables X et Y”
#| fig-subcap:
#| – “Histogramme de la variable X”
#| – “Histogramme de la variable Y”
#| layout-ncol: 2
références : voir @fig-variables (@fig-variables-1 pour la variable X et @fig-variables-2 pour la variable Y)
qui rendra : voir Figure 1 (Figure 1 (a) pour la variable X et Figure 1 (b) pour la variable Y)
Voir ici :
Merci Julien, c’est TOP !
Merci Claire 🙂
L’url vers la bonne section de la doc sur quarto.org a été coupé, je re-tente
juste le sous-chemin :
/docs/authoring/cross-references.html#subfigures
sans le https:// :
quarto.org/docs/authoring/cross-references.html#subfigures
Bonjour,
Merci pour ce bref tuto. Les autres plus pour moi de quarto est de pouvoir diposer d’une vrai UI dans Rstudio pour insérer une multitude d’objet et de pouvoir compter sur des raccoucis (une lste déroulante apparait avec “/”) pour pouvoir le faire. La gestion de la bibliographie est également exceptionnelle bien meilleur que dans Word même avec un add-on de type Zotero ou EndNote.