![避免因更新 LaTeX 中的包而导致构建中断的最佳做法是什么?](https://linux22.com/image/478861/%E9%81%BF%E5%85%8D%E5%9B%A0%E6%9B%B4%E6%96%B0%20LaTeX%20%E4%B8%AD%E7%9A%84%E5%8C%85%E8%80%8C%E5%AF%BC%E8%87%B4%E6%9E%84%E5%BB%BA%E4%B8%AD%E6%96%AD%E7%9A%84%E6%9C%80%E4%BD%B3%E5%81%9A%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
上个月,我曾两次因为升级一些 LaTeX 软件包而导致构建中断。第一次是grffile.sty
然后今天xpatchcmd
(不知道之前哪个库定义了它,但我通过添加/替换regexpatch
库修复了它)。
我的问题是如何避免这些破坏构建的情况并拥有一个可以长期存在的稳定包(LaTeX 代码 + 所需库)。一般建议(例如减少依赖项)无助于确保将来不会发生这种情况。
我可以将我的问题重新表述如下:
- 有没有办法获取当前正在运行的所有必需包的快照,并将它们捆绑在一起?容器可能
docker
是一种解决方案(不确定)。 - 有没有办法记录包的最后工作版本(直接或间接使用)并通过运行脚本返回到上一个工作集(与
npm
NodeJS 中的类似机制)? - 有没有办法比较输出的 PDF 文件(软件包升级之前和之后)以注意到视觉变化(仅比较文件,例如使用哈希函数,没有帮助,因为改进可能会发生变化)
编辑:
有点像 MVE: 假设我想以最小程度存储从 TeX 源重新创建 PDF 文档所需的所有内容。10 年后,我想更新 TeX 文档,并希望能够构建一个仅反映我对内容更新的 PDF(来自备份)。备份整个发行版是一种方法,但当然不是最小的。