LuaTeX

Computersatz-System mit eingebetteter Lua-Scripting-Engine
(Weitergeleitet von LuaLaTeX)

LuaTeX ([ˈluaˌtɛχ]) ist ein Textsatzsystem, das über die darin eingebettete Skriptsprache Lua gesteuert werden kann. LuaTeX gilt als Nachfolger[4] des in seiner Entwicklung weitgehend abgeschlossenen pdfTeX.[5][6] Als Eingabekodierung wird standardmäßig UTF-8 verwendet. LuaTeX ist in der Lage, OpenType- und TrueType-Schriftarten sowohl für den Text- als auch für den Mathematiksatz einzusetzen. Am 27. September 2016 erschien die erste stabile Version 1.0.0.[7][8][9]

LuaTeX

LuaTeX-Logo
Basisdaten

Entwickler LuaTeX-Team
(Taco Hoekwater,
Hartmut Henkel,
Hans Hagen)
Erscheinungsjahr 2007
Aktuelle Version 1.16.0[1]
(20. März 2023)
Betriebssystem Unix-ähnliches System, Microsoft Windows[2]
Programmier­sprache C, Lua, TeX
Kategorie Schriftsatz
Lizenz GNU General Public License, Version 2[3]
www.luatex.org

Geschichte

Bearbeiten

Schon vor pdfTeX und LuaTeX gab es Bestrebungen, das TeX-System zu verbessern. Die 1994 veröffentlichte Erweiterung ε-TeX erhöhte die Anzahl von ehemals 256 TeX-internen Registern (bedingt durch die alte 8-Bit-Adressierung) auf nun 32.768.[10][11][12] Eine Zeichencodierung in 16-Bit-Unicode, die eine breite Palette von Alphabeten abdeckt, wurde mit der TeX-Erweiterung Ω (Omega) eingeführt.[13][14] Obwohl Ω viele weitere innovative Konzepte beinhaltete, kam seine Entwicklung zum Erliegen und der Code wurde im Jahr 1991 eingefroren. Eine weitere Entwicklung war א (Aleph). Dessen Ziel war eine TeX-Erweiterung, die die Ω- und ε-TeX-Funktionalitäten vereint. Hauptmerkmal von א ist die Unterstützung von bidirektionalem Schriftsatz.[11][15]

Das neu geschaffene LuaTeX sollte die Funktionalitäten von pdfTeX, ε-TeX, Ω und א in sich vereinen.

Die Entwicklung von LuaTeX wird unterstützt durch das Oriental TeX Project der Colorado State University, die Nederlandstalige TeX Gebruikersgroep (niederländischsprachige TeX User Group, NTG) und die TeX Users Group (TUG). Der TeX Development Fund der TUG gewährt dem LuaTeX-Projekt als „lang gehegtem Wunsch nach einer in TeX eingebetteten Allzweck-Programmiersprache“[16] einen Großteil seiner Mittel. Diese höchste Förderpriorität[17] unterstreicht die besondere Bedeutung von LuaTeX für die aktuelle TeX-Entwicklung.

Einen Plan zur LuaTeX-Entwicklung hatte Hans Hagen im Februar 2009 vorgestellt.[18] Ab Version 0.30 bekamen stabile und produktiv verwendbare Versionen (jeweils vorgesehen für TeX Live) die Versionsnummern 0.X0. Die Fertigstellung von Version 0.80 zur ConTeXt-Konferenz 2014 gelang nicht; sie erschien erst im Juni 2015. Nach Hagens ursprünglicher Vorstellung sollte Version 1.0 genau 30 Jahre nach dem Erscheinen von TeX82 zur TUG 2012 veröffentlicht werden, stattdessen wurde geplant,[19] diese erst im September 2016 zur 10. ConTeXt-Konferenz in den Niederlanden freizugeben, was auch passierte.[7][8] Seitdem werden die Versionsnummern nur noch in Schritten von 1.xy erhöht und sollen hauptsächlich Bugfixes beinhalten.

Die 2019 erschienene Version 1.10 stellte einen vorläufigen Endpunkt in der Entwicklung dar, es soll nur noch Fehlerbehebungen und eventuell Optimierungen geben.[20] Seit der Version für TeX Live 2020 ist die text-shaping-Bibliothek HarfBuzz integriert.[21] Eine Weiterentwicklung findet als LuaMetaTeX im Zusammenhang mit dem ConTeXt-Projekt statt.[19][22]

Verwendung in TeX Live

Bearbeiten

In der TeX-Distribution TeX Live wurde LuaTeX erstmals 2008 in der Snapshot-Version 0.25.4 aufgenommen.[23][24] In weitere TeX-Live-Versionen wurde das jeweils aktuelle LuaTeX integriert: Version 0.40.6[25] in TeX Live 2009,[23][26] Version 0.60.2[27] in TeX Live 2010,[23][28] Version 0.70.1[29] in TeX Live 2011,[30] Version 0.70.2 in TeX Live 2012,[23] Version 0.76.0[31] in TeX Live 2013,[23][32] Version 0.79.1[33] in TeX Live 2014,[23] Version 0.80.0 in TeX Live 2015,[23] Version 0.95.0[34] in TeX Live 2016,[23] Version 1.0.4 in TeX Live 2017,[23] Version 1.07.0[35] in TeX Live 2018, Version 1.10.0 in TeX Live 2019,[23] Version 1.12.0 in TeX Live 2020[36] sowie Version 1.13.0 in TeX Live 2021.[37] In TeX Live 2022 ist die Version 1.15.0 enthalten.[38] Die TeX-Live-Versionen sind ebenso wie die auf den ConTeXt-Konferenzen veröffentlichten als die jeweils stabilen Versionen zu betrachten. Alle Versionen zwischen den jährlichen Releases gelten als Beta-Versionen.[20]

Versionsgeschichte

Bearbeiten

Die Veröffentlichung der wichtigsten Entwicklungsschritte des Systems erfolgte jeweils bei Tagungen der TeX-Anwendergruppen:

Version Datum Tagung Neuerungen
0.10[39] 18. Juli 2007 TUG 2007 in San Diego erste öffentliche Beta-Version
0.29[40] 18. Juli 2008 TUG 2008 in Cork weitere Beta-Version
0.40[41] 22. Apr. 2009 BachoTeX 2009 in Bachotek (bei Brodnica) mit den Mathematikerweiterungen
0.43[42] 19. Aug. 2009 EuroTeX 2009 in Den Haag ConTeXt Mark IV und LaTeX mit Zusatzpaketen (z. B. luaotfload, luamplib, luatexbase, luatextra) nutzen LuaTeX-Funktionen; besondere Unterstützung in TeX noch in Entwicklung
0.50[43] 24. Dez. 2009 erste „stabile“ Beta-Version
0.60[44] 4. Apr. 2010 ursprünglich für TeX Live 2010 vorgesehen
0.80[45] 13. Juni 2015 neue Bibliothek newtokenlib; enthalten in TeX Live 2015
1.0[46] 27. Sep. 2016 ConTeXt-Konferenz 2016 in Kalenberg (bei Steenwijkerland) erste stabile Version
1.08[47] 28. Aug. 2018 ConTeXt-Konferenz 2018 in Sibřina (bei Prag) Binärmodus in MPLib entfernt, Poppler durch integrierte Bibliothek ersetzt
1.15[38] 31. Dez. 2021 stabile Version; enthalten in TeX Live 2022

Merkmale von LuaTeX

Bearbeiten

LuaTeX ist aus einer Version von pdfTeX entwickelt worden, die um eine eingebettete Lua-Scripting-Engine erweitert worden war. Nach einigen Tests wurde es zum Nachfolger von pdfTeX (einer Kombination aus TeX und ε-TeX, die PDF-Dateien direkt erzeugt) bestimmt. In einem späteren Entwicklungsstadium wurde die Hauptfunktionalität von א, das Setzen von bidirektionalen Schriften, integriert.

Das Hauptziel des Projektes war, eine TeX-Version zur Verfügung zu stellen, in der alle Interna über Lua zugänglich sind. Im Entwicklungsprozess wurde ein großer Teil des internen TeX-Codes umgeschrieben. Statt in TeX fest codierte Eigenschaften zu verwenden, können die Nutzer oder Makro-Entwickler ihre eigenen Erweiterungen selbst schreiben.

LuaTeX bietet native Unterstützung für OpenType-Schriften an, kann aber auch TrueType-Schriften laden. Im Gegensatz zu XeTeX wird nicht durch System-Funktionen auf die Schriften zugegriffen, sondern über eine auf FontForge basierende Bibliothek.

Ein mit LuaTeX zusammenhängendes Projekt ist MPLib (ein erweitertes MetaPost-Modul), das in TeX eine Grafik-Engine zur Verfügung stellt.

Die Makropakete LaTeX und ConTeXt lassen sich zusammen mit LuaTeX nutzen. Um LaTeX-Quelltexte zu verarbeiten, kann unmittelbar das Programm lualatex aufgerufen werden. Im Vergleich zu pdfLaTeX sind einige Besonderheiten zu beachten. Die Standardcodierung der Quelltexte ist UTF-8, so dass eine spezielle Angabe der Eingabekodierung nicht mehr benötigt wird. Deshalb darf das Paket inputenc nicht benutzt werden. Die Auswahl von Schriften erfolgt mit dem Paket fontspec, damit kann jede auf dem System installierte Schriftart eingebunden werden. Aus diesem Grund darf das Paket fontenc nicht geladen werden.

Die ConTeXt-Version Mark IV basiert auf LuaTeX. Mark-IV-Quelltexte müssen mit LuaTeX übersetzt werden. Standardmäßig wird beim Aufruf von context LuaTeX verwendet. Auch für diese Quelltexte ist die Standardcodierung UTF-8.

Aufbau eines Dokuments

Bearbeiten

Im Folgenden ist ein LuaLaTeX-Beispiel dargestellt. Auf der linken Seite steht der Quelltext, der mit einem beliebigen Texteditor erstellt werden kann. Rechts ist die Ausgabe dieses Beispiels dargestellt, die unabhängig vom Bildschirm- oder Druckertyp ist, auf dem sie erzeugt wird.

Quelltext eines LuaLaTeX-Dokuments Ausgabe des kompilierten Dokuments
%% Dieser Quelltext ist in der Kodierung UTF-8 zu speichern und mit lualatex
%% zu kompilieren.

\documentclass[a4paper]{scrartcl}

\usepackage[ngerman]{babel}

% Oder:
% \usepackage{polyglossia}
% \setdefaultlanguage[spelling=new, babelshorthands=true]{german}

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

\setromanfont{Cambria}
\setsansfont{Calibri}
\setmonofont{Consolas}
\setmathfont{Cambria Math}

\title{Ein Testdokument}
\author{Otto Normalverbraucher}
\date{15. Januar 2014}

\begin{document}

\maketitle
\tableofcontents

\section{Schriftarten}
Mit Lua\TeX{} lassen sich in Windows die systemeigenen Schriftarten verwenden,
wie zum Beispiel Cambria, die über einen großen Satz mathematischer Zeichen für
die Formeldarstellung verfügt, oder auch \textsf{Calibri} und \texttt{Consolas}.

\section{Formeln}
Lua\TeX{} ist auch ohne Formeln sehr nützlich und einfach zu verwenden. Grafiken,
Tabellen, Querverweise aller Art, Literatur- und Stichwortverzeichnis sind
kein Problem.

Formeln sind etwas schwieriger, dennoch hier ein einfaches Beispiel:

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

\section{Lua-Code}
Lua\TeX{} kann aber auch Lua-Programmcode ausführen. So erzeugt man zum Beispiel
mit \texttt{directlua} die Zufallszahl \directlua{tex.print(math.random())}.
Auch die Kreiszahl $π$ muss man nicht mehr auswendig wissen, sie hat den Wert
\directlua{tex.print(math.pi)}.

Mithilfe der \texttt{luacode}-Umgebung kann man sogar zählen, wie hier bis Sechzig:
\begin{luacode}
  for x=1,60 do
    tex.print(x)
  end
\end{luacode}

Hier ist der Schluss des Testdokuments.

\end{document}
 

Literatur

Bearbeiten
Bearbeiten
Commons: LuaTeX – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

Bearbeiten
  1. Final sync with TeXLive 2023 -- LuaTeX 1.16.0. 20. März 2023 (abgerufen am 29. März 2023).
  2. Downloads. (englisch, abgerufen am 6. August 2018).
  3. luatex – The LuaTEX engine. (englisch, abgerufen am 6. August 2018).
  4. Robin Fairbairns: What are XeTeX and LuaTeX? In: Frequently Asked Question List for TeX. 25. Mai 2018, abgerufen am 22. Juni 2018 (englisch).
  5. Robin Fairbairns: What is pdfTeX? In: Frequently Asked Question List for TeX. 24. Mai 2018, abgerufen am 22. Juni 2018 (englisch).
  6. Ein anderes Nachfolgesystem von pdfTeX ist XeTeX.
  7. a b Jürgen Fenn: LuaTeX 1.0.0 – Premiere als stabile Version. In: Heise online. 29. September 2016, abgerufen am 30. September 2016.
  8. a b Hans-Joachim Baader: LuaTeX 1.0.0 erschienen. In: Pro-Linux. 30. September 2016, abgerufen am 1. Oktober 2016.
  9. Hans Hagen, Hartmut Henkel, Taco Hoekwater, Luigi Scarso: [luatex] Luatex 1.0.0 announcement. In: LuaTeX-Mailingliste. 27. September 2016, abgerufen am 2. Januar 2024 (englisch).
  10. Peter Breitenlohner: The ε-TeX manual. (PDF) The NtS Team, 2. Februar 1998, abgerufen am 6. Oktober 2016 (englisch).
  11. a b Frank Mittelbach: E-TeX. Guidelines for Future TeX Extensions—revisited. (PDF; 641 kB). In: TUGboat. Volume 34, 2013, No. 1, S. 47–63, TUG’s TeX Development Fund committee, ISSN 0896-3207.
  12. Robin Fairbairns: What is e-TeX? In: UK List of TeX Frequently Asked Questions on the Web (UK TeX FAQ). 13. Juli 2011, abgerufen am 6. Oktober 2016 (englisch).
  13. John Plaice, Yannis Haralambous: The latest developments in Ω. (PDF; 1,65 MB). In: TUGboat. Volume 17, 1996, No. 2, S. 181–183, TUG’s TeX Development Fund committee, ISSN 0896-3207.
  14. Robin Fairbairns: Omega and Aleph. In: UK List of TeX Frequently Asked Questions on the Web (UK TeX FAQ). Abgerufen am 6. Oktober 2016 (englisch).
  15. Aleph. In: ConTeXt WiKi. ConTeXtGarden, 20. November 2012, abgerufen am 6. Oktober 2016 (englisch).
  16. A roadmap for TEX development. (PDF; 84 kB). In: TUGboat. Volume 28, 2007, No. 3, S. 375 f., TUG’s TeX Development Fund committee, ISSN 0896-3207.
  17. TEX Development Fund 2009 report. (PDF; 59 kB). In: TUGboat. Volume 30, 2009, No. 1, S. 148, TUG’s TeX Development Fund committee, ISSN 0896-3207.
  18. Hans Hagen: The State of LuaTeX. (PDF; 58 kB) Dante 2009, abgerufen am 30. September 2016 (englisch).
  19. a b Roadmap. luatex.org, abgerufen am 14. Juli 2023 (englisch).
  20. a b LuaTeX Reference Manual, Introduction. Abgerufen am 22. August 2024.
  21. Karl Berry, Editor: The TeX Live Guide—2024. In: tug.org. März 2024, abgerufen am 31. August 2024.
  22. luametatex. In: GitHub. Abgerufen am 14. Juli 2023 (englisch).
  23. a b c d e f g h i j Vgl. die jeweiligen ausführbaren LuaTeX-Dateien in TeX Live; Download vom TUG-Server.
  24. Jürgen Fenn: TeX-Distribution TeX Live 2008 veröffentlicht. In: Heise online. 3. September 2008, abgerufen am 30. September 2016.
  25. Taco Hoekwater: Luatex beta 0.40.6. In: LuaTeX-Mailingliste. 25. Juni 2009, abgerufen am 30. September 2016 (englisch).
  26. Jürgen Fenn: TeX-Distribution TeX Live 2009 veröffentlicht. In: Heise online. 9. November 2009, abgerufen am 30. September 2016.
  27. Taco Hoekwater: Luatex 0.60.2 announcement. In: LuaTeX-Mailingliste. 1. Juli 2010, abgerufen am 30. September 2016 (englisch).
  28. Jürgen Fenn: TeX Live 2010 veröffentlicht. In: Heise online. 10. September 2010, abgerufen am 30. September 2016.
  29. Taco Hoekwater: Luatex 0.70.1 announcement. In: LuaTeX-Mailingliste. 19. Mai 2011, abgerufen am 30. September 2016 (englisch).
  30. Jürgen Fenn: TeX Live 2011 im Anmarsch. In: Heise online. 21. Juli 2011, abgerufen am 30. September 2016.
  31. Taco Hoekwater: Luatex 0.76.0 announcement. In: LuaTeX-Mailingliste. 5. April 2013, abgerufen am 30. September 2016 (englisch).
  32. Moritz Förster: Jährliches Update für TeX Live. In: Heise online. 22. Juni 2013, abgerufen am 30. September 2016.
  33. Taco Hoekwater: Luatex 0.79.1 announcement. In: LuaTeX-Mailingliste. 29. März 2014, abgerufen am 30. September 2016 (englisch).
  34. Luigi Scarso: Luatex 0.95.0 announcement. In: LuaTeX-Mailingliste. 6. Juni 2016, abgerufen am 30. September 2016 (englisch).
  35. Luigi Scarso: Luatex 1.07.0 announcement. In: LuaTeX-Mailingliste. 19. April 2018, abgerufen am 6. August 2018 (englisch).
  36. Luigi Scarso: Luatex 1.12.0 announcement. In: LuaTeX-Mailingliste. 30. März 2020, abgerufen am 4. Mai 2020 (englisch).
  37. Luigi Scarso: Luatex 1.13.0 announcement. In: LuaTeX-Mailingliste. 28. März 2021, abgerufen am 23. April 2021 (englisch).
  38. a b Luigi Scarso: Luatex 1.15.0 announcement. In: LuaTeX-Mailingliste. 3. April 2022, abgerufen am 14. April 2022 (englisch).
  39. Taco Hoekwater: Beta 0.10. In: LuaTeX-Mailingliste. 18. Juli 2007, abgerufen am 6. August 2018 (englisch).
  40. Taco Hoekwater: Luatex beta 0.29.0 released. In: LuaTeX-Mailingliste. 18. Juli 2008, abgerufen am 6. August 2018 (englisch).
  41. Taco Hoekwater: luatex beta 0.40.0. In: LuaTeX-Mailingliste. 22. April 2009, abgerufen am 6. August 2018 (englisch).
  42. Taco Hoekwater: Luatex 0.43.0 announcement. In: LuaTeX-Mailingliste. 19. August 2009, abgerufen am 6. August 2018 (englisch).
  43. Taco Hoekwater: Luatex 0.50.0 announcement. In: LuaTeX-Mailingliste. 24. Dezember 2009, abgerufen am 6. August 2018 (englisch).
  44. Taco Hoekwater: Luatex 0.60.0 announcement. In: LuaTeX-Mailingliste. 4. April 2010, abgerufen am 6. August 2018 (englisch).
  45. Luigi Scarso: Luatex 0.80.0 announcement. In: LuaTeX-Mailingliste. 13. Juni 2015, abgerufen am 6. August 2018 (englisch).
  46. Luigi Scarso: Luatex 1.0.0 announcement. In: LuaTeX-Mailingliste. 27. September 2016, abgerufen am 6. August 2018 (englisch).
  47. Luigi Scarso: LuaTeX 1.08.0 announcement. In: LuaTeX-Mailingliste. 31. August 2018, abgerufen am 20. September 2019 (englisch).