\engine{latexmk}

latexmk Guide

latexmk automatise le pipeline de compilation LaTeX en plusieurs passes. Il détermine exactement combien de passes sont nécessaires, lance bibtex ou biber si besoin et surveille les modifications des fichiers source. Fini le décompte manuel des exécutions de pdflatex.

latexmk— automatisation intelligente en plusieurs passes

\section{Qu'est-ce que latexmk}

Qu'est-ce que latexmk ?

latexmk est un script Perl écrit par John Collins qui fait office de système de build intelligent pour les documents LaTeX. Lorsque vous exécutez latexmk -pdf, il examine après chaque passe les fichiers .aux, .toc, .bbl et autres fichiers auxiliaires pour déterminer si une nouvelle passe est nécessaire. Il continue jusqu'à ce que la sortie se stabilise, en général deux à quatre passes pour un document avec bibliographie et références croisées.

Passes multiples automatiques

Détecte quand une nouvelle passe pdflatex est nécessaire en comparant les sommes de contrôle des fichiers auxiliaires.

Suivi des dépendances

Surveille les .tex, .bib, les images et les fichiers inclus. Ne recompile que lorsque quelque chose change réellement.

Configurable via .latexmkrc

Des fichiers de configuration par projet et globaux contrôlent le choix du moteur, les répertoires de sortie et les règles personnalisées.

\subsection{Utilisation de base}

Commandes latexmk de base

latexmk est inclus dans toutes les installations de TeX Live. Voici les commandes que vous utiliserez le plus souvent, de la simple compilation PDF à la surveillance des fichiers.

Commandes latexmk
# Compile with pdfLaTeX (default) — runs as many passes as needed
latexmk -pdf document.tex

# Compile with XeLaTeX
latexmk -xelatex document.tex

# Compile with LuaLaTeX
latexmk -lualatex document.tex

# Compile and open the resulting PDF
latexmk -pdf -pv document.tex

# Watch for file changes and recompile automatically
latexmk -pdf -pvc document.tex

# Clean up auxiliary files (.aux, .log, .toc, .out …)
latexmk -c document.tex

# Clean up ALL generated files including the PDF
latexmk -C document.tex
-pdfCompiler en PDF avec pdfLaTeX (moteur par défaut)
-xelatexCompiler en PDF avec XeLaTeX
-lualatexCompiler en PDF avec LuaLaTeX
-pvcPrévisualiser en continu : surveille les fichiers et recompile à chaque modification
-cNettoyer les fichiers auxiliaires en conservant le PDF
-CNettoyer tous les fichiers générés, PDF compris

\subsection{.latexmkrc}

Configurer latexmk avec .latexmkrc

Un fichier .latexmkrc à la racine de votre projet indique à latexmk quel moteur utiliser, où écrire les fichiers de sortie et comment gérer la bibliographie. Cela évite les longues options en ligne de commande.

.latexmkrc
# .latexmkrc — project-level configuration
# Place this file in the same directory as your .tex file

# Use pdfLaTeX by default
$pdf_mode = 1;

# Or use XeLaTeX
# $pdf_mode = 5;

# Or use LuaLaTeX
# $pdf_mode = 4;

# Custom PDF viewer (optional)
$pdf_previewer = 'evince %S';

# Run biber instead of bibtex for bibliography
$biber = 'biber %O %S';

# Write output files to ./build directory
$out_dir = 'build';

# Extra extensions to clean with latexmk -c
@generated_exts = (@generated_exts, 'synctex.gz', 'run.xml', 'bcf');

# Extra dependencies to watch (e.g. bibliography files)
@default_files = ('document.tex');

Valeurs de $pdf_mode

$pdf_mode = 1 — pdfLaTeX $pdf_mode = 4 — LuaLaTeX $pdf_mode = 5 — XeLaTeX

\section{Intégration CI/CD}

latexmk dans GitHub Actions

Le schéma CI/CD le plus courant pour LaTeX consiste à compiler à chaque push sur main et à téléverser le PDF comme artefact. Le flux de travail ci-dessous utilise l'action teatimeguest/setup-texlive-action pour installer TeX Live, qui inclut latexmk, sur le runner.

.github/workflows/latex.yml
# .github/workflows/latex.yml
name: Compile LaTeX

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install TeX Live
        uses: teatimeguest/setup-texlive-action@v3
        with:
          packages: scheme-small latexmk

      - name: Compile with latexmk
        run: |
          latexmk -pdf -interaction=nonstopmode -halt-on-error document.tex

      - name: Upload PDF artifact
        uses: actions/upload-artifact@v4
        with:
          name: document-pdf
          path: document.pdf

latexmk lance autant de passes pdflatex que nécessaire : inutile de compter les passes dans votre flux de travail

Utilisez -halt-on-error avec -interaction=nonstopmode pour faire échouer le job CI à la moindre erreur LaTeX

Téléversez le PDF comme artefact pour qu'il soit téléchargeable depuis le résumé de l'exécution Actions

Pour accélérer vos exécutions CI, remplacez l'installation locale de TeX Live par l'API FormaTeX : une requête HTTP, aucune configuration de TeX Live

\section{Comparison}

latexmk ou pdflatex manuel

Pour un document simple d'une page, pdflatex manuel est équivalent. Dès qu'il y a des références croisées, une bibliographie ou une table des matières, latexmk est nettement meilleur.

Tâche
pdflatex manuel
latexmk
Compilation en une seule passepdflatex document.texlatexmk -pdf document.tex
Résoudre les références croiséesExécuter pdflatex deux fois manuellementAutomatique : latexmk détecte les changements de .aux
Bibliographie (bibtex/biber)pdflatex → bibtex → pdflatex → pdflatexAutomatique : latexmk lance bibtex/biber selon les besoins
Table des matièresExécuter pdflatex deux fois (ou plus)Automatique : latexmk relance jusqu'à stabilisation
Changer de moteurRemplacer le binaire pdflatex dans la commandeOption latexmk -xelatex ou -lualatex
Mode surveillance (recompilation automatique)Non intégré ; nécessite un outil de surveillance externelatexmk -pvc (surveille toutes les dépendances)
Nettoyer les fichiers auxiliairesrm *.aux *.log *.toc … (liste manuelle)latexmk -c (sait ce qu'il a généré)
Répertoire de sortiepdflatex -output-directory=./build$out_dir = 'build' in .latexmkrc

\subsection{Alternative FormaTeX}

Évitez complètement l'installation locale de TeX

latexmk résout le problème des passes multiples sur votre machine. FormaTeX résout le problème d'infrastructure : pas de TeX Live, pas de latexmk, pas d'images Docker, juste une requête HTTP qui renvoie un PDF.

Avec latexmk en local

  • Installer TeX Live (~5 Go)
  • Configurer .latexmkrc pour chaque projet
  • Gérer les mises à jour de TeX Live
  • Configurer le runner CI avec l'action TeX Live
  • Déboguer localement les échecs propres à un moteur

Avec l'API FormaTeX

  • Aucune installation : l'appel d'API renvoie le PDF
  • Choisir le moteur via le champ engine
  • TeX Live toujours à jour sur le serveur
  • Intégration CI en une seule commande curl
  • Même moteur, même résultat, à chaque fois
latexmk pris en charge via l'API

Automatisez la compilation LaTeX à grande échelle

FormaTeX gère la compilation en plusieurs passes côté serveur. Passez "engine": "latexmk" pour exécuter le pipeline latexmk complet : bibliographie, références croisées, tout est résolu en un seul appel d'API.