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