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" )