Chemin principal : Accueil > LaTeX > Compilation en série > XeLaTeX et Latexmk

XeLaTeX et Latexmk

jeudi 19 janvier 2017, mise à jour mercredi 25 janvier 2017, par Maïeul
Suivre la vie du site RSS 2.0 Forum

La version 4.52 de Latexmk vient de sortir. Elle intègre directement le support de XeLaTeX. Ceci ne facilite pas que la création d’un fichier de configuration, mais permet de gagner un temps substantiel lors de la compilation. Explications.

Rappel : ce qu’est Latexmk

La compilation complète d’un document LaTeX suit en général les étapes suivantes :

  • compilation (Xe)LaTeX
  • compilation Biber [1]
  • compilation (Xe)LaTeX
  • encore une compilation (Xe)LaTeX pour s’assurer que tous les liens soient corrects et que la table des matières soit bien positionnée.

Cependant, il faut parfois plus de compilation, parfois moins, parfois il faut compiler deux fois avec Biber [2]. Or, il est difficile de déterminer à l’avance le nombre de compilations à exécuter.

Latexmk est un logiciel qui permet d’automatiser le processus sans se soucier du nombre de compilations. Pour se faire, Latexmk lance d’abord une compilation (Xe)LaTeX, puis regarde les fichiers intermédiaires produits (.aux, .bcf etc) et lance alors les scripts tels que Biber, puis à nouveau (Xe)LaTeX, jusqu’à ce que le contenu des fichiers intermédiaires soit stabilisé. On est ainsi assuré d’exécuter exactement toutes les compilations nécessaires, mais pas une de plus.

En outre, Latexmk indique en fin de compilation les clefs bibliographiques indéfinies et les labels problématiques.

Compatibilité avec XeLaTeX

Les anciennes versions de latexmk ne prenaient pas directement XeLaTeX en charge, et il fallait ajouter des lignes dans le fichier de configuration latexmkr les lignes suivantes :

$pdflatex = "xelatex %";
$pdf_mode = "1";

La nouvelle version de latexmk prend directement en charge XeLaTeX. Pour ce faire, il suffit :

  • soit de lancer latexmk avec l’option -xelatex : latexmk -xelatex fichier.tex
  • soit de mettre dans son fichier de configuration latexmkrc (à côté des sources à compiler) ou .latexmkrc (dans son répertoire utilisateur [3]) la ligne suivant :
    $pdf_mode = 5;

Avantage de la compatibilité directe avec XeLaTeX

« À quoi bon écrire un article juste pour expliquer une petite modification de configuration ? » me diriez-vous. En réalité, le fait que latexmk gère directement XeLaTeX permet d’accélérer la compilation.

En effet, lorsque vous compilez avec XeLaTeX, celui-ci ne produit pas directement un fichier .pdf, mais passe par un fichier .xdy intermédiaire, qu’il transforme ensuite en fichier .pdf. Le processus est transparent pour l’utilisateur, si bien que vous ne voyez pas ce fichier intermédiaire. Mais si vous consultez le fichier de log de XeLaTeX, vous devrez trouver la ligne suivante :

File: l3xdvidpfmx.def 2016/08/18 v6679 L3 Experimental driver: xdvipdfmx

Cette ligne indique que le programme xdvipdfmx est appelé pour convertir les .xdy en .pdf.

Cette transformation est toutefois chronophage. C’est pourquoi, lorsque Latexmk est configuré pour utiliser XeLaTeX, il appelle ce dernier de sorte à ne produire que le fichier .xdy. Puis, lorsque les fichiers intermédiaires sont stabilisés, latexmk appelle xdvipdfmx pour produire le .pdf final à partir du .xdy.

Ainsi, si vous avez trois compilations XeLaTeX, xdvipdfmx n’est appelé qu’une fois, et non trois fois. Autant de temps et d’énergie gagnés.

Notes

[1Ou BibTeX si vous êtes de l’ancienne école… mais dans ce cas vous ne lisez pas mon blog…

[3Ou ailleurs sur l’ordinateur pour partage entre plusieurs utilisateurs, voir la documentation de latexmk.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

À propos

Titulaire d’un master en sciences religieuses de l’Université de Strasbourg, je suis depuis août 2012 assistant-diplômé en histoire du christianisme antique et littérature apocryphe chrétienne à l’Université de Lausanne, où je prépare une thèse sous la direction de Frédéric Amsler.

Dans le cadre de la rédaction de mon mémoire de master, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul