![使用直接 lua 在中心环境中出现新命令的问题](https://linux22.com/image/466588/%E4%BD%BF%E7%94%A8%E7%9B%B4%E6%8E%A5%20lua%20%E5%9C%A8%E4%B8%AD%E5%BF%83%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%96%B0%E5%91%BD%E4%BB%A4%E7%9A%84%E9%97%AE%E9%A2%98.png)
\documentclass{article}
\usepackage{luacode,xkeyval}
\makeatletter
\define@key{someop}{a}{\def\mop@one{#1}}%
\setkeys{someop}{a=0}%
\newcommand{\luaTest}[2][]{{%
\setkeys{someop}{#1}%
\directlua{%
local mystr = [[
test
]]
tex.print(tostring(#2).." "..\mop@one)
}%
}%
}%
\makeatother
\begin{document}
\luaTest{'First'}
\begin{center}
\luaTest{'First'}
\end{center}
\end{document}
上述代码按预期工作并产生以下预期输出。
First 0
First 0
但是下面的代码不起作用。
\documentclass{article}
\usepackage{luacode,xkeyval}
\makeatletter
\define@key{someop}{a}{\def\mop@one{#1}}%
\setkeys{someop}{a=0}%
\newcommand{\luaTest}[2][]{{%
\setkeys{someop}{#1}%
\directlua{%
local mystr = [[
test
]]
tex.print(tostring(#2).." "..\mop@one)
}%
}%
}%
\makeatother
\begin{document}
\luaTest{'First'}
\begin{center}
\luaTest{'First'}
\end{center}
\end{document}
唯一的区别是之前有一个空行tex.print
。它会引发以下错误。
unexpected symbol near '\'.
\\luaTest ...print(tostring(#2).." "..\mop@one ) }
}
该命令仍然有效,但不在中心环境中。如果我删除\begin{center} ...\end{center}
,文档将被编译。问题是什么?有人能指出吗?虽然我可以通过删除空白行来解决问题,但我想了解问题所在。