为什么在命令名称中更喜欢使用字母@?

为什么在命令名称中更喜欢使用字母@?

我正在编辑由几位作者创建的类文件(扩展名.cls),以根据我的大学标准格式化论文。

该文件中有许多命令(重新)定义。例如,以下内容:

\let\@ldquote=\quote
\let\@ldendquote=\endquote
\renewenvironment{quote}
   {\@ldquote\setlength{\baselineskip}{\z@}}
   {\@ldendquote}

确保引文为单倍行距,而不管章节其他地方的文本间距如何(通常双倍行距用于更正)。还有许多其他类似的例子。

在该示例中,据我所知,@使用字母代替 的o原因并不明显,即\@ldquote代替\oldquote。它也用于宏中\z@, \@ne and \tw@,分别定义零、一和二的“常数”。

我个人认为这种做法是故意混淆,但这不是我第一次在类文件中看到这种情况。我是否错过了这种用法的意义,或者这只是 LaTeX 的做事方式?

答案1

命令名称中的符号@表示内部命令,这些命令应受到保护,以免被宏包或类文件的最终用户意外使用。因此,这是宏包内部使用的“私有”命令与用户界面一部分的“公共”命令之间的区别。

请注意,这些命令不像高级编程语言中那样是私有的和公共的;\makeatletter使得任何加载的宏包的所有内部命令都可用。

相关内容