将整数 expl3 变量传递给 Lua 函数(通过 \lua_new:e)?

将整数 expl3 变量传递给 Lua 函数(通过 \lua_new:e)?

鉴于以下 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}

相关内容