检查 LaTeX 发行版的发布日期

检查 LaTeX 发行版的发布日期

当自动记录一些代码时,LaTeX 输出会给出合乎逻辑的警告:

Package: fixltx2e 2016/12/29 v2.1a fixes to LaTeX (obsolete)
Applying: [2015/01/01] Old fixltx2e package on input line 46.


Package fixltx2e Warning: fixltx2e is not required with releases after 2015
(fixltx2e)                All fixes are now in the LaTeX kernel.
(fixltx2e)                See the latexrelease package for details.

Already applied: [0000/00/00] Old fixltx2e package on input line 53.

所以就我自己的情况来说,我可以省略这一行:

\usepackage{fixltx2e}

但这会给那些(不幸的)仍然使用旧版本 LaTeX 的人带来一些问题。

我发现https://tex.stackexchange.com/a/569709/44119

自 2020-10-01 版本起,LaTeX 内核提供了命令\IfFormatAtLeastTF{<date>}{<true code>}{<false code>}

但这当然会带来同样的问题,因为这仅在 2020 年发布后才存在。

我还发现https://tex.stackexchange.com/a/26229/44119

\newcommand*\@iflatexlater{\@ifl@t@r\fmtversion}
\@iflatexlater{2001/09/01}{\TRUE}{\FALSE}

并将其应用为:

  \newcommand*\@iflatexlater{\@ifl@t@r\fmtversion}
  \@iflatexlater{2016/01/01}{}{\usepackage{fixltx2e}}

给了我错误:

! LaTeX Error: Command \@ already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.15   \newcommand*\@i
                      flatexlater{\@ifl@t@r\fmtversion}
?
! Emergency stop.
 ...

l.15   \newcommand*\@i
                      flatexlater{\@ifl@t@r\fmtversion}
!  ==> Fatal error occurred, no output PDF file produced!

通常在这个网站上创建一个 MWE 是很常见的,但我希望这里提供的信息已经足以给出解决方案的指示。

答案1

您的上一个版本不起作用,因为您需要在命令名称中\makeatletter使用@。建议的方法是定义:

\makeatletter
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\makeatother

然后始终使用\IfFormatAtLeastTF\providecommand仅当命令尚不存在时才会定义该命令,这正是您想要的。


如果你正在编写包或类,我不建议你支持超过 3 或 4 年的 LaTeX 版本。TeXLive 2015 是老的,现在真的没有理由使用它:当时,对旧版本的支持很重要,因为(主要)因为 Overleaf 和 arXiv,但现在两者都使用足够新的发行版。

相关内容