在包中使用 latexrelease 的 \IncludeInRelease?

在包中使用 latexrelease 的 \IncludeInRelease?

阅读 latexrelease 包上的文档后,我发现有一个用于 latex 内核的系统,它允许用户简单地传递一个日期参数(大概是他们的文档成功编译为预期输出的日期)来指定用户希望使用的 latex 内核的版本。

目前,我使用版本处理软件包的向后兼容性,例如,我有 compat31、compat32 等选项,允许用户指定他们想要使用该版本的代码。我应该在软件包中使用 latexrelease 中的 \IncludeInRelease 功能吗?还是这仅适用于内核开发人员?如果没有,是否有另一种按日期进行发布版本控制的标准方法?

如果非内核软件包应该使用 \IncludeInRelease,那么可选参数的功能是什么?文档中说“因此,\IncludeInRelease 有一个可选参数,如果未指定 latexrelease 的日期选项,则指定要使用的替代日期”,但随后他们似乎建议,给定以下代码(2015/01/01 之后??)只要 latexrelease 未加载等于或早于 2015/01/01 的日期,下面的空块就会执行,这与我所期望的相反,如果 2015/01/01 用作日期(如果未指定日期选项)。

\IncludeInRelease{2015/03/01}[2015/01/01]{\widget}{Widget Definition}
\EndIncludeInRelease

\IncludeInRelease{2015/01/01}{\widget}{Widget Definition}
\def\widget{new version}%
\EndIncludeInRelease

答案1

可以\IncludeInRelease在包中使用,但(尝试过后:-)我不推荐这样做。我们引入了一种相关机制,该机制在具有包回滚的包上下文中效果更好。

请参阅 ltnews 第 28 期“包和类的通用回滚概念”

您还可以查看(例如)array.sty工具包中使用它的地方。

array.sty开始

\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}

\DeclareRelease{}{2016-10-06}{array-2016-10-06.sty}
\DeclareRelease{v2.4}{2020-02-10}{array-2020-02-10.sty}
\DeclareCurrentRelease{}{2020-10-01}

如果你使用

\usepackage{array}

你获取的是当前版本

 \usepackage{array}[=v2.4]

或者

\usepaackage{array}[=2016-10-06]

将加载保存的旧版本,除了声明可用的版本外,版本检查和加载由 LaTeX 的核心包加载代码处理,而不是数组包本身。

相关内容