我尝试将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}