将宏参数与文本结合

将宏参数与文本结合

我有一个宏,我需要将它的一个参数与文本结合起来形成一个在 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%
     "
     )
  }%
}

相关内容