Los comandos definidos en un archivo externo e importados por lua no se reconocen

Los comandos definidos en un archivo externo e importados por lua no se reconocen

Supongamos que tengo un archivo sourced.texque define un nuevo comando \MyCommand:

\newcommand{\MyCommand}{Hello World}

Si creo un archivo main.texy lo obtengo con \input, puedo usar el comando y mi documento se compila bien:

\documentclass{article}

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

Sin embargo, si creo un archivo main_lua.texy lo obtengo usando un luaintérprete, el archivo no se compila y aparece un error que indica que la secuencia de control no está definida:

\documentclass{article}
\usepackage{luacode}

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

¿El código LaTeX generado en el luaterminal no transfiere sus definiciones al documento principal? ¿Hay alguna manera de evitar esto?

Respuesta1

Su código es equivalente a

\documentclass{article}

\begin{document}

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

que puedes probar en tex clásico sin Lua en absoluto. Todas las definiciones locales como \newcommandse pierden en el\end

Esta es una de las muchas razones por las que lo encuentro más fácil de usar \directluaque los envoltorios proporcionados porluacode

\documentclass{article}

\begin{document}

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

\MyCommand
\end{document}

información relacionada