summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx')
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx2242
1 files changed, 2242 insertions, 0 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
new file mode 100644
index 0000000000..f992035f59
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-german/datetime2-german.dtx
@@ -0,0 +1,2242 @@
+%\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>
+%\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.
+% \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/}
+%
+%
+%
+% \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}
+%
+% \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.
+% \begin{macrocode}
+\RequirePackage{ifxetex,ifluatex}
+% \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}.
+% \begin{macrocode}
+\ifxetex
+ \RequireDateTimeModule{german-utf8}
+\else
+ \ifluatex
+ \RequireDateTimeModule{german-utf8}
+ \else
+ \RequireDateTimeModule{german-ascii}
+ \fi
+\fi
+% \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.
+%
+%\begin{macro}{\DTMgermandowdaysep}
+% The separator between weekday and day
+% \begin{macrocode}
+\newcommand*{\DTMgermandowdaysep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandaymonthsep}
+% The separator between the day and month for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgermandaymonthsep}{.\DTMtexorpdfstring{\protect~}{\space}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermanmonthyearsep}
+% The separator between the month and year for the text format.
+% \begin{macrocode}
+\newcommand*{\DTMgermanmonthyearsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandatetimesep}
+% The separator between the date and time blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgermandatetimesep}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermantimezonesep}
+% The separator between the time and zone blocks in the full format
+% (either text or numeric).
+% \begin{macrocode}
+\newcommand*{\DTMgermantimezonesep}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermandatesep}
+% The separator for the numeric date format.
+% \begin{macrocode}
+\newcommand*{\DTMgermandatesep}{.}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMgermantimesep}
+% The separator for the numeric time format.
+% \begin{macrocode}
+\newcommand*{\DTMgermantimesep}{:}
+% \end{macrocode}
+%\end{macro}
+%
+%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}}
+\DTMdefkey{german}{monthyearsep}{\renewcommand*{\DTMgermanmonthyearsep}{#1}}
+\DTMdefkey{german}{datetimesep}{\renewcommand*{\DTMgermandatetimesep}{#1}}
+\DTMdefkey{german}{timezonesep}{\renewcommand*{\DTMgermantimezonesep}{#1}}
+\DTMdefkey{german}{datesep}{\renewcommand*{\DTMgermandatesep}{#1}}
+\DTMdefkey{german}{timesep}{\renewcommand*{\DTMgermantimesep}{#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{german}{abbr}[true]{}
+% \end{macrocode}
+%
+% The default is full name
+% \begin{macrocode}
+\DTMsetbool{german}{abbr}{false}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the time zone mappings
+% should be used.
+% \begin{macrocode}
+\DTMdefboolkey{german}{mapzone}[true]{}
+% \end{macrocode}
+% The default is to use mappings.
+% \begin{macrocode}
+\DTMsetbool{german}{mapzone}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the day of month should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{german}{showdayofmonth}[true]{}
+% \end{macrocode}
+% The default is to show the day of month.
+% \begin{macrocode}
+\DTMsetbool{german}{showdayofmonth}{true}
+% \end{macrocode}
+%
+% Define a boolean key that determines if the year should be
+% displayed.
+% \begin{macrocode}
+\DTMdefboolkey{german}{showyear}[true]{}
+% \end{macrocode}
+% The default is to show the year.
+% \begin{macrocode}
+\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}
+% \begin{macrocode}
+\DTMnewstyle
+ {german}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMgermandaymonthsep}%
+ {}%
+ %
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMgermanmonthyearsep%
+ \DTMifbool{german}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {\DTMgermanordinal{##3}\DTMgermandaymonthsep}%
+ {}%
+ %
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortmonthname{##2}}%
+ {\DTMgermanmonthname{##2}}%
+ %
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMgermanmonthyearsep%
+ \DTMifbool{german}{abbr}%
+ {'\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ }%
+ {% time style (use default)
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMgermantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgermantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{german}{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}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}[9]{%
+ \ifDTMshowdate
+ \DTMDisplaydate{##1}{##2}{##3}{##4}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ }%
+% \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}
+% \begin{macrocode}
+\DTMnewstyle
+ {german-numeric}% label
+ {% date style
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMifbool{german}{abbr}%
+ {\DTMgermanshortweekdayname{##4}}%
+ {\DTMgermanweekdayname{##4}}%
+ \DTMgermandowdaysep
+ \fi
+ \fi
+ %
+ \DTMifbool{german}{showdayofmonth}%
+ {%
+ \DTMtwodigits{##3}%
+ \DTMgermandatesep
+ }%
+ {}%
+ \DTMtwodigits{##2}%
+ \DTMgermandatesep%
+ \DTMifbool{german}{showyear}%
+ {%
+ \DTMifbool{german}{abbr}%
+ {\DTMtwodigits{##1}}%
+ {\number##1 }% space intended
+ }%
+ {}%
+ }%
+ \renewcommand*{\DTMDisplaydate}[4]{\DTMdisplaydate{##1}{##2}{##3}{##4}}%
+ }%
+ {% time style
+ \renewcommand*\DTMdisplaytime[3]{%
+ \DTMtwodigits{##1}%
+ \DTMgermantimesep\DTMtwodigits{##2}%
+ \ifDTMshowseconds\DTMgermantimesep\DTMtwodigits{##3}\fi
+ }%
+ }%
+ {% zone style
+ \DTMresetzones
+ \DTMgermanzonemaps
+ \renewcommand*{\DTMdisplayzone}[2]{%
+ \DTMifbool{german}{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}%
+ \DTMgermandatetimesep
+ \fi
+ \DTMdisplaytime{##5}{##6}{##7}%
+ \ifDTMshowzone
+ \DTMgermantimezonesep
+ \DTMdisplayzone{##8}{##9}%
+ \fi
+ }%
+ \renewcommand*{\DTMDisplay}{\DTMdisplay}%
+ }
+% \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.
+% \begin{macrocode}
+\DTMifcaseregional
+{}% do nothing
+{\DTMsetstyle{german}}
+{\DTMsetstyle{german-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{german}}%
+ {\DTMsetstyle{german-numeric}}%
+ }%
+}%
+% \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