我偶然遇到了这个问题,不明白为什么会发生这种情况。考虑以下代码:
\documentclass{article}
\begin{document}
%% OK
Text
\ExplSyntaxOn
\tl_gput_right:Nx \l_tmpa_tl { \par }
\ExplSyntaxOff
%% Error
\begin{itemize}
\item text.
\end{itemize}
\ExplSyntaxOn
\tl_gput_right:Nx \l_tmpa_tl { \par }
\ExplSyntaxOff
\end{document}
我只是将某些内容(包含\par
)放入不相关的宏中,但为什么按照列表操作时会产生错误?
具体来说,错误是
TeX capacity exceeded, sorry [input stack size=10000].
\@restorepar ->\def \par
{\@par }
l.16 \tl_gput_right:Nx \l_tmpa_tl { \par }
答案1
列表(或章节标题)之后\par
不是 tex 原语,而是用于设置第一段后的段落形状的宏。
\edef
在或参数扩展中使用它并不安全x
。