
Escrever macros LaTeX sempre foi difícil e parece que escrever um pacote importante só pode ser realizado por umProgramador de verdade.
Felizmente, LuaTeX está a caminho, e escrever macros Lua é indiscutivelmente mais amigável do que programar em TeX. Ainda assim, poderia ficar ainda mais amigável se houvesse uma maneira de acoplar o LuaTeX a um depurador remoto.
Por isso pergunto:Existe uma maneira de depurar remotamente macros LuaLaTeX?
Esta questão é essencialmente uma reformulação da postagemDepurando Lua em LuaLatex com LDT. A postagem foi encerrada porque não continha realmente uma pergunta. Uma solução quase completa foi proposta no post, mas houve alguns problemas, e gostaria de saber se esses problemas podem ser resolvidos.
Responder1
Hoje em dia, você pode obter depuração GUI do código Lua bem no meio do processamento LuaTeX do seu documento. Com pontos de interrupção, observe variáveis, percorrendo o código, a pilha de chamadas e até mesmo mostrando dicas de ferramentas com conteúdo variável ao passar o mouse.
Meu ambiente para trabalhar com TeX éCódigo VS+Oficina de LaTeX+LTeX. É bastante conveniente: posso escrever e depurar um programa C++ e, na mesma janela, escrever um artigo que o descreva. O LaTeX Workshop tem tantos recursos que qualquer coisa como o TeXstudio parece desnecessária.
Você também pode editar seu documento TeX e depurar sua Lua no mesmo ambiente do VS Code. Para suportar e depurar Lua dentro do seu documento, você precisa de duas extensões:LuaeDepurador Lua Local.
Para depurar, insira o seguinte no seu preâmbulo:
\begin{luacode}
require("lldebugger").start()
\end{luacode}
Em seguida, crie a seguinte configuração de inicialização:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Custom Lua Environment",
"type": "lua-local",
"request": "launch",
"stopOnEntry": false,
"program": {
"command": "lualatex"
},
"args": ["mwe.tex"]
}
]
}
Onde mwe.tex
acima está o nome do seu documento. É isso. Você está pronto para depurar, basta pressionar F5. A única desvantagem até agora é que não é possível colocar um ponto de interrupção dentro de um .tex
documento; tem que ser um arquivo Lua.
Aqui está uma captura de tela de uma sessão de depuração:
Responder2
Uma alternativa simples e leve é o depurador de interface de linha de comandodepurador.luapor Scott Lembcke. Isso énãouma solução de depuração remota, mas é muito fácil de configurar. Por outro lado, não há GUI, então tudo é feito através do terminal. Mas é muito melhor do que emitir comandos de impressão, que é provavelmente a abordagem usada pela maioria dos criadores de pacotes LuaLaTeX até hoje.
Para começar:
- Downloaddepurador.luae coloque-o na pasta do seu projeto.
- Coloque o comando
local dbg = require("debugger")
no início do arquivo .lua que deseja depurar. - Coloque o comando
dbg()
em locais do seu código onde você deseja que a execução do código seja interrompida. - Use comandos de terminal para inspecionar variáveis, executar código personalizado e muito mais. Emita o comando
h
para obter um resumo simples dos comandos disponíveis.