README file from
Githubmergdowntotex

Merge everything. Convert anywhere. Moteur WASM embarqué dans Obsidian. Aucune étape de compilation, aucun binaire à installer.
What it does
MergDown2TeX transforme une note Obsidian en un document prêt à publier (LaTeX, PDF, DOCX, InDesign). Tout est fusionné automatiquement :
| Entrée | Sortie |
|---|---|
[[Wikilinks]] |
\hyperref[...]{} références croisées |
![[Notes embarquées]] |
Expansion récursive contenue |
![[image.png]] |
\includegraphics{} |
@citation |
\citep{} + flèches bidirectionnelles (↑↓) |
$math$ / $$math$$ |
Équations LaTeX |
| Blocs Mermaid | Rendu automatique en PNG (client-side) |
> [!note] admonitions |
environnements tcolorbox |
| Note de bas de page, tableaux, listes | Support LaTeX complet |
Ancres de blocs (^table--block-…) |
Objets Word/LaTeX numérotés et référencés |
Formats de sortie :
- PDF — Pandoc WASM + Typst (par défaut, fonctionne sur mobile) ou pdflatex + Podman (PC, LaTeX natif)
- DOCX — Pandoc WASM embarqué
- .typ — intermédiaire Typst
- .expanded.md — Markdown étendu autonome (embeds/liens résolus)
- InDesign compatible
How it works
┌─────────────────────────────────────────────────────────┐
│ Obsidian Note │
│ ├── [[Note A]] ──→ \hyperref + expansion │
│ ├── ![[Note B]] ──→ recursive expansion │
│ ├── ![[image.png]] ──→ \includegraphics{} │
│ ├── @citation ──→ \citep{} + arrows ↑↓ │
│ ├── $math$ ──→ LaTeX equation │
│ └── ```mermaid``` ──→ PNG (bundle embarqué) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ WASM Engine (embarqué dans main.js, Base64) │
│ ├── Markdown → LaTeX conversion (moteur Rust/WASM) │
│ ├── Embed expansion + wikilinks + ancres de blocs │
│ ├── Citation extraction + navigation (↑↓) │
│ └── Mermaid → PNG (mermaid.min.js embarqué) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Compilation (auto, sans installation) │
│ ├── pandoc.wasm : .tex → .docx │
│ ├── typst.wasm : .typ → .pdf │
│ └── (option) pdflatex + Podman : .tex → .pdf (PC) │
└─────────────────────────────────────────────────────────┘
Dependencies
| Étape | Ce qu'il faut | Statut |
|---|---|---|
| Markdown → LaTeX | Aucun (moteur WASM embarqué dans main.js) |
Aucune |
| LaTeX → PDF (défaut) | pandoc.wasm + typst.wasm (auto-téléchargés) |
Aucune |
| LaTeX → PDF (natif, option PC) | TeX Live + Podman/Docker | Optionnelle |
| LaTeX → DOCX | pandoc.wasm (auto-téléchargé) |
Aucune |
| Rendu Mermaid | Bundle embarqué dans main.js |
Aucune |
pandoc.wasm (~59 MB), typst.wasm (~28 MB) et leurs polices sont auto-téléchargés dans wasm/ au premier export (bouton manuel dans les réglages sinon).
PDF natif LaTeX (optionnel, PC) — construit le conteneur :
podman build -t vlatex-env -f Dockerfile.vlatex . # ou : docker build -t vlatex-env -f Dockerfile.vlatex .
Install
Téléchargements
Tous les zips sont servis par la release bundle (assets de release GitHub → bande passante illimitée) ainsi que par ce site.
| Archive | Contenu | Release (illimitée) | Site (miroir) |
|---|---|---|---|
mergdowntotex_bundle.zip (~43 MB) |
Tout-en-un : plugin complet + vault exemple | Télécharger | Site |
mergdowntotex.zip (~36 MB) |
Plugin complet (main.js, manifest.json, wasm/, resources/) |
Télécharger | Site |
full_manual_repport_exp.zip (~6 MB) |
Vault exemple seul (déjà inclus dans le bundle) | Télécharger | Site |
pandoc_wasm.zip (~15 MB) |
Moteur DOCX : pandoc.wasm compressé (~59 MB décompressé) — pour un vault sans wasm/ |
Télécharger | Site |
typst_wasm.zip (~10 MB) |
Moteur PDF : typst.wasm seul, compressé (~28 MB décompressé) — les polices sont dans un zip à part |
Télécharger | Site |
typst_fonts.zip (~8 MB) |
Les 17 polices Typst, compressées, dans un zip séparé (~13 MB décompressés) — nécessaires au rendu PDF | Télécharger | Site |
- Bundle → dézippé, vous obtenez
mergdowntotex/(à copier dans.obsidian/plugins/) etexample_vault/(vault prêt à ouvrir). - Plugin seul → dézippez et placez le dossier
mergdowntotex/dans.obsidian/plugins/. - Les moteurs
pandoc.wasm(~59 MB) ettypst.wasm(~28 MB) sont déjà inclus dans les archives ; sinon ils s'auto-téléchargent au premier export. - Mobile : les moteurs sont téléchargés compressés, un zip par composant, jamais mélangés —
pandoc_wasm.zip(~15 Mo) pour le DOCX ;typst_wasm.zip(~10 Mo) ettypst_fonts.zip(~8 Mo) pour le PDF — au lieu des fichiers bruts (~59 Mo + ~28 Mo + ~11 Mo). On ne télécharge que ce qui manque ; dans les réglages, 3 cases à cocher + un seul bouton « Télécharger la sélection » (le dossier d'exemple est en tête de l'onglet pour le récupérer en premier).
Manuel
- Télécharge
main.jsetmanifest.jsondepuis Releases (ou utilisez le bundle ci-dessus) - Copie-les dans
.obsidian/plugins/mergdowntotex/ - Active dans Settings → Community Plugins
main.js (~3.7 MB) embarque le moteur de conversion WASM en Base64. Le rendu Mermaid (mermaid.min.js) est auto-téléchargé au premier export, et les moteurs pandoc.wasm/typst.wasm aussi.
Structure du plugin (release et vault exemple)
mergdowntotex/ ← dossier du plugin (id = mergdowntotex)
├── main.js ~3.7 MB ← plugin + moteur WASM embarqué (Base64)
├── manifest.json 1.2 KB ← métadonnées
├── wasm/ ← auto-téléchargé (pandoc.wasm, typst.wasm, fonts)
└── resources/ ← ressources (CSL/BIB auto-hébergés, mermaid.min.js)
Vault exemple : le zip
full_manual_repport_exp.zip(ou le dossierexample_vault/du dépôt) contient un vault prêt à l'emploi avec le plugin déjà installé (.obsidian/plugins/mergdowntotex/). Cette installation est strictement identique à celle de la release (mêmesmain.js,manifest.json,wasm/,resources/).
Commands
| Commande | Action |
|---|---|
Convertir la note active en LaTeX (.tex) |
Génère le .tex |
Convertir et compiler en PDF |
Génère le PDF (pipeline auto) |
Convertir et compiler en DOCX (Word) |
Génère le Word (Pandoc WASM) |
Générer le Markdown étendu (.expanded.md) |
Génère le Markdown autonome |
Reconvertir le .tex (jumeau) en Markdown |
.tex → Markdown |
Compile le .tex jumeau en PDF |
.tex → PDF |
Compile le .tex jumeau en DOCX |
.tex → DOCX |
Convertit le .tex jumeau en .typ |
.tex → Typst |
Compile le .typ jumeau en PDF |
.typ → PDF |
Aperçu PDF côte-à-côte (md → pdf) |
Aperçu interactif |
ZIP des ressources liées (_exp.zip) |
Archive les ressources |
Raccourci rapide : bouton PDF dans le ruban.
Why MergDown2TeX?
| Pandoc Plugin | Pandoc CLI | Pandoc GUI | MergDown2TeX | |
|---|---|---|---|---|
| Installation requise | Pandoc + TeX Live | Pandoc + TeX Live | Pandoc + TeX Live (GUI) | Aucune (WASM embarqué) |
| Résolution Wikilinks | ❌ | ❌ | ❌ | ✅ |
| Expansion des embeds | ❌ | ❌ | ❌ | ✅ |
| Flèches de citation (↑↓) | ❌ | ❌ | ❌ | ✅ |
| Mermaid → PNG | ❌ | ❌ | ❌ | ✅ |
| Ancres de blocs / objets Word | ❌ | ❌ | ❌ | ✅ |
| Preamble personnalisé | Partiel | Manuel | Manuel | ✅ |
| Sortie InDesign | ❌ | ❌ | ❌ | ✅ |
| Mobile (iOS/Android) | ⚠️ | ⚠️ | ⚠️ | ✅ |
| PAPER libre / zero-install | ⚠️ | ⚠️ | ⚠️ | ✅ |
Pandoc GUI (plugin Obsidian pandoc-gui) fournit une interface de conversion mais requiert toujours Pandoc + un environnement LaTeX externe et ne résout pas les wikilinks/embeds Obsidian natifs.
vlatex & le moteur WASM
Le moteur de conversion (et son outillage) est développé dans le projet vlatex. Pour en savoir plus sur vlatex / vlatex wasm et son intégration avec Obsidian :
Architecture
Release (2 fichiers) :
mergdowntotex/
├── main.js ~3.7 MB ← plugin + moteur WASM embarqué (Base64)
└── manifest.json 1.2 KB ← metadata
main.js embarque :
- le moteur de conversion WASM (Markdown → LaTeX), encodé en Base64 (
WASM_BASE64).
Le bundle Mermaid (mermaid.min.js) est téléchargé au runtime (CDN/site, ou resources/mermaid.min.js en mode hors-ligne) pour le rendu client-side, y compris sur mobile — il n'est pas embarqué dans main.js.
Les moteurs pandoc.wasm/typst.wasm (trop volumineux pour être embarqués) sont auto-téléchargés dans wasm/ au premier export.
Développement (dans le repo) :
mergdowntotex/
├── main.js ~3.7 MB ← même fichier que la release
├── manifest.json 1.2 KB
├── wasm/
│ ├── pandoc.wasm ~59 MB
│ ├── typst.wasm ~28 MB
│ └── fonts/
└── resources/
├── csl/ ← styles de citation auto-hébergés
└── mermaid.min.js ← bundle Mermaid (offline)
Mermaid : le bundle
mermaid.min.jsest téléchargé au runtime (CDN/site, avecresources/mermaid.min.jsprévu pour le hors-ligne) — il n'est pas encodé en Base64 dansmain.js. scripts/ └── bundle-release.js ← encode WASM → Base64 → injecte dans main.js
**Build release automatisé** par GitHub Actions :
```mermaid
graph LR
A[git tag 1.0.x] --> B[GitHub Actions]
B --> C[bundle-release.js]
C --> D[main.js + WASM]
D --> E[Release]
Zero build step. Moteur WASM embarqué dans main.js à la release.
Troubleshooting
« WASM module not loaded »
- Vérifie que
main.jsfait bien ~3.7 MB (un fichier plus petit = build dev sans moteur embarqué) - Re-télécharge la release si le fichier semble corrompu
- Redémarre Obsidian
pandoc.wasm / typst.wasm introuvable
- Lance un export, ou clique sur le bouton de téléchargement dans les réglages
- Vérifie la connexion internet (59 MB + 28 MB)
« podman: command not found » (PDF natif)
- Installe Podman/Docker, ou active PDF PC via Wasm+Typst dans les réglages (aucune installation)
License
MIT