<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le mpg-blog &#187; luatex</title>
	<atom:link href="http://weblog.elzevir.fr/par-tag/luatex/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.elzevir.fr</link>
	<description>LaTeX et autres geekeries</description>
	<lastBuildDate>Fri, 10 Sep 2010 08:49:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LuaTeX 0.60.2</title>
		<link>http://weblog.elzevir.fr/2010/07/luatex-0-60-2/</link>
		<comments>http://weblog.elzevir.fr/2010/07/luatex-0-60-2/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 09:49:53 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[luatex]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2010/07/luatex-0-60-2/</guid>
		<description><![CDATA[LuaTeX 0.60.2 est sorti officiellement il y a quelques jours. C&#8217;est très
probablement la version qui sera dans TeX Live 2010. Les changements, pour
cette version dans la branche « stable » 0.60.x, sont bien sûr des corrections
de bogues. Voici une traduction approximative de la liste des modifications,
suivie de quelques commentaires sur des fonctionnalités évoquées pour se
cultiver au passage.

Liste [...]]]></description>
			<content:encoded><![CDATA[<p>LuaTeX 0.60.2 est sorti officiellement il y a quelques jours. C&#8217;est très
probablement la version qui sera dans TeX Live 2010. Les changements, pour
cette version dans la branche « stable » 0.60.x, sont bien sûr des corrections
de bogues. Voici une traduction approximative de la liste des modifications,
suivie de quelques commentaires sur des fonctionnalités évoquées pour se
cultiver au passage.<span id="more-124"></span></p>

<h3>Liste des changements</h3>

<ul>
<li>Plusieurs problèmes de portabilité réglés, en particulier pour les
compilateurs autres que gcc.</li>
<li>Mise à jour de SyncTeX par Jérôme Laurens.</li>
<li>Correction du bogue 406 : <code>\pdfliteral</code> gênait la césure.</li>
<li>Correction d&#8217;un problème de surimpression en PDF (lié à <code>\pdfliteral</code>).</li>
<li>Intégration d&#8217;un patch d&#8217;Akira Kakuto assurant que seules les commandes
qui sont dans le <code>PATH</code> sont exécutées sous Windows en mode <code>\write18</code>
restreint.</li>
<li>Correction d&#8217;un débordement de tampon dans <code>luafontloader</code>.</li>
<li>Correction de problèmes de dépendance de la plate-forme pour les formats
générés.</li>
<li>Correction de coquilles dans la manuel.</li>
<li>Correction d&#8217;un problème avec la glue (ressort) nulle écrasée par le code de
référence des attributs.</li>
<li>Documentation du caractère déprécié et cassé du traitement des otp.</li>
</ul>

<h3>Exécution restreinte de commandes</h3>

<p>Une des nouveautés de TeX Live 2010 (précédemment prévue pour TeX Live 2009
mais reportée suite à plusieurs problèmes) est d&#8217;ajouter un nouveau niveau
d&#8217;autorisation concernant l&#8217;exécution de commandes depuis TeX (souvent appelé
<code>\write18</code>, du nom de la commande TeX le permettant) ; jusqu&#8217;ici les deux
niveaux possibles étaient « tout est permis » ou « rien n&#8217;est permis ». Le
nouveau mode, « restreint », a pour but d&#8217;autoriser seulement l&#8217;exécution de
commandes (réputées inoffensives) appartenant à une liste fixée.</p>

<p>Cette fonctionnalité pose des problèmes délicats, par exemple le fait que,
sous Windows, les commandes sont toujours recherchées en priorité dans le
répertoire courant (quel que soit le réglage du <code>PATH</code>). Sachant que TeX peut
écrire des fichiers arbitraires dans le répertoire courant, on imagine sans
peine les possibilités d&#8217;attaque que cela ouvre. Plusieurs mesures sont prises
pour éviter ces problèmes ; le patch mentionné ci-dessus n&#8217;est probablement
pas propre à LuaTeX mais appartient sans doute à une série concernant d&#8217;autres
exécutables de TeX Live.</p>

<h3>Formats et boutisme</h3>

<p>Les jeux de macros comme LaTeX, plutôt que d&#8217;être lus et interprétés par *TeX
(lire : TeX ou pdfTeX ou XeTeX ou LuaTeX ou &#8230;) à chaque démarrage, sont
traités une bonne fois pour tout et stockés sur le disque sous forme de
fichiers <code>.fmt</code> : les formats. Ces fichiers formats constituent une image de
la mémoire de *TeX, et sont donc très rapides à charger au démarrage.</p>

<p>Cependant, l&#8217;état précis de la mémoire de *TeX dépend de paramètres comme le
boutisme du processeur (les octets de poids fort sont-ils au début où à la
fin). Des précautions particulières sont prises à la création du fichier
format et à son chargement pour inverser si nécessaire l&#8217;ordre des octets, de
sorte que le fichier format soit indépendant du boutisme ambiant, ce qui
facilite grandement la gestion d&#8217;installations TeX partagées entre des
machines de boutisme différent.</p>

<p>Cette question concerne toutes les variantes de TeX et est en général réglée
depuis longtemps. Cependant, LuaTeX pose des problèmes nouveaux en ce domaine,
par exemple à cause de la possibilité de stocker du code Lua dans le format :
par défaut le <em>bytecode</em> généré par Lua n&#8217;est pas indépendant de la
plateforme, et l&#8217;équipe LuaTeX a du l&#8217;adapter pour obtenir la propriété
voulue. Un problème de ce type vient donc encore d&#8217;être corrigé.</p>

<h3>Héritage d&#8217;Omega</h3>

<p>LuaTeX admet plusieurs parents directs, dont le plus connu est pdfTeX, mais un
autre parent non moins important est Aleph (le successeur d&#8217;Omega), qui
permettait déjà une bonne gestion d&#8217;Unicode, et proposait une gestion des
écritures multi-directionnelles qui a été reprise par LuaTeX (de préférence à
celle d&#8217;e-TeX, présente aussi dans pdfTeX).</p>

<p>En première approximation et à l&#8217;origine, LuaTeX formait un sur-ensemble
d&#8217;Aleph (et d&#8217;Omega) et incluait ainsi tous les mécanismes développés par
Omega. L&#8217;un de ces mécanismes, OTP (<em>Omega Translation Process</em>) avait pour
but de permettre une conversion automatique entre codages de caractères, et
plus généralement des manipulations sur les flux de caractères entrant et
sortant d&#8217;Omega. LuaTeX propose de meilleures solutions à ces problèmes, avec
ses différents <em>callback</em> Lua.</p>

<p>Le traitement des OTP est désormais officiellement déprécié, après avoir été
cassé depuis quelque temps déjà. Ce cas me semble représentatif de plusieurs
fonctionnalités héritées d&#8217;Omega, parmi lesquelles aucun ménage systématique
n&#8217;a encore été fait mais qui sont peu ou pas testées du fait de l&#8217;existence de
meilleurs solutions dans LuaTeX, et sont donc souvent cassées (parfois, elles
l&#8217;étaient déjà dans Omega, mais c&#8217;est une autre histoire) et appelées à
progressivement disparaître.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2010/07/luatex-0-60-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LuaTeX 0.60.0</title>
		<link>http://weblog.elzevir.fr/2010/04/luatex-0-60-0/</link>
		<comments>http://weblog.elzevir.fr/2010/04/luatex-0-60-0/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 21:34:48 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[luatex]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2010/04/luatex-0-60-0/</guid>
		<description><![CDATA[Une nouvelle version de LuaTeX, le nouveau moteur TeX en plein
développement, est sortie aujourd&#8217;hui. C&#8217;est cette version (ou plus
probablement une version 0.60.x) qui sera présente dans TeX Live 2010. Pas
d&#8217;énorme changement pour l&#8217;utilisateur ordinaire, mais voici une traduction
rapide des nouvelles présentes dans l&#8217;annonce ce cette version.

Des exécutables seront bientôt disponibles sur la page téléchargements du
projet, [...]]]></description>
			<content:encoded><![CDATA[<p>Une nouvelle version de <a href="http://luatex.org/">LuaTeX</a>, le nouveau moteur TeX en plein
développement, est <a href="http://tug.org/pipermail/luatex/2010-April/001458.html">sortie aujourd&#8217;hui</a>. C&#8217;est cette version (ou plus
probablement une version 0.60.x) qui sera présente dans TeX Live 2010. Pas
d&#8217;énorme changement pour l&#8217;utilisateur ordinaire, mais voici une traduction
rapide des nouvelles présentes dans l&#8217;annonce ce cette version.<span id="more-112"></span></p>

<p>Des exécutables seront bientôt disponibles sur la <a href="http://luatex.org/download.html">page téléchargements</a> du
projet, et j&#8217;ai précédemment expliqué comment <a href="http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/">installer une version
récente de LuaTeX sur TeX Live</a>, pour ceux qui veulent l&#8217;essayer sans
attendre.</p>

<h3>Nouvelles fonctionnalités</h3>

<ul>
<li><code>os.name</code> prend maintenant en compte CYGWIN (par Élie Roux).</li>
<li>La gestion interne des spécifications de direction est plus rapide maintenant.</li>
<li>Chaque nœud de glyphe a maintenant trois champs virtuels en lecture seule :
<code>width</code>, <code>height</code>, et <code>depth</code> (les valeurs sont en <code>sp</code> (points d&#8217;échelle)
bien sûr).</li>
<li>Il y a de nouvelles fonctions <code>node.protrusion_skipable()</code> et <code>tex.badness()</code>
(utiles pour le découpage des paragraphes en Lua).</li>
<li>Également nouveau : <code>tex.linebreak()</code>. Voir le manuel pour les détails.</li>
<li>Toutes les erreurs en Lua indiquent maintenant le fichier et le numéro de
ligne pour aider à déboguer.</li>
<li>Import de Metapost 1.211.</li>
<li><code>pdf.pdfcatalog</code> sera bientôt remplacé par le nouveau <code>pdf.catalog</code> ;
<code>pdf.pdfinfo</code> sera bientôt remplacé par le nouveau <code>pdf.info</code> ;
<code>pdf.pdfnames</code> sera bientôt remplacé par le nouveau <code>pdf.names</code> ;
<code>pdf.pdftrailer</code> sera bientôt remplacé par le nouveau <code>pdf.trailer</code>.</li>
<li><code>pdf.pdfmapfile</code> et <code>pdf.pdfmapline</code> sont remplacés pas les nouvelles
fonctions <code>pdf.mapfile()</code> et <code>pdf.mapline()</code> (une fonction convient mieux
comme interface pour ces paramètres vu qu&#8217;il ne retournent jamais rien).</li>
<li>Nouvelles variables Lua en lecture et écriture : <code>pdf.pagesattributes</code>,
<code>pdf.pageresources</code>, <code>pdf.pagesresources</code>.</li>
<li><code>getluatexsvnversion.sh</code> détecte maintenant correctement git-svn et arrive
encore à trouver un numéro de révision SVN valide (de Patrick Gundlacj).</li>
<li>Plusieurs fichiers sources ont été convertis en CWEB.</li>
</ul>

<h3>Corrections de bogues</h3>

<ul>
<li>GNU libtool est maintenant utilisé pour résoudre les problèmes techniques
variés liés au chargement dynamique de modules Lua.</li>
<li>La détection des erreurs dans <code>scan_interger_part</code> était incorrecte car
<code>OK_so_far</code> n&#8217;était pas initialisée (remarqué par Javier Mugica).</li>
<li>Synctex était cassé dans 0.51 et 0.52.</li>
<li><code>\lastlinefit</code> était cassé depuis&#8230; euh, à peu près toujours.</li>
<li>La lecture des fichiers binaires de taille nulle était cassée.</li>
<li>Détection des réglures non initialisées (pour les nœuds de réglures créés de
travers depuis Lua).</li>
<li><code>pdfimmediatobj('streamfile')</code> était cassé sur les plate-formes 64 bits.</li>
<li><code>tex.linebreak</code> ne prenait pas les valeurs de ressort droit et gauche données,
mais utilisait en fait les valeurs courantes coté TeX (bug #356).</li>
<li>La commande <code>make</code> de <code>build.sh</code> est maintenant passée à <code>configure</code> pour
résoudre les problèmes où GNU make n&#8217;était pas trouvé alors qu&#8217;il était
effectivement installé.</li>
<li><code>dofile(&lt;nil&gt;)</code> et <code>loadfile(&lt;nil&gt;)</code> en <code>batchmode</code> provoquent maintenant une
erreur et continuent plutôt que d&#8217;attendre inutilement une entrée de
l&#8217;utilisateur.</li>
<li>Annulé le commit numéro 3417 (l&#8217;expérience avec <code>buildpage</code>) car il provoque
des problèmes quand des items sont en attente au moment du saut de page.</li>
<li><code>loaders[4]</code> est écrasé en mode <code>--safer</code>; <code>require()</code> se comporte de façon
plus semblable au Lua 5.1 normal ; meilleurs messages d&#8217;erreur (d&#8217;après un
e-mail et des patchs de Manuel Pégourié-Gonnard).</li>
<li>Test supplémentaire au chargement <code>GDEF</code> dans <code>luafontloader</code>, basé sur un
crash causé par la fonte <code>AkaashNormal.ttf</code> de Linux.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2010/04/luatex-0-60-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LuaTeX récent sur TeX Live, compléments</title>
		<link>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/</link>
		<comments>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:55:11 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[luatex]]></category>
		<category><![CDATA[texlive]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2009/04/lautex-recent-sur-tex-live-2008-2/</guid>
		<description><![CDATA[Dans un article précédent, j&#8217;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 des fichiers d&#8217;initialisation)
est requise. Celle-ci doit être effectuée une fois pour toute pour permettre
d&#8217;utiliser une version supérieure à 0.39.0, contrairement aux étapes décrites
précédemment qui sont à refaire pour [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un article précédent, j&#8217;expliquais comment <a href="http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/">installer une version récente
de LuaTeX sur TeX Live</a>. Suite à un changement depuis la version <code>0.39.0</code>
de LuaTeX, un action supplémentaire (modification des fichiers d&#8217;initialisation)
est requise. Celle-ci doit être effectuée une fois pour toute pour permettre
d&#8217;utiliser une version supérieure à <code>0.39.0</code>, contrairement aux étapes décrites
précédemment qui sont à refaire pour chaque installation d&#8217;une nouvelle
version.<span id="more-51"></span></p>

<h2>Le comment</h2>

<p>Vu que l&#8217;installation des binaires se fait forcément dans l&#8217;arborescence
principale de TeX Live, toutes les explications qui suivent supposent que vous
installez les fichiers d&#8217;initialisation dans <code>TEXMFLOCAL</code>, car je ne vois pas de
raison d&#8217;utiliser plutôt <code>TEXMFHOME</code>. Pour connaître la valeur de <code>TEXMFLOCAL</code>,
utilisez la commande suivante.</p>

<pre><code>kpsewhich --var-value TEXMFLOCAL
</code></pre>

<p>Par ailleurs, je suppose que vous avez les privilèges suffisants pour effectuer
toutes les opérations décrites. Il est conseillé d&#8217;installer TeX Live en tant
que simple utilisateur (surtout si vous comptez la bidouiller beaucoup, comme
c&#8217;est l&#8217;objet de ces billets), mais si vous ne l&#8217;avez pas fait, n&#8217;hésitez pas à
utiliser <code>sudo</code> ou <code>su</code> sous Unix, ou « ouvrir une ligne de commande en tant
qu&#8217;administrateur » sous Windows au besoin.</p>

<p>Dans <code>TEXMFLOCAL/tex/generic/config</code>, créez un fichier nommé
<code>luatexiniconfig.tex</code> ayant le contenu suivant.</p>

<pre><code>\begingroup
\catcode `\{=1
\catcode `\}=2
\expandafter\ifx\csname luatexversion\endcsname\relax
  \let\luatexversion\undefined
  \directlua{tex.enableprimitives('', tex.extraprimitives())}
\fi
\endgroup
</code></pre>

<p>Ensuite, trouvez l&#8217;arborescence <code>TEXMFDIST</code> (utilisez <code>kpsewhich --var-value</code>
au besoin), et copiez de cette arborescence vers <code>TEXMFLOCAL</code> les fichiers
suivants.</p>

<pre><code>tex/plain/config/luatex.ini
tex/plain/config/pdfluatex.ini
tex/latex/latexconfig/lualatex.ini
tex/latex/latexconfig/pdflualatex.ini
</code></pre>

<p>Éditez ensuite la copie présente dans <code>TEXMFLOCAL</code> de chacun de ces fichiers,
pour ajouter au tout début (juste après les commentaires initiaux) la ligne</p>

<pre><code>\input luatexiniconfig
</code></pre>

<p>Il faut maintenant mettre à jour la base de données des fichiers de TeX. Vu
que tous les fichiers créés sont dans <code>TEXMFLOCAL</code>, il suffit de se placer dans
ce répertoire et de taper</p>

<pre><code>mktexlsr .
</code></pre>

<p>Tout ceci est à effectuer une fois avant d&#8217;installer une version supérieure ou
égale à <code>0.39.0</code> de LuaTeX, par la méthode donnée dans le billet précédent.</p>

<h2>Le pourquoi du comment</h2>

<p>Sans la manipulation décrite ci-dessus, vous aurez une erreur au moment de
re-générer les formats (l&#8217;étape <code>fmtutil-sys</code>). En effet, les fichiers
d&#8217;initialisation des formats supposent qu&#8217;un certain nombre de primitives
fournies par e-TeX ou pdfTeX existent, ce qui est bien naturel vu qu&#8217;il sont
destinés à un moteur précis.</p>

<p>Or, depuis la version <code>0.39.0</code>, LuaTeX (en mode INI, c&#8217;est-à-dire sans format
pré-chargé) démarre avec exactement les même primitives que TeX82, sauf
<code>\directlua</code> en plus. Si on veut accéder aux nouvelles primitives, il faut
explicitement demander leur activation avec la fonction Lua
<code>tex.enableprimitives()</code>. Ceci présente deux avantages :</p>

<ul>
<li>si dans un futur distant on veut réellement remplacer pdfTeX par LuaTeX, on
peut (en utilisant le deuxième argument de <code>tex.enableprimitives()</code>) n&#8217;activer
que les primitives pdfTeX dans ce mode-là.</li>
<li>en activant les primitives, on peut si on veut (premier argument de
<code>tex.enableprimitives()</code>) leur ajouter un préfixe (par exemple
<code>\LuaTeXprimitive</code> au lieu de <code>\primitive</code>) pour éviter les conflits de noms
avec des macros déjà utilisés dans différents paquets.</li>
</ul>

<p>Pour plus de détails, voir les parties 2.1 et 4.1.14 d&#8217;un <a href="http://luatex.org/svn/trunk/manual/luatexref-t.pdf">version récente du
manuel LuaTeX</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Intégrer un LuaTeX récent à TeX Live</title>
		<link>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/</link>
		<comments>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 14:43:42 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[luatex]]></category>
		<category><![CDATA[texlive]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/</guid>
		<description><![CDATA[LuaTeX est une extension de TeX, activement développée, et destinée à (long)
terme à remplacer pdfTeX (l&#8217;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&#8217;intégrer une version de LuaTeX (la beta 0.25.4).
Cependant, pour le moment, il n&#8217;y a pas de mise à jour de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.luatex.org/">LuaTeX</a> est une extension de TeX, activement développée, et destinée à (long)
terme à remplacer <a href="http://www.tug.org/applications/pdftex/">pdfTeX</a> (l&#8217;extension de TeX utilisée par toutes les
distributions modernes pour compiler les documents LaTeX). Un des nouveautés de
<a href="http://www.tug.org/texlive/">TeX Live</a> 2008 est d&#8217;intégrer une version de LuaTeX (la beta 0.25.4).
Cependant, pour le moment, il n&#8217;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..<span id="more-47"></span></p>

<h2>Avertissements préliminaires</h2>

<ul>
<li>Pour les versions de LuaTeX supérieures ou égales à <code>0.39.0</code>, une étape
supplémentaire est requise (à effectuer une seule fois), décrite dans <a href="http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/">le
billet suivant</a>.</li>
<li>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.</li>
</ul>

<h2>Le how-to et certaines explications</h2>

<p>Pour une fois, c&#8217;est un peu plus qu&#8217;un « comment j&#8217;ai fait », puisqu&#8217;au moins
une autre personne a testé. La première chose à faire est bien sûr de récupérer
le binaire d&#8217;une version récente de LuaTeX. On en trouve pour Linux et Windows
sur la <a href="http://foundry.supelec.fr/frs/?group_id=10">page Gforge de LuaTeX</a>, et pour d&#8217;autres plateformes, mais avec
potentiellement un peu plus de délai, sur la <a href="http://luatex.org/download.html">page téléchagement de
LuaTeX</a>. (Attention, sur la page Gforge, l&#8217;ordre est trompeur et les
version les plus récentes sont en bas de la page).</p>

<p>Il faut maintenant intégrer ce binaire à votre TeX Live. Si vous avez accepté
les réglages par défaut lors de l&#8217;installation, vos binaires « normaux » de TeX
Live sont sous</p>

<pre><code>/usr/local/texlive/2008/bin/&lt;arch&gt;-linux
C:\Program Files\texlive\2008\bin\win32
</code></pre>

<p>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 <code>i386-linux-latest</code> ou <code>win32-latest</code> par exemple. (Adaptez
au besoin.)</p>

<p>Cet emplacement n&#8217;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&#8217;installer TeX Live n&#8217;importe où sur le disque, il faut que les
programmes aient un moyen de s&#8217;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&#8217;importe où.</p>

<p>Il faut ensuite ajouter ce répertoire à son <code>PATH</code>, avant le répertoire par
défaut de TeX Live. Je reviendrai là-dessus dans la partie spécifique au système
d&#8217;exploitation.</p>

<p>Il faut ensuite re-générer les formats. Si cette dernière phrase vous paraît
incongrue, un mot d&#8217;explication. Quand on utilise la commande <code>latex</code>, il y a en
fait (essentiellement) deux fichiers en jeu : le programme <code>pdftex</code> (ou
<code>pdftex.exe</code>) et le « format » <code>latex.fmt</code>. Ce dernier comprend des définitions
(comme par exemple celle de <code>\documentclass</code>) sous une forme « pré-compilée » et
très rapide à charger. Les fichiers <code>.fmt</code> 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).</p>

<p>C&#8217;est très simple, en ligne de commande on fait</p>

<pre><code>fmtutil-sys --byfmt luatex
fmtutil-sys --byfmt pdfluatex
fmtutil-sys --byfmt lualatex
fmtutil-sys --byfmt pdflualatex
</code></pre>

<p>(Muni des privilèges suffisants pour écrire dans les répertoire de TeX Live.
Pour un utilisateur d&#8217;Unix, ça peut impliquer l&#8217;usage de <code>sudo</code> où <code>su</code>.)</p>

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

<h3>Sous Linux, Mac OS, ou autre variante d&#8217;Unix</h3>

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

<pre><code>for l in pdfluatex lualatex pdflualatex texlua texluac; do
ln -s luatex $l; done
</code></pre>

<p>Hop, c&#8217;est tout. Vous avez remarqué <code>texlua</code> et <code>texluac</code> ? C&#8217;est pour utiliser
LuaTeX comme un simple interpréteur Lua (resp. un compilateur de Lua en
<em>bytecode</em>). Utile si vous voulez pratiquer tranquillement Lua, ou écrire des
scripts portable à utiliser dans le contexte de TeX (par exemple, <code>texdoc</code> est
un script interprété par <code>texlua</code> 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).</p>

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

<pre><code>for f in ../x86_64-linux/*; do ln -s $f; done
</code></pre>

<p>pour créer des liens symboliques de notre nouveau répertoire vers les fichiers
de l&#8217;ancien, et on peut ainsi ne garder que le nouveau dans le <code>PATH</code>.</p>

<p>Attention, si lors de l&#8217;installation vous aviez choisi l&#8217;option « ajouter des
liens symboliques dans les répertoires standard », oubliez tout ce que j&#8217;ai dit
précédemment sur le <code>PATH</code>. Placez simplement des liens symboliques vers
<code>.../bin/&lt;arch&gt;-latest</code> en amont de <code>/usr/local/bin</code> dans votre <code>PATH</code>. En
principe, <code>~/bin</code> fait très bien l&#8217;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&#8217;endroit
indiqué (et pas par exemple directement dans votre <code>~/bin</code>, car c&#8217;est ce qui
compte pour qu&#8217;il trouve ensuite les fichiers de TeX Live.</p>

<h3>Sous windows</h3>

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

<p>Si vous souhaitez n&#8217;avoir qu&#8217;un seule répertoire TeX Live dans votre <code>PATH</code>, 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.</p>

<h2>Dernières remarques</h2>

<p>LuaTeX est <strong>vraiment</strong> en bêta. Ne l&#8217;utilisez qu&#8217;à 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&#8217;un problème important. Elle
ne peut pas charger les fontes qui sont utilisée par défaut par LaTeX avec
<code>usepackage[T1]{fontenc}</code>. (Pour l&#8217;anecdote, ce n&#8217;est pas à proprement parler un
bug de LuaTeX : c&#8217;est une anomalie dans les fichiers <code>.tfm</code> 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&#8230;)</p>

<p>Au passage, si vous voulez tester <code>pdflualatex</code>, attention, suite à des progrès
importants réalisé par LuaTeX (par rapport à pdfTeX) en matière d&#8217;encodages
d&#8217;entrées et de fontes, <code>inputenc</code> et <code>fontenc</code> ne sont pas actuellement
compatibles avec LuaTeX. Il suffit de supprimer <code>inputenc</code> et d&#8217;encoder son
fichier en utf-8 pour régler le premier point. Pour le deuxième, on peut quand
même utiliser <code>fontenc</code> avec <code>T1</code> 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).</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sur l&#8217;avenir de (La)TeX</title>
		<link>http://weblog.elzevir.fr/2008/06/sur-lavenir-de-latex/</link>
		<comments>http://weblog.elzevir.fr/2008/06/sur-lavenir-de-latex/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 23:05:29 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[luatex]]></category>
		<category><![CDATA[xetex]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/?p=6</guid>
		<description><![CDATA[Suite à une discussion récente sur fctt,
je reformule ici quelques réflexions sur l&#8217;avenir de (La)TeX. La première
remarque est qu&#8217;il faut bien distinguer LaTeX en lui-même, et plus
particulièrement sa version actuelle, LaTeX2e, des outils basés sur TeX en
général. Je crois fortement à l&#8217;avenir d&#8217;outils reprenant les points forts de
TeX, mais à condition de révolutionner certains de [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à une discussion récente sur <abbr title="fr.comp.text.tex">fctt</abbr>,
je reformule ici quelques réflexions sur l&#8217;avenir de (La)TeX. La première
remarque est qu&#8217;il faut bien distinguer LaTeX en lui-même, et plus
particulièrement sa version actuelle, LaTeX2e, des outils basés sur TeX en
général. Je crois fortement à l&#8217;avenir d&#8217;outils reprenant les points forts de
TeX, mais à condition de révolutionner certains de leurs aspects, qui en
particulier feraient sans doute voler en éclats le LaTeX2e que nous
connaissons.</p>

<p>D&#8217;abord, quelques rappels historiques.
<span id="more-6"></span>
 TeX était sans doute le mieux qu&#8217;on
puisse faire à l&#8217;époque où il a été créé, et peut-être encore 10 ans après.
Aujourd&#8217;hui, il est vieux et porte les traces de l&#8217;époque de sa jeunesse : à ce
moment, ni pdf, ni unicode, ni opentype n&#8217;existaient : en fait, postscript non
plus, latin1 non plus, et sans doute aucun format vectoriel de police. Sur ces
points, le retard est en train d&#8217;être rattrapé (voire de l&#8217;avance prise) par
XeTeX, et une partie de LuaTeX.</p>

<p>Il est sans doute intéressant de noter que Microsoft a produit avec Word 2007
une police mathématique (Cambria Math) au format OpenType avec toutes les
informations métriques voulues pour composer des maths correctement.  Leurs
algo de composition mathématique sont ouvertement calqués sur ceux de TeX et
produisent un résultat de qualité comparable (pour les maths, le texte est
encore largement à la traîne). Pour l&#8217;instant, ni XeTeX ni LuaTeX ne gèrent
l&#8217;OpenType mathématique (mais ça ne va pas tarder à changer).</p>

<p>C&#8217;est à mon avis significatif sur le fait que TeX avait à une époque plusieurs
longueurs d&#8217;avance, puisqu&#8217;on le copie presque 30 ans après. Par contre, en le
copiant, on va un peu plus loin : il s&#8217;agit donc de ne pas se reposer sur ses
lauriers si TeX doit garder un rôle de leader. Des progrès importants sont en
cours dans ce sens avec XeTeX et LuaTeX.</p>

<p>Un autre point où TeX porte un peu la trace de son âge, c&#8217;est son manque
d&#8217;intégration au reste du monde en général. On a déjà parlé des grands
standards comme Pdf, PostScript, Unicode et OpenType, mais une foule d&#8217;autres
détails existent, comme le problème des formats d&#8217;images et des modes de
compilation, légitimement agaçants pour les utilisateurs.</p>

<p>Par ailleurs, on peut envisager et souhaiter des réformes profondes au niveau
de l&#8217;interface utilisateur et programmeur de TeX, allant jusqu&#8217;à la disparition
de TeX en tant que langage. En effet, ce dernier présente des particularités
incontournables (dans le sens où on ne peut pas les cacher à l&#8217;utilisateur),
comme le célèbre problème du verbatim dans les arguments de commandes, qui sont
profondément ancrées dans la structure du langage.</p>

<p>La moins profonde des réformes qu&#8217;on peut envisager est déjà en cours avec le
projet LuaTeX : il s&#8217;agit d&#8217;ouvrir certaines des routines internes de TeX au
programmeur. En effet, celui-ci est parfois bloqué par quelques hypothèses
codées en dur dans TeX, qui ne correspondent pas à la situation où il se
trouve, tant il est vrai que même Knuth ne pouvait anticiper toutes les
utilisations qu&#8217;on voudrait faire de TeX après le développement fabuleux qu&#8217;il
a connu.</p>

<p>Pour le moment, il s&#8217;agit, à certains points judicieusement choisis du
traitement d&#8217;un document par TeX, de rendre la main au programmeur. Ceci laisse
en place le flot d&#8217;exécution normal prévu par TeX. Or celui-ci est parfois très
contraignant, par exemple la notion de routine de sortie.</p>

<p>Au final, on aimerait donc dans l&#8217;idéal pourvoir complètement désosser TeX, et
n&#8217;en garder que les parties les plus intéressantes : algorithmes de césure, de
construction des paragraphes, de composition mathématique, structures de
données particulièrement adaptées (listes, boîtes) éventuellement en les
améliorant, mais en étant libre de les agencer comme on veut. C&#8217;est un travail
particulièrement énorme, vu le caractère très monolithique de TeX tant dans sa
conception que dans son implémentation.</p>

<p>On peut alors rêver d&#8217;un système en plusieurs couches comme suit : un cœur
centré sur des composants de TeX liés entre eux de façon souple. Des <em>back-end</em>
produisant un peu ce qu&#8217;on veut : Pdf (X)Html, MathML, etc.  Un <em>front-end</em> en
deux couches : l&#8217;une destinée au programmeur, l&#8217;autre à l&#8217;utilisateur final.</p>

<p>En effet, actuellement les deux disposent d&#8217;un langage commun qui ne satisfait
réellement personne. Du point de vue des deux, il est trop complexe et parfois
difficile à prévoir, et pour le programmeur il manque de la souplesse que
savent fournir des langages modernes, sans même parler du concept de séparation
lecture/développement/exécution qui est pour beaucoup dans la complexité du
langage actuel.</p>

<p>Notons que cette séparation en couches était plus ou moins prévue dès le départ
par Knuth avec la notion de format, et est aussi un des points importants du
projet LaTeX3. Enfin, avec des efforts, un bonne conception de ces deux couches
permettrait peut-être d&#8217;éviter que l&#8217;utilisateur de retrouve confronté à des
messages d&#8217;erreurs que seul le programmeur expérimenté peut comprendre à défaut
d&#8217;apprécier.</p>

<p>Après ce qui peut ressembler à un réquisitoire, quelques réflexions sur la
place de TeX dans le paysage actuel. Il est le seul, parmi les outils destinés
à produire des documents de bonne qualité typographique, à fonctionner comme un
compilateur de documents, et à être réellement programmable. Ceci le rend très
difficile à comparer à d&#8217;éventuels concurrents.</p>

<p>Ses atouts essentiels, conséquence des précédents, est qu&#8217;il peut automatiser
de nombreuses tâches comme la gestion de des références au sens large, notes de
bas de pages, etc, mais aussi trouver automatiquement l&#8217;optimum typographique
sous des contraintes données dans de nombreuses circonstances, là où des outils
comme Quark Xpress ou Adobe InDesign demandent une gestion et un ajustement
manuel. Il peut aussi beaucoup plus facilement d&#8217;intégrer dans des flots de
traitement automatisé de documents (penser XML, Docbook, texinfo).</p>

<p>Pour conclure, tant par la place à part qu&#8217;il occupe dans le paysage de la
typographie assistée par ordinateur, l&#8217;intérêt constant de ses algorithmes
typographiques, les projets existants visant à mieux l&#8217;insérer dans le monde
informatique moderne, que par goût personnel, je crois fortement à l&#8217;avenir
d&#8217;une forme de TeX.</p>

<p>Mais le monde de TeX a été très conservateur pendant une longue période,
choisissant toujours la stabilité au détriment de l&#8217;innovation. Il a donc dans
un sens du retard à rattraper, et je pense et espère que les évolutions en
cours avec XeTeX et plus encore LuaTeX ne sont que le début d&#8217;une révolution,
qui promet d&#8217;être excitante et riche.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/06/sur-lavenir-de-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
