在某个包或类中处理完选项后是否可以进行挂钩?

在某个包或类中处理完选项后是否可以进行挂钩?

换句话说:是否可以扫描 .sty 或 .cls 文件的输入流(不使用 Perl)\ProcessOptions\relax并在后面嵌套一些给定的代码?(filehook 或 etoolbox 包不提供这样的宏。还是我遗漏了什么?)

并且作为评论:使用这样的宏来修补包或类在道德上是否正确?(当我考虑这个问题时,我得出的结论是,在确实\renewcommand存在的世界中这样做一定是可以的。但请让我知道你对此的看法。)

答案1

TeX 中的正常方法不是提前扫描,而是简单地重新定义命令。

\let\savedPO\ProcessOptions
\def\ProcessOptions{%
  \savedPO\relax
  \typeout{my stuff here}}
\usepackage{somepackage}
\let\ProcessOptions\savedPO

my stuff here可能在包处理完其选项后立即输出somepackage,然后将内容放回原处,以便以后的包加载不受影响。

重新定义 LaTex 内部结构有风险,但肯定是可能的。

相关内容