我大概知道两者的区别。但这不是我感兴趣的——我只是想知道,我应该使用哪一个? 一般来说,当我在包或类中创建命令时,我应该一直使用哪一个?
答案1
\newcommand
我认为,如果没有明显的扩展问题,最好使用它。 它有两个缺点\DeclareRobustCommand
:
\DeclareRobustCommand
不检查宏是否已预定义。定义的宏
\DeclareRobustCommand
效率较低。
答案2
一个简单的经验法则是,如果你创建的命令包含 LaTeX 稍后将重新读取的数据,则应该使用使用以下方式定义的健壮命令\DeclareRobustCommand.
这些数据包含在通常进入目录、图片列表、表格列表等的参数中;即写入辅助文件并在稍后读入的数据。其他地方是那些可能出现在页眉或页脚中的数据。
答案3
第 2.6 节适用于课程和软件包编写者的 LaTeX 2ε状态:
由于 LaTeX 2ε 支持不同的编码,因此必须使用为此目的提供的命令来定义生成符号、重音符号、复合字形等的命令,并在 LaTeX 2ε 字体选择中对其进行描述。[...]
此外,
\DeclareRobustCommand
应该用于这种类型的与编码无关的命令。