# new-marp-project.sh Script **Bash** pour générer un projet [Marp](https://marp.app/) 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 : ```sh # 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 ```sh # 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-set` n'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 297mm` sur `
` (Marpit s'en sert aussi pour le PDF exporté). - Réduit le corps de texte à `11pt` (le thème `default` impose `29px`, prévu pour des diapos 1280x720) et ajuste les titres : h1 ~16pt, h2 ~13.8pt, h3 ~12pt, h4 ~11pt. - Importe `custom` via `@import` : toute modification de `custom.css` se 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 ```sh # 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 ```