LaTeX 项目标志LaTeX 项目

LaTeX 软件中的缺陷

简介

LaTeX 自 20 世纪 80 年代中期就已存在。除了 LaTeX 的内核和一些核心软件包由 LaTeX 项目团队维护之外,还有数千个附加软件包由世界各地许多不同的人开发和维护。

像所有软件(特别是正在不断发展的软件)一样,LaTeX 也确实存在缺陷:有些是长期存在但未被发现的,另一些是由于新的或修改的代码而新出现的。

LaTeX 团队非常清楚稳定性和向后兼容性是 LaTeX 生态系统中非常重要的资产。因此,在过去十年中,除了修复缺陷外,我们基本上保持内核和核心软件包不变。因此,在核心软件中遇到缺陷是相当罕见的情况,如果发生,通常是一个非常晦涩的缺陷,或者是发生在我们添加到 LaTeX 核心的最新添加内容中的缺陷。

在软件包领域,情况有些不同,那里有更活跃的开发,并且定期出现新的软件包。此外,由于开发掌握在许多彼此独立行动的开发人员手中(并且通常对功能、特性和界面有不同的想法),某些软件包的组合根本无法协同工作,或者只有当软件包以特定的顺序加载或使用一组特殊的选项时才能协同工作。因此,在该领域,我们确实看到更多缺陷或可以归类为此类的行为。

虽然这有点不幸,但这是相当活跃的开发和开放模型的后果,在这种模型中,基本上每个人都可以自由地提供附加组件并将其贡献给 CTAN。但与此同时,这种模式也是 LaTeX 仍然非常流行的原因之一,也是您将在 LaTeX 世界中找到几乎任何排版问题的解决方案的原因。因此,这有点像“杯子半满或半空”的情况。

关于布局和界面缺陷的政策

首先,我们可能应该强调,即使我们都同意不同的行为或不同的布局会是更好的选择,但对于标准文档类(articlereportbook)的设计中的“缺陷”以及命令的可疑但长期建立的界面行为,我们通常不会更改。当然,我们欢迎您使用下面解释的程序报告这些领域的问题,但很可能这些报告将被搁置。

原因是内核接口和文档类已在基本上所有文档中使用了多年(即使使用不同类的文档也经常在后台基于标准类构建它们),因此,此类更改将破坏或至少显着更改几乎所有现有文档。另请参阅关于此政策的文件 LaTeX2e News Issue 07

搜索已报告的缺陷

可以搜索已报告缺陷的数据库,以查看问题是否已被报告,或者是否已经有解决方案或解决方法。在过去的二十年中,LaTeX 项目团队使用 GNATS(FSF 的一个自由软件系统)维护了一个缺陷数据库。虽然这在过去对我们很有帮助,但它有其自身的问题,并且随着我们转向基于 Git 的源代码控制,其工作流程不再适用。因此,我们决定切换到新的跟踪系统,自然的选择是使用 GitHub 设置(现在托管源代码的地方)中已提供的系统,即 Issue Tracker

遗憾的是,无法自动将旧的缺陷报告转移到新系统中,因此我们处于稍微尴尬的境地,即旧的缺陷在一个系统中,新的缺陷在另一个系统中。因此,为了搜索已报告的缺陷,有必要搜索两个系统

随着时间的推移,我们希望 Gnats 中列出的缺陷都只具有历史意义,但现在在两个地方都查找可能很有帮助 – 对此感到抱歉。

两个数据库都只涵盖与核心 LaTeX 软件(LaTeX 内核 + 团队维护的软件包)相关的缺陷。关于非我们维护的软件包的缺陷将不会在那里(或者如果报告了则会关闭),因为 LaTeX 项目团队无法对此做任何事情。

如何报告缺陷?

如果您认为自己在 LaTeX 软件中发现了新的缺陷,那么将其报告给正确的人非常重要,以便可以修复它(当然,如果您知道对您有效的解决方法,这也非常重要)。我们意识到,对于大多数用户来说,弄清楚要将缺陷报告发送给谁并不容易。因此,我们编写了一个小型软件包 latexbug.sty,应该在这方面有所帮助。

提供显示问题的测试文件

为了报告缺陷,重要的是提供一个简短的测试文件,该文件展示了问题。latexbug.sty 软件包应该加载到用于报告 LaTeX 缺陷的任何此类测试文件的顶部,如下所示

   \RequirePackage{latexbug}    % <- first line
   
   \documentclass{article}      % or some other class

   ...                          % code showing the problem

如果您的发行版中不包含 latexbug.sty 软件包,您可以从此站点下载它。在这种情况下,只需将其放在测试文件旁边的目录中(或将其放入您的本地 texmf 树中,以便始终可以找到它 – 如何执行此操作取决于您使用的安装)。

如果您运行测试文件,此软件包将检查是否有任何代码使 LaTeX 团队不太可能处理该缺陷,如果找到此类代码(例如,第三方维护的软件包),它将向您报告该事实,并要求您从测试文件中删除该软件包。如果需要此类软件包来展示问题,则应将问题报告给此软件包的维护者。如果我们知道如何联系维护者,latexbug.sty 将告诉您如何联系他们,否则您必须通过其他方式找到(通常维护地址是软件包文档或软件包代码的一部分)。

如果您认为缺陷在核心 LaTeX 中(由 LaTeX 团队维护),但 latexbug.sty 抱怨的文件是展示问题所必需的,那么请继续并将缺陷报告发送给我们,但在您的缺陷描述中明确解释这一点。

发送给我们的缺陷报告,如果没有 \RequirePackage{latexbug} 行和/或包含 latexbug 软件包标记的第三方代码,则很可能会在我们的缺陷跟踪系统中关闭,且不作任何评论!

一点背景知识

除了内核代码外,还有数千个软件包,而 LaTeX 项目团队仅支持几十个核心软件包。因此,如果缺陷是由于来自贡献的第三方软件包的代码引起的,则 LaTeX 项目团队无法帮助或修复该代码,因为该代码由其他人维护。因此,如果将此类缺陷报告发送给我们(通过本网站),最终每个人都会不高兴

如果您花时间准备测试文件并提交缺陷报告,我们真的非常感谢,并且我们希望通过要求使用 latexbug 有助于将缺陷报告发送给正确的受众,以便可以解决它。

提交缺陷报告

如果 latexbug 指示缺陷出在核心 LaTeX 中,并且应该由我们(即 LaTeX 团队)来处理,那么请通过访问

在那里打开“新问题”并在表格中填写必要的信息。

目前,仍然可以在 旧系统中打开缺陷报告,但如果您使用新的跟踪系统,我们将不胜感激。

但是,如果您的缺陷涉及第三方软件包,并且应该由这些软件包的维护者来处理,请将您的测试文件发送给他们,而不是发送给我们,因为我们将无法解决该问题。感谢您的理解。

报告网站缺陷

如果您认为自己在我们的网站上发现了缺陷,您可以将其报告给 网站团队。如果您确实提交了报告,感谢您抽出时间!