Aller au contenu

WASM Playground

Essayez vLaTeX dans votre navigateur

Le moteur de conversion vLaTeX est compilé en WebAssembly (WASM) et peut tourner directement dans votre navigateur, sans installation.

Ouvrir le Playground en plein écran


Comment ça marche

  1. Rust → WASM : Le crate vlatex est compilé en WebAssembly via wasm-pack
  2. Pas de serveur : Toute la conversion tourne dans le navigateur
  3. Pas de dépendances : Pas besoin de Podman, TeX Live, ou pandoc

Technologies

  • wasm-bindgen — Glue Rust ↔ JavaScript
  • wasm-pack — Build toolchain
  • web-sys — APIs navigateur

Construire le WASM

Prérequis

# Installer wasm-pack
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

# Installer le target wasm32
rustup target add wasm32-unknown-unknown

Build

# depuis rust-vlatex/
wasm-pack build --target web --out-dir wasm-pkg

Ceci génère :

wasm-pkg/
├── vlatex_bg.wasm
├── vlatex.js
├── vlatex.d.ts
└── package.json

Intégration

<!DOCTYPE html>
<html>
<head>
    <title>vLaTeX WASM</title>
</head>
<body>
    <textarea id="input"># Mon Document

$$E = mc^2$$</textarea>
    <button id="convert">Convertir</button>
    <pre id="output"></pre>

    <script type="module">
        import init, { convert } from './pkg/vlatex.js';

        async function run() {
            await init();

            document.getElementById('convert').onclick = () => {
                const md = document.getElementById('input').value;
                const latex = convert(md, 'document.md', '.', '{}');
                document.getElementById('output').textContent = latex;
            };
        }
        run();
    </script>
</body>
</html>

API WASM

Fonctions exportées

#[wasm_bindgen]
pub fn convert(
    content: &str,
    input_path: &str,
    vault_root: &str,
    config_json: &str,
) -> String
Paramètre Type Description
content &str Contenu markdown
input_path &str Chemin du fichier source
vault_root &str Racine du vault
config_json &str Configuration au format JSON

Retour

Le LaTeX généré en string.


Limitations du WASM

Fonctionnalité WASM Desktop
Conversion markdown → LaTeX
Résolution embeds ![[Note]] ❌ (pas d'accès filesystem)
Compilation PDF ❌ (pas de podman)
Compilation DOCX ❌ (pas de pandoc)
Mermaid → PNG ❌ (pas de mmdc)
Images HTTP ❌ (CORS)

WASM = conversion uniquement

Le WASM supporte uniquement la conversion markdown → LaTeX. La compilation PDF/DOCX nécessite le binaire desktop.


Playground intégré

Le playground WASM est accessible sur GitHub Pages :

https://dvrch.github.io/vlatex/playground/

Il permet de : 1. Coller du markdown 2. Cliquer "Convertir" 3. Voir le LaTeX généré 4. Copier le résultat