
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
환경은 입력을 Lua에 더 쉽게 전달할 수 있도록 catcode 코드를 변경하여 작동합니다. 매크로 내에서는 작동할 수 없습니다. 입력이 이미 토큰화되어 있습니다. 그런 의미에서 luacode
축어적 환경과 유사합니다. Lua 코드의 긴 블록에 대해서는 별도의 파일에 저장하는 것이 가장 좋지만, 짧은 블록에 대해서는 \directlua
최소한의 요구 사항을 준수하고 알고 있어야 합니다.
\newcommand*\For{%
\directlua{
for i = 0,10 do
tex.print(i)
end
}%
}
\end{luacode}
(실제로는 축어적 접근 방식을 사용하여 오류가 발견되고 매크로 내에서 항상 실패하게 됩니다.)