无法识别外部文件中定义并由 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}

您可以在经典 tex 中尝试,而无需 Lua。所有本地定义(例如)\newcommand\end

\directlua这是我发现它比包装器更容易使用的众多原因之一luacode

\documentclass{article}

\begin{document}

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

\MyCommand
\end{document}

相关内容