定义新命令的方法的一般优缺点

定义新命令的方法的一般优缺点

我对定义新命令的多种方式有疑问。我浏览了网络和 TeX.SE,但找不到完整的答案(只有一些部分答案,例如,这里这里这里, 或者这里)。

我知道有几种方法:

  • \newcommand
  • \DeclareRobustCommand
  • \newrobustcmd
  • \NewDocumentCommand
  • \NewExpandableDocumentCommand

仅举几例,其中大多数也有带星号的版本,当然还有像

  • \def
  • \gdef
  • \edef等等。

我得出的结论是,使用 LaTeX 宏来定义新命令通常比使用原语更好。支持宏的一些论点是更好的语法(允许您理解执行)、安全性(因为大多数宏都会检查现有的命令名称)或修补或重新定义命令的可能性。

但当我浏览其他几篇分类我发现第三方文件经常使用\def原语而不是复杂的宏。后者或多或少只在特殊情况下使用。

是否有充分的理由使用原语而不是 LaTeX 宏来定义新命令;尤其当写分类文件?也许可以减少软件包大小,或者做类似的事情?还是只是老习惯?

\newcommand我知道,如果我只是使用或 ,这将取决于具体情况\newrobustcmd。但也许有一种强烈的倾向,何时在类文件中使用原语而不是宏?

编辑

正如我的问题所暗示的,并在评论中证实,没有普遍的答案。因此,如果一些更经验丰富的 LaTeX 作者可以分享他们的个人喜好什么时候编写/编辑类文件,以及他们为什么这样做。

编辑2

到目前为止,我忘记了expl3这样的命令\cs_new...。如果我理解正确的话,LaTeX3被引入作为详细的编程层,特别适用于麦粒肿分类和其他后端文件。那么,编写此类文件的现代方法是否应该更多地依赖这些expl3命令而不是原语或或多或少简单的 LaTeX 宏?

相关内容