\@arabic跟\arabic相似,指定後面計數器的顯示方式
spa
\c@xxx 是latex定義的xxx計數器的內部表示方式code
ctex-faq裏面說\makeatletter使得@成爲一個普通字母
: 那麼平時@不是普通字母麼?
: 不是能夠直接打出來不用寫成\@的麼?
tex將字符分紅16類(catcode),其中第11類是letter(a-z, A-Z),第12類是other,
就是除了其它15類的那種。tex命令只能由letter組成(這也是不少人在macro名中
用數字出錯的緣由,數字就屬於other類)。@默認屬於other類,故不能在macro的
名字中出現。
latex有個不成文的規則就是內部命令最好用@(latex自身的命令,如\@arabic,
或者宏包自身的命令,如articl.cls中的\@maketitle),而用戶命令中儘可能不要用@。
在必定程度上減少命名衝突。
根據前面的規則 @ 是不能出如今macro名字中的,因此非要用就得更改它的catcode屬性
latex在cls和sty文件中,自動將@設置爲letter類,也就是它能夠做爲macro名字
的一部分。因此咱們在cls或sty中能看到滿眼的@。
在用戶文件中latex恢復了 @ 的類別,仍然屬於other類。這樣就從機制上限制用
戶命令命名時使用@。可是咱們常常須要修改宏包內部的命令,若是這個命令名字
包含 @,首先須要作的就是更改@的catcode爲letter,這也就是\makeatletter的做用,
在修改完以後,通常建議恢復@的catcode爲other,這也就是\makeatother。
在Latex source中,這兩個命令的定義是:
\def\makeatletter{\catcode`\@11\relax}
\def\makeatother{\catcode`\@12\relax}it