当前的问题如下\@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)