4.1 小节适用于课程和软件包编写者的 LaTeX2e包含以下段落:
\NeedsTeXFormat {⟨format-name⟩} [⟨release-date⟩]
此命令告诉 TeX 应使用名为 ⟨ 的格式来处理此文件格式名称⟩. 您可以使用可选参数 ⟨发布日期⟩ 进一步指定所需格式的最早发布日期。当格式的发布日期早于指定日期时,将生成警告。标准 ⟨格式名称⟩ 是 LaTeX2e。如果存在日期,则必须采用 yyyy/mm/dd 格式。
我有两个关于 ⟨ 密切相关的问题发布日期⟩ 的参数\NeedsTeXFormat
:
- 如何在命令行或 TeX Live Utility 中获取我的 TeX 发行版当前使用的 LaTeX 内核的发布日期?
- 始终指定最新版本的日期是否是好的做法?如果我理解
\NeedsTeXFormat
正确的话,这样做将促使没有最新版本的用户更新其发行版。期望用户保持最新状态是否公平?我是否可能会“失去”可能无法获得最新发行版的潜在客户?
答案1
一种简单的方法是查找
\fmtversion
中的定义latex.ltx
,例如(bash):$ grep edef.fmtversion $(kpsewhich latex.ltx) \edef\fmtversion{2011/06/27}
或者(见egreg 的评论), 您可以使用:
$ texdef -t latex fmtversion \fmtversion: macro:->2011/06/27
或者可以直接询问 latex:
$ latex '\typeout{\fmtversion}\stop' | grep LaTeX2e LaTeX2e <2011/06/27>
“完美”日期应该是最低发布日期,以便文档可以与此版本或更新的版本兼容。
- 我认为没有必要总是指定最新的发布日期。特别是 LaTeX 内核已经冻结多年了。因此,文档不太可能需要最新的 LaTeX 版本。有许多或多或少过时的 TeX 发行版(Linux 发行版中 TeX 发行版的更新周期很慢,...)。使用最新日期确实会给用户带来一些不必要的麻烦。
另一方面,测试使用旧版本的文档/包也不太容易。这很费时间,而且我怀疑很多作者都不想成为考古学家。
请求的软件包发布日期功能很有用,特别是如果使用较新版本的功能,例如:
\usepackage{foobar}[2014/02/17] % or \RequirePackage inside packages/classes
那么,对于用户来说,过时的错误消息比晦涩难懂的未定义命令错误或其他故障更清晰。软件包的文档/ChangeLog/版本历史记录(有时)有助于找到合适的发布日期。