
Escribir macros en LaTeX siempre ha sido difícil y parece que escribir un paquete importante sólo puede lograrse mediante unProgramador real.
Afortunadamente, LuaTeX está en camino, y escribir macros en Lua es posiblemente más amigable para los humanos que programar en TeX. Aún así, podría volverse aún más amigable si hubiera una manera de combinar LuaTeX con un depurador remoto.
Por eso pregunto:¿Existe alguna forma de depurar remotamente las macros de LuaLaTeX?
Esta pregunta es esencialmente una reformulación de la publicación.Depurando Lua en LuaLatex con LDT. La publicación se cerró porque en realidad no contenía ninguna pregunta. En la publicación se propuso una solución casi completa, pero hubo algunos problemas y me gustaría saber si se pueden resolver.
Respuesta1
Hoy en día, puede obtener la depuración GUI del código Lua justo en medio del procesamiento LuaTeX de su documento. Con puntos de interrupción, observe las variables, recorra el código, llame a la pila e incluso muestre información sobre herramientas con contenido variable al pasar el mouse.
Mi entorno para trabajar con TeX esCódigo VS+Taller de látex+LTeX. Es bastante conveniente: puedo escribir y depurar un programa en C++ y, en la misma ventana, escribir un artículo que lo describa. LaTeX Workshop tiene tantas características que cualquier cosa como TeXstudio parece innecesaria.
También puede editar su documento TeX y depurar su Lua en el mismo entorno de VS Code. Para admitir y depurar Lua dentro de su documento, necesita dos extensiones:luayDepurador local de Lua.
Para depurar, inserte lo siguiente en su preámbulo:
\begin{luacode}
require("lldebugger").start()
\end{luacode}
Luego cree la siguiente configuración de lanzamiento:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Custom Lua Environment",
"type": "lua-local",
"request": "launch",
"stopOnEntry": false,
"program": {
"command": "lualatex"
},
"args": ["mwe.tex"]
}
]
}
Donde mwe.tex
arriba está el nombre de su documento. Eso es todo. Está listo para depurar, simplemente presione F5. El único inconveniente hasta ahora es que no puede colocar un punto de interrupción dentro de un .tex
documento; tiene que ser un archivo Lua.
Aquí hay una captura de pantalla de una sesión de depuración:
Respuesta2
Una alternativa sencilla y ligera es el depurador de interfaz de línea de comandos.depurador.luapor Scott Lembcke. Esto esnouna solución de depuración remota, pero es muy fácil de configurar. La desventaja es que no hay GUI, por lo que todo se hace a través del terminal. Pero es mucho mejor que emitir comandos de impresión, que es probablemente el enfoque utilizado por la mayoría de los creadores de paquetes LuaLaTeX hasta la fecha.
Para empezar:
- Descargardepurador.luay colóquelo en la carpeta de su proyecto.
- Coloque el comando
local dbg = require("debugger")
al inicio del archivo .lua que desea depurar. - Coloque el comando
dbg()
en lugares de su código donde desea que se interrumpa la ejecución del código. - Utilice comandos de terminal para inspeccionar variables, ejecutar código personalizado y más. Emita el comando
h
para obtener un resumen simple de los comandos disponibles.