token.set_macro
如果我使用 LuaLaTeX 编译以下代码,我会得到单词“RED”作为输出。内部的调用luacode*
似乎无效。
\listfiles
\documentclass{minimal}
\usepackage{luacode}
\newcommand*\foo{RED}
\iftrue
\begin{luacode*}
token.set_macro('foo', 'GREEN')
\end{luacode*}
\else
\directlua{token.set_macro('foo', 'GREEN')}
\fi
\begin{document}
\foo
\end{document}
更改\iftrue
为后\iffalse
,我得到了“绿色”。有人能解释一下这种现象吗?非常感谢。
答案1
一个环境就是一个组,如果你在案例中添加一个组\directlua
,那么你会看到相同的内容:
\listfiles
\documentclass{minimal}
\usepackage{luacode}
\newcommand*\foo{RED}
\iffalse
\begin{luacode*}
token.set_macro('foo', 'GREEN')
\end{luacode*}
\else
{
\directlua{token.set_macro('foo', 'GREEN')}
}
\fi
\begin{document}
\foo
\end{document}