
Lorsqu’on rédige un rapport d’analyse, ou une note technique, il est très utile de pouvoir numéroter automatiquement les figures, les tables et les équations introduites, et de pouvoir ensuite faire des renvois (cross references) vers ces éléments, ou encore des paragraphes. 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.
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égdende 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 princie 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 :
{#fig-ananas}

Voici un exemple de renvoi :

Et le rendu obtenu :

Remarque vous pouvez gérer la position de la légdende des figure 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

CAMPUS DELLADATA
Je propose désormais une formation en ligne pour démarrer avec R et RStudio, pensée pour les profils scientifiques (recherche médicale, biologie, agro, environnement…). D’autres modules arrivent prochainement.

Je suis Claire Della-Vedova, consultante en biostatistique, méthodologie clinique et expertise R.
J’accompagne les fabricants de dispositifs médicaux et les équipes scientifiques des sciences du vivant dans leurs projets d’évaluation clinique, d’analyse statistique et d’analyse de données sous R.
🎓 Formations professionnelles R et biostatistiques
🤝 Prestations et accompagnement sur mesure
📅 Discuter d’un accompagnement ou d’une prestation sur mesure
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.
Une réponse
Bonjour et merci pour blog.
Je confirme que la gestion des références croisées fonctionne bien quand le format de sortie est HTML, que ce soit avec Quarto ou Markdown + Bookdown.
C’est une autre histoire quand on veut produire un document Word. Selon les informations glanées, le sujet est toujours au stade « Work In Progress ». Certains utilisateurs/développeurs ont plu écrire que les références croisées relatives au tableaux étaient opérationnelles avec la bonne combinaison de versions flextable/quarto. Ce n’est pas le cas actuellement.
Il a été proposé de créer un tableau virtuel masqué avec kable (knitr::kable(x = NULL, format = « html ») # a hidden dummy table) dans un tronçon précédant celui ou s’exécute l’instruction flextable. En fait, cela marche aussi lorsque kable() intervient dans le même tronçon, mais toujours avant flextable(). Cela ne fonctionne plus dans l’instruction kable ci-dessus est nichée dans une if…else.
https://stackoverflow.com/questions/77167685/cross-references-and-captions-not-working-when-using-gt-in-quarto-with-word-outp
Ici une solution pour automatiser le choix entre kableExtra::kbl() et flextable::flextable() en fonction du format de document souhaité en sortie :
https://tclark89.github.io/quarto-blog/posts/2022-10-10-quarto-tables-workflow/