
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 的情況下在經典 tex 中嘗試。所有本地定義,例如\newcommand
在\end
\directlua
這是我發現它比使用提供的包裝器更容易使用的眾多原因之一luacode
\documentclass{article}
\begin{document}
\directlua{tex.print("\string\\input{sourced}")}
\MyCommand
\end{document}