外部ファイルで定義され、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を使わずにクラシックTexで試すことができます。すべてのローカル定義は\newcommand\end

\directluaこれは、私が提供されているラッパーよりも使いやすいと思う多くの理由の1つです。luacode

\documentclass{article}

\begin{document}

\directlua{tex.print("\string\\input{sourced}")}

\MyCommand
\end{document}

関連情報