\verb 类似宏,将参数传递给 Lua

\verb 类似宏,将参数传递给 Lua

我对 还很陌生\LaTeX,但想创建一个类似于 的小宏\verb。具体来说,我正在编写一个小包,我想在其中传递一个参数(通常包含特殊字符,如%#}、...)给Lua。我知道可以通过定义环境(看到这个问题)。

但是,我找不到任何解决方案来通过单个命令传递这样的参数。至少在不先将逐字文本保存到变量中,然后将其作为参数传递的情况下,这样做不太实用。所有\verb相关的包似乎都专注于verbatim,要么关注允许使用它的版本里面一个宏——这对我没有帮助。

编辑:一小段代码来澄清一下:我已经有类似的东西了:

<软件包.lua>

function process(input)
    -- do something with input
end

<document.tex>

\passToLua¨<some text with special characters %$[+=\#>¨

但是我无法正确定义接受带有这些特殊字符的参数的命令 - 理想情况下它看起来像这样(虽然我知道它可能看起来更丑):

<package.sty>

\providecommand{\passToLua}[1]{  % This will need adapting as it doesn't accept %, #, ... in it's argument
    \directlua{
        require("package")
        process([[#1]])
    }
}

有人有主意吗?在此先致以万分感谢!

答案1

您可以定义逐字(v)参数:

\documentclass{article}

\NewDocumentCommand\passToLua{v}{\directlua{
     print ("\string\n======\string\n")
     print ([[#1]])
     print ("\string\n======\string\n")
    }}
\begin{document}

\passToLua{a string with # \ and %}

\end{document}

这将打印

======

a string with # \ and %

======

到终端

相关内容