关于TeX如何工作存在一些误解。
您的 \compare 宏想要找到一个逗号后面跟着的东西,然后是一段句子。但是当你打电话时
\compare
\compare\test
没有找到逗号,所以TeX一直在寻找它,直到找到文件的结尾或者 \par (或空白行)。请注意TeX 决不 在查找宏的参数时展开宏。
\par
你可能会这样做
\expandafter\compare\test.
提供的 \test 立即扩展到所需格式的令牌,但不会,因为扩展 \test 是
\test
\luaexec{tex.print("11,12")}
并且逗号被大括号隐藏,因此它不计算在内。但它无济于事。
问题是一样的:当你这样做的时候
\newcommand{\test}{\luaexec{tex.print("11,12")}}
这个论点是 不 扩大。您可以使用“扩展定义” \edef ,但问题是 \luaexec 不完全可扩展。
\edef
\luaexec
如果你这样做
\edef\test{\directlua{tex.sprint("11,12")}}
然后
会工作。