LuaTeX für den LaTeX-Benutzer: eine Einführung5
Das ist ein Gastbeitrag von Arthur Reutenauer. Ursprünglich erschienen im TUGBoat. Ich bedanke mich herzlich für die Erlaubnis, den Beitrag hier veröffentlichen zu dürfen.
Zusammenfassung
LuaTeX, die TeX-Erweiterung, die die Skriptsprache Lua und die Ω-Erweiterungen beinhaltet, existiert schon seit drei Jahren und wurde in die Distribution TeXlive 2008 mit aufgenommen. Die LaTeX Pakete für LuaTeX sind ziemlich unbekannt und es scheint eine Kluft zwischen LuaTeX und den LaTeX Benutzern zu geben, denn die Hauptentwickler von LuaTeX sind sehr stark in der Entwicklung von ConTeXt involviert. Dieser Artikel ist der Anfang, diese Unterschiede zu überbrücken.
1 Einführung
LuaTeX ist die TeX-Erweiterung, die sowohl Lua als auch die Fähigkeiten von Ω beinhaltet. Sie wurde so programmiert, dass man über definierte Einsprungspunkte (callbacks in Lua genannt) mit TeXs internen Algorithmen interagieren kann, die nun mit reinem Lua-Code neuprogrammiert werden können. Die größte Stärke von LuaTeX jedoch befindet sich tief im Inneren und ist nur für Makroprogrammierer zugänglich. Diese Makros wurden in den letzten Jahren für ConTeXt entwickelt und erst neuerdings für LaTeX. Ich werde eine kurze Beschreibung einiger dieser LaTeX-Pakete geben.
2 \ifluatex
Das Paket ifluatex stellt die Bedingung \ifluatex zur Verfügung. Mit ihrer Hilfe kann man überprüfen, ob LuaTeX oder ein anderes TeX-Programm benutzt wird.
3 Eingabekodierungen
LuaTeX liest die Eingaben in UTF-8 Kodierung und es ist sehr empfehlenswert, diese Kodierung auch zu benutzen, um den vollen Vorteil von LuaTeX auszuschöpfen. Für Benutzer, die 8-Bit Kodierungen wie Latin-1 oder KOI-8 benötigen oder weiterbenutzen möchten, emuliert das Paket luainputenc das Verhalten des Standardpakets inputenc in LuaTeX. Es erkennt alle Kodierungen, die das inputenc-Paket kennt und kann daher, mit wenigen Einschränkungen, für ältere Dokumente genutzt werden.
4 Fonts
[Anmerkung von Patrick: bitte die Kommentare zum Artikel beachten!]
Eines der ausgefeiltesten Pakete für die Benutzung mit LuaLaTeX ist luaotfload. In diesem Abschnitt werde ich die Linux Libertine Fonts (http://linuxlibertine.sourceforge.net) als Beispiel benutzen. Diese Schriftarten haben viele Eigenschaften, die die OpenType Fähigkeiten demonstrieren. Ich gehe im Weiteren davon aus, dass die Schriftdateien für TeX verfügbar sind (z.B. im aktuellen Verzeichnis liegen) und dass die vier Schriftschnitte (Antiqua, Kursiv, Fett und Fettkursiv) wie folgt benannt sind: LinLib-Re.otf, LinLib-It.otf, LinLib-Bd.otf und LinLib-BI.otf.
luaotfload implementiert eine XeTeX-ähnliche Syntax für \font, so dass Befehle wie \font\librm="LinLib-Re" die Schriftart laden und alle nachfolgende Befehle \librm auf diese Schriftart umschalten. Das Beispiel \font\librmliga="LinLib-Re:script=latn:+liga" lädt dieselbe Schriftart und aktiviert das Feature liga aus dem lateinischen Schreibsystem. Andere nützliche OpenType Features sind
- smcp für Kapitälchen (small caps)
- onum für Mediävalziffern (old style numerals)
- subs für Tiefergestellt (subscript)
- sups für Hochgestellt (superscript)
Hier folgt eine vollständige NFSS-Deklaration der Linux Libertine Familie für LaTeX:
\DeclareFontFamily{T1}{libertine}{}
\DeclareFontShape{T1}{libertine}{m}{n}{<-> "LinLib-Re:+liga"}{}
\DeclareFontShape{T1}{libertine}{m}{sc}{<-> "LinLib-Re:+liga:+smcp"}{}
\DeclareFontShape{T1}{libertine}{m}{it}{<-> "LinLib-It:+liga"}{}
\DeclareFontShape{T1}{libertine}{bx}{n}{<-> "LinLib-Bd:+liga"}{}
\DeclareFontShape{T1}{libertine}{bx}{it}{<-> "LinLib-BI:+liga"}{}
Nachdem der Befehl \libertine wie folgt definiert wurde:
\newcommand\libertine{\fontfamily{libertine}\selectfont}
Können wir \libertine benutzen, um auf die Libertine Familie umzuschalten.
Weitere Beispiele von LaTeX mit LuaTeX werden auf http://code.google.com/p/mingyue gesammelt.
Arthur Reutenauer
GUTenberg, France
arthur dot reutenauer (at) normalesup dot org
Übersetzung aus dem Englischen: Patrick Gundlach

5 Kommentare zu "LuaTeX für den LaTeX-Benutzer: eine Einführung"
pgundlach schrieb am 07.01 um 19:57 Uhr:
Ein Kommentar von Élie Roux, (elie.roux <at> telecom-bretagne.eu):
the article about the fonts is a bit outdated: the fonts should be loaded with luaotfload (development here: http://github.com/mpg/luaotfload), as http://code.google.com/p/mingyue is stopped. Also if you want to use Linlibertine, it would be better to use
\DeclareFontFamily{EU2}{libertine}{} \DeclareFontShape{EU2}{libertine}{m}{n}{< -> "LinLib-Re:mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig;"}{} \DeclareFontShape{EU2}{libertine}{m}{sc}{< ->"LinLib-Re:mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig;+smcp;"}{} \DeclareFontShape{EU2}{libertine}{m}{it}{< -> "LinLib-It:mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig;"}{} \DeclareFontShape{EU2}{libertine}{bx}{n}{< -> "LinLib-Bd:mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig;"}{} \DeclareFontShape{EU2}{libertine}{bx}{it}{< -> "LinLib-BI:mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig;"}{}as T1 is not a unicode encoding (you need a bright new development version of euenc or luainputenc to get the EU2 encoding, both are on github too), and the options mode=node;script=latn;+ccmp;+locl;+mark;+mkmk;+kern;+liga;+clig;+trep;+tlig; are more complete and accurate.
LuaTeX « Uwes kleines Technikblog schrieb am 28.01 um 05:20 Uhr:
[...] viele momentan recht mühsam zu programmierende Kontrukte in TeX/LaTeX erleichtern dürfte. Unter http://www.luatex.de/2009/12/luatex-fur-den-latex-benutzer-eine-einfuehrung/ gibt es eine kurze Einführung in [...]
Frakturfreund schrieb am 13.06 um 02:15 Uhr:
Ich bitte meine offenſichtliche Unkenntnis zu entſchuldigen, aber wieſo müſſen da überhaupt noch irgendwelche Anpaſſungen gemacht werden?
Bei XeLaTeX gibt es `\usepackage{fontspec}`, das ſeit kurzem auch erſtmals auf LuaLaTeX portiert wurde, und bei dem man keine weiteren Angaben außer dem Schriftnamen machen muſs, wenn ſie denn im Syſtem vorhanden iſt …
deshalb verſtehe ich einfach noch nicht den Vorteil/Mehrwert von dieſen .fd-Dateien.
Patrick Gundlach schrieb am 13.06 um 09:11 Uhr:
fontspecist noch nicht lange verfügbar. Für TeXlive 2010 erwarte ich eine stabile Version. Aber selbst da könnte es noch die eine oder andere Schwierigkeit geben. Mit den.fd-Dateien bist du auf der sicheren Seite, kannst sogar noch beliebige Macro-Tricksereien machen. Michael Niedermair hat im Google-LuaLaTeX-Webfonts Projekt so etwas gemacht.Frakturfreund schrieb am 23.06 um 05:59 Uhr:
Vielen herzlichen Dank für die Auskunft! Leider konnte ich bisher noch keine eigenen Erfahrung mit LuaTeX ſammeln, da ich primär Windows einſetze und LuaTeX leider noch keinen Einzug in MiKTeX genommen hat. Bis dahin wird
fontspecwahrſcheinlich in Verſion 3 vorliegen ;).Kommentar schreiben