有没有办法知道编译所使用的宏?
我想将宏与包关联起来,以便猜测未使用的包(我的关联可以是近似的,因为我不愿意做出确切的猜测)。
答案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(!) 行日志。
- 我不会;我只是想尝试删除我认为没有使用的包,看看文档是否正确构建。
如果你有较新的发行版(至少是 TeX Live 2021),则可以使用新的\tracingstacklevels
原语:
\tracingmacros=1
\tracingstacklevels=1
\documentclass{article}
\begin{document}
\end{document}
然后搜索^~~.+\n
:它应该提供比仅使用更可靠的匹配\tracingmacros
。