我如何在LuaTex/LuaLaTex中拥有不同的扩展状态,例如用于调试?

我正在用 Lua 程序准备 LaTex/Tex 片段,从 SQL 数据库请求获取信息(LuaSQL)。 我希望能够看到中间扩展状态,以进行调试,并控制从 SQL 请求和 Lua 处理中提取的内容。我的梦想是,例如,看到我的 LaTeX 页面的代码,就像我手动输入了所有由 SQL 请求和 Lua 处理提供的信息一样,我将首先使用我的 Lua 程序和 SQL 请求进行处理,以构建有效的、可读的 LuaLatex 代码,我可以在必要时进行修改;然后,我再次编译该文件,以获得所需的 PDF 文档。

今天,我使用 Lua 开发环境 ZeroBrane Studio,在将其集成到我的 luaLatex 代码中之前执行和测试 lua 块。例如:

我的 lua 块:

for k,v in pairs(data.param) do  print('\def\'..k..'{'..data.param[k]..'}') end

lua 输出:

\gdef\pB{0.7} \gdef\pAinterB{0.5} \gdef\pA{0.4} \gdef\pAuB{0.6}

luaLatex 代码:

没有任何可见部分! 除了现在我可以在代码中使用\pA之类的

我的梦想是,在 luaLatex 代码中:

\gdef\pB{0.7} \gdef\pAinterB{0.5} \gdef\pA{0.4} \gdef\pAuB{0.6}

也许解决方案在使用 expl3 扩展中? 但由于我不熟悉它,也不熟悉精确的 Tex 扩展过程,所以我更愿意在投资于该模块的理解之前先向您这些专家提问。

补充:

推进反思,一个后果是从一个 Latex 代码中,我得到一个 Latex 代码而不是一个 pdf 文件,例如。这意味着我们只使用 Veijkhout 在 "TeX by Topic" 中描述的四个 TeX 处理器的前几个步骤:输入处理器、扩展处理器(但是具有可控的扩展深度),而不是执行处理器或视觉处理器。此外,还需要显示中间状态,这意味着需要一个能够将令牌回显为可读字符串和可稍后处理的正确的 Tex/Latex 代码的新处理器。除非有人已经完成或看到了类似的工作,否则我认为我的愿望在短中期内可能是不可行的。您的感觉如何,我应该放弃任何希望吗?

点赞