latex中@的含意
Posted ssyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了latex中@的含意相关的知识,希望对你有一定的参考价值。
@arabic跟arabic类似,指定后面计数器的显示方式
[email protected] 是latex定义的xxx计数器的内部表示方式
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中,这两个命令的定义是:
defmakeatletter{catcode`@11
elax}
defmakeatother{catcode`@12
elax}
以上是关于latex中@的含意的主要内容,如果未能解决你的问题,请参考以下文章