
Das Schreiben von LaTeX-Makros war schon immer schwierig, und es scheint, als ob das Schreiben eines größeren Pakets nur von einemEchter Programmierer.
Glücklicherweise ist LuaTeX auf dem Weg und das Schreiben von Lua-Makros ist wohl benutzerfreundlicher als das Programmieren in TeX. Es könnte jedoch noch benutzerfreundlicher werden, wenn es eine Möglichkeit gäbe, LuaTeX mit einem Remote-Debugger zu koppeln.
Deshalb frage ich:Gibt es eine Möglichkeit, LuaLaTeX-Makros remote zu debuggen?
Diese Frage ist im Wesentlichen eine Umformulierung des BeitragsDebuggen von Lua in LuaLatex mit LDT. Der Beitrag wurde geschlossen, da er nicht wirklich eine Frage enthielt. Im Beitrag wurde eine fast vollständige Lösung vorgeschlagen, aber es gab einige Probleme, und ich würde gerne wissen, ob diese Probleme gelöst werden können.
Antwort1
Heutzutage können Sie Lua-Code direkt während der LuaTeX-Verarbeitung Ihres Dokuments GUI-Debugging durchführen. Mit Haltepunkten, Überwachungsvariablen, schrittweisem Durchlaufen des Codes, Aufrufstapel und sogar der Anzeige von Tooltips mit variablem Inhalt beim Bewegen der Maus darüber.
Meine Umgebung für die Arbeit mit TeX istVS-Code+LaTeX-Workshop+LTeX. Es ist ziemlich praktisch: Ich kann ein C++-Programm schreiben und debuggen und im selben Fenster ein Dokument schreiben, das es beschreibt. LaTeX Workshop hat so viele Funktionen, dass alles wie TeXstudio unnötig erscheint.
Sie können Ihr TeX-Dokument auch bearbeiten und dessen Lua in derselben Umgebung wie VS Code debuggen. Um Lua in Ihrem Dokument zu unterstützen und zu debuggen, benötigen Sie zwei Erweiterungen:LuaUndLokaler Lua-Debugger.
Zum Debuggen fügen Sie Folgendes in Ihre Präambel ein:
\begin{luacode}
require("lldebugger").start()
\end{luacode}
Erstellen Sie dann die folgende Startkonfiguration:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Custom Lua Environment",
"type": "lua-local",
"request": "launch",
"stopOnEntry": false,
"program": {
"command": "lualatex"
},
"args": ["mwe.tex"]
}
]
}
Wobei mwe.tex
oben der Name Ihres Dokuments steht. Das ist alles. Sie sind bereit zum Debuggen, drücken Sie einfach F5. Der einzige Nachteil ist bisher, dass innerhalb eines .tex
Dokuments kein Haltepunkt gesetzt werden kann; es muss eine Lua-Datei sein.
Hier ist ein Screenshot einer Debug-Sitzung:
Antwort2
Eine einfache, leichte Alternative ist der Befehlszeilenschnittstellen-Debuggerdebugger.luavon Scott Lembcke. Dies istnichteine Remote-Debugging-Lösung, die aber sehr einfach einzurichten ist. Der Nachteil ist, dass es keine GUI gibt, sodass alles über das Terminal erledigt wird. Aber es ist viel besser als das Ausgeben von Druckbefehlen, was wahrscheinlich der Ansatz ist, den die meisten LuaLaTeX-Paketautoren bisher verwendet haben.
So fangen Sie an:
- Herunterladendebugger.luaund legen Sie es in Ihren Projektordner.
- Platzieren Sie den Befehl
local dbg = require("debugger")
am Anfang der Lua-Datei, die Sie debuggen möchten. - Platzieren Sie den Befehl
dbg()
an den Stellen in Ihrem Code, an denen die Codeausführung unterbrochen werden soll. - Verwenden Sie Terminalbefehle, um Variablen zu prüfen, benutzerdefinierten Code auszuführen und mehr. Geben Sie den Befehl ein,
h
um eine einfache Zusammenfassung der verfügbaren Befehle zu erhalten.