ltdefns.dtx
\@height, \@depth, \@width, \@minus, \@plus, \hb@xt@ 省空间之用.
\@namedef{ NAME } 如 \def{\NAME}, 但 NAME 可以含任何字符.
\@nameuse{ NAME } 扩展成 \{NAME}.
\@ifnextchar 测试下一个字符并执行相应的命令.
\@ifundefined, \@ifdefinable 测试是否已经定义或者可定义.
\newcommand, \renewcommand, \newenvironment, \renewenvironment 定义命令和环境.
\@cons, \@car, \@cdr 如 LISP 中相应函数名.
\typeout 输出
\typein [CMD]{MSG} 输入.
\@carcube 取以 \@nil 结尾的列表中前三个.
\@onlypreamble, \@preamblecmds 添加只有文档前面才能执行的命令列表.
\@star@or@long 测试是否有 * 而决定是否定义 long 型命令.
\newif
\providecommand 如果已经定义, 就不放弃.
\CheckCommand 确认命令已经定义.
\@gobble, \@gobbletwo, \@gobblefour 除去参数.
\@firstofone, \@firstoftwo, \@secondoftwo, \@iden, \@thirdofthree 返回指定的参数.
\@expandtwoargs 将两个参数完全展开并传给宏执行.
\@backslashchar 类别为 12 的 "\".
\@unexpandable@protect 在扩展(\edef)中保护命令.
\DeclareRobustCommand 声明一个被保护的命令.
\@ifundefined 测试命令是否已定义并执行相应的命令.
\@qend, \@qrelax 分别为类别为 12 的 end, relax.
\@ifnextchar 测试下个字符并执行两个命令中的相应的. 一个技巧是怎样将空格作为宏的定界符.
\makeatletter, \makeatother 改变 "@" 的类别.
\@ifstar 测试下个字符是否为 "*" 并执行相应命令.
=\@dblarg= { *CMD* }{ ARG } 扩展成 \CMD[ARG]{ARG}, 而 {CMD}[OPT]{ARG} 扩展成 \CMD[OPT]{ARG}.
\@sanitize 将所有的特殊的字符除了"{}"的类别改为 12.
\@onelevel@sanitize 将宏定义的中所有字符类别改为 12.
No comments:
Post a Comment