Files
2026-09-21 07:54:32 +00:00

124 lines
4.0 KiB
Markdown

# 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 `<section>` (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
```