Warum sollte ich mich für Lua interessieren?

Warum sollte ich mich für Lua interessieren?

Ich verwende LuaLaTex, seit ich TeX kennengelernt habe, weil es problemlos mit Systemschriftarten arbeiten kann, die ich wirklich brauche. Die Schriftpakete in TeX sind keine Freunde der russischen Sprache, obwohl sie Freunde der LuaSprache sind.

Ich habe hier einige Beispiele gefunden:Was ist ein einfaches Beispiel für etwas, das Sie mit LuaTeX tun können?, aber ich verstehe immer noch nicht ganz, was ich Luatun kann.

Meine Fragen sind also folgende:

  • Wurde es Luaspeziell für TeX entwickelt oder ist es lediglich eine Programmiersprache, die in TeX implementiert werden kann?Antwort: Es ist nur eine Programmiersprache und nicht spezifisch für TeX.
  • Wie kann es im Schriftsatz verwendet werden? Kann es irgendwie Pakete ersetzen?
  • Ist es betriebssystemabhängig, d. h. gibt es Besonderheiten bei der Verwendung unter Windows?
  • Funktioniert es mit nicht-lateinischen Zeichen?Antwort: JA.

Antwort1

Sie fragten unter anderem:

Wofür kann [Lua] im Schriftsatz verwendet werden? Kann es irgendwie Pakete ersetzen?

  • Einige Satzaufgaben können nur in LuaTeX, nicht aber in pdfTeX oder XeTeX durchgeführt werden. Wir sehen immer mehr Pakete, dieerfordernLuaLaTeX, um ihre Ziele zu erreichen; diese Pakete hätten einfach überhaupt nicht in pdfLaTeX oder XeLaTeX geschrieben werden können. Beispiele sind die Pakete showhyphensund selnolig. (Vollständige Offenlegung: Ich bin der Hauptautor des selnoligPakets.)

  • Einige Satzaufgaben können in LuaLaTeX einfacher (oder zumindest ohne größeren Aufwand) als in pdfLaTeX oder XeLaTeX erledigt werden. Vergleichen Sie beispielsweise die folgenden beiden Codeblöcke (aus dem BeitragArithmetische Temporäre in Tex). In beiden Fällen \StrMiddient das Makro dazu, einen Teilstring aus einem String zu extrahieren:

    \usepackage{luacode} % for "\luastring" macro
    \newcommand\StrMid[3]{\directlua{tex.sprint(string.sub(\luastring{#1},#2,#3))}}
    

    gegen

    \usepackage{xparse}
    \ExplSyntaxOn
    \NewExpandableDocumentCommand{\StrMid}{mmm}
     {
      \tl_map_function:fN { \tl_range:onn { #1 } { #2 } { #3 } } \use:n
     }
    \cs_generate_variant:Nn \tl_map_function:nN { f }
    \cs_generate_variant:Nn \tl_range:nnn { o }
    \ExplSyntaxOff
    

    Mit der Gegenüberstellung dieser beiden Codeblöcke möchte ich den Autor des LaTeX3-Codes keineswegs herabwürdigen. Ganz und gar nicht! Ich möchte lediglich zeigen, dass einige Aufgaben recht einfach zu erledigen sind, wenn man auch nur ein bisschen Lua kennt. Dies gilt insbesondere für die Manipulation von Zeichenfolgen, da Lua einige leistungsstarke Funktionen zur Zeichenfolgenbehandlung bietet.

  • Wenn Sie es gewohnt sind, mit einer modernen Programmiersprache zu arbeiten, aber nie alle Feinheiten einer Makroerweiterungssprache vollständig gemeistert haben – ich selbst muss mich genau dieses Vorwurfs schuldig bekennen … –, werden Sie es wahrscheinlich viel einfacher finden, einige nicht triviale Satzaufgaben zu programmieren, wenn Sie Lua-Code und die klare, in LuaTeX integrierte Schnittstelle zwischen Lua und TeX verwenden.

Antwort2

Lua ist eine Programmiersprache, die für die Ausführung in einer kleinen, leicht einzubettenden virtuellen Maschine konzipiert ist (viel kleiner als beispielsweise die Java JVM) und sich daher ideal für die Einbettung in andere Systeme eignet (sie wird beispielsweise als Konfigurationssprache für mehrere Spiele verwendet).

Es wurde also nicht von den Leuten von Luatex entwickelt (tatsächlich liegt Lua selbst derzeit mindestens bei Version 5.3 vor der mit Luatex ausgelieferten Lua-Version 5.2), sondern als geeignete Erweiterungssprache ausgewählt.

Es kann verwendet werden, um mehrere der eingebauten TeX-Algorithmen neu zu implementieren

Es ist mehr oder weniger betriebssystemunabhängig

Ja, wie Sie in Luatex sehen, kann es Unicode-Schriftarten und Unicode-Zeichenfolgen verarbeiten (Unicode-Zeichenfolgen werden als UTF-8-Kodierung angezeigt, sodass eine einzelne Einheit ein Byte und kein Zeichen ist).

Antwort3

Als Beispiel dafür, was mit LuaLaTeX möglich ist, habe ich ein Skript erstellt, das CSV-Daten automatisch in das LaTeX-Tabellen- oder Matrixformat konvertiert. Es ist sehr nützlich für Laborberichte, da der Benutzer sich nicht mehr darum kümmern muss, Daten oder Simulationsergebnisse in der TeX-Datei manuell zu aktualisieren.

https://gist.github.com/calebreister/8dd7ab503c91dea4dd2c499b9d004231

verwandte Informationen