etoolbox 中的钩子到底是什么

etoolbox 中的钩子到底是什么

\apptocmd我对软件包的 和相关工具很了解。但是,即使读了三遍手册,etoolbox我仍然不明白 和相关工具 是做什么的?\appto<hook>{<code>}

程序包程序员是否应将 hook 定义为不带参数的宏(如)?在这种情况下,与 patched by和 related\myhook命令有何区别?\apptocmd

答案1

的定义\appto

% etoolbox.sty, line 891:
\newrobustcmd{\appto}[2]{%
  \ifundef{#1}
    {\edef#1{\unexpanded{#2}}}
    {\edef#1{\expandonce#1\unexpanded{#2}}}}

第一个参数应该是无参数的宏。为什么不使用\apptocmd?因为它效率低得多,如果替换文本有“非标准”标记(例如,类别代码与通常不同的字符),它甚至可能无法成功。

除此之外,\appto和之间的唯一区别在于后者保留(无参数)宏\apptocmd的状态,而始终将其更改为非。\long\appto\long

相关内容