我注意到 TeX-SE 上有几篇帖子说,在更新到最新的 TeXLive 后,以前可以正常处理的文档现在会报告错误。我没有更新,所以一切都很好,但现在我非常不愿意更新(也许不会更新)。我以为几年前的 LaTeX 文档总是可以处理的,但这似乎有点过时了。--- GOM
答案1
我认为这里的答案有几个部分。
首先,TeX Live(TL)是来自许多人,而 TL 本身的维护者只提供了其中的一小部分——他们主要是“收集者”。因此,除了例如 tlmgr
,TeX Live 并未对兼容性做出任何声明。
如果我们看一下二进制文件,就会发现它与 TL 团队有一些重叠,例如与 pdfTeX。这保持得相当保守,但其他二进制文件可能有更多的自由。LuaTeX 是最明显的例子。
我不会进一步讨论连字符模式,只想指出它们可以并且确实会发生变化,并且在没有任何警告的情况下改变换行符。
TeX Live 的主要内容当然是宏包。在那里,更改取决于各个作者。举个例子,目前还没有发生(在撰写本文时),我很快就会发布一个主要更新siunitx
- v3.0。我希望进行各种重大更改,我必须权衡
- 简单地称其为“新”软件包 - 可行但会浪费名称,意味着现有用户不会获得任何好处
- 做出重大但必要的改变,我会尽可能发出警告
- 提供一种“回退”到 v2.0 代码的方法 - 可以使用
\usepackage{siunitx}[=v2]
总的来说,我觉得在经过一段时间的 Beta 测试后发布新的主要版本是正确的做法。但是,我知道这会对用户产生一些影响:我真的无法避免如果我希望能够维护代码并修复错误。
这就引出了这样一个问题:作为一种宏扩展语言,我们无法阻止其他人使用“内部代码”。在我的例子中,我正在进行 API 更改,我知道我可以记录和测试。但我也在改变内部结构:这很难根据个人可能做过的事情进行测试。
因此,我们能做的最好的事情就是记录变化、进行测试,并致力于提供在出现问题时回滚的途径。