如何一次性查看/导出所用到的所有宏包的名称?

发布于 2024-10-24 22:00:22
配置:Windows10; TeXLive 2024

背景

编了个模板,其中cls文件也是自编的,所有宏包都写在cls文件中

现编写帮助手册时,想告诉读者用到了哪些宏包,用来给读者排查哪些包需要额外安装、额外更新。

问题描述

cls文件自创建以来时间已久、代码体量大,实在不想一行行地去查用了哪些包 >_< ...

因此是否有快捷方法,一次性查看/导出所用到的所有宏包的名称?

查看更多

关注者
0
被浏览
275
雾月
雾月 2024-10-25
这家伙很懒,什么也没写!
\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 自动加载的,直接忽略即可。

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览