summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datetime2-contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-12-14 03:01:43 +0000
committerNorbert Preining <norbert@preining.info>2019-12-14 03:01:43 +0000
commit2c20697e8a5301b61c59d752fd1cfa7499724eec (patch)
treed2475f5c56c14a7c38d26cfd2c5b71d4e0d824e0 /macros/latex/contrib/datetime2-contrib
parentfdd3c58e8e5b37dcf9affd49326899988992c074 (diff)
CTAN sync 201912140301
Diffstat (limited to 'macros/latex/contrib/datetime2-contrib')
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/README.md15
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx355
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx356
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx354
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx217
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx214
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx124
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx307
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdfbin0 -> 136566 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx1938
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins42
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdfbin323394 -> 0 bytes
12 files changed, 1991 insertions, 1931 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md
index 354d3adc4b..2c803abeb7 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/README.md
@@ -10,7 +10,6 @@ Required Packages: `datetime2`, `tracklang`
This module is maintained.
Current maintainer is Sebastian Friedl.
-Thanks to Jürgen Spitzmüller for his valuable advice while developing Version 2.0 of this module.
## Installation
@@ -20,12 +19,12 @@ Move all `*.ldf` files to `TEXMF/tex/latex/datetime2-contrib/datetime2-german/`
Documentation:
- pdflatex datetime2-german.dtx
- makeindex -s gind.ist datetime2-german.idx
- makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo
- pdflatex datetime2-german.dtx
- pdflatex datetime2-german.dtx
+ lualatex datetime2-german-doc.dtx
+ makeindex -s gind.ist datetime2-german-doc.idx
+ makeindex -s gglo.ist -o datetime2-german-doc.gls datetime2-german-doc.glo
+ lualatex datetime2-german-doc.dtx
+ lualatex datetime2-german-doc.dtx
-Move `datetime2-german.pdf` and `README` to `TEXMF/doc/latex/datetime2-contrib/datetime2-german/`
+Move `datetime2-german-doc.pdf` and `README.md` to `TEXMF/doc/latex/datetime2-contrib/datetime2-german/`
-This material is subject to the LaTeX Project Public License. See [http://www.latex-project.org/lppl.txt](http://www.latex-project.org/lppl.txt "Show the current version of the LPPL") for the details of that license.
+This material is subject to the LaTeX Project Public License. See [http://www.latex-project.org/lppl.txt](http://www.latex-project.org/lppl.txt "Show the current version of the LPPL") or `LICENSE.txt` for the details of that license.
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx
new file mode 100644
index 0000000000..434363708d
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-AT.dtx
@@ -0,0 +1,355 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{Austrian German (de-AT): \texttt{datetime2-de-AT.ldf}}
+% \changes{2.0}{2017-10-03}{Added regional variant: Austrian German (de-AT)}
+%
+% Identify Module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-AT}[2019/12/13 v3.0]
+% \end{macrocode}
+% Require the base German module.
+% \begin{macrocode}
+\RequireDateTimeModule{german-base}
+% \end{macrocode}
+%
+%
+% Allow the to configure the "de-AT" and "de-AT-numeric" styles.
+% The package wide separators such as \cs{dtm@datetimesep} are not used
+% in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeATdowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMdeATdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeATdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeATtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeATtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}}
+\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}}
+\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}}
+\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}}
+\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}}
+\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}}
+\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is to show the full names.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-AT}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-AT}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-AT" style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-AT}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeATdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMdeATshortmonthname{##2}}%
+ {\DTMdeATmonthname{##2}}%
+ %
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \DTMdeATmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeATdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMdeATshortmonthname{##2}}%
+ {\DTMdeATmonthname{##2}}%
+ %
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \DTMdeATmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeATtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-AT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define the corresponding numeric style.
+% \changes{3.0}{2019-12-13}{Change Austrian numeric style}
+% \begin{macrocode}
+\DTMnewstyle
+{de-AT-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeATdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-AT}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMdeATdatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMdeATdatesep%
+ \DTMifbool{de-AT}{showyear}%
+ {%
+ \DTMifbool{de-AT}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeATtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-AT}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeATdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeATtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch the style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-AT}}%
+ {\DTMsetstyle{de-AT-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {}% do nothing
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-AT}}%
+ {\DTMsetstyle{de-AT-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-AT}}%
+ {\DTMsetstyle{de-AT-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx
new file mode 100644
index 0000000000..89b04ca3e7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-CH.dtx
@@ -0,0 +1,356 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{Swiss German (de-CH): \texttt{datetime2-de-CH.ldf}}
+% \changes{2.0}{2017-10-03}{Added regional variant: Swiss German (de-CH)}
+%
+% Identify Module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-CH}[2019/12/13 v3.0]
+% \end{macrocode}
+% Require the base German module
+% \begin{macrocode}
+\RequireDateTimeModule{german-base}
+% \end{macrocode}
+%
+%
+% Allow the user to configure the "de-CH" and "de-CH-numeric" styles.
+% The package wide separators such as \cs{dtm@datetimesep} are not used
+% in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeCHdowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeCHtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeCHtimesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-CH}{dowdaysep}{\renewcommand*{\DTMdeCHdowdaysep}{#1}}
+\DTMdefkey{de-CH}{daymonthsep}{\renewcommand*{\DTMdeCHdaymonthsep}{#1}}
+\DTMdefkey{de-CH}{monthyearsep}{\renewcommand*{\DTMdeCHmonthyearsep}{#1}}
+\DTMdefkey{de-CH}{datetimesep}{\renewcommand*{\DTMdeCHdatetimesep}{#1}}
+\DTMdefkey{de-CH}{timezonesep}{\renewcommand*{\DTMdeCHtimezonesep}{#1}}
+\DTMdefkey{de-CH}{datesep}{\renewcommand*{\DTMdeCHdatesep}{#1}}
+\DTMdefkey{de-CH}{timesep}{\renewcommand*{\DTMdeCHtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is to show the full name.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-CH}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-CH}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-CH" style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-CH}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMdeCHshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \DTMdeCHmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMdeCHshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \DTMdeCHmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeCHtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
+ Uhr%
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-CH}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeCHtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define the corresponding numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-CH-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeCHdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-CH}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMdeCHdatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMdeCHdatesep%
+ \DTMifbool{de-CH}{showyear}%
+ {%
+ \DTMifbool{de-CH}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeCHtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
+ Uhr%
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-CH}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeCHdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeCHtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch the style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-CH}}%
+ {\DTMsetstyle{de-CH-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {}% do nothing
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-CH}}%
+ {\DTMsetstyle{de-CH-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-CH}}%
+ {\DTMsetstyle{de-CH-numeric}}%
+ }%
+}%
+% \end{macrocode}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx
new file mode 100644
index 0000000000..e1c29938b6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-de-DE.dtx
@@ -0,0 +1,354 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{German (de-DE): \texttt{datetime2-de-DE.ldf}}
+% \changes{2.0}{2017-10-03}{Added regional variant: German (de-DE)}
+%
+% Identify Module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{de-DE}[2019/12/13 v3.0]
+% \end{macrocode}
+% Require the base German module.
+% \begin{macrocode}
+\RequireDateTimeModule{german-base}
+% \end{macrocode}
+%
+%
+% Allow the user to configure the "de-DE" and "de-DE-numeric" styles.
+% The package wide separators such as \cs{dtm@datetimesep} are not used
+% in case other date formats are also required.
+%
+%\begin{macro}{\DTMdeDEdowdaysep}
+% The separator between weekday and day.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEtimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMdeDEtimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEdatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEdatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeDEtimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMdeDEtimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \begin{macrocode}
+\DTMdefkey{de-DE}{dowdaysep}{\renewcommand*{\DTMdeDEdowdaysep}{#1}}
+\DTMdefkey{de-DE}{daymonthsep}{\renewcommand*{\DTMdeDEdaymonthsep}{#1}}
+\DTMdefkey{de-DE}{monthyearsep}{\renewcommand*{\DTMdeDEmonthyearsep}{#1}}
+\DTMdefkey{de-DE}{datetimesep}{\renewcommand*{\DTMdeDEdatetimesep}{#1}}
+\DTMdefkey{de-DE}{timezonesep}{\renewcommand*{\DTMdeDEtimezonesep}{#1}}
+\DTMdefkey{de-DE}{datesep}{\renewcommand*{\DTMdeDEdatesep}{#1}}
+\DTMdefkey{de-DE}{timesep}{\renewcommand*{\DTMdeDEtimesep}{#1}}
+% \end{macrocode}
+%
+%
+% Define a boolean key that can switch between full and abbreviated formats for
+% the month and day of week names.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is to show the full names.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{de-DE}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\DTMsetbool{de-DE}{showyear}{true}
+% \end{macrocode}
+%
+%
+% Define the "de-DE" style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-DE}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMdeDEmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
+ {}%
+ %
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMdeDEmonthyearsep%
+ \number##1 % space intended
+ }%
+ {}%
+ }
+}%
+{% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeDEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-DE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMdeDEtimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+}%
+% \end{macrocode}
+%
+% Define the corresponding numeric style.
+% \begin{macrocode}
+\DTMnewstyle
+{de-DE-numeric}% label
+{% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMdeDEdowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{de-DE}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMdeDEdatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMdeDEdatesep%
+ \DTMifbool{de-DE}{showyear}%
+ {%
+ \DTMifbool{de-DE}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+}%
+{% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMdeDEtimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
+ }%
+}%
+{% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{de-DE}{mapzone}%
+ {\DTMusezonemapordefault{##1}{##2}}%
+ {%
+ \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
+ \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
+ }%
+ }%
+}%
+{% full style
+ \renewcommand*{\DTMdisplay}[9]{%
+ \ifDTMshowdate
+ \DTMdisplaydate{##1}{##2}{##3}{##4}%
+ \DTMdeDEdatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMdeDEtimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+}
+% \end{macrocode}
+%
+% Switch the style according to the \opt{useregional} setting.
+% \begin{macrocode}
+\DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-DE}}%
+ {\DTMsetstyle{de-DE-numeric}}%
+% \end{macrocode}
+%
+% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
+% \sty{babel} from resetting \cs{today}. (For this to work,
+% \sty{babel} must already have been loaded if it's required.)
+% \begin{macrocode}
+\ifcsundef{date\CurrentTrackedDialect}
+{%
+ \ifundef\dategerman
+ {}% do nothing
+ {%
+ \def\dategerman{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-DE}}%
+ {\DTMsetstyle{de-DE-numeric}}%
+ }%
+ }%
+}%
+{%
+ \csdef{date\CurrentTrackedDialect}{%
+ \DTMifcaseregional
+ {}% do nothing
+ {\DTMsetstyle{de-DE}}%
+ {\DTMsetstyle{de-DE-numeric}}
+ }%
+}%
+% \end{macrocode}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx
new file mode 100644
index 0000000000..1a6842849a
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-ascii.dtx
@@ -0,0 +1,217 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{ASCII-code: \texttt{datetime2-german-base-ascii.ldf}}
+% The definitions in this file use \LaTeX\ commands for non-ASCII characters.
+% It should be used if neither \hologo{XeLaTeX} nor \hologo{LuaLaTeX} are used.
+% Even if the user has loaded \sty{inputenc} with "utf8", this file should still
+% be used instead of \texttt{datetime2-german-base-utf8.ldf} as the non-ASCII
+% characters are made active in that situation and would need protecting
+% against expansion.
+% \changes{1.0}{2015-03-27}{Initial release}
+%
+% \medskip
+% Identify module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{german-base-ascii}[2019/12/13 v3.0]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgermanmonthname}
+% German month names.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthname}
+%\changes{2.0}{2017-10-03}{Implemented Austrian month names}
+% Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthname}[1]{%
+ \ifcase#1
+ \or
+ J\protect\"anner%
+ \or
+ Februar%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortmonthname}
+% Abbreviated German month names.
+%\changes{1.2}{2017-09-10}{Implemented short month names}
+%\changes{2.0}{2017-10-03}{Fixed German short month names}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Feb.%
+ \or
+ M\protect\"arz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATshortmonthname}
+%\changes{2.0}{2017-10-03}{Implemented Austrian short month names}
+% Abbreviated Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ J\protect\"an.%
+ \or
+ Feb.%
+ \or
+ M\protect\"arz%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHshortmonthname}
+% Abbreviated Swiss German month names.
+%\changes{2.0}{2017-10-03}{Implemented Swiss short month names}
+% \begin{macrocode}
+\newcommand*{\DTMdeCHshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Febr.%
+ \or
+ M\protect\"arz%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx
new file mode 100644
index 0000000000..ae6b248c22
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base-utf8.dtx
@@ -0,0 +1,214 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{UTF-8 code: \texttt{datetime2-german-base-utf8.dtx}}
+% The definitions in this file use UTF-8 characters. It is loaded if
+% \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used. Please make sure that
+% your text editor's encoding is set to UTF-8 if you want to view this code.
+% \changes{1.0}{2015-03-27}{Initial release}
+%
+% \medskip
+% Identify module.
+% \begin{macrocode}
+\ProvidesDateTimeModule{german-base-utf8}[2019/12/13 v3.0]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgermanmonthname}
+% German month names.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthname}[1]{%
+ \ifcase#1
+ \or
+ Januar%
+ \or
+ Februar%
+ \or
+ März%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATmonthname}
+%\changes{2.0}{2017-10-03}{Implemented Austrian month names}
+% Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jänner%
+ \or
+ Februar%
+ \or
+ März%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ August%
+ \or
+ September%
+ \or
+ Oktober%
+ \or
+ November%
+ \or
+ Dezember%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortmonthname}
+% Abbreviated German month names.
+%\changes{1.2}{2017-09-10}{Implemented short month names}
+%\changes{2.0}{2017-10-03}{Fixed German short month names}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Feb.%
+ \or
+ März%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeATshortmonthname}
+%\changes{2.0}{2017-10-03}{Implemented Austrian short month names}
+% Abbreviated Austrian German month names.
+% \begin{macrocode}
+\newcommand*{\DTMdeATshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jän.%
+ \or
+ Feb.%
+ \or
+ März%
+ \or
+ Apr.%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMdeCHshortmonthname}
+% Abbreviated Swiss German month names.
+%\changes{2.0}{2017-10-03}{Implemented Swiss short month names}
+% \begin{macrocode}
+\newcommand*{\DTMdeCHshortmonthname}[1]{%
+ \ifcase#1
+ \or
+ Jan.%
+ \or
+ Febr.%
+ \or
+ März%
+ \or
+ April%
+ \or
+ Mai%
+ \or
+ Juni%
+ \or
+ Juli%
+ \or
+ Aug.%
+ \or
+ Sept.%
+ \or
+ Okt.%
+ \or
+ Nov.%
+ \or
+ Dez.%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx
new file mode 100644
index 0000000000..7651fe0ada
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-base.dtx
@@ -0,0 +1,124 @@
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+% \fi
+%
+%
+%
+% \subsection{Engine-independent code: \texttt{datetime2-german-base.ldf}}
+%
+% \changes{1.0}{2015-03-27}{Initial release}
+%
+% \medskip
+% Identify module
+% \begin{macrocode}
+\ProvidesDateTimeModule{german-base}[2019/12/13 v3.0]
+% \end{macrocode}
+%
+%\begin{macro}{\DTMgermanordinal}
+% Ordinals used for printing the day of month.
+% \begin{macrocode}
+\newcommand*{\DTMgermanordinal}[1]{%
+ \number#1
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanweekdayname}
+% Weekday names.
+% \begin{macrocode}
+\newcommand*{\DTMgermanweekdayname}[1]{%
+ \ifcase#1
+ Montag%
+ \or
+ Dienstag%
+ \or
+ Mittwoch%
+ \or
+ Donnerstag%
+ \or
+ Freitag%
+ \or
+ Samstag%
+ \or
+ Sonntag%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanshortweekdayname}
+% Abbreviated weekday names.
+%\changes{1.2}{2017-09-10}{Implemented short weekday names}
+%\changes{2.0}{2017-10-03}{Fixed short weekday names}
+% \begin{macrocode}
+\newcommand*{\DTMgermanshortweekdayname}[1]{%
+ \ifcase#1
+ Mo%
+ \or
+ Di%
+ \or
+ Mi%
+ \or
+ Do%
+ \or
+ Fr%
+ \or
+ Sa%
+ \or
+ So%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanzonemaps}
+% The time zone mappings are set through this command, which can be
+% redefined if extra mappings are required or mappings need to be
+% removed.
+%\changes{1.2}{2017-09-10}{Use German time zone names (ME[S]Z)}
+% \begin{macrocode}
+\newcommand*{\DTMgermanzonemaps}{%
+ \DTMdefzonemap{01}{00}{MEZ}%
+ \DTMdefzonemap{02}{00}{MESZ}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Load engine-dependent code. \\
+% \hologo{XeTeX} and \hologo{LuaTeX} natively support UTF-8, so the "german-base-utf8"
+% module is loaded if either of those engines are used. \\
+% Otherwise, the "german-base-ascii" module is loaded.
+% \begin{macrocode}
+\RequirePackage{ifxetex, ifluatex}
+\ifxetex
+ \RequireDateTimeModule{german-base-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{german-base-utf8}
+ \else
+ \RequireDateTimeModule{german-base-ascii}
+ \fi
+\fi
+% \end{macrocode}
+%
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx
new file mode 100644
index 0000000000..ed3a95d843
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.dtx
@@ -0,0 +1,307 @@
+% \iffalse
+%% Doc-Source file to use with LaTeX2e
+%% Copyright (C) 2015 Nicola Talbot, all rights reserved.
+%% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
+%%
+%% This work is subject to the LaTeX Project Public License, Version 1.3c or -- at
+%% your option -- any later version of this license.
+%%
+%%
+%% This work has the LPPL maintenance status 'maintained'.
+%% Current maintainer of the work is Sebastian Friedl.
+% \fi
+
+% !TeX spellcheck=en_US
+
+\documentclass[11pt]{ltxdoc}
+
+\RequirePackage{iftex}
+\RequireLuaTeX
+
+
+\usepackage[no-math]{fontspec}
+\usepackage{polyglossia}
+\setdefaultlanguage{english}
+\usepackage[english]{selnolig}
+
+\usepackage{alltt}
+\usepackage{csquotes}
+\usepackage{graphicx}
+\usepackage{hologo}
+\usepackage{multicol}
+
+\usepackage{array}
+\usepackage{booktabs}
+\usepackage{tabularx}
+
+\usepackage[unicode, pdfborder={0 0 0}, linktoc=all, hyperindex=false]{hyperref}
+\usepackage{verbatim}
+
+\usepackage[erewhon]{newtxmath}
+\setmainfont{Source Serif Pro}
+\setsansfont{Source Sans Pro}
+\setmonofont[Scale=MatchLowercase]{Hack}
+
+\usepackage[a4paper, left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry}
+
+\parindent 0pt
+
+\CheckSum{1068}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+
+\MakeShortVerb{"}
+
+\title{German Module for the \sty{datetime2} Package \\ {\large\url{https://gitlab.com/SFr682k/datetime2-german}}}
+\author{%
+ \begin{tabularx}{.8\textwidth}{*{2}{>{\centering\arraybackslash}X}}
+ Nicola L. C. Talbot & Sebastian Friedl \\
+ (inactive) & {\normalsize\href{mailto:sfr682k@t-online.de}{\texttt{sfr682k@t-online.de}}} \\
+ \end{tabularx}%
+}
+\date{2019/12/13 (v3.0)}
+
+\hypersetup{pdftitle={datetime2.sty German Module}, pdfauthor={Nicola L.C. Talbot, Sebastian Friedl}}
+
+
+\begin{document}
+ \maketitle
+
+
+ \begin{abstract}
+ This is the German language module for the \sty{datetime2} package. It defines a regionless style as well as variant styles ("de-DE", "de-AT" and "de-CH").
+
+ If you want to use the settings in this module you must install it in addition to installing \sty{datetime2}.
+ If you use \sty{babel} or \sty{polyglossia}, you will need this module to prevent them from redefining \cs{today}.
+
+ The \sty{datetime2} \opt{useregional} setting must be set to "text" or "numeric" for the language styles to be set.
+ Alternatively, you can set the style in the document using \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language} depending on the value of the \opt{useregional} setting.
+ \end{abstract}
+
+
+
+
+ \clearpage
+ \tableofcontents
+ \clearpage
+
+
+
+ \subsection*{Installation}
+ \addcontentsline{toc}{subsection}{Installation}
+ Extract the language definition files first:
+ \begin{enumerate}
+ \item Run \LaTeX\ over the file "datetime2-german.ins": \\
+ "latex datetime2-german.ins"
+
+ \item Move all "*.ldf" files to "TEXMF/tex/latex/datetime2-contrib/datetime2-german/"
+ \end{enumerate}
+ Then, you can compile the documentation yourself by executing \\[\smallskipamount]
+ "lualatex datetime2-german-doc.dtx" \\
+ "makeindex -s gind.ist datetime2-german-doc.idx" \\
+ "makeindex -s gglo.ist -o datetime2-german-doc.gls datetime2-german-doc.glo" \\
+ "lualatex datetime2-german-doc.dtx" \\
+ "lualatex datetime2-german-doc.dtx" \\[\medskipamount]
+ or just use the precompiled documentation shipped with the source files. \\
+ In both cases, copy the files "datetime2-german-doc.pdf" and "README.md" to \\
+ "TEXMF/doc/latex/datetime2-contrib/datetime2-german/"
+
+
+ \subsection*{License}
+ \addcontentsline{toc}{subsection}{License}
+ This material is subject to the \LaTeX\ Project Public License, Version 1.3c or later. \\
+ Details may be found in the respective language definition file's copyright header.
+
+
+ \subsection*{Acknowledgments}
+ \addcontentsline{toc}{subsection}{Acknowledgments}
+ Thanks to \dots
+ \begin{itemize}
+ \item Jürgen Spitzmüller for his valuable advice while preparing version 2.0 of this module.
+
+ \item Bernhard Waldbrunner for his merge request, which resulted in the adoption of the DD.MM.YYYY numeric date format with the Austrian numeric style in version 3.0.
+ Previous versions used the ISO format (YYYY-MM-DD) as recommended by ÖNORM~1080, which was withdrawn in May~2018.
+ \end{itemize}
+
+
+
+ \clearpage
+ \part{The Documentation}
+ \section{Usage}
+
+
+ \subsection{Setting up \sty{datetime2} with a language module}
+ \textit{There are several methods of loading a language module. \\ Please refer to \sty{datetime2}'s documentation for details.}
+
+ \bigskip
+ \textbf{Variant 1:} \\
+ Set the date style explicitly by passing "german", "de-DE", "de-AT" or "de-CH" to \sty{datetime2}: \\[\smallskipamount]
+ "\documentclass{article}" \\
+ "\usepackage[german]{datetime2}" \\
+ "\begin{document}" \\
+ "\today" \\
+ "\end{document}"
+
+ \medskip
+ \textbf{Variant 2: Pick up the desired style from \sty{babel} or document class options)} \\
+ Pass the language (e.g. "german", "ngerman", "austrian", "naustrian", \dots) as an option to the \cs{documentclass} command (or \sty{babel} itself). As soon as the \opt{useregional} option is passed to \sty{datetime2}, the suitable language module is loaded: \\[\smallskipamount]
+ "\documentclass[german]{article}" \\
+ "\usepackage{babel}" \\
+ "\usepackage[useregional]{datetime2}" \\
+ "\begin{document}" \\
+ "\today" \\
+ "\end{document}"
+
+
+
+
+
+ \subsection{Customization}
+ There are a number of settings provided that can be used in \cs{DTMlangsetup} to modify the date-time style. These are:
+ \begin{description}
+ \item["dowdaysep"]%
+ The separator between the day of week name and the day of month number.
+
+ \item["daymonthsep"]%
+ The separator between the day and the month name.
+
+ \item["monthyearsep"]%
+ The separator between the month name and year.
+
+ \item["datesep"]%
+ The separator between the date numbers in the "numeric" styles.
+
+ \item["timesep"]%
+ The separator between hours, minutes and seconds.
+
+ \item["datetimesep"]%
+ The separator between the date and time for the full date-time format.
+
+ \item["timezonesep"]%
+ The separator between the time and zone for the full date-time format.
+
+ \item["abbr"]%
+ This is a boolean key. If "true", the month (and weekday name, if shown) is abbreviated.
+
+ \item["mapzone"]%
+ This is a boolean key. If "true", the time zone mappings are applied.
+
+ \item["showdayofmonth"]%
+ A boolean key that determines whether or not to show the day of the month.
+
+ \item["showyear"]%
+ A boolean key that determines whether or not to show the year.
+ \end{description}
+
+ Although these keys are \textit{defined} for all variant styles, it depends on \sty{datetime2}'s configuration and the requested styles whether they're \textit{used}. More details about the \cs{DTMlangsetup} command can be found in \sty{datetime2}'s documentation.
+
+
+
+
+ % TODO: check styles
+ \section{The Modules}
+ \subsection{Regionless style (\texttt{german})}
+ \begin{tabularx}{\textwidth}{>{\itshape}rX}
+ \toprule
+ \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\
+ abbr. & 13. Dez. 2019, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule
+ \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\
+ abbr. & 13.12.19, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule
+ \end{tabularx}
+
+
+ \subsection{German style (\texttt{de-DE})}
+ \begin{tabularx}{\textwidth}{>{\itshape}rX}
+ \toprule
+ \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\
+ abbr. & 13. Dez. 2019, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule
+ \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\
+ abbr. & 13.12.19, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule
+ \end{tabularx}
+
+
+ \subsection{Austrian style (\texttt{de-AT})}
+ \begin{tabularx}{\textwidth}{>{\itshape}rX}
+ \toprule
+ \upshape\textbf{Textual style} & 13. Dezember 2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13. Dezember 2019, 12:42:00 MEZ \\
+ abbr. & 13. Dez. 2019, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12:42:00 MEZ \\ \midrule
+ \upshape\textbf{Numeric style} & 13.12.2019, 12:42:00 MEZ \\
+ with \opt{showdow} option & Freitag, 13.12.2019, 12:42:00 MEZ \\
+ abbr. & 13.12.19, 12:42:00 MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13.12.19, 12:42:00 MEZ \\ \bottomrule
+ \end{tabularx}
+
+
+ \subsection{Swiss style (\texttt{de-CH})}
+ \begin{tabularx}{\textwidth}{>{\itshape}rX}
+ \toprule
+ \upshape\textbf{Textual style} & 13. Dezember 2019, 12.42.00 Uhr MEZ \\
+ with \opt{showdow} option & Freitag, 13. Dezember 2019, 12.42.00 Uhr MEZ \\
+ abbr. & 13. Dez. 2019, 12.42.00 Uhr MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13. Dez. 2019, 12.42.00 Uhr MEZ \\ \midrule
+ \upshape\textbf{Numeric style} & 13.12.2019, 12.42.00 Uhr MEZ \\
+ with \opt{showdow} option & Freitag, 13.12.2019, 12.42.00 Uhr MEZ \\
+ abbr. & 13.12.19, 12.42.00 Uhr MEZ \\
+ abbr., with \opt{showdow} option & Fr, 13.12.19, 12.42.00 Uhr MEZ \\ \bottomrule
+ \end{tabularx}
+
+
+
+
+
+ \StopEventually{%
+ \clearpage
+ \phantomsection
+ \addcontentsline{toc}{section}{Change History}%
+ \PrintChanges%
+ \addcontentsline{toc}{section}{\indexname}%
+ \PrintIndex%
+ }
+
+
+
+
+
+ \clearpage
+ \part{The Code}
+ % TODO: Load code modules
+
+ \section{The Base Module}
+ The "german-base" module provides code common to all regional variations and engine-dependent code, e.\,g. commands printing weekday and month names.
+
+ \DocInput{datetime2-german-base.dtx}
+ \DocInput{datetime2-german-base-ascii.dtx}
+ \DocInput{datetime2-german-base-utf8.dtx}
+
+
+ \section{Regionless Style: \texttt{datetime2-german.ldf}}
+ \DocInput{datetime2-german.dtx}
+
+ \section{Regional Variations}
+ \DocInput{datetime2-de-DE.dtx}
+ \DocInput{datetime2-de-AT.dtx}
+ \DocInput{datetime2-de-CH.dtx}
+
+ \Finale
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf
new file mode 100644
index 0000000000..2f0c7a9b55
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
index f992035f59..886cbb60c6 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
@@ -16,842 +16,35 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%</package>
-%\fi
-% \iffalse
+%
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2015 Nicola Talbot, all rights reserved.
-% Copyright (C) 2017 Sebastian Friedl, all rights reserved.
+% Copyright (C) 2017-19 Sebastian Friedl, all rights reserved.
% \fi
-% \iffalse
-%<*driver>
-\documentclass{ltxdoc}
-
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-
-\usepackage{alltt}
-\usepackage{csquotes}
-\usepackage{graphicx}
-\usepackage{hologo}
-\usepackage{multicol}
-\usepackage[bookmarks,
- hyperindex=false,
- pdfauthor={Nicola L.C. Talbot, Sebastian Friedl},
- pdftitle={datetime2.sty German Module}]{hyperref}
-\usepackage{verbatim}
-
-\usepackage[p,space]{erewhon}
-\usepackage{sourcesanspro}
-\usepackage{inconsolata}
-\usepackage[utopia,vvarbb]{newtxmath}
-
-\usepackage[left=4.50cm,right=2.75cm,top=3.25cm,bottom=2.75cm,nohead]{geometry}
-
-\parindent0pt
-
-\CheckSum{1085}
-
-\renewcommand*{\usage}[1]{\hyperpage{#1}}
-\renewcommand*{\main}[1]{\hyperpage{#1}}
-\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
-\setcounter{IndexColumns}{2}
-
-\newcommand*{\sty}[1]{\textsf{#1}}
-\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
-
-\RecordChanges
-\PageIndex
-\CodelineNumbered
-
-\begin{document}
-\DocInput{datetime2-german.dtx}
-\end{document}
-%</driver>
-%\fi
-%
-%\MakeShortVerb{"}
-%
-%\title{German Module for the \sty{datetime2} Package \\ {\large\url{https://github.com/SFr682k/datetime2-german}}}
-%\author{\begin{tabular}{cp{.05\textwidth}c} Nicola L. C. Talbot && Sebastian Friedl \\ (inactive) && {\normalsize\href{mailto:sfr682k@t-online.de}{\texttt{sfr682k@t-online.de}}} \end{tabular}}
-%\date{2017-11-13 (v2.1)}
-%\maketitle
-%
-%
-%\begin{abstract}
-% This is the German language module for the \sty{datetime2}
-% package. If you want to use the settings in this module you must
-% install it in addition to installing \sty{datetime2}. If you use
-% \sty{babel} or \sty{polyglossia}, you will need this module to
-% prevent them from redefining \cs{today}. The \sty{datetime2}
-% \opt{useregional} setting must be set to "text" or "numeric"
-% for the language styles to be set.
-% Alternatively, you can set the style in the document using
-% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
-% depending on the value of the \opt{useregional} setting.
-%\end{abstract}
-%
-%
-%
-% Currently there is a regionless style as well as variant styles ("de-DE", "de-AT" and "de-CH"). \\[\smallskipamount]
-% I'm only capable of German standard German. If I messed up anything in regards to format and/or spelling, or even a variant style with differences to the existing ones is missing, please create a feature request on GitHub or send me an e--mail. \\
-% I would be very grateful, if some examples and/or a list of the weekdays' and months' spelling is/are also provided.
-%
-% \bigskip
-% Thanks to Jürgen Spitzmüller for his valuable advice while developing Version 2.0 of this module.
-%
-%
-% \clearpage
-% \tableofcontents
-% \clearpage
%
%
%
-% \section{Installation}
-% Extract the language definition files first:
-% \begin{enumerate}
-% \item
-% Run \LaTeX\ over the file \texttt{datetime2-german.ins}: \\
-% \verb|latex datetime2-german.ins|
-% %
-% \item
-% Move all \texttt{*.ldf} files to \texttt{TEXMF/tex/latex/datetime2-contrib/datetime2-german/}
-% \end{enumerate}
-% Then, you can compile the documentation yourself by executing \\[\smallskipamount]
-%\verb|pdflatex datetime2-german.dtx| \\
-%\verb|makeindex -s gind.ist datetime2-german.idx| \\
-%\verb|makeindex -s gglo.ist -o datetime2-german.gls datetime2-german.glo| \\
-%\verb|pdflatex datetime2-german.dtx| \\
-%\verb|pdflatex datetime2-german.dtx| \\[\medskipamount]
-% or just use the precompiled documentation shipped with the sorce files. \\
-% In both cases, copy the files \texttt{datetime2-german.pdf} and \texttt{README.md} to \\
-% \texttt{TEXMF/doc/latex/datetime2-contrib/datetime2-german/}
+% \changes{1.0}{2015-03-27}{Initial release}
+% \changes{3.0}{2019-12-13}{Load regionless style only when no regional variant is stated}
%
-%
-%
-% \clearpage
-% \part{The Documentation}
-% \section{Setting up \sty{datetime2} with a language module}
-% \subsection{Loading a language module}
-% \textit{There are three different ways to load the required language module. See the \sty{datetime2} documentation for further details}
+% This file contains the style used when German is requested without a known region.
%
% \medskip
-%
-% \textbf{Variant 1:} \\
-% Request the desired language module explicitly by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount]
-%\verb|\documentclass{article}| \\
-%\verb|\usepackage[german]{datetime2}| \\
-%\verb|\begin{document}| \\
-%\verb|\today| \\
-%\verb|\end{document}| \\[\medskipamount]
-%
-% \textbf{Variant 2:} \\
-% Load \sty{babel} and pass the "german", "austrian" or "swissgerman" option to the \verb|\documentclass| command (or to \sty{babel} directly). If you now pass the \opt{useregional} option to \sty{datetime2}, the language module suitable to the one specified with \sty{babel} is loaded: \\[\smallskipamount]
-%\verb|\documentclass[german]{article}| \\
-%\verb|\usepackage{babel}| \\
-%\verb|\usepackage[useregional]{datetime2}| \\
-%\verb|\begin{document}| \\
-%\verb|\today| \\
-%\verb|\end{document}| \\[\medskipamount]
-%
-% \textbf{Variant 3:} \\
-% When using \sty{polyglossia}, you should request the desired language module by passing the "german", "de-DE", "de-AT" or "de-CH" option to the \sty{datetime2} package: \\[\smallskipamount]
-%\verb|\documentclass{article}| \\
-%\verb|\usepackage{polyglossia}| \\
-%\verb|\setmainlanguage{german}| \\
-%\verb|\usepackage[german]{datetime2}| \\
-%\verb|\begin{document}| \\
-%\verb|\today| \\
-%\verb|\end{document}|
-%
-%
-% \subsection{Other features}
-% \subsubsection{Showing the weekday}
-% All language modules shipped with \sty{datetime2-german} support showing the weekday. \\
-% To enable this feature, pass the \opt{showdow} option to the \sty{datetime2} package. \\
-% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant.
-%
-% \subsubsection{Using abbreviated weekday and month names}
-% To enable abbreviated weekday and month names, use \verb|\DTMlangsetup[german]{abbr}|. \\
-% To disable them, use \verb|\DTMlangsetup[german]{abbr=false}|.
-%
-% \medskip
-% In both cases, replace "german" with the used variant style ("de-DE", "de-AT" or "de-CH"). \\
-% Please note, that this has no effect when using the "numeric" style of the "de-AT" variant.
-%
-%
-% \section{Style examples}
-% \subsection{Regionless style}
-% \begin{itemize}
-% \item Non--numeric style: \\
-% 3. Oktober 2017, 12:51:04 MESZ \\
-% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% %
-% \item Numeric style: \\
-% 03.10.2017, 12:51:04 MESZ \\
-% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% \end{itemize}
-%
-%
-% \subsection{German style (\texttt{de-DE})}
-% \begin{itemize}
-% \item Non--numeric style: \\
-% 3. Oktober 2017, 12:51:04 MESZ \\
-% 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 3. Okt. '17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% %
-% \item Numeric style: \\
-% 03.10.2017, 12:51:04 MESZ \\
-% 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 03.10.2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 03.10.17, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% \end{itemize}
-%
-%
-% \subsection{Austrian style (\texttt{de-AT})}
-% \begin{itemize}
-% \item Non--numeric style: \\
-% 3. Oktober 2017, 12:51:04 MESZ \\
-% 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 3. Oktober 2017, 12:51:04 MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 3. Okt. 2017, 12:51:04 MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% %
-% \item Numeric style: \\
-% 2017-10-03, 12:51:04 MESZ
-% \end{itemize}
-%
-%
-% \subsection{Swiss style (\texttt{de-CH})}
-% \begin{itemize}
-% \item Non--numeric style: \\
-% 3. Oktober 2017, 12.51.04 Uhr MESZ \\
-% 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 3. Oktober 2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 3. Okt. 2017, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% %
-% \item Numeric style: \\
-% 03.10.2017, 12.51.04 Uhr MESZ \\
-% 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version} \\
-% Dienstag, 03.10.2017, 12.51.04 Uhr MESZ \hfill \textit{with \opt{showdow} option} \\
-% Di, 03.10.17, 12.51.04 Uhr MESZ \hfill \textit{abbreviated version with \opt{showdow} option}
-% \end{itemize}
-%
-%
-%
-% \section{Further customization of styles}
-% There are a number of settings provided that can be used in \verb|\DTMlangsetup| to modify the date-time style. These are:
-% \begin{description}
-% \item["dowdaysep"]%
-% The separator between the day of week name and the day of month number.
-%
-% \item["daymonthsep"]%
-% The separator between the day and the month name
-%
-% \item["monthyearsep"]%
-% The separator between the month name and year
-%
-% \item["datesep"]%
-% The separator between the date numbers in the "numeric style"s
-%
-% \item["timesep"]%
-% The separator between hours, minutes and seconds
-%
-% \item["datetimesep"]%
-% The separator between the date and time for the full date-time format
-%
-% \item["timezonesep"]%
-% The separator between the time and zone for the full date-time format
-%
-% \item["abbr"]%
-% This is a boolean key. If "true", the month (and weekday name, if shown) is abbreviated.
-%
-% \item["mapzone"]%
-% This is a boolean key. If "true", the time zone mappings are applied.
-%
-% \item["showdayofmonth"]%
-% A boolean key that determines whether or not to show the day of the month
-%
-% \item["showyear"]%
-% A boolean key that determines whether or not to show the year
-%\end{description}
-%
-%
-% Although the keys listed here are \textit{defined} for all variant styles, it depends on \sty{datetime2}'s setup and the requested styles whether they're \textit{used}. \\
-% For more information about the \verb|\DTMlangsetup| command see the documentation of the main \sty{datetime2} package.
-%
-%
-% \section{License}
-% This material is subject to the \LaTeX\ Project Public License, Version 1.3c or later. \\
-% See the copyright headers of the single files for further details.
-%
-%
-%
-%\StopEventually{%
-%\clearpage
-%\phantomsection
-%\addcontentsline{toc}{section}{Change History}%
-%\PrintChanges
-%\addcontentsline{toc}{section}{\indexname}%
-%\PrintIndex}
-%\clearpage
-%\part{The Code}
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-german-utf8.ldf>
-% \end{macrocode}
-%\fi
-%\section{Basic German module}
-% This module defines the \enquote{basic} German style, which contains the necessary vocab for all German localizations. \\
-% The date and time format is based on the "de-DE" variant.
-%
-%\subsection{Weekday and month names (UTF-8)}
-%This file contains the settings that use UTF-8 characters. This
-%file is loaded if \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used. Please make sure
-%your text editor is set to UTF-8 if you want to view this code.
-%\changes{1.0}{2015-03-27}{Initial release}
-%
-% Identify module
-% \begin{macrocode}
-\ProvidesDateTimeModule{german-utf8}[2017/11/13 v2.1]
-% \end{macrocode}
-%\begin{macro}{\DTMgermanordinal}
-% \begin{macrocode}
-\newcommand*{\DTMgermanordinal}[1]{%
- \number#1
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanmonthname}
-% German month names.
-% \begin{macrocode}
-\newcommand*{\DTMgermanmonthname}[1]{%
- \ifcase#1
- \or
- Januar%
- \or
- Februar%
- \or
- März%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- August%
- \or
- September%
- \or
- Oktober%
- \or
- November%
- \or
- Dezember%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATmonthname}
-%\changes{2.0}{2017-10-03}{Austrian month names implemented}
-% Austrian German month names. Spot the difference :D
-% \begin{macrocode}
-\newcommand*{\DTMdeATmonthname}[1]{%
- \ifcase#1
- \or
- Jänner%
- \or
- Februar%
- \or
- März%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- August%
- \or
- September%
- \or
- Oktober%
- \or
- November%
- \or
- Dezember%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanshortmonthname}
-% Abbreviated German month names.
-%\changes{1.2}{2017-09-10}{Short month names implemented}
-%\changes{2.0}{2017-10-03}{Short month names fixed}
-% \begin{macrocode}
-\newcommand*{\DTMgermanshortmonthname}[1]{%
- \ifcase#1
- \or
- Jan.%
- \or
- Feb.%
- \or
- März%
- \or
- Apr.%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATshortmonthname}
-%\changes{2.0}{2017-10-03}{Austrian short month names implemented}
-% Abbreviated Austrian German month names.
-% \begin{macrocode}
-\newcommand*{\DTMdeATshortmonthname}[1]{%
- \ifcase#1
- \or
- Jän.%
- \or
- Feb.%
- \or
- März%
- \or
- Apr.%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHshortmonthname}
-% Abbreviated Swiss German month names.
-%\changes{2.0}{2017-10-03}{Swiss German short month names implemented}
-% \begin{macrocode}
-\newcommand*{\DTMdeCHshortmonthname}[1]{%
- \ifcase#1
- \or
- Jan.%
- \or
- Febr.%
- \or
- März%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanweekdayname}
-% Provides weekday names
-% \begin{macrocode}
-\newcommand*{\DTMgermanweekdayname}[1]{%
- \ifcase#1
- Montag%
- \or
- Dienstag%
- \or
- Mittwoch%
- \or
- Donnerstag%
- \or
- Freitag%
- \or
- Samstag%
- \or
- Sonntag%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanshortweekdayname}
-%Provides abbreviated weekday names
-%\changes{1.2}{2017-09-10}{Short weekday names implemented}
-%\changes{2.0}{2017-10-03}{Short weekday names fixed}
-% \begin{macrocode}
-\newcommand*{\DTMgermanshortweekdayname}[1]{%
- \ifcase#1
- Mo%
- \or
- Di%
- \or
- Mi%
- \or
- Do%
- \or
- Fr%
- \or
- Sa%
- \or
- So%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\iffalse
-% \begin{macrocode}
-%</datetime2-german-utf8.ldf>
-% \end{macrocode}
-%\fi
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-german-ascii.ldf>
-% \end{macrocode}
-%\fi
-%\subsection{Weekday and month names (ASCII)}
-%This file contains the settings that use \LaTeX\ commands for
-%non-ASCII characters. This should be input if neither \hologo{XeLaTeX} nor
-%\hologo{LuaLaTeX} are used. Even if the user has loaded \sty{inputenc} with
-%"utf8", this file should still be used not the
-%\texttt{datetime2-german-utf8.ldf} file as the non-ASCII
-%characters are made active in that situation and would need
-%protecting against expansion.
-%\changes{1.0}{2015-03-27}{Initial release}
-%
-% Identify module
-% \begin{macrocode}
-\ProvidesDateTimeModule{german-ascii}[2017/11/13 v2.1]
-% \end{macrocode}
-%
-%\begin{macro}{\DTMgermanordinal}
-% \begin{macrocode}
-\newcommand*{\DTMgermanordinal}[1]{%
- \number#1
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanmonthname}
-% German month names.
-% \begin{macrocode}
-\newcommand*{\DTMgermanmonthname}[1]{%
- \ifcase#1
- \or
- Januar%
- \or
- Februar%
- \or
- M\protect\"arz%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- August%
- \or
- September%
- \or
- Oktober%
- \or
- November%
- \or
- Dezember%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATmonthname}
-%\changes{2.0}{2017-10-03}{Austrian month names implemented}
-% Austrian German month names.
-% \begin{macrocode}
-\newcommand*{\DTMdeATmonthname}[1]{%
- \ifcase#1
- \or
- J\protect\"anner%
- \or
- Februar%
- \or
- M\protect\"arz%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- August%
- \or
- September%
- \or
- Oktober%
- \or
- November%
- \or
- Dezember%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanshortmonthname}
-% Abbreviated German month names.
-%\changes{1.2}{2017-09-10}{Short month names implemented}
-%\changes{2.0}{2017-10-03}{Short month names fixed}
-% \begin{macrocode}
-\newcommand*{\DTMgermanshortmonthname}[1]{%
- \ifcase#1
- \or
- Jan.%
- \or
- Feb.%
- \or
- M\protect\"arz%
- \or
- Apr.%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATshortmonthname}
-%\changes{2.0}{2017-10-03}{Austrian short month names implemented}
-% Abbreviated Austrian German month names.
-% \begin{macrocode}
-\newcommand*{\DTMdeATshortmonthname}[1]{%
- \ifcase#1
- \or
- J\protect\"an.%
- \or
- Feb.%
- \or
- M\protect\"arz%
- \or
- Apr.%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHshortmonthname}
-% Abbreviated Swiss German month names.
-%\changes{2.0}{2017-10-03}{Swiss German short month names implemented}
-% \begin{macrocode}
-\newcommand*{\DTMdeCHshortmonthname}[1]{%
- \ifcase#1
- \or
- Jan.%
- \or
- Febr.%
- \or
- M\protect\"arz%
- \or
- April%
- \or
- Mai%
- \or
- Juni%
- \or
- Juli%
- \or
- Aug.%
- \or
- Sept.%
- \or
- Okt.%
- \or
- Nov.%
- \or
- Dez.%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanweekdayname}
-%Provides weekday names
-% \begin{macrocode}
-\newcommand*{\DTMgermanweekdayname}[1]{%
- \ifcase#1
- Montag%
- \or
- Dienstag%
- \or
- Mittwoch%
- \or
- Donnerstag%
- \or
- Freitag%
- \or
- Samstag%
- \or
- Sonntag%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMgermanshortweekdayname}
-%Provides abbreviated weekday names
-%\changes{1.2}{2017-09-10}{Short weekday names implemented}
-%\changes{2.0}{2017-10-03}{Short weekday names fixed}
-% \begin{macrocode}
-\newcommand*{\DTMgermanshortweekdayname}[1]{%
- \ifcase#1
- Mo%
- \or
- Di%
- \or
- Mi%
- \or
- Do%
- \or
- Fr%
- \or
- Sa%
- \or
- So%
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%
-%\iffalse
-% \begin{macrocode}
-%</datetime2-german-ascii.ldf>
-% \end{macrocode}
-%\fi
-%
-%\subsection{Basic German Module (\texttt{datetime2-german.ldf})}
-%\changes{1.0}{2015-03-27}{Initial release}
-%
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-german.ldf>
-% \end{macrocode}
-%\fi
-%
-% Identify Module
-% \begin{macrocode}
-\ProvidesDateTimeModule{german}[2017/11/13 v2.1]
-% \end{macrocode}
-% Need to find out if \hologo{XeTeX} or \hologo{LuaTeX} are being used.
+% Identify Module.
% \begin{macrocode}
-\RequirePackage{ifxetex,ifluatex}
+\ProvidesDateTimeModule{german}[2019/12/13 v3.0]
% \end{macrocode}
-% \hologo{XeTeX} and \hologo{LuaTeX} natively support UTF-8, so load
-% \texttt{german-utf8} if either of those engines are used
-% otherwise load \texttt{german-ascii}.
+% Require the base German module
% \begin{macrocode}
-\ifxetex
- \RequireDateTimeModule{german-utf8}
-\else
- \ifluatex
- \RequireDateTimeModule{german-utf8}
- \else
- \RequireDateTimeModule{german-ascii}
- \fi
-\fi
+\RequireDateTimeModule{german-base}
% \end{macrocode}
%
-% Define the \texttt{german} style.
-%
-% Allow the user a way of configuring the "german" and
-% "german-numeric" styles. This doesn't use the package wide
-% separators such as
-% \cs{dtm@datetimesep} in case other date formats are also required.
+% Allow the user to configure the "german" and "german-numeric" styles.
+% The package wide separators such as \cs{dtm@datetimesep} are not used
+% in case other date formats are also required.
%
%\begin{macro}{\DTMgermandowdaysep}
-% The separator between weekday and day
+% The separator between weekday and day.
% \begin{macrocode}
\newcommand*{\DTMgermandowdaysep}{,\space}
% \end{macrocode}
@@ -901,8 +94,7 @@
% \end{macrocode}
%\end{macro}
%
-%Provide keys that can be used in \cs{DTMlangsetup} to set these
-%separators.
+% Provide keys that can be used in \cs{DTMlangsetup} to set these separators.
% \begin{macrocode}
\DTMdefkey{german}{dowdaysep}{\renewcommand*{\DTMgermandowdaysep}{#1}}
\DTMdefkey{german}{daymonthsep}{\renewcommand*{\DTMgermandaymonthsep}{#1}}
@@ -915,12 +107,12 @@
%
%
% Define a boolean key that can switch between full and abbreviated formats for
-% the month and day of week names in the text format.
+% the month and day of week names.
% \begin{macrocode}
\DTMdefboolkey{german}{abbr}[true]{}
% \end{macrocode}
%
-% The default is full name
+% The default is to show the full names.
% \begin{macrocode}
\DTMsetbool{german}{abbr}{false}
% \end{macrocode}
@@ -955,12 +147,12 @@
\DTMsetbool{german}{showyear}{true}
% \end{macrocode}
%
-% Define the "german" style.
-%\changes{1.1}{2017-03-09}{fixed bug in \cs{DTMDisplaydate}}
-%\changes{1.2}{2017-09-10}{Short month names implemented}
-%\changes{1.2}{2017-09-10}{Short weekday names implemented}
-%\changes{1.2}{2017-09-10}{Day of week implemented}
-%\changes{2.1}{2017-11-13}{Fixed strange spacing when switching languages}
+% Define the (regionless) "german" style.
+%\changes{1.1}{2017-03-09}{Fixed bug in \cs{DTMDisplaydate}}
+%\changes{1.2}{2017-09-10}{Implemented short month names}
+%\changes{1.2}{2017-09-10}{Implemented short weekday names}
+%\changes{1.2}{2017-09-10}{Implemented day of week}
+%\changes{2.1}{2017-11-13}{Fixed spurious space when switching languages}
% \begin{macrocode}
\DTMnewstyle
{german}% label
@@ -986,9 +178,7 @@
\DTMifbool{german}{showyear}%
{%
\DTMgermanmonthyearsep%
- \DTMifbool{german}{abbr}%
- {'\DTMtwodigits{##1}}%
- {\number##1 }% space intended
+ \number##1 % space intended
}%
{}%
}%
@@ -1013,9 +203,7 @@
\DTMifbool{german}{showyear}%
{%
\DTMgermanmonthyearsep%
- \DTMifbool{german}{abbr}%
- {'\DTMtwodigits{##1}}%
- {\number##1 }% space intended
+ \number##1 % space intended
}%
{}%
}%
@@ -1065,9 +253,9 @@
}%
% \end{macrocode}
%
-% Define numeric style.
-%\changes{1.2}{2017-09-10}{Day of week implemented}
-%\changes{2.0}{2017-10-03}{Bugfix: month-year-separator}
+% Define the corresponding numeric style.
+%\changes{1.2}{2017-09-10}{Implemented day of week}
+%\changes{2.0}{2017-10-03}{Fixed month-year-separator}
% \begin{macrocode}
\DTMnewstyle
{german-numeric}% label
@@ -1135,20 +323,7 @@
}
% \end{macrocode}
%
-%\begin{macro}{\DTMgermanzonemaps}
-% The time zone mappings are set through this command, which can be
-% redefined if extra mappings are required or mappings need to be
-% removed.
-%\changes{1.2}{2017-09-10}{German time zone names (ME[S]Z)}
-% \begin{macrocode}
-\newcommand*{\DTMgermanzonemaps}{%
- \DTMdefzonemap{01}{00}{MEZ}%
- \DTMdefzonemap{02}{00}{MESZ}%
-}
-% \end{macrocode}
-%\end{macro}
-
-% Switch style according to the \opt{useregional} setting.
+% Switch the style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional
{}% do nothing
@@ -1183,1060 +358,5 @@
}%
}%
% \end{macrocode}
-%\iffalse
-% \begin{macrocode}
-%</datetime2-german.ldf>
-% \end{macrocode}
-%\fi
-%
-%
-%
-%
-%
-%
-%
-%
-%
-%
-% \section{German localization (\texttt{de-DE}, \texttt{datetime2-de-DE.ldf})}
-%\changes{2.0}{2017-10-03}{German localization added}
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-de-DE.ldf>
-% \end{macrocode}
-%\fi
-% Identify Module
-% \begin{macrocode}
-\ProvidesDateTimeModule{de-DE}[2017/11/13 v2.1]
-% \end{macrocode}
-% Require the basic German module
-% \begin{macrocode}
-\RequireDateTimeModule{german}
-% \end{macrocode}
-%
-%
-% Allow the user a way of configuring the "de-DE" and
-% "de-DE-numeric" styles. This doesn't use the package wide
-% separators such as
-% \cs{dtm@datetimesep} in case other date formats are also required.
-%
-%\begin{macro}{\DTMdeDEdowdaysep}
-% The separator between weekday and day
-% \begin{macrocode}
-\newcommand*{\DTMdeDEdowdaysep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEdaymonthsep}
-% The separator between the day and month for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeDEdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEmonthyearsep}
-% The separator between the month and year for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeDEmonthyearsep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEdatetimesep}
-% The separator between the date and time blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeDEdatetimesep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEtimezonesep}
-% The separator between the time and zone blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeDEtimezonesep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEdatesep}
-% The separator for the numeric date format.
-% \begin{macrocode}
-\newcommand*{\DTMdeDEdatesep}{.}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeDEtimesep}
-% The separator for the numeric time format.
-% \begin{macrocode}
-\newcommand*{\DTMdeDEtimesep}{:}
-% \end{macrocode}
-%\end{macro}
-%
-% Provide keys that can be used in \cs{DTMlangsetup} to set these
-% separators.
-% \begin{macrocode}
-\DTMdefkey{de-DE}{dowdaysep}{\renewcommand*{\DTMdeDEdowdaysep}{#1}}
-\DTMdefkey{de-DE}{daymonthsep}{\renewcommand*{\DTMdeDEdaymonthsep}{#1}}
-\DTMdefkey{de-DE}{monthyearsep}{\renewcommand*{\DTMdeDEmonthyearsep}{#1}}
-\DTMdefkey{de-DE}{datetimesep}{\renewcommand*{\DTMdeDEdatetimesep}{#1}}
-\DTMdefkey{de-DE}{timezonesep}{\renewcommand*{\DTMdeDEtimezonesep}{#1}}
-\DTMdefkey{de-DE}{datesep}{\renewcommand*{\DTMdeDEdatesep}{#1}}
-\DTMdefkey{de-DE}{timesep}{\renewcommand*{\DTMdeDEtimesep}{#1}}
-% \end{macrocode}
-%
-%
-% Define a boolean key that can switch between full and abbreviated formats for
-% the month and day of week names in the text format.
-% \begin{macrocode}
-\DTMdefboolkey{de-DE}{abbr}[true]{}
-% \end{macrocode}
-%
-% The default is full name
-% \begin{macrocode}
-\DTMsetbool{de-DE}{abbr}{false}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the time zone mappings
-% should be used.
-% \begin{macrocode}
-\DTMdefboolkey{de-DE}{mapzone}[true]{}
-% \end{macrocode}
-% The default is to use mappings.
-% \begin{macrocode}
-\DTMsetbool{de-DE}{mapzone}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the day of month should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-DE}{showdayofmonth}[true]{}
-% \end{macrocode}
-% The default is to show the day of month.
-% \begin{macrocode}
-\DTMsetbool{de-DE}{showdayofmonth}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the year should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-DE}{showyear}[true]{}
-% \end{macrocode}
-% The default is to show the year.
-% \begin{macrocode}
-\DTMsetbool{de-DE}{showyear}{true}
-% \end{macrocode}
-%
-%
-% Define the "de-DE" style
-% \begin{macrocode}
-\DTMnewstyle
-{de-DE}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-DE}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeDEdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-DE}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
- {}%
- %
- \DTMifbool{de-DE}{abbr}%
- {\DTMgermanshortmonthname{##2}}%
- {\DTMgermanmonthname{##2}}%
- %
- \DTMifbool{de-DE}{showyear}%
- {%
- \DTMdeDEmonthyearsep%
- \DTMifbool{de-DE}{abbr}%
- {'\DTMtwodigits{##1}}%
- {\number##1 }% space intended
- }%
- {}%
- }%
- \renewcommand*\DTMDisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-DE}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeDEdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-DE}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeDEdaymonthsep}%
- {}%
- %
- \DTMifbool{de-DE}{abbr}%
- {\DTMgermanshortmonthname{##2}}%
- {\DTMgermanmonthname{##2}}%
- %
- \DTMifbool{de-DE}{showyear}%
- {%
- \DTMdeDEmonthyearsep%
- \DTMifbool{de-DE}{abbr}%
- {'\DTMtwodigits{##1}}%
- {\number##1 }% space intended
- }%
- {}%
- }
-}%
-{% time style (use default)
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeDEtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-DE}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMdeDEtimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeDEdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeDEtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}[9]{%
- \ifDTMshowdate
- \DTMDisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeDEdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeDEtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
-}%
-% \end{macrocode}
-%
-% Define numeric style.
-% \begin{macrocode}
-\DTMnewstyle
-{de-DE-numeric}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-DE}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeDEdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-DE}{showdayofmonth}%
- {%
- \DTMtwodigits{##3}%
- \DTMdeDEdatesep
- }%
- {}%
- \DTMtwodigits{##2}%
- \DTMdeDEdatesep%
- \DTMifbool{de-DE}{showyear}%
- {%
- \DTMifbool{de-DE}{abbr}%
- {\DTMtwodigits{##1}}%
- {\number##1 }% space intended
- }%
- {}%
- }%
- \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
-}%
-{% time style
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeDEtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeDEtimesep\DTMtwodigits{##3}\fi
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-DE}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeDEdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeDEtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}{\DTMdisplay}%
-}
-% \end{macrocode}
-%
-% Switch style according to the \opt{useregional} setting.
-% \begin{macrocode}
-\DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{de-DE}}
- {\DTMsetstyle{de-DE-numeric}}
-% \end{macrocode}
-%
-% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
-% \sty{babel} from resetting \cs{today}. (For this to work,
-% \sty{babel} must already have been loaded if it's required.)
-% \begin{macrocode}
-\ifcsundef{date\CurrentTrackedDialect}
-{%
- \ifundef\dategerman
- {% do nothing
- }%
- {%
- \def\dategerman{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{german}}%
- {\DTMsetstyle{german-numeric}}%
- }%
- }%
-}%
-{%
- \csdef{date\CurrentTrackedDialect}{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{de-DE}}%
- {\DTMsetstyle{de-DE-numeric}}
- }%
-}%
-% \end{macrocode}
-%
-%\iffalse
-% \begin{macrocode}
-%</datetime2-de-DE.ldf>
-% \end{macrocode}
-%\fi
-%
-%
-%
-%
-%
-%
-%
-%
-%
-%
-% \section{Austrian German localization (\texttt{de-AT}, \texttt{datetime2-de-AT.ldf})}
-%\changes{2.0}{2017-10-03}{Austrian German localization added}
-%
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-de-AT.ldf>
-% \end{macrocode}
-%\fi
-% Identify Module
-% \begin{macrocode}
-\ProvidesDateTimeModule{de-AT}[2017/11/13 v2.1]
-% \end{macrocode}
-% Require the basic German module
-% \begin{macrocode}
-\RequireDateTimeModule{german}
-% \end{macrocode}
-%
-%
-% Allow the user a way of configuring the "de-AT" and
-% "de-AT-numeric" styles. This doesn't use the package wide
-% separators such as
-% \cs{dtm@datetimesep} in case other date formats are also required.
-%
-%\begin{macro}{\DTMdeATdowdaysep}
-% The separator between weekday and day
-% \begin{macrocode}
-\newcommand*{\DTMdeATdowdaysep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATdaymonthsep}
-% The separator between the day and month for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeATdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATmonthyearsep}
-% The separator between the month and year for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeATmonthyearsep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATdatetimesep}
-% The separator between the date and time blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeATdatetimesep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATtimezonesep}
-% The separator between the time and zone blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeATtimezonesep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATdatesep}
-% The separator for the numeric date format.
-% \begin{macrocode}
-\newcommand*{\DTMdeATdatesep}{-}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeATtimesep}
-% The separator for the numeric time format.
-% \begin{macrocode}
-\newcommand*{\DTMdeATtimesep}{:}
-% \end{macrocode}
-%\end{macro}
-%
-% Provide keys that can be used in \cs{DTMlangsetup} to set these
-% separators.
-% \begin{macrocode}
-\DTMdefkey{de-AT}{dowdaysep}{\renewcommand*{\DTMdeATdowdaysep}{#1}}
-\DTMdefkey{de-AT}{daymonthsep}{\renewcommand*{\DTMdeATdaymonthsep}{#1}}
-\DTMdefkey{de-AT}{monthyearsep}{\renewcommand*{\DTMdeATmonthyearsep}{#1}}
-\DTMdefkey{de-AT}{datetimesep}{\renewcommand*{\DTMdeATdatetimesep}{#1}}
-\DTMdefkey{de-AT}{timezonesep}{\renewcommand*{\DTMdeATtimezonesep}{#1}}
-\DTMdefkey{de-AT}{datesep}{\renewcommand*{\DTMdeATdatesep}{#1}}
-\DTMdefkey{de-AT}{timesep}{\renewcommand*{\DTMdeATtimesep}{#1}}
-% \end{macrocode}
-%
-%
-% Define a boolean key that can switch between full and abbreviated formats for
-% the month and day of week names in the text format.
-% \begin{macrocode}
-\DTMdefboolkey{de-AT}{abbr}[true]{}
-% \end{macrocode}
-%
-% The default is full name
-% \begin{macrocode}
-\DTMsetbool{de-AT}{abbr}{false}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the time zone mappings
-% should be used.
-% \begin{macrocode}
-\DTMdefboolkey{de-AT}{mapzone}[true]{}
-% \end{macrocode}
-% The default is to use mappings.
-% \begin{macrocode}
-\DTMsetbool{de-AT}{mapzone}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the day of month should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-AT}{showdayofmonth}[true]{}
-% \end{macrocode}
-% The default is to show the day of month.
-% \begin{macrocode}
-\DTMsetbool{de-AT}{showdayofmonth}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the year should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-AT}{showyear}[true]{}
-% \end{macrocode}
-% The default is to show the year.
-% \begin{macrocode}
-\DTMsetbool{de-AT}{showyear}{true}
-% \end{macrocode}
-%
-%
-% Define the "de-AT" style
-% \begin{macrocode}
-\DTMnewstyle
-{de-AT}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-AT}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeATdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-AT}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
- {}%
- %
- \DTMifbool{de-AT}{abbr}%
- {\DTMdeATshortmonthname{##2}}%
- {\DTMdeATmonthname{##2}}%
- %
- \DTMifbool{de-AT}{showyear}%
- {%
- \DTMdeATmonthyearsep%
- \number##1 % space intended
- }%
- {}%
- }%
- \renewcommand*\DTMDisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-AT}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeATdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-AT}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeATdaymonthsep}%
- {}%
- %
- \DTMifbool{de-AT}{abbr}%
- {\DTMdeATshortmonthname{##2}}%
- {\DTMdeATmonthname{##2}}%
- %
- \DTMifbool{de-AT}{showyear}%
- {%
- \DTMdeATmonthyearsep%
- \number##1 % space intended
- }%
- {}%
- }%
-}%
-{% time style (use default)
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeATtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-AT}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMdeATtimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeATdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeATtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}[9]{%
- \ifDTMshowdate
- \DTMDisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeATdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeATtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
-}%
-% \end{macrocode}
-%
-% Define numeric style.
-% \begin{macrocode}
-\DTMnewstyle
-{de-AT-numeric}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \DTMifbool{de-AT}{showyear}%
- {%
- \number##1 % space intended
- \DTMdeATdatesep%
- }%
- {}%
- %
- \DTMtwodigits{##2}%
- %
- \DTMifbool{de-AT}{showdayofmonth}%
- {%
- \DTMdeATdatesep%
- \DTMtwodigits{##3}%
- }%
- {}%
- }%
- \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
-}%
-{% time style
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeATtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeATtimesep\DTMtwodigits{##3}\fi
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-AT}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeATdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeATtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}{\DTMdisplay}%
-}
-% \end{macrocode}
-%
-% Switch style according to the \opt{useregional} setting.
-% \begin{macrocode}
-\DTMifcaseregional
-{}% do nothing
-{\DTMsetstyle{de-AT}}%
-{\DTMsetstyle{de-AT-numeric}}%
-% \end{macrocode}
-%
-% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
-% \sty{babel} from resetting \cs{today}. (For this to work,
-% \sty{babel} must already have been loaded if it's required.)
-% \begin{macrocode}
-\ifcsundef{date\CurrentTrackedDialect}
-{%
- \ifundef\dategerman
- {% do nothing
- }%
- {%
- \def\dategerman{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{german}}%
- {\DTMsetstyle{german-numeric}}%
- }%
- }%
-}%
-{%
- \csdef{date\CurrentTrackedDialect}{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{de-AT}}%
- {\DTMsetstyle{de-AT-numeric}}%
- }%
-}%
-% \end{macrocode}
-%
-%\iffalse
-% \begin{macrocode}
-%</datetime2-de-AT.ldf>
-% \end{macrocode}
-%\fi
-%
-%
-%
-%
-%
-%
-%
-%
-%
-%
-% \section{Swiss German localization (\texttt{de-CH}, \texttt{datetime2-de-CH.ldf})}
-%\changes{2.0}{2017-10-03}{Swiss German localization added}
-%\iffalse
-% \begin{macrocode}
-%<*datetime2-de-CH.ldf>
-% \end{macrocode}
-%\fi
-% Identify Module
-% \begin{macrocode}
-\ProvidesDateTimeModule{de-CH}[2017/11/13 v2.1]
-% \end{macrocode}
-% Require the basic German module
-% \begin{macrocode}
-\RequireDateTimeModule{german}
-% \end{macrocode}
-%
-%
-% Allow the user a way of configuring the "de-CH" and
-% "de-CH-numeric" styles. This doesn't use the package wide
-% separators such as
-% \cs{dtm@datetimesep} in case other date formats are also required.
-%
-%\begin{macro}{\DTMdeCHdowdaysep}
-% The separator between weekday and day
-% \begin{macrocode}
-\newcommand*{\DTMdeCHdowdaysep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHdaymonthsep}
-% The separator between the day and month for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeCHdaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHmonthyearsep}
-% The separator between the month and year for the text format.
-% \begin{macrocode}
-\newcommand*{\DTMdeCHmonthyearsep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHdatetimesep}
-% The separator between the date and time blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeCHdatetimesep}{,\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHtimezonesep}
-% The separator between the time and zone blocks in the full format
-% (either text or numeric).
-% \begin{macrocode}
-\newcommand*{\DTMdeCHtimezonesep}{\space}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHdatesep}
-% The separator for the numeric date format.
-% \begin{macrocode}
-\newcommand*{\DTMdeCHdatesep}{.}
-% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\DTMdeCHtimesep}
-% The separator for the numeric time format.
-% \begin{macrocode}
-\newcommand*{\DTMdeCHtimesep}{.}
-% \end{macrocode}
-%\end{macro}
-%
-% Provide keys that can be used in \cs{DTMlangsetup} to set these
-% separators.
-% \begin{macrocode}
-\DTMdefkey{de-CH}{dowdaysep}{\renewcommand*{\DTMdeCHdowdaysep}{#1}}
-\DTMdefkey{de-CH}{daymonthsep}{\renewcommand*{\DTMdeCHdaymonthsep}{#1}}
-\DTMdefkey{de-CH}{monthyearsep}{\renewcommand*{\DTMdeCHmonthyearsep}{#1}}
-\DTMdefkey{de-CH}{datetimesep}{\renewcommand*{\DTMdeCHdatetimesep}{#1}}
-\DTMdefkey{de-CH}{timezonesep}{\renewcommand*{\DTMdeCHtimezonesep}{#1}}
-\DTMdefkey{de-CH}{datesep}{\renewcommand*{\DTMdeCHdatesep}{#1}}
-\DTMdefkey{de-CH}{timesep}{\renewcommand*{\DTMdeCHtimesep}{#1}}
-% \end{macrocode}
-%
-%
-% Define a boolean key that can switch between full and abbreviated formats for
-% the month and day of week names in the text format.
-% \begin{macrocode}
-\DTMdefboolkey{de-CH}{abbr}[true]{}
-% \end{macrocode}
-%
-% The default is full name
-% \begin{macrocode}
-\DTMsetbool{de-CH}{abbr}{false}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the time zone mappings
-% should be used.
-% \begin{macrocode}
-\DTMdefboolkey{de-CH}{mapzone}[true]{}
-% \end{macrocode}
-% The default is to use mappings.
-% \begin{macrocode}
-\DTMsetbool{de-CH}{mapzone}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the day of month should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-CH}{showdayofmonth}[true]{}
-% \end{macrocode}
-% The default is to show the day of month.
-% \begin{macrocode}
-\DTMsetbool{de-CH}{showdayofmonth}{true}
-% \end{macrocode}
-%
-% Define a boolean key that determines if the year should be
-% displayed.
-% \begin{macrocode}
-\DTMdefboolkey{de-CH}{showyear}[true]{}
-% \end{macrocode}
-% The default is to show the year.
-% \begin{macrocode}
-\DTMsetbool{de-CH}{showyear}{true}
-% \end{macrocode}
-%
-%
-% Define the "de-CH" style
-% \begin{macrocode}
-\DTMnewstyle
-{de-CH}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-CH}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeCHdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-CH}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
- {}%
- %
- \DTMifbool{de-CH}{abbr}%
- {\DTMdeCHshortmonthname{##2}}%
- {\DTMgermanmonthname{##2}}%
- %
- \DTMifbool{de-CH}{showyear}%
- {%
- \DTMdeCHmonthyearsep%
- \number##1 % space intended
- }%
- {}%
- }%
- \renewcommand*\DTMDisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-CH}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeCHdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-CH}{showdayofmonth}%
- {\DTMgermanordinal{##3}\DTMdeCHdaymonthsep}%
- {}%
- %
- \DTMifbool{de-CH}{abbr}%
- {\DTMdeCHshortmonthname{##2}}%
- {\DTMgermanmonthname{##2}}%
- %
- \DTMifbool{de-CH}{showyear}%
- {%
- \DTMdeCHmonthyearsep%
- \number##1 % space intended
- }%
- {}%
- }
-}%
-{% time style (use default)
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeCHtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
- Uhr%
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-CH}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMdeCHtimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeCHdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeCHtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}[9]{%
- \ifDTMshowdate
- \DTMDisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeCHdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeCHtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
-}%
-% \end{macrocode}
-%
-% Define numeric style.
-% \begin{macrocode}
-\DTMnewstyle
-{de-CH-numeric}% label
-{% date style
- \renewcommand*\DTMdisplaydate[4]{%
- \ifDTMshowdow
- \ifnum##4>-1
- \DTMifbool{de-CH}{abbr}%
- {\DTMgermanshortweekdayname{##4}}%
- {\DTMgermanweekdayname{##4}}%
- \DTMdeCHdowdaysep
- \fi
- \fi
- %
- \DTMifbool{de-CH}{showdayofmonth}%
- {%
- \DTMtwodigits{##3}%
- \DTMdeCHdatesep
- }%
- {}%
- \DTMtwodigits{##2}%
- \DTMdeCHdatesep%
- \DTMifbool{de-CH}{showyear}%
- {%
- \number##1 % space intended
- }%
- {}%
- }%
- \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
-}%
-{% time style
- \renewcommand*\DTMdisplaytime[3]{%
- \DTMtwodigits{##1}%
- \DTMdeCHtimesep\DTMtwodigits{##2}%
- \ifDTMshowseconds\DTMdeCHtimesep\DTMtwodigits{##3}\fi\space%
- Uhr%
- }%
-}%
-{% zone style
- \DTMresetzones
- \DTMgermanzonemaps
- \renewcommand*{\DTMdisplayzone}[2]{%
- \DTMifbool{de-CH}{mapzone}%
- {\DTMusezonemapordefault{##1}{##2}}%
- {%
- \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
- \ifDTMshowzoneminutes\DTMgermantimesep\DTMtwodigits{##2}\fi
- }%
- }%
-}%
-{% full style
- \renewcommand*{\DTMdisplay}[9]{%
- \ifDTMshowdate
- \DTMdisplaydate{##1}{##2}{##3}{##4}%
- \DTMdeCHdatetimesep
- \fi
- \DTMdisplaytime{##5}{##6}{##7}%
- \ifDTMshowzone
- \DTMdeCHtimezonesep
- \DTMdisplayzone{##8}{##9}%
- \fi
- }%
- \renewcommand*{\DTMDisplay}{\DTMdisplay}%
-}
-% \end{macrocode}
-%
-% Switch style according to the \opt{useregional} setting.
-% \begin{macrocode}
-\DTMifcaseregional
-{}% do nothing
-{\DTMsetstyle{de-CH}}%
-{\DTMsetstyle{de-CH-numeric}}%
-% \end{macrocode}
-%
-% Redefine \cs{dategerman} (or \cs{date}\meta{dialect}) to prevent
-% \sty{babel} from resetting \cs{today}. (For this to work,
-% \sty{babel} must already have been loaded if it's required.)
-% \begin{macrocode}
-\ifcsundef{date\CurrentTrackedDialect}
-{%
- \ifundef\dategerman
- {% do nothing
- }%
- {%
- \def\dategerman{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{german}}%
- {\DTMsetstyle{german-numeric}}%
- }%
- }%
-}%
-{%
- \csdef{date\CurrentTrackedDialect}{%
- \DTMifcaseregional
- {}% do nothing
- {\DTMsetstyle{de-CH}}%
- {\DTMsetstyle{de-CH-numeric}}%
- }%
-}%
-% \end{macrocode}
-%
-%\iffalse
-% \begin{macrocode}
-%</datetime2-de-CH.ldf>
-% \end{macrocode}
-%\fi
-%
-%
-%
-%
-%
-%
-%
-%
-%
%
-%\Finale
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins
index 585dc37c7c..13b7a31769 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.ins
@@ -4,7 +4,7 @@
datetime2-german.dtx
Copyright 2015 Nicola Talbot
- Copyright 2017 Sebastian Friedl
+ Copyright 2017-19 Sebastian Friedl
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -17,38 +17,52 @@
This work has the LPPL maintenance status `maintained'.
Current maintainer of the work is Sebastian Friedl
- This work consists of the files datetime2-german.dtx and
- datetime2-german.ins and the derived files
- datetime2-german-utf8.ldf, datetime2-german-ascii.ldf,
- datetime2-german.ldf, datetime2-de-DE.ldf,
- datetime2-de-AT.ldf and datetime2-de-CH.ldf
-
+ This work consists of the files and the derived files:
+ - datetime2-german.ins, - datetime2-german-base.ldf,
+ - datetime2-german-base.dtx, - datetime2-german-base-ascii.ldf,
+ - datetime2-german-base-ascii.dtx, - datetime2-german-base-utf8.ldf,
+ - datetime2-german-base-utf8.dtx, - datetime2-german.ldf,
+ - datetime2-german.ldf, - datetime2-de-DE.ldf,
+ - datetime2-de-DE.ldf, - datetime2-de-AT.ldf and
+ - datetime2-de-AT.ldf, - datetime2-de-CH.ldf
+ - datetime2-de-CH.ldf and
+ - datetime2-german-doc.dtx
\endpreamble
\askforoverwritefalse
+\generate
+{%
+ \file
+ {datetime2-german-base.ldf}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-german-base.dtx}{datetime2-german-base.ldf,package}%
+ }%
+}
\generate
{%
\file
- {datetime2-german-utf8.ldf}%
+ {datetime2-german-base-utf8.ldf}%
{%
\usepreamble\defaultpreamble
\usepostamble\defaultpostamble
- \from{datetime2-german.dtx}{datetime2-german-utf8.ldf,package}%
+ \from{datetime2-german-base-utf8.dtx}{datetime2-german-base-utf8.ldf,package}%
}%
}
\generate
{%
\file
- {datetime2-german-ascii.ldf}%
+ {datetime2-german-base-ascii.ldf}%
{%
\usepreamble\defaultpreamble
\usepostamble\defaultpostamble
- \from{datetime2-german.dtx}{datetime2-german-ascii.ldf,package}%
+ \from{datetime2-german-base-ascii.dtx}{datetime2-german-base-ascii.ldf,package}%
}%
}
@@ -73,7 +87,7 @@
{%
\usepreamble\defaultpreamble
\usepostamble\defaultpostamble
- \from{datetime2-german.dtx}{datetime2-de-DE.ldf,package}%
+ \from{datetime2-de-DE.dtx}{datetime2-de-DE.ldf,package}%
}%
}
@@ -86,7 +100,7 @@
{%
\usepreamble\defaultpreamble
\usepostamble\defaultpostamble
- \from{datetime2-german.dtx}{datetime2-de-AT.ldf,package}%
+ \from{datetime2-de-AT.dtx}{datetime2-de-AT.ldf,package}%
}%
}
@@ -99,7 +113,7 @@
{%
\usepreamble\defaultpreamble
\usepostamble\defaultpostamble
- \from{datetime2-german.dtx}{datetime2-de-CH.ldf,package}%
+ \from{datetime2-de-CH.dtx}{datetime2-de-CH.ldf,package}%
}%
}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf
deleted file mode 100644
index 7bb0d2b49e..0000000000
--- a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.pdf
+++ /dev/null
Binary files differ