6 Créer un modèle Bookdown réutilisable

Lorsque tu construis un projet Bookdown bien structuré (avec un style, une organisation de chapitres, des fichiers YAML bien définis, etc.), il est naturel de vouloir réutiliser cette base pour d’autres livres, rapports ou travaux collaboratifs — sans repartir de zéro à chaque fois.

Heureusement, Bookdown et l’écosystème R offrent plusieurs moyens de créer un modèle réutilisable, aussi appelé template. Que tu sois un utilisateur individuel souhaitant gagner du temps, ou un enseignant ou responsable de projet souhaitant fournir un cadre à d’autres, tu peux facilement :

  • Copier un dossier modèle déjà configuré
  • Créer ton propre package R avec un squelette de livre
  • Ou même proposer ton modèle directement dans l’interface de RStudio

Dans cette section, nous explorons trois approches complémentaires, de la plus simple à la plus professionnelle, pour créer un template Bookdown que tu pourras cloner, distribuer ou améliorer au fil du temps.

6.1 Créer un dossier modèle à réutiliser (version simple)

6.1.1 Objectif

Créer une base de projet Bookdown personnalisée que tu pourras réutiliser à chaque fois que tu veux écrire un nouveau livre ou rapport, sans repartir de zéro.

6.1.2 Etapes détaillées

6.1.2.1 Crée un dossier modèle

Dans ton ordinateur, crée un dossier que tu appelles par exemple :

bookdown_template/

Dans ce dossier, place tous les fichiers de base nécessaires à un projet Bookdown propre et prêt à être modifié :

  • index.Rmd : le fichier d’introduction avec un bon YAML
  • 01-intro.Rmd, 02-contenu.Rmd : des chapitres vides ou partiellement remplis
  • _bookdown.yml : où tu définis l’ordre des chapitres et le nom du livre
  • _output.yml : où tu précises les formats de sortie (HTML, PDF…)
  • style.css : une feuille de style pour personnaliser le HTML
  • preamble.tex : optionnel, pour personnaliser le rendu PDF
  • book.bib : un fichier .bib vide ou avec des références de base

Tu as ainsi un projet “modèle” tout prêt à cloner.

6.1.2.2 Réutiliser ce modèle pour un nouveau projet

Quand tu veux écrire un nouveau livre :

6.1.2.2.1 Avec une simple commande dans un terminal :
cp -r bookdown_template/ mon_nouveau_livre/

Cela crée un nouveau dossier appelé mon_nouveau_livre/ qui contient une copie du modèle.

6.1.2.2.2 Ou depuis RStudio :
  1. Clique sur File > New Project
  2. Sélectionne Existing Directory
  3. Navigue vers le dossier mon_nouveau_livre/ que tu viens de copier
  4. Tu peux maintenant éditer les fichiers, changer les titres, les chapitres, etc.

6.2 Transformer ton modèle en package R (avancé)

Tu peux créer un package R (pour plus de détail sur le procédé vous pouvez vous référer à l’exposé des camarades sur : la création de package sur R) qui contient un squelette Bookdown. C’est ce que fait le package usethis pour les projets.

Voici un exemple d’approche avec le package bookdownplus qui propose plusieurs modèles. Tu pourrais créer le tien ainsi :

usethis::create_package("bookdownTemplate")

Et y inclure une fonction comme :

create_my_book <- function(path) {
  dir.create(path)
  file.copy(system.file("template/index.Rmd", package = "bookdownTemplate"), file.path(path, "index.Rmd"))
  # copier les autres fichiers...
}

Tu peux ensuite distribuer ce package (localement ou via GitHub), et l’appeler comme :

bookdownTemplate::create_my_book("nouveau_projet")

6.3 Créer un modèle RStudio (R Markdown template)

Si tu veux qu’un utilisateur de RStudio voie ton modèle dans File > New File > R Markdown > From Template, tu peux créer un package avec un template Rmd enregistré.

Exemple :

  • Crée un dossier inst/rmarkdown/templates/monbook/
  • Dans ce dossier, ajoute :
    • skeleton.Rmd (le modèle du livre)
    • template.yaml (description)

Le fichier template.yaml pourrait ressembler à :

name: Mon modèle Bookdown
description: Un modèle Bookdown personnalisé pour les rapports ENSAE
create_dir: true

Ensuite, en important ton package, le modèle apparaîtra dans les menus de RStudio


6.4 Créer un modèle RStudio réutilisable (R Markdown Template)

6.4.1 Objectif

Tu veux que quelqu’un puisse aller dans RStudio →
File > New File > R Markdown > From Template
et y trouver ton propre modèle de livre Bookdown dans la liste.

Quand il cliquera dessus, RStudio va automatiquement créer un nouveau projet avec tous les fichiers de ton modèle (index.Rmd, _bookdown.yml, etc.).

C’est exactement ce que font certains packages comme bookdownplus ou rticles.

6.4.2 Étapes pour créer ton propre modèle

Tu dois créer un package R qui contient ton modèle, puis le déclarer comme un template R Markdown.

6.4.2.1 Étape 1 – Créer un package R (vide)

Dans RStudio, fais :

usethis::create_package("MonModeleBookdown")

Cela crée un dossier avec les fichiers de base du package R (DESCRIPTION, NAMESPACE, etc.).

6.4.2.2 Étape 2 – Créer le dossier du modèle R Markdown

Dans ton package, crée le chemin suivant :

MonModeleBookdown/
└── inst/
    └── rmarkdown/
        └── templates/
            └── monbook/
                ├── skeleton.Rmd
                └── template.yaml
  • skeleton.Rmd : c’est le fichier de départ, comme un index.Rmd, avec tout ton modèle (YAML + contenu).
  • template.yaml : c’est le descriptif du modèle (nom, description…).

6.4.2.3 Contenu du fichier template.yaml

Voici un exemple très simple :

name: Mon modèle Bookdown
description: Un modèle Bookdown personnalisé pour les rapports ENSAE
create_dir: true
  • name : le nom qui s’affichera dans RStudio
  • description : une petite phrase pour décrire ton modèle
  • create_dir: true : dit à RStudio de créer un dossier pour le projet (indispensable)

6.4.2.4 Contenu de skeleton.Rmd

Tu peux copier ton vrai index.Rmd dedans, ou même faire un squelette de type :

---
title: "Titre par défaut"
author: "Nom de l’auteur"
date: "2025-04-19"
site: bookdown::bookdown_site
output: bookdown::gitbook
---

Et continuer avec un chapitre exemple, un chunk, etc.


6.4.2.5 Etape 3 – Installer ton package

Quand ton package est prêt, installe-le avec :

devtools::install("MonModeleBookdown")

Ou pour l’installer depuis GitHub si tu le mets en ligne :

devtools::install_github("tonpseudo/MonModeleBookdown")

6.4.3 Résultat

Maintenant, dans RStudio :

  1. Va dans File > New File > R Markdown
  2. Clique sur l’onglet From Template
  3. Tu verras ton modèle Mon modèle Bookdown dans la liste
  4. En cliquant dessus, RStudio génère un projet avec tous tes fichiers prêts à l’emploi

#️ Génération du rendu final

Une fois ton contenu rédigé et structuré, l’étape suivante consiste à compiler ton livre Bookdown, c’est-à-dire à générer le document final dans un ou plusieurs formats : HTML, PDF ou EPUB. Bookdown te permet de produire ces formats à partir des mêmes fichiers .Rmd.

6.5 Compilation du livre

La compilation transforme les fichiers .Rmd en un livre complet, avec :

  • Table des matières
  • Numérotation automatique des figures, tableaux, équations
  • Références croisées, citations bibliographiques
  • Fichiers finaux dans un dossier de sortie (par défaut : _book/)

6.5.1 Méthode 1 : via la console R

Tu peux lancer la compilation avec la commande suivante :

bookdown::render_book("index.Rmd")
  • Cela compile tous les fichiers .Rmd listés dans _bookdown.yml
  • Le résultat est placé dans le dossier _book/

6.5.2 Méthode 2 : via l’interface RStudio

Tu peux aussi utiliser l’interface graphique :

  1. Ouvre ton projet Bookdown
  2. Va dans l’onglet Build (ou Ctrl + Shift + B)
  3. Clique sur Build Book

6.5.3 Compiler dans un format spécifique

Bookdown peut générer plusieurs formats. Tu peux cibler un seul format à la fois :

bookdown::render_book("index.Rmd", output_format = "bookdown::gitbook")
bookdown::render_book("index.Rmd", output_format = "bookdown::pdf_book")
bookdown::render_book("index.Rmd", output_format = "bookdown::epub_book")

Assure-toi d’avoir configuré ces formats dans _output.yml.

6.5.4 Compiler dans tous les formats

Pour tout générer en une seule commande :

bookdown::render_book("index.Rmd", output_format = "all")

6.6 Où vont les fichiers compilés ?

Par défaut, tous les fichiers générés sont placés dans un dossier appelé :

_book/

Tu peux changer ce nom dans _bookdown.yml :

output_dir: "docs"

Ce changement est utile si tu veux publier sur GitHub Pages, qui lit le dossier docs/.


6.7 Astuces utiles

  • Si tu modifies un seul chapitre, utilise bookdown::preview_chapter("02-chapitre.Rmd") pour tester rapidement sans tout recompiler
  • Si tu travailles avec LaTeX, installe TinyTeX :
install.packages("tinytex")
tinytex::install_tinytex()
  • Tu peux forcer le nettoyage du dossier de sortie avec :
bookdown::clean_book()

A présent, tu sais comment produire un livre complet depuis tes fichiers .Rmd.
Prochaine étape : le déploiement en ligne ou l’export pour diffusion !

📘 Prise en main du package "Bookdown"

Projet réalisé par Ahmadou Niass et Samba SowENSAE Dakar, 2025
dans le cadre du cours de projets statistiques avec R.

📁 Code source disponible sur GitHub · Powered by Bookdown