在我的项目中,我想从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}
某些命令是否有限制并且不允许成为全局命令?