
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
これは、私が提供されているラッパーよりも使いやすいと思う多くの理由の1つです。luacode
\documentclass{article}
\begin{document}
\directlua{tex.print("\string\\input{sourced}")}
\MyCommand
\end{document}