コマンド名の先頭の「@」はどういう意味ですか?

コマンド名の先頭の「@」はどういう意味ですか?

この質問に対する答え\@authorやなどのコマンドについて言及しており\@director、latex.ltx にはそれらのコマンドが満載です。しかし、\@author文書で を使用すると、単に「author」という単語が出力されます。@コマンド名の意味は何ですか?

答え1

@コマンド名の先頭に を付けるのは、プライベート名前空間、つまり、ユーザーから隠されたコマンドを定義します。これにより、ユーザーは誤ってコマンドを変更できなくなります。これは安全ベルトです。

コマンドの識別子(\文字の後のテキスト)は、文字のシーケンスでなければなりません。TeXでは、どの文字が文字であるか、そうでないかは、次の表で定義されています。キャットコード、実行時に再構成できます。

多くのパッケージでは、プライベートマクロはユーザーが簡単にアクセスできないため、ユーザーが誤って変更したり使用したりすることを防ぎます。これは、catcodes で次のように実現されます。

  1. @文字のcatcodeが付くように配置します。
  2. @名前に文字を含むプライベート マクロを定義します。
  3. @文字のcatcodeがなくなるように配置します。

ユーザーのコードがステップ 3 の後に実行フローを制御する場合、@名前に が含まれるマクロと誤ってやり取りすることはできません。

関連情報