我luacode
在一个.tex
文件中有一些可以正常工作的内容,但在文件中却没有.sty
——并出现以下错误消息:
参数失控?!扫描 \luacode@grab@lines 的使用时文件结束。\par <*> mwe.tex
.tex
文件
\documentclass{article}
\usepackage{luacode,mwe}
\begin{document}
% works fine
for i = 0,10
do
tex.print (i)
end
% doesn't work
\For
\end{document}
mwe.sty
文件
\newcommand{\For}{%
\begin{luacode}
for i = 0,10
do
tex.print (i)
end
\end{luacode}
}
答案1
该luacode
环境通过更改 catcode 代码来使输入更容易传递给 Lua。这在宏中不起作用:输入已被标记化。从这个意义上讲,luacode
它类似于逐字环境。对于任何较长的 Lua 代码块,最好将其放在单独的文件中,而对于较短的块,我会坚持\directlua
并注意要求,这里要求最低
\newcommand*\For{%
\directlua{
for i = 0,10 do
tex.print(i)
end
}%
}
(您实际上会得到错误,因为\end{luacode}
使用逐字逐句的方法发现,并且这在宏中总是会失败。)