17

我的两个朋友用塔布包裹。幸运的是,我个人没有这样做。

昨天,我了解到使用这个包实际上是非常危险的,他们将来可能无法再编译他们的文件:

禁忌包过时了吗?

当我告诉他们这件事时,他们理所当然地感到不安。虽然这个包很“危险”,但我在搜索时仍然可以找到456个结果塔布这表明该软件包被广泛使用。

我的问题是我们应该如何最好地处理这种情况。我们是否应该在以下问题的答案中添加备注塔布,说它可能很快就会被否决?

或者,甚至在更高的层次上,你认为一个作者的包,如果他不关心他的用户,也不关心他们的文档在未来是否会被破坏,是否应该放在CTAN上?无线索的用户可能会发现这个有吸引力的软件包,他们可能会为时已晚地意识到自己做出了什么选择。

6
  • 28
    我不确定你在这里用的词是否正确。在“危险软件包”下,我会理解可能在您的计算机上执行危险命令或覆盖重要文件的软件包。这两者都已经受到TeX安全功能的限制。 评论 2013年10月22日12:12
  • 2
    你可能是对的。在这篇帖子中,我复制了恩里科·格雷戈里奥(Enrico Gregorio)的答案:“我可以得出的结论是,在当前版本中使用tabu是危险的,因为它的作者已经宣布了下一版本中不兼容的更改。”
    – 英戈
    评论 2013年10月22日12:20
  • 简单回答:不要使用它们,仅此而已(与其说它们是危险的,不如说它们是不兼容/未维护的包,不要一字不差地接受@egreg单词。)并让你的朋友加入TeX.SX,让他们知道“要使用哪个包”?。 评论 2013年10月22日17:40
  • 你忘记了塔布:LaTeX项目公共许可证1.3。如果新版本无法确保兼容性,则始终可以创建当前版本的分支。 评论 2013年10月22日23:00
  • 4
    通过使用bundledoc公司(及其同伴阿拉特克斯). 我写了一个回答关于不久前如何做这件事。如果你的朋友想确保他们将来能够再次编译他们的论文,我建议他们使用这些软件包来创建一个永久的档案,准确地保存他们使用的软件包的版本。
    – 乔恩
    评论 2013年10月24日5:00
  • 1
    @乔恩,谢谢,这是一个很好的处理方式!
    – 英戈
    评论 2013年10月24日8:56

5个答案5

重置为默认值
40

作者明确表示,向后兼容性将被破坏。尽管这些问题确实值得解决,但如何解决仍然取决于包作者。让人们意识到这一事实就足够了。

不过,我不得不说,我并不太赞成向后兼容性。事情应该偶尔改变一下。

我能理解你的挫折感,但我发现你对一个包作者的态度很不合适。我绝对不会怨恨,因为这是他长期以来对开源的贡献。因此,他没有自己负责的用户群。他确实有道德义务,但只有事实上的。您总是可以找到包的旧版本。特别是把他赶走,在我看来是完全不能接受的,这意味着只留下那些有用的家伙,在他们过时的时候解雇他们。CTAN不是一家公司。

请注意,讨论的是他是应该以不同的名称发布包,还是覆盖现有的名称。不要为了恶作剧而故意破坏现有代码。这不是世界末日,尽管当事情发生故障时,它会很糟糕。

32

在这个问题的描述中有很多加载项。

兼容性没有简单的答案。我自己的软件包往往非常稳定且向后兼容,但它们也有已经开放了20年的错误报告,因为它们无法以兼容的方式进行修复。不是每个人都会说这样更好。正如@percusse在回答中所说,这是包作者的要求,在任何情况下,现有文档都可以使用当前包。塔布有一些好主意,但它重用了标准的语法阵列以一种不兼容的方式打包,这是一个不幸的选择,但无论是这一点,还是打包作者表示他已经计划好了更改,都不会使打包变得“危险”。

1
  • 13
    认真地说:如果你能修复包中的错误(或者为L3创建更好的错误),很多人都会很高兴,即使这意味着你在这里的活动更少。 评论 2013年10月24日19:19
25

除了弗洛伦特·谢尔维,没有人知道下一个版本的塔布将破裂。该软件包的主要修订版本之间已经有一些向后不兼容的更改,但范围有限。这是一个非常有前途的软件包,因为它可以实现许多以前没有的东西(或需要低级技巧)。

当我在comp.text.tex公司我很抱歉,而不是难过。很抱歉,一旦新软件包版本发布,数百名用户可能无法再编译他们的文档。我可以理解,对包进行重大修改会导致过去所做的决策发生变化,但包作者不应该让用户他的包裹在公共汽车下面。

一个可以比较的例子是标题。几年前,以标题2。多年后,不再发布标题3Axel Sommerfeldt决定返回标题解决了许多(如果不是全部)兼容性问题。

CTAN主机转速4版次4-1,因此不需要修改使用旧版本的文档。Koma-Script套件有几个<名称>2包装。使用mhchem公司必须明确选择版本=3加载包时的选项。

所以有很多可用的解决方案。对于塔布不幸的是,情况尚不明朗。使用它,如果它对你有好处,但不要相信它的存档。

2
  • 2
    我记得xy-pic在两个次要版本之间改变了一些语法,在90年代初,IIRC。 评论 2013年10月26日16:50
  • 1
    解决这个问题的真正好办法是pgfplots(pgfplot)采用了(明确的兼容性=选项)。它允许“冻结”行为和“出血边缘”行为,而不会停止开发。 评论 2017年10月11日8:08
20

的作者塔布可能不太关心向后兼容性,但CTAN的维护者却很关心。不久前,我与Robin Fairbairns就一个我是其维护者的包进行了通信,但被劝阻不要将默认启用的问题功能更改为包选项。CTAN最佳实践是发布新的、改进的塔布用一个新名字,别管旧名字。您没有得到改进,但您可以期望在升级后仍然能够格式化文档。

是否有任何特定的作者遵循这一建议是另一个问题。然而,即使您已经升级并丢失了自己的乳胶软件包,也不难找到旧版本的乳胶软件。我有一些旧文档,使用了一种晦涩的呈现风格;在它进行了不兼容的升级后,我将旧版本保存在我的个人texmf树中,并使用了不同的名称,从那时起它就一直伴随着我。(与此同时,我迁移到beamer以获取新文档。)

简而言之:不要太担心。你可能不会得到错误修复和新功能,但明年你可以重新编译你的文档。

16

正如其他人已经说过的那样,将向后不兼容等同于危险是一个主观问题。

以ConTeXt为例。与LaTeX核心相比,ConTeXt并没有断言新的更改不会破坏向后兼容性。有时,添加新功能或修复错误的唯一方法是打破向后兼容性,而ConTeXt往往会错误地以向后兼容性为代价来保持界面干净。因此,ConTeXt开发人员更容易将LuaTeX作为主要的后端引擎;现在,超过50%的ConTeXt代码是用Lua编写的,因此更容易维护和理解。这种重写导致了宏的重命名(使命名方案一致)和界面的更改(同样使界面更加一致)。因此,为MkII编写的文档不适用于MkIV。预计文档作者将不得不调整前言,并可能对文档正文进行一些小的更改。

这种发展模式并不适合所有人。有些人希望在新功能和一致性方面保持稳定性和向后兼容性(例如,出版社)。同时,向后兼容性并不适合所有人。有些人更喜欢更好的界面和新功能,而不是向后兼容(例如,研究生撰写论文)。对每个人都是自己的。

我认为,只要包作者记录更改并解释如何将旧语法转换为新语法,包作者就会为用户着想。

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.