% Tests whether an package is present in a specific version (or newer)
% Syntax: \TestPackageVersion{<name>}{<yyyy/mm/dd>}
-% Note: This requires the package to be loaded first
\newcommand{\TestPackageVersion}[2]{
+ % The actual test only works if the package has been loaded before
+ \IfFileExists{#1.sty}{\RequirePackage{#1}}{}
+ \@TestPackageVersion{#1}{#2}
+}
+
+\newcommand{\@TestPackageVersion}[2]{
\message{^^J\prefix checking for package #1 at least as of #2...}
\IfFileExists{#1.sty}
{
{}% we have already defined this one.
}
-% Only for compatibility. Will be removed later.
-\let\DeclareSGMLClass=\DeclareDocBookClass
-
-\newcommand{\DeclareDocBookClass}[2][\default]{
- \message{^^J\prefix checking for docbook\space\space class \layoutname... }
- \@ifundefined{hasdocbook}
- {\message{no^^J}
- \AddLayout[#1]{\layoutname}{#2}{false}{docbook}}
- {\message{yes^^J}
- \AddLayout[#1]{\layoutname}{#2}{true}{}}
-}
-
% Stolen from article.cls
\newcommand{\today}{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
%%% Crucial versions
% This one introduces path encoding changes
\TestLaTeXVersion{2019/10/01}
+% This introduces all math and text spaces
+% previously only available via amsmath
+\TestLaTeXVersion{2020/10/01}
%%% And now, the list of available languages
% The trick is to know that \the\everyjob contains something like
\TestPackage{libertineMono-type1}
\TestPackage{libertineMono}
\TestPackage{libertineRoman}
+\TestPackage{libertinus}
+\TestPackage{libertinust1math}
\TestPackage{lmodern}
\TestPackage{luximono}
\TestPackage{mathdesign}% for Roman fonts
%\TestPackage{mathdesign}% But see above!
%%% Specific package versions
-% This only works if the package has been loaded before
-\IfFileExists{babel.sty}{\RequirePackage{babel}}{}
+% This introduces \babelfonts
\TestPackageVersion{babel}{2017/11/03}
+% This introduces multiple paragraphs in multirows
+\TestPackageVersion{multirow}{2021/01/29}
%%% Document classes
% The list of layout files has been put in this file here by the