在 Latex 的命令中,我发现所有命令都是小写的?这样很难区分单词?我们为什么不使用 CamelCase?有什么原因吗?
答案1
大多数 LaTeX 文档命令都是小写的,但这并不普遍:核心中有类似的东西\Phi
,如评论中指出的那样,但也有一些包添加了一些混合或大写的命令。可能最明显的混合大小写命令就是\LaTeX
它自己!然而,有人可能会说,文档命令的模式就像你说的那样,它们是小写的,除了将某些字符大写具有直接语义含义的情况:希腊语/俄语大写字符的命令、徽标等。
设计/软件包命令往往采用驼峰式大小写。这使得它们“脱颖而出”,主要针对软件包作者。例如,在软件包中,您可能会看到\ProvidesPackage
或\DeclareRobustCommand
等。这些在文档中通常并不常见。
全大写命令的数量非常有限。对我来说最明显的命令\SI
来自我的siunitx
包,但还有其他命令。一般来说,尽量避免使用全大写。这使得该区域的名称对于调试非常有用:\ERROR
例如,LaTeX 团队经常在创建错误条件时将其用作占位符。
答案2
这是一个任意的惯例,但保持一致很重要。如果 Donald E. Knuth 有时使用小写字母,有时使用驼峰式字母表,有时使用 PascalCase,用于 TeX 基元,那么记住命令是\baselineskip
、\baselineSkip
还是\BaselineSkip
,或者是就会困难得多\BaseLineSkip
。原始设计中的少数例外非常合乎逻辑,例如\Theta
大写字母\theta
和\TeX
与徽标的字体相匹配。Leslie Lamport 最初也坚持使用这种格式来处理 LaTeX(除了前面提到的 ,\LaTeX
遵循 的示例\TeX
)。
事实上,大多数较新的 LaTeX 内核命令遵循不同的约定,对于 expl3 语法中的任何内容,要么是\PascalCase
,要么是 。因此,,但是,并且您只需要记住任何给定命令是否比更改旧还是新。在这里,记住命令几乎总是较新的会有所帮助。对于诸如 之类的东西,它们不可能与 TeX 原语 发生冲突,不是吗?但是对于和 之类的命令,您只需逐个记住它们即可。其他一些软件包(例如)使用,这让我困扰了不止一次。您可能会或可能不会同意这个决定,但至少如果您知道该命令来自哪个模块以及它使用哪种约定,您就可以保持直线。\scope_snake_case_type:xyz
\newcommand
\DeclareRobustcommand
\Declare
\IfFileExists
\if
\providecommand
\ProvidesPackage
ucharclasses
\camelCase