这这个问题的答案提到诸如\@author
和 之类的命令\@director
,latex.ltx 中充满了这些命令。但是,当我\@author
在文档中使用时,它只输出单词“author”。@
命令名称中的 是什么意思?
答案1
在命令名称的开头@
是实现私有命名空间,即定义对用户隐藏的命令。这样用户就无法无意间修改它们。这是一种安全带。
命令的标识符(\
字符后的文本)必须是字母序列。TeX 对于哪个字符是字母或不是字母的判断由以下表格定义:猫代码,可以在运行时重新配置。
许多软件包发现定义私人的用户无法轻易访问宏,从而防止用户无意中修改或使用它们。这是通过 catcode 以以下方式实现的:
- 排列得以便有
@
一个字母的 catcode。 @
定义私有宏,其名称中包含字母。- 整理得
@
不再有一个信件的目录代码了。
当用户代码在步骤 3 之后控制执行流程时,它就不会无意中与@
名称中带有 的宏进行交互。