LuaTeX is a TeX-based computer typesetting system which started as a version of pdfTeX with a Lua scripting engine embedded. After some experiments it was adopted by the TeX Live distribution as a successor to pdfTeX (itself an extension of ε-TeX, which generates PDFs).[2][3][4] Later in the project some functionality of Aleph was included (esp. multi-directional typesetting). The project was originally sponsored by the Oriental TeX project, founded by Idris Samawi Hamid, Hans Hagen, and Taco Hoekwater.
Objective of the project
The main objective of the project is to provide a version of TeX where all internals are accessible from Lua. In the process of opening up TeX much of the internal code is rewritten. Instead of hard coding new features in TeX itself, users (or macro package writers) can write their own extensions.
LuaTeX offers support for OpenType fonts with external modules. One of them, written in Lua, is provided by the LuaTeX team, but support for complex scripts is limited. Since 2020 LuaTeX includes the HarfBuzz engine for correct rendering of complex scripts using OpenType.[5]
An alternate approach can be found on GitHub.[6]
A related project is MPLib (an extended MetaPost library module), which brings a graphics engine into TeX.[7]
The LuaTeX team consists of Luigi Scarso, Taco Hoekwater, Hartmut Henkel and Hans Hagen.
Versions
The first public beta was launched at TUG 2007 in San Diego. The first formal release was planned for the end of 2009, and the first stable production version was released in 2010. Version 1.00 was released in September 2016 during ConTeXt 2016. Version 1.12 was released for TeXLive 2020.[8]
As of October 2010[update], both ConTeXt mark IV and LaTeX with extra packages (e.g. luaotfload, luamplib, luatexbase, luatextra) make use of new LuaTeX features. (When LuaTeX is used with the LaTeX format, it is sometimes called "LuaLaTeX".) Both are supported in TeX Live 2010 with LuaTeX 0.60, and in LyX.[9] Special support in plain TeX is still under development.
Further development takes place as LuaMetaTeX in connection with the ConTeXt project.[8][10]