
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}
使用逐字記錄的方法找到的,並且在巨集內部總是會失敗。)