Das folgende Beispiel zeigt die einfache Möglichkeit, einen Lua-Befehl innerhalb von LaTeX auszuführen. Dasselbe funktioniert auch mit Plain TeX.
% !TEX lualatex \documentclass{article} \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \begin{document} Die Kreiszahl $\pi$ hat den Wert \directlua{tex.print(math.pi)}. \end{document}
Hier ergeben sich aber direkt einige Probleme. Man kann beispielsweise die üblichen Lua-Kommentarzeichen (-
-
) nicht mehr benutzen, weil alles, was innerhalb von \directlua{…}
steht, in einer Zeile interpretiert wird. So hat folgender Code einen Syntaxfehler:
\directlua{ for x=1,10 do -- Schleifenanfang tex.print(x) end }
weil der Lua-Interpreter folgendes liest:
\directlua{ for x=1,10 do -- Schleifenanfang tex.print(x) end }
und den Rest hinter dem Schlüsselwort do
ignoriert. Daher empfiehlt es sich, Lua-Code soweit wie möglich in eine eigene Datei zu schreiben und in dem \directlua
-Befehl nur den Befehl zum Laden der Datei anzugeben.
Sollte das nicht möglich sein, kann man auf das Paket luacode
mit der gleichnamigen Umgebung ausweichen:
% !TEX lualatex \documentclass{article} \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage{luacode} \begin{document} \begin{luacode*} for x=1,10 do -- Schleifenanfang tex.print(x) end \end{luacode*} \end{document}
Trotzdem gilt hier die dringende Empfehlung, möglichst wenig Code in den LaTeX-Quellen zu verwenden und für den Rest eine eigene Datei zu nutzen. Damit wird man auch aussagekräftigere Fehlermeldungen mit Zeilennummer erhalten.