370 字

底层命令解释

LaTeX; LaTeX;

判断是否已经定义用 \ifdefined 或者 \ifcsname,如果没有eTeX支持也可以用 \ifx\foo\undefined 或者 LaTeX 内核的 \@ifundefined

判断是否用过一遍,可以在\foo的定义中设置一个全局变量,然后在后面检测。

\xdef把定义中的内容完全展开,用来定义一个宏;\let让新宏与旧宏意义相同。\xdef就是\global\edef\let没有\global的意思。

\def\a{foo}
\def\b{\a}
\edef\c{\b} 得到的是 \c -> foo
\let\d\b    得到的是 \d -> \a

一个外链:What is the difference between \let and \edef

\renewcommand所带参数可以包含用\par或空行表示的新段落;\renewcommand*不行

将一个命令输出为带斜杠的字符串。

让制控命令顺序颠倒过来,后面的命令先起作用,下边是一个证明的例子:

\def\test{9999}
\makeatletter
\def\testt#1#2#3#4{\@alph{#1}\@Alph{#2}\@Roman{#3}\@roman{#4}}
\makeatother
\expandafter\testt\test

如果不加\expandafter的话:

\testt\test

就会出错。