考虑测试用例:
\documentclass{report}
\usepackage{appendix}
\title{Title}\author{}\date{}
\newcommand\hooktest{this shouldn't be printed}
\AddToHook{begindocument/before}{
\renewcommand\hooktest{hook before title}
}
\AddToHook{cmd/maketitle/after}{
\renewcommand\hooktest{hook before ToC}
}
\AddToHook{cmd/tableofcontents/after}{
\renewcommand\hooktest{hook before main part}
}
\AddToHook{env/appendices/begin}{
\renewcommand\hooktest{hook before Appendices}
}
\begin{document}
\hooktest\maketitle\newpage
\hooktest\tableofcontents\newpage
\hooktest\chapter{Test1}\newpage
\begin{appendices}
\hooktest\chapter{Test2}
\end{appendices}
\end{document}
文档有 4 个部分(标题、目录、正文、附录),需要运行相关\renewcommand
程序。基于钩子文档中的示例使用了三种不同的钩子类型和三种不同的位置。这是不一致的,而且。env/appendices/begin
似乎只被正确使用,很有趣
是否\maketitle
有\tableofcontents
自己的内部环境,可以使用env
钩子访问?例如:
\AddToHook{env/someTitleEnvironment/begin}{
\renewcommand\hooktest{hook before title}
}
\AddToHook{env/someTocEnvironment/begin}{
\renewcommand\hooktest{hook before ToC}
}
\AddToHook{env/someTocEnvironment/end}{
\renewcommand\hooktest{hook before main part}
}
欢迎提出有关替代解决方案的建议。