pdfTeX、pdfLaTeX 和相关引擎使用 pdf 扩展的命令的未来

pdfTeX、pdfLaTeX 和相关引擎使用 pdf 扩展的命令的未来

我目前正在构建一个类文件,最好使用最佳实践的宏设置。我目前的范例是用 (纯) TeX 编写所有宏,因为我发现调用软件包依赖项 (无论是否是稳定版本) 的最佳实践是矛盾的。

从假设这是正确的开始,我愿意使用和部分提供的扩展(pdf想想着色命令或其他命令)。首先,我想知道我到底能从这些命令中得到什么。我真的希望在我的类文件中只使用稳定的宏,这样任何人都可以在遥远的未来使用它。pdfTeXpdfLaTeX\pdfliteral{}

更简洁地表述这个问题:我是否可以期待相关命令的改变\pdf,或者我可以考虑它们完全地稳定,以便二十年后还能以同样的方式编译?

答案1

正如评论中指出的那样,绝对权威这里的答案实际上只能来自 pdfTeX 邮件列表,但希望我们至少可以检查涉及的可能因素。

随着开发工作从 pdfTeX 转向 LuaTeX,对 pdfTeX 进行严格的错误修复以外的更改似乎不太可能。事实上,在开发 pdfTeX 方面所做的努力具有强烈的维护稳定性的意识,这就是为什么 TeX Live 和 MiKTeX 都准备使用 pdfTeX 作为除tex(将始终使用 Knuth 的 TeX 的未修改版本)之外的所有引擎的默认引擎。

如果您查看 pdfTeX 提供的除 Knuth 的 TeX90 之外的原语,最“稳定”的一组是 e-TeX 扩展,于 1999 年完成,此后一直保持不变(除非修复了错误)。这些前缀\pdf...可能会由首次引入它们的 pdfTeX 版本进行检查:那些可用时间较长的前缀更有可能被广泛使用,因此是“稳定的”,因为删除将是一个重大问题。话虽如此,但 pdfTeX 已经有好几年没有发布主要版本了,即使那时移动原语的处理非常谨慎(撤回之前的弃用阶段意味着已经提前几年通知)。

如果具体来看\pdfliteral,它相当于\special{pdf: ...}pdfTeX 实现的 PDF 模式驱动程序,因此直接与它相关联。因此,它直接与 pdfTeX 的“核心”功能相关联,因此可以被视为与其他任何东西一样稳定。


当然,所有这些都受到我们所谓的“稳定性”的影响。即使是 Knuth 的 TeX 也可能会以错误修复的形式发生变化,虽然现在这种情况极为罕见,但源代码中的任何变化都可能对一个或多个用例产生连锁影响。从更复杂的角度来看,未来使用 TeX 取决于 TeX 系统、适当的二进制文件等的持续可用性。


也许值得注意的是,这个问题似乎集中在开发 LaTeX2e 类或包上。(类应该主要与设计有关,所以我假设这里的“编程”元素在包中。)因此,它依赖于这样一个事实:LaTeX2e 本身足够稳定,因此无需进行任何更改即可保持文件完全不变。LaTeX 团队一直小心翼翼地尝试提供一个旨在实现此目的的系统,但 LaTeX 中存在错误,修复这些错误确实意味着随着时间的推移会发生一些变化。

我想在 LaTeX 团队环境中指出的是,对于expl3/LaTeX3 的工作(团队希望拥有“稳定”的底层基础),使用少量的\pdf...基元被认为是明智的。使用 pdfTeX 时,字符串比较使用,\pdfstrcmp而缩放和旋转利用\pdfliteral。图形包含不是为此编写的,但我们可以假设\pdfximage将使用等等。

相关内容