Le mpg-blog

LaTeX et autres geekeries

Intégrer un LuaTeX récent à TeX Live

with 2 comments

LuaTeX est une extension de TeX, activement développée, et destinée à (long) terme à remplacer pdfTeX (l’extension de TeX utilisée par toutes les distributions modernes pour compiler les documents LaTeX). Un des nouveautés de TeX Live 2008 est d’intégrer une version de LuaTeX (la beta 0.25.4). Cependant, pour le moment, il n’y a pas de mise à jour de LuaTeX entre deux versions annuelles de TeX Live. Ce billet explique comment intégrer une version plus récente de LuaTeX (la beta 0.35 est sortie hier) à sa TeX Live 2008, aussi bien sous windows que sous linux/unix, sans interférer avec le gestionnaire de paquets de TeX Live..

Avertissements préliminaires

  • Mise à jour : une méthode plus pratique pour mettre à jour LuaTeX consiste à utiliser le dépôt complémentaire tlcontrib avec tlmgr. La méthode ci-dessous conserve toutefois un intérêt historique ou pour les personnes désirant entretenir plusieurs versions de LuaTeX au sein d’une même installation TeX Live.
  • Pour les versions de LuaTeX supérieures ou égales à 0.39.0, une étape supplémentaire est requise (à effectuer une seule fois), décrite dans le billet suivant.
  • Tout ceci concerne une version « nature » de TeX Live. Si vous utilisez les paquets TeX Live de Debian, des paquets pour LuaTeX existent (dans sid et testing) et fournissent des version relativement récentes de LuaTeX.

Le how-to et certaines explications

Pour une fois, c’est un peu plus qu’un « comment j’ai fait », puisqu’au moins une autre personne a testé. La première chose à faire est bien sûr de récupérer le binaire d’une version récente de LuaTeX. On en trouve pour Linux et Windows sur la page Gforge de LuaTeX, et pour d’autres plateformes, mais avec potentiellement un peu plus de délai, sur la page téléchagement de LuaTeX. (Attention, sur la page Gforge, l’ordre est trompeur et les version les plus récentes sont en bas de la page).

Il faut maintenant intégrer ce binaire à votre TeX Live. Si vous avez accepté les réglages par défaut lors de l’installation, vos binaires « normaux » de TeX Live sont sous

/usr/local/texlive/2008/bin/<arch>-linux
C:\Program Files\texlive\2008\bin\win32

selon que vous êtes sous Linux ou Windows. Nous allons placer les nouveaux binaires dans un répertoire parallèle en remplaçant la dernière composante du chemin ci-dessus par i386-linux-latest ou win32-latest par exemple. (Adaptez au besoin.)

Cet emplacement n’est pas choisi au hasard : il y a dans TeX Live tout un tas de fichiers que TeX et ses variantes on besoin de localiser. Comme il est a priori possible d’installer TeX Live n’importe où sur le disque, il faut que les programmes aient un moyen de s’y retrouver. Le moyen retenu (sous TeX Live) est simple : le programme regarde où il se trouve sur le disque, et en déduit où se trouvent les autres fichiers. Il faut donc bien prendre garde de ne pas le placer n’importe où.

Il faut ensuite ajouter ce répertoire à son PATH, avant le répertoire par défaut de TeX Live. Je reviendrai là-dessus dans la partie spécifique au système d’exploitation.

Il faut ensuite re-générer les formats. Si cette dernière phrase vous paraît incongrue, un mot d’explication. Quand on utilise la commande latex, il y a en fait (essentiellement) deux fichiers en jeu : le programme pdftex (ou pdftex.exe) et le « format » latex.fmt. Ce dernier comprend des définitions (comme par exemple celle de \documentclass) sous une forme « pré-compilée » et très rapide à charger. Les fichiers .fmt utilisent un format binaire qui ne peut pas être partagé entre différentes versions du programme sous-jacent. Je répète donc : il faut ensuite re-générer les formats (en espérant que ça passe mieux cette fois).

C’est très simple, en ligne de commande on fait

fmtutil-sys --byfmt luatex
fmtutil-sys --byfmt pdfluatex
fmtutil-sys --byfmt lualatex
fmtutil-sys --byfmt pdflualatex

(Muni des privilèges suffisants pour écrire dans les répertoire de TeX Live. Pour un utilisateur d’Unix, ça peut impliquer l’usage de sudosu.)

Bien, on a fait la moitié du travail pour pouvoir lancer une commande comme pdflualatex : créer un fichier pdflualatex.fmt viable. L’autre moitié est de faire comprendre à notre système d’exploitation que quand on lance la commande pdflualatex, c’est en fait notre nouveau programme luatex (ou luatex.exe) qu’il faut utiliser. Cette partie dépend du système d’exploitation.

Sous Linux, Mac OS, ou autre variante d’Unix

C’est très simple, il suffit, dans notre répertoire ii386-linux-latest (ou autre) nouvellement créé, et qui ne contient que luatex pour le moment, de créer des liens symboliques vers celui-ci.

for l in pdfluatex lualatex pdflualatex texlua texluac; do
ln -s luatex $l; done

Hop, c’est tout. Vous avez remarqué texlua et texluac ? C’est pour utiliser LuaTeX comme un simple interpréteur Lua (resp. un compilateur de Lua en bytecode). Utile si vous voulez pratiquer tranquillement Lua, ou écrire des scripts portable à utiliser dans le contexte de TeX (par exemple, texdoc est un script interprété par texlua depuis TeX Live 2008, ce qui lui permet de fonctionner aussi sur windows, contrairement à la précédente implémentation sous forme de script shell).

Maintenant, ça vous dérange peut-être d’avoir dans votre PATH deux répertoires rien que pour TeX Live. Moi ça me dérange en tout cas. Pas de problème, on fait (par exemple)

for f in ../x86_64-linux/*; do ln -s $f; done

pour créer des liens symboliques de notre nouveau répertoire vers les fichiers de l’ancien, et on peut ainsi ne garder que le nouveau dans le PATH.

Attention, si lors de l’installation vous aviez choisi l’option « ajouter des liens symboliques dans les répertoires standard », oubliez tout ce que j’ai dit précédemment sur le PATH. Placez simplement des liens symboliques vers .../bin/<arch>-latest en amont de /usr/local/bin dans votre PATH. En principe, ~/bin fait très bien l’affaire pour ça (enfin, peut-être pas sous OS X). Il vous faut bien sûr créer des liens symboliques avec tous les noms voulus. Par contre, il faut continuer à placer le binaire à l’endroit indiqué (et pas par exemple directement dans votre ~/bin, car c’est ce qui compte pour qu’il trouve ensuite les fichiers de TeX Live.

Sous windows

Ici, on n’a pas de liens symboliques (quoi que… sous NTFS je crois que si, mais je ne sais pas faire). Qu’à cela ne tienne, on va faire des copies. On crée donc dans notre nouveau répertoire win32-latest des copies de luatex.exe nommées pdfluatex.exe, lualatex.exe, pdflualatex.exe, texlua.exe et texluac.exe (voir ci-dessus pour l’utilité de ces deux derniers).

Si vous souhaitez n’avoir qu’un seule répertoire TeX Live dans votre PATH, le plus simple est de commencer par recopier le précédent sous le nouveau nom, et ensuite seulement de remplacer les fichiers dans la copie.

Dernières remarques

LuaTeX est vraiment en bêta. Ne l’utilisez qu’à des fins de test ou de développement. Par ailleurs, une bonne raison pour en installer une version plus récente que 0.25.4 est que cette dernière souffre d’un problème important. Elle ne peut pas charger les fontes qui sont utilisée par défaut par LaTeX avec usepackage[T1]{fontenc}. (Pour l’anecdote, ce n’est pas à proprement parler un bug de LuaTeX : c’est une anomalie dans les fichiers .tfm de ces fontes, non détectée par les variantes de TeX usuel. Dans un sens, LuaTeX avait « raison » de ne pas les accepter, mais les version récentes préfèrent avoir tort et fonctionner…)

Au passage, si vous voulez tester pdflualatex, attention, suite à des progrès importants réalisé par LuaTeX (par rapport à pdfTeX) en matière d’encodages d’entrées et de fontes, inputenc et fontenc ne sont pas actuellement compatibles avec LuaTeX. Il suffit de supprimer inputenc et d’encoder son fichier en utf-8 pour régler le premier point. Pour le deuxième, on peut quand même utiliser fontenc avec T1 en attendant, mais on aura des problèmes sur certains caractères (tout ceux, heureusement rares, qui ne sont pas à la même position dans latin1 et dans T1).

Written by mpg

février 25th, 2009 at 4:43

Posted in TeX et compagnie

Tagged with , ,

2 Responses to 'Intégrer un LuaTeX récent à TeX Live'

  1. [...] un article précédent, j’expliquais comment installer une version récente de LuaTeX sur TeX Live. Suite à un changement depuis la version 0.39.0 de LuaTeX, un action supplémentaire (modification [...]

  2. [...] incluse ne permettant pas de faire tourner Mark IV. On peut bien sûr mettre à jour LuaTeX comme je l’expliquais précédemment (noter que l’étape supplémentaire décrite ici n’est plus nécessaire), pour tester [...]