команды, определенные во внешнем файле и импортированные 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}

Связанный контент