编译期间使用的宏列表

编译期间使用的宏列表

有没有办法知道编译所使用的宏?

我想将宏与包关联起来,以便猜测未使用的包(我的关联可以是近似的,因为我不愿意做出确切的猜测)。

答案1

如果你真的想要做到这一点1,你可以添加\tracingmacros=1在文档顶部添加,然后 TeX 会向你展示每一个宏扩展确实如此。例如,

\tracingmacros=1
\def\mycmd{hello \world}
\def\world{world!}

将会.log有:

\mycmd ->hello \world 

\world ->world!

因此您可以使用类似这样的正则表达式来解析它^\n.+?->(对于一些较长的复杂宏,它将失败,但这些宏可能是包内部的,因此对于您的需要来说,它们应该不重要)。您将需要其他东西来从该匹配中提取宏名称(通常用空格分隔应该可以,因此您可以使用 simper ^\n.+?\,但这会产生一些误报)。

请注意,

\tracingmacros=1
\documentclass{article}
\begin{document}
\end{document}

产生 164000(!) 行日志。

  1. 我不会;我只是想尝试删除我认为没有使用的包,看看文档是否正确构建。

如果你有较新的发行版(至少是 TeX Live 2021),则可以使用新的\tracingstacklevels原语:

\tracingmacros=1
\tracingstacklevels=1
\documentclass{article}
\begin{document}
\end{document}

然后搜索^~~.+\n:它应该提供比仅使用更可靠的匹配\tracingmacros

相关内容