为什么 LaTeX 仍然使用 \DeclareRobustCommand[*]?

为什么 LaTeX 仍然使用 \DeclareRobustCommand[*]?

\DeclareRobustCommand[*]...由于 LaTeX 现在需要 eTeX,因此用by替换所有强命令的定义会容易得多\protected[\long]\def...,不是吗?

的复杂定义带来了哪些优势?还应该提到的是,使用或\DeclareRobustCommand无法找出以这种方式定义的命令的定义。示例:当您写入时,您会得到这似乎是无稽之谈,因为命令总是扩展为它自己,这会让 TeX 崩溃。请帮助我理解这一点。\show\meaning\meaning\TeXmacro:->\protect \TeX

梅威瑟:

\documentclass{article}

\begin{document}

% latex.ltx contains
% \DeclareRobustCommand\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
\meaning\TeX% macro:->\protect \TeX % This is useless.

\TeX

% define \TeX by \protected\def
\protected\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
\meaning\TeX% The real definition is shown.

\TeX

\end{document}

相关内容