mergdowntotex
approvedby DJONTSO V. dvrchipro@gmail.com
Merge & doc. export everything — embeds, Zotero/Pandoc citations, Mermaid, equations, cross-refs — into a unique .tex file. Compile to PDF, DOCX, or InDesign. WASM engine, zero build step. - This plugin has not been manually reviewed by Obsidian staff.
mergdowntotex

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
Support
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.