在编程时,我会注意更新外部依赖项,以确保我的代码不受影响。使用 LaTeX(我使用的是 MikTeX),似乎很难知道何时应该更新软件包。在编程中,我最担心的是出现错误或界面更改的可能性。对于 LaTeX 软件包,这是一个问题,但似乎使用一个版本的软件包编译的文档在使用更改的版本编译时看起来也有很大不同。另外,我问过一位关于自动回归测试的不同问题已编译文档。
如何知道何时更新以及更新是否值得?如果有帮助,我会专注于使用 MikTeX 和 CTAN。
注 1:这个问题不同于这个因为我更关注更新的实践,而不是 MikTeX 的设置。
这个问题对于了解过时和推荐的替代软件包来说,这很有趣,但不同之处在于我关注的是影响许多文件的问题,而不仅仅是思考如何更好地使用给定的软件包。一些较旧的文件不一定需要重新制作(例如已发布的内容)。
答案1
作为一名教授“使用 LaTeX 进行技术写作”的学术讲师,我对学生提出以下建议。
- 每个学期开始时,进入 MikTeX 维护菜单并运行完整更新。
- 如果您加载了新包并且发生了奇怪的事情,请进行完整更新。
- 如果您要将源代码发送给另一个人,并且该源代码必须正确运行,那么请在发送之前运行更新。(这包括用于解决问题的 MWE)。
- 并且您必须不迟于每两年更新一次,否则乳胶基础包将会出问题。
答案2
我建议采用不同的方法:维护一个项目特定的texmf
文件夹,其中包含您所需的包和包版本。
背景
我经常与其他人合作开发基于 LaTeX 的项目。我们使用修订控制系统 (Subversion),但除此之外... 嗯,你知道:每个人在不同的操作系统上都安装了不同的 LaTeX,有些人仍在 Debian 上运行损坏的 TexLive 2009,许多人要么不愿意要么无法更新。
这一切都导致我很多texmf
麻烦不断——直到我开始为每个项目管理一个项目特定的文件夹。我只需将我使用的任何“较新”或“不常见”的包签入到项目特定的texmf
文件夹中,这样svn up
我的合作者一方也会更新必要的包。当然,我必须确保(通过项目特定的 Makefile、各种 shell 的 source.me 脚本和常见 LaTeX 前端的驱动程序,如 TexShop 或 latexmk),项目特定的树是同事texmf
中的第一个。TEXINPUTS
当然,我不签到每一个使用的软件包。大多数 LaTeX 软件包在过去几年中都非常稳定,因此它们很可能在每个人的安装中都可用。其他软件包,例如biblatex
,pgf
或adjustbox
正在积极开发中或尚未成为“标准”发行版的一部分;较新的版本可能会带来兼容性破坏性更改。这些软件包已签入到特定于项目的texmf
文件夹中。
结果
一开始,需要一些经验才能“了解”可能存在问题的软件包,但与此同时,这种方法效果很好:使用当时的“测试版”软件包且无法再与当前 LaTeX 发行版编译的旧项目仍然可以编译。对于使用不常见或“测试版”软件包且无法与除最新 LaTex 发行版之外的任何版本编译的当前项目,情况也是如此。