![将整数 expl3 变量传递给 Lua 函数(通过 \lua_new:e)?](https://linux22.com/image/467792/%E5%B0%86%E6%95%B4%E6%95%B0%20expl3%20%E5%8F%98%E9%87%8F%E4%BC%A0%E9%80%92%E7%BB%99%20Lua%20%E5%87%BD%E6%95%B0%EF%BC%88%E9%80%9A%E8%BF%87%20%5Clua_new%3Ae%EF%BC%89%EF%BC%9F.png)
鉴于以下 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}