\hbox:n 中的 \par 来自哪里

\hbox:n 中的 \par 来自哪里

我对 expl3 一无所知。我天真地以为两行输出相同

\documentclass{article}
\usepackage{expl3}
\begin{document}
\makeatletter
A \def\par{1\global\let\par\@@par\par} \hbox{B} C

A \def\par{1\global\let\par\@@par\par} \ExplSyntaxOn\hbox:n{B}{}\ExplSyntaxOff C

\end{document}

但我得到的却是

ABC 1

乙1C

为什么\hbox:n好像开始了一个新段落?

答案1

来自以下来源(l3color-base.dtx

% \begin{macro}{\color_group_begin:, \color_group_end:}
%   Grouping for color is almost the same as using the basic \cs{group_begin:}
%   and \cs{group_end:} functions.  However, in vertical mode the end-of-group
%   needs a \tn{par}, which in horizontal mode does nothing.
%    \begin{macrocode}
\cs_new_eq:NN \color_group_begin: \group_begin:
\cs_new_protected:Npn \color_group_end:
  {
      \par
    \group_end:
  }
%    \end{macrocode}
% \end{macro}

在水平模式下,我们无需担心额外的问题\par,因此在所有情况下都有相同的代码。

相关内容