\ltx@iffilelater(现在)对 babel 的语言定义文件返回错误结果

\ltx@iffilelater(现在)对 babel 的语言定义文件返回错误结果

当前的问题如下\@ifpackagelater 相当于 babel 的语言定义文件吗?babel这是关于基于语言定义文件版本⟨date⟩的条件测试。

这个相关问题的可接受答案建议使用\ltx@iffilelater。但是这个命令现在返回错误的结果,正如以下 MWE 所指出的那样:

\documentclass[english,french]{article}
\usepackage{ltxcmds}
\usepackage{babel}
%
\makeatletter
\ltx@iffilelater{english}{2016/03/20}{%
  \typeout{After (english)}
}{%
  \typeout{Before (english)}
}
\ltx@iffilelater{frenchb.ldf}{2016/03/20}{%
  \typeout{After (french)}
}{%
  \typeout{Before (french)}
}
\makeatother
\begin{document}
\end{document}

控制台上打印的内容:

Before (english)
Before (french)

这些都是错误的结果:

 *File List*
 article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
 ltxcmds.sty    2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
   babel.sty    2017/09/18 3.13 The Babel package
 english.ldf    2017/06/06 v3.3r English support from the babel system
  french.ldf    2017/09/07 v3.3c French support from the babel system
scalefnt.sty    
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
 ***********

顺便说一句,相关问题中提供的其他答案返回了不连贯的结果,正如以下 MWE 所指出的那样:

\documentclass[english,french]{article}
\usepackage{ltxcmds}
\usepackage{babel}

\makeatletter
\def\@b@belextension{ldf}
\def\@ifbabellater{%
  \@ifl@ter\@b@belextension%
}
%
\@ifbabellater{english}{2016/03/20}{%
  \typeout{After (english)}
}{%
  \typeout{Before (english)}
}
\@ifbabellater{frenchb}{2016/03/20}{%
  \typeout{After (french)}
}{%
  \typeout{Before (french)}
}
\makeatother
\begin{document}
\end{document}

控制台上打印的内容:

After (english)
Before (french)

相关内容