
正常に動作するファイルもありますが、ファイルによっては動作しないものもあり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}
逐語的なアプローチを使用して が検索されているためであり、これはマクロ内では常に失敗します。)