TeX Live - 所有标准宏的名称(由 TeX Live Utility 提出的宏)

TeX Live - 所有标准宏的名称(由 TeX Live Utility 提出的宏)

目标

我正在编写一个 Python 脚本,该脚本将尝试查找 (La)TeX 文件或 (La)TeX 文件的一部分中真正使用的包。我不能只保留通过指示的包,\usepackage因为如果我对 (La)TeX 文件的某个部分感兴趣,则只会使用其中的一些包。

我并不寻求一个精确的解决方案。换句话说,我的剧本会尽力做到最好,正如 Radiohead 在乐观的一天所说的那样,尽力做到最好就足够了。

如果只找到了一部分包,通常如果只使用我的脚本找到的包构建了一个新的 LaTeX 文件并且编译失败,那么我的脚本将尝试粗暴地添加\usepackage原始文件中通过导入的未保留的包。我稍后会尝试做一些聪明的事情,但现在还不行。

使用的方法

在 (La)TeX 文件或 (La)TeX 文件的某个部分中,我会查找所使用的宏,然后在一种由我的脚本构建的 BDD(可能是 NoSQL)中进行搜索。

所以我需要将宏的名称与包关联起来,一个名称可以与多个包关联起来。

目前,我并不关心用户的包裹(稍后会处理)。

我在寻找什么?

  1. 我能知道 LaTeX 编译器真正使用的包吗?日志文件中似乎显示 LaTeX 文件导入的所有包都被编译器使用。这看起来很正常,但如果编译器可以知道哪些包真正被使用,我会很乐意使用它(因为我的脚本将没有理由诞生)。
  2. 在哪里可以找到 TeX Live Utility 中提供的包中定义宏的源代码?

附言:我知道使用\csname它会使搜索变得复杂,但目前我会尝试不用它,希望搜索宏的硬编码名称就足够了。

答案1

根据这些评论,我不知道按包对所有宏进行分类是否是个好主意...一个好的选择是 Marijn 所评论的。

也许你不需要从头开始重新发明轮子,你可以阅读一些关于texliveonflyhttps://tex.stackexchange.com/a/463842/7832) 其存储库位于(https://github.com/maphy-psd/texliveonfly)虽然有点过时,但却是一个很好的起点。

我真的不认为您可以有一个明确的解决方案来创建必要包的列表,TeXLive安装多个包的集合,并且一些包与其他包具有循环依赖关系,但是,您可以尝试获得最好的结果(也许使用 TeXLive 提供的具有依赖关系的集合创建已知包的列表,或类似的东西)。

对于反复试验,我建议使用 travis (https://github.com/PHPirates/travis-ci-latex-pdf),我们不想妨碍我们的本地分发,您可以根据需要多次尝试真正最小的分发。

祝你的剧本好运。

相关内容