Ouvrez un fichier .tex dans un GNU Emacs sorti de sa boîte et vous êtes déjà dans un mode LaTeX, sans le moindre paquet installé : il est livré tel quel sous le nom lisp/textmodes/tex-mode.el. AUCTeX est ce que l’on installe pour remplacer ce mode, et les deux sont enchevêtrés depuis l’origine, car AUCTeX est né de ce fichier même. En 1986, à l’université d’Aalborg au Danemark, quelqu’un se mit à ajouter au tex-mode.el d’Emacs des fonctions pour insérer des commandes de police et des caractères danois ; le AUC du nom vient d’Aalborg Universitetscenter, le nom danois de l’université à l’époque. Cette page traite de ce qu’AUCTeX ajoute au mode intégré, de la raison pour laquelle C-c C-c pose une question différente à chaque pression, de RefTeX (qui ne fait pas partie d’AUCTeX), de preview-latex et du preview.sty que vous utilisez peut-être déjà sans le savoir, et de YaTeX, l’alternative de la communauté japonaise.
Le mode LaTeX intégré et AUCTeX : mêmes touches, autres commandes
Même dans un Emacs d’origine, ouvrir un .tex place dans latex-mode : C-c C-b compose, C-c C-o insère une paire \begin…\end, C-c C-e ferme le bloc ouvert le plus interne, C-c C-v ouvre la visionneuse. Le mode retenu se décide en lisant le fichier : tex-mode cherche la première barre oblique inverse qui ne soit pas dans un commentaire et regarde si elle est suivie de documentclass, documentstyle, begin, section, chapter, newcommand, RequirePackage ou de quelques autres. Si oui, latex-mode ; sinon, plain-tex-mode. Si rien n’est trouvé, c’est la valeur de tex-default-mode qui s’applique, et elle vaut latex-mode par défaut.
Installez AUCTeX et le même clavier se branche sur un autre instrument. Les touches restent largement les mêmes, les commandes derrière elles non — d’où l’impression que le comportement a changé sous les doigts. Dans le mode intégré, C-c C-f est tex-file, qui compose le fichier entier ; dans AUCTeX, C-c C-f est TeX-font, qui insère un gabarit de commande de police. Le C-c C-e intégré est latex-close-block, qui ferme un environnement ouvert ; celui d’AUCTeX est LaTeX-environment, qui demande quel environnement insérer. Mis côte à côte, ces deux couples disent la différence d’eux-mêmes : le mode intégré est un mode d’édition capable de lancer TeX, tandis qu’AUCTeX est un environnement qui connaît la structure du document.
La cohabitation des deux a d’ailleurs été mise au propre en 2024. AUCTeX 14.0.1 a renommé ses modes en LaTeX-mode, plain-TeX-mode et docTeX-mode, avec majuscules, précisément pour cesser d’entrer en collision avec les noms intégrés. Depuis, sous Emacs 29 et suivants, le mode dans lequel atterrit un .tex se décide par redirection via major-mode-remap-alist et major-mode-remap-defaults. La porte d’entrée côté AUCTeX est l’option utilisateur TeX-modes, qui permet par exemple de rendre plain TeX au mode intégré tout en gardant LaTeX sous AUCTeX. Le manuel recommande de personnaliser TeX-modes plutôt que de toucher à major-mode-remap-*. Un piège : sous Emacs 29 et suivants, taper directement M-x latex-mode donne le mode intégré, pas AUCTeX. Le code de configuration qui appelle les anciens noms en minuscules tombe droit dedans.
Installer AUCTeX, et le manuel qui a deux ans de retard
AUCTeX n’est pas livré avec GNU Emacs. C’est un projet GNU distribué comme paquet sur GNU ELPA, sous GPL v3. GNU ELPA est actif d’origine depuis Emacs 24.1 : l’installation se résume à M-x list-packages, marquer auctex avec i, presser x — ou l’équivalent M-x package-install RET auctex RET. Deux prérequis. Le premier : que latexmk --version fonctionne dans un terminal, autrement dit que les commandes TeX soient dans le PATH. La composition est faite par le TeX Live, MacTeX ou MiKTeX installé sur la machine ; Emacs se contente de le lancer comme processus fils. Le second : la version d’Emacs elle-même — l’AUCTeX actuel exige Emacs 28.1 ou plus récent.
Il y a ici un décalage capable d’engloutir un après-midi entier : l’AUCTeX distribué par GNU ELPA et le manuel publié sur gnu.org ne sont pas la même version. Vérification faite en août 2026, GNU ELPA proposait la 14.1.2 datée du 14 janvier 2026, tandis que le manuel en ligne sur gnu.org annonçait toujours en tête décrire la version 13.3 du 14 janvier 2024. Deux ans d’écart. Le site n’a pas non plus de page d’annonces de versions. Donc, pour savoir comment un réglage ou une touche se comporte réellement, lisez le manuel Info de la version installée, avec C-h i. La page que renvoie un moteur de recherche ne décrit pas forcément votre machine.
Les premières choses à mettre dans init.el (le plus souvent ~/.emacs.d/init.el) sont TeX-PDF-mode pour produire du PDF par défaut, TeX-parse-self et TeX-auto-save pour que la complétion connaisse votre document, et TeX-source-correlate-mode pour activer la correspondance SyncTeX. TeX-parse-self et TeX-auto-save demandent à AUCTeX de lire le document — en y intégrant les macros des packages chargés par \usepackage — et de mettre le résultat en cache dans un répertoire auto/. Le fonctionnement de SyncTeX relève de sa propre page ; ici, seulement la configuration.
;; package.el reads GNU ELPA, enabled by default since Emacs 24.1.
(require 'package)
(package-initialize)
(use-package tex
:ensure auctex
:hook ((LaTeX-mode . TeX-source-correlate-mode) ; SyncTeX
(LaTeX-mode . reftex-mode) ; cross-references
(LaTeX-mode . LaTeX-math-mode)) ; backquote math shortcuts
:config
(setq TeX-auto-save t ; cache parse data in the auto/ directory
TeX-parse-self t ; scan the file for \usepackage and friends
TeX-PDF-mode t) ; produce PDF, not DVI
;; Tie source lines to PDF positions and run a server for inverse search.
(setq TeX-source-correlate-method 'synctex
TeX-source-correlate-start-server t))C-c C-c pose une question différente à chaque pression
C-c C-c (TeX-command-master) n’est pas un ordre d’exécution, c’est une question sur ce qu’il faut lancer ensuite. Le mini-tampon interroge et propose une valeur par défaut selon l’état du document : LaTeX tant que rien n’a été composé, LaTeX de nouveau si le fichier .aux montre des références non résolues, BibTeX s’il y a une bibliographie, et View une fois tout stabilisé. Accepter par Entrée et recommencer : voilà la boucle de base, et elle résume bien la conception d’AUCTeX — on n’attend pas de vous que vous reteniez la séquence ; c’est l’état du document qui décide de l’étape suivante. Si l’on préfère ne pas regarder défiler les étapes, C-c C-a (TeX-command-run-all) les enchaîne automatiquement jusqu’à une erreur ou la fin, et ouvre la visionneuse en cas de succès.
| Touche | Commande | Effet |
|---|---|---|
C-c C-c | TeX-command-master | Demande quoi lancer ensuite, avec un défaut tiré de l’état du document |
C-c C-a | TeX-command-run-all | Enchaîne tout jusqu’à la fin ou l’erreur, puis affiche le PDF |
C-c C-r | TeX-command-region | Ne compose que la région sélectionnée — pratique pour tester un passage |
C-c C-z | LaTeX-command-section | Ne compose que la section courante |
C-c ` | TeX-next-error | Aller à l’erreur suivante (C-c puis un accent grave) |
M-g p | TeX-previous-error | Revenir à l’erreur précédente ; exige l’analyse de tout le journal (TeX-parse-all-errors) |
C-c C-l | TeX-recenter-output-buffer | Fait défiler le tampon de sortie pour voir sa dernière ligne |
C-c C-k | TeX-kill-job | Tue le processus externe en cours, TeX comme visionneuse |
C-c C-e | LaTeX-environment | Demande un environnement et insère \begin…\end |
C-c C-s | LaTeX-section | Insère une commande de sectionnement ; avec RefTeX, l’étiquette suit |
C-c C-f | TeX-font | Insère une commande de police ; C-c C-f C-d supprime la plus interne |
C-c C-m | TeX-insert-macro | Complète un nom de macro et demande chaque argument (C-c RET aussi) |
C-c ~ | LaTeX-math-mode | Fait de l’accent grave un préfixe pour saisir les symboles mathématiques |
C-c C-o C-f | TeX-fold-mode | Bascule le pliage ; C-c C-o C-b plie tout le tampon |
Deux remarques hors tableau. M-g n n’est pas une affectation d’AUCTeX mais le next-error propre à Emacs, qu’AUCTeX ne remplace pas. Le retour en arrière M-g p (TeX-previous-error) suppose que tout le journal a été analysé ; TeX-parse-all-errors est actif par défaut. Ensuite, si vous voulez qu’une frappe de $ insère une paire, réglez TeX-electric-math. La valeur par défaut est nil — un $ n’est qu’un $ —, tandis que ("$" . "$") donne la formule en ligne à la TeX et ("\\(" . "\\)") celle à la LaTeX.
latexmk n’a plus besoin de greffon : LaTeXMk est intégré à AUCTeX
LaTeXMk figure déjà parmi les choix que propose C-c C-c. L’entrée a été ajoutée à TeX-command-list dans AUCTeX 14.0.5, publié le 19 mai 2024 ; les versions suivantes ont affiné le traitement du répertoire de sortie et les options XeTeX. Le paquet externe qui faisait autrefois figure de réponse standard, auctex-latexmk, n’est plus nécessaire — et vaut mieux être laissé de côté. Son dernier commit en amont date de 2017, bien avant le renommage des modes d’AUCTeX 14. Avant de recopier (auctex-latexmk-setup) d’une vieille configuration trouvée quelque part, pressez C-c C-c et regardez la liste.
Pour faire de latexmk l’action par défaut, réglez TeX-command-default sur "LaTeXMk" — attention à l’orthographe, avec un M et un K majuscules. Comme latexmk inspecte les dépendances et relance exactement autant de fois qu’il le faut, on ne compte jamais les passes pour les références croisées ni la table des matières. Le choix du moteur reste du côté d’AUCTeX, dans TeX-engine, dont les quatre valeurs intégrées sont default, xetex, luatex et omega ; l’entrée LaTeXMk lit cette valeur et en compose les drapeaux transmis à latexmk. Le traitement bibliographique et les réglages fins du moteur sont plus propres dans un .latexmkrc à la racine du projet, ce qui permet aussi de reproduire le même PDF hors d’Emacs ou en CI. La configuration de latexmk elle-même relève de la page sur les compilations automatisées.
;; AUCTeX 14.0.5 and later ship a LaTeXMk entry in TeX-command-list.
;; Note the spelling: capital M, capital K.
(setq-default TeX-command-default "LaTeXMk")
;; Engine selection stays on the AUCTeX side and is buffer-local.
;; M-x TeX-engine-set, or in a file-local variables block:
;; %%% TeX-engine: luatexRefTeX est livré avec Emacs, pas avec AUCTeX
Ce qui s’occupe de \label, \ref et \cite, c’est RefTeX, et cela ne fait pas partie d’AUCTeX. Il se trouve dans l’arbre des sources d’Emacs, sous la forme de reftex.el et d’une douzaine de compagnons dans lisp/textmodes/ : rien à installer. Il est apparu pour la première fois dans Emacs 20.1, en 1997, et etc/NEWS.20, sous « Changes in Emacs 20.1 », imprime la table de touches de l’époque : C-c (, C-c ), C-c [, C-c &, C-c =. Un quart de siècle plus tard, ce sont les mêmes. L’auteur est Carsten Dominik — l’adresse figurant en tête de reftex.el est celle de la ligne d’auteur d’org.el, autrement dit celui qui a écrit Org mode. La maintenance est aujourd’hui assurée par le projet AUCTeX.
Ce qu’il apporte réellement, c’est qu’on n’a jamais à inventer une étiquette à la main. C-c ( (reftex-label) regarde si l’on est dans une figure, un tableau, une équation ou une section, et propose une étiquette judicieusement préfixée — fig:, tab:, eq: — à insérer. Pour y renvoyer, C-c ) (reftex-reference) laisse simplement choisir parmi les étiquettes existantes. Pour les citations, C-c [ (reftex-citation) fouille le .bib par expression régulière et insère \cite{...}. C-c = (reftex-toc) ouvre dans une autre fenêtre une table des matières de tout le document, et C-c & (reftex-view-crossref) montre sur place ce que désigne la référence sous le curseur. Si le document comporte un index, C-c / transforme le mot sélectionné en entrée d’index. Même réparti sur plusieurs fichiers, RefTeX suit le fichier maître et rassemble toutes les étiquettes et toutes les citations.
Pour l’engrener étroitement avec AUCTeX, réglez reftex-plug-into-AUCTeX. C’est une liste de cinq booléens qui commandent séparément si RefTeX fournit les étiquettes des sections et environnements nouvellement créés, et s’il fournit l’argument de \label, de \ref, de \cite et de \index. Lui affecter t active tout, nil désactive tout. Une fois actif, créer une section avec C-c C-s demande aussitôt son étiquette, et insérer \ref avec C-c C-m ouvre le tampon de sélection de RefTeX — c’est à ce réglage que l’on doit l’impression que les deux paquets n’en font qu’un.
(use-package reftex
:ensure nil ; part of Emacs itself, nothing to fetch
:hook (LaTeX-mode . turn-on-reftex)
:config
(setq reftex-plug-into-AUCTeX t ; t turns all five flags on
reftex-cite-format 'natbib)) ; or 'biblatex, 'default, ...preview-latex, et le preview.sty que vous utilisez sans doute déjà
preview-latex compose réellement vos formules, figures et tikzpicture avec LaTeX, puis pose le résultat sur le tampon source sous forme d’image, à l’endroit même. Il a cessé d’être un téléchargement séparé pour devenir une partie d’AUCTeX à la version 11.81 : rien à installer en plus. La source d’un $…$, d’un \[…\] ou d’un environnement equation reste modifiable tout en s’affichant comme des mathématiques composées dès qu’on veut vérifier — une sensation proche du WYSIWYG alors que le fichier reste du texte brut. Les commandes commencent par C-c C-p : C-c C-p C-p pour l’objet au point, C-c C-p C-e pour l’environnement, C-c C-p C-s pour la section, C-c C-p C-r pour la région, C-c C-p C-b pour le tampon, C-c C-p C-d pour tout le document. Pour effacer, on glisse C-c C-c au milieu — C-c C-p C-c C-p retire l’aperçu au point. Un clic mouse-2 sur une image bascule également.
;; The preview commands, by their Lisp names.
;; C-c C-p C-p preview-at-point C-c C-p C-c C-p preview-clearout-at-point
;; C-c C-p C-e preview-environment C-c C-p C-c C-s preview-clearout-section
;; C-c C-p C-s preview-section C-c C-p C-c C-b preview-clearout-buffer
;; C-c C-p C-r preview-region C-c C-p C-c C-d preview-clearout-document
;; C-c C-p C-b preview-buffer C-c C-p C-f preview-cache-preamble
;; C-c C-p C-d preview-document C-c C-p C-i preview-goto-info-pageVoici un fait qui surprend souvent : le preview.sty que preview-latex utilise en coulisses est le fichier même que la classe standalone charge pour rogner une image. Le preview.sty du TeX Live 2024 de cette machine porte la version 13.3, datée du 17 janvier 2024 ; son en-tête indique qu’il a été développé dans le cadre d’AUCTeX, et la chaîne d’identification de sa ligne \ProvidesPackage est littéralement (AUCTeX/preview-latex). La ligne 571 de standalone.cls est \RequirePackage{preview} et, l’option preview valant vrai par défaut, écrire \documentclass{standalone} le déclenche. Si vous avez déjà rogné une figure TikZ dans son propre fichier, vous avez utilisé une partie d’un paquet Emacs — même sans avoir jamais ouvert Emacs. Les aperçus de LyX et pst-pdf s’appuient sur la même pierre.
Deux prérequis pratiques. preview-latex a besoin de Ghostscript (7.07 ou plus récent) pour fabriquer les images, aussi bien par la voie DVI que par la voie PDF. Sur la voie DVI, il faut en outre Dvips ou dvipng — dvipng n’est pas une exigence supplémentaire mais une solution de rechange à Dvips, et le manuel note qu’il est bien plus rapide que le duo Dvips-plus-Ghostscript. L’autre prérequis : votre Emacs doit avoir été compilé avec la prise en charge des images. Cela paie surtout sur un manuscrit chargé de longues équations ou de diagrammes commutatifs : pouvoir vérifier le résultat composé d’un coup d’œil supprime tout l’aller-retour « compiler puis aller regarder le PDF ».
AUCTeX parle déjà japonais : japanese-LaTeX-mode et les moteurs pTeX
Avant d’aller chercher un autre mode pour le japonais, une chose mérite d’être connue : AUCTeX livre tex-jp.el d’origine, qui fournit japanese-LaTeX-mode et japanese-plain-TeX-mode. Ce fichier ajoute ptex, jtex et uptex à la liste des moteurs, et japanese-TeX-engine-default — dont la valeur par défaut est ptex — décide lequel employer. Mieux : avec TeX-parse-self activé, il choisit tout seul le bon moteur d’après le nom de la classe, en regardant jbook, jsarticle ou tjreport pour décider s’il faut appeler platex ou uplatex. C’est précisément pour cela que le manuel recommande TeX-parse-self aux utilisateurs japonais de LaTeX. La classe par défaut vient de japanese-LaTeX-default-style, initialement "jarticle".
Le choix automatique peut se tromper. L’exemple que donne le manuel lui-même est j-article : AUCTeX y voit NTT jLaTeX alors que l’auteur pensait à ASCII pLaTeX. Dans ce cas, on le remplace explicitement dans un bloc de variables locales en fin de fichier. Pour que les documents japonais soient le mode par défaut, réglez TeX-default-mode sur japanese-LaTeX-mode. Il vaut la peine d’ajouter que le manuel d’AUCTeX indique sans détour qu’aucun de ses mainteneurs principaux ne lit le japonais — c’est précisément pour cela que ce coin du paquet vit des retours des locuteurs japonais.
%%% Local Variables:
%%% mode: japanese-LaTeX
%%% TeX-engine: uptex
%%% End:YaTeX (野鳥), et toute une volée de modes portant des noms d’oiseaux
YaTeX est un mode majeur LaTeX pour Emacs, dû à HIROSE Yuuji, dont la ligne de copyright court de 1991 à aujourd’hui. Son nom japonais, 野鳥, se lit yachou et le manuel le traduit par Wild Bird, en précisant qu’il s’agit d’un jeu de mots japonais. C’est ici que cela devient intéressant, car ce jeu de mots a fondé une famille : LaiTeX (Thunder Bird) pour l’éditeur Vz, HackTeX (Swan) pour Wz, HiTeX (Flying Bird) pour xyzzy, et KaTeX, dont l’auteur appelait le sien la fj Wild Bird Society. Dans le monde TeX japonais des années 1990, baptiser son soutien d’éditeur d’un nom d’oiseau tenait de la convention. La licence est la BSD à 2 clauses (depuis la version 1.80, le 9 septembre 2017) et la dernière version est la 1.84.1 d’août 2026, toujours mise à jour par l’auteur lui-même.
Sa philosophie diffère un peu de celle d’AUCTeX : elle mise sur « taper les premières lettres, puis compléter » pour insérer vite macros et environnements. Le préfixe est C-c par défaut. C-c b est la complétion de type begin (environnements, \begin{...}...\end{...}), C-c s de type section (\section et consorts), C-c l de type large (corps et graisses comme \large), et C-c m de type maketitle (macros sans argument telles que \maketitle et \item). S’y ajoute C-c SPC, la complétion libre : tapez \ puis le début d’un nom de commande, pressez, et YaTeX complète sur place. La composition commence par C-c t — C-c t j compose, C-c t p prévisualise, C-c t b lance BibTeX, C-c t i makeindex, C-c t d toute la chaîne de latex à dvipdfmx, C-c t r ne compose qu’une région, C-c t k interrompt. Pour se déplacer, C-c g saute à l’objet correspondant — \begin vers \end, \label vers \ref, \include vers le fichier nommé — et pour réécrire, C-c c (changer) et C-c k (supprimer).
Une mise en garde ici : le t de C-c t j est un t nu, sans modificateur. Dans Emacs, l’espace C-c lettre est réservé à l’utilisateur, aussi certains n’apprécient-ils pas que YaTeX s’y installe. Mettre YaTeX-inhibit-prefix-letter à t déplace toutes les affectations par défaut de C-c lettre vers C-c C-lettre, et la composition prend la forme plus emacsienne C-c C-t j. Les complétions par région, sur majuscules, subsistent ; pour les supprimer aussi, mettez 1 au lieu de t. La valeur par défaut est nil : sans rien faire, c’est bien C-c t j. Cette variable dit dans quel dialecte est écrit un extrait de configuration trouvé sur le web.
Quelques variables ancrent le côté japonais. YaTeX-kanji-code est l’encodage kanji employé à l’enregistrement : nil signifie « ne rien convertir, garder le coding-system du fichier », 0 vaut no-conversion, 1 Shift JIS, 2 JIS, 3 EUC et 4 UTF-8. nil et 0 ne sont pas la même chose — et la source actuelle a nil par défaut, ce qui convient à l’habitude d’aujourd’hui de ne pas laisser réencoder ses fichiers en silence. tex-command est la commande de composition réellement invoquée : "latexmk", "uplatex" ou "lualatex -synctex=1". Régler bibtex-command et makeindex-command sur upbibtex et upmendex fait fonctionner bibliographies et index japonais. YaTeX livre en outre, dans la même distribution, un mode frère pour HTML, yahtml, et le paquet yatex de MELPA est construit directement depuis le dépôt Mercurial de l’auteur.
(use-package yatex
:ensure t ; from MELPA, built from the author's repo
:mode ("\\.tex\\'" . yatex-mode)
:config
(setq YaTeX-kanji-code nil ; keep the file's own coding system
tex-command "latexmk" ; or "uplatex", "lualatex -synctex=1"
bibtex-command "upbibtex"
makeindex-command "upmendex"
;; t moves C-c <letter> bindings to C-c C-<letter>.
YaTeX-inhibit-prefix-letter t))Lequel choisir ? Mieux vaut s’engager sur l’un ou l’autre que mélanger AUCTeX et YaTeX. AUCTeX si l’on veut l’ensemble complet, preview-latex et RefTeX compris. YaTeX si l’on veut écrire vite des documents japonais avec un jeu réduit et rapide de frappes de complétion. La prise en charge du japonais existe aussi dans AUCTeX, comme l’a montré la section précédente : la façon honnête de trancher aujourd’hui n’est donc pas « du japonais, donc YaTeX » mais « cette manière de taper me convient, donc YaTeX ».
Ce qu’il faut régler dans la première demi-heure
- Décider d’abord à qui appartient la compilation. Soit vous avancez pas à pas avec
C-c C-c, soit vous réglezTeX-command-defaultsur"LaTeXMk"et confiez toute la chaîne à latexmk. Cela passe avant les thèmes et les couleurs. - Faire un tour complet de la boucle sur un petit
main.tex. Poussez jusqu’au bout avecC-c C-a; quand le PDF s’ouvre, étiquetez une équation ou une figure avecC-c (, insérez le renvoi depuis le texte avecC-c ), et sautez à l’erreur suivante avecTeX-next-errorsi elle survient. - Quand rien ne marche, diagnostiquer depuis l’extérieur. Compilez le même projet une fois dans un terminal. Si
latexmky échoue, aucune retouche d’init.eln’y changera rien ; s’il y réussit, le suspect est le PATH hérité par Emacs. - Lire le manuel que l’on possède réellement. Pour savoir ce que signifie un réglage, ouvrez avec
C-h ile manuel Info de la version installée. Celui du web peut avoir plusieurs versions de retard. - Arrimer la compilation au projet. Dès que les chapitres vivent dans des fichiers séparés, placez un
.latexmkrcà la racine : Emacs, un autre éditeur et la CI produiront le même PDF.