new-marp-project.sh
Script Bash pour générer un projet Marp prêt à l'emploi, en un seul appel. Il installe la configuration (Marp CLI + extension VS Code), les thèmes CSS et un fichier de départ.
Objectif
Démarrer un projet Marp sans aucune configuration manuelle, au choix :
- slides — un diaporama classique 16:9 (thème
custom) ; - a4 — un document au format A4 (thème
custom-a4), conçu pour les exports PDF et DOCX.
Prérequis
| Outil | Requis ? | Rôle |
|---|---|---|
bash |
Oui | exécution du script |
| Marp CLI | Oui | exports PDF / PPTX / HTML |
| Node.js | Oui (via npx) | fournit Marp CLI |
pandoc |
Non | export DOCX (projets a4 uniquement) |
| VS Code (+ extension Marp) | Non | préview et exports depuis l'éditeur |
Mode d'emploi
Copier le script puis l'exécuter depuis le dossier voulu :
# mode 1 — argument (recommandé)
./new-marp-project.sh slides mon-dossier
./new-marp-project.sh a4 mes-docs
# mode 2 — interactif
./new-marp-project.sh
# aide
./new-marp-project.sh --help
Le script refuse d'écrire dans un dossier existant non vide.
Fichiers générés
Type slides :
mon-dossier/
├── .marprc.json # config Marp CLI (themeSet)
├── slides.md # diapo de départ (theme: custom)
└── .vscode/
├── settings.json # config extension VS Code (markdown.marp.themes)
└── custom.css # thème "custom"
Type a4 :
mes-docs/
├── .marprc.json
├── document.md # page de départ (theme: custom-a4)
├── pandoc-strip-hr.lua # filtre pandoc (supprime les "---" dans le DOCX)
└── .vscode/
├── settings.json
├── custom.css # thème "custom" (base)
└── custom-a4.css # thème "custom-a4" (importe + surcharge custom)
Il ne reste plus qu'à ouvrir slides.md ou document.md dans VS Code et lancer le preview Marp.
Exports
# PDF (slides) — format 16:9
npx @marp-team/marp-cli mon-dossier/slides.md --pdf
# PPTX
npx @marp-team/marp-cli mon-dossier/slides.md --pptx
# PDF (a4) — format A4 exact
npx @marp-team/marp-cli mes-docs/document.md --pdf
# DOCX (a4) — pandoc, sans les traits "---" des séparateurs de diapos
pandoc mes-docs/document.md --lua-filter=mes-docs/pandoc-strip-hr.lua -o mes-docs/document.docx
Les thèmes sont déjà déclarés dans
.marprc.json: aucun paramètre--theme-setn'est nécessaire.
Infos utiles
Deux fichiers de config, deux usages
.marprc.json(cléthemeSet) — lu par Marp CLI uniquement (exports)..vscode/settings.json(clémarkdown.marp.themes) — lu par l'extension VS Code uniquement (préview).
Les deux sont générés : sans eux, le thème custom / custom-a4 ne serait pas reconnu.
Le thème custom-a4
- Déclare la taille de page
210mm x 297mmsur<section>(Marpit s'en sert aussi pour le PDF exporté). - Réduit le corps de texte à
11pt(le thèmedefaultimpose29px, prévu pour des diapos 1280x720) et ajuste les titres : h1 ~16pt, h2 ~13.8pt, h3 ~12pt, h4 ~11pt. - Importe
customvia@import: toute modification decustom.cssse répercute automatiquement, sans duplication.
Le filtre pandoc-strip-hr.lua
Dans un fichier Marp, les --- séparent les diapos. Sans filtre, pandoc les rend comme des traits horizontaux dans le DOCX ; le filtre les supprime.
Marp CLI : petites commandes utiles
# Préview navigateur
npx @marp-team/marp-cli mon-dossier/slides.md -s
# Export avec un chemin de sortie différent
npx @marp-team/marp-cli mon-dossier/slides.md -o /tmp/export.pdf
Structure du dépôt
.
├── README.md # ce fichier
└── new-marp-project.sh # le script