配置:Windows10; TeXLive 2024
编了个模板,其中cls文件也是自编的,所有宏包都写在cls文件中。
现编写帮助手册时,想告诉读者用到了哪些宏包,用来给读者排查哪些包需要额外安装、额外更新。
cls文件自创建以来时间已久、代码体量大,实在不想一行行地去查用了哪些包 >_< ...
因此是否有快捷方法,一次性查看/导出所用到的所有宏包的名称?
\makeatletter\ExplSyntaxOn
\clist_new:N \g__my_packages_clist
\int_new:N \g__my_level_int
\AddToHook{package/before}{\int_gincr:N \g__my_level_int}
\AddToHook{package/after}{
\int_gdecr:N \g__my_level_int
\int_compare:nNnT \g__my_level_int = { 0 }
{ \clist_gput_right:Nx \g__my_packages_clist { \@currname } }
}
\AddToHook{enddocument/info}{ \tl_show:e { Packages:~ \g__my_packages_clist } }
\ExplSyntaxOff\makeatother
\documentclass{} % <- 改成你的文档类
\begin{document}
\end{document}
然后在终端中正常编译。这样可以列出使用的文档类中直接加载的宏包(不包括它们依赖的宏包,如果需要,把代码中的 level=0
改成其它值,或直接删去即可),也会包含这个文档在导言区加载的宏包(这里没有)。
如果不是用 xelatex 编译的,最后一个加载的宏包可能是 epstopdf-base
,这是 LaTeX 自动加载的,直接忽略即可。
已解决。醍醐灌顶,感谢 ~