LuaLaTeX:将测试条件n〜= 3传递给lua作为宏参数问题

LuaLaTeX:将测试条件n〜= 3传递给lua作为宏参数问题

我尝试将lua测试条件作为latex宏参数传递,但出现以下错误消息时出现问题~=。如何避免这种情况。

! LuaTeX 错误 [\directlua]:1: '\p' 附近的转义序列无效。\test ... 直到断言(load(“return ".. fin))() }

l.20 \测试[n~=3]

\documentclass{beamer}
\usepackage{luacode}

\newcommand{\test}[1][n==3]{%

    \directlua{%
    fin = "#1"
    repeat
        n=math.random(1,5)
        tex.print (n.." ")
    until assert(load("return ".. fin))()
    }
}

\begin{document}

\test   % ok
\test[n>=3 and n<=8]    % ok

\test[n~=3] % gives the error message above

\end{document}

答案1

\directlua以类似方式扩展输入\edef。您应该始终注意扩展:这里我们有~,如果您不保护它,它会扩展:

\documentclass{beamer}    
\newcommand{\test}[1][n==3]{%
    \directlua{%
      local fin = "\unexpanded{#1}"
      repeat
        n = math.random(1,5)
        tex.print(n .. " ")
      until assert(load("return ".. fin))()
    }%
}

\begin{document}

\test   % ok
\test[n>=3 and n<=8]    % ok

\test[n~=3] % gives the error message above

\end{document}

相关内容