Outils de conversion LaTeX en Markdown
Transformez efficacement les documents LaTeX en Markdown
Conversion des documents LaTeX en Markdown est devenue essentielle pour les workflows modernes de publication, intégrant les générateurs de sites statiques, les plateformes de documentation et les systèmes de gestion de versions tout en maintenant la lisibilité et la simplicité.

Pourquoi convertir du LaTeX vers Markdown ?
Le LaTeX est le standard d’or pour la préparation de documents académiques et techniques depuis des décennies, offrant une qualité inégalée de typographie et un support des notations mathématiques. Pour ceux qui travaillent avec des documents LaTeX, notre Feuille de rappels LaTeX fournit des exemples complets des constructions courantes de LaTeX. Cependant, le paysage moderne de la publication a évolué, et Markdown est apparu comme une alternative légère avec des avantages significatifs :
Simplicité et lisibilité : Les fichiers Markdown sont du texte brut lisible par l’homme, ce qui les rend plus faciles à éditer, à relire et à gérer avec le contrôle de version par rapport à la syntaxe verbeuse de LaTeX. Si vous êtes nouveau en Markdown ou avez besoin d’un rappel rapide, consultez notre Feuille de rappels Markdown pour un aperçu complet de la syntaxe et des fonctionnalités.
Publication orientée web : Les générateurs de sites statiques comme Hugo, Jekyll et MkDocs utilisent nativement Markdown, permettant de créer rapidement des sites modernes à partir de documentation. Les plateformes comme GitHub, GitLab et divers wikis rendent automatiquement le Markdown.
Collaboration : Les parties prenantes non techniques peuvent lire et éditer le Markdown sans apprendre la syntaxe LaTeX, réduisant les barrières à l’écriture collaborative.
Écosystème d’outils : Les éditeurs modernes offrent un excellent support Markdown avec un aperçu en temps réel, un linting et des extensions. L’intégration avec les pipelines CI/CD est simple.
Portabilité : Le Markdown peut être converti en plusieurs formats de sortie (HTML, PDF via LaTeX, DOCX, EPUB) à l’aide d’outils comme Pandoc, maintenant la flexibilité sans la complexité du LaTeX.
Outils principaux de conversion
Pandoc : Le convertisseur universel de documents
Pandoc est l’outil le plus puissant et le plus versatile de conversion de documents disponible. Écrit par le philosophe et développeur John MacFarlane, il prend en charge plus de 40 formats de balisage et peut les convertir intelligemment les uns aux autres.
Installation :
Avant de travailler avec des conversions LaTeX, assurez-vous d’avoir une distribution LaTeX installée. Pour les utilisateurs Windows, consultez notre guide sur LaTeX sur Windows 11 & 10 : distributions, comparaisons et installations étape par étape, ou consultez notre guide Vue d’ensemble et installation de LaTeX pour des instructions d’installation multiplateformes.
# Ubuntu/Debian
sudo apt-get install pandoc
# macOS
brew install pandoc
# Windows
choco install pandoc
# Ou téléchargez depuis https://pandoc.org/installing.html
Conversion de base :
# Conversion simple
pandoc document.tex -o document.md
# Avec un format de sortie spécifique
pandoc document.tex -f latex -t markdown -o document.md
# Préserver les mathématiques
pandoc document.tex -t markdown+tex_math_dollars -o document.md
Options avancées :
# Conversion avec bibliographie
pandoc document.tex --bibliography=refs.bib --citeproc -o document.md
# Extraire les images intégrées
pandoc document.tex --extract-media=./media -o document.md
# Document autonome avec métadonnées
pandoc document.tex -s --wrap=none -o document.md
# Modèle personnalisé
pandoc document.tex --template=custom.md -o document.md
LaTeXML : Conversion sémantique
LaTeXML se concentre sur la préservation de la structure sémantique des documents LaTeX, ce qui le rend particulièrement adapté aux contenus mathématiques et scientifiques qui doivent conserver le sens plutôt que l’apparence.
# Installation
sudo apt-get install latexml
# Conversion de base
latexml document.tex | latexmlpost --dest=document.html -
# Avec les mathématiques en MathML
latexmlc document.tex --dest=document.html --mathimages=false
Outils basés sur Python
Plusieurs outils Python offrent des capacités de conversion programmables. Pour des approches alternatives de conversion, notamment lorsqu’il s’agit de contenu web, vous pouvez également trouver utile notre guide sur la conversion de contenu HTML en Markdown à l’aide de LLM et d’Ollama pour comprendre les techniques modernes de conversion basées sur l’intelligence artificielle.
tex2py et latex2markdown :
pip install latex2markdown
# Utilisation en ligne de commande
python -m latex2markdown document.tex document.md
Pandocfilters : Créez des filtres personnalisés Pandoc en Python pour gérer des constructions LaTeX spécifiques :
#!/usr/bin/env python3
from pandocfilters import toJSONFilter, Str
def custom_transform(key, value, format, meta):
if key == 'Str':
# Transformer des chaînes ou des motifs spécifiques
if value.startswith('\\customcommand'):
return Str(value.replace('\\customcommand', 'Custom: '))
if __name__ == "__main__":
toJSONFilter(custom_transform)
Utilisez avec :
pandoc document.tex --filter=./custom_filter.py -o document.md
Workflow de conversion complet
Étape 1 : Préparation
Avant la conversion, préparez votre document LaTeX :
Sauvegardez les fichiers originaux :
# Créer une sauvegarde
cp -r latex_project/ latex_project_backup/
git commit -am "Préparation avant conversion"
Inventaire des commandes personnalisées :
# Extraire toutes les commandes personnalisées
grep -E '\\newcommand|\\def|\\newenvironment' *.tex > custom_commands.txt
Simplifiez les paquets complexes : Commentez ou remplacez les paquets qui n’ont pas d’équivalent Markdown :
% Remplacer ou supprimer
% \usepackage{tikz}
% \usepackage{custom_package}
Étape 2 : Conversion initiale
Exécutez la conversion avec les options appropriées :
# Commande de conversion complète
pandoc main.tex \
--from=latex \
--to=markdown+pipe_tables+backtick_code_blocks+fenced_code_attributes \
--wrap=none \
--extract-media=./assets \
--standalone \
--bibliography=references.bib \
--citeproc \
--output=output.md
L’extension backtick_code_blocks assure un formatage correct des blocs de code dans la sortie. Pour plus de détails sur l’utilisation des blocs de code Markdown, consultez notre guide sur Utilisation des blocs de code Markdown.
Étape 3 : Post-traitement
Le premier passage de conversion nécessite souvent un nettoyage :
Corriger le formatage des tableaux :
Pandoc peut créer des tableaux maladroits. Utilisez sed ou l’édition manuelle :
# Script pour nettoyer les tableaux
sed -i 's/|:--|:--|/|:---|:---|/g' output.md
Gérer les citations :
Si vous utilisez des bibliographies, assurez-vous que les citations ont été correctement converties :
# Vérifier le format des citations
grep -E '\[@\w+\]|\@\w+' output.md
Corrections des chemins des images :
# Mettre à jour des chemins relatifs
sed -i 's|!\[\](assets/|:
with open(filename, 'r') as f:
content = f.read()
issues = []
# Vérifier les commandes LaTeX non converties
latex_commands = re.findall(r'\\[a-zA-Z]+\{', content)
if latex_commands:
issues.append(f"Commandes LaTeX non converties : {set(latex_commands)}")
# Vérifier les liens brisés
links = re.findall(r'\[([^\]]+)\]\(([^\)]+)\)', content)
for text, url in links:
if url.startswith('file://'):
issues.append(f"Liens avec le protocole file : {url}")
# Vérifier les délimiteurs mathématiques
single_dollars = re.findall(r'(?<!\$)\$(?!\$)[^$]+\$(?!\$)', content)
if len(single_dollars) % 2 != 0:
issues.append("Délimiteurs mathématiques en ligne non correspondants")
return issues
if __name__ == "__main__":
issues = validate_markdown(sys.argv[1])
if issues:
print("Problèmes de validation trouvés :")
for issue in issues:
print(f" - {issue}")
sys.exit(1)
else:
print("Validation réussie !")
sys.exit(0)
Gestion des défis courants
Mathématiques complexes
Pour les documents lourds en mathématiques, préservez la notation mathématique LaTeX :
# Conserver exactement la notation mathématique LaTeX
pandoc document.tex -t markdown+raw_tex -o output.md
Ou utilisez des extensions mathématiques spécifiques :
pandoc document.tex -t markdown_strict+tex_math_dollars+raw_tex -o output.md
Bibliographie et citations
Convertir les fichiers de bibliographie et gérer les citations :
# Convertir .bib en YAML pour Pandoc
pandoc-citeproc --bib2yaml refs.bib > refs.yaml
# Utiliser dans la conversion
pandoc document.tex --metadata bibliography=refs.yaml --citeproc -o output.md
Tableaux
Les tableaux LaTeX convertissent souvent imparfaitement. Envisagez :
- L’utilisation des extensions
pipe_tablesougrid_tables - La reconstruction manuelle des tableaux pour les dispositions complexes
- La conversion des tableaux en images pour les cas vraiment complexes
# Essayer différents styles de tableaux
pandoc document.tex -t markdown+pipe_tables -o output1.md
pandoc document.tex -t markdown+grid_tables -o output2.md
Figures et graphiques
Extraire et organiser les figures :
# Extraire toutes les médias vers un répertoire organisé
pandoc document.tex --extract-media=./figures -o output.md
# Traiter avec des chemins relatifs
pandoc document.tex --resource-path=.:./figures --extract-media=./assets/img -o output.md
Commandes LaTeX personnalisées
Gérer les commandes personnalisées via le prétraitement :
#!/usr/bin/env python3
import re
import sys
def expand_custom_commands(content):
# Définir les mappings des commandes personnalisées
commands = {
r'\\customemph\{([^}]+)\}': r'***\1***',
r'\\customsection\{([^}]+)\}': r'\n## \1\n',
r'\\code\{([^}]+)\}': r'`\1`',
}
for pattern, replacement in commands.items():
content = re.sub(pattern, replacement, content)
return content
if __name__ == "__main__":
with open(sys.argv[1], 'r') as f:
content = f.read()
expanded = expand_custom_commands(content)
with open(sys.argv[2], 'w') as f:
f.write(expanded)
Utilisation :
# Prétraiter, puis convertir
python expand_commands.py document.tex document_expanded.tex
pandoc document_expanded.tex -o document.md
Automatisation et traitement en lots
Script bash pour la conversion de répertoire
#!/bin/bash
# convert_all.sh - Convertir tous les fichiers .tex dans un répertoire en Markdown
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${2:-./markdown_output}"
mkdir -p "$OUTPUT_DIR"
find "$INPUT_DIR" -name "*.tex" | while read -r tex_file; do
base_name=$(basename "$tex_file" .tex)
output_file="$OUTPUT_DIR/${base_name}.md"
echo "Conversion en cours : $tex_file -> $output_file"
pandoc "$tex_file" \
--from=latex \
--to=markdown \
--wrap=none \
--extract-media="$OUTPUT_DIR/media" \
--standalone \
--output="$output_file"
if [ $? -eq 0 ]; then
echo "✓ Conversion réussie pour $base_name"
else
echo "✗ Erreur lors de la conversion de $base_name"
fi
done
echo "Conversion en lots terminée !"
Gestionnaire de lots Python
#!/usr/bin/env python3
import os
import subprocess
from pathlib import Path
def batch_convert(input_dir, output_dir, extensions=['.tex']):
"""Convertir tous les fichiers LaTeX dans l'arborescence de répertoire en Markdown."""
input_path = Path(input_dir)
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
for ext in extensions:
for tex_file in input_path.rglob(f'*{ext}'):
# Conserver la structure de répertoire
relative_path = tex_file.relative_to(input_path)
output_file = output_path / relative_path.with_suffix('.md')
output_file.parent.mkdir(parents=True, exist_ok=True)
print(f"Conversion en cours : {tex_file}")
cmd = [
'pandoc',
str(tex_file),
'--from=latex',
'--to=markdown',
'--wrap=none',
f'--extract-media={output_file.parent}/media',
'--standalone',
f'--output={output_file}'
]
try:
subprocess.run(cmd, check=True, capture_output=True, text=True)
print(f"✓ Succès : {output_file}")
except subprocess.CalledProcessError as e:
print(f"✗ Erreur : {tex_file}")
print(f" {e.stderr}")
if __name__ == "__main__":
import sys
input_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
output_dir = sys.argv[2] if len(sys.argv) > 2 else './markdown'
batch_convert(input_dir, output_dir)
Hooks Git pour la conversion continue
Automatiser la conversion à la validation :
#!/bin/bash
# .git/hooks/pre-commit
# Trouver tous les fichiers .tex modifiés
changed_tex=$(git diff --cached --name-only --diff-filter=ACM | grep '\.tex$')
if [ -n "$changed_tex" ]; then
echo "Conversion des fichiers LaTeX modifiés..."
for tex_file in $changed_tex; do
md_file="${tex_file%.tex}.md"
pandoc "$tex_file" -o "$md_file"
git add "$md_file"
echo "Converti et ajouté : $md_file"
done
fi
Makefile pour les projets structurés
# Makefile pour la conversion de LaTeX en Markdown
SRC_DIR := latex_src
OUT_DIR := markdown_out
TEX_FILES := $(wildcard $(SRC_DIR)/*.tex)
MD_FILES := $(patsubst $(SRC_DIR)/%.tex,$(OUT_DIR)/%.md,$(TEX_FILES))
.PHONY: all clean validate
all: $(MD_FILES)
$(OUT_DIR)/%.md: $(SRC_DIR)/%.tex
@mkdir -p $(OUT_DIR)
pandoc $< \
--from=latex \
--to=markdown \
--wrap=none \
--extract-media=$(OUT_DIR)/media \
--standalone \
--output=$@
@echo "Converti : $< -> $@"
clean:
rm -rf $(OUT_DIR)
validate: $(MD_FILES)
@for md in $(MD_FILES); do \
echo "Validation de $$md..."; \
python validate_markdown.py $$md; \
done
Intégration avec les générateurs de sites statiques
Intégration avec Hugo
Convertir le LaTeX en Markdown compatible avec Hugo. Pour plus d’informations sur l’utilisation de Hugo et ses diverses fonctionnalités, consultez notre Feuille de rappels Hugo.
#!/bin/bash
# Convertir un article LaTeX en article Hugo
INPUT_TEX="$1"
OUTPUT_DIR="content/posts"
POST_NAME=$(basename "$INPUT_TEX" .tex)
# Convertir
pandoc "$INPUT_TEX" \
--to=markdown \
--wrap=none \
--extract-media="static/img/$POST_NAME" \
--output="temp_$POST_NAME.md"
# Ajouter le front matter Hugo
cat > "$OUTPUT_DIR/$POST_NAME.md" << EOF
---
title: "$(grep '\\title' "$INPUT_TEX" | sed 's/\\title{\(.*\)}/\1/')"
date: $(date +%Y-%m-%dT%H:%M:%S%z)
draft: false
math: true
---
EOF
# Ajouter le contenu converti
cat "temp_$POST_NAME.md" >> "$OUTPUT_DIR/$POST_NAME.md"
# Corriger les chemins des images
sed -i "s|media/|/img/$POST_NAME/|g" "$OUTPUT_DIR/$POST_NAME.md"
# Nettoyage
rm "temp_$POST_NAME.md"
echo "Article Hugo créé : $OUTPUT_DIR/$POST_NAME.md"
Intégration avec Jekyll
#!/bin/bash
# Convertir en article Jekyll
INPUT_TEX="$1"
POST_DATE=$(date +%Y-%m-%d)
POST_NAME=$(basename "$INPUT_TEX" .tex)
OUTPUT_FILE="_posts/$POST_DATE-$POST_NAME.md"
pandoc "$INPUT_TEX" \
--to=markdown_strict \
--extract-media="assets/img" \
--template=jekyll_template.md \
--output="$OUTPUT_FILE"
echo "Article Jekyll créé : $OUTPUT_FILE"
Bonnes pratiques et conseils
1. Versionner tout
Utilisez toujours le versioning pour les sources LaTeX et les sorties Markdown :
git init latex-to-markdown-project
git add latex_src/ markdown_out/
git commit -m "Premières sources LaTeX et conversion Markdown"
2. Documenter votre processus de conversion
Documentez votre processus de conversion :
# Notes de conversion
## Cartographie des commandes personnalisées
- `\customemph{text}` → `***text***`
- `\code{text}` → `` `text` ``
## Problèmes connus
- Les diagrammes TikZ complexes sont convertis en placeholders
- Certaines alignements de tableaux nécessitent un ajustement manuel
## Étapes de post-traitement
1. Exécuter `fix_tables.py`
2. Valider avec `validate_markdown.py`
3. Vérifier le rendu mathématique avec un aperçu
3. Tester progressivement
Ne convertissez pas votre document entier d’un coup :
# Convertir chapitre par chapitre
pandoc chapter1.tex -o chapter1.md
# Réviser et corriger les problèmes
pandoc chapter2.tex -o chapter2.md
# Réviser et corriger les problèmes
# etc.
4. Utiliser des filtres Lua Pandoc
Pour des transformations complexes, les filtres Lua sont puissants :
-- custom_filter.lua
function Math(el)
if el.mathtype == "InlineMath" then
return pandoc.RawInline('markdown', '$' .. el.text .. '$')
else
return pandoc.RawBlock('markdown', '$$' .. el.text .. '$$')
end
end
function Image(el)
-- Ajouter des classes ou des attributs personnalisés
el.classes = {'responsive-image'}
return el
end
Appliquer avec :
pandoc document.tex --lua-filter=custom_filter.lua -o output.md
5. Conserver le LaTeX pour les éléments complexes
Parfois, conserver le LaTeX est la meilleure option :
# Permettre le LaTeX brut dans le Markdown pour les cas complexes
pandoc document.tex -t markdown+raw_tex -o output.md
Cela vous permet de garder les équations complexes, les diagrammes TikZ ou les paquets personnalisés tels quels, puis de les rendre différemment selon le format de sortie final.
Assurance qualité
Tests automatisés
#!/usr/bin/env python3
# test_conversion.py
import subprocess
import difflib
def test_conversion():
"""Tester que la conversion produit la sortie attendue."""
# Convertir le fichier de test
subprocess.run([
'pandoc', 'test_input.tex',
'-o', 'test_output.md'
], check=True)
# Comparer avec la sortie attendue
with open('test_output.md', 'r') as f:
actual = f.readlines()
with open('expected_output.md', 'r') as f:
expected = f.readlines()
diff = list(difflib.unified_diff(expected, actual, lineterm=''))
if diff:
print("La sortie de conversion diffère de celle attendue :")
print('\n'.join(diff))
return False
else:
print("✓ Test de conversion réussi")
return True
if __name__ == "__main__":
import sys
sys.exit(0 if test_conversion() else 1)
Comparaison visuelle
Pour les documents avec un formatage complexe :
# Générer un PDF à partir de LaTeX
pdflatex document.tex
# Générer un PDF à partir du Markdown converti via Pandoc
pandoc output.md -o output_from_markdown.pdf
# Comparer visuellement les deux PDFs
Vérification des liens
#!/usr/bin/env python3
import re
import os
from pathlib import Path
def check_links(md_file):
"""Vérifier que tous les liens dans le Markdown sont valides."""
with open(md_file, 'r') as f:
content = f.read()
# Extraire tous les liens
links = re.findall(r'\[([^\]]+)\]\(([^\)]+)\)', content)
broken_links = []
for text, url in links:
if not url.startswith(('http://', 'https://', '#')):
# Vérifier si le fichier existe
link_path = Path(md_file).parent / url
if not link_path.exists():
broken_links.append((text, url))
return broken_links
if __name__ == "__main__":
import sys
broken = check_links(sys.argv[1])
if broken:
print("Liens brisés trouvés :")
for text, url in broken:
print(f" [{text}]({url})")
sys.exit(1)
else:
print("✓ Tous les liens valides")
sys.exit(0)
Optimisation des performances
Pour les documents volumineux ou le traitement en lots :
Traitement parallèle
#!/usr/bin/env python3
from multiprocessing import Pool
import subprocess
from pathlib import Path
def convert_file(tex_file):
"""Convertir un seul fichier."""
output_file = tex_file.with_suffix('.md')
subprocess.run([
'pandoc', str(tex_file),
'-o', str(output_file)
], check=True)
return str(output_file)
def parallel_convert(input_dir, num_processes=4):
"""Convertir les fichiers en parallèle."""
tex_files = list(Path(input_dir).rglob('*.tex'))
with Pool(num_processes) as pool:
results = pool.map(convert_file, tex_files)
return results
if __name__ == "__main__":
import sys
converted = parallel_convert(sys.argv[1])
print(f"Converti {len(converted)} fichiers")
Mise en cache
#!/usr/bin/env python3
import hashlib
import subprocess
from pathlib import Path
import pickle
CACHE_FILE = '.conversion_cache.pkl'
def file_hash(filepath):
"""Calculer l'empreinte d'un fichier."""
with open(filepath, 'rb') as f:
return hashlib.md5(f.read()).hexdigest()
def cached_convert(tex_file, cache):
"""Convertir uniquement si le fichier a changé."""
current_hash = file_hash(tex_file)
if tex_file in cache and cache[tex_file] == current_hash:
print(f"Passer {tex_file} (inchangé)")
return
# Convertir le fichier
output_file = tex_file.with_suffix('.md')
subprocess.run([
'pandoc', str(tex_file),
'-o', str(output_file)
], check=True)
# Mettre à jour le cache
cache[tex_file] = current_hash
print(f"Converti {tex_file}")
def main():
# Charger le cache
try:
with open(CACHE_FILE, 'rb') as f:
cache = pickle.load(f)
except FileNotFoundError:
cache = {}
# Traiter les fichiers
for tex_file in Path('.').rglob('*.tex'):
cached_convert(tex_file, cache)
# Sauvegarder le cache
with open(CACHE_FILE, 'wb') as f:
pickle.dump(cache, f)
if __name__ == "__main__":
main()
Ressources et outils utiles
Outils essentiels
- Pandoc: https://pandoc.org/ - Convertisseur universel de documents
- LaTeXML: https://dlmf.nist.gov/LaTeXML/ - Convertisseur LaTeX vers XML/HTML
- pandoc-citeproc: Traitement des bibliographies
- pandocfilters: Bibliothèque Python pour les filtres Pandoc
Convertisseurs en ligne
- Pandoc Online: Conversions rapides sans installation
- Overleaf: Exporter des projets LaTeX vers divers formats
- TeXLive: Distribution complète de LaTeX avec des outils de conversion
Documentation et guides
- Guide utilisateur de Pandoc : Documentation complète
- LaTeX Stack Exchange : Questions et réponses de la communauté
- Répertoires GitHub avec des scripts et filtres de conversion
Prise en charge par les éditeurs
- VS Code: Extensions LaTeX Workshop + Markdown All in One
- Vim: Plugin vim-pandoc
- Emacs: org-mode avec prise en charge LaTeX et Markdown
Outils de validation
- markdown-lint: Correcteur de style Markdown
- vale: Correcteur de prose avec des guides de style
- link-checker: Valider les liens dans les fichiers Markdown
Conclusion
La conversion du LaTeX en Markdown est une nécessité pratique dans les flux de travail modernes de publication technique. Bien que Pandoc gère la plupart des conversions de manière excellente, comprendre les outils disponibles, les défis courants et les stratégies d’automatisation garantit des migrations fluides.
La clé d’une conversion réussie réside dans :
- Préparation : Nettoyez et documentez votre LaTeX avant la conversion
- Approche incrémentielle : Testez sur de petites portions avant la conversion complète
- Automatisation : Créez des scripts pour le traitement en lots et la validation
- Assurance qualité : Mettez en place des workflows de test et de validation
- Maintenance : Documentez les décisions et maintenez les scripts de conversion
Que vous migriez des articles académiques vers un générateur de site statique, convertissiez de la documentation vers des wikis GitHub, ou simplement que vous recherchiez la flexibilité du Markdown tout en préservant la qualité du LaTeX, les outils et les flux de travail présentés ici constituent une base solide.
L’investissement dans la création de pipelines de conversion robustes rapporte des bénéfices par la réduction des frottements dans la publication, une meilleure collaboration et un accès aux outils modernes de publication web tout en préservant la rigueur et la précision du contenu rédigé en LaTeX.
Liens utiles
- Fiche de raccourcis Markdown
- Fiche de raccourcis LaTeX
- Utilisation des blocs de code Markdown
- Convertir du contenu HTML en Markdown à l’aide d’un LLM et d’Ollama
- LaTeX sur Windows 11 & 10 : distributions, comparaisons et installations étape par étape
- Aperçu et installation de LaTeX
- Fiche de raccourcis Hugo