如何在 lualatex 代码中切换 tex 布尔值

如何在 lualatex 代码中切换 tex 布尔值

我有经典的 tex 布尔值:

\newif\ifprintanswers
\printanswersfalse

我还有可以读取一些环境变量的 luacode:

\begin{luacode}
     if os.getenv('C') == '1' then
         tex.print(\printanswerstrue)
     end
\end{luacode}

但我无法让\printanswerstrue命令按预期执行(即切换布尔状态为 true)。相反,我总是收到一条消息,指出“不完整 \iffalse;第 xxx 行之后的所有文本都被忽略。”

答案1

我从来不用 luacode 环境的一个原因是它们是一个组,所以就像你拥有的一样,\begin{center}\printanswerstrue\end{center} 在环境结束时它又变为 false,

\directlua{%
if os.getenv('C') == '1' then
         tex.print("\string\\printanswerstrue")
     end
}

相关内容