외부 파일에 정의되어 있고 Lua에서 가져온 명령이 인식되지 않습니다.

외부 파일에 정의되어 있고 Lua에서 가져온 명령이 인식되지 않습니다.

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}

관련 정보