换句话说:是否可以扫描 .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 内部结构有风险,但肯定是可能的。