\tl_gput_right:Nx 的参数包含 \par,导致列表后出现错误

\tl_gput_right:Nx 的参数包含 \par,导致列表后出现错误

我偶然遇到了这个问题,不明白为什么会发生这种情况。考虑以下代码:

\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

相关内容