所有控制序列的列表,允许使用常见格式的原语

所有控制序列的列表,允许使用常见格式的原语

我想知道所有控制序列的列表,这些控制序列在常见格式中等于基元。例如,对于纯 TeX,我们将获得以下列表

\endgraf % = \par
\endline % = \cr
\repeat  % = \fi
\bgroup  % = { so not quite a primitive
\egroup  % = }
\sp      % = ^
\sb      % = _
^^M      % (active character) = \par in \obeylines
         % (active space) = space in \obeyspaces
% (the \if... defined by \newif) = \iftrue or \iffalse
% (various control sequences) = \relax

而对于其他格式,我们会得到更长的列表(例如\@@parLaTeX2e\par\normalunexpandedConTeXt \unexpanded)。

我特别感兴趣的是控制序列(和活动字符),让其等于执行赋值(,,,,,,,,,,,,,,,,,),前缀(,,,,)和的基元。\def\edefTeX启动并预加载这些格式时,我可以进一步限制自己控制序列(和活动字符) ,它们等于此列表中的基元之一。\gdef\xdef\let\futurelet\chardef\mathchardef\countdef\dimendef\skipdef\muskipdef\toksdef\read\readline\font\protected\long\outer\global\afterassignment

我关心的原因如下:我刚刚编写了一些代码,重新定义了上面列出的原语,以便追踪分配。这样我就可以列出文档中定义的所有命令,并且我有想法如何从中提取文档中实际使用的所有命令的列表。但是,要求是我应该挂钩到所有为标记分配新含义的命令,即所有控制序列和活动字符都分配给上面列表中的原语之一。如果我错过了其中一个原语的别名,那么使用它定义的所有标记都会丢失。

答案1

LaTeX2e 答案。

在 LaTeX2e 中,只有两个控制序列属于问题中列出的“前缀和定义原语”之一。

\install@mathalphabet % = \gdef
\l@ngrel@x            % = \long or \relax in \@star@or@long

接下来,让我们列出在运行 LaTeX2e 的过程中没有错误地设置为原始值的每个控制序列或活动字符,除了以迂回的方式设置为等于自身的原始值(例如,被重新定义,然后最终由于 而\par回到原始值)。\par\@@par

% Expandable primitives
\@@input    % = \input
\if@tempswa % = \iftrue or \iffalse (and all other \newif switches)
\repeat     % = \fi
\do         % = \noexpand in \begin{document}
\protect    % = \string or \noexpand (or a macro)
\@@protect  % see \protect
\firstmark  % = \botmark in \@outputpage

% Non-expandable primitives
\frozen@everymath     % = \everymath
\frozen@everydisplay  % = \everydisplay
\mathgroup            % = \fam
\mathalpha            % = \mathord in \DeclareMathDelimiter
\@@underline          % = \underline
\@@hyph               % = \-
\@@italiccorr         % = \/
\mb@b                 % = \vss in \@imakepicbox
\mb@l                 % = \hss in \@imakepicbox and \@shortstack
\mb@r                 % = \hss in \@imakepicbox and \@shortstack
\mb@t                 % = \vss in \@imakepicbox
\hss                  % = \vss in \@iiiparbox
\unhbox               % = \unvbox in \@iiiparbox
\@upordown            % = \raise or \lower in \@sline
\@cite@ofmt           % = \hbox
\endline              % = \cr
\@@par                % = \par
\endgraf              % = \par
(active) ^^M          % = \par
\@@end                % = \end
\install@mathalphabet % = \gdef
\l@ngrel@x            % = \long (or \relax) in \@star@or@long
\@end@tempboxa        % = \endgroup
\@err@<74 spaces>     % = \errmessage in for old TeXs.
\c@errorcontextlines  % = \errorcontextlines
\@let@token           % \futurelet (various uses) to what follows
\reserved@a           % \futurelet in \hline to what follows
\reserved@b           % = items in \nocorrlist (could be primitives)
\reserved@d           % = #1 of \@ifnextchar
\reserved@e           % = \vadjust in \\ or \newline

最后五行是为了完整性而包含的,但都是临时定义,因此对于任何想要挂钩原语的人来说都不是问题。最后,隐式字符标记,对于原语挂钩来说没有意义,但对其他人来说可能有用。

\bgroup        % = {
\math@bgroup   % = \bgroup
\@@math@bgroup % = \bgroup
\egroup        % = }
\@sptoken      % = space
\sp            % = ^
\sb            % = _
\@sharp        % = # in \@array

相关内容