\newcommand 与 \DeclareRobustCommand

\newcommand 与 \DeclareRobustCommand

我大概知道两者的区别。但这不是我感兴趣的——我只是想知道,我应该使用哪一个? 一般来说,当我在包或类中创建命令时,我应该一直使用哪一个?

答案1

\newcommand我认为,如果没有明显的扩展问题,最好使用它。 它有两个缺点\DeclareRobustCommand

  1. \DeclareRobustCommand不检查宏是否已预定义。

  2. 定义的宏\DeclareRobustCommand效率较低。

答案2

一个简单的经验法则是,如果你创建的命令包含 LaTeX 稍后将重新读取的数据,则应该使用使用以下方式定义的健壮命令\DeclareRobustCommand.

这些数据包含在通常进入目录、图片列表、表格列表等的参数中;即写入辅助文件并在稍后读入的数据。其他地方是那些可能出现在页眉或页脚中的数据。

答案3

第 2.6 节适用于课程和软件包编写者的 LaTeX 2ε状态:

由于 LaTeX 2ε 支持不同的编码,因此必须使用为此目的提供的命令来定义生成符号、重音符号、复合字形等的命令,并在 LaTeX 2ε 字体选择中对其进行描述。[...]

此外,\DeclareRobustCommand应该用于这种类型的与编码无关的命令。

相关内容