我正在编辑由几位作者创建的类文件(扩展名.cls
),以根据我的大学标准格式化论文。
该文件中有许多命令(重新)定义。例如,以下内容:
\let\@ldquote=\quote
\let\@ldendquote=\endquote
\renewenvironment{quote}
{\@ldquote\setlength{\baselineskip}{\z@}}
{\@ldendquote}
确保引文为单倍行距,而不管章节其他地方的文本间距如何(通常双倍行距用于更正)。还有许多其他类似的例子。
在该示例中,据我所知,@
使用字母代替 的o
原因并不明显,即\@ldquote
代替\oldquote
。它也用于宏中\z@, \@ne and \tw@
,分别定义零、一和二的“常数”。
我个人认为这种做法是故意混淆,但这不是我第一次在类文件中看到这种情况。我是否错过了这种用法的意义,或者这只是 LaTeX 的做事方式?
答案1
命令名称中的符号@
表示内部命令,这些命令应受到保护,以免被宏包或类文件的最终用户意外使用。因此,这是宏包内部使用的“私有”命令与用户界面一部分的“公共”命令之间的区别。
请注意,这些命令不像高级编程语言中那样是私有的和公共的;\makeatletter
使得任何加载的宏包的所有内部命令都可用。