\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}
,文档将被编译。问题是什么?有人能指出吗?虽然我可以通过删除空白行来解决问题,但我想了解问题所在。