LuaTeX

LuaTeX
Description de l'image LuaTeX logo.svg.
Description de l'image LuaTeX Output DE.svg.
Informations
Développé par Taco Hoekwater
Hartmut Henkel
Hans Hagen
Première version Voir et modifier les données sur Wikidata
Dernière version 1.16.0 ()[1]Voir et modifier les données sur Wikidata
Dépôt gitlab.lisn.upsaclay.fr/texlive/luatexVoir et modifier les données sur Wikidata
Écrit en CVoir et modifier les données sur Wikidata
Système d'exploitation Type Unix et Microsoft WindowsVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Type Paquet de macro TeX (d)Voir et modifier les données sur Wikidata
Licences GNU GPL
Site web www.luatex.orgVoir et modifier les données sur Wikidata

LuaTeX est un système de composition informatique dérivé de Tex utilisant le langage de script Lua. Il a été choisi pour remplacer pdfTeX[2] ; qui n'est plus développé pour cette raison. La version 2.9 de MiKTeX inclut LuaTeX pour la première fois (version 0.60.2[3]).

Description

LuaTeX présente une approche différente des autres moteurs. Grâce à l’inclusion du langage de script Lua, il se passe de bibliothèque externe, ce qui assure son indépendance et permet une grande flexibilité. L'utilisation de Lua offre un confort de développement impressionnant et permet d'ouvrir le champ des possibles. Grâce à Lua, le moteur de composition est « ouvert », et il existe des callbacks qui permettent d'obtenir des résultats divers.

Cependant, cela a un prix. Premièrement, LuaTeX n'est pas aussi rapide que ses cousins. Ensuite, pour en tirer tout le potentiel, il faut utiliser des aspects bas niveau de programmation. L'addition de scripts Lua est très intéressante, mais la puissance de LuaTeX ne se révèle vraiment que lorsque ceux-ci sont pleinement intégrés.

Le paysage

Il existe actuellement deux autres moteurs de composition dans le monde de TeX :

Le moteur pdfTeX, une extension stable de TeX, permet de générer directement un fichier PDF, avec les fonctionnalités avancées du format PDF. Il est rapide et robuste. Cependant, sa gestion des fontes OpenType demeure très limitée.

Et XeTeX qui, lui, supporte l'encodage Unicode, de même que les fontes OpenType (à l’aide de bibliothèques externes). Ce moteur s'intègre très bien dans l'infrastructure des distributions TeX et supporte les extensions (packages) de macros facilement, puisqu'il n'y pas de changements fondamentaux concernant l'interface et les fonctionnalités.

Exemple de document

Voici un exemple en LuaLaTeX : à gauche le code source, qui peut être produit avec n’importe quel éditeur de texte ; à droite la sortie correspondante, indépendante du type d’écran ou d’imprimante sur lequel elle est générée.

Code source d’un document en LuaLaTeX Document compilé
%% Ce code source doit être enregistré en UTF-8 et
%% compilé avec lualatex.

\documentclass[a4paper]{scrartcl}

\usepackage[french]{babel}

% Ou:
% \usepackage{polyglossia}
% \setdefaultlanguage{french}

\usepackage{fontspec}
\usepackage{unicode-math}
\usepackage{luacode}

\setromanfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont{Inconsolata}[Scale=0.9]
\setmathfont{Latin Modern Roman}

\title{Document test}
\author{Boris Godounov}
\date{29 février 2020}

\begin{document}

\maketitle
\tableofcontents

\section{Polices de caractères}
À la différence de \TeX{} ou de pdf\TeX{}, Lua\TeX{} permet d’utiliser
les polices installées sur le système d’exploitation comme ici
Linux Libertine (police de labeur), Linux Biolinum (titres),
Inconsolata (police à chasse fixe)  et Latin Modern (pour
les mathématiques).

\section{Formules}
Même si l’on n’a pas besoin d’écrire de formules, Lua\TeX{} se révèle très
utile et simple d’utilisation : graphiques, tableaux, références croisées
de toutes sortes, bibliographie ou index ne posent aucun problème.

L’écriture de formules requiert un peu plus de travail, mais voici un exemple
simple :

\begin{displaymath}
    E = \frac{m_{0} c^{2}}{\sqrt{1-v^{2}/c^{2}}}
\end{displaymath}

\section{Programmation en Lua}
Lua\TeX{} est en outre capable d’exécuter du code Lua depuis le fichier
source en Lua\LaTeX{} ou Con\TeX{}t. Par exemple, \texttt{directlua}
permet de générer le nombre aléatoire \directlua{tex.print(math.random())}.
Il~n’est pas non plus nécessaire de se rappeler la valeur du nombre $π$ :
\directlua{tex.print(math.pi)}.

En recourant à l’environnement \texttt{luacode}, vous pouvez même compter,
comme ici jusqu’à soixante :
\begin{luacode}
  for x=1,60 do
    tex.print(x)
  end
\end{luacode}
.

Ici se termine le document de test.

\end{document}

Versions

La distribution TeX Live 2019 contient la version 1.10 de LuaTeX.

La version 0.0 a été présentée lors de la conférence du TeX User Group (TUG) en 2005 à Wuhan en Chine.

Notes et références

  1. « Final sync with TeXLive 2023 -- LuaTeX 1.16.0 », (consulté le )
  2. (en) pdfTeX et LuaTeX.
  3. (en) Page d'accueil du projet MiKTeX.

Annexes

Articles connexes

Bibliographie

Liens externes