\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