đŠ quartify
Source:README_FR.md
đŹđ§ English version
TL;DR
- đ»ïž PrĂ©sentation en français
- đ Documentation officielle
- đ Version en ligne
Description
quartify est un package R qui convertit automatiquement des scripts R en documents Quarto markdown (.qmd).
Le package facilite la transformation de vos analyses R en documents Quarto reproductibles et bien structurés, en préservant la structure logique de votre code grùce aux sections de code RStudio. Il reconnaßt la syntaxe standard des sections de code RStudio (####, ====, ----) pour créer des structures de navigation correctement indentées.
Différences avec knitr::spin() et les render-scripts de Quarto
knitr::spin() et la fonctionnalitĂ© render-scripts de Quarto permettent dĂ©jĂ de rendre des scripts R, mais reposent tous deux sur lâinsertion de structure Markdown directement dans les commentaires (#', titres, options de chunks, etc.).
quartify adopte une philosophie diffĂ©rente : il nâimpose aucune syntaxe Markdown dans les commentaires et fonctionne sur des scripts R totalement standards. Les commentaires restent des commentaires, le code reste du code.
Lâobjectif est de conserver des scripts propres et habituels, tout en les rendant convertibles en .qmd â et, lorsque plusieurs scripts sont sĂ©lectionnĂ©s, de pouvoir les assembler automatiquement en un book Quarto structurĂ© sans aucune réécriture du code source.
Cas dâusage
Si vous avez un script R fonctionnel qui contient des commentaires, vous pourriez vouloir générer un document Quarto à partir de ce script qui vous permettra de produire automatiquement une documentation HTML affichable. Ceci est particuliÚrement utile pour :
- Documentation : Générez automatiquement de la documentation à partir de votre code commenté
- Revue de code : Présentez votre code dans un format plus lisible pour les parties prenantes qui préfÚrent les documents formatés aux scripts bruts
Fonctionnalités
- Conversion automatique : Transforme vos scripts R (.R) en documents Quarto (.qmd)
- Conversion de fichiers multiples : Convertir des fichiers individuels, plusieurs fichiers, ou des répertoires entiers en une seule fois
- Création de Quarto Books : Génération automatique de livres Quarto navigables à partir de répertoires (activé par défaut)
-
Support des sections de code RStudio : ReconnaĂźt les sections de code RStudio (
####,====,----) et les convertit en titres markdown appropriĂ©s avec les niveaux dâindentation corrects - PrĂ©servation des commentaires : Les commentaires rĂ©guliers sont convertis en texte explicatif
- Organisation du code : Le code R est automatiquement organisé en blocs exécutables
-
En-tĂȘte YAML personnalisable : PossibilitĂ© de dĂ©finir le titre, lâauteur et dâautres paramĂštres
-
Table des matiĂšres : GĂ©nĂ©ration automatique dâune table des matiĂšres dans le document Quarto avec la profondeur appropriĂ©e
- Support du français : Affiche âSommaireâ au lieu de âTable of contentsâ quand la langue est le français
- GĂ©nĂ©ration HTML automatique : GĂ©nĂšre optionnellement le fichier HTML Ă partir du .qmd et lâouvre dans le navigateur
- ThĂšmes personnalisables : Choisissez parmi 25+ thĂšmes Quarto pour personnaliser lâapparence de vos documents HTML
- Numéros de ligne source : Affichage optionnel des numéros de ligne originaux du script R dans les chunks de code pour la traçabilité
- Intégration qualité du code : Intégration optionnelle avec styler et lintr pour afficher les suggestions de formatage et les problÚmes de qualité dans des onglets interactifs
-
Support de la documentation roxygen2 : Conversion automatique des blocs de documentation roxygen2 (
#') en sections callout-note avec les noms des fonctions - Support des snippets RStudio : Insertion rapide de métadonnées et de structure via des snippets de code personnalisables
- Fonctionnalités spéciales : Support des diagrammes Mermaid, des callouts (note, tip, warning, etc.), et des tabsets pour organiser le contenu
-
Personnalisation du répertoire de sortie : Spécifiez des répertoires de sortie personnalisés pour la génération de livres (par défaut
_book) -
PrĂȘt pour dĂ©ploiement web : Inclut
quartify_app_web()pour dĂ©ploiement sur serveurs web avec capacitĂ©s dâupload/tĂ©lĂ©chargement
Installation
Vous pouvez installer la version de développement de quartify depuis GitHub :
# install.packages("devtools")
devtools::install_github("ddotta/quartify")Utilisation
đ Essayez lâApplication Web en Ligne !
Aucune installation requise ! Utilisez quartify directement dans votre navigateur :
â https://quartify.lab.sspcloud.fr/ â
La version web vous permet de :
- â
Télécharger un ou plusieurs scripts R directement depuis votre ordinateur OU sélectionner un répertoire contenant des scripts R pour une conversion par lots
- â
Créer des Quarto Books automatiquement à partir de plusieurs fichiers avec structure de navigation
- â
Configurer les options de conversion (titre, auteur, thÚme, création de book, etc.)
- â
Télécharger les fichiers .qmd et .html générés (ou une archive .zip en mode batch)
- â
Aucune installation de R nécessaire !
Interface Shiny Interactive (pour les utilisateurs R)
quartify fournit Ă©galement une interface Shiny interactive qui fonctionne dans nâimporte quel environnement R :
Option 1 : Application Autonome (fonctionne dans la plupart des IDE)
library(quartify)
quartify_app() # S'ouvre dans votre navigateur par dĂ©fautCela lance une interface basĂ©e sur le navigateur oĂč vous pouvez :
- Convertir un ou plusieurs fichiers OU un répertoire entier de scripts R
- Créer des Quarto Books avec navigation automatique (activé par défaut pour les répertoires)
- Sélectionner un répertoire de sortie personnalisé pour la génération de books
- SĂ©lectionner les fichiers/rĂ©pertoires dâentrĂ©e avec un explorateur de fichiers
- Choisir lâemplacement du fichier de sortie pour les fichiers individuels
- Personnaliser le titre du document, lâauteur et le thĂšme
- Activer/dĂ©sactiver les options de rendu et dâaffichage
- Basculer entre lâinterface anglaise/française
Parfait pour les utilisateurs de Positron, VS Code, ou tout IDE supportant R !
Option 2 : Add-in RStudio
Si vous utilisez RStudio, vous pouvez Ă©galement accĂ©der Ă la mĂȘme interface via :
- Ouvrez votre script R dans RStudio
- Allez dans le menu Addins â Quartify â Convert R Script to Quarto
- Une fenĂȘtre de dialogue apparaĂźtra avec les mĂȘmes options que lâapplication autonome
- Cliquez sur GENERATE pour convertir votre script
Lâinterface dĂ©tecte automatiquement les prĂ©fĂ©rences de langue de votre session R et affiche tous les libellĂ©s en anglais ou en français en consĂ©quence. Vous pouvez changer la langue Ă tout moment avec les boutons EN/FR. Le format de sortie est toujours HTML.
Personnalisation
# Avec personnalisation du titre et de l'auteur
rtoqmd("mon_script.R",
output_file = "mon_document.qmd",
title = "Mon analyse statistique",
author = "Votre nom",
format = "html",
theme = "cosmo", # ThĂšme Quarto (optionnel)
render = TRUE, # Générer le HTML
open_html = TRUE, # Ouvrir le HTML dans le navigateur
number_sections = TRUE) # Numéroter les sections automatiquementUtilisation du fichier exemple
Un fichier exemple est inclus dans le package pour tester la fonction :
# Localiser le fichier exemple
example_file <- system.file("examples", "example.R", package = "quartify")
# Convertir le fichier exemple
rtoqmd(example_file, "test_output.qmd")Conversion par lots
Utilisation de lâInterface Web
Dans quartify_app_web() (ou lâapplication en ligne), vous pouvez :
- SĂ©lectionner le mode âBatch (multiple files)â
-
Choisir votre mĂ©thode dâentrĂ©e :
- Upload files : TĂ©lĂ©charger plusieurs scripts R en mĂȘme temps
- Select directory : Parcourir et sélectionner un répertoire contenant vos scripts R
- Lâapplication convertira tous les scripts R et crĂ©era une archive .zip tĂ©lĂ©chargeable
Parfait pour convertir des projets entiers sans écrire de code R !
Utilisation des Fonctions R
Convertir tous les scripts R dâun rĂ©pertoire (y compris les sous-rĂ©pertoires) :
# Convertir tous les scripts R d'un répertoire
rtoqmd_dir("chemin/vers/scripts")
# Convertir et générer tous les scripts
rtoqmd_dir("chemin/vers/scripts", render = TRUE)
# Avec paramÚtres personnalisés
rtoqmd_dir("chemin/vers/scripts",
author = "Ăquipe Data",
exclude_pattern = "test_.*\\.R$")Intégration de la qualité du code
quartify sâintĂšgre optionnellement avec styler et lintr pour vous aider Ă amĂ©liorer la qualitĂ© du code :
Fonctionnalités
-
use_styler: Affiche le code formaté selon le guide de style tidyverse -
use_lintr: Identifie les problÚmes de qualité du code et les problÚmes potentiels -
apply_styler: Applique directement le formatage Ă votre script R original (â ïž modifie le fichier source)
Lorsque des problÚmes de qualité sont détectés, quartify crée des onglets interactifs dans la sortie HTML avec : - Code Original : Votre code original - Code Stylisé : Version formatée (si use_styler = TRUE et des changements détectés) - ProblÚmes Lint : Avertissements de qualité (si use_lintr = TRUE et des problÚmes trouvés)
Installation
Ces packages sont optionnels et nécessaires uniquement si vous souhaitez utiliser les fonctionnalités de qualité du code :
install.packages(c("styler", "lintr"))Exemples
# Afficher les suggestions de formatage dans des onglets
rtoqmd("mon_script.R", "sortie.qmd",
use_styler = TRUE)
# Afficher Ă la fois le formatage et les problĂšmes lint
rtoqmd("mon_script.R", "sortie.qmd",
use_styler = TRUE,
use_lintr = TRUE)
# Appliquer le formatage directement au fichier source (â ïž modifie l'original)
rtoqmd("mon_script.R", "sortie.qmd",
apply_styler = TRUE)Dans les applications Shiny
Les trois applications Shiny (rtoqmd_addin(), quartify_app(), et quartify_app_web()) incluent des cases Ă cocher pour ces options dans lâinterface.
đ Pour des informations dĂ©taillĂ©es, consultez :
- Guide de qualité du code
- Vignette Fonctionnalités avancées - Guide complet avec exemples
- Vignettes du package
Format du script R source
Pour que la conversion fonctionne correctement, structurez votre script R en utilisant les sections de code RStudio :
# Titre : Analyse des données Iris
#
# Auteur : Jean Dupont
#
# Date : 2025-11-28
#
# Description : Explorer les différences entre les espÚces d'iris
#
library(dplyr)
## Titre 2 ####
### Titre 3 ====
# Début du traitement statistique
# Comptage du nombre d'observations par espĂšce
iris |>
count(Species)
### Titre 3 ====
# Filtrer le data.frame sur l'espĂšce "setosa"
iris |>
filter(Species == "setosa")
#### Titre 4 ----
# Sélectionner la colonne Species
iris %>%
# Sélectionner une colonne
select(Species)RĂšgles de commentaires
0. Métadonnées du document (Optionnel)
Vous pouvez définir les métadonnées directement dans votre script R en utilisant des commentaires spéciaux au début :
-
Titre :
# Title : Mon titreou# Titre : Mon titre -
Auteur :
# Author : Mon nomou# Auteur : Mon nom -
Date :
# Date : AAAA-MM-JJ -
Description :
# Description : Description de votre script
đĄ Snippet RStudio : utilisez la fonction install_quartify_snippets() pour installer les snippets de quartify ou crĂ©ez un snippet pour insĂ©rer rapidement les mĂ©tadonnĂ©es (Outils > Modifier les snippets de code > R) :
snippet header
# Titre : ${1}
#
# Auteur : ${2}
#
# Date : ${3}
#
# Description : ${4}
#
Tapez header + Tab dans votre script pour insérer la structure de métadonnées.
Comportement : - Les métadonnées trouvées dans le script remplacent les paramÚtres de la fonction - Les lignes de métadonnées sont retirées du corps du document (uniquement dans le YAML) - Si aucune métadonnée dans le script, les paramÚtres de la fonction sont utilisés
đ Note : Le champ
Descriptionpeut sâĂ©tendre sur plusieurs lignes. Pour continuer la description, commencez la ligne suivante par#suivi dâau moins un espace. Les lignes de continuation sont automatiquement concatĂ©nĂ©es. Exemple :# Description : Cette analyse explore les diffĂ©rences entre les espĂšces d'iris # en utilisant diverses mĂ©thodes statistiques et techniques de visualisation # pour identifier les patterns et corrĂ©lations.
quartify reconnaĂźt trois types de lignes dans votre script R :
1. Sections de code (En-tĂȘtes)
Les sections de code RStudio deviennent des en-tĂȘtes markdown. Critique : les symboles de fin doivent contenir au moins 4 caractĂšres :
-
## Titre ----â En-tĂȘte de niveau 2 (au moins 4#,=ou-Ă la fin) -
### Titre ----â En-tĂȘte de niveau 3 (au moins 4#,=ou-Ă la fin) -
#### Titre ----â En-tĂȘte de niveau 4 (au moins 4#,=ou-Ă la fin)
Note : Vous pouvez utiliser #, =, ou - indifféremment comme symboles de fin (ex : ## Titre ==== ou ### Titre ---- fonctionneront).
2. Commentaires réguliers (Texte)
Les commentaires simples avec # en début de ligne (sans espace avant) deviennent du texte explicatif :
# Ceci est un commentaire autonome
# Il devient du texte simple dans le document Quartoâ ïž Important : Pour quâun commentaire soit converti en texte, la ligne doit commencer par
#sans espace avant. Les commentaires indentés (avec des espaces avant#) restent dans le code.
đĄ Astuce : Pour diviser un long chunk en plusieurs parties, insĂ©rez un commentaire en dĂ©but de ligne (sans espace avant
#) entre deux blocs de code. Ce commentaire sera converti en texte et créera naturellement deux chunks séparés.
Astuce : Utilisez le raccourci Commenter/Décommenter de RStudio (Ctrl+Shift+C sur Windows/Linux ou Cmd+Shift+C sur Mac) pour ajouter ou retirer rapidement des commentaires.
3. Lignes de code
Les lignes non commentées deviennent des chunks de code R exécutables :
iris |> filter(Species == "setosa")4. Commentaires en ligne (Ă lâintĂ©rieur du code)
Les commentaires Ă lâintĂ©rieur des blocs de code sont prĂ©servĂ©s dans le chunk de code R :
5. Callouts (Encadrés)
Les callouts sont des blocs spéciaux qui mettent en évidence des informations importantes. Cinq types sont supportés : note, tip, warning, caution, important.
Syntaxe dans le script R :
# callout-note - Note importante
# Ceci est le contenu du callout.
# Il peut s'étendre sur plusieurs lignes.
# Une ligne vide ou du code termine le callout
x <- 1Se convertit en Quarto :
::: {.callout-note title="Note importante"}
Ceci est le contenu du callout.
Il peut s'étendre sur plusieurs lignes.
:::Sans titre :
# callout-tip
# Ceci est un conseil sans titre.Les callouts se terminent lorsquâon rencontre une ligne vide, du code, ou une autre section.
6. Diagrammes Mermaid
CrĂ©ez des organigrammes, des diagrammes de sĂ©quence et dâautres visualisations avec la syntaxe Mermaid, rendus directement dans la sortie HTML.
Syntaxe dans le script R :
#| mermaid
#| eval: true
flowchart LR
A[Démarrer] --> B{Décision}
B -->|Oui| C[Résultat 1]
B -->|Non| D[Résultat 2]Se convertit en Quarto :
```{mermaid}
%%| eval: true
flowchart LR
A[Démarrer] --> B{Décision}
B -->|Oui| C[Résultat 1]
B -->|Non| D[Résultat 2]
Pour plus d'informations : [Documentation Mermaid](https://mermaid.js.org/)
#### 7. Tabsets (Onglets)
Organisez du contenu connexe dans des onglets interactifs pour afficher des vues alternatives ou des analyses groupées.
**Syntaxe dans le script R :**
```r
# tabset
# tab - Statistiques résumées
# Voici les statistiques pour iris :
summary(iris)
# tab - Structure
# Structure des données :
str(iris)
# tab - PremiĂšres lignes
# PremiĂšres observations :
head(iris)
Se convertit en Quarto :
PremiĂšres lignes
PremiĂšres observations :
{r} head(iris)
:::
Pour plus d'informations : [Quarto Tabsets](https://quarto.org/docs/interactive/layout.html#tabset-panel)
**RĂšgles importantes :**
- Toujours inclure un espace aprĂšs `#` pour les commentaires
- Les en-tĂȘtes de section DOIVENT avoir au moins 4 symboles de fin
- **Les commentaires avec un `#` en dĂ©but de ligne** â deviennent du texte en dehors des blocs de code
- **Les commentaires dans le code** â restent Ă l'intĂ©rieur des blocs de code
- **Callouts** â `# callout-TYPE` ou `# callout-TYPE - Titre`
- **Mermaid** â `#| mermaid` suivi du contenu du diagramme
- **Tabsets** â `# tabset` puis `# tab - Titre` pour chaque onglet
- Les lignes de code consĂ©cutives sont regroupĂ©es dans le mĂȘme bloc
- Les lignes vides entre les blocs sont ignorées
Ceci suit la [convention des sections de code RStudio](https://docs.posit.co/ide/user/ide/guide/code/code-sections.html) qui fournit une indentation appropriée dans la navigation du plan du document RStudio.
## ThĂšmes Quarto
Personnalisez l'apparence de vos documents HTML avec les thĂšmes Quarto. Le package supporte tous les thĂšmes Bootswatch disponibles :
**ThĂšmes clairs** : cosmo, flatly, journal, litera, lumen, lux, materia, minty, morph, pulse, quartz, sandstone, simplex, sketchy, spacelab, united, vapor, yeti, zephyr
**ThĂšmes sombres** : darkly, cyborg, slate, solar, superhero
Exemple :
```r
# Utiliser le thĂšme "flatly"
rtoqmd("mon_script.R", theme = "flatly")
# Utiliser le thĂšme sombre "darkly"
rtoqmd("mon_script.R", theme = "darkly")
Pour plus dâinformations sur les thĂšmes, consultez la documentation Quarto.
Sortie et documentation
Le document .qmd généré contient :
- Un en-tĂȘte YAML complet avec configuration de la table des matiĂšres
- Des titres correctement structurés à partir des sections de code RStudio
- Des explications textuelles Ă partir de vos commentaires
- Chunks de code non exécutables pour une documentation statique
đ Pour un exemple complet de la sortie gĂ©nĂ©rĂ©e, consultez la vignette DĂ©marrage
Intégration CI/CD
Utilisez quartify dans vos pipelines CI/CD pour générer automatiquement la documentation :
GitHub Actions (.github/workflows/generate-docs.yml) :
- name: Générer la documentation
run: |
library(quartify)
rtoqmd_dir("scripts/", render = TRUE, author = "Ăquipe Data")
shell: Rscript {0}
- uses: actions/upload-artifact@v4
with:
name: documentation
path: |
scripts/**/*.qmd
scripts/**/*.htmlGitLab CI (.gitlab-ci.yml) :
generate-docs:
image: ddottaagr/quartify:latest
script:
- R -e "quartify::rtoqmd_dir('scripts/', render = TRUE, author = 'Ăquipe Data')"
artifacts:
paths:
- scripts/**/*.qmd
- scripts/**/*.htmlđ Guide complet CI/CD avec exemples dĂ©taillĂ©s : IntĂ©gration CI/CD