# LuaTeX

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 ; 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).

## 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\TeXt. 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.