\show 用于 Lua 命令

\show 用于 Lua 命令

TeX(以及所有较新的引擎)具有帮助我探测宏的原语\show,并且大多数时候足以理解/记住实现(而不必返回源代码)。

Lua 命令有类似的东西吗?例如,Heiko Oberdiek 用 LuaTeX 编写了一些 pdfTeX 原语的替代品,我想使用一些假设的\showluatexcmd宏来获取有关它们的更多信息。

\input pdftexcmds.sty
\catcode`@=11
\show\pdf@strcmp
%\showluatexcmd{oberdiek.pdftexcmds.strcmp}
\bye

答案1

我非常怀疑 Lua 中是否存在类似的东西,但你可以执行以下操作来找出答案在哪里函数已定义(以获取源代码)。

\directlua{ require("showluatexcmd") }
\def\showluatexcmd#1{\directlua{showluatexcmd.show(#1)}}

\input pdftexcmds.sty
\catcode`@=11
 \show\pdf@strcmp
\showluatexcmd{oberdiek.pdftexcmds.strcmp}
\bye

和文件showluatexcmd.lua

module(...,package.seeall)

function show( fun )
  local debuginfo = { "source","linedefined","what" }
  for _,v in ipairs(debuginfo) do
    texio.write_nl(string.format("%20s=%q", v, debug.getinfo(fun)[v]))
  end
end

可以扩展它以直接加载并显示该函数。但在大多数情况下,这无济于事,因为许多函数很短并调用其他函数。

示例输出为

          source="@/opt/texlive2011/texmf-dist/scripts/oberdiek/pdftexcmds.lua"
     linedefined="46"
            what="Lua" )

相关内容