我有一个宏,我需要将它的一个参数与文本结合起来形成一个在 lua 中使用的字符串。
\newcommand{\mymacro}[1]{\directlua{
myfunc("#1 4")
}
如果我调用\mymacro{alpha}
我需要 myfunc 来接收alpha4
和不是 alpha 4
有任何想法吗?
答案1
您的\mymacro
是标准的 TeX 宏:它包含 完全无关紧要\directlua
。因此,适用替换材料的标准规则。当您用 定义时\mymacro
,"#1 4"
您是在告诉它替换#1
,然后替换空格,然后替换4
。因此,完全可以预料到空格会出现在输出中。
正如评论中指出的那样,TeX 只允许一个宏最多有 9 个参数(而且使用带有 9 个参数的宏确实很不方便)。因此,你应该省略这里的空格,或者在定义时使用额外的行来划分概念。
\newcommand{\mymacro}[1]{%
\directlua{%
myfunc(
"%
#1%
4%
"
)
}%
}