In einer externen Datei definierte und von Lua importierte Befehle werden nicht erkannt

In einer externen Datei definierte und von Lua importierte Befehle werden nicht erkannt

Angenommen, ich habe eine Datei sourced.tex, die einen neuen Befehl definiert \MyCommand:

\newcommand{\MyCommand}{Hello World}

Wenn ich eine Datei erstelle main.texund diese mit als Quelle verwende \input, kann ich den Befehl verwenden und mein Dokument wird problemlos kompiliert:

\documentclass{article}

\begin{document}
    \input{sourced.tex}
    \MyCommand
\end{document}

Wenn ich jedoch eine Datei erstelle main_lua.texund diese mithilfe eines Interpreters als Quelle verwende lua, wird die Datei nicht kompiliert und ich erhalte eine Fehlermeldung, die besagt, dass die Steuersequenz nicht definiert ist:

\documentclass{article}
\usepackage{luacode}

\begin{document}
    \begin{luacode*}
        tex.print("\\input{sourced.tex}")
    \end{luacode*}
    \MyCommand
\end{document}

Überträgt im luaTerminal generierter LaTeX-Code seine Definitionen nicht in das Hauptdokument? Gibt es eine Möglichkeit, dies zu umgehen?

Antwort1

Ihr Code entspricht

\documentclass{article}

\begin{document}

\begin{empty} \newcommand{\MyCommand}{Hello World}\end{empty}
\MyCommand
\end{document}

die Sie in klassischem Tex ohne Lua ausprobieren können. Alle lokalen Definitionen wie \newcommandgehen verloren bei der\end

Dies ist einer der vielen Gründe, warum ich es einfacher zu verwenden finde \directluaals die Wrapper vonluacode

\documentclass{article}

\begin{document}

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

\MyCommand
\end{document}

verwandte Informationen