mergdowntotex

approved

by 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.

1 stars425 downloadsUpdated 15d agoMIT

mergdowntotex

mergdown2tex Logo

Merge everything. Convert anywhere. Moteur WASM embarqué dans Obsidian. Aucune étape de compilation, aucun binaire à installer.

Obsidian License Documentation


What it does

MergDown2TeX transforme une note Obsidian en un document prêt à publier (LaTeX, PDF, DOCX, InDesign). Tout est fusionné automatiquement :

EntréeSortie
[[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 MermaidRendu automatique en PNG (client-side)
> [!note] admonitionsenvironnements tcolorbox
Note de bas de page, tableaux, listesSupport 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

ÉtapeCe qu'il fautStatut
Markdown → LaTeXAucun (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/DockerOptionnelle
LaTeX → DOCXpandoc.wasm (auto-téléchargé)Aucune
Rendu MermaidBundle embarqué dans main.jsAucune

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.

ArchiveContenuRelease (illimitée)Site (miroir)
mergdowntotex_bundle.zip (~43 MB)Tout-en-un : plugin complet + vault exempleTéléchargerSite
mergdowntotex.zip (~36 MB)Plugin complet (main.js, manifest.json, wasm/, resources/)TéléchargerSite
full_manual_repport_exp.zip (~6 MB)Vault exemple seul (déjà inclus dans le bundle)TéléchargerSite
pandoc_wasm.zip (~15 MB)Moteur DOCX : pandoc.wasm compressé (~59 MB décompressé) — pour un vault sans wasm/TéléchargerSite
typst_wasm.zip (~10 MB)Moteur PDF : typst.wasm seul, compressé (~28 MB décompressé) — les polices sont dans un zip à partTéléchargerSite
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 PDFTéléchargerSite
  • Bundle → dézippé, vous obtenez mergdowntotex/ (à copier dans .obsidian/plugins/) et example_vault/ (vault prêt à ouvrir).
  • Plugin seul → dézippez et placez le dossier mergdowntotex/ dans .obsidian/plugins/.
  • Les moteurs pandoc.wasm (~59 MB) et typst.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éspandoc_wasm.zip (~15 Mo) pour le DOCX ; typst_wasm.zip (~10 Mo) et typst_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

  1. Télécharge main.js et manifest.json depuis Releases (ou utilisez le bundle ci-dessus)
  2. Copie-les dans .obsidian/plugins/mergdowntotex/
  3. 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 dossier example_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êmes main.js, manifest.json, wasm/, resources/).


Commands

CommandeAction
Convertir la note active en LaTeX (.tex)Génère le .tex
Convertir et compiler en PDFGé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 PluginPandoc CLIPandoc GUIMergDown2TeX
Installation requisePandoc + TeX LivePandoc + TeX LivePandoc + 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éPartielManuelManuel
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 :

https://dvrch.github.io/vlatex/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.js est téléchargé au runtime (CDN/site, avec resources/mermaid.min.js prévu pour le hors-ligne) — il n'est pas encodé en Base64 dans main.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.js fait 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.