@ 符号的作用是什么?

@ 符号的作用是什么?

我确信这是 TeX 基础知识,我只是个傻瓜,但我不知道 @ 符号的用途和用法。我只能说,要确保它有效,你必须将它放在 之间\makeatletter...\makeatother。但我不知道它实际上有什么用处。谢谢!

答案1

@在 TeX 和 LaTeX 中,将不应在文档中使用的命令名称包含在私有命令名称中是惯例。通常,命令名称由单个非字母或一个或多个字母组成,例如\#\sigma。然而,在类和包文件内部,@被视为字母,因此\@startsection类程序员可以使用像这样的命令,而文档编写者(大多数情况下)无法访问它。在极少数情况下,文档编写者可能需要访问这些私有命令,因此可以使用命令\makeatletter\makeatother来打开和关闭对私有命令的访问。

较新的 LaTeX 代码使用 expl3 语法,该语法允许命令在名称中包含_和,并且具有命名约定,我不会在这里讨论。使用和控制对此命名约定的访问。即使在类和包文件中,也必须手动打开/关闭此功能,因为它会产生其他后果,而这些后果在大多数代码中可能不是所希望的(最明显的是所有空格都会被忽略)。:\ExplSyntaxOn\ExplSyntaxOff

最后一种命名约定是应用不一致的约定,但对于可供文档编写者使用但具有一些编程级别意义的命令,在命令名称中使用 CamelCase。/ 命令\ExplSyntaxOn就是\ExplSyntaxOff这种情况的示例。可以说,它也应该是\MakeAtLetter\MakeAtOther但这些命令在采用 CamelCase 约定之前。

相关内容