LuaTeX:在 luacode 环境中执行 Tex 命令

LuaTeX:在 luacode 环境中执行 Tex 命令

在我的项目中,我想从luacode环境内部执行一些 LaTeX 命令。我在我的 MWE 中重现了一个虚拟示例。在下面的代码中,我不明白为什么当我使用时执行我的函数\directlua,而当我使用luacode环境时不执行(您可以在我的 MWE 中注释/取消注释)。我更喜欢使用环境luacode(或luacode*),因为在我的编辑器中,单词与相反,突出显示\directlua

\documentclass{article}

\usepackage{showframe}
\usepackage{luacode}

\begin{luacode}
  function setParindentToZero()
    tex.sprint('\\setlength{\\parindent}{0pt}')
  end
\end{luacode}

\begin{document}

\directlua{setParindentToZero()}

% \begin{luacode}
% setParindentToZero()
% \end{luacode}

test

\end{document}

编辑 :

使命令全局化对于上面的例子有效,但对于下面的例子无效:

\documentclass{article}

\usepackage{showframe}
\usepackage{luacode}
\usepackage{geometry}

\begin{luacode}
  function setMargin()
    tex.sprint('\\global\\geometry{paperwidth=10cm,paperheight=10cm}')
    %tex.sprint('\\geometry{paperwidth=10cm,paperheight=10cm}')
  end
\end{luacode}

\directlua{setMargin()}

% \begin{luacode}
% setMargin()
% \end{luacode}

\begin{document}

test

\end{document}

某些命令是否有限制并且不允许成为全局命令?

相关内容