
sourced.tex
새 명령을 정의하는 파일이 있다고 가정합니다 \MyCommand
.
\newcommand{\MyCommand}{Hello World}
파일을 만들고 main.tex
이 파일의 소스를 로 지정 하면 \input
명령을 사용할 수 있고 문서가 제대로 컴파일됩니다.
\documentclass{article}
\begin{document}
\input{sourced.tex}
\MyCommand
\end{document}
그러나 파일을 생성 main_lua.tex
하고 인터프리터를 사용하여 이 파일의 소스를 제공하면 lua
파일이 컴파일되지 않고 제어 시퀀스가 정의되지 않았다는 오류가 발생합니다.
\documentclass{article}
\usepackage{luacode}
\begin{document}
\begin{luacode*}
tex.print("\\input{sourced.tex}")
\end{luacode*}
\MyCommand
\end{document}
터미널 에서 생성된 LaTeX 코드는 lua
해당 정의를 기본 문서로 전송하지 않습니까? 이 문제를 해결할 방법이 있나요?
답변1
귀하의 코드는 다음과 같습니다
\documentclass{article}
\begin{document}
\begin{empty} \newcommand{\MyCommand}{Hello World}\end{empty}
\MyCommand
\end{document}
Lua 없이도 클래식 텍스에서 시도해 볼 수 있습니다. 와 같은 모든 지역 정의는 \newcommand
다음과 같이 손실됩니다.\end
\directlua
이것이 제가 제공하는 래퍼보다 사용하기 더 쉽다고 생각하는 많은 이유 중 하나입니다.luacode
\documentclass{article}
\begin{document}
\directlua{tex.print("\string\\input{sourced}")}
\MyCommand
\end{document}