無法識別外部文件中定義並由 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}

終端機中產生的 La​​TeX 程式碼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}

相關內容