quartify

Transformez vos scripts R en documentation Quarto

Damien Dotta

📦 Qu’est-ce que quartify ?

Un package R qui convertit automatiquement vos scripts R en documents Quarto (.qmd)

💡 L’idée : Générer de la documentation HTML à partir de scripts R commentés

🎯 L’objectif : Garder les scripts les plus propres et familiers tout en les rendant compatibles avec l’éco-système Quarto.

🤔 Le problème

  • 📝 Scripts R avec commentaires utiles mais peu lisibles
  • 👥 Difficile à partager avec des non-développeurs
  • 📊 Analyses complexes mal documentées
  • 🔄 Duplication entre code et documentation
  • ⏰ Temps perdu à créer manuellement de la documentation

✨ La solution quartify

  • Automatisation : Conversion R → Quarto en un clic
  • Préservation : Structure et commentaires conservés
  • Enrichissement : Rendu HTML
  • Flexibilité : des fonctions R, des addins RStudio sous forme de Shiny, une version web (sans installation requise)
  • Évolutivité : Du script simple au Quarto Book

🎯 Pourquoi Quarto ?

  • 🚀 Successeur officiel de R Markdown (nouvelle syntaxe et fonctionnalités)
  • 🎨 25 thèmes prêts à l’emploi
  • 📐 Diagrammes : Mermaid intégré (flowcharts, séquences…)
  • 📱 Responsive : S’adapte à tous les écrans
  • 🔮 Future-proof : Développement actif et communauté croissante

🎯 Cas d’usage

1. Documentation technique

  • 📝 Transformer scripts R → Documentation HTML navigable
  • 🔍 Revues de code facilitées pour les équipes
  • 👥 Partager analyses entre pairs

🎯 Cas d’usage

2. Gestion de projet

  • 📚 Créer des Quarto Books pour projets complexes
  • 🗂️ Documentation centralisée et navigable
  • 🔄 Intégration CI/CD pour docs à jour

🚀 Fonctionnalités principales

  • 📝 Conversion R → Quarto : Scripts vers .qmd
  • 🗂️ Sections RStudio : Reconnaissance automatique
  • 💬 Commentaires préservés : Texte dans le document final
  • 🔢 Numéros de lignes : Accès aux numéros de lignes dans le script R de départ
  • 📊 Blocs de code statiques
  • 📑 Table des matières : Automatique
  • 🎨 YAML personnalisable : Titre, auteur, thème, options

🚀 Fonctionnalités principales (suite)

  • 🌐 Rendu HTML : Optionnel avec ouverture automatique
  • 🎭 25 thèmes Quarto : Personnalisation visuelle
  • 🎨 Callouts : Notes, tips, warnings…
  • 📑 Tabsets : Organisation en onglets
  • 📊 Diagrammes Mermaid : Flowcharts, séquences…
  • 🔍 Qualité du code : Intégration styler/lintr

🚀 Fonctionnalités principales (suite)

  • 📂 Conversion par lots : Répertoires entiers
  • 🔧 Add-in RStudio : Intégration IDE
  • 🖥️ Interface Shiny : utilisation par tous les IDE
  • 🌐 Version web : Pas d’installation nécessaire
  • 📚 Quarto Books : Répertoires vers livres navigables
  • 🤖 Automatisation : Compatible CI/CD

🛠️ Installation

Depuis GitHub (version développement)

# Installation de devtools si nécessaire
install.packages("devtools")

# Installation de quartify
devtools::install_github("ddotta/quartify")

# Chargement du package
library(quartify)

🛠️ Installation (suite)

Depuis CRAN (quand disponible)

install.packages("quartify")
library(quartify)

Note

Actuellement en développement - utilisez GitHub

🌐 Version Web - Sans installation !

🚀 Essayez immédiatement !

https://quartify.lab.sspcloud.fr/

✅ Aucune installation R requise
✅ Interface web complète
✅ Toutes les fonctionnalités disponibles

🌐 Fonctionnalités de la version web

  1. Upload de fichiers : Un ou plusieurs scripts R
  2. Conversion de répertoire : Sélection d’un dossier entier
  3. Création de Books : Génération automatique de livres Quarto
  4. Configuration : Titre, auteur, thème, options de rendu
  5. Téléchargement : .qmd, .html, ou archive .zip complète

🌐 Avantages de la version web

  • Accessible : Depuis n’importe quel navigateur
  • Rapide : Pas de setup local nécessaire
  • Partageable : Envoyez le lien à vos collègues
  • Mise à jour : Toujours la dernière version
  • Sans risque : Pas d’installation sur votre machine
  • Démonstration : Parfait pour tester avant installation

💻 Trois façons d’utiliser quartify

1️⃣ Interface Shiny

library(quartify)
quartify_app()  # Lance l'application dans le navigateur

Public cible : Utilisateurs préférant une interface graphique et qui utilisent un IDE différent de RStudio

💻 Trois façons d’utiliser quartify

2️⃣ Add-in RStudio

  1. Ouvrir un script R dans RStudio
  2. Menu AddinsConvert R Script to Quarto

Public cible : Utilisateurs préférant une interface graphique et workflow intégré dans RStudio

💻 Trois façons d’utiliser quartify

3️⃣ Ligne de commande (CLI)

library(quartify)
rtoqmd("mon_script.R", "output.qmd")

Idéal pour : Scripts, automatisation CI/CD…

💻 Interface Shiny - Détails

Onglet “Convertir un fichier”

  • 📁 Sélection du fichier R source
  • 📝 Configuration du nom de sortie
  • ⚙️ Options : titre, auteur, format, thème
  • 🎨 Choix du thème parmi 25+ disponibles
  • 🔧 Options avancées : numérotation, table des matières
  • 📊 Options de rendu : HTML, ouverture auto

💻 Interface Shiny - Détails (suite)

Onglet “Convertir un répertoire”

  • 📂 Sélection d’un répertoire de scripts
  • 📚 Option “Créer un Quarto Book” (par défaut)
  • 🗂️ Configuration du répertoire de sortie
  • ⚙️ Options communes : auteur, thème, rendu
  • 🌐 Génération optionnelle de HTML pour tous les fichiers

💻 Interface Shiny - Détails (suite)

Onglet “Convertir plusieurs fichiers”

  • 📁 Upload de plusieurs fichiers R en une fois
  • 📦 Traitement par lots
  • 📚 Option “Créer un Quarto Book”
  • 💾 Téléchargement d’une archive ZIP complète
  • ⚙️ Configuration unifiée pour tous les fichiers

🔧 Fonction principale : rtoqmd()

Syntaxe de base

rtoqmd(
  input_file,           # Fichier R source
  output_file = NULL,   # Fichier .qmd de sortie (auto si NULL)
  title = NULL,         # Titre du document
  author = NULL,        # Auteur
  format = "html",      # Format de sortie
  theme = "cosmo",      # Thème Quarto
  render = TRUE,        # Générer HTML ?
  open_html = TRUE      # Ouvrir HTML automatiquement ?
)

🔧 Paramètres de rtoqmd()

Paramètres de base

  • input_file : Chemin du script R source
  • output_file : Nom du fichier .qmd (par défaut : même nom)
  • title : Titre dans l’en-tête YAML (sinon depuis métadonnées ou nom fichier)
  • author : Auteur (sinon depuis métadonnées)
  • format : pour l’instant que “html”

🔧 Paramètres de rtoqmd() (suite)

Paramètres de personnalisation

  • theme : Parmi 25 thèmes Quarto (défaut: “cosmo”)
  • number_sections : Numéroter les sections ? (défaut: FALSE)
  • show_source_line : Afficher les numéros de ligne originaux dans les chunks de code (défaut : TRUE)
  • toc : Inclure table des matières ? (défaut: TRUE)
  • toc_title : Titre de la TOC (défaut: “Sommaire”)
  • toc_depth : Profondeur de la TOC (défaut: 3)

🔧 Paramètres de rtoqmd() (suite)

Paramètres de sortie

  • render : Générer le HTML ? (défaut: TRUE)
  • output_html_file : Nom du fichier HTML de sortie
  • open_html : Ouvrir le HTML ? (défaut: TRUE)
  • use_styler : Afficher suggestions de formatage (défaut: FALSE)
  • use_lintr : Afficher problèmes de qualité (défaut: FALSE)
  • apply_styler : Appliquer formatage (défaut: FALSE)

💻 Exemples d’utilisation

Exemple 1 : Conversion simple

# Conversion basique avec rendu HTML
rtoqmd("analyse.R")

# Génère : analyse.qmd + analyse.html
# Ouvre le HTML dans le navigateur

💻 Exemples d’utilisation

Exemple 2 : Sans rendu HTML

# Générer uniquement le .qmd
rtoqmd("analyse.R", 
       render = FALSE)

# Génère : analyse.qmd uniquement

💻 Exemples d’utilisation

Exemple 3 : Personnalisation complète

rtoqmd(
  input_file = "mon_script.R",
  output_file = "rapport_detaille.qmd",
  title = "Analyse statistique des ventes 2024",
  author = "Équipe Data Science",
  format = "html",
  theme = "flatly",
  number_sections = TRUE,
  render = TRUE,
  output_html_file = "docs/rapport_ventes_2024.html",
  open_html = TRUE
)

💻 Exemples d’utilisation

Exemple 4 : Avec vérification qualité

rtoqmd(
  input_file = "analyse.R",
  output_file = "analyse.qmd",
  use_styler = TRUE,    # Afficher suggestions de style
  use_lintr = TRUE,     # Afficher problèmes de qualité
  render = TRUE
)

# Génère des tabsets avec :
# - Code original
# - Code formaté (suggestion)
# - Issues de qualité

📂 Conversion par répertoire : rtoqmd_dir()

Syntaxe

rtoqmd_dir(
  input_dir,              # Répertoire contenant les .R
  output_dir = NULL,      # Répertoire de sortie (défaut: input_dir)
  create_book = TRUE,     # Créer un Quarto Book ?
  author = NULL,
  render = TRUE,
  output_html_dir = NULL,
  exclude_pattern = NULL  # Pattern pour exclure fichiers
)

📂 Exemples de conversion par répertoire

Exemple 1 : Conversion simple d’un répertoire

# Convertir tous les .R d'un répertoire
rtoqmd_dir("scripts/analyses")

# Génère :
# - Un .qmd pour chaque .R
# - Un Quarto Book avec navigation
# - HTML pour chaque fichier

📂 Exemples de conversion par répertoire

Exemple 2 : Sans créer de Book

# Juste convertir les fichiers individuellement
rtoqmd_dir("scripts/", 
           create_book = FALSE)

# Génère un .qmd et .html pour chaque .R
# Pas de structure de livre

📂 Exemples de conversion par répertoire

Exemple 3 : Avec exclusion de fichiers

# Exclure les fichiers de test
rtoqmd_dir(
  input_dir = "scripts/",
  exclude_pattern = "^test_.*\\.R$", 
  author = "Équipe Data",
  theme = "darkly"
)

# Tous les fichiers R dont le nom commence par test_ seront ignorés

📂 Exemples de conversion par lots

Exemple 4 : Organisation personnalisée

# Sortie dans un répertoire dédié
rtoqmd_dir(
  input_dir = "R/analyses/",
  output_dir = "documentation/",
  output_html_dir = "docs/html/",
  create_book = TRUE,
  author = "Mon équipe",
  theme = "cosmo",
  render = TRUE
)

📚 Quarto Books - Qu’est-ce que c’est ?

  • Lien vers la documentation
  • 📖 Structure de livre : Chapitres, parties, navigation
  • 🗂️ Sidebar automatique : Navigation entre tous les fichiers
  • 🔍 Recherche intégrée : Chercher dans tout le livre
  • 📱 Design responsive : Adapté mobile/tablette/desktop
  • 🎨 Personnalisable : Thèmes, logo, favicon
  • 🌐 Publication facile : Gitlab/GitHub Pages, Netlify, Quarto Pub…

📚 Structure d’un Quarto Book

_book/
├── _quarto.yml          # Configuration du livre
├── index.qmd            # Page d'accueil
├── chapter1.qmd         # Chapitre 1
├── chapter2.qmd         # Chapitre 2
└── ...

quartify génère automatiquement cette structure à partir de vos scripts R !

📚 Création automatique de Books

# Active par défaut avec rtoqmd_dir()
rtoqmd_dir("scripts/")

# Génère :
# - _quarto.yml avec configuration
# - index.qmd comme page d'accueil
# - Un chapitre par script R
# - Navigation dans la sidebar

📚 Contenu du _quarto.yml généré

project:
  type: book
  output-dir: _book

book:
  title: "Documentation"
  author: "Votre nom"
  chapters:
    - index.qmd
    - chapter1.qmd
    - chapter2.qmd

format:
  html:
    theme: cosmo

📚 Avantages des Quarto Books

  • 🎯 Organisation claire : Structure projet complexe
  • 📖 Navigation fluide : Entre tous les chapitres
  • 🔍 Recherche globale : Dans tout le contenu
  • 📱 Expérience optimale : Lecture sur tous supports

📝 Format du script R source

Structure recommandée

# Title : Titre de l'analyse
#
# Author : Votre nom
#
# Date : 2025-12-10
#
# Description : Description détaillée
# de ce que fait ce script
#

## Section principale ####

# Commentaire explicatif

code_r <- "exemple"

📝 Métadonnées (optionnel)

En début de script

# Title : Analyse des données Iris
#
# Author : Jane Doe
#
# Date : 2025-12-05
#
# Description : Cette analyse explore les différences
# entre les trois espèces d'iris en utilisant
# des méthodes statistiques avancées.
#

Note

Si absent, quartify utilise le nom du fichier comme titre

📝 Sections et sous-sections

Syntaxe RStudio

## Titre niveau 2 (Heading 2) ####

### Titre niveau 3 (Heading 3) ====

#### Titre niveau 4 (Heading 4) ----

Important

Minimum 4 symboles à la fin (#, = ou -)

📝 Hiérarchie des sections

# Titre niveau 1 (titre du document YAML)

## Import des données ####

### Lecture CSV ====

#### Vérification qualité ----

## Analyse exploratoire ####

### Statistiques descriptives ====

📝 Commentaires → Texte

Règle de base

# Ce commentaire seul sur sa ligne
# devient du texte dans le document Quarto

iris |> filter(Species == "setosa")

Devient dans le .qmd :

Ce commentaire seul sur sa ligne
devient du texte dans le document Quarto

```{.r}
Ligne 4
iris |> filter(Species == "setosa")
```

📝 Commentaires inline (dans le code)

iris |> 
  # Ce commentaire avec espace avant reste dans le code
  filter(Species == "setosa") |>
  select(Sepal.Length)  # Commentaire en fin de ligne reste aussi

Warning

Commentaires précédés d’espace ou en fin de ligne restent dans le bloc de code !

📝 Exemples de conversion

Script R

## Analyse descriptive ####

# Calculer les statistiques de base

summary(iris)

# La fonction summary() fournit :
# - Minimum et maximum
# - Quartiles
# - Moyenne

### Distribution des espèces ====

table(iris$Species)

📝 Document Quarto généré

## Analyse descriptive

Calculer les statistiques de base

```{.r}
Ligne 5
summary(iris)
```

La fonction summary() fournit :
- Minimum et maximum
- Quartiles
- Moyenne

### Distribution des espèces

```{.r}
Ligne 14
table(iris$Species)
```

Snippets RStudio

Installez des snippets de code utiles pour une écriture de script R plus rapide avec install_quartify_snippets().

Après installation et redémarrage de RStudio, vous pouvez utiliser :

  • header + Tab : Insérer un modèle de métadonnées de document
  • callout + Tab : Insérer un modèle de callout
  • mermaid + Tab : Insérer un modèle de diagramme Mermaid
  • tabset + Tab : Insérer un modèle de tabset

🎨 Callouts - Qu’est-ce que c’est ?

Note

Blocs de texte mis en évidence pour attirer l’attention

Astuce

Conseils et bonnes pratiques

Attention

Points importants nécessitant vigilance

🎨 Syntaxe des Callouts

Dans le script R

# callout-note - Titre du callout
# Contenu du callout sur plusieurs lignes.
# Chaque ligne commence par #
# 
# Peut inclure des paragraphes.

code_apres_callout <- "exemple"

🎨 Types de Callouts

5 types disponibles

# callout-note - Information générale
# callout-tip - Conseil, astuce
# callout-warning - Attention requise
# callout-caution - Prudence nécessaire
# callout-important - Point crucial

🎨 Exemple de Callout

Script R

## Chargement des données ####

# callout-important - Prérequis
# Assurez-vous d'avoir installé le package readr :
# install.packages("readr")

library(readr)
data <- read_csv("fichier.csv")

🎨 Rendu du Callout

Prérequis

Assurez-vous d’avoir installé le package readr :
install.packages("readr")

library(readr)
data <- read_csv("fichier.csv")

📊 Diagrammes Mermaid

Qu’est-ce que Mermaid ?

  • 📐 Langage de diagrammes : Syntaxe simple type Markdown
  • 🎨 Rendu automatique : Généré lors du rendu Quarto
  • 🔄 Intégré nativement : Pas d’extension nécessaire
  • 📊 Multiples types : Flowcharts, séquences, Gantt, classes…

📊 Syntaxe Mermaid dans quartify

Dans le script R

#| mermaid
#| eval: true
flowchart TD
    A[Début] --> B[Traitement]
    B --> C{Décision}
    C -->|Oui| D[Fin]
    C -->|Non| B

Note

Utiliser les balises #| pour les options du chunk

📊 Types de diagrammes Mermaid

Flowchart

#| mermaid
#| eval: true
flowchart LR
    A[Raw data] --> B[Cleaning]
    B --> C[Analysis]
    C --> D[Visualization]
    D --> E[Report]

📊 Types de diagrammes Mermaid

Diagramme de séquence

#| mermaid
#| eval: true
sequenceDiagram
    User->>API: Request
    API->>Database: Query
    Database-->>API: Results
    API-->>User: Response

📊 Types de diagrammes Mermaid

Diagramme de classes

#| mermaid
#| eval: true
classDiagram
    class Animal {
        +String nom
        +int age
        +eat()
    }
    class Dog {
        +bark()
    }
    Animal <|-- Dog

📊 Types de diagrammes Mermaid

Gantt (planning)

#| mermaid
#| eval: true
gantt
    title Project planning
    dateFormat YYYY-MM-DD
    section Phase 1
    Data collection :2025-01-01, 30d
    Cleaning        :2025-01-31, 20d
    section Phase 2
    Analysis        :2025-02-20, 30d

📑 Tabsets - Organisation en onglets

Qu’est-ce que c’est ?

  • Lien vers la documentation
  • 📑 Onglets interactifs : Organiser le contenu
  • 👆 Cliquable : L’utilisateur choisit quoi voir
  • 🎯 Gain de place : Éviter trop de scrolling
  • 📊 Comparaison : Afficher différentes vues

📑 Syntaxe des Tabsets

Dans le script R

# tabset

# tab - Onglet 1
# Description du premier onglet

code_onglet1 <- "exemple"

# tab - Onglet 2
# Description du second onglet

code_onglet2 <- "autre exemple"

📑 Exemple de Tabset

Script R

## Exploration des données ####

# tabset

# tab - Résumé
# Statistiques descriptives

summary(iris)

# tab - Structure
# Structure du dataset

str(iris)

# tab - Aperçu
# Premières lignes

head(iris)

📑 Rendu du Tabset

🔍 Qualité du code - styler

Qu’est-ce que styler ?

  • Formatage automatique : Suit le style guide tidyverse
  • 🎯 Cohérence : Code uniforme dans tout le projet
  • 📏 Lisibilité : Indentation, espaces, sauts de ligne
  • 🔧 Intégré quartify : Afficher ou appliquer le formatage

🔍 Utilisation de styler

Option 1 : Afficher les suggestions

rtoqmd("script.R", 
       use_styler = TRUE)

# Génère un tabset avec :
# - "Code original" : Votre code
# - "Code formaté" : Version stylée

Note

N’applique PAS les modifications, juste une suggestion

🔍 Utilisation de styler

Option 2 : Appliquer directement

rtoqmd("script.R", 
       apply_styler = TRUE)

⚠️ Attention !

Modifie le fichier R source directement. Faites un backup !

🔍 Exemple de formatage styler

Avant (original)

x=1+2
if(x>0){
print("positif")}
df<-data.frame(a=1:3,b=4:6)

Après (formaté)

x <- 1 + 2
if (x > 0) {
  print("positif")
}
df <- data.frame(a = 1:3, b = 4:6)

🔍 Qualité du code - lintr

Qu’est-ce que lintr ?

  • 🔍 Analyse statique : Détecte problèmes potentiels
  • ⚠️ Warnings : Syntaxe, style, erreurs potentielles
  • 📊 Bonnes pratiques : Conventions R recommandées
  • 🔧 Intégré quartify : Affiche les issues dans un tabset

🔍 Utilisation de lintr

rtoqmd("script.R", 
       use_lintr = TRUE)

# Génère un tabset avec :
# - "Code original" : Votre code
# - "Issues" : Liste des problèmes détectés

🔍 Combiner styler + lintr

rtoqmd("script.R", 
       use_styler = TRUE,
       use_lintr = TRUE)

# Génère un tabset avec 3 onglets :
# - "Code original"
# - "Code formaté" (suggestion styler)
# - "Issues" (problèmes lintr)

Tip

Parfait pour la revue de code !

🔍 Types de problèmes détectés par lintr

  • 🚫 Syntaxe : Erreurs de code
  • 📏 Longueur de ligne : > 80 caractères
  • 🔤 Naming : Conventions de nommage
  • ⚠️ Variables non utilisées
  • 🔄 Code dupliqué
  • 📦 Packages : Dépendances manquantes
  • 🎨 Style : Indentation, espaces…

✏️ Utiliser apply_styler

  • ⚠️ Le paramètre apply_styler permet de formater définitivement vos fichiers de scripts R selon le guide de style tidyverse.
  • Le paramètre apply_styler ne fonctionne que si use_styler = TRUE.
  • Si vous définissez apply_styler = TRUE mais use_styler = FALSE, vous recevrez un avertissement et le fichier source ne sera pas modifié.
  • Le fichier source est modifié AVANT la conversion
  • Le fichier formaté est ensuite utilisé pour la conversion en .qmd

Rendu de styler et lintr

🎨 Thèmes Quarto disponibles

Thèmes clairs (19)

cosmo, flatly, journal, litera, lumen, lux, materia, minty, morph, pulse, quartz, sandstone, simplex, sketchy, spacelab, united, vapor, yeti, zephyr

Thèmes sombres (6)

darkly, cyborg, slate, solar, superhero, vapor

🎨 Choix du thème

Avec l’interface

  • Menu déroulant avec aperçu
  • Prévisualisation en temps réel

En ligne de commande

rtoqmd("script.R", theme = "flatly")

🎨 Exemples de thèmes

Thème “cosmo” (défaut)

  • 🎨 Design moderne et épuré
  • 📱 Très responsive
  • 🔵 Palette bleue professionnelle

Thème “darkly”

  • 🌙 Fond sombre (dark mode)
  • 👁️ Confortable pour les yeux
  • 💻 Apprécié des développeurs

🔄 Intégration CI/CD

Pourquoi automatiser ?

  • 📅 Documentation toujours à jour : À chaque commit
  • 🤖 Pas d’oubli : Automatique
  • 👥 Collaboration : Toute l’équipe bénéficie
  • 🚀 Déploiement : Publication auto sur Gitlab/GitHub Pages par exemple

🔄 GitLab CI - Configuration

Fichier .gitlab-ci.yml

generate-docs:
  image: ddottaagr/quartify:latest
  stage: build
  script:
    - R -e "quartify::rtoqmd_dir('scripts/', 
            render = TRUE)"
  artifacts:
    paths:
      - scripts/**/*.qmd
      - scripts/**/*.html

🔄 GitLab CI (interne MAASA)- Configuration

Fichier .gitlab-ci.yml

Voir ce projet.

variables:
  DOCKER_AUTH_CONFIG: >
    {"auths": {"${FORGE_REVERSE_HOST}": {"auth": "${ARTIFACTORY_ROBOT_AUTH_TOKEN}"}}}

generate-docs:
  image:
    name: ${FORGE_REVERSE_HOST}/hub-docker-prod-remote/ddottaagr/quartify:latest
  stage: build
  script:
    - R -e "quartify::rtoqmd_dir('scripts/', render = TRUE)"
  artifacts:
    paths:
      - scripts/**/*.qmd
      - scripts/**/*.html

🔄 GitHub Actions - Configuration

Fichier .github/workflows/quartify.yml

name: Generate Documentation

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  generate-docs:
    runs-on: ubuntu-latest

🔄 GitHub Actions - Suite

    steps:
      - uses: actions/checkout@v4
      
      - uses: r-lib/actions/setup-r@v2
        with:
          r-version: '4.5.1'
      
      - name: Install quartify
        run: |
          install.packages("devtools")
          devtools::install_github("ddotta/quartify")
        shell: Rscript {0}

🔄 GitHub Actions - Génération

      - name: Generate 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/**/*.html

💡 Bonnes pratiques

1. Structure du code

  • ✅ Utilisez les sections RStudio (####, ====, ----)
  • Hiérarchie logique : Niveau 2 → 3 → 4
  • Noms explicites : “Import données” > “Import”
  • Granularité : Pas trop de sections, pas trop peu

💡 Bonnes pratiques

2. Commentaires

  • Une idée = un # : Pas de ## dans les commentaires texte
  • Phrases complètes : Majuscule, ponctuation
  • Contexte : Expliquer le “pourquoi”, pas le “quoi” dans les commentaires

💡 Bonnes pratiques

3. Organisation

  • Métadonnées en début : Title, Author, Date, Description
  • Sections logiques : Introduction → Analyse → Conclusion
  • Callouts pour points clés : Highlights importants
  • Tabsets pour comparaisons : Différentes approches

💡 Bonnes pratiques

4. Qualité

  • Styler régulièrement : Code cohérent
  • Lintr avant commit : Pas de surprises
  • Tester le rendu : Vérifier HTML généré
  • Choisir thème adapté : Public cible

💡 Bonnes pratiques

5. Workflow

  • Versionner .qmd : Tracer les changements
  • CI/CD : Documentation auto
  • Quarto Books : Projets multi-fichiers

🔗 Ressources et documentation

Documentation officielle

🔗 Ressources et documentation (suite)

Guides et tutoriels

🙏 Merci !

Questions ?

📧 GitHub Issues pour questions/bugs
🌟 Star le projet sur GitHub !
🤝 Contributions bienvenues