TeX/LaTeX 中变量名称中的 @ 和 @@ 有什么用途?

TeX/LaTeX 中变量名称中的 @ 和 @@ 有什么用途?

可能重复:
为什么 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。但这仍然没有说明为什么@要使用该命令。

相关内容