summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-03-18 03:01:39 +0000
committerNorbert Preining <norbert@preining.info>2022-03-18 03:01:39 +0000
commita892f739b50b6ddc5321c834017cdcbc42a3f056 (patch)
treeea36345421ed45471d9ec79ff9288cbc9437a718 /macros
parent8208f204439f3a899e43187857e3f9c86d4ebb7c (diff)
CTAN sync 202203180301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/caption/README2
-rw-r--r--macros/latex/contrib/caption/bicaption.dtx23
-rw-r--r--macros/latex/contrib/caption/bicaption.pdfbin149792 -> 150784 bytes
-rw-r--r--macros/latex/contrib/caption/caption-memoir.dtx29
-rw-r--r--macros/latex/contrib/caption/caption.dtx40
-rw-r--r--macros/latex/contrib/caption/caption3.dtx15
-rw-r--r--macros/latex/contrib/caption/fallback/v3.5/caption.dtx35
-rw-r--r--macros/latex/contrib/genealogytree/CHANGES.md41
-rw-r--r--macros/latex/contrib/genealogytree/README.md4
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-1.pdfbin207638 -> 207760 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-2.pdfbin259454 -> 259457 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-3.pdfbin205128 -> 205130 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-example-4.pdfbin307949 -> 307952 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree-languages.pdfbin466559 -> 468253 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree.pdfbin8620249 -> 9292843 bytes
-rw-r--r--macros/latex/contrib/genealogytree/genealogytree.sty10
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.contour.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.node.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.options.code.tex7
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.parser.code.tex8
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.processing.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.danish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.english.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.french.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.german.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.italian.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.debug.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex6
-rw-r--r--macros/latex/contrib/genealogytree/gtrlib.templates.code.tex651
-rw-r--r--macros/latex/contrib/lwarp/README.txt2
-rw-r--r--macros/latex/contrib/lwarp/lwarp.dtx8
-rw-r--r--macros/latex/contrib/lwarp/lwarp.ins5
-rw-r--r--macros/latex/contrib/lwarp/lwarp.pdfbin3181333 -> 3181454 bytes
-rwxr-xr-xmacros/latex/contrib/lwarp/lwarpmk.lua2
-rw-r--r--macros/latex/contrib/minimalist/README.md8
-rw-r--r--macros/latex/contrib/minimalist/minimalist-classical.sty841
-rw-r--r--macros/latex/contrib/minimalist/minimalist-plain.sty786
-rw-r--r--macros/latex/contrib/minimalist/minimalist.sty972
-rw-r--r--macros/latex/contrib/minimalist/minimart.cls371
-rw-r--r--macros/latex/contrib/minimalist/minimbook.cls371
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md5
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin953377 -> 953759 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx65
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin678372 -> 682761 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin577833 -> 578159 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin505587 -> 505922 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin546880 -> 547212 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin529923 -> 530272 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin533116 -> 533459 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin525315 -> 525654 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin575337 -> 575675 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin504553 -> 504896 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin739024 -> 739370 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin552144 -> 552619 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin649064 -> 649295 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx21
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin664451 -> 665960 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin517277 -> 517652 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin417368 -> 417639 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin573114 -> 573460 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin385559 -> 385035 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin424786 -> 425071 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin446182 -> 446450 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx209
-rw-r--r--macros/latex/contrib/projlib/README.md17
-rw-r--r--macros/unicodetex/latex/einfart/README.md2
-rw-r--r--macros/unicodetex/latex/einfart/einfart.cls1221
-rw-r--r--macros/unicodetex/latex/simplivre/README.md2
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre.cls1221
98 files changed, 4370 insertions, 2790 deletions
diff --git a/macros/latex/contrib/caption/README b/macros/latex/contrib/caption/README
index e29c6134aa..a14b3742e5 100644
--- a/macros/latex/contrib/caption/README
+++ b/macros/latex/contrib/caption/README
@@ -1,7 +1,7 @@
==========================================================================
The `caption' package bundle
-Release 2022-02-28
+Release 2022-03-17
Copyright (C) 1994-2022 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
License: LPPL = LaTeX Project Public Licence
diff --git a/macros/latex/contrib/caption/bicaption.dtx b/macros/latex/contrib/caption/bicaption.dtx
index f999ec9455..8d51567a6c 100644
--- a/macros/latex/contrib/caption/bicaption.dtx
+++ b/macros/latex/contrib/caption/bicaption.dtx
@@ -2,7 +2,7 @@
%
% This is file `bicaption.dtx'.
%
-% Copyright (C) 2010-2021 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
+% Copyright (C) 2010-2022 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
%
% --------------------------------------------------------------------------
%
@@ -36,7 +36,7 @@
% \iffalse
%<*driver>
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesFile{bicaption.drv}[2022/01/07 v1.5 Adds a bilingual caption feature to the caption package]
+\ProvidesFile{bicaption.drv}[2022/03/06 v1.5 Adds a bilingual caption feature to the caption package]
\hbadness=9999 \newcount\hbadness \hfuzz=74pt % Make TeX shut up.
%\errorcontextlines=3
%
@@ -269,9 +269,14 @@
% making the first language the second one and vice versa. (The default is |false|.)
%
% \item[bi-separator=]
-% \begin{quote}|\captionsetup{bi-separator=|\meta{name}|}|\end{quote}
% \NEWfeature{v1.3}
-% will select a separator between first and second bilingual caption.
+% The vertical distance between the first and second bilingual caption is usually
+% determined by the \TeX\ skips set by |\normal|\-|size| which is applied right
+% before both captions get typesetted.
+% (This behaviour is inherited from the original \LaTeX\ code for |\caption| which
+% applies |\normal|\-|size| right before |\@make|\-|caption|, too.)
+% \begin{quote}|\captionsetup{bi-separator=|\meta{name}|}|\end{quote}
+% will select an additional separator between first and second bilingual caption.
% You could choose one of the following: `none' (which is the default one
% and could also be addressed as `default'), `smallskip', `medskip',
% `largeskip', or a self-defined one using
@@ -291,7 +296,15 @@
% |\DeclareBiCaptionSeparator{3pt}{\vspace{3pt}}|\\
% |\captionsetup{bi-separator=3pt}|
% \end{quote}
-% will put |3pt| vertical space between the two bilingual captions.
+% will place |3pt| extra vertical space between the two bilingual captions.
+% \par\medskip
+% \textit{Note:} In contrast to the original \LaTeX\ code for |\caption| the
+% \package{caption} package does not apply |\normal|\-|size| directly
+% but will apply the caption font definition |normal|\-|size| instead
+% (which is usually defined as |\normal|\-|size|).
+% Therefore the vertical space between both captions
+% could also be influenced by redefining it, e.g.:
+% |\Declare|\-|Caption|\-|Font{normal|\-|size}{|\ldots|}|
% \end{Options}
%
% \section{The \cs{bicaption} commands}
diff --git a/macros/latex/contrib/caption/bicaption.pdf b/macros/latex/contrib/caption/bicaption.pdf
index 8d61aa6a92..4e6d3efaab 100644
--- a/macros/latex/contrib/caption/bicaption.pdf
+++ b/macros/latex/contrib/caption/bicaption.pdf
Binary files differ
diff --git a/macros/latex/contrib/caption/caption-memoir.dtx b/macros/latex/contrib/caption/caption-memoir.dtx
index 6905415fb1..4e341cb42c 100644
--- a/macros/latex/contrib/caption/caption-memoir.dtx
+++ b/macros/latex/contrib/caption/caption-memoir.dtx
@@ -183,7 +183,7 @@
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesFile{caption-memoir.sto}[2022/02/28 v2.2a Adaption of the caption package to the memoir document class (AR)]
+\ProvidesFile{caption-memoir.sto}[2022/03/02 v2.2b Adaption of the caption package to the memoir document class (AR)]
% \end{macrocode}
%
% \section{Adaptions already included in the caption package}
@@ -278,10 +278,6 @@
%
% \section{Vertical spaces before and after captions}
%
-% \begin{macrocode}
-\AtCaptionPackage{%
-% \end{macrocode}
-
% The \class{memoir} document classes uses |\above|\-|caption|\-|skip| and |\below|\-|caption|\-|skip|
% different than the standard document classes and the \package{caption} package:
% They always typeset |\above|\-|caption|\-|skip| before the caption and
@@ -291,25 +287,22 @@
% package is used, so no extra vertical space will be created.
%
% \begin{macrocode}
- \setlength\belowcaptionskip{0pt}%
+\AtCaptionPackage{%
+ \setlength\belowcaptionskip{0pt}}
% \end{macrocode}
%
% Furthermore we adapt the `auto' positioning algorithm to match the one implemented
% in the \class{memoir} document class.
-% (Note: This needs at least \package{caption} \version{3.6}.)
-%
-% \begin{macrocode}
- \@ifundefined{DeclareCaptionAutoPosition}{}{%
- \DeclareCaptionAutoPosition{%
- \ifvmode
- \ifdim\prevdepth>-99\p@#2\else#1\fi
- \else
- #2%
- \fi}}%
-% \end{macrocode}
+% (Note: This needs at least \package{caption3} \version{2.3}.)
%
% \begin{macrocode}
-}
+\@ifundefined{DeclareCaptionAutoPosition}{}{%
+ \DeclareCaptionAutoPosition{%
+ \ifvmode
+ \ifdim\prevdepth>-99\p@#2\else#1\fi
+ \else
+ #2%
+ \fi}}%
% \end{macrocode}
%
% \section{TODO}
diff --git a/macros/latex/contrib/caption/caption.dtx b/macros/latex/contrib/caption/caption.dtx
index e56e11633a..14392efea8 100644
--- a/macros/latex/contrib/caption/caption.dtx
+++ b/macros/latex/contrib/caption/caption.dtx
@@ -31,7 +31,7 @@
%
% \fi
%
-% \CheckSum{2840}
+% \CheckSum{2836}
%
% \iffalse
%<*driver>
@@ -4593,7 +4593,7 @@
%
% Identify the current version of the package.
% \begin{macrocode}
-\ProvidesPackage{caption}[2022/02/28 v3.6a Customizing captions (AR)]
+\ProvidesPackage{caption}[2022/03/01 v3.6b Customizing captions (AR)]
% \end{macrocode}
%
% \subsection{Loading the kernel}
@@ -5140,19 +5140,9 @@
% \changes{v3.2}{2010/11/07}{Support of option \opt{parboxrestore} added}
% \changes{v3.5g}{2020/10/26}{New implementation; renamed from \cs{caption@boxrestore} to \cs{caption@parboxrestore}}
% \changes{v3.6}{2021/01/02}{Always uses \cs{@parboxrestore} now}
-% \changes{v3.6}{2022/02/13}{Hooks added}
-% |\caption@parboxrestore| simply expands to |\@par|\-|box|\-|restore|,
-% surrounded by `before' and `after' hooks.
+% |\caption@parboxrestore| simply expands to |\@par|\-|box|\-|restore|.
% \begin{macrocode}
-\newcommand*\caption@parboxrestore{%
- \caption@before@parboxrestore
- \caption@@parboxrestore
- \caption@after@parboxrestore}
-% \end{macrocode}
-% \begin{macrocode}
-\newcommand*\caption@before@parboxrestore{}
-\newcommand*\caption@@parboxrestore{\@parboxrestore}
-\newcommand*\caption@after@parboxrestore{}
+\newcommand*\caption@parboxrestore{\@parboxrestore}
% \end{macrocode}
% \end{macro}
%
@@ -6205,20 +6195,24 @@
% \changes{v3.0l}{2007/02/04}{Takes now 3 args instead of 2, check for empty heading added}
% \changes{v3.1}{2007/07/01}{Makes lst-entry now instead of redefining \cs{addcontentsline}}
% \changes{v3.2}{2010/10/26}{Bugfix 09-05-15: Setting of \cs{lst@@caption} added}
+% \changes{v3.5h}{2022/03/01}{Hook added, setting of \cs{lst@@caption} removed}
% |\caption@beginex|\marg{type}\marg{list entry}\marg{heading}\par
% performs the same tasks as |\caption@begin| and additionally:
% \begin{enumerate}
-% \item[4.] Set |\lst@@caption|, so |\fnum@lstlisting| will include a numbering.
+% \item[4.] Apply the hook |\caption@beginex@hook|
% \item[5.] Make an entry in the list-of-whatever.
% \item[6.] Set |\caption@ifempty| according argument \meta{heading}.
% \end{enumerate}
% \begin{macrocode}
\newcommand\caption@beginex[3]{%
\caption@begin{#1}%
- \let\lst@@caption\relax
+ \caption@beginex@hook
\caption@addcontentsline{#1}{#2}%
\caption@ifempty{#3}{}}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\caption@beginex@hook{}
+% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\caption@end}
@@ -6806,13 +6800,13 @@
%
% \begin{macro}{\caption@set@adjustwidth}
% \changes{v3.4k}{2020/05/30}{This macro definition added}
-% \changes{v3.6}{2022/02/13}{Usage of \cs{AtBeginCaption} replaced by \cs{l@addto@macro}\cs{caption@before@parboxrestore}}
+% \changes{v3.5h}{2022/03/01}{Usage of \cs{AtBeginCaption} replaced by \cs{l@addto@macro}\cs{caption@beginex@hook}}
% Store the values of \cs{hsize} and \cs{linewidth}.
% \begin{macrocode}
\providecommand*\caption@set@adjustwidth{%
\caption@adjustwidth@hsize\hsize
\caption@adjustwidth@linewidth\linewidth
- \l@addto@macro\caption@before@parboxrestore\caption@test@adjustwidth}%
+ \l@addto@macro\caption@beginex@hook\caption@test@adjustwidth}%
% \end{macrocode}
% \begin{macrocode}
\providecommand*\caption@patch@changepage[1]{%
@@ -7723,7 +7717,17 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\lst@@caption}
+% \changes{v3.1}{2007/03/03}{This macro added}
% \changes{v3.1a}{2007/07/13}{Bugfix 07-09-13: \cs{lst@@caption} will not be re-defined anymore}
+% \changes{v3.2}{2010/10/26}{Bugfix 09-05-15: Setting of \cs{lst@@caption} added to \cs{caption@beginex}}
+% \changes{v3.5h}{2022/03/01}{Re-definition of \cs{lst@@caption} moved from \cs{caption@beginex} to \cs{caption@beginex@hook}}
+% We define |\lst@@caption| to non-|\@empty|, so |\fnum@lst|\-|listing| will
+% include a numbering.
+% \begin{macrocode}
+ \l@addto@macro\caption@beginex@hook{\let\lst@@caption\relax}%
+% \end{macrocode}
+% \end{macro}
%
% \begin{macrocode}
}{}
diff --git a/macros/latex/contrib/caption/caption3.dtx b/macros/latex/contrib/caption/caption3.dtx
index 2f6e4f113a..8e4506202a 100644
--- a/macros/latex/contrib/caption/caption3.dtx
+++ b/macros/latex/contrib/caption/caption3.dtx
@@ -31,7 +31,7 @@
%
% \fi
%
-% \CheckSum{3814}
+% \CheckSum{3813}
%
% \iffalse
%<*driver>
@@ -264,7 +264,7 @@
%
% Identify the current version of the package.
% \begin{macrocode}
-\ProvidesPackage{caption3}[2022/02/28 v2.3a caption3 kernel (AR)]
+\ProvidesPackage{caption3}[2022/03/17 v2.3b caption3 kernel (AR)]
% \end{macrocode}
%
% \section{Generic helpers}
@@ -832,6 +832,7 @@
% \changes{v1.2a}{2008/01/12}{\cs{ifcaptionsetup@star} will be set now}
% \changes{v1.5}{2012/04/09}{Support of multiple optional arguments added}
% \changes{v1.8h}{2020/01/03}{Syntax check of saved options added}
+% \changes{v2.3b}{2022/03/17}{Usage of \cs{captionsetup} inside \cs{caption@setup@options@@} replaced by \cs{caption@setup@options@}}
% |\captionsetup*|\oarg{type}\ldots\marg{keyval-list of options}\\
% applies the given list of options.
% If the optional argument `type' is specified, we simply save or append
@@ -850,19 +851,19 @@
\caption@setup@options\caption@setup}
% \end{macrocode}
% \begin{macrocode}
-\newcommand*\caption@setup{\caption@setkeys{caption}}
+\newcommand*\caption@setup{%
+ \caption@setkeys{caption}}
% \end{macrocode}
% \begin{macrocode}
\def\caption@setup@options[#1]{%
\@ifnextchar[%]
{\caption@stepthecounter
- \caption@withoptargs{\@expandtwoargs
- \caption@setup@options@i{#1}{@\caption@thecounter}}}%
+ \@expandtwoargs\caption@setup@options@@{#1}{@\caption@thecounter}}%
{\caption@setup@options@{#1}}}
% \end{macrocode}
% \begin{macrocode}
-\newcommand*\caption@setup@options@i[4]{%
- \caption@declare@option{#2}[]{\captionsetup#3{#4}}%
+\def\caption@setup@options@@#1#2[#3]#4{%
+ \caption@declare@option{#2}[]{\caption@setup@options@{#3}{#4}}%
\caption@setup@options@{#1}{#2}}
% \end{macrocode}
% \begin{macrocode}
diff --git a/macros/latex/contrib/caption/fallback/v3.5/caption.dtx b/macros/latex/contrib/caption/fallback/v3.5/caption.dtx
index c1cf692b74..463e9052fa 100644
--- a/macros/latex/contrib/caption/fallback/v3.5/caption.dtx
+++ b/macros/latex/contrib/caption/fallback/v3.5/caption.dtx
@@ -2,7 +2,7 @@
%
% This is file `caption.dtx'.
%
-% Copyright (C) 1994-2020 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
+% Copyright (C) 1994-2022 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm)
%
% --------------------------------------------------------------------------
%
@@ -32,7 +32,7 @@
% caption-deu.tex, caption-eng.tex, caption-rus.tex.
%
% \fi
-% \CheckSum{2692}
+% \CheckSum{2702}
%
% \iffalse
%<*driver>
@@ -241,7 +241,7 @@
%
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{caption}[2020/10/26 v3.5g Customizing captions (AR)]
+\ProvidesPackage{caption}[2022/03/01 v3.5h Customizing captions (AR)]
% \end{macrocode}
%
% \section{Loading the kernel}
@@ -768,6 +768,10 @@
\caption@if@minipage\@minipagetrue\@minipagefalse}%
\caption@end}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\caption@before@parboxrestore{}
+\newcommand*\caption@after@parboxrestore{}
+% \end{macrocode}
% \class{memoir} document class stuff:
% \begin{macrocode}
\providecommand\memcaptioninfo[4]{}
@@ -1610,20 +1614,24 @@
% \changes{v3.0l}{2007/02/04}{Takes now 3 args instead of 2, check for empty heading added}
% \changes{v3.1}{2007/07/01}{Makes lst-entry now instead of redefining \cs{addcontentsline}}
% \changes{v3.2}{2010/10/26}{Bugfix 09-05-15: Setting of \cs{lst@@caption} added}
+% \changes{v3.5h}{2022/03/01}{Hook added, setting of \cs{lst@@caption} removed}
% |\caption@beginex|\marg{type}\marg{list entry}\marg{heading}\par
% performs the same tasks as |\caption@begin| and additionally:
% \begin{enumerate}
-% \item[4.] Set |\lst@@caption|, so |\fnum@lstlisting| will include a numbering.
+% \item[4.] Apply the hook |\caption@beginex@hook|
% \item[5.] Make an entry in the list-of-whatever.
% \item[6.] Set |\caption@ifempty| according argument \meta{heading}.
% \end{enumerate}
% \begin{macrocode}
\newcommand\caption@beginex[3]{%
\caption@begin{#1}%
- \let\lst@@caption\relax
+ \caption@beginex@hook
\caption@addcontentsline{#1}{#2}%
\caption@ifempty{#3}{}}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\caption@beginex@hook{}
+% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\caption@end}
@@ -2243,11 +2251,13 @@
%
% \begin{macro}{\caption@set@adjustwidth}
% \changes{v3.4k}{2020/05/30}{This macro and its usage added}
+% \changes{v3.5h}{2022/03/01}{Usage of \cs{AtBeginCaption} replaced by \cs{l@addto@macro}\cs{caption@beginex@hook}}
% Store the values of \cs{hsize} and \cs{linewidth}.
% \begin{macrocode}
\providecommand*\caption@set@adjustwidth{%
\caption@adjustwidth@hsize\hsize
- \caption@adjustwidth@linewidth\linewidth}%
+ \caption@adjustwidth@linewidth\linewidth
+ \l@addto@macro\caption@beginex@hook\caption@test@adjustwidth}%
% \end{macrocode}
% \begin{macrocode}
\providecommand*\caption@patch@changepage[1]{%
@@ -2274,9 +2284,6 @@
\fi
\fi}%
% \end{macrocode}
-% \begin{macrocode}
- \AtBeginCaption{\caption@test@adjustwidth}%
-% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
@@ -3154,7 +3161,17 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\lst@@caption}
+% \changes{v3.1}{2007/03/03}{This macro added}
% \changes{v3.1a}{2007/07/13}{Bugfix 07-09-13: \cs{lst@@caption} will not be re-defined anymore}
+% \changes{v3.2}{2010/10/26}{Bugfix 09-05-15: Setting of \cs{lst@@caption} added to \cs{caption@beginex}}
+% \changes{v3.5h}{2022/03/01}{Re-definition of \cs{lst@@caption} moved from \cs{caption@beginex} to \cs{caption@beginex@hook}}
+% We define |\lst@@caption| to non-|\@empty|, so |\fnum@lst|\-|listing| will
+% include a numbering.
+% \begin{macrocode}
+ \l@addto@macro\caption@beginex@hook{\let\lst@@caption\relax}%
+% \end{macrocode}
+% \end{macro}
%
% \begin{macrocode}
}{}
diff --git a/macros/latex/contrib/genealogytree/CHANGES.md b/macros/latex/contrib/genealogytree/CHANGES.md
index cdf54934e1..186d064592 100644
--- a/macros/latex/contrib/genealogytree/CHANGES.md
+++ b/macros/latex/contrib/genealogytree/CHANGES.md
@@ -17,6 +17,39 @@ and this project adheres to
+## [2.2.0] - 2022-03-17
+
+### Added
+- Option `complemented family`
+- Color `gtr_Male_Frame`
+- Color `gtr_Male_Background`
+- Color `gtr_Female_Frame`
+- Color `gtr_Female_Background`
+- Color `gtr_Neuter_Frame`
+- Color `gtr_Neuter_Background`
+- Template `template=display 16:9 3`
+- Template `template=display 16:9 4`
+- Template `template=display 16:9 5`
+- Template `template=display 16:10 3`
+- Template `template=display 16:10 4`
+- Template `template=display 16:10 5`
+- Template `template=a4paper 3`
+- Template `template=a4paper 4`
+- Template `template=a3paper 5`
+- Template `template=letterpaper 3`
+- Template `template=letterpaper 4`
+- Option `template horizontal border`
+- Option `template vertical border`
+
+### Changed
+- Implementation of templates `ahnentafel 3`, `ahnentafel 4`, `ahnentafel 5` adapted
+
+### Fixed
+- Documentation example *Edge Varieties for Families with Unions* in 14.2.2
+ had a wrong summary number and 3 wrong pictures
+
+
+
## [2.1.0] - 2021-09-20
### Added
@@ -38,7 +71,7 @@ and this project adheres to
## [2.01] - 2020-07-28
### Added
-- New *LaTeXÜ macros added corresponding to existing macros:
+- New *LaTeX* macros added corresponding to existing macros:
- `\getree_set_options_for_subtree:nn`
- `\getree_set_options_for_family:nn`
- `\getree_set_options_for_node:nn`
@@ -46,7 +79,7 @@ and this project adheres to
to the documentation (issue #36)
### Changed
-- Implementation changed to avoid problems with spurious blanks
+- Implementation changed to avoid problems with spurious blanks
and resulting errors for
- Option `tcb/if image defined`
- Option `date range before`
@@ -227,7 +260,7 @@ and this project adheres to
- `tcolorbox` needs to be version 4.20 (2019/03/02) or newer.
### Fixed
-- The templates library used some internal color names of `tcolorbox`.
+- The templates library used some internal color names of `tcolorbox`.
They are adapted now to the new official names (issue #30).
@@ -267,7 +300,7 @@ and this project adheres to
## [1.21] - 2017-09-15
### Added
-- Italian translation `language=italian` provided by Andrea Vaccari
+- Italian translation `language=italian` provided by Andrea Vaccari
- Template `database pole reduced`
- Template `database poleportrait`
- Template `database poleportrait reduced`
diff --git a/macros/latex/contrib/genealogytree/README.md b/macros/latex/contrib/genealogytree/README.md
index 5d22561834..25c4d06ef4 100644
--- a/macros/latex/contrib/genealogytree/README.md
+++ b/macros/latex/contrib/genealogytree/README.md
@@ -1,6 +1,6 @@
-# The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+# The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
-> Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+> Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
> This work may be distributed and/or modified under the
> conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
index d05dc7aad8..0b893c644a 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
index 1977763919..ec8a2ea0fc 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
index 1214fcfc3c..8fa4eb74cc 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
index 7a3beb3f52..9995cbd07a 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
index 44c63e7500..58f985e5db 100644
--- a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree.pdf b/macros/latex/contrib/genealogytree/genealogytree.pdf
index 933a55d001..9c75dfe74e 100644
--- a/macros/latex/contrib/genealogytree/genealogytree.pdf
+++ b/macros/latex/contrib/genealogytree/genealogytree.pdf
Binary files differ
diff --git a/macros/latex/contrib/genealogytree/genealogytree.sty b/macros/latex/contrib/genealogytree/genealogytree.sty
index f6be902292..8ab1ac5fd4 100644
--- a/macros/latex/contrib/genealogytree/genealogytree.sty
+++ b/macros/latex/contrib/genealogytree/genealogytree.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% genealogytree.sty: genealogy trees (graphs)
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,11 +18,11 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{genealogytree}[2021/09/20 version 2.1.0 genealogy trees]
-\def\gtr@version{2.1.0}
+\ProvidesPackage{genealogytree}[2022/03/17 version 2.2.0 genealogy trees]
+\def\gtr@version{2.2.0}
\RequirePackage{expl3}[2020/02/25]
-\RequirePackage{xparse}
+\RequirePackage{xparse,xfp}
\RequirePackage{tcolorbox}[2020/04/28]
\tcbuselibrary{skins,fitting,external}
diff --git a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
index cf4bb3d9e7..1d2644f484 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.contour.code.tex: Contours
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Contour
diff --git a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
index 1112737c57..effbc01f08 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.drawing.code.tex: Drawing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Auxiliary Tools
diff --git a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
index 5baae2638b..2b6c7081cc 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.node.code.tex: Node Boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%
% Processors %
diff --git a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
index 592ac1ea54..cc06b0d245 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.options.code.tex: Options
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% General handling
@@ -562,6 +562,7 @@
tree offset=0pt,
level/.style=,
complemented/.style=,
+ complemented family/.style=,
box clear,
processing=fit,
edges={perpendicular,foreground=,background=,anchoring=periphery,hide single leg,xshift=0pt,yshift=0pt},
diff --git a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
index 239a0afa05..ae6c57edce 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.parser.code.tex: Parser
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%% (local) stack implementation
\def\gtrnewstack#1{%
@@ -491,7 +491,7 @@
\long\def\gtr@trav@@complementedparent#1{%
\gtr@up@level@push%
\gtr@next@family%
- \gtr@proc@@parent@begin{}%
+ \gtr@proc@@parent@begin{family=complemented family}%
\ifgtr@ignore%
\advance\gtr@c@family -1\relax%
\else%
diff --git a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
index dcc54415c2..e2766e6db5 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.processing.code.tex: Processing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Processing - common
%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
index f95179043f..defe242cfd 100644
--- a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrcore.symbols.code.tex: Symbols
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
%%%%%%%%%%%%%%%%%%%%%%%
%% Symbols
diff --git a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
index bb03fc5b40..1d9a4e52a0 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.danish.code.tex: Danish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Mikkel Eide Eriksen <mikkel dot eriksen at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/danish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
index 0410fa7819..d38f7791f7 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.dutch.code.tex: Dutch language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Dirk Bosmans <onstrees at myonline be>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/dutch/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
index a208c468bc..c13b2f4c69 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.english.code.tex: English language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/english/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
index 011443f392..aceff41a25 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.french.code.tex: French language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Denis Bitouze <denis dot bitouze at univ-littoral fr>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/french/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
index 0e52d7c7dc..4d0152a789 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.german.code.tex: German language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/german/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
index 8368cfcd37..ed2b1def4f 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.italian.code.tex: Italian language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Andrea Vaccari <ing dot andrea dot vaccari at gmail com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/italian/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
index 8bdb4640b3..e67ffb84aa 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.portuguese.code.tex: Portuguese language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Natan de Almeida Laverde <natanlaverde at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/portuguese/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
index 810aa3add4..d2a5bd45d8 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.spanish.code.tex: Spanish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Francisco G. Perez Sanchez <ozo.froid at gmail dot com>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/spanish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
index 708ffb79f1..18d3e10a63 100644
--- a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlang.swedish.code.tex: Swedish language
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% Translation by Per Starbaeck <per at starback.se>
%% -------------------------------------------------------------------------------------------
%%
@@ -18,7 +18,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\gtrset{language@/swedish/.code={%
\gtrset{symlang/.cd,
diff --git a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
index 5450d3f69b..80a7ee79ae 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlib.debug.code.tex: Debugger
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\RequirePackage{array,tabularx}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
index d9e485bc02..8c09a9eb45 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlib.fanchart.code.tex: Fancharts
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
index 6460a178c7..b58ace1043 100644
--- a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
+++ b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20)
+%% The LaTeX package genealogytree - version 2.2.0 (2022/03/17)
%% gtrlib.templates.code.tex: Templates
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2013-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\gtr@set@library@version{2.1.0}
+\gtr@set@library@version{2.2.0}
% Templates
@@ -114,17 +114,17 @@
},
%
database@malefemale/.style={
- tcbset={male/.style={colframe=blue!50!black,colback=blue!50!yellow!5,arc is angular,drop fuzzy shadow=blue!25!black!30},
- female/.style={colframe=red!50!black,colback=red!50!yellow!5,drop fuzzy shadow=red!25!black!30},
- neuter/.style={colframe=black!75,colback=yellow!5,drop fuzzy shadow=black!30}},
+ tcbset={male/.style={colframe=gtr_Male_Frame,colback=gtr_Male_Background,arc is angular,drop fuzzy shadow=blue!25!black!30},
+ female/.style={colframe=gtr_Female_Frame,colback=gtr_Female_Background,drop fuzzy shadow=red!25!black!30},
+ neuter/.style={colframe=gtr_Neuter_Frame,colback=gtr_Neuter_Background,drop fuzzy shadow=black!30}},
},
%
database@malefemale@reduced/.style={
- tcbset={male/.style={colframe=blue!50!black,colback=blue!50!yellow!5,arc is angular,
+ tcbset={male/.style={colframe=gtr_Male_Frame,colback=gtr_Male_Background,arc is angular,
fuzzy shadow={0.1mm}{-0.1mm}{0mm}{0.012mm}{blue!25!black!30}},
- female/.style={colframe=red!50!black,colback=red!50!yellow!5,
+ female/.style={colframe=gtr_Female_Frame,colback=gtr_Female_Background,
fuzzy shadow={0.1mm}{-0.1mm}{0mm}{0.012mm}{red!25!black!30}},
- neuter/.style={colframe=black!75,colback=yellow!5,
+ neuter/.style={colframe=gtr_Neuter_Frame,colback=gtr_Neuter_Background,
fuzzy shadow={0.1mm}{-0.1mm}{0mm}{0.012mm}{black!30}}},
},
%
@@ -543,12 +543,12 @@
},
%
ahnentafel@malefemale/.style={
- tcbset={male/.style={colframe=blue!50!black,colback=blue!50!yellow!5,arc is angular},
- female/.style={colframe=red!50!black,colback=red!50!yellow!5},
- neuter/.style={colframe=black!75,colback=yellow!5}},
+ tcbset={male/.style={colframe=gtr_Male_Frame,colback=gtr_Male_Background,arc is angular},
+ female/.style={colframe=gtr_Female_Frame,colback=gtr_Female_Background},
+ neuter/.style={colframe=gtr_Neuter_Frame,colback=gtr_Neuter_Background}},
},
%
- template/ahnentafel 3/.style={
+ template/ahnentafel 3/.style={%
timeflow=left,
processing=database,
database format=medium,
@@ -561,33 +561,34 @@
ahnentafel@malefemale,
box={\gtrDBsex,before upper={\parskip=0.1\tcbfitdim},halign=flush left,},
edges={mesh,anchoring=center,no background,foreground={line width=10mm,green!50!black!50}},
- level/.code={\ifnum\numexpr##1>2\relax%
- \gtrset{%
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=42mm,
+ node size=50mm,
+ node box={fit basedim=10pt}
+ }%
+ \or\gtrset{% 1
+ level size=37mm,
+ node size=50mm,
+ parent distance=4mm,
+ further distance=2mm,
+ node box={fit basedim=9pt}
+ }%
+ \or\gtrset{% 2
+ level distance=3mm,
+ level size=36mm,
+ node size=40mm,
+ parent distance=2mm,
+ further distance=1mm,
+ node box={boxrule=0.4mm,arc=0.8mm,fit basedim=9pt}
+ }%
+ \else\gtrset{% 3+
parent distance=1mm,
further distance=0.5mm,
node box={boxrule=0.3mm,arc=0.6mm,valign=center,fit basedim=9pt},
family edges={foreground={line width=8mm,green!50!black!50}},
}%
- \fi},
- level 2/.style={
- level distance=3mm,
- level size=36mm,
- node size=40mm,
- parent distance=2mm,
- further distance=1mm,
- node box={boxrule=0.4mm,arc=0.8mm,fit basedim=9pt}
- },
- level 1/.style={
- level size=37mm,
- node size=50mm,
- parent distance=4mm,
- further distance=2mm,
- node box={fit basedim=9pt}
- },
- level 0/.style={
- level size=42mm,
- node size=50mm,
- node box={fit basedim=10pt}
+ \fi%
},
},
%
@@ -604,42 +605,43 @@
ahnentafel@malefemale,
box={\gtrDBsex,before upper={\parskip=0.1\tcbfitdim},halign=flush left,},
edges={mesh,anchoring=center,no background,foreground={line width=10mm,green!50!black!50}},
- level/.code={\ifnum\numexpr##1>3\relax%
- \gtrset{%
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=42mm,
+ node size=50mm,
+ node box={fit basedim=10pt}
+ }%
+ \or\gtrset{% 1
+ level distance=-25mm,
+ level size=37mm,
+ node size=50mm,
+ parent distance=58mm,
+ further distance=2mm,
+ node box={fit basedim=9pt}
+ }%
+ \or\gtrset{% 2
+ level distance=3mm,
+ level size=36mm,
+ node size=40mm,
+ parent distance=2mm,
+ further distance=1mm,
+ node box={boxrule=0.4mm,arc=0.8mm,fit basedim=9pt}
+ }%
+ \or\gtrset{% 3
+ level size=38mm,
+ node size=26mm,
+ parent distance=1mm,
+ further distance=0.5mm,
+ node box={boxrule=0.3mm,arc=0.6mm,valign=center,fit basedim=8pt},
+ family edges={foreground={line width=8mm,green!50!black!50}},
+ }%
+ \else\gtrset{% 4+
parent distance=0.25mm,
further distance=0.25mm,
node box={boxrule=0.2mm,arc=0.4mm,valign=center,fit basedim=8pt},
family edges={foreground={line width=7mm,green!50!black!50}},
}%
- \fi},
- level 3/.style={
- level size=38mm,
- node size=26mm,
- parent distance=1mm,
- further distance=0.5mm,
- node box={boxrule=0.3mm,arc=0.6mm,valign=center,fit basedim=8pt},
- family edges={foreground={line width=8mm,green!50!black!50}},
- },
- level 2/.style={
- level distance=3mm,
- level size=36mm,
- node size=40mm,
- parent distance=2mm,
- further distance=1mm,
- node box={boxrule=0.4mm,arc=0.8mm,fit basedim=9pt}
- },
- level 1/.style={
- level distance=-25mm,
- level size=37mm,
- node size=50mm,
- parent distance=58mm,
- further distance=2mm,
- node box={fit basedim=9pt}
- },
- level 0/.style={
- level size=42mm,
- node size=50mm,
- node box={fit basedim=10pt}
+ \fi%
},
},
%
@@ -656,57 +658,481 @@
ahnentafel@malefemale,
box={\gtrDBsex,before upper={\parskip=0.1\tcbfitdim},halign=flush left,},
edges={mesh,anchoring=center,no background,foreground={line width=5mm,green!50!black!50}},
- level/.code={\ifnum\numexpr##1>4\relax%
- \gtrset{%
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=40mm,
+ node size=50mm,
+ node box={fit basedim=10pt},
+ family edges={foreground={line width=10mm,green!50!black!50}},
+ }%
+ \or\gtrset{% 1
+ level distance=-25mm,
+ level size=35mm,
+ node size=50mm,
+ parent distance=58mm,
+ further distance=2mm,
+ node box={fit basedim=9pt},
+ family edges={foreground={line width=10mm,green!50!black!50}},
+ }%
+ \or\gtrset{% 2
+ level distance=3mm,
+ level size=30mm,
+ node size=40mm,
+ parent distance=2mm,
+ further distance=1mm,
+ node box={boxrule=0.4mm,arc=0.8mm,fit basedim=8pt},
+ family edges={foreground={line width=10mm,green!50!black!50}},
+ }%
+ \or\gtrset{% 3
+ level size=30mm,
+ node size=26mm,
+ parent distance=1mm,
+ further distance=0.5mm,
+ node box={boxrule=0.3mm,arc=0.6mm,fit basedim=7pt},
+ family edges={foreground={line width=8mm,green!50!black!50}},
+ }%
+ \or\gtrset{% 4
+ level size=34mm,
+ node size=16mm,
+ parent distance=0.25mm,
+ further distance=0.25mm,
+ node={list separators={\par}{, }{.\par}{\par}},
+ node box={boxrule=0.2mm,arc=0.4mm,valign=center,fit basedim=7pt},
+ family edges={foreground={line width=7mm,green!50!black!50}},
+ }%
+ \else\gtrset{% 5+
node={database format=short,list separators={, }{, }{.}{}},
node box={size=fbox,boxsep=0.5mm,boxrule=0.1mm,arc=0.2mm,
valign=center,fit basedim=6pt},
family edges={foreground={line width=5mm,green!50!black!50}},
}%
- \fi},
- level 4/.style={
- level size=34mm,
- node size=16mm,
- parent distance=0.25mm,
- further distance=0.25mm,
- node={list separators={\par}{, }{.\par}{\par}},
- node box={boxrule=0.2mm,arc=0.4mm,valign=center,fit basedim=7pt},
- family edges={foreground={line width=7mm,green!50!black!50}},
- },
- level 3/.style={
- level size=30mm,
- node size=26mm,
- parent distance=1mm,
- further distance=0.5mm,
- node box={boxrule=0.3mm,arc=0.6mm,fit basedim=7pt},
- family edges={foreground={line width=8mm,green!50!black!50}},
- },
- level 2/.style={
- level distance=3mm,
- level size=30mm,
- node size=40mm,
- parent distance=2mm,
- further distance=1mm,
- node box={boxrule=0.4mm,arc=0.8mm,fit basedim=8pt},
- family edges={foreground={line width=10mm,green!50!black!50}},
- },
- level 1/.style={
- level distance=-25mm,
- level size=35mm,
- node size=50mm,
- parent distance=58mm,
- further distance=2mm,
- node box={fit basedim=9pt},
- family edges={foreground={line width=10mm,green!50!black!50}},
- },
- level 0/.style={
- level size=40mm,
- node size=50mm,
- node box={fit basedim=10pt},
- family edges={foreground={line width=10mm,green!50!black!50}},
+ \fi%
+ },
+ },
+%
+ template horizontal border/.style = {},
+ template vertical border/.style = {},
+ template@fixedsize@common/.style = {%
+ processing=database,
+ database format=full marriage below,
+ name font=\bfseries,
+ surn code={##1},
+ tcbset={%
+ male/.style={colframe=gtr_Male_Frame,colback=gtr_Male_Background,arc is angular},
+ female/.style={colframe=gtr_Female_Frame,colback=gtr_Female_Background},
+ neuter/.style={colframe=gtr_Neuter_Frame,gtr_Neuter_Background}%
+ },%
+ box clear,
+ complemented/.style={%
+ box={colframe=gray!50,colback=white},
},
+ empty name text={},
},
%
+ template@fixedsize@common@3/.style = {%
+ template@fixedsize@common,
+ autofill parents male female* = 3,
+ box={enhanced,top=0mm,bottom=0mm,middle=0.15mm,
+ boxrule=0.15mm,boxsep=0.25mm,arc=0.5mm,fit basedim=9pt,
+ halign=flush center,
+ fontupper=\sffamily,
+ before upper={\parskip 0.15\tcbfitdim plus 0pt minus 0pt},
+ segmentation style={solid,line width=0.06mm,shorten >=0.4mm,shorten <=0.4mm},
+ \gtrDBsex,
+ },
+ edges={rounded=3pt,
+ foreground={black,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ complemented family/.style={%
+ edges={rounded=3pt,
+ foreground={gray!50,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ },
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=\gtr@tmpl@height@z,
+ node size=\gtr@tmpl@width@z,
+ }%
+ \or\gtrset{% 1
+ level size=\gtr@tmpl@height@i,
+ node size=\gtr@tmpl@width@i,
+ }%
+ \or\gtrset{% 2
+ level size=\gtr@tmpl@height@ii,
+ node size=\gtr@tmpl@width@ii,
+ }%
+ \or\gtrset{% 3
+ level size=\gtr@tmpl@height@iii,
+ node size=\gtr@tmpl@width@iii,
+ node box={fit basedim=8pt},
+ }%
+ \or\gtrset{% 4
+ node=ignore,
+ }%
+ \else\gtrset{% 5+
+ ignore,
+ }%
+ \fi%
+ },
+ },
+%
+ template@fixedsize@common@4/.style = {%
+ template@fixedsize@common,
+ autofill parents male female* = 4,
+ box={enhanced,top=0mm,bottom=0mm,middle=0.15mm,
+ boxrule=0.15mm,boxsep=0.25mm,arc=0.5mm,fit basedim=6.5pt,
+ halign=flush center,
+ fontupper=\sffamily,
+ before upper={\parskip 0.15\tcbfitdim plus 0pt minus 0pt},
+ segmentation style={solid,line width=0.06mm,shorten >=0.4mm,shorten <=0.4mm},
+ \gtrDBsex,
+ },
+ edges={rounded=3pt,
+ foreground={black,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ complemented family/.style={%
+ edges={rounded=3pt,
+ foreground={gray!50,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ },
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=\gtr@tmpl@height@z,
+ node size=\gtr@tmpl@width@z,
+ }%
+ \or\gtrset{% 1
+ level size=\gtr@tmpl@height@i,
+ node size=\gtr@tmpl@width@i,
+ }%
+ \or\gtrset{% 2
+ level size=\gtr@tmpl@height@ii,
+ node size=\gtr@tmpl@width@ii,
+ }%
+ \or\gtrset{% 3
+ level size=\gtr@tmpl@height@iii,
+ node size=\gtr@tmpl@width@iii,
+ }%
+ \or\gtrset{% 4
+ level size=\gtr@tmpl@height@iv,
+ node size=\gtr@tmpl@width@iv,
+ node box={fit basedim=6pt},
+ }%
+ \or\gtrset{% 5
+ node=ignore,
+ }%
+ \else\gtrset{% 6+
+ ignore,
+ }%
+ \fi%
+ },
+ },
+%
+ template/display 16:9 3/.style={
+ template@fixedsize@common@3,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(312mm-2*(##1))/308mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{70mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{70mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{70mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{38.5mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(171mm-2*(##1))/167mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{36mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{36mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{36mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{59mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=2mm,
+ template vertical border=2mm,
+ level distance=3mm,
+ parent distance in parent graph=1.142857mm,
+ further distance=1.142857mm,
+ },
+%
+ template/display 16:10 3/.style={
+ template=display 16:9 3,
+ template vertical border/.style={template@vertical@border=(##1-10mm)},
+ template vertical border=2mm,
+ },
+%
+ template/display 16:9 4/.style={%
+ template@fixedsize@common@4,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(308mm-2*(##1))/304mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{30mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iv {\fpeval{19mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(168mm-2*(##1))/164mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{25mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{25mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{25mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{40mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iv {\fpeval{49mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=2mm,
+ template vertical border=2mm,
+ level distance=3mm,
+ parent distance in parent graph=0.8mm,
+ further distance=0.8mm,
+ },
+%
+ template/display 16:10 4/.style={
+ template=display 16:9 4,
+ template vertical border/.style={template@vertical@border=(##1-10mm)},
+ template vertical border=2mm,
+ },
+%
+ template/display 16:9 5/.style={%
+ template@fixedsize@common,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(304.8mm-2*(##1))/300.8mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{40mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{40mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{40mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{20mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iv {\fpeval{15mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@v {\fpeval{9.4mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(167.5mm-2*(##1))/163.5mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{15mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{15mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{15mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{30mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iv {\fpeval{40mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@v {\fpeval{48.5mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=2mm,
+ template vertical border=2mm,
+ level distance=2.5mm,
+ parent distance in parent graph=0.490323mm,
+ further distance=0.490323mm,
+ autofill parents male female* = 5,
+ box={enhanced,top=0mm,bottom=0mm,middle=0.1mm,
+ boxrule=0.1mm,boxsep=0.2mm,arc=0.4mm,fit basedim=5pt,
+ halign=flush center,
+ fontupper=\sffamily,
+ before upper={\parskip 0.15\tcbfitdim plus 0pt minus 0pt},
+ segmentation style={solid,line width=0.05mm,shorten >=0.3mm,shorten <=0.3mm},
+ \gtrDBsex,
+ },
+ edges={rounded=3pt,
+ foreground={black,line width=0.2mm},
+ background={white,line width=0.6mm}
+ },
+ complemented family/.style={%
+ edges={rounded=3pt,
+ foreground={gray!50,line width=0.2mm},
+ background={white,line width=0.6mm}
+ },
+ },
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=\gtr@tmpl@height@z,
+ node size=\gtr@tmpl@width@z,
+ }%
+ \or\gtrset{% 1
+ level size=\gtr@tmpl@height@i,
+ node size=\gtr@tmpl@width@i,
+ }%
+ \or\gtrset{% 2
+ level size=\gtr@tmpl@height@ii,
+ node size=\gtr@tmpl@width@ii,
+ }%
+ \or\gtrset{% 3
+ level size=\gtr@tmpl@height@iii,
+ node size=\gtr@tmpl@width@iii,
+ }%
+ \or\gtrset{% 4
+ level size=\gtr@tmpl@height@iv,
+ node size=\gtr@tmpl@width@iv,
+ }%
+ \or\gtrset{% 5
+ level size=\gtr@tmpl@height@v,
+ node size=\gtr@tmpl@width@v,
+ node box={fit basedim=3.5pt},
+ }%
+ \or\gtrset{% 6
+ node=ignore,
+ }%
+ \else\gtrset{% 7+
+ ignore,
+ }%
+ \fi%
+ },
+ },
+%
+ template/display 16:10 5/.style={
+ template=display 16:9 5,
+ template vertical border/.style={template@vertical@border=(##1-10mm)},
+ template vertical border=2mm,
+ },
+%
+ template/a4paper 3/.style={
+ template@fixedsize@common@3,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(290mm-2*(##1))/276mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{65mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{65mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{60mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{34.5mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(201mm-2*(##1))/187mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{38mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{38mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{41mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{70mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=7mm,
+ template vertical border=7mm,
+ level distance=3mm,
+ parent distance in parent graph=1mm,
+ further distance=1mm,
+ },
+%
+ template/letterpaper 3/.style={
+ template=a4paper 3,
+ template horizontal border/.style={template@horizontal@border=(##1+8.8mm)},
+ template vertical border/.style={template@vertical@border=(##1-2.95mm)},
+ template horizontal border=0.25in,
+ template vertical border=0.25in,
+ },
+%
+ template/a4paper 4/.style={
+ template@fixedsize@common@4,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(286mm-2*(##1))/272mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{48mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{30mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iv {\fpeval{17mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(198mm-2*(##1))/184mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{27mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{27mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{27mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{43mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iv {\fpeval{60mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=7mm,
+ template vertical border=7mm,
+ level distance=3mm,
+ parent distance in parent graph=0.733333mm,
+ further distance=0.733333mm,
+ },
+%
+ template/letterpaper 4/.style={
+ template=a4paper 4,
+ template horizontal border/.style={template@horizontal@border=(##1+8.8mm)},
+ template vertical border/.style={template@vertical@border=(##1-2.95mm)},
+ template horizontal border=0.25in,
+ template vertical border=0.25in,
+ },
+%
+ template/a3paper 5/.style={
+ template@fixedsize@common,
+ template@horizontal@border/.code={%
+ \edef\gtr@tmpl@xscale {\fpeval{(398mm-2*(##1))/384mm}}%
+ \edef\gtr@tmpl@width@z {\fpeval{50mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@i {\fpeval{50mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@ii {\fpeval{50mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iii{\fpeval{30mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@iv {\fpeval{20mm*\gtr@tmpl@xscale}pt}%
+ \edef\gtr@tmpl@width@v {\fpeval{12mm*\gtr@tmpl@xscale}pt}%
+ },
+ template@vertical@border/.code={%
+ \edef\gtr@tmpl@yscale {\fpeval{(282mm-2*(##1))/268mm}}%
+ \edef\gtr@tmpl@height@z {\fpeval{30mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@i {\fpeval{30mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@ii {\fpeval{30mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iii{\fpeval{50mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@iv {\fpeval{58mm*\gtr@tmpl@yscale}pt}%
+ \edef\gtr@tmpl@height@v {\fpeval{70mm*\gtr@tmpl@yscale}pt}%
+ },
+ template horizontal border/.style={template@horizontal@border={##1}},
+ template vertical border/.style={template@vertical@border={##1}},
+ template horizontal border=7mm,
+ template vertical border=7mm,
+ level distance=3mm,
+ parent distance in parent graph=0.709677mm,
+ further distance=0.709677mm,
+ autofill parents male female* = 5,
+ box={enhanced,top=0mm,bottom=0mm,middle=0.15mm,
+ boxrule=0.15mm,boxsep=0.25mm,arc=0.5mm,fit basedim=6.5pt,
+ halign=flush center,
+ fontupper=\sffamily,
+ before upper={\parskip 0.15\tcbfitdim plus 0pt minus 0pt},
+ segmentation style={solid,line width=0.06mm,shorten >=0.4mm,shorten <=0.4mm},
+ \gtrDBsex,
+ },
+ edges={rounded=3pt,
+ foreground={black,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ complemented family/.style={%
+ edges={rounded=3pt,
+ foreground={gray!50,line width=0.3mm},
+ background={white,line width=0.9mm}
+ },
+ },
+ level/.code={%
+ \ifcase##1\relax\gtrset{% 0
+ level size=\gtr@tmpl@height@z,
+ node size=\gtr@tmpl@width@z,
+ }%
+ \or\gtrset{% 1
+ level size=\gtr@tmpl@height@i,
+ node size=\gtr@tmpl@width@i,
+ }%
+ \or\gtrset{% 2
+ level size=\gtr@tmpl@height@ii,
+ node size=\gtr@tmpl@width@ii,
+ }%
+ \or\gtrset{% 3
+ level size=\gtr@tmpl@height@iii,
+ node size=\gtr@tmpl@width@iii,
+ }%
+ \or\gtrset{% 4
+ level size=\gtr@tmpl@height@iv,
+ node size=\gtr@tmpl@width@iv,
+ node box={fit basedim=6pt},
+ }%
+ \or\gtrset{% 5
+ level size=\gtr@tmpl@height@v,
+ node size=\gtr@tmpl@width@v,
+ node box={fit basedim=5pt},
+ }%
+ \or\gtrset{% 6
+ node=ignore,
+ }%
+ \else\gtrset{% 7+
+ ignore,
+ }%
+ \fi%
+ },
+ },
}
@@ -752,3 +1178,10 @@
\definecolor{gtr_Blue_6}{rgb}{0.858824,0.898039,0.945098}
\definecolor{gtr_Bright_Red}{rgb}{1.000000,0.294118,0.062745}
+
+\colorlet{gtr_Male_Frame}{blue!50!black}
+\colorlet{gtr_Male_Background}{blue!50!yellow!5}
+\colorlet{gtr_Female_Frame}{red!50!black}
+\colorlet{gtr_Female_Background}{red!50!yellow!5}
+\colorlet{gtr_Neuter_Frame}{black!75}
+\colorlet{gtr_Neuter_Background}{yellow!5}
diff --git a/macros/latex/contrib/lwarp/README.txt b/macros/latex/contrib/lwarp/README.txt
index c1143fa2bc..780cab2409 100644
--- a/macros/latex/contrib/lwarp/README.txt
+++ b/macros/latex/contrib/lwarp/README.txt
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.904 README.txt
+LaTeX lwarp package v0.904a README.txt
Files included are:
diff --git a/macros/latex/contrib/lwarp/lwarp.dtx b/macros/latex/contrib/lwarp/lwarp.dtx
index 38e6532986..56963b9049 100644
--- a/macros/latex/contrib/lwarp/lwarp.dtx
+++ b/macros/latex/contrib/lwarp/lwarp.dtx
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2022/03/09 v0.904 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2022/03/16 v0.904a Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -3393,6 +3393,8 @@ This boolean may be tested by the user for later use.
% \changes{v0.903}{2021/12/23}{Now uses \cs{IfPackageLoadedTF}, etc.}
% \changes{v0.903}{2022/02/01}{\ 2022/02/01}
% \changes{v0.904}{2022/03/09}{\ 2022/03/09}
+% \changes{v0.904a}{2022/03/16}{\ 2022/03/16}
+% \changes{v0.904a}{2022/03/16}{Fixed missing \pkg{common-mathjax-siunitx}.}
@@ -3627,6 +3629,8 @@ This boolean may be tested by the user for later use.
%
% \begin{description}
% \needspace{2\baselineskip}
+% \item[v0.904a:] Fixed missing \pkg{lwarp-common-mathjax-siunitx} package.
+% \needspace{2\baselineskip}
% \item[v0.904:] Added \pkg{siunitx} v3.
% \begin{itemize}
% \item Fixed \HTML\ tags inside non-Latin text.
@@ -21001,7 +21005,7 @@ MathJax = {
-- Copyright 2016-2022 Brian Dunn
-printversion = "v0.904"
+printversion = "v0.904a"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
diff --git a/macros/latex/contrib/lwarp/lwarp.ins b/macros/latex/contrib/lwarp/lwarp.ins
index e8aed5153e..1bacc36aba 100644
--- a/macros/latex/contrib/lwarp/lwarp.ins
+++ b/macros/latex/contrib/lwarp/lwarp.ins
@@ -1,5 +1,5 @@
%% lwarp.ins
-%% Copyright 2016-2019 Brian Dunn
+%% Copyright 2016-2022 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,7 +20,7 @@
%% \usedir{tex/latex/ package }
\preamble
This is a generated file.
-Copyright 2016-2020 Brian Dunn
+Copyright 2016-2022 Brian Dunn
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -618,6 +618,7 @@ version 2005/12/01 or later.
\file{lwarp-common-mathjax-newpxtxmath.sty}{\from{lwarp.dtx}{common-mathjax-newpxtxmath}}
\file{lwarp-common-mathjax-nonunicode.sty}{\from{lwarp.dtx}{common-mathjax-nonunicode}}
\file{lwarp-common-mathjax-overlaysymbols.sty}{\from{lwarp.dtx}{common-mathjax-overlaysymbols}}
+\file{lwarp-common-mathjax-siunitx.sty}{\from{lwarp.dtx}{common-mathjax-siunitx}}
}
\Msg{*********************************************************}
\Msg{*}
diff --git a/macros/latex/contrib/lwarp/lwarp.pdf b/macros/latex/contrib/lwarp/lwarp.pdf
index d1495eac7f..1522f8b7d9 100644
--- a/macros/latex/contrib/lwarp/lwarp.pdf
+++ b/macros/latex/contrib/lwarp/lwarp.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua
index 1cb169c65c..6b4d48c89e 100755
--- a/macros/latex/contrib/lwarp/lwarpmk.lua
+++ b/macros/latex/contrib/lwarp/lwarpmk.lua
@@ -2,7 +2,7 @@
-- Copyright 2016-2022 Brian Dunn
-printversion = "v0.904"
+printversion = "v0.904a"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
diff --git a/macros/latex/contrib/minimalist/README.md b/macros/latex/contrib/minimalist/README.md
index 41144c5769..f22ee11664 100644
--- a/macros/latex/contrib/minimalist/README.md
+++ b/macros/latex/contrib/minimalist/README.md
@@ -1,14 +1,18 @@
-<!-- Copyright (C) 2021 by Jinwen XU -->
+<!-- Copyright (C) 2021-2022 by Jinwen XU -->
# `minimalist` bundle: write you documents in a simple and clear way
+**The whole series have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
## Introduction
`minimalist` is a collection of styles and classes that helps you typesetting articles and books
with a simple and clear design. It mainly consists of two parts.
- Main part:
- - `minimalist.sty` : the main style
+ - `minimalist.sty` : interface of the main style
+ - `minimalist-plain.sty` : the plain style
+ - `minimalist-classical.sty` : the classical style
- `minimart.cls` : class for typesetting articles
- `minimbook.cls` : class for typesetting books
diff --git a/macros/latex/contrib/minimalist/minimalist-classical.sty b/macros/latex/contrib/minimalist/minimalist-classical.sty
new file mode 100644
index 0000000000..0e366919ba
--- /dev/null
+++ b/macros/latex/contrib/minimalist/minimalist-classical.sty
@@ -0,0 +1,841 @@
+%%
+%% This is file `minimalist/minimalist-classical.sty',
+%% generated with the docstrip utility.
+
+%% Copyright (C) 2021-2022 by Jinwen XU
+%%
+%% This is part of the minimalist class series.
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist-classical}
+ {2022/03/17} {}
+ {The classical style of minimalist}
+
+\@ifpackageloaded { minimalist } {}
+ {
+ \msg_new:nnn { \@currname }
+ { minimalist-not-loaded }
+ { "#1"~is~an~internal~style~of~"minimalist".~To~use~it,~you~must~load~the~package~"minimalist"~first. }
+ \msg_warning:nnx { \@currname } { minimalist-not-loaded } { \@currname }
+ \endinput
+ }
+
+%%================================
+%% Title fonts
+%%================================
+\RequirePackage { anyfontsize }
+
+\bool_if:NTF \l__minimalist_use_boldface_bool
+ {
+ \cs_new:Nn \minimalist_bfseries: { \bfseries \colorlet{minimalist-temp-color}{.} \color{minimalist-temp-color!70!paper} }
+ }
+ {
+ \cs_new:Nn \minimalist_bfseries: {}
+ }
+
+\tl_new:N \g_minimalist_title_font_common_tl
+
+\tl_new:N \g_minimalist_title_font_part_tl
+\tl_new:N \g_minimalist_title_font_chapter_tl
+\tl_new:N \g_minimalist_title_font_section_tl
+\tl_new:N \g_minimalist_title_font_subsection_tl
+\tl_new:N \g_minimalist_title_font_subsubsection_tl
+\tl_new:N \g_minimalist_title_font_paragraph_tl
+
+\tl_gset:Nn \g_minimalist_title_font_part_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_chapter_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_section_tl { \minimalist_bfseries: }
+\tl_gset:Nn \g_minimalist_title_font_subsection_tl { \minimalist_bfseries: }
+\tl_gset:Nn \g_minimalist_title_font_subsubsection_tl { \minimalist_bfseries: \itshape }
+\tl_gset:Nn \g_minimalist_title_font_paragraph_tl { \minimalist_bfseries: \scshape }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \RequirePackage { tikz }
+ \ExplSyntaxOff
+ \usetikzlibrary{calc,shadings}
+ \ExplSyntaxOn
+ \RequirePackage { tikzpagenodes } % For `current page text area`
+ }
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_const:Nn \l_minimalist_sep_bar { $|$ }
+ }
+ {
+ \tl_const:Nn \l_minimalist_sep_bar
+ {
+ \skip_horizontal:n { .1em }
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (0,0) -- (0,.9em);
+ \skip_horizontal:n { .1em }
+ }
+ }
+
+%%================================
+%% Footer
+%%================================
+\RequirePackage { geometry }
+\RequirePackage { fancyhdr }
+\RequirePackage { extramarks }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \fancyhfoffset { 0pt }
+ }
+
+\tl_new:N \l_minimalist_leftmark_tl
+\tl_new:N \l_minimalist_rightmark_tl
+
+\tl_set:Nn \l_minimalist_leftmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \lastleftmark
+ \end{minipage}
+ }
+\tl_set:Nn \l_minimalist_rightmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \filleft
+ \lastrightmark
+ \end{minipage}
+ }
+
+\fancypagestyle { fancy }
+ {
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}
+ \nobreakspace\nobreakspace\textcolor{main-text!30!paper}{ \l_minimalist_leftmark_tl }}
+ \else
+ \fancyfoot[R]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+\pagestyle{fancy}
+
+\fancypagestyle { plain }
+ {
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}}
+ \else
+ \fancyfoot[R]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \bool_if:NTF \l__minimalist_fast_bool
+ {
+ \newcommand{ \minimalist_draw_help_line: }{}
+ }
+ {
+ \newcommand{ \minimalist_draw_help_line: }{
+ \begin{tikzpicture}[remember~picture,overlay]
+ \foreach\i in {0,1,...,5}{
+ \fill[opacity=0.12-0.02*\i]
+ ($(current~page~text~area.north~east)
+ +(-\i*0.5em-.025em,-10pt+\i*1.1pt)$)
+ rectangle ($(current~page~text~area.south~east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ \shade[top~color=paper,bottom~color=main-text,opacity=0.12-0.02*\i]
+ ($(current~page~text~area.north~east)
+ +(-\i*0.5em-.025em,2pt)$)
+ rectangle ($(current~page~text~area.north~east)
+ +(-\i*0.5em+.025em,-10pt+\i*1.1pt)$);
+ \shade[top~color=main-text,bottom~color=paper,opacity=0.12-0.02*\i]
+ ($(current~page~text~area.south~east)
+ +(-\i*0.5em-.025em,-2pt)$)
+ rectangle ($(current~page~text~area.south~east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ }
+ \end{tikzpicture}
+ }
+ }
+ \fancypagestyle{part}{
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \fancyhead[C]{ \minimalist_draw_help_line: }
+ }
+ \addtolength{\headheight}{20pt}
+ \addtolength{\topmargin}{-20pt}
+ \if@twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ \renewcommand*{\sectionmark}[1]{
+ \markright{\g_minimalist_section_decoration_char_tl\nobreakspace\arabic{section}\nobreakspace\g_minimalist_section_decoration_char_tl\nobreakspace\nobreakspace\nobreakspace#1}}
+ }
+ {
+ \if@twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ }
+
+%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage { pagewise,mathlines } { lineno }
+\RequirePackage { linenoamsmath }
+\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
+\setlength{\linenumbersep}{1em}
+
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+
+\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
+\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage [ explicit, newparttoc ] { titlesec }
+\PassOptionsToPackage { normalem } { ulem }
+\RequirePackage { ulem }
+
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
+\cs_new:Nn \minimalist_apply_title_numbering_style:N
+ {
+ #1
+ }
+
+\newcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+
+\AddLanguageSetting
+ {
+ \renewcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+ }
+\AddLanguageSetting [ schinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ tchinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ japanese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \setcounter{secnumdepth}{3}
+
+ %% Part
+ \titleclass{\part}{top} % make part like a chapter
+ \titleformat{\part}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titlespacing*{\part}{0pt}{5em}{6em}
+ %% Text after part
+ \newcommand{\parttext}[1]{
+ \vfill
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ \begin{minipage}{0.833\textwidth}
+ \color{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ \vfill\vfill
+ \cleardoublepage
+ }
+
+ %% Chapter
+ \titleformat{\chapter}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+ [\ResumeLineNumbers]
+ \titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{chapter}{#1}
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ [\ResumeLineNumbers]
+ }
+ {
+ %% Part
+ \titleformat{\part}[display]
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ %% Text after part
+ \newcommand{\parttext}[1]{
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ \begin{minipage}{0.833\textwidth}
+ \color{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ }
+ }
+
+%% Section
+\renewcommand\thesection{\arabic{section}}
+\newcommand\seculine{\bgroup\markoverwith{\color{main-text!27!paper}
+ \rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_gset:Nn \g_minimalist_section_decoration_char_tl { \raisebox{.03em}{\normalfont/} }
+ }
+ {
+ \tl_gset:Nn \g_minimalist_section_decoration_char_tl
+ {
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (-.12em,0) -- (.12em,.9em);
+ }
+ }
+\titleformat{\section}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_section_tl\centering}{}{0em}
+ {{\small\textcolor{main-text!27!paper}{\footnotesize \g_minimalist_section_decoration_char_tl }
+ \,\,\textcolor{main-text!90!paper}{\minimalist_bfseries:\arabic{section}}
+ \,\,\textcolor{main-text!27!paper}{\footnotesize \g_minimalist_section_decoration_char_tl }}\\
+ \seculine{#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\section,numberless}
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{section}{#1}
+ \g_minimalist_title_font_section_tl\centering}{}{0em}
+ {\seculine{#1}}
+ [\ResumeLineNumbers]
+
+%% Subsection
+\renewcommand\thesubsection{
+ \ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
+\newcommand\subseculine{\bgroup\markoverwith{\color{main-text!27!paper}
+ \rule[-1ex]{2pt}{.75pt}}\ULon}
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}{}{0em}
+ {\subseculine{\thesubsection\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace #1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\subsection,numberless}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}{}{0em}
+ {\subseculine{#1}}
+ [\ResumeLineNumbers]
+
+%% Subsubsection
+\bool_if:NTF \l__minimalist_runin_bool
+ {
+ \titleformat{\subsubsection}[runin]
+ {\color{main-text!70!paper}\g_minimalist_title_font_subsubsection_tl}
+ {\scalebox{0.9}{\thesubsubsection}}{.33em}
+ {#1.}[\hspace*{.3em}]
+ }
+ {
+ \titleformat{\subsubsection}
+ {\LocallyStopLineNumbers
+ \color{main-text!70!paper}\g_minimalist_title_font_subsubsection_tl}
+ {\scalebox{0.9}{\thesubsubsection}}{.33em}
+ {#1}
+ [\ResumeLineNumbers]
+ }
+
+%% Paragraph
+\titleformat{\paragraph}[runin]
+ { \g_minimalist_title_font_paragraph_tl }{\theparagraph}{1em}{#1}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.3\baselineskip}
+
+%%================================
+%% ToC format
+%%================================
+\RequirePackage { titletoc }
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\normalfont}
+ {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\normalfont}
+ {\contentslabel[\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}\,\textcolor{main-text!90!paper}{ \minimalist_apply_title_numbering_style:N { \thecontentslabel } }\,\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [9.5em] % i.e., 7em (subsection) + 3.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\hspace*{-3.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+ {
+ \titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [4.5em] % i.e., 2em (section) + 2.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\hspace*{-2.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [7.5em] % i.e., 4.5em (subsection) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage { enumitem }
+\setlist{noitemsep}
+\setlist[enumerate]{labelsep=*, leftmargin=*}
+\setlist[enumerate,1]{label=\arabic*$)$,
+ ref = \arabic*$)$}
+\setlist[enumerate,2]{label=\emph{\roman*}$)$,
+ ref = \arabic{enumi}.\emph{\roman*}$)$}
+\setlist[enumerate,3]{label=\emph{\alph*}$)$,
+ ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
+\setlist[description]{font=\normalfont\minimalist_bfseries:}
+\newcommand\desculine{\colorlet{currentcolor}{.}\bgroup\markoverwith{\color{currentcolor!55!paper}
+ \rule[-.45ex]{2pt}{.75pt}}\ULon}
+\renewcommand{\descriptionlabel}[1]{
+ \hspace{\labelsep}\normalfont\desculine{#1}
+}
+
+\setlist[itemize]{leftmargin=*}
+\AddLanguageSetting { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}} }
+\AddLanguageSetting [french] { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!55!paper}{---}} }
+\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
+\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This~page~is~intentionally~left~blank}
+\renewcommand{\cleardoublepage}{
+ \relax
+ \clearpage
+ \if@twoside\ifodd\c@page\relax\else
+ \thispagestyle{empty}
+ \hook_gput_next_code:nn { shipout/background }
+ {
+ \put(0.5\paperwidth,-0.5\paperheight){
+ \makebox[0pt]{\large\color{main-text!10!paper}\blinkpagetext}}
+ }
+ \null\newpage\fi\fi
+}
+
+%%================================
+%% Draft mark
+%%================================
+\RequirePackage { projlib-draft }
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage { mathtools }
+\RequirePackage { amsthm }
+
+\def\simpleqedsymbol{
+ \makebox[1em]{\rlap{\textcolor{main-text!12!paper}{\rule[-0.1em]{.95em}{.95em}}}{\kern.07em\raisebox{.07em}{\textcolor{paper}{\rule[-0.1em]{.81em}{.81em}}}\kern.07em}}}
+\bool_if:NTF \l__minimalist_theorem_in_new_line_bool
+ {
+ \newtheoremstyle{simple}
+ {.5\baselineskip}{.5\baselineskip}
+ {\normalfont}{}
+ {\normalfont}{}
+ {\newline}
+ { \global\let\qedsymbol\simpleqedsymbol
+ {\thmname{#1}\nobreakspace\thmnumber{#2}}
+ \thmnote{\hspace{.4em}\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\hspace{.4em}\color{main-text!50!paper}\ensuremath{(\text{#3})}}
+ \smallskip
+ \pushQED{\qed}
+ }
+ }
+ {
+ \newtheoremstyle{simple}
+ {.5\baselineskip}{.5\baselineskip}
+ {\normalfont}{}
+ {\normalfont}{}
+ {0pt}
+ { \global\let\qedsymbol\simpleqedsymbol
+ {\thmname{#1}\nobreakspace\thmnumber{#2}}\hspace{.4em}
+ \textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\hspace{.4em}
+ \color{main-text!50!paper}\thmnote{\ensuremath{(\text{#3})}\nobreakspace\nobreakspace}
+ \pushQED{\qed}
+ }
+ }
+\def\@endtheorem{\global\let\qedsymbol\simpleqedsymbol
+ \popQED\endtrivlist\@endpefalse
+ \global\let\qedsymbol\qedsymbolOriginal}
+
+\theoremstyle{simple}
+
+\renewcommand{\qedsymbol}{
+ \makebox[1em]{\color{main-text!27!paper}\rule[-0.1em]{.95em}{.95em}}}
+\let\qedsymbolOriginal\qedsymbol
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \providecommand{\phantomsection}{}
+ \RequirePackage { url }
+ \newcommand{\href}[2]{#2}
+ }
+ {
+ \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
+ \RequirePackage { bookmark }
+ \RequirePackage { hyperref }
+ }
+
+\RequirePackage { projlib-theorem }
+
+\bool_if:NF \l__projlib_theorem_complexname_bool
+ {
+ \exp_args:No \SetTheorem { \c_projlib_theorem_supported_clist }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , Crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+
+ \SetTheorem { remark }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+ }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \bool_if:NT \l__minimalist_theorem_in_new_line_bool
+ {
+ \PassOptionsToPackage { many } { tcolorbox }
+ \RequirePackage { tcolorbox }
+ \cs_new_protected:Nn \minimclass_box_environment:n
+ {
+ \hook_gput_code:nnn { env/#1/before } { minimalist }
+ {
+ \LocallyStopLineNumbers
+ \begin { tcolorbox }
+ [
+ enhanced~jigsaw,
+ frame~hidden,
+ interior~hidden,
+ top = 0pt, bottom = 0pt,
+ left = 0pt, right = 0pt,
+ boxrule = 0pt, boxsep = 0pt,
+ before~skip = 1em+\parskip,
+ after~skip = 1.2em+\parskip,
+ breakable, lines~before~break=3,
+ ]
+ }
+ \hook_gput_code:nnn { env/#1/after } { minimalist }
+ {
+ \end { tcolorbox }
+ \ResumeLineNumbers
+ }
+ }
+ \exp_args:No \clist_map_inline:nn { \c_projlib_theorem_supported_clist }
+ {
+ \minimclass_box_environment:n { #1 }
+ \minimclass_box_environment:n { #1 * }
+ }
+ }
+ }
+
+%%================================
+%% Index
+%%================================
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+{
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+}
+
+\bool_if:NF \l__minimalist_is_book_bool {
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{
+ \LocallyStopLineNumbers
+ \noindent
+ {\textcolor{main-text!27!paper}{\rule{\textwidth}{0.75pt}}}
+ % \vspace{-\parskip}
+ \vspace{-.5\baselineskip}
+ \begin{flushright}
+ \let\footnote\thanks
+ {\minimalist_bfseries:\@title}\\\medskip
+ \color{main-text!80!paper}
+ {\small\scshape\@author}
+ \par\vspace{-\parskip}\vspace{2pt}
+ {\small\@date}
+ \end{flushright}
+ % \vspace{-\parskip}
+ \vspace{-.5\baselineskip}
+ \ifx\@date\@empty
+ \vspace{\baselineskip}
+ \vspace{1.2\parskip}
+ \else
+ \vspace{-.5\baselineskip}
+ \fi
+ {\textcolor{main-text!27!paper}{\rule{\textwidth}{0.75pt}}\par}
+ \ResumeLineNumbers
+}
+
+\hook_gput_code:nnn { cmd/maketitle/after } { minimalist } { \thispagestyle{fancy} }
+
+%%================================
+%% Abstract style
+%%================================
+\renewenvironment{abstract}
+ {
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ { \g_minimalist_title_font_section_tl \scshape \small\abstractname}\par
+ \vspace{-\parskip}
+ \vspace{-.25\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ }
+ {
+ \end{minipage}
+ \end{flushright}
+ \bigskip
+ \ResumeLineNumbers
+ }
+
+%%================================
+%% Keyword environment
+%%================================
+\DefineMultilingualText { \keywordname }
+ {
+ EN = Keywords ,
+ FR = Mots~clés ,
+ DE = Schlüsselwörter ,
+ IT = Parole~chiave ,
+ PT = Palavras~chave ,
+ BR = Palavras~chave ,
+ ES = Palabras~clave ,
+ CN = 关键词 ,
+ TC = 關鍵詞 ,
+ JP = キーワード ,
+ RU = Ключевые~слова ,
+ }
+
+\newenvironment{keyword}{
+ \LocallyStopLineNumbers
+ \vspace{-.5\baselineskip}
+ \begin{flushright}
+ {\minimalist_bfseries:\scshape\small\keywordname}\par
+ \vspace{-\parskip}
+ \vspace{-.30\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ \raggedleft
+}{
+ \end{minipage}
+ \end{flushright}
+ \bigskip
+ \ResumeLineNumbers
+}
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\PassOptionsToPackage { amsfashion } { projlib-author }
+\RequirePackage { projlib-author }
+
+}
+
+\endinput
+%%
+%% End of file `minimalist/minimalist-classical.sty'.
diff --git a/macros/latex/contrib/minimalist/minimalist-plain.sty b/macros/latex/contrib/minimalist/minimalist-plain.sty
new file mode 100644
index 0000000000..2bc3cd69b0
--- /dev/null
+++ b/macros/latex/contrib/minimalist/minimalist-plain.sty
@@ -0,0 +1,786 @@
+%%
+%% This is file `minimalist/minimalist-plain.sty',
+%% generated with the docstrip utility.
+
+%% Copyright (C) 2021-2022 by Jinwen XU
+%%
+%% This is part of the minimalist class series.
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist-plain}
+ {2022/03/17} {}
+ {The plain style of minimalist}
+
+\@ifpackageloaded { minimalist } {}
+ {
+ \msg_new:nnn { \@currname }
+ { minimalist-not-loaded }
+ { "#1"~is~an~internal~style~of~"minimalist".~To~use~it,~you~must~load~the~package~"minimalist"~first. }
+ \msg_warning:nnx { \@currname } { minimalist-not-loaded } { \@currname }
+ \endinput
+ }
+
+%%================================
+%% Title fonts
+%%================================
+\RequirePackage { anyfontsize }
+
+\bool_if:NTF \l__minimalist_use_boldface_bool
+ {
+ \cs_new:Nn \minimalist_bfseries: { \bfseries \colorlet{minimalist-temp-color}{.} \color{minimalist-temp-color!70!paper} }
+ }
+ {
+ \cs_new:Nn \minimalist_bfseries: {}
+ }
+
+\tl_new:N \g_minimalist_title_font_common_tl
+
+\tl_new:N \g_minimalist_title_font_part_tl
+\tl_new:N \g_minimalist_title_font_chapter_tl
+\tl_new:N \g_minimalist_title_font_section_tl
+\tl_new:N \g_minimalist_title_font_subsection_tl
+\tl_new:N \g_minimalist_title_font_subsubsection_tl
+\tl_new:N \g_minimalist_title_font_paragraph_tl
+
+\tl_gset:Nn \g_minimalist_title_font_part_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_chapter_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_section_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+\tl_gset:Nn \g_minimalist_title_font_subsection_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+\tl_gset:Nn \g_minimalist_title_font_subsubsection_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_paragraph_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \RequirePackage { tikz }
+ \ExplSyntaxOff
+ \usetikzlibrary{calc,shadings}
+ \ExplSyntaxOn
+ \RequirePackage { tikzpagenodes } % For `current page text area`
+ }
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_const:Nn \l_minimalist_sep_bar { $|$ }
+ }
+ {
+ \tl_const:Nn \l_minimalist_sep_bar
+ {
+ \skip_horizontal:n { .1em }
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (0,0) -- (0,.9em);
+ \skip_horizontal:n { .1em }
+ }
+ }
+
+%%================================
+%% Footer
+%%================================
+\RequirePackage { geometry }
+\RequirePackage { fancyhdr }
+\RequirePackage { extramarks }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \fancyhfoffset { 0pt }
+ }
+
+\tl_new:N \l_minimalist_leftmark_tl
+\tl_new:N \l_minimalist_rightmark_tl
+
+\tl_set:Nn \l_minimalist_leftmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \lastleftmark
+ \end{minipage}
+ }
+\tl_set:Nn \l_minimalist_rightmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \filleft
+ \lastrightmark
+ \end{minipage}
+ }
+
+\fancypagestyle { fancy }
+ {
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}
+ \nobreakspace\nobreakspace\textcolor{main-text!30!paper}{ \l_minimalist_leftmark_tl }}
+ \else
+ \fancyfoot[R]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+\pagestyle{fancy}
+
+\fancypagestyle { plain }
+ {
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}}
+ \else
+ \fancyfoot[R]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \bool_if:NTF \l__minimalist_fast_bool
+ {
+ \newcommand{ \minimalist_draw_help_line: }{}
+ }
+ {
+ \newcommand{ \minimalist_draw_help_line: }{
+ \begin{tikzpicture}[remember~picture,overlay]
+ \foreach\i in {0,1,...,5}{
+ \fill[opacity=0.12-0.02*\i]
+ ($(current~page~text~area.north~east)
+ +(-\i*0.5em-.025em,-10pt+\i*1.1pt)$)
+ rectangle ($(current~page~text~area.south~east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ \shade[top~color=paper,bottom~color=main-text,opacity=0.12-0.02*\i]
+ ($(current~page~text~area.north~east)
+ +(-\i*0.5em-.025em,2pt)$)
+ rectangle ($(current~page~text~area.north~east)
+ +(-\i*0.5em+.025em,-10pt+\i*1.1pt)$);
+ \shade[top~color=main-text,bottom~color=paper,opacity=0.12-0.02*\i]
+ ($(current~page~text~area.south~east)
+ +(-\i*0.5em-.025em,-2pt)$)
+ rectangle ($(current~page~text~area.south~east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ }
+ \end{tikzpicture}
+ }
+ }
+ \fancypagestyle{part}{
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \fancyhead[C]{ \minimalist_draw_help_line: }
+ }
+ \addtolength{\headheight}{20pt}
+ \addtolength{\topmargin}{-20pt}
+ \if@twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ \renewcommand*{\sectionmark}[1]{
+ \markright{\g_minimalist_section_decoration_char_tl\nobreakspace\arabic{section}\nobreakspace\g_minimalist_section_decoration_char_tl\nobreakspace\nobreakspace\nobreakspace#1}}
+ }
+ {
+ \if@twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ }
+
+%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage { pagewise,mathlines } { lineno }
+\RequirePackage { linenoamsmath }
+\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
+\setlength{\linenumbersep}{1em}
+
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+
+\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
+\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage [ explicit, newparttoc ] { titlesec }
+\PassOptionsToPackage { normalem } { ulem }
+\RequirePackage { ulem }
+
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
+\cs_new:Nn \minimalist_apply_title_numbering_style:N
+ {
+ \seq_set_split:Nnx \l_tmpa_seq { . } { #1 }
+ \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \usefont{U}{zeur}{b}{n} ##1 }
+ \textcolor{main-text!39!paper}{ \seq_use:Nn \l_tmpb_seq { $.$ } }
+ }
+
+\newcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+
+\AddLanguageSetting
+ {
+ \renewcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+ }
+\AddLanguageSetting [ schinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ tchinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ japanese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \setcounter{secnumdepth}{3}
+
+ %% Part
+ \titleclass{\part}{top} % make part like a chapter
+ \titleformat{\part}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titlespacing*{\part}{0pt}{5em}{6em}
+ %% Text after part
+ \newcommand{\parttext}[1]{
+ \vfill
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ \begin{minipage}{0.833\textwidth}
+ \color{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ \vfill\vfill
+ \cleardoublepage
+ }
+
+ %% Chapter
+ \titleformat{\chapter}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+ [\ResumeLineNumbers]
+ \titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{chapter}{#1}
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ [\ResumeLineNumbers]
+ }
+ {
+ %% Part
+ \titleformat{\part}[display]
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ %% Text after part
+ \newcommand{\parttext}[1]{
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ \begin{minipage}{0.833\textwidth}
+ \color{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ }
+ }
+
+%% Section
+\tl_gset:Nn \g_minimalist_section_decoration_char_tl {}
+\titleformat{\section}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_section_tl\centering}
+ {\raisebox{-.02\baselineskip}{\large \minimalist_apply_title_numbering_style:N { \thesection } }}{1em}
+ {#1}
+ [\ResumeLineNumbers]
+
+%% Subsection
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesubsection } }{.75em}
+ {#1}
+ [\ResumeLineNumbers]
+
+%% Subsubsection
+\bool_if:NTF \l__minimalist_runin_bool
+ {
+ \titleformat{\subsubsection}[runin]
+ {\g_minimalist_title_font_subsubsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesection } }{.5em}
+ {#1.}[\hspace*{.3em}]
+ }
+ {
+ \titleformat{\subsubsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsubsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesubsubsection } }{.5em}
+ {#1}
+ [\ResumeLineNumbers]
+ }
+
+%% Paragraph
+\titleformat{\paragraph}[runin]
+ { \g_minimalist_title_font_paragraph_tl }{\theparagraph}{1em}{#1}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.3\baselineskip}
+
+%%================================
+%% ToC format
+%%================================
+\RequirePackage { titletoc }
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\normalfont}
+ {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [9.5em] % i.e., 7em (subsection) + 3.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\hspace*{-3.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+ {
+ \titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [4.5em] % i.e., 2em (section) + 2.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\hspace*{-2.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [7.5em] % i.e., 4.5em (subsection) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage { enumitem }
+\setlist{noitemsep}
+\setlist[enumerate]{labelsep=*, leftmargin=*}
+\setlist[enumerate,1]{label=\arabic*$)$,
+ ref = \arabic*$)$}
+\setlist[enumerate,2]{label=\emph{\roman*}$)$,
+ ref = \arabic{enumi}.\emph{\roman*}$)$}
+\setlist[enumerate,3]{label=\emph{\alph*}$)$,
+ ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
+\setlist[description]{font=\normalfont\minimalist_bfseries:}
+
+\setlist[itemize]{leftmargin=*}
+\AddLanguageSetting { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}} }
+\AddLanguageSetting [french] { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!55!paper}{---}} }
+\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
+\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This~page~is~intentionally~left~blank}
+\renewcommand{\cleardoublepage}{
+ \relax
+ \clearpage
+ \if@twoside\ifodd\c@page\relax\else
+ \thispagestyle{empty}
+ \hook_gput_next_code:nn { shipout/background }
+ {
+ \put(0.5\paperwidth,-0.5\paperheight){
+ \makebox[0pt]{\large\color{main-text!10!paper}\blinkpagetext}}
+ }
+ \null\newpage\fi\fi
+}
+
+%%================================
+%% Draft mark
+%%================================
+\RequirePackage { projlib-draft }
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage { mathtools }
+\RequirePackage { amsthm }
+
+\bool_if:NTF \l__minimalist_theorem_in_new_line_bool
+ {
+ \newtheoremstyle{simple}
+ {}{}
+ {\normalfont}{}
+ {\normalfont}{}
+ {\newline}
+ {{\thmname{#1}\nobreakspace\thmnumber{#2}}
+ {\color{main-text!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}\smallskip}
+ }
+ {
+ \newtheoremstyle{simple}
+ {}{}
+ {\normalfont}{}
+ {\normalfont}{}
+ {0pt}
+ {{\thmname{#1}\nobreakspace\thmnumber{#2}}
+ {\color{main-text!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}\nobreakspace\nobreakspace{\normalfont\textcolor{main-text!27!paper}{---}}\nobreakspace\nobreakspace}
+ }
+
+\theoremstyle{simple}
+
+\renewcommand{\qedsymbol}{
+ \makebox[1em]{\color{main-text!27!paper}\rule[-0.1em]{.95em}{.95em}}}
+\let\qedsymbolOriginal\qedsymbol
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \providecommand{\phantomsection}{}
+ \RequirePackage { url }
+ \newcommand{\href}[2]{#2}
+ }
+ {
+ \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
+ \RequirePackage { bookmark }
+ \RequirePackage { hyperref }
+ }
+
+\RequirePackage { projlib-theorem }
+
+\bool_if:NF \l__projlib_theorem_complexname_bool
+ {
+ \exp_args:No \SetTheorem { \c_projlib_theorem_supported_clist }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , Crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+
+ \SetTheorem { remark }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+ }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \bool_if:NT \l__minimalist_theorem_in_new_line_bool
+ {
+ \PassOptionsToPackage { many } { tcolorbox }
+ \RequirePackage { tcolorbox }
+ \cs_new_protected:Nn \minimclass_box_environment:n
+ {
+ \hook_gput_code:nnn { env/#1/before } { minimalist }
+ {
+ \LocallyStopLineNumbers
+ \begin { tcolorbox }
+ [
+ enhanced~jigsaw,
+ frame~hidden,
+ interior~hidden,
+ top = 0pt, bottom = 0pt,
+ left = 0pt, right = 0pt,
+ boxrule = 0pt, boxsep = 0pt,
+ before~skip = 1em+\parskip,
+ after~skip = 1.2em+\parskip,
+ breakable, lines~before~break=3,
+ ]
+ }
+ \hook_gput_code:nnn { env/#1/after } { minimalist }
+ {
+ \end { tcolorbox }
+ \ResumeLineNumbers
+ }
+ }
+ \exp_args:No \clist_map_inline:nn { \c_projlib_theorem_supported_clist }
+ {
+ \minimclass_box_environment:n { #1 }
+ \minimclass_box_environment:n { #1 * }
+ }
+ }
+ }
+
+%%================================
+%% Index
+%%================================
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+{
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+}
+
+\bool_if:NF \l__minimalist_is_book_bool {
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{
+ \LocallyStopLineNumbers
+ \begin{center}
+ \let\footnote\thanks
+ {\minimalist_bfseries:\sffamily\scshape\Large\@title}\\\bigskip
+ \color{main-text!80!paper}
+ {\small\scshape\@author}
+ \par\smallskip\vspace{-\parskip}
+ {\small\@date}
+ \end{center}
+ \ifx\@date\@empty\medskip\fi
+ \medskip\par
+ \ResumeLineNumbers
+}
+
+\hook_gput_code:nnn { cmd/maketitle/after } { minimalist } { \thispagestyle{fancy} }
+
+%%================================
+%% Abstract style
+%%================================
+\renewenvironment{abstract}
+ {
+ \LocallyStopLineNumbers
+ \vspace{-.5\baselineskip}
+ \begin{center}
+ { \g_minimalist_title_font_section_tl \scshape \small\abstractname}\\
+ \vspace{-.3\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ }
+ {
+ \end{minipage}
+ \end{center}
+ \medskip
+ \ResumeLineNumbers
+ }
+
+%%================================
+%% Keyword environment
+%%================================
+\DefineMultilingualText { \keywordname }
+ {
+ EN = Keywords ,
+ FR = Mots~clés ,
+ DE = Schlüsselwörter ,
+ IT = Parole~chiave ,
+ PT = Palavras~chave ,
+ BR = Palavras~chave ,
+ ES = Palabras~clave ,
+ CN = 关键词 ,
+ TC = 關鍵詞 ,
+ JP = キーワード ,
+ RU = Ключевые~слова ,
+ }
+
+\newenvironment{keyword}{
+ \LocallyStopLineNumbers
+ \vspace{-.75\baselineskip}
+ \begin{center}
+ {\minimalist_bfseries:\scshape\small\keywordname}\\
+ \vspace{-.3\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ \begin{center}
+}{
+ \end{center}
+ \end{minipage}
+ \end{center}
+ \medskip
+ \ResumeLineNumbers
+}
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\PassOptionsToPackage { amsfashion } { projlib-author }
+\RequirePackage { projlib-author }
+
+}
+
+\endinput
+%%
+%% End of file `minimalist/minimalist-plain.sty'.
diff --git a/macros/latex/contrib/minimalist/minimalist.sty b/macros/latex/contrib/minimalist/minimalist.sty
index 85a64926d6..176d5986e0 100644
--- a/macros/latex/contrib/minimalist/minimalist.sty
+++ b/macros/latex/contrib/minimalist/minimalist.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist.sty',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,906 +16,76 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesPackage{minimalist}
- [2021/12/16 A simple and clear style for articles and books]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{%
- family = @minimalist,
- prefix = @minimalist@
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{puretext}
-\DeclareBoolOption[false]{nothms}
-\DeclareBoolOption[false]{delaythms}
-\DeclareBoolOption[false]{nothmnum}
-\DeclareStringOption{thmnum}[minimalist@thmnum@default]
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-\DeclareBoolOption[false]{allowbf}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{runin}
-\ProcessKeyvalOptions*\relax
-
-\if@minimalist@originalref
- \@minimalist@regionalreffalse
-\fi
-\if@minimalist@draft
- \@minimalist@fasttrue
-\fi
-\if@minimalist@puretext
- \@minimalist@nothmstrue
-\fi
-
-\if@minimalist@fast
- \PassOptionsToPackage{fast}{PJLdraft}
- \PassOptionsToPackage{fast}{PJLthm}
-\fi
-\expandafter\ifstrempty\expandafter{\@minimalist@thmnum}{}{
- \expandafter\ifstrequal\expandafter{\@minimalist@thmnum}{minimalist@thmnum@default}{
- \PassOptionsToPackage{thmnum}{PJLthm}
- }{
- \PassOptionsToPackage{thmnum=\@minimalist@thmnum}{PJLthm}
- }
-}
-\if@minimalist@regionalref\else
- \PassOptionsToPackage{originalref}{PJLthm}
-\fi
-
-\if@minimalist@allowbf
- \newcommand{\conditionalbfseries}{\bfseries\colorlet{PJLtempcolor}{.}\color{PJLtempcolor!83!paper}}
-\else
- \newcommand{\conditionalbfseries}{}
-\fi
-
-\newif\ifIsBook
-\ifdefined\c@chapter\IsBooktrue\else\IsBookfalse\fi
-
-%%================================
-%% Title fonts
-%%================================
-\RequirePackage{anyfontsize}
-
-\def\minimalist@titlefontshape{}
-
-\if@minimalist@classical
-\newcommand{\partfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\chapfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\secfont}{\conditionalbfseries}
-\newcommand{\subsecfont}{\conditionalbfseries}
-\newcommand{\subsubsecfont}{\conditionalbfseries\itshape}
-\else
-\newcommand{\partfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\chapfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\secfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\subsecfont}{\conditionalbfseries\minimalist@titlefontshape}
-\newcommand{\subsubsecfont}{\conditionalbfseries\minimalist@titlefontshape}
-\fi
-
-%%================================
-%% Paper configuration
-%%================================
-\RequirePackage{PJLpaper}
-
-%%================================
-%% Footer
-%%================================
-\RequirePackage{geometry}
-\RequirePackage{fancyhdr}
-\RequirePackage{extramarks}
-
-\AtEndPreamble{\fancyhfoffset{0pt}}
-
-\fancypagestyle{fancy}{
- \fancyhf{}
- \if@twoside
- \fancyfoot[RO]{\small\textcolor{maintext!30!paper}{\lastrightmark}%
- ~~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
- ~~\textcolor{maintext!27!paper}{$|$}}%
- ~~\textcolor{maintext!30!paper}{\lastleftmark}}
- \else
- \fancyfoot[R]{\small\textcolor{maintext!30!paper}{\lastrightmark}%
- ~~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fi
- \renewcommand{\headrulewidth}{0pt}
-}
-\pagestyle{fancy}
-
-\fancypagestyle{plain}{
- \fancyhf{}
- \if@twoside
- \fancyfoot[RO]{\small%
- ~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
- ~~\textcolor{maintext!27!paper}{$|$}}}
- \else
- \fancyfoot[R]{\small%
- ~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fi
- \renewcommand{\headrulewidth}{0pt}
-}
-\ifbool{IsBook}{
- \if@minimalist@fast
- \newcommand{\drawHelpLine}{}
- \else
- \RequirePackage{tikz}
- \usetikzlibrary{calc,shadings}
- \RequirePackage{tikzpagenodes}% For `current page text area`
- \newcommand{\drawHelpLine}{%
- \begin{tikzpicture}[remember picture,overlay]
- \foreach\i in {0,1,...,5}{%
- \fill[opacity=0.12-0.02*\i]
- ($(current page text area.north east)
- +(-\i*0.5em-.025em,-10pt+\i*1.1pt)$)
- rectangle ($(current page text area.south east)
- +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
- \shade[top color=paper,bottom color=maintext,opacity=0.12-0.02*\i]
- ($(current page text area.north east)
- +(-\i*0.5em-.025em,2pt)$)
- rectangle ($(current page text area.north east)
- +(-\i*0.5em+.025em,-10pt+\i*1.1pt)$);
- \shade[top color=maintext,bottom color=paper,opacity=0.12-0.02*\i]
- ($(current page text area.south east)
- +(-\i*0.5em-.025em,-2pt)$)
- rectangle ($(current page text area.south east)
- +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
- }
- \end{tikzpicture}%
- }
- \fi
- \fancypagestyle{part}{
- \fancyhf{}
- \renewcommand{\headrulewidth}{0pt}
- \fancyhead[C]{\drawHelpLine}
- }
- \addtolength{\headheight}{20pt}
- \addtolength{\topmargin}{-20pt}
- \if@twoside
- \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
- \else
- \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
- \fi
- \renewcommand*{\sectionmark}[1]{%
- \markright{\sec@decochar~\arabic{section}~\sec@decochar~~~#1}}
-}{
- \if@twoside
- \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
- \else
- \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
- \fi
-}
-%%================================
-%% Languages and line spacing
-%%================================
-\RequirePackage{PJLlang}
-\PJLsetlinespacing{\setstretch{1.07}}
-\PJLsetCJKlinespacing{\onehalfspacing}
-\raggedbottom
-
-%%================================
-%% Line numbers
-%%================================
-\PassOptionsToPackage{pagewise,mathlines}{lineno}
-\RequirePackage{linenoamsmath}
-\renewcommand\linenumberfont{\ttfamily\color{maintext!7!paper}\footnotesize}
-\setlength\linenumbersep{1em}
-
-\newif\ifLNturnsON
-\def\LocallyStopLineNumbers{\LNturnsONfalse%
- \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
-\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
-
-\pretocmd{\tableofcontents}{\LocallyStopLineNumbers}{}{\FAIL}
-\apptocmd{\tableofcontents}{\ResumeLineNumbers}{}{\FAIL}
-\pretocmd{\thebibliography}{\LocallyStopLineNumbers}{}{\FAIL}
-\apptocmd{\endthebibliography}{\ResumeLineNumbers}{}{\FAIL}
-
-%%================================
-%% Title format
-%%================================
-\RequirePackage[explicit,newparttoc]{titlesec}
-\PassOptionsToPackage{normalem}{ulem}
-\RequirePackage{ulem}
-
-\newcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}
-\gappto{\PJLlang@langconfig@common}{%
-\renewcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}%
-}
-\gappto{\PJLlang@langconfig@CN}{%
-\renewcommand{\partstring}{第~\thepart~部分}%
-}
-\gappto{\PJLlang@langconfig@TC}{%
-\renewcommand{\partstring}{第~\thepart~部分}%
-}
-\gappto{\PJLlang@langconfig@JP}{%
-\renewcommand{\partstring}{第~\thepart~部}%
-}
-
-\ifbool{IsBook}{
- %% Part
- \titleclass{\part}{top} % make part like a chapter
- \titleformat{\part}[display]
- {\thispagestyle{part}%
- \LocallyStopLineNumbers%
- \partfont\filleft}
- {\partstring}
- {1em}
- {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
- [\ResumeLineNumbers]
- \titleformat{name=\part,numberless}[display]
- {\thispagestyle{part}%
- \LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{part}{#1}%
- \partfont\filleft}
- {\phantom{\MakeUppercase{\partname}}}
- {1em}
- {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
- [\ResumeLineNumbers]
- \titlespacing*{\part}{0pt}{5em}{6em}
- %% Text after part
- \newcommand{\parttext}[1]{%
- \vfill%
- \LocallyStopLineNumbers%
- \begin{flushright}%
- \begin{minipage}{0.833\textwidth}%
- \color{maintext!80!paper}\raggedleft#1%
- \end{minipage}%
- \end{flushright}%
- \ResumeLineNumbers%
- \vfill\vfill%
- \cleardoublepage%
- }
-
- %% Chapter
- \titleformat{\chapter}
- {\thispagestyle{fancy}%
- \LocallyStopLineNumbers%
- \color{maintext!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{maintext!12!paper}%
- \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
- [\ResumeLineNumbers]
- \titleformat{name=\chapter,numberless}
- {\thispagestyle{fancy}%
- \LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{chapter}{#1}%
- \color{maintext!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{maintext!12!paper}%
- \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
- [\ResumeLineNumbers]
-}{
- %% Part
- \titleformat{\part}[display]
- {\LocallyStopLineNumbers%
- \partfont\filleft}
- {\partstring}
- {.3em}
- {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
- [\ResumeLineNumbers]
- \titleformat{name=\part,numberless}[display]
- {\LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{part}{#1}%
- \partfont\filleft}
- {\phantom{\MakeUppercase{\partname}}}
- {.3em}
- {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
- [\ResumeLineNumbers]
- %% Text after part
- \newcommand{\parttext}[1]{%
- \LocallyStopLineNumbers%
- \begin{flushright}%
- \begin{minipage}{0.833\textwidth}%
- \color{maintext!80!paper}\raggedleft#1%
- \end{minipage}%
- \end{flushright}%
- \ResumeLineNumbers%
- }
-}
-
-%% Section
-\if@minimalist@classical
-\renewcommand\thesection{\arabic{section}}
-\newcommand\seculine{\bgroup\markoverwith{\color{maintext!27!paper}%
- \rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
-\newcommand\sec@decochar{\raisebox{.03em}{\normalfont/}}
-\titleformat{\section}
- {\LocallyStopLineNumbers%
- \secfont\centering}{}{0em}
- {{\small\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}%
- \,\,\textcolor{maintext!90!paper}{\conditionalbfseries\arabic{section}}%
- \,\,\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}}\\
- \seculine{#1}}
- [\ResumeLineNumbers]
-\titleformat{name=\section,numberless}
- {\LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{section}{#1}%
- \secfont\centering}{}{0em}
- {\seculine{#1}}
- [\ResumeLineNumbers]
-\else
-\newcommand\sec@decochar{}
-\titleformat{\section}
- {\LocallyStopLineNumbers%
- \secfont\centering}
- {\thesection}{.75em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Subsection
-\if@minimalist@classical
-\renewcommand\thesubsection{%
- \ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
-\newcommand\subseculine{\bgroup\markoverwith{\color{maintext!27!paper}%
- \rule[-1ex]{2pt}{.75pt}}\ULon}
-\titleformat{\subsection}
- {\LocallyStopLineNumbers%
- \subsecfont}{}{0em}
- {\subseculine{\thesubsection~\textcolor{maintext!27!paper}{$|$}~#1}}
- [\ResumeLineNumbers]
-\titleformat{name=\subsection,numberless}
- {\LocallyStopLineNumbers%
- \subsecfont}{}{0em}
- {\subseculine{#1}}
- [\ResumeLineNumbers]
-\else
-\titleformat{\subsection}
- {\LocallyStopLineNumbers%
- \subsecfont}
- {\thesubsection}{.75em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Subsubsection
-\if@minimalist@runin
-\titleformat{\subsubsection}[runin]
- {\color{maintext!70!paper}\subsubsecfont}{\thesubsubsection}{.5em}
- {#1.}[\hspace*{.3em}]
-\else
-\titleformat{\subsubsection}
- {\LocallyStopLineNumbers%
- \color{maintext!70!paper}\subsubsecfont}{\thesubsubsection}{.5em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Paragraph
-\titleformat{\paragraph}[runin]
- {\scshape}{\theparagraph}{1em}{#1}
-
-\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
-\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
-\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.2\baselineskip}
-
-%%================================
-%% ToC format
-%%================================
-\RequirePackage{titletoc}
-\titlecontents{part}
- [0em]
- {\addvspace{1.5pc}\filcenter\normalfont}
- {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
- {}
- {} % without page number
- [\addvspace{.5pc}]
-\ifbool{IsBook}{
- \titlecontents{chapter}
- [2em] % i.e., 0em (part) + 2em
- {\addvspace{.5pc}\normalfont}
- {\contentslabel{2em}}
- {\hspace*{-2em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{section}
- [4em] % i.e., 2em (chapter) + 2em
- {\normalfont}
- {\contentslabel[\textcolor{maintext!27!paper}{\small\sec@decochar}\,\textcolor{maintext!90!paper}{\thecontentslabel}\,\textcolor{maintext!27!paper}{\small\sec@decochar}]{2em}}
- {\hspace*{-2em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsection}
- [6.5em] % i.e., 4em (section) + 2.5em
- {\normalfont}
- {\contentslabel{2.25em}}
- {\hspace*{-2.25em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsubsection}
- [8.5em] % i.e., 6.5em (subsection) + 3em
- {\normalfont}
- {\contentslabel{2.75em}}
- {\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
-}{
- \titlecontents{section}
- [2em] % i.e., 0em (part) + 2em
- {\normalfont}
- {\contentslabel{1.75em}}
- {\hspace*{-1.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsection}
- [4.5em] % i.e., 2em (section) + 2.5em
- {\normalfont}
- {\contentslabel{2.25em}}
- {\hspace*{-2.25em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsubsection}
- [7.5em] % i.e., 4.5em (subsection) + 3em
- {\normalfont}
- {\contentslabel{2.75em}}
- {\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
-}
-
-%%================================
-%% Lists
-%%================================
-\RequirePackage{enumitem}
-\setlist{noitemsep}
-\setlist[enumerate]{labelsep=*, leftmargin=*}
-\setlist[enumerate,1]{label=\arabic*$)$,
- ref = \arabic*$)$}
-\setlist[enumerate,2]{label=\emph{\roman*}$)$,
- ref = \arabic{enumi}.\emph{\roman*}$)$}
-\setlist[enumerate,3]{label=\emph{\alph*}$)$,
- ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
-\setlist[description]{font=\normalfont\conditionalbfseries}
-\if@minimalist@classical
-\newcommand\desculine{\colorlet{currentcolor}{.}\bgroup\markoverwith{\color{currentcolor!50!paper}%
- \rule[-.45ex]{2pt}{.75pt}}\ULon}
-\renewcommand{\descriptionlabel}[1]{%
- \hspace{\labelsep}\normalfont\desculine{#1}%
-}
-\fi
-
-\setlist[itemize]{leftmargin=*}
-\gappto{\PJLlang@langconfig@common}{\setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}}}
-\gappto{\PJLlang@langconfig@FR}{\setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!50!paper}{---}}}
-\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
-\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
-
-%%================================
-%% Blank page
-%%================================
-\newcommand{\blinkpagetext}{This page is intentionally left blank}
-\renewcommand{\cleardoublepage}{\relax
- \clearpage
- \if@twoside\ifodd\c@page\relax\else
- \thispagestyle{empty}
- \AddToHookNext{shipout/background}
- {%
- \put(0.5\paperwidth,-0.5\paperheight){%
- \makebox[0pt]{\large\color{maintext!10!paper}\blinkpagetext}}}
- \null\newpage\fi\fi}
-
-%%================================
-%% Draft mark
-%%================================
-\RequirePackage{PJLdraft}
-
-%%================================
-%% Theorems
-%%================================
-\RequirePackage{mathtools}
-\RequirePackage{amsthm}
-\if@minimalist@classical
-\def\simpleqedsymbol{%
- \makebox[1em]{\rlap{\textcolor{maintext!12!paper}{\rule[-0.1em]{.95em}{.95em}}}{\kern.07em\raisebox{.07em}{\textcolor{paper}{\rule[-0.1em]{.81em}{.81em}}}\kern.07em}}}
-\newtheoremstyle{simple}%
- {}{}%
- {\normalfont}{}%
- {\normalfont}{}%
- {0pt}%
- {\global\let\qedsymbol\simpleqedsymbol%
- {\conditionalbfseries\thmname{#1}\thmnumber{ #2}}\hspace{.4em}%
- \textcolor{maintext!27!paper}{$|$}\hspace{.4em}%
- \color{maintext!50!paper}\thmnote{\ensuremath{(\text{#3})}~~}%
- \pushQED{\qed}%
- }
-\def\@endtheorem{\global\let\qedsymbol\simpleqedsymbol%
- \popQED\endtrivlist\@endpefalse
- \global\let\qedsymbol\qedsymbolOriginal}
-\else
- \newtheoremstyle{simple}%
- {}{}%
- {\normalfont}{}%
- {\normalfont}{}%
- {0pt}%
- {{\conditionalbfseries\minimalist@titlefontshape\thmname{#1}\thmnumber{ #2}}%
- {\color{maintext!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}~~{\normalfont---}~~}
-\fi
-
-\renewcommand{\qedsymbol}{%
- \makebox[1em]{\color{maintext!27!paper}\rule[-0.1em]{.95em}{.95em}}}
-\let\qedsymbolOriginal\qedsymbol
-
-\if@minimalist@fast
- \providecommand{\phantomsection}{}
- \RequirePackage{url}
- \newcommand{\href}[2]{#2}
-\else
- \PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
- \RequirePackage{bookmark}
- \RequirePackage{hyperref}
-\fi
-
-\PassOptionsToPackage{nothms,simplename}{PJLthm}
-\RequirePackage{PJLthm}
-
-\pretocmd{\theoremnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameEN}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameEN}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameEN}{\textsc}{}{\FAIL}
-\pretocmd{\factnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameEN}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameEN}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameFR}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameFR}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameFR}{\textsc}{}{\FAIL}
-\pretocmd{\factnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameFR}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameFR}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameDE}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameDE}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameDE}{\textsc}{}{\FAIL}
-\pretocmd{\factnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameDE}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameDE}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameIT}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameIT}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameIT}{\textsc}{}{\FAIL}
-\pretocmd{\factnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameIT}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameIT}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanamePT}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynamePT}{\textsc}{}{\FAIL}
-\pretocmd{\propertynamePT}{\textsc}{}{\FAIL}
-\pretocmd{\factnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\notationnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\examplenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\problemnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\questionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\remarknamePT}{\itshape}{}{\FAIL}
-\pretocmd{\observationnamePT}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameBR}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameBR}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameBR}{\textsc}{}{\FAIL}
-\pretocmd{\factnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameBR}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameBR}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameES}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameES}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameES}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameES}{\textsc}{}{\FAIL}
-\pretocmd{\factnameES}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameES}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameES}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameES}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameES}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameES}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameES}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameES}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameES}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameES}{\itshape}{}{\FAIL}
-
-
-\theoremstyle{simple}
-
-\def\minimalist@definethms{
-\if@minimalist@nothms\else
-\if@minimalist@nothmnum
-\CreateTheorem*{theorem}
-\CreateTheorem*{lemma}
-\CreateTheorem*{proposition}
-\CreateTheorem*{corollary}
-\CreateTheorem*{definition-proposition}
-\CreateTheorem*{definition-theorem}
-\CreateTheorem*{property}
-\CreateTheorem*{fact}
-\CreateTheorem*{conjecture}
-\else
-\CreateTheorem@thmnum{theorem}
-\CreateTheorem{lemma}[theorem]
-\CreateTheorem{proposition}[theorem]
-\CreateTheorem{corollary}[theorem]
-\CreateTheorem{definition-proposition}[theorem]
-\CreateTheorem{definition-theorem}[theorem]
-\CreateTheorem{property}[theorem]
-\CreateTheorem{fact}[theorem]
-\CreateTheorem{conjecture}[theorem]
-\fi
-\CreateTheorem*{theorem*}
-\CreateTheorem*{lemma*}
-\CreateTheorem*{proposition*}
-\CreateTheorem*{corollary*}
-\CreateTheorem*{definition-proposition*}
-\CreateTheorem*{definition-theorem*}
-\CreateTheorem*{property*}
-\CreateTheorem*{fact*}
-\CreateTheorem*{conjecture*}
-\if@minimalist@nothmnum
-\CreateTheorem*{definition}
-\CreateTheorem*{axiom}
-\CreateTheorem*{assumption}
-\CreateTheorem*{convention}
-\CreateTheorem*{hypothesis}
-\CreateTheorem*{notation}
-\CreateTheorem*{example}
-\CreateTheorem*{problem}
-\CreateTheorem*{question}
-\CreateTheorem*{exercise}
-\else
-\CreateTheorem{definition}[theorem]
-\CreateTheorem{axiom}[theorem]
-\CreateTheorem{assumption}[theorem]
-\CreateTheorem{convention}[theorem]
-\CreateTheorem{hypothesis}[theorem]
-\CreateTheorem{notation}[theorem]
-\CreateTheorem{example}[theorem]
-\CreateTheorem{problem}[theorem]
-\CreateTheorem{question}[theorem]
-\CreateTheorem{exercise}[theorem]
-\fi
-\CreateTheorem*{definition*}
-\CreateTheorem*{axiom*}
-\CreateTheorem*{assumption*}
-\CreateTheorem*{convention*}
-\CreateTheorem*{hypothesis*}
-\CreateTheorem*{notation*}
-\CreateTheorem*{example*}
-\CreateTheorem*{problem*}
-\CreateTheorem*{question*}
-\CreateTheorem*{exercise*}
-\if@minimalist@nothmnum
-\CreateTheorem*{remark}
-\CreateTheorem*{observation}
-\else
-\CreateTheorem@thmnum{remark}
-\CreateTheorem@thmnum{observation}
-\fi
-\CreateTheorem*{remark*}
-\CreateTheorem*{observation*}
-\fi
-}
-
-\if@minimalist@delaythms
- \AtEndPreamble{\minimalist@definethms}
-\else
- \minimalist@definethms
-\fi
-
-\ifbool{IsBook}{}{%
-
-%%================================
-%% Title block style
-%%================================
-\if@minimalist@classical
-\renewcommand{\@maketitle}{%
- \LocallyStopLineNumbers%
- \noindent%
- {\textcolor{maintext!27!paper}{\rule{\textwidth}{0.75pt}}}%
- % \vspace{-\parskip}%
- \vspace{-.5\baselineskip}%
- \begin{flushright}%
- \let\footnote\thanks%
- {\conditionalbfseries\@title}\\\medskip%
- \color{maintext!80!paper}%
- {\small\scshape\@author}%
- \par\vspace{-\parskip}\vspace{2pt}%
- {\small\@date}%
- \end{flushright}%
- % \vspace{-\parskip}%
- \vspace{-.5\baselineskip}%
- \ifx\@date\@empty%
- \vspace{\baselineskip}%
- \vspace{1.2\parskip}%
- \else%
- \vspace{-.5\baselineskip}%
- \fi%
- {\textcolor{maintext!27!paper}{\rule{\textwidth}{0.75pt}}\par}%
- \ResumeLineNumbers%
-}
-\else
-\renewcommand{\@maketitle}{%
- \LocallyStopLineNumbers%
- \begin{center}%
- \let\footnote\thanks%
- {\conditionalbfseries\minimalist@titlefontshape\large\@title}\\\bigskip%
- \color{maintext!80!paper}%
- {\small\scshape\@author}\\[2pt]%
- {\small\@date}%
- \end{center}%
- \ifx\@date\@empty\bigskip\fi%
- \bigskip\par%
- \ResumeLineNumbers%
-}
-\fi
-\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
-
-%%================================
-%% Abstract style
-%%================================
-\if@minimalist@classical
-\renewenvironment{abstract}{%
- \LocallyStopLineNumbers%
- \begin{flushright}%
- \textsc{\conditionalbfseries\small\abstractname}\par%
- \vspace{-\parskip}%
- \vspace{-.25\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
-}{%
- \end{minipage}%
- \end{flushright}%
- \bigskip%
- \ResumeLineNumbers%
-}
-\else
-\renewenvironment{abstract}{%
- \LocallyStopLineNumbers%
- \vspace{-\baselineskip}%
- \begin{center}%
- \textsc{\conditionalbfseries\minimalist@titlefontshape\small\abstractname}\\%
- \vspace{-.3\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
-}{%
- \end{minipage}%
- \end{center}%
- \medskip%
- \ResumeLineNumbers%
-}
-\fi
-
-%%================================
-%% Keyword environment
-%%================================
-\def\keywordnameEN{\textsc{Keywords}}
-\def\keywordnameFR{\textsc{Mots clés}}
-\def\keywordnameDE{\textsc{Schlüsselwörter}}
-\def\keywordnameCN{关键词}
-\def\keywordnameTC{關鍵詞}
-\def\keywordnameJP{キーワード}
-\def\keywordnameRU{Ключевые слова}
-
-\if@minimalist@classical
-\newenvironment{keyword}{%
- \LocallyStopLineNumbers%
- \vspace{-.5\baselineskip}%
- \begin{flushright}%
- {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\par%
- \vspace{-\parskip}%
- \vspace{-.30\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
- \raggedleft%
-}{%
- \end{minipage}%
- \end{flushright}%
- \bigskip%
- \ResumeLineNumbers%
-}
-\else
-\newenvironment{keyword}{%
- \LocallyStopLineNumbers%
- \vspace{-.75\baselineskip}%
- \begin{center}%
- {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\\%
- \vspace{-.3\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
- \begin{center}%
-}{%
- \end{center}%
- \end{minipage}%
- \end{center}%
- \medskip%
- \ResumeLineNumbers%
-}
-\fi
-
-%%================================
-%% Simulate features of amsart
-%%================================
-\PassOptionsToPackage{amsfashion}{PJLauthor}
-\RequirePackage{PJLauthor}
-
-}
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist}
+ {2022/03/17} {}
+ {A simple and clear style for articles and books}
+
+\keys_define:nn { minimalist }
+ {
+ , draft .bool_set:N = \l__minimalist_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimalist_fast_bool
+
+ , style .str_set:N = \l__minimalist_style_str
+ , style .initial:n = { plain }
+ , classical .meta:n = { style = classical }
+
+ , use-boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , use-boldface .initial:n = { false }
+ , use~boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , use boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , usebf .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow-boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow~boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allowbf .bool_set:N = \l__minimalist_use_boldface_bool
+ , runin .bool_set:N = \l__minimalist_runin_bool
+ , runin .initial:n = { false }
+
+ , theorem-in-new-line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
+ , theorem-in-new-line .initial:n = { false }
+ , theorem~in~new~line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
+ , theorem in new line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { projlib-language }
+ \PassOptionsToPackage { \CurrentOption } { projlib-author }
+ \PassOptionsToPackage { \CurrentOption } { projlib-datetime }
+ \PassOptionsToPackage { \CurrentOption } { projlib-draft }
+ \PassOptionsToPackage { \CurrentOption } { projlib-font }
+ \PassOptionsToPackage { \CurrentOption } { projlib-logo }
+ \PassOptionsToPackage { \CurrentOption } { projlib-math }
+ \PassOptionsToPackage { \CurrentOption } { projlib-paper }
+ \PassOptionsToPackage { \CurrentOption } { projlib-theorem }
+ }
+ }
+\ProcessKeysOptions { minimalist }
+
+\bool_new:N \l__minimalist_is_book_bool
+\cs_if_exist:cTF { c@chapter }
+ {
+ \bool_set_true:N \l__minimalist_is_book_bool
+ }
+ {
+ \bool_set_false:N \l__minimalist_is_book_bool
+ }
+
+%%================================
+%% Paper configuration
+%%================================
+\RequirePackage { projlib-paper }
+
+%%================================
+%% Multi-language support
+%%================================
+\RequirePackage { projlib-language }
+
+%%================================
+%% Loading the style
+%%================================
+\exp_args:No \RequirePackage { minimalist- \l__minimalist_style_str }
\endinput
%%
diff --git a/macros/latex/contrib/minimalist/minimart.cls b/macros/latex/contrib/minimalist/minimart.cls
index e671b25d65..4fe51f5c4d 100644
--- a/macros/latex/contrib/minimalist/minimart.cls
+++ b/macros/latex/contrib/minimalist/minimart.cls
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimart.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,224 +16,175 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{minimart}
- [2021/12/16 A simple and clear article style]
-\def\minimclass@baseclass{article}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL@thmnum@default]
-
-\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
-\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass@baseclass}
-
-\if@minimclass@draft
- \@minimclass@fasttrue
-\fi
-\if@minimclass@classical\else
- \@minimclass@useindenttrue
-\fi
-\if@minimclass@lmodern
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@palatino
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@times
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@garamond
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@noto
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@biolinum
- \@minimclass@customfonttrue
-\fi
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {minimart}
+ {2022/03/17} {}
+ {A simple and clear article style}
+
+\tl_const:Nn \l__minimclass_base_class_tl { article }
+
+
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
+
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
%%================================
-%% Page layout
+%% Page layout
%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if@minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if@minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-
-\if@minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if@minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
+
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
+
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
+
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
+
+\RequirePackage { minimalist }
%%================================
-%% Fonts
+%% Fonts
%%================================
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-\if@minimclass@customfont\else
-\RequirePackage{mathpazo}
-\RequirePackage{newpxtext}
-\fi
-\RequirePackage{amssymb}
-
-\if@minimclass@lmodern
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@garamond
- \RequirePackage{amssymb}
- \if@minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@noto
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if@minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum@family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-\def\PJL@font@alreadyset{}
-
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \RequirePackage { mathpazo }
+ \RequirePackage { newpxtext }
+ \RequirePackage { amssymb }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
%%================================
-%% Graphics
+%% Graphics
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
-
-%%================================
-%% Index
-%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
diff --git a/macros/latex/contrib/minimalist/minimbook.cls b/macros/latex/contrib/minimalist/minimbook.cls
index 384451f8f1..f346448d3a 100644
--- a/macros/latex/contrib/minimalist/minimbook.cls
+++ b/macros/latex/contrib/minimalist/minimbook.cls
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimbook.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,224 +16,175 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{minimbook}
- [2021/12/16 A simple and clear book style]
-\def\minimclass@baseclass{book}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL@thmnum@default]
-
-\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
-\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass@baseclass}
-
-\if@minimclass@draft
- \@minimclass@fasttrue
-\fi
-\if@minimclass@classical\else
- \@minimclass@useindenttrue
-\fi
-\if@minimclass@lmodern
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@palatino
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@times
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@garamond
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@noto
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@biolinum
- \@minimclass@customfonttrue
-\fi
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {minimbook}
+ {2022/03/17} {}
+ {A simple and clear book style}
+
+\tl_const:Nn \l__minimclass_base_class_tl { book }
+
+
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
+
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
%%================================
-%% Page layout
+%% Page layout
%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if@minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if@minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-
-\if@minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if@minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
+
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
+
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
+
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
+
+\RequirePackage { minimalist }
%%================================
-%% Fonts
+%% Fonts
%%================================
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-\if@minimclass@customfont\else
-\RequirePackage{mathpazo}
-\RequirePackage{newpxtext}
-\fi
-\RequirePackage{amssymb}
-
-\if@minimclass@lmodern
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@garamond
- \RequirePackage{amssymb}
- \if@minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@noto
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if@minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum@family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-\def\PJL@font@alreadyset{}
-
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \RequirePackage { mathpazo }
+ \RequirePackage { newpxtext }
+ \RequirePackage { amssymb }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
%%================================
-%% Graphics
+%% Graphics
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
-
-%%================================
-%% Index
-%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index d73086d8d5..537f671322 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,6 +5,11 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2022-03-16]
+
+### Added
+ - \pdfmeta_set_regression_data: for regression tests.
+
## [2022-02-16]
### Fixed
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index b3456a2ca4..c0479c353a 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.95l, 2022-02-16
+Version: 0.95m, 2022-03-17
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index 3dbe83d414..1be3ac8b03 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2022-02-16 v0.95l
+\ProvidesPackage{color-ltx}[2022-03-17 v0.95m
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index 52dd1e86b5..42f9394f41 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -959,7 +959,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2022-02-16 v0.95l %
+\ProvidesFile{hgeneric-testphase.def}[2022-03-17 v0.95m %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 61081cc148..d5c6a4fe82 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
index f0ad7ca1b3..544f609d9e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-02-16}{0.95l}
+\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-03-17}{0.95m}
{Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF}
\cs_if_exist:NT \pdfmanagement_add:nnn
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index 5d6850f46b..70684ed8df 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2022-02-16}{}
+ {l3backend-testphase-dvipdfmx.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2022-02-16}{}
+ {l3backend-testphase-dvips.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2022-02-16}{}
+ {l3backend-testphase-dvisvgm.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2022-02-16}{}
+ {l3backend-testphase-luatex.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2022-02-16}{}
+ {l3backend-testphase-pdftex.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2022-02-16}{}
+ {l3backend-testphase-xetex.def}{2022-03-17}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -1975,6 +1975,57 @@
}
%</luatex>
% \end{macrocode}
+% \subsection{Settings for regression tests}
+% When doing pdf based regression tests some meta data in the pdf should have
+% fixed values to get identical pdf's. We define here the backend dependant
+% part. The main command is then in l3pdfmeta
+% \begin{macrocode}
+%<*drivers>
+\cs_new_protected:Npn \@@_backend_set_regression_data:
+ {
+ \sys_gset_rand_seed:n{1000}
+ \pdfmanagement_add:nnn{Info}{Creator}{(TeX)}
+%</drivers>
+%<*dvips>
+ \__kernel_backend_literal:e{!~<</DocumentUUID~(DocumentUUID)>>~setpagedevice}
+ \__kernel_backend_literal:e{!~<</InstanceUUID~(InstanceUUID)>>~setpagedevice}
+%</dvips>
+%<*dvipdfmx>
+ \pdfmanagement_add:nnn{Info}{Producer}{(dvipdfmx)}
+ \__kernel_backend_literal:e
+ {pdf:trailerid [~
+ <00112233445566778899aabbccddeeff>~
+ <00112233445566778899aabbccddeeff>~
+ ]}
+%</dvipdfmx>
+%<*xdvipdfmx>
+ \pdfmanagement_add:nnn{Info}{Producer}{(xetex)}
+ \__kernel_backend_literal:e
+ {pdf:trailerid [~
+ <00112233445566778899aabbccddeeff>~
+ <00112233445566778899aabbccddeeff>~
+ ]}
+%</xdvipdfmx>
+%<*pdftex>
+ \pdfmanagement_add:nnn{Info}{Producer}{(pdfTeX)}
+ \tex_pdfsuppressptexinfo:D 7 \scan_stop:
+ \pdftrailerid{2350CAD05F8A7AF0AA4058486855344F}
+%</pdftex>
+%<*luatex>
+ \pdfmanagement_add:nnn{Info}{Producer}{(LuaTeX)}
+ \tex_pdfvariable:D suppressoptionalinfo 7\relax
+ \tex_pdfvariable:D trailerid
+ {[~
+ <2350CAD05F8A7AF0AA4058486855344F>~
+ <2350CAD05F8A7AF0AA4058486855344F>~
+ ]}
+%</luatex>
+%<*drivers>
+ \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')}
+ \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')}
+ }
+%</drivers>
+% \end{macrocode}
% \subsection{lua code for lualatex}
% \begin{macrocode}
%<*lua>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index 5889efd737..07b1fb0e3c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index 633acc77ba..c2df8ec1df 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -433,7 +433,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdfannot}{2022-03-17}{0.95m}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index 874c7fcc3d..6d60ded2fc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index 6cf0eb52e8..4fee589bde 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -209,7 +209,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdfdict}{2022-03-17}{0.95m}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index 904d2b877b..a74763e02c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 552c9872df..d14030337c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index dc7057b03a..558ad28901 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index e99e08e662..3be026f609 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index cf89848a83..cb71bdc069 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index 6c8fd0a30a..eb632bc10d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index 8337a98bbf..fe1c8a030c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index 032a3f99b8..26efb80bdc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index daf95d59b9..35d9d25f9e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index f0b5174f77..0b34e661ed 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -84,7 +84,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index ad0128ece0..1fd2ab346b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index be28b78f22..8ae34a4403 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 3f01762e59..01208f4326 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index 13f4f2cb0e..c41cae5974 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -70,7 +70,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -974,7 +974,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2022-02-16}{0.95l}%
+\ProvidesExplPackage{l3pdffield-testphase}{2022-03-17}{0.95m}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index 4bfc2678f7..a709dc058d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index 46fc8d8b18..12563457f6 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -397,7 +397,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdffile}{2022-03-17}{0.95m}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index dc6bcfff0b..8099ddb99d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index b95d587daa..0227b09965 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -58,7 +58,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -619,7 +619,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdfmanagement}{2022-03-17}{0.95m}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index c355bb4b36..1128e762fc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index 9b40a4ef13..35e9a3b937 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -332,6 +332,17 @@
% The pdf/A standards will use |A=sRGB.icc| by default, so this doesn't
% need to be declared explicitly.
%
+% \subsection{Regression tests}
+% When doing regression tests one has to set various metadata to fix values.
+
+% \begin{function}{\pdfmeta_set_regression_data:}
+% \begin{syntax}
+% \cs{pdfmeta_set_regression_data:}
+% \end{syntax}
+% This sets various metadata to values needed by the \LaTeX{}
+% regression tests.
+% It also sets the seed for random functions.
+% \end{function}
%
% \end{documentation}
%
@@ -342,7 +353,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdfmeta}{2022-03-17}{0.95m}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -875,6 +886,12 @@
}
% \end{macrocode}
%
+% \subsection{Regression test}
+% This is simply a copy of the backend function.
+% \begin{macrocode}
+\cs_new_protected:Npn \pdfmeta_set_regression_data:
+ { \__pdf_backend_set_regression_data: }
+% \end{macrocode}
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index c69ffde796..803370eb32 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index ee9ab9dad3..31a2b86273 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -212,7 +212,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdftools}{2022-03-17}{0.95m}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index f9a71437e9..11b88bb6c4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index 6c22dac2c6..a4f479e12b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -133,7 +133,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2022-02-16}{0.95l}
+\ProvidesExplPackage{l3pdfxform}{2022-03-17}{0.95m}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index 4919a9f4ad..95b9194360 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index 2bf60aa53d..fe104fda04 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -216,7 +216,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2022-02-16}{0.95l}
+\ProvidesExplPackage{ltdocinit}{2022-03-17}{0.95m}
{Initialize document metadata}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 8c21b1f441..14a0b70d50 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
index 633440e991..72c2a9c056 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
index 67e9e5da8c..fac409e53c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
@@ -22,7 +22,7 @@
%% This work consists of the main source file pdflscape-ltx.sty
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{pdflscape-ltx}{2022-02-16}{0.95l}
+\ProvidesExplPackage{pdflscape-ltx}{2022-03-17}{0.95m}
{Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)}
\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 7ddb8e35dd..f30740c9c1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -64,7 +64,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2022-02-16}{0.95l}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2022-03-17}{0.95m}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index ce8a47161d..812e5652ae 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index cd80c9ed93..d0a12a5d12 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95l, released 2022-02-16}
+% \date{Version 0.95m, released 2022-03-17}
%
% \maketitle
% \begin{documentation}
@@ -386,7 +386,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2022-02-16}{0.95l}
+\ProvidesExplPackage{pdfmanagement-testphase}{2022-03-17}{0.95m}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -414,7 +414,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-02-16}{0.95l}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-03-17}{0.95m}
{PDF~management~code~(testphase)}
%</header>
%<*package>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index 2913da9ebc..ae0c8a8420 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
index 5f1f916410..3599d31820 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
@@ -3,7 +3,7 @@
%% a replacement for transparent sty from Heiko Oberdiek
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{transparent-ltx}{2022-02-16}{0.95l}
+\ProvidesExplPackage{transparent-ltx}{2022-03-17}{0.95m}
{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
\RequirePackage{l3opacity}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index f10310f32b..14ccb923a5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-02-16 v0.95l patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-03-17 v0.95m patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
index 39ba3ccd03..53a8117f7b 100644
--- a/macros/latex/contrib/projlib/ProjLib.dtx
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -20,70 +20,70 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2022/03/11} {}
+ {2022/03/17} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2022/03/11} {}
+ {2022/03/17} {}
{Enhanced author information block}
%</projlib-author>
%
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2022/03/11} {}
+ {2022/03/17} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2022/03/11} {}
+ {2022/03/17} {}
{Useful commands during draft stage}
%</projlib-draft>
%
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2022/03/11} {}
+ {2022/03/17} {}
{Font selection and configuration}
%</projlib-font>
%
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2022/03/11} {}
+ {2022/03/17} {}
{Multi-language configuration}
%</projlib-language>
%
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2022/03/11} {}
+ {2022/03/17} {}
{The ProjLib logo}
%</projlib-logo>
%
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2022/03/11} {}
+ {2022/03/17} {}
{Efficient math setup}
%</projlib-math>
%
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of the paper style}
%</projlib-paper>
%
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
@@ -149,11 +149,13 @@
\cs_if_exist:NT \subjclass { \endinput }
\tl_new:N \g__projlib_author_font_author_tl
+\tl_new:N \g__projlib_author_font_institute_tl
\tl_new:N \g__projlib_author_font_address_tl
\tl_new:N \g__projlib_author_font_curraddr_tl
\tl_new:N \g__projlib_author_font_email_tl
\tl_gset:Nn \g__projlib_author_font_author_tl { \normalsize \normalfont \scshape }
+\tl_gset:Nn \g__projlib_author_font_institute_tl { \small \normalfont }
\tl_gset:Nn \g__projlib_author_font_address_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_curraddr_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_email_tl { \small \normalfont \ttfamily }
@@ -182,56 +184,49 @@
}
}
-\ProvideDocumentCommand \address { m }
+\cs_new_protected:Nn \projlib_author_affil_generic:nn
+ % #1 = the item
+ % #2 = the text
{
\hook_gput_code:nnn { cmd/@author/after } { projlib-author }
{
- \phantom {A} \\[-\baselineskip]
+ \phantom {A} \\[-.85\baselineskip]
\bool_if:NF \g__projlib_author_affil_already_exist_bool
{
\skip_vertical:n { \g__projlib_author_length_innersep_dim }
}
\bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_address_tl #1 }
+ { \use:c { g__projlib_author_font_ #1 _tl } #2 }
\\ \phantom {}
}
}
+\ProvideDocumentCommand \institute { m }
+ {
+ \projlib_author_affil_generic:nn { institute } { #1 }
+ }
+
+\ProvideDocumentCommand \address { m }
+ {
+ \projlib_author_affil_generic:nn { address } { #1 }
+ }
+
\ProvideDocumentCommand \curraddr { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_curraddr_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { curraddr } { #1 }
}
\ProvideDocumentCommand \email { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_email_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { email } { #1 }
}
\RequirePackage { regexpatch }
-\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {
- \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
-} {}
+\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {}
+ {
+ \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
+ } {}
\tl_set:cn {@author} {}
@@ -256,17 +251,17 @@
\RequirePackage{ projlib-language }
\tl_new:N \g_projlib_author_keywordsname_style_tl
- \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {}
+ \tl_gset:Nn \g_projlib_author_keywordsname_style_tl { \itshape }
\projlib_langauge_define_multilingual_text:Nn \keywordsname
{
- EN = \textsc{Key~words~and~phrases} ,
- FR = \textsc{Mots~et~phrases~clés} ,
- DE = \textsc{Schlüsselwörter~und~Phrasen} ,
- IT = \textsc{Parole~e~frasi~chiave} ,
- PT = \textsc{Palavras~e~frases~chave} ,
- BR = \textsc{Palavras~e~frases~chave} ,
- ES = \textsc{Palabras~y~frases~clave} ,
+ EN = Key~words~and~phrases ,
+ FR = Mots~et~phrases~clés ,
+ DE = Schlüsselwörter~und~Phrasen ,
+ IT = Parole~e~frasi~chiave ,
+ PT = Palavras~e~frases~chave ,
+ BR = Palavras~e~frases~chave ,
+ ES = Palabras~y~frases~clave ,
CN = 关键词 ,
TC = 關鍵詞 ,
JP = キーワード ,
@@ -348,9 +343,11 @@
{
\bool_if:NTF \g__projlib_author_already_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
{
\bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool
@@ -399,10 +396,13 @@
{
\bool_if:NT \g__projlib_author_abstract_before_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
+ \cs_undefine:N \institute
\cs_undefine:N \address
\cs_undefine:N \curraddr
\cs_undefine:N \email
@@ -2123,7 +2123,7 @@
}
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_text
{
EN = To\ be\ finished ,
FR = Pas\ encore\ fini ,
@@ -2138,7 +2138,7 @@
RU = Не\ закончен ,
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_report_text
{
EN = { Below\ is\ a\ list\ of\ outstanding\ items,
\ followed\ by\ the\ corresponding\ page\ numbers. } ,
@@ -2161,30 +2161,30 @@
\ с\ соответствующими\ номерами\ страниц\ в\ скобках. } ,
}
-\tl_new:c { __dnf_font }
-\tl_gset:cn { __dnf_font } { \normalfont \ttfamily \bfseries \small }
+\tl_new:c { __projlib_draft_dnf_font }
+\tl_gset:cn { __projlib_draft_dnf_font } { \normalfont \ttfamily \bfseries \small }
-\definecolor { __dnf_color } { RGB } { 21, 122, 20 }
+\definecolor { __projlib_draft_dnf_color } { RGB } { 21, 122, 20 }
-\newcounter { __dnf_counter }
+\newcounter { __projlib_draft_dnf_counter }
\tl_new:N \g__projlib_draft_dnf_report_tl
\NewDocumentCommand \dnf { d<> }
{
\noindent
- \projlib_draft_plain_box [ __dnf_color ]
+ \projlib_draft_plain_box [ __projlib_draft_dnf_color ]
{
- \stepcounter { __dnf_counter }
- \__dnf_font
- \__dnf_text
+ \stepcounter { __projlib_draft_dnf_counter }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_text
\c_space_tl
- \# \the__dnf_counter
+ \# \the__projlib_draft_dnf_counter
\IfNoValueF { #1 } { \, : ~ #1 }
\tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
{
\# \,
- \int_value:w \the__dnf_counter
+ \int_value:w \the__projlib_draft_dnf_counter
\c_space_tl \c_space_tl
$\langle$
\skip_horizontal:n { 0.1em }
@@ -2208,13 +2208,78 @@
{
\tl_if_blank:VF \g__projlib_draft_dnf_report_tl
{
- \clearpage \noindent
- \color { __dnf_color }
- \__dnf_font
- \__dnf_report_text \\[0.75\baselineskip]
+ \clearpage
+ \pagestyle{empty}
+ \noindent
+ \color { __projlib_draft_dnf_color }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_report_text \\[0.75\baselineskip]
\g__projlib_draft_dnf_report_tl
}
}
+
+
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_blind_text_tl
+ {
+ , EN = {
+ Hello,~here~is~some~text~without~a~meaning.~This~text~should~show~what~a~printed~text~will~look~like~at~this~place.~If~you~read~this~text,~you~will~get~no~information.~Really?~Is~there~no~information?~Is~there~a~difference~between~this~text~and~some~nonsense~like~``Huardest~gefburn''?~Not~at~all!~A~blind~text~like~this~gives~you~information~about~the~selected~font,~how~the~letters~are~written~and~an~impression~of~the~look.~This~text~should~contain~all~letters~of~the~alphabet~and~it~should~be~written~in~of~the~original~language.~There~is~no~need~for~special~content,~but~the~length~of~words~should~match~the~language.
+ }
+ , FR = {
+ Bonjour,~voici~un~texte~sans~signification.~Ce~texte~doit~montrer~à~quoi~ressemble~un~texte~imprimé~à~cet~endroit.~Si~vous~lisez~ce~texte,~vous~n'obtiendrez~aucune~information.~Vraiment~?~Il~n'y~a~aucune~information~?~Y~a-t-il~une~différence~entre~ce~texte~et~une~absurdité~comme~«~Huardest~gefburn~»~?~Pas~du~tout~!~Un~texte~aveugle~comme~celui-ci~vous~donne~des~informations~sur~la~police~choisie,~la~façon~dont~les~lettres~sont~écrites~et~une~impression~de~l'apparence.~Ce~texte~doit~contenir~toutes~les~lettres~de~l'alphabet~et~être~écrit~dans~la~langue~d'origine.~Il~n'est~pas~nécessaire~de~prévoir~un~contenu~spécial,~mais~la~longueur~des~mots~doit~correspondre~à~la~langue.
+ }
+ , DE = {
+ Hallo,~hier~ist~ein~Text~ohne~Bedeutung.~Dieser~Text~soll~zeigen,~wie~ein~gedruckter~Text~an~dieser~Stelle~aussehen~wird.~Wenn~Sie~diesen~Text~lesen,~werden~Sie~keine~Informationen~erhalten.~Wirklich?~Gibt~es~keine~Informationen?~Gibt~es~einen~Unterschied~zwischen~diesem~Text~und~irgendeinem~Blödsinn~wie~``Huardest~gefburn''?~Ganz~und~gar~nicht!~Ein~solcher~Blindtext~gibt~Ihnen~Informationen~über~die~gewählte~Schriftart,~wie~die~Buchstaben~geschrieben~sind~und~einen~Eindruck~vom~Aussehen.~Dieser~Text~sollte~alle~Buchstaben~des~Alphabets~enthalten~und~in~der~Originalsprache~geschrieben~sein.~Es~ist~kein~besonderer~Inhalt~erforderlich,~aber~die~Länge~der~Wörter~sollte~der~Sprache~entsprechen.
+ }
+ , IT = {
+ Ciao,~qui~c'è~un~drafto~senza~significato.~Questo~drafto~dovrebbe~mostrare~come~sarà~un~drafto~stampato~in~questo~posto.~Se~leggete~questo~drafto,~non~otterrete~alcuna~informazione.~Davvero?~Non~c'è~nessuna~informazione?~C'è~una~differenza~tra~questo~drafto~e~qualche~sciocchezza~come~``Huardest~gefburn''?~Niente~affatto!~Un~drafto~cieco~come~questo~ti~dà~informazioni~sul~font~selezionato,~su~come~sono~scritte~le~lettere~e~un'impressione~dell'aspetto.~Questo~drafto~dovrebbe~contenere~tutte~le~lettere~dell'alfabeto~e~dovrebbe~essere~scritto~nella~lingua~originale.~Non~c'è~bisogno~di~contenuti~speciali,~ma~la~lunghezza~delle~parole~dovrebbe~corrispondere~alla~lingua.
+ }
+ , PT = {
+ Olá,~aqui~está~um~texto~sem~significado.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~local.~Se~ler~este~texto,~não~obterá~qualquer~informação.~A~sério?~Não~há~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~modo~algum!~Um~texto~cego~como~este~dá-lhe~informações~sobre~a~fonte~seleccionada,~como~as~letras~são~escritas~e~uma~impressão~do~aspecto.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~na~língua~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~à~língua.
+ }
+ , BR = {
+ Olá,~aqui~está~um~texto~sem~sentido.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~lugar.~Se~você~ler~este~texto,~você~não~obterá~nenhuma~informação.~É~mesmo?~Não~há~nenhuma~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~jeito~nenhum!~Um~texto~cego~como~este~lhe~dá~informações~sobre~a~fonte~selecionada,~como~as~letras~são~escritas~e~uma~impressão~da~aparência.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~no~idioma~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~ao~idioma.
+ }
+ , ES = {
+ Hola,~aquí~hay~un~texto~sin~significado.~Este~texto~debe~mostrar~cómo~se~verá~un~texto~impreso~en~este~lugar.~Si~lees~este~texto,~no~obtendrás~ninguna~información.~¿En~serio?~¿No~hay~información?~¿Hay~alguna~diferencia~entre~este~texto~y~alguna~tontería~como~``Huardest~gefburn''?~¡Para~nada!~Un~texto~oculto~como~este~le~brinda~información~sobre~la~fuente~seleccionada,~cómo~se~escriben~las~letras~y~una~impresión~de~la~apariencia.~Este~texto~debe~contener~todas~las~letras~del~alfabeto~y~debe~estar~escrito~en~el~idioma~original.~No~hay~necesidad~de~contenido~especial,~pero~la~longitud~de~las~palabras~debe~coincidir~con~el~idioma.
+ }
+ , CN = {
+ 你好,这里有一些没有意义的文字。 此文本应显示打印文本在此位置的外观。 如果你阅读这段文字,你将不会得到任何信息。 真的没有信息吗? 这段文字和诸如 “劳仑衣普桑,认至将指点效则机,最你更枝” 或者 “想极整月正进好志次回总般,段然取向使张规军证回,世市总李率英茄持伴” 之类的废话有区别吗? 一点都没有! 这样的一段文本会给你提供关于所选字体的信息、字母的书写方式以及对外观的印象。 该文本应包含字母表中的所有字母,并且应使用原始语言编写。 不需要特别的内容,但字长要与语言相匹配。
+ }
+ , TC = {
+ 你好,這裡有一些沒有意義的文字。此文本應顯示打印文本在此位置的外觀。如果你閱讀這段文字,你將不會得到任何信息。真的沒有信息嗎?這段文字和諸如 “勞崙衣普桑,認至將指點效則機,最你更枝” 或者 “想極整月正進好志次回總般,段然取向使張規軍證回,世市總李率英茄持伴” 之類的廢話有區別嗎?一點都沒有!這樣的一段文本會給你提供關於所選字體的信息、字母的書寫方式以及對外觀的印象。該文本應包含字母表中的所有字母,並且應使用原始語言編寫。不需要特別的內容,但字長要與語言相匹配。
+ }
+ , JP = {
+ こんにちは、ここに意味のないテキストがあります。 このテキストは、この場所で印刷されたテキストがどのように見えるかを示す必要があります。 このテキストを読んでも、情報は得られません。 本当に? 情報はありませんか? このテキストと「アでニンはすミ」のようなナンセンスとの間に違いはありますか? 全くない! このようなブラインドテキストは、選択したフォント、文字の書き方、外観の印象に関する情報を提供します。 このテキストにはアルファベットのすべての文字が含まれている必要があり、元の言語で書かれている必要があります。 特別なコンテンツは必要ありませんが、単語の長さは言語と一致している必要があります。
+ }
+ , RU = {
+ Здравствуйте,~вот~какой-то~текст~без~смысла.~Этот~текст~должен~показывать,~как~будет~выглядеть~печатный~текст~в~этом~месте.~Если~вы~прочитаете~этот~текст,~вы~не~получите~никакой~информации.~Действительно?~Нет~информации?~Есть~ли~разница~между~этим~текстом~и~какой-то~чепухой~вроде~``Бзостачщв~дрероих''?~Нисколько!~Слепой~текст,~подобный~этому,~дает~вам~информацию~о~выбранном~шрифте,~о~том,~как~написаны~буквы,~и~о~впечатлении~от~внешнего~вида.~Этот~текст~должен~содержать~все~буквы~алфавита~и~должен~быть~написан~на~языке~оригинала.~В~специальном~содержании~нет~необходимости,~но~длина~слов~должна~соответствовать~языку.
+ }
+ }
+
+\cs_new:Nn \projlib_draft_blind_text:n
+ {
+ \int_set:Nn \l_tmpa_int { #1 }
+ \int_do_until:nNnn { \l_tmpa_int } = { 0 }
+ {
+ \__projlib_draft_blind_text_tl
+ \c_space_tl
+ \int_add:Nn \l_tmpa_int { -1 }
+ }
+ }
+
+\hook_gput_code:nnn { begindocument/before } { projlib-draft }
+ {
+ \ProvideDocumentCommand \blindtext { O{} }
+ {
+ \tl_if_blank:nTF { #1 }
+ {
+ \__projlib_draft_blind_text_tl
+ }
+ {
+ \projlib_draft_blind_text:n { #1 }
+ }
+ }
+ }
%</projlib-draft>
%
%<*projlib-font>
@@ -2803,7 +2868,7 @@
\tl_new:N \g_projlib_language_parindent_latin_tl
\tl_new:N \g_projlib_language_parindent_cjk_tl
-\@ifclassloaded{beamer}
+\@ifclassloaded { beamer }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -2827,7 +2892,7 @@
\hook_gput_code:nnn { begindocument } { projlib-language }
{
- \@ifpackageloaded{parskip}
+ \@ifpackageloaded { parskip }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -3319,7 +3384,7 @@
, nothms .bool_set:N = \l__projlib_theorem_no_theorems_bool
, no-theorem-numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no-theorem-numbering .initial:n = { false }
- , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
+ , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no theorem numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, nothmnum .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, theorem-numbering .tl_set:N = \l__projlib_theorem_theorem_numbering_tl
@@ -3341,7 +3406,7 @@
, no-preset-names .initial:n = { false }
, no~preset~names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
, no preset names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
- , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
+ , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeysOptions { projlib-theorem }
@@ -3405,30 +3470,30 @@
{
\bool_if:NTF \l__projlib_theorem_no_theorem_numbering_bool
{
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless, create starred version }
}
{
\tl_if_blank:eTF \l__projlib_theorem_theorem_numbering_tl
{
\cs_if_exist:cTF { c@chapter }
{ % with \chapter
- \CreateTheorem {theorem} { parent counter = chapter }
+ \CreateTheorem {theorem} { parent counter = chapter, create starred version }
}
{ % without \chapter
- \CreateTheorem {theorem} { parent counter = section }
+ \CreateTheorem {theorem} { parent counter = section, create starred version }
}
}
{
\tl_if_eq:NnTF \l__projlib_theorem_theorem_numbering_tl { * }
{
- \CreateTheorem {theorem} { }
+ \CreateTheorem {theorem} { create starred version }
}
{
- \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl }
+ \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl, create starred version }
}
}
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, quiet }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, create starred version, quiet }
}
}
diff --git a/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md
index b36f8f2437..9922ad0b82 100644
--- a/macros/latex/contrib/projlib/README.md
+++ b/macros/latex/contrib/projlib/README.md
@@ -2,15 +2,11 @@
# ProjLib Toolkit
-The bundle is dated 2022/03/11.
-
-Old modules are still dated 2021/12/16 and will *not* be modified. **When all the new modules and the corresponding documentations are finished, old files shall be removed from this bundle.**
+The bundle is dated 2022/03/17
## **Important note**
-The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc.
-
-The current `ProjLib.sty` is the new `expl3` version, the old one has been renamed to `PJLtoolkit.sty`.
+The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. The most important thing to be noticed is that these new modules are not compatible with the old ones, and thus they cannot appear simultaneously in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `lebhart`, `beaulivre` (these are the classes with which the author produced the old documentations), etc.
The new modules are:
- projlib-author
@@ -23,14 +19,11 @@ The new modules are:
- projlib-paper
- projlib-theorem
-When all these modules are finished, the documentation will be updated accordingly.
-
-Below is the content of the old README.
+Below are the old README.
---
> **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French).
-> Personally, I prefer the later one.
## Introduction
@@ -69,9 +62,9 @@ The components include:
- Theorem setup and configuration
- Offers a macro `\CreateTheorem` for creating theorem-like environments with multi-language support
- Preset environments include: `assumption`, `axiom`, `conjecture`, `convention`, `corollary`, `definition`, `definition-proposition`, `definition-theorem`, `example`, `exercise`, `fact`, `hypothesis`, `lemma`, `notation`, `observation`, `problem`, `property`, `proposition`, `question`, `remark`, `theorem`, and the corresponding unnumbered version with an asterisk `*` in the name.
-<!-- 1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
+1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
- A collective interface of ProjLib Toolkit, loading all the packages above
- - Provide some pre-defined font configuration -->
+ - Provide some pre-defined font configuration
> Since `PJLthm.sty` (and thus `ProjLib.sty`) uses `cleveref`, it should be loaded after `varioref` and `hyperref`.
diff --git a/macros/unicodetex/latex/einfart/README.md b/macros/unicodetex/latex/einfart/README.md
index 18ef21279f..591c2285c8 100644
--- a/macros/unicodetex/latex/einfart/README.md
+++ b/macros/unicodetex/latex/einfart/README.md
@@ -2,6 +2,8 @@
# `einfart` : write you articles in a simple and clear way
+**The current document class have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
`einfart` is a LaTeX class for typesetting articles, which has a simple and
clear design.
diff --git a/macros/unicodetex/latex/einfart/einfart.cls b/macros/unicodetex/latex/einfart/einfart.cls
index 1be1a1d20e..38fe5550d1 100644
--- a/macros/unicodetex/latex/einfart/einfart.cls
+++ b/macros/unicodetex/latex/einfart/einfart.cls
@@ -2,7 +2,7 @@
%% This is file `einfart/einfart.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,564 +16,685 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{einfart}
- [2021/12/16 A simple and clear article style]
-\def\minimclass@baseclass{article}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL@thmnum@default]
-
-\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
-\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass@baseclass}
-
-\if@minimclass@draft
- \@minimclass@fasttrue
-\fi
-\if@minimclass@classical\else
- \@minimclass@useindenttrue
-\fi
-\if@minimclass@lmodern
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@palatino
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@times
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@garamond
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@noto
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@biolinum
- \@minimclass@customfonttrue
-\fi
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {einfart}
+ {2022/03/17} {}
+ {A simple and clear article style}
+
+\tl_const:Nn \l__minimclass_base_class_tl { article }
+
+
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_latin_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_cjk_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_math_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_math_bool
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { minimalist.font.latin }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { minimalist.font.cjk }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { minimalist.font.math }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+ , load custom latin font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load custom latin font file .default:n = { minimalist.font.latin }
+ , load~custom~latin~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load~custom~latin~font~file .default:n = { minimalist.font.latin }
+ , load-custom-latin-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load-custom-latin-font-file .default:n = { minimalist.font.latin }
+
+ , load custom cjk font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load custom cjk font file .default:n = { minimalist.font.cjk }
+ , load~custom~cjk~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load~custom~cjk~font~file .default:n = { minimalist.font.cjk }
+ , load-custom-cjk-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load-custom-cjk-font-file .default:n = { minimalist.font.cjk }
+
+ , load custom math font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load custom math font file .default:n = { minimalist.font.math }
+ , load~custom~math~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load~custom~math~font~file .default:n = { minimalist.font.math }
+ , load-custom-math-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load-custom-math-font-file .default:n = { minimalist.font.math }
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
%%================================
-%% Page layout
+%% Page layout
%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if@minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if@minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-
-\if@minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if@minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
+
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
+
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
+
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
+
+\RequirePackage { minimalist }
%%================================
-%% Fonts
+%% Fonts
%%================================
-\if@minimclass@customfont\else
- \if@minimclass@fast
- \RequirePackage{mathpazo}
- \fi
-\fi
-
-\PassOptionsToPackage{no-math,quiet}{fontspec}
-\RequirePackage{fontspec}
-
-\IfFileExists{minimalist-font.tex}{
- \input{minimalist-font.tex}
-}{
-\IfFontExistsTF{Palatino Linotype}{%
- \setmainfont{Palatino Linotype}
- [\if@minimclass@useosf Numbers = OldStyle\fi]
-}{
- \setmainfont{TeXGyrePagellaX-Regular.otf}[
- BoldFont = TeXGyrePagellaX-Bold.otf ,
- ItalicFont = TeXGyrePagellaX-Italic.otf ,
- BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
-}
- \setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase ,
- BoldFont = SourceSansPro-Bold.otf ,
- ItalicFont = SourceSansPro-RegularIt.otf ,
- BoldItalicFont = SourceSansPro-BoldIt.otf ]
- \setmonofont{NewCMMono10-Regular.otf}[
- Scale = 1.05 ,
- BoldFont = NewCMMono10-Bold.otf ,
- ItalicFont = NewCMMono10-Italic.otf ,
- BoldItalicFont = NewCMMono10-BoldOblique.otf ]
-}
-
-\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
-\RequirePackage{ctex}
-
-\IfFileExists{minimalist-font.cjk.tex}{
- \input{minimalist-font.cjk.tex}
-}{
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKmainfont{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKmainfont{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKsansfont{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKsansfont{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKmonofont{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKmonofont{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-
-\if@PJLlang@enable@CN
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKfamilyfont{SCmain}{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKfamilyfont{SCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKfamilyfont{SCsans}{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKfamilyfont{SCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKfamilyfont{SCmono}{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKfamilyfont{SCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\if@PJLlang@enable@TC
-\IfFontExistsTF{SourceHanSerifTC-Regular}{%
- \setCJKfamilyfont{TCmain}{SourceHanSerifTC-Regular}[
- BoldFont = SourceHanSerifTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifTC-Bold ]
-}{
- \setCJKfamilyfont{TCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansTC-Regular}{%
- \setCJKfamilyfont{TCsans}{SourceHanSansTC-Regular}[
- BoldFont = SourceHanSansTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansTC-Bold ]
-}{
- \setCJKfamilyfont{TCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoTC-Regular}{%
- \setCJKfamilyfont{TCmono}{SourceHanMonoTC-Regular}[
- BoldFont = SourceHanMonoTC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoTC-Medium ]
-}{
- \setCJKfamilyfont{TCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\if@PJLlang@enable@JP
-\IfFontExistsTF{SourceHanSerif-Regular}{%
- \setCJKfamilyfont{JPmain}{SourceHanSerif-Regular}[
- BoldFont = SourceHanSerif-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerif-Bold ]
-}{
- \setCJKfamilyfont{JPmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSans-Regular}{%
- \setCJKfamilyfont{JPsans}{SourceHanSans-Regular}[
- BoldFont = SourceHanSans-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSans-Bold ]
-}{
- \setCJKfamilyfont{JPsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMono-Regular}{%
- \setCJKfamilyfont{JPmono}{SourceHanMono-Regular}[
- BoldFont = SourceHanMono-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMono-Medium ]
-}{
- \setCJKfamilyfont{JPmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\WarningFilter{latexfont}{Font shape}
-\WarningFilter{latexfont}{Some font}
-
-\def\CJKsffamily{}
-\def\CJKttfamily{}
-
-\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL}
-\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL}
-
-\if@PJLlang@enable@CN
-\gappto{\PJLlang@langconfig@CN}{%
- \def\CJKsffamily{\CJKfamily{SCsans}}%
- \def\CJKttfamily{\CJKfamily{SCmono}}%
- \CJKfamily{SCmain}%
-}
-\fi
-
-\if@PJLlang@enable@TC
-\gappto{\PJLlang@langconfig@TC}{%
- \def\CJKsffamily{\CJKfamily{TCsans}}%
- \def\CJKttfamily{\CJKfamily{TCmono}}%
- \CJKfamily{TCmain}%
-}
-\fi
-
-\if@PJLlang@enable@JP
-\gappto{\PJLlang@langconfig@JP}{%
- \def\CJKsffamily{\CJKfamily{JPsans}}%
- \def\CJKttfamily{\CJKfamily{JPmono}}%
- \CJKfamily{JPmain}%
-}
-\fi
-
-\def\minimalist@titlefontshape{\CJKsffamily}
-}
-
-\if@minimclass@customfont\else
-\if@minimclass@fast
-\RequirePackage{amssymb}
-\else
-\PassOptionsToPackage
- {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
-\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
-\setmathfont{Asana-Math.otf}
-\IfFontExistsTF{Neo Euler}{%
-\setmathfont[range={up/{Latin,latin,Greek,greek},
- bfup/{Latin,latin,Greek,greek},
- cal, bfcal, frak, bffrak,
- `(,`),`[,`],`\{,`\},`:,`=,\ne,\equiv,`/,\backslash,
- \in,\notin,\ni,\subset,\supset,\subseteq,\supseteq,
- \rightarrow,\leftarrow,\mapsto,\hookrightarrow,\hookleftarrow,
- \sum,\prod,\coprod,
- \sqrt,\int,\iint,\iiint,\oint},
- script-features={},
- sscript-features={},
- Scale = 1.05,
- ]{Neo Euler}
-}{}
-\setmathfont[range={\leq,\geq,\ll,\gg,\lll,\ggg,\leqslant,\geqslant},
- Scale = 0.95,
- ]{latinmodern-math.otf}
-\setmathfont[range={up/num, bfup/num}
- ]{texgyrepagella-math.otf}
-
-\AtBeginDocument{
-\let\mid@original\mid
-\renewcommand{\mid}{\hspace{-.2em}\mid@original\hspace{-.2em}}
-\let\nmid@original\nmid
-\renewcommand{\nmid}{\hspace{-.2em}\nmid@original\hspace{-.2em}}
-\renewcommand{\frac}[2]{\genfrac{}{}{}{}{
- \mathchoice
- {\raisebox{-.15em}{$\displaystyle #1$}}
- {\raisebox{-.15em}{$\textstyle #1$}}
- {\raisebox{-.08em}{$\scriptstyle #1$}}
- {\scriptscriptstyle #1}
-}{
- \mathchoice
- {\raisebox{.08em}{$\displaystyle #2$}}
- {\raisebox{.08em}{$\textstyle #2$}}
- {\raisebox{.05em}{$\scriptstyle #2$}}
- {\scriptscriptstyle #2}
-}}
-}
-
-\RequirePackage{tikz-cd}
-\newbox\xratbelow
-\newbox\xratabove
-\renewcommand{\xrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<-, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookrightarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookleftarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xmapsto}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/mapsto] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\newcommand{\xlongequal}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/equal] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\AtBeginDocument{
-\renewcommand{\twoheadrightarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadrightarrow] (.8em,0) ;}}
-\renewcommand{\twoheadleftarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadleftarrow] (.8em,0) ;}}
-}
-\fi
-\fi
-
-\if@minimclass@lmodern
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@garamond
- \RequirePackage{amssymb}
- \if@minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@noto
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if@minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum@family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-\def\PJL@font@alreadyset{}
-
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+\cs_new_protected:Nn \__minimclass_if_font_exist:nnn
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ { #3 }
+ { \fontspec_font_if_exist:nTF { #1 } { #2 } { #3 } }
+ }
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NT \l__minimclass_fast_bool
+ {
+ \RequirePackage { mathpazo }
+ }
+
+ \PassOptionsToPackage { no-math,quiet } { fontspec }
+ \RequirePackage { fontspec }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_latin_bool { \l__minimclass_custom_font_file_latin_str }
+ {
+ \__minimclass_if_font_exist:nnn { Palatino~Linotype }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { Palatino~Linotype } [ Numbers = OldStyle ]
+ }
+ {
+ \setmainfont { Palatino~Linotype }
+ }
+ }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ Numbers = OldStyle ,
+ ]
+ }
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ ]
+ }
+ }
+ \setsansfont { SourceSansPro-Regular.otf }
+ [
+ Scale = MatchLowercase ,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ,
+ ]
+ \setmonofont { NewCMMono10-Regular.otf }
+ [
+ Scale = 1.05 ,
+ BoldFont = NewCMMono10-Bold.otf ,
+ ItalicFont = NewCMMono10-Italic.otf ,
+ BoldItalicFont = NewCMMono10-BoldOblique.otf ,
+ ]
+
+ \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } }
+ }
+ }
+
+ \PassOptionsToPackage { fontset = none, scheme = plain } { ctex }
+ \RequirePackage { ctex }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_cjk_bool { \l__minimclass_custom_font_file_cjk_str }
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKmainfont { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKmainfont { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKsansfont{SourceHanSansSC-Regular}
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKsansfont { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKmonofont { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKmonofont { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_schinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKfamilyfont { SCmain } { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKfamilyfont { SCsans } { SourceHanSansSC-Regular }
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKfamilyfont { SCmono } { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_tchinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifTC-Regular }
+ {
+ \setCJKfamilyfont { TCmain } { SourceHanSerifTC-Regular }
+ [
+ BoldFont = SourceHanSerifTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansTC-Regular }
+ {
+ \setCJKfamilyfont { TCsans } { SourceHanSansTC-Regular }
+ [
+ BoldFont = SourceHanSansTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoTC-Regular }
+ {
+ \setCJKfamilyfont { TCmono } { SourceHanMonoTC-Regular }
+ [
+ BoldFont = SourceHanMonoTC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoTC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_japanese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerif-Regular }
+ {
+ \setCJKfamilyfont { JPmain } { SourceHanSerif-Regular }
+ [
+ BoldFont = SourceHanSerif-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerif-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSans-Regular }
+ {
+ \setCJKfamilyfont { JPsans } { SourceHanSans-Regular }
+ [
+ BoldFont = SourceHanSans-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSans-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMono-Regular }
+ {
+ \setCJKfamilyfont { JPmono } { SourceHanMono-Regular }
+ [
+ BoldFont = SourceHanMono-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMono-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \cs_new:Nn \minimclass_cjk_sffamily: {}
+ \cs_new:Nn \minimclass_cjk_ttfamily: {}
+
+ \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: }
+ \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: }
+
+ \AddLanguageSetting [schinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { SCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { SCmono } }
+ \CJKfamily { SCmain }
+ }
+ \AddLanguageSetting [tchinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { TCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { TCmono } }
+ \CJKfamily { TCmain }
+ }
+ \AddLanguageSetting [japanese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { JPsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { JPmono } }
+ \CJKfamily { JPmain }
+ }
+
+ \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: }
+ }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_math_bool { \l__minimclass_custom_font_file_math_str }
+ {
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ {
+ \RequirePackage { amssymb }
+ }
+ {
+ \PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math }
+ \RequirePackage { unicode-math }
+ \unimathsetup { math-style = ISO, partial = upright, nabla = upright }
+ \setmathfont { Asana-Math.otf }
+ \__minimclass_if_font_exist:nnn { Neo~Euler }
+ {
+ \setmathfont { Neo~Euler }
+ [
+ range = { up / { Latin, latin, Greek, greek },
+ bfup / { Latin, latin, Greek, greek },
+ cal, bfcal, frak, bffrak,
+ `(, `), `[, `], `\{, `\}, `:, `=, \ne, \equiv, `/, \backslash,
+ \in, \notin, \ni, \subset, \supset, \subseteq, \supseteq,
+ \rightarrow, \leftarrow, \leftrightarrow,
+ \longleftarrow, \longrightarrow, \longleftrightarrow,
+ \Leftarrow, \Rightarrow, \Leftrightarrow,
+ \Longleftarrow, \Longrightarrow, \Longleftrightarrow,
+ \nrightarrow, \nleftarrow, \nleftrightarrow,
+ \nLeftarrow, \nRightarrow, \nLeftrightarrow,
+ \mapsto, \hookrightarrow, \hookleftarrow,
+ \leftharpoonup, \rightharpoonup, \leftharpoondown, \rightharpoondown,
+ \rightleftharpoons, \leftrightharpoons,
+ \sum, \prod, \coprod,
+ \sqrt, \int, \iint, \iiint, \oint
+ },
+ script-features = {},
+ sscript-features = {},
+ Scale = 1.05,
+ ]
+ }{}
+ \setmathfont { latinmodern-math.otf }
+ [
+ range = { \leq, \geq, \ll, \gg, \lll, \ggg, \leqslant, \geqslant },
+ Scale = 0.95,
+ ]
+ \setmathfont { texgyrepagella-math.otf }
+ [
+ range = { up / num, bfup / num }
+ ]
+
+ \hook_gput_code:nnn { begindocument } { minimclass }
+ {
+ \NewCommandCopy \minimclass_backup_mid: \mid
+ \RenewDocumentCommand \mid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_mid: \skip_horizontal:n {-.15em} }
+ \NewCommandCopy \minimclass_backup_nmid: \nmid
+ \RenewDocumentCommand \nmid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_nmid: \skip_horizontal:n {-.15em} }
+ }
+
+ \RequirePackage { tikz-cd }
+
+ \box_new:N \l__minimclass_xarrows_above_box
+ \box_new:N \l__minimclass_xarrows_below_box
+ \dim_new:N \l__minimclass_xarrows_length_dim
+ \cs_new_protected:Nn \minimclass_xarrows_generic:nnnn
+ % #3 = option of \tikz
+ % #4 = edge of \draw
+ {
+ \hbox_set:Nn \l__minimclass_xarrows_below_box { \ensuremath { \scriptstyle #1 } }
+ \hbox_set:Nn \l__minimclass_xarrows_above_box { \ensuremath { \scriptstyle #2 } }
+ \dim_set:Nn \l__minimclass_xarrows_length_dim
+ { \dim_eval:n { \dim_max:nn { \box_wd:N \l__minimclass_xarrows_below_box } { \box_wd:N \l__minimclass_xarrows_above_box } + .8em } }
+ \mathrel
+ {
+ \tikz [ #3, baseline = -.55ex, every~node/.style = { inner~sep = 0pt } ]
+ \draw (0,0) #4
+ node [ below = 3pt ] { \box_use:N \l__minimclass_xarrows_below_box }
+ node [ above = 2pt ] { \box_use:N \l__minimclass_xarrows_above_box }
+ ( \l__minimclass_xarrows_length_dim ,0) ;
+ }
+ }
+
+ \RenewDocumentCommand \xrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { -> } { -- }
+ }
+ \RenewDocumentCommand \xleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <- } { -- }
+ }
+ \RenewDocumentCommand \xleftrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <-> } { -- }
+ }
+ \RenewDocumentCommand \xhookrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookrightarrow ] }
+ }
+ \RenewDocumentCommand \xhookleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookleftarrow ] }
+ }
+ \RenewDocumentCommand \xmapsto { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/mapsto ] }
+ }
+ \NewDocumentCommand \xlongequal { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/equal ] }
+ }
+ \hook_gput_code:nnn { begindocument/end } { minimclass }
+ {
+ \RenewDocumentCommand \twoheadrightarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadrightarrow ] }
+ }
+ \RenewDocumentCommand \twoheadleftarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadleftarrow ] }
+ }
+ }
+ }
+ }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
%%================================
-%% Graphics
+%% Graphics
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
-
-%%================================
-%% Index
-%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
diff --git a/macros/unicodetex/latex/simplivre/README.md b/macros/unicodetex/latex/simplivre/README.md
index 6ec7912598..0bb1398797 100644
--- a/macros/unicodetex/latex/simplivre/README.md
+++ b/macros/unicodetex/latex/simplivre/README.md
@@ -2,6 +2,8 @@
# `simplivre` : write you books in a simple and clear way
+**The current document class have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
`simplivre` is a LaTeX class for typesetting books, which has a simple and clear
design.
diff --git a/macros/unicodetex/latex/simplivre/simplivre.cls b/macros/unicodetex/latex/simplivre/simplivre.cls
index 0dfcb4a135..7cac20b9ae 100644
--- a/macros/unicodetex/latex/simplivre/simplivre.cls
+++ b/macros/unicodetex/latex/simplivre/simplivre.cls
@@ -2,7 +2,7 @@
%% This is file `simplivre/simplivre.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,564 +16,685 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{simplivre}
- [2021/12/16 A simple and clear book style]
-\def\minimclass@baseclass{book}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL@thmnum@default]
-
-\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
-\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
-
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass@baseclass}
-
-\if@minimclass@draft
- \@minimclass@fasttrue
-\fi
-\if@minimclass@classical\else
- \@minimclass@useindenttrue
-\fi
-\if@minimclass@lmodern
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@palatino
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@times
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@garamond
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@noto
- \@minimclass@customfonttrue
-\fi
-\if@minimclass@biolinum
- \@minimclass@customfonttrue
-\fi
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {simplivre}
+ {2022/03/17} {}
+ {A simple and clear book style}
+
+\tl_const:Nn \l__minimclass_base_class_tl { book }
+
+
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_latin_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_cjk_bool
+
+\bool_new:N \l__minimclass_load_custom_font_file_math_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_math_bool
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { minimalist.font.latin }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { minimalist.font.cjk }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { minimalist.font.math }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+ , load custom latin font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load custom latin font file .default:n = { minimalist.font.latin }
+ , load~custom~latin~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load~custom~latin~font~file .default:n = { minimalist.font.latin }
+ , load-custom-latin-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load-custom-latin-font-file .default:n = { minimalist.font.latin }
+
+ , load custom cjk font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load custom cjk font file .default:n = { minimalist.font.cjk }
+ , load~custom~cjk~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load~custom~cjk~font~file .default:n = { minimalist.font.cjk }
+ , load-custom-cjk-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load-custom-cjk-font-file .default:n = { minimalist.font.cjk }
+
+ , load custom math font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load custom math font file .default:n = { minimalist.font.math }
+ , load~custom~math~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load~custom~math~font~file .default:n = { minimalist.font.math }
+ , load-custom-math-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load-custom-math-font-file .default:n = { minimalist.font.math }
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
%%================================
-%% Page layout
+%% Page layout
%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if@minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if@minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-
-\if@minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if@minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
+
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
+
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
+
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
+
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
+
+\RequirePackage { minimalist }
%%================================
-%% Fonts
+%% Fonts
%%================================
-\if@minimclass@customfont\else
- \if@minimclass@fast
- \RequirePackage{mathpazo}
- \fi
-\fi
-
-\PassOptionsToPackage{no-math,quiet}{fontspec}
-\RequirePackage{fontspec}
-
-\IfFileExists{minimalist-font.tex}{
- \input{minimalist-font.tex}
-}{
-\IfFontExistsTF{Palatino Linotype}{%
- \setmainfont{Palatino Linotype}
- [\if@minimclass@useosf Numbers = OldStyle\fi]
-}{
- \setmainfont{TeXGyrePagellaX-Regular.otf}[
- BoldFont = TeXGyrePagellaX-Bold.otf ,
- ItalicFont = TeXGyrePagellaX-Italic.otf ,
- BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
-}
- \setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase ,
- BoldFont = SourceSansPro-Bold.otf ,
- ItalicFont = SourceSansPro-RegularIt.otf ,
- BoldItalicFont = SourceSansPro-BoldIt.otf ]
- \setmonofont{NewCMMono10-Regular.otf}[
- Scale = 1.05 ,
- BoldFont = NewCMMono10-Bold.otf ,
- ItalicFont = NewCMMono10-Italic.otf ,
- BoldItalicFont = NewCMMono10-BoldOblique.otf ]
-}
-
-\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
-\RequirePackage{ctex}
-
-\IfFileExists{minimalist-font.cjk.tex}{
- \input{minimalist-font.cjk.tex}
-}{
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKmainfont{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKmainfont{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKsansfont{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKsansfont{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKmonofont{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKmonofont{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-
-\if@PJLlang@enable@CN
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKfamilyfont{SCmain}{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKfamilyfont{SCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKfamilyfont{SCsans}{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKfamilyfont{SCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKfamilyfont{SCmono}{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKfamilyfont{SCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\if@PJLlang@enable@TC
-\IfFontExistsTF{SourceHanSerifTC-Regular}{%
- \setCJKfamilyfont{TCmain}{SourceHanSerifTC-Regular}[
- BoldFont = SourceHanSerifTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifTC-Bold ]
-}{
- \setCJKfamilyfont{TCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansTC-Regular}{%
- \setCJKfamilyfont{TCsans}{SourceHanSansTC-Regular}[
- BoldFont = SourceHanSansTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansTC-Bold ]
-}{
- \setCJKfamilyfont{TCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoTC-Regular}{%
- \setCJKfamilyfont{TCmono}{SourceHanMonoTC-Regular}[
- BoldFont = SourceHanMonoTC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoTC-Medium ]
-}{
- \setCJKfamilyfont{TCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\if@PJLlang@enable@JP
-\IfFontExistsTF{SourceHanSerif-Regular}{%
- \setCJKfamilyfont{JPmain}{SourceHanSerif-Regular}[
- BoldFont = SourceHanSerif-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerif-Bold ]
-}{
- \setCJKfamilyfont{JPmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSans-Regular}{%
- \setCJKfamilyfont{JPsans}{SourceHanSans-Regular}[
- BoldFont = SourceHanSans-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSans-Bold ]
-}{
- \setCJKfamilyfont{JPsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMono-Regular}{%
- \setCJKfamilyfont{JPmono}{SourceHanMono-Regular}[
- BoldFont = SourceHanMono-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMono-Medium ]
-}{
- \setCJKfamilyfont{JPmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
-
-\WarningFilter{latexfont}{Font shape}
-\WarningFilter{latexfont}{Some font}
-
-\def\CJKsffamily{}
-\def\CJKttfamily{}
-
-\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL}
-\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL}
-
-\if@PJLlang@enable@CN
-\gappto{\PJLlang@langconfig@CN}{%
- \def\CJKsffamily{\CJKfamily{SCsans}}%
- \def\CJKttfamily{\CJKfamily{SCmono}}%
- \CJKfamily{SCmain}%
-}
-\fi
-
-\if@PJLlang@enable@TC
-\gappto{\PJLlang@langconfig@TC}{%
- \def\CJKsffamily{\CJKfamily{TCsans}}%
- \def\CJKttfamily{\CJKfamily{TCmono}}%
- \CJKfamily{TCmain}%
-}
-\fi
-
-\if@PJLlang@enable@JP
-\gappto{\PJLlang@langconfig@JP}{%
- \def\CJKsffamily{\CJKfamily{JPsans}}%
- \def\CJKttfamily{\CJKfamily{JPmono}}%
- \CJKfamily{JPmain}%
-}
-\fi
-
-\def\minimalist@titlefontshape{\CJKsffamily}
-}
-
-\if@minimclass@customfont\else
-\if@minimclass@fast
-\RequirePackage{amssymb}
-\else
-\PassOptionsToPackage
- {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
-\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
-\setmathfont{Asana-Math.otf}
-\IfFontExistsTF{Neo Euler}{%
-\setmathfont[range={up/{Latin,latin,Greek,greek},
- bfup/{Latin,latin,Greek,greek},
- cal, bfcal, frak, bffrak,
- `(,`),`[,`],`\{,`\},`:,`=,\ne,\equiv,`/,\backslash,
- \in,\notin,\ni,\subset,\supset,\subseteq,\supseteq,
- \rightarrow,\leftarrow,\mapsto,\hookrightarrow,\hookleftarrow,
- \sum,\prod,\coprod,
- \sqrt,\int,\iint,\iiint,\oint},
- script-features={},
- sscript-features={},
- Scale = 1.05,
- ]{Neo Euler}
-}{}
-\setmathfont[range={\leq,\geq,\ll,\gg,\lll,\ggg,\leqslant,\geqslant},
- Scale = 0.95,
- ]{latinmodern-math.otf}
-\setmathfont[range={up/num, bfup/num}
- ]{texgyrepagella-math.otf}
-
-\AtBeginDocument{
-\let\mid@original\mid
-\renewcommand{\mid}{\hspace{-.2em}\mid@original\hspace{-.2em}}
-\let\nmid@original\nmid
-\renewcommand{\nmid}{\hspace{-.2em}\nmid@original\hspace{-.2em}}
-\renewcommand{\frac}[2]{\genfrac{}{}{}{}{
- \mathchoice
- {\raisebox{-.15em}{$\displaystyle #1$}}
- {\raisebox{-.15em}{$\textstyle #1$}}
- {\raisebox{-.08em}{$\scriptstyle #1$}}
- {\scriptscriptstyle #1}
-}{
- \mathchoice
- {\raisebox{.08em}{$\displaystyle #2$}}
- {\raisebox{.08em}{$\textstyle #2$}}
- {\raisebox{.05em}{$\scriptstyle #2$}}
- {\scriptscriptstyle #2}
-}}
-}
-
-\RequirePackage{tikz-cd}
-\newbox\xratbelow
-\newbox\xratabove
-\renewcommand{\xrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<-, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookrightarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookleftarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xmapsto}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/mapsto] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\newcommand{\xlongequal}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/equal] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\AtBeginDocument{
-\renewcommand{\twoheadrightarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadrightarrow] (.8em,0) ;}}
-\renewcommand{\twoheadleftarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadleftarrow] (.8em,0) ;}}
-}
-\fi
-\fi
-
-\if@minimclass@lmodern
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if@minimclass@useosf\useosf\fi
-\fi
-
-\if@minimclass@garamond
- \RequirePackage{amssymb}
- \if@minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@noto
- \RequirePackage{amssymb}
- \if@minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if@minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if@minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum@family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if@minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-\def\PJL@font@alreadyset{}
-
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+\cs_new_protected:Nn \__minimclass_if_font_exist:nnn
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ { #3 }
+ { \fontspec_font_if_exist:nTF { #1 } { #2 } { #3 } }
+ }
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NT \l__minimclass_fast_bool
+ {
+ \RequirePackage { mathpazo }
+ }
+
+ \PassOptionsToPackage { no-math,quiet } { fontspec }
+ \RequirePackage { fontspec }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_latin_bool { \l__minimclass_custom_font_file_latin_str }
+ {
+ \__minimclass_if_font_exist:nnn { Palatino~Linotype }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { Palatino~Linotype } [ Numbers = OldStyle ]
+ }
+ {
+ \setmainfont { Palatino~Linotype }
+ }
+ }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ Numbers = OldStyle ,
+ ]
+ }
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ ]
+ }
+ }
+ \setsansfont { SourceSansPro-Regular.otf }
+ [
+ Scale = MatchLowercase ,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ,
+ ]
+ \setmonofont { NewCMMono10-Regular.otf }
+ [
+ Scale = 1.05 ,
+ BoldFont = NewCMMono10-Bold.otf ,
+ ItalicFont = NewCMMono10-Italic.otf ,
+ BoldItalicFont = NewCMMono10-BoldOblique.otf ,
+ ]
+
+ \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } }
+ }
+ }
+
+ \PassOptionsToPackage { fontset = none, scheme = plain } { ctex }
+ \RequirePackage { ctex }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_cjk_bool { \l__minimclass_custom_font_file_cjk_str }
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKmainfont { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKmainfont { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKsansfont{SourceHanSansSC-Regular}
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKsansfont { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKmonofont { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKmonofont { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_schinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKfamilyfont { SCmain } { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKfamilyfont { SCsans } { SourceHanSansSC-Regular }
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKfamilyfont { SCmono } { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_tchinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifTC-Regular }
+ {
+ \setCJKfamilyfont { TCmain } { SourceHanSerifTC-Regular }
+ [
+ BoldFont = SourceHanSerifTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansTC-Regular }
+ {
+ \setCJKfamilyfont { TCsans } { SourceHanSansTC-Regular }
+ [
+ BoldFont = SourceHanSansTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoTC-Regular }
+ {
+ \setCJKfamilyfont { TCmono } { SourceHanMonoTC-Regular }
+ [
+ BoldFont = SourceHanMonoTC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoTC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \bool_if:NT \g__projlib_language_enabled_japanese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerif-Regular }
+ {
+ \setCJKfamilyfont { JPmain } { SourceHanSerif-Regular }
+ [
+ BoldFont = SourceHanSerif-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerif-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSans-Regular }
+ {
+ \setCJKfamilyfont { JPsans } { SourceHanSans-Regular }
+ [
+ BoldFont = SourceHanSans-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSans-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMono-Regular }
+ {
+ \setCJKfamilyfont { JPmono } { SourceHanMono-Regular }
+ [
+ BoldFont = SourceHanMono-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMono-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
+
+ \cs_new:Nn \minimclass_cjk_sffamily: {}
+ \cs_new:Nn \minimclass_cjk_ttfamily: {}
+
+ \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: }
+ \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: }
+
+ \AddLanguageSetting [schinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { SCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { SCmono } }
+ \CJKfamily { SCmain }
+ }
+ \AddLanguageSetting [tchinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { TCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { TCmono } }
+ \CJKfamily { TCmain }
+ }
+ \AddLanguageSetting [japanese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { JPsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { JPmono } }
+ \CJKfamily { JPmain }
+ }
+
+ \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: }
+ }
+
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_math_bool { \l__minimclass_custom_font_file_math_str }
+ {
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ {
+ \RequirePackage { amssymb }
+ }
+ {
+ \PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math }
+ \RequirePackage { unicode-math }
+ \unimathsetup { math-style = ISO, partial = upright, nabla = upright }
+ \setmathfont { Asana-Math.otf }
+ \__minimclass_if_font_exist:nnn { Neo~Euler }
+ {
+ \setmathfont { Neo~Euler }
+ [
+ range = { up / { Latin, latin, Greek, greek },
+ bfup / { Latin, latin, Greek, greek },
+ cal, bfcal, frak, bffrak,
+ `(, `), `[, `], `\{, `\}, `:, `=, \ne, \equiv, `/, \backslash,
+ \in, \notin, \ni, \subset, \supset, \subseteq, \supseteq,
+ \rightarrow, \leftarrow, \leftrightarrow,
+ \longleftarrow, \longrightarrow, \longleftrightarrow,
+ \Leftarrow, \Rightarrow, \Leftrightarrow,
+ \Longleftarrow, \Longrightarrow, \Longleftrightarrow,
+ \nrightarrow, \nleftarrow, \nleftrightarrow,
+ \nLeftarrow, \nRightarrow, \nLeftrightarrow,
+ \mapsto, \hookrightarrow, \hookleftarrow,
+ \leftharpoonup, \rightharpoonup, \leftharpoondown, \rightharpoondown,
+ \rightleftharpoons, \leftrightharpoons,
+ \sum, \prod, \coprod,
+ \sqrt, \int, \iint, \iiint, \oint
+ },
+ script-features = {},
+ sscript-features = {},
+ Scale = 1.05,
+ ]
+ }{}
+ \setmathfont { latinmodern-math.otf }
+ [
+ range = { \leq, \geq, \ll, \gg, \lll, \ggg, \leqslant, \geqslant },
+ Scale = 0.95,
+ ]
+ \setmathfont { texgyrepagella-math.otf }
+ [
+ range = { up / num, bfup / num }
+ ]
+
+ \hook_gput_code:nnn { begindocument } { minimclass }
+ {
+ \NewCommandCopy \minimclass_backup_mid: \mid
+ \RenewDocumentCommand \mid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_mid: \skip_horizontal:n {-.15em} }
+ \NewCommandCopy \minimclass_backup_nmid: \nmid
+ \RenewDocumentCommand \nmid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_nmid: \skip_horizontal:n {-.15em} }
+ }
+
+ \RequirePackage { tikz-cd }
+
+ \box_new:N \l__minimclass_xarrows_above_box
+ \box_new:N \l__minimclass_xarrows_below_box
+ \dim_new:N \l__minimclass_xarrows_length_dim
+ \cs_new_protected:Nn \minimclass_xarrows_generic:nnnn
+ % #3 = option of \tikz
+ % #4 = edge of \draw
+ {
+ \hbox_set:Nn \l__minimclass_xarrows_below_box { \ensuremath { \scriptstyle #1 } }
+ \hbox_set:Nn \l__minimclass_xarrows_above_box { \ensuremath { \scriptstyle #2 } }
+ \dim_set:Nn \l__minimclass_xarrows_length_dim
+ { \dim_eval:n { \dim_max:nn { \box_wd:N \l__minimclass_xarrows_below_box } { \box_wd:N \l__minimclass_xarrows_above_box } + .8em } }
+ \mathrel
+ {
+ \tikz [ #3, baseline = -.55ex, every~node/.style = { inner~sep = 0pt } ]
+ \draw (0,0) #4
+ node [ below = 3pt ] { \box_use:N \l__minimclass_xarrows_below_box }
+ node [ above = 2pt ] { \box_use:N \l__minimclass_xarrows_above_box }
+ ( \l__minimclass_xarrows_length_dim ,0) ;
+ }
+ }
+
+ \RenewDocumentCommand \xrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { -> } { -- }
+ }
+ \RenewDocumentCommand \xleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <- } { -- }
+ }
+ \RenewDocumentCommand \xleftrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <-> } { -- }
+ }
+ \RenewDocumentCommand \xhookrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookrightarrow ] }
+ }
+ \RenewDocumentCommand \xhookleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookleftarrow ] }
+ }
+ \RenewDocumentCommand \xmapsto { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/mapsto ] }
+ }
+ \NewDocumentCommand \xlongequal { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/equal ] }
+ }
+ \hook_gput_code:nnn { begindocument/end } { minimclass }
+ {
+ \RenewDocumentCommand \twoheadrightarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadrightarrow ] }
+ }
+ \RenewDocumentCommand \twoheadleftarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadleftarrow ] }
+ }
+ }
+ }
+ }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
%%================================
-%% Graphics
+%% Graphics
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
-
-%%================================
-%% Index
-%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%