我对 还很陌生\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 %
======
到终端