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}