可能重复:
为什么 LaTeX 内部命令中带有 @?
\makeatletter 和 \makeatother 起什么作用?
在写入 .cls 文件时 \myname 和 \my@name 之间有什么区别?
我曾尝试过几次编写/理解其他人的软件包。虽然我还不太擅长,但我还是不断遇到名称中使用@
或的定义@@
。为什么这样做?有什么特殊含义吗?这是否与 python 中 _ 和 __ 的使用有关,以 开头的变量@
实际上不应该被弄乱,而以 __ 开头的变量绝对不应该被弄乱?
举个例子 :
\@author
在类文件 article.cls 中使用,但未在任何地方定义。因此,我假设这@
意味着它是 LaTeX/TeX 内部的某种命令。而在一个自定义类文件(res.cls
确切地说是 Michael DeCorte 编写的)中,我看到\@name
它被明确定义为
\def\name#1{\def\@name{#1}}
和
\def\@name{}
据我所知,后者确保在文档编写者未使用该命令的情况下设置默认值\name
。但这仍然没有说明为什么@
要使用该命令。