鉴于以下 MWE:
\documentclass{minimal}
\ExplSyntaxOn
\int_new:N\g_test_myint_int
\int_set:Nn\g_test_myint_int{2}
\cs_set:Npn\__test_dostuff: {
\lua_now:e{tex.sprint(1)} % Works just fine.
\lua_now:e{tex.sprint(\g_test_myint_int)} % Does not work.
}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\__test_dostuff:
\ExplSyntaxOff
\end{document}
我收到以下错误。
\directlua]:1: unexpected symbol near '\'.
\lua_now:e #1->\__lua_now:n {#1}
l.17 \__test_dostuff:
我知道我可以使用字符串\luaescapestring{}
正确地转义并将内容发送到我的 Lua 函数。有没有办法将整数变量传递给 Lua 函数?虽然我可以tonumber(int)
在 Lua 函数内部调用并获得我需要的内容,但我觉得我缺少了一些简单的东西。
此外,是否有类似的方法可以直接传递布尔值?
答案1
int
不可扩展,您需要使用以下方法扩展值\int_use:N
\documentclass{minimal}
\ExplSyntaxOn
\int_new:N\g_test_myint_int
\int_set:Nn\g_test_myint_int{2}
\cs_set:Npn\__test_dostuff: {
\lua_now:e{tex.sprint(1)} % Works just fine.
\lua_now:e{tex.sprint(\int_use:N\g_test_myint_int)} % Does not work.
}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\__test_dostuff:
\ExplSyntaxOff
\end{document}