Documents de travail (Working Papers)
working-papers.RmdVue d’ensemble
Chaque document de travail (WP) de l’OFCE vit dans son propre dépôt GitHub. Un WP produit deux sorties :
- une page HTML (site Quarto avec l’extension
wp) - un PDF (LaTeX via
wp-pdfou Typst viawp-typst)
Il peut aussi contenir des annexes
(annexes.qmd) et un historique des
révisions (news.qmd).
1. Initialiser un nouveau WP
library(ofceweb)
# Depuis la racine du dépôt GitHub du WP
setup_wp(
path = ".",
website_title = "Mon document de travail",
wp = NULL, # NULL = brouillon ; entier = publié
annee = 2026,
lang = "fr",
hypothesis = FALSE,
versionning = TRUE
)- Initialise la branche orpheline
gh-pages(pré-publication GitHub Pages) - Copie les gabarits (
_quarto.yml,index.qmd,annexes.qmd,news.qmd) - Copie les assets OFCE (
www/) et l’extension Quarto (_extensions/wp/) - Copie les workflows GitHub Actions
(
.github/workflows/) - Adapte
_quarto.ymlavec le titre, l’URL, le numéro WP, l’année, la langue
Après setup_wp(), éditez _quarto.yml et
index.qmd pour renseigner les métadonnées définitives
(auteurs, résumé, date) avant de commiter.
2. Vérifier la structure avant rendu
check_wp()check_wp() vérifie :
- Champs obligatoires dans
_quarto.yml:annee,author,date,citation -
index.qmdprésent et déclarant les formatswp-htmletwp-pdf/wp-typst -
references.bibprésent (warning sinon) -
news.qmdprésent (warning sinon) - Si WP publié : cohérence
version/site-path,anneevalide - Tous les
.qmdnon-index référencés danswebsite.other-links - Unicité des
output-filePDF
Elle retourne un data frame de diagnostics et est automatiquement
appelée par render_wp().
3. Rendre le WP
render_wp(
path = ".",
check_repo = TRUE, # vérifier l'état git avant rendu
check = TRUE, # appeler check_wp() avant rendu
render_site = TRUE, # lancer un serveur local après rendu
site2branch = FALSE # pousser vers la branche de déploiement
)Pipeline :
-
check_repo_status()sicheck_repo -
check_wp()sicheck(abandon si erreurs bloquantes) - Vide
_site/ -
quarto::quarto_render(output_format = "all")— HTML + PDF - Reconstruction du sitemap
- Patch des hashes Bootstrap CSS
-
wp_manifest()— écriture / mise à jour demanifest.json - Réécriture des liens absolus en relatifs si
render_site - Pousse vers la branche de déploiement si
site2branch - Lance
servr::httw("_site")sirender_site
4. Déployer le WP
Le comportement dépend de la valeur de wp dans
_quarto.yml :
-
Brouillon (
wp: null) →quarto publish gh-pages(publie surofce.github.io/{repo}/) -
Publié (
wp: N) →site2branch()verssite-deploy, puis le workflow FTP transfère verswww.ofce.fr/wp/{annee}/{N}/{version}/
5. Passer de brouillon à publié
- Dans
_quarto.yml, renseigner les champswpetannee:
- Relancer
setup_wp()avec le numéro WP pour mettre à jour les URLs et le workflow FTP :
setup_wp(wp = 6, annee = 2026)- Rendre et déployer :
6. Chiffrement (optionnel)
Le chiffrement est géré exclusivement en CI (GitHub Actions), juste avant le transfert FTP. Aucune manipulation locale n’est requise.
Si le secret STATICRYPT_PASSWORD est défini sur le
dépôt, le workflow ftp_deploy.yml chiffre automatiquement
tous les fichiers HTML avant l’envoi au serveur. Si le secret est
absent, le déploiement s’effectue sans chiffrement.
# Activer le chiffrement
gh secret set STATICRYPT_PASSWORD --repo owner/mon-wp
# Désactiver le chiffrement
gh secret delete STATICRYPT_PASSWORD --repo owner/mon-wpLe rendu local (render_wp()) produit toujours du HTML en
clair.
7. Incrémenter la version après une révision
wp_version_up() # v0 -> v1, v1 -> v2, etc.
wp_version_up(custom_version = "v1_corr") # version personnaliséewp_version_up() met à jour en cascade :
- Le champ
versiondans_quarto.yml - Le dernier segment de
website.site-path - Le
server-dirdans.github/workflows/ftp_deploy.yml -
manifest.json(viawp_manifest())
Après l’incrémentation, rendre et déployer à nouveau :
8. Manifeste JSON
wp_manifest() (appelée automatiquement par
render_wp()) génère manifest.json à la racine
du dépôt et dans _site/ :
{
"title": "Mon document de travail",
"authors": [{"name": "Prénom Nom", "affiliation": "OFCE, Sciences Po Paris"}],
"abstract": "Résumé...",
"wp": 6,
"annee": 2026,
"version": "v0",
"date": "2026-05-19",
"date_modified": "2026-05-31",
"url": "https://www.ofce.fr/wp/2026/6/v0/",
"pdf": "OFCEWP2026-6.pdf",
"repo": "https://github.com/ofce/mon-wp/",
"lang": "fr"
}Ce manifeste est collecté par webhome via la GitHub API
pour construire l’index des WPs de l’OFCE.
Structure d’un dépôt WP
mon-wp/
├── _quarto.yml # métadonnées WP (wp, annee, version, auteurs, …)
├── index.qmd # corps du document
├── annexes.qmd # annexes (optionnel)
├── news.qmd # historique des révisions
├── references.bib # bibliographie
├── manifest.json # manifeste JSON (généré par render_wp)
├── www/ # assets OFCE (logos, icônes)
├── _extensions/wp/ # extension Quarto WP
└── .github/workflows/
├── ftp_deploy.yml # déploiement FTP (WP publié)
└── gh-pages.yml # déploiement GitHub Pages (brouillon)