Wie benutze ich LuaTeX mit „plain“?3
Die ersten Schritte bei unseren Experimenten wird sein, das neue LuaTeX-Programm mit plain.tex zu benutzen. LaTeX und ConTeXt bleiben also erst außen vor. Wichtig: diese Anleitung hier geht davon aus, dass du eine halbwegs benutzbare TeX-Umgebung (z.B. TeXlive) installiert hast. Das Format „plain“ lädt viele Dateien, z.B. englische Trennmuster und Schriftdateien. Diese musst du natürlich haben, damit keine Fehlermeldung erscheint. Solltest du eine aktuelle TeX-Umgebung haben, dann kannst du diesen Artikel auch überspringen - dann verpasst du aber einige Hintergrundinformationen. Womit fangen wir an? Mit einem Hack. Wir kopieren unser frisches LuaTeX binary (wenn du nicht gerade eine aktuelle TeX-Distribution wie TeXlive 2009 hast - dann brauchst du das nicht mehr machen) dorthin, wo auch das Programm „pdftex“ liegt. Das ist deswegen notwendig, weil TeX immer dort nach den Dateien sucht, wo es selbst auf der Festplatte gespeichert ist, nur eine oder zwei Verzeichnisebenen höher. (Das ist zumindest für die üblichen TeX-Distributionen der Fall.) Wenn das Programm an der richtigen Stelle liegt, sollten folgende Kommandos eine ähnliche Ausgabe haben:
$ which pdftex $ which luatexJetzt kann's losgehen: wir erstellen uns eine kleine .tex-Datei, die LuaTeX aktiviert und dann
plain.tex lädt.
\catcode`\{=1 %
\catcode`\}=2 %
\directlua{ tex.enableprimitives('',tex.extraprimitives()) }
\pdfoutput1
\input plain
\dump
Das ist ähnlich der normalen tex.ini, die dritte Zeile ist besonders interessant. LuaTeX kennt alle normalen TeX-Befehle, die das ursprüngliche Knuth'sche TeX auch kennt plus den Befehl \directlua. Damit springt man in den Lua-Modus, innerhalb der geschweiften Klammern kann nun beliebiger Lua-Code stehen. Doch die ganzen Befehle von PDFTeX, Aleph und mit LuaTeX neu eingeführten Befehle müssen erst einmal aktiviert werden. Das funktioniert mit tex.enableprimitives(). Wird der Befehl wie oben benutzt, stehen alle Befehle von TeX, E-TeX, PDFTeX, Omega, Aleph und LuaTeX unter den bekannten Namen (siehe Referenzhandbuch) zur Verfügung. So kann der nachfolgende Befehl \pdfoutput erst dann benutzt werden, wenn zuvor die PDFTeX-Befehle aktiviert wurden. Der letzte Befehl schreibt die sogenannte Format-Datei. Speichere also die sechs Zeilen oben unter dem Namen "luatex.tex" ab und lass LuaTeX im Ini-Modus laufen:
~/luatex$ luatex --ini luatex.tex This is LuaTeX, Version beta-0.40.6-2009100310 (TeX Live 2009) (INITEX) (luatex.tex (/opt/texlive2009/texmf-dist/tex/plain/base/plain.tex Preloading the plain format: codes, registers, parameters, fonts, more fonts, macros, math definitions, output routines, hyphenation (/opt/texlive2009/texmf/tex/generic/hyphen/hyphen.tex)) ) Beginning to dump on file luatex.fmt (format=luatex 2009.11.29) 3524 strings of total length 50817 32299 memory locations dumped; current usage is 108&5095 1411 multiletter control sequences \font\nullfont=nullfont \font\tenrm=cmr10 [...] \font\preloaded=cmssbx10 at 14.4pt \font\preloaded=manfnt 50 preloaded fonts 0 words of pdf memory 0 indirect objects No pages of output. Transcript written on luatex.log.Fertig ist unser LuaTeX „Format“. Wenn du das nächste Mal eine normale Datei mit LuaTeX laufen lässt, dann wird dieses Format vorher geladen. Das heißt, du hast die PDF-Ausgabe schon aktiviert. Sonst gibt es erst einmal keine großen sichtbaren Unterschiede zu dem bekannten PDFTeX. Die Details stecken unter der Haube. War gar nicht so kompliziert, oder?

3 Kommentare zu "Wie benutze ich LuaTeX mit „plain“?"
Philipp schrieb am 21.01 um 12:59 Uhr:
Hey, wunderbare Sache dieses Blog, dranbleiben! Wie bekommt man Luatex (0.50, in ConTeXt minimals) eigentlich dazu, die Formatdatei (luatex.fmt) zu finden, wenn sie nicht gerade im aktuellen Verzeichnis liegt? texhash hilft in meinem Fall leider nicht.
pgundlach schrieb am 21.01 um 14:06 Uhr:
Hallo Philipp,
erst einmal: vielen Dank für das Lob, ich werde natürlich dranbleiben.
Du kannst dir per
anzeigen lassen, in welchem Pfad LuaTeX nach den Formatdateien sucht und die Datei
luatex.fmtdort hinein kopieren.Bei den ConTeXt minimals ist das in der Datei
texmf.cnfso festgelegt:TEXFORMATS = .;$TEXMFOS/web2c/{$engine,}D.h., dass die Formatdateien werden im Unterverzeichnis t
exmf-osx-intel/web2c/luatexundtexmf-osx-intel/web2c(natürlich ist die Endung...-osx-intelauf anderen Systemen anders) gesucht.Anschließend
mktexlsrnicht vergessen. Zumindest funktioniert diese Vorgehensweise bei mir.Philipp schrieb am 22.01 um 12:31 Uhr:
Danke, jetzt läuft’s. Interessant, daß man nicht vom Dateisystem-Layout seiner Distro auf das der minimals schließen kann … wieder etwas dazugerlernt.
Kommentar schreiben