% \iffalse
% ======================================================================
% scrdate.dtx 
% Copyright © 1995–2026 Markus Kohm
%
% This work may be distributed and/or modified under the conditions of
% the LaTeX Project Public License, version 1.3c of the license.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX 
% version 2005/12/01 or later and of this work.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer and author of this work is Markus Kohm.
%
% This work consists of the files README.md, LICENSE.md and scrdate.dtx.
% ======================================================================
%<package>\NeedsTeXFormat{LaTeX2e}[2022/06/01]
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{scrdate.dtx}
%</dtx>
%<package>\ProvidesPackage{scrdate}
%<*dtx|package>
  [2026-06-08 v3.50 day of the week and other date functions]
%</dtx|package>
%<*dtx>
\ifx\documentclass\undefined
  \input docstrip.tex
  \generate{\usepreamble\defaultpreamble
    \file{scrdate.sty}{%
      \from{scrdate.dtx}{package}%
    } %
  }
\else
  \let\endbatchfile\relax
\fi
\endbatchfile
\documentclass[USenglish]{koma-script-source-doc}
\usepackage{babel}
\usepackage{engord}
\usepackage{scrdate}
\setcounter{StandardModuleDepth}{2}
\begin{document}
  \DocInput{scrdate.dtx}
\end{document}
%</dtx>
% \fi
%
% \changes{v3.36}{2022/02/07}{switch over from \cls*{scrdoc} to
%   \cls*{koma-script-source-doc}}
% \changes{v3.36}{2022/02/07}{require package \pkg*{scrlogo} instead of
%   defining \cs{KOMAScript}}
% \changes{v3.40}{2023/04/17}{guide names changed}
% \changes{v3.50}{2026-05-18}{spin-off}
%
% \GetFileInfo{scrdate.dtx}
% \title{The Name of the Day and other Date Operations with
%   Packages \pkg*{scrdate}}
% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
% \date{Version \fileversion{} of \filedate
%   \footnote{\ExpandArgs{e}\ISODayName{\filedate}.}}
% \maketitle
% \begin{abstract}
%   The package \pkg*{scrdate} defines some macros
%   to handle the name of the day and the date in ISO format.
%
%   Up to version 3.49.2 it was part of the \KOMAScript{} collection. Since
%   version 3.50 it is a standalone package.
% \end{abstract}
% \tableofcontents
%
% \section{User Manual}
%
% Originally, the \pkg*{scrdate} package  could only give the day of the
% week for the current date. Nowadays, it offers this and more for any date in
% the Gregorian calendar.
%
% \DescribeCommand\CenturyPart
% \DescribeCommand\DecadePart
% The command \cs{CenturyPart}\marg{year} returns the value of the century
% digits\,---\,thousands and hundreds\,---\,of a \meta{year}. The command
% \cs{DecadePart}\marg{year} command, on the other hand, gives the value of
% the remaining digits, i.\,e. the tens and the units. The \meta{year} can have
% any number of digits. You can assign the value directly to a counter or use it
% for calculations with \cs{numexpr}\dots\cs{relax} or \cs{inteval}. To
% output it as an Arabic number, you should prefix it with \cs{the}.
%
% \begin{labeling}{Example:}
% \item[Example:]
%   You want to calculate and print the century of the current year.
%\begin{verbatim}
%   The year \the\year\ is year \the\DecadePart{\year} of the
%   \engordnumber{\numexpr \CenturyPart{\year}+1\relax} century.
%\end{verbatim}
%   The result would be:
%   \begin{quote}
%     The year \the\year\ is year \the\DecadePart{\year} of the
%     \engordnumber{\inteval{\CenturyPart{\year}+1}} century.
%   \end{quote}
%   This example uses the \pkg{engord} package.
% \end{labeling}
%
% Note that the counting method used here treats the year 2000 as
% year~0\,---\,and therefore the first year\,---\,of the 21st~century.  If
% necessary, however, you can make a correction with \cs{numexpr} or
% \cs{inteval}, as shown for the ordinal number in the example.
%
% \DescribeCommand\DayNumber
% \DescribeCommand\ISODayNumber
% These two commands return the value of the day-of-the-week number for any
% date. They differ only in the method of specifying the date. While the
% \cs{DayNumber}\linebreak[1]\marg{year}\linebreak[1]\marg{month}\linebreak[1]\marg{day}
% command requires the \meta{year}, \meta{month}, and \meta{day} as separate
% parameters, the \cs{ISODayNumber}\marg{ISO date} command expects an
% \meta{ISO date} as a single argument, \meta{ISO date}, using the ISO notation
% \meta{year}\texttt{-}\meta{month}\texttt{-}\meta{day}. It does not matter if
% the \meta{month} or \meta{day} have one or two digits. You can use the
% result of both commands to assign directly to a counter or for calculations
% using \cs{numexpr}\dots\cs{relax} or \cs{inteval}. To print it as an Arabic
% number, you should prefix it with \cs{the}.
%
% \begin{labeling}{Example:}
% \item[Example:]
%   You want to know the number of the day of the week of the 1st~May~2027.
%\begin{verbatim}
%   The 1st~May~2027 has \the\ISODayNumber{2027-5-1}
%   as the number of the day of the week.
%\end{verbatim}
%   The result will be:
%   \begin{quote}
%     The 1st~May~2027 has \the\ISODayNumber{2027-5-1}
%     as the number of the day of the week.
%   \end{quote}
% \end{labeling}
% The days of the week are numbered as follows: Sunday\,=\,0, Monday\,=\,1,
% Tuesday\,=\,2, Wednesday\,=\,3, Thursday\,=\,4, Friday\,=\,5, and
% Saturday\,=\,6.
%
% \DescribeCommand\DayNameByNumber
% \DescribeCommand\DayName
% \DescribeCommand\ISODayName
% Usually you are less interested in the number of the day of the week than in
% its name. Therefore, the command \cs{DayNameByNumber}\marg{number of the day
% of the week} returns the name of the day of the week corresponding to a
% \meta{number of the day of the week}. This number can be the result, for
% example, of \cs{DayNumber} or \cs{ISODayNumber}. The two commands
% \cs{DayName}\marg{year}\marg{month}\marg{day} and \cs{ISODayName}\marg{ISO
% date} directly return the name of the day of the week of a given date.
%
% \begin{labeling}{Example:}
% \item[Example:] You want to know the name of the day of the week of the
%   24th~December~2027.
%\begin{verbatim}
%   Please pay by \ISODayName{2027-12-24},
%   24th~December~2027 the amount of \dots.
%\end{verbatim}
%   The result will be:
%   \begin{quote}
%     Please pay by \ISODayName{2027-12-24},
%     24th~December~2027 the amount of \dots.
%   \end{quote}
% \end{labeling}
%
% Once again, it is particularly worth noting that you can perform
% calculations, to a certain extent:
% \begin{labeling}{Example:}
% \item[Example:] You want to know the names of the day of the week 12~days
%   from now and 24~days before the 24th~December~2027.
%\begin{verbatim}
%   In 12~days, the name of the day of the week will be
%   \DayNameByNumber{\DayNumber{\year}{\month}{\day}+12}, and
%   24~days before the 24th~December~2027 it will be
%   \DayNameByNumber{\ISODayNumber{2027-12-24}-24}, while two
%   weeks and three days after a Wednesday will be a
%   \DayNameByNumber{3+2*7+3}.
%\end{verbatim}
%   The result could be, for example:
%   \begin{quote}
%     In 12~days, the name of the day of the week will be
%     \DayNameByNumber{\DayNumber{\year}{\month}{\day}+12}, and
%     24~days before the 24th~December~2027 it will be
%     \DayNameByNumber{\ISODayNumber{2027-12-24}-24}, while two
%     weeks and three days after a Wednesday will be a
%     \DayNameByNumber{3+2*7+3}.
%   \end{quote}
% \end{labeling}
%
% \DescribeCommand{\ISOToday}
% \DescribeCommand{\IsoToday}
% \DescribeCommand{\todaysname}
% \DescribeCommand{\todaysnumber}
% In the previous examples, the current date was always specified cumbersomely
% using the \TeX{} registers \cs{year}, \cs{month}, and \cs{day}. The
% \cs{ISOToday} and \cs{IsoToday} commands directly return the current date in
% ISO-notation. These commands differ only in the fact that \cs{ISOToday}
% always outputs a two-digit month and day, while \cs{IsoToday} outputs
% single-digit numbers for values less than 10. The \cs{todaysname} command
% directly returns the name of the current day of the week, while
% \cs{todaysnumber} returns the number of the current day of the week. You can
% find more information about using this value in the explanations of
% \cs{DayNumber} and \cs{ISODayNumber} above.
%
% \begin{labeling}{Example:}
% \item[Example:] I want to show you on what day of the week this document was
%   typeset:
%\begin{verbatim}
%   This document was created on a \todaysname.
%\end{verbatim}
%   This will result, for example, in:
%   \begin{quote}
%     This document was created on a \todaysname.
%   \end{quote}
% \end{labeling}
%
% For languages that have a case system for nouns, note that the package
% cannot decline words. The terms are given in the form appropriate for
% displaying a date in a letter, which is the nominative singular for the
% currently supported languages. Given this limitation, the example above will
% not work correctly if translated directly into some other languages.
%
% The names of the weekdays in \pkg*{scrdate} all have initial capital
% letters. If you need the names completely in lower case, for example because
% that is the convention in the relevant language, simply wrap the command
% with the \LaTeX{} \cs{MakeLowercase} command:
%\begin{verbatim}
%   \MakeLowercase{\todaysname}
%\end{verbatim}
% This converts the whole argument into lower-case letters. Of course, you can
% also do this for \cs{DayNameByNumber}, \cs{DayName}, and \cs{ISODayName}
% commands described above.
%
%
% \DescribeCommand{\nameday}
% Just as you can directly modify the output of \cs{today} with \cs{date}, so
% you can change the output of \cs{todaysname} to \meta{name} with
% \cs{nameday}\marg{name}.
% \begin{labeling}{Example:}
% \item[Example:] You change the current date to a fixed value using
%   \cs{date}. You are not interested in the actual name of the day, but want
%   only to show that it is a workday. So you write:
%\begin{verbatim}
%   \nameday{workday}
%\end{verbatim}
%   After this, the previous example will result in:
%   \begin{quote}
%     This document was created on a workday.
%   \end{quote}
% \end{labeling}
% There's no corresponding command to change the result of
% \cs{ISOToday} or \cs{IsoToday}.
%
%
% \DescribeCommand\newdaylanguage
% Currently the \pkg*{scrdate} package recognizes the following languages:
% \begin{itemize}\setlength{\itemsep}{.5\itemsep}
% \item Croatian (\texttt{croatian}),
% \item Czech (\texttt{czech}),
% \item Danish (\texttt{danish}),
% \item Dutch (\texttt{dutch}),
% \item English (\texttt{american}, \texttt{australian}, \texttt{british},
%   \texttt{canadian}, \texttt{english}, \texttt{UKenglish}, and
%   \texttt{USenglish}),
% \item Finnish (\texttt{finnish}),
% \item French (\texttt{french}),
% \item German (\texttt{austrian}, \texttt{german}, \texttt{naustrian},
%   \texttt{ngerman}, \texttt{nswissgerman}, and \texttt{swissgerman}),
% \item Italian (\texttt{italian}),
% \item Norwegian (\texttt{norsk}),
% \item Polish (\texttt{polish}),
% \item Slovak (\texttt{slovak}),
% \item Spanish (\texttt{spanish}),
% \item Swedish (\texttt{swedish}).
% \end{itemize}
% You can also configure it for additional languages. To do so, the first
% argument of
% \cs{newdaylanguage}\linebreak[1]\marg{language}\linebreak[1]\marg{Monday}\linebreak[1]\marg{Tuesday}\linebreak[1]\marg{Wednesday}\linebreak[1]\marg{Thursday}\linebreak[1]\marg{Friday}\linebreak[1]\marg{Saturday}\linebreak[1]\marg{Sunday}
% is the name of the language, and the other arguments are the names of the
% corresponding days of the week.
%
% In the current implementation, it does not matter whether you load
% \pkg*{scrdate} before or after \pkg{ngerman}, \pkg{babel}, or similar
% packages. In each case the correct language will be used provided it is
% supported.
%
% To be more precise, as long as you select a language in a way that is
% compatible with \pkg{babel}, \pkg*{scrdate} will use the correct
% language. If this is not the case, you will get (US) English names.
%
% Of course, if you create definitions for a language that was previously
% unsupported, please mail them to the author of \pkg*{scrdate} or add a
% ticket to the issue tracker. There is a good chance that future versions of
% \pkg*{scrdate} will add support for that language.%
%
%
% \MaybeStop{\PrintIndex}
%
% \section{Implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
% 
% \changes{v1.1a}{1995/02/12}{changed all but the user-interface}
% \changes{v3.05a}{2010/03/10}{changed everything}
% With version~3.05a \pkg*{scrdate} was rewritten.  First step was to make
% more macros full expandable to provide \cs{MakeUppercase} and
% \cs{MakeLowercase}. Second was to extend the user interface by some new
% functionality.
%
% Currently we need \cs{XdivY} and \cs{XmodY} of package \pkg*{scrbase}. But
% in future we will switch over to L3.
%    \begin{macrocode}
\RequirePackage{scrbase}
%    \end{macrocode}
%
% \begin{command}{\CenturyPart}
% \changes{v3.05a}{2010/03/10}{added}
% This is the century part of a year number and so only a shortcut to
% |\XdivY{...}{100}|, that is defined at \pkg*{scrbase}.
%    \begin{macrocode}
\newcommand*{\CenturyPart}[1]{\XdivY{#1}{100}}
%    \end{macrocode}
% \end{command}
% 
% \begin{command}{\DecadePart}
% \changes{v3.05a}{2010/03/10}{added}
% This is the year number withoud the century part and therefrso only a
% shortcut to |\XmodY{...}{100}|, that is defined at \pkg*{scrbase}.
%    \begin{macrocode}
\newcommand*{\DecadePart}[1]{\XmodY{#1}{100}}
%    \end{macrocode}
% \end{command}
% 
% \begin{macro}{\@GaussYear}
% \changes{v3.05a}{2010/03/10}{added}
% At the Gauss calculation of the day of the week January and February relates
% to the year before. This macro does the correction for any date.
%    \begin{macrocode}
\newcommand*{\@GaussYear}[3]{%
  \ifcase #2
    \PackageError{scrdate}{month out of range}{%
      You've asked for the Gauss year of ISO date #1-#2-#3,\MessageBreak
      this means, that month hat invalid value '#2'.}%
  \or
    \numexpr #1 - 1\relax
  \or
    \numexpr #1 - 1\relax
  \else
    #1
  \fi
}
%    \end{macrocode}
% \end{macro}
%
% \begin{command}{\DayNumber}
% \changes{v3.05a}{2010/03/10}{added}
% Returns the numerical value of the day of week. Note, that Sunday is 0,
% Monday is 1, \dots, Saturday is 6. We use the Gauss calculation of the day
% of the week. First argument is the year, second the month and last the day
% of the month.
%    \begin{macrocode}
\newcommand*{\DayNumber}[3]{%
  \XmodY{%
    \numexpr #3 
           + \ifcase #2
               \PackageError{scrdate}{month out of range}{%
                 You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak
                 this means, that month hat invalid value '#2'.}%
             \or 28 \or 31 \or 2 \or 5 \or 7 \or 10 \or 12 \or 15 \or 18 
             \or 20 \or 23 \or 25
             \else
               \PackageError{scrdate}{month out of range}{%
                 You've asked for the dayname of ISO date #1-#2-#3,\MessageBreak
                 this means, that month hat invalid value '#2'.}%
             \fi
           + \DecadePart{\@GaussYear{#1}{#2}{#3}}
           + \XdivY{\DecadePart{\@GaussYear{#1}{#2}{#3}}}{4}
           + \XdivY{\CenturyPart{\@GaussYear{#1}{#2}{#3}}}{4}
           - 2 * \CenturyPart{\@GaussYear{#1}{#2}{#3}} \relax
  }{7}%
}
%    \end{macrocode}
% \end{command}
% \begin{command}{\ISODayNumber}
% \changes{v3.05a}{2010/03/10}{added}
% The same like \cs{DayNumber} but with ISO date argument.
%    \begin{macrocode}
\newcommand*{\ISODayNumber}[1]{\expandafter\@IsoDayNumber#1\@nil}
%    \end{macrocode}
% \begin{macro}{\@IsoDayNumber}
% \changes{v3.05a}{2010/03/10}{added}
%    \begin{macrocode}
\newcommand*{\@IsoDayNumber}{}
\def\@IsoDayNumber#1-#2-#3\@nil{\DayNumber{#1}{#2}{#3}}
%    \end{macrocode}
% \end{macro}
% \end{command}
% 
% \begin{command}{\DayName}
% \changes{v3.05a}{2010/03/10}{added}
% Returns the name of the day of the week. Arguments like \cs{DayNumber}.
%    \begin{macrocode}
\newcommand*{\DayName}[3]{\@dayname{\DayNumber{#1}{#2}{#3}}}
%    \end{macrocode}
% \end{command}
% \begin{command}{\ISODayName}
% \changes{v3.05a}{2010/03/10}{added}
% The same like \cs{DayName} but with ISO date argument.
%    \begin{macrocode}
\newcommand*{\ISODayName}[1]{\@dayname{\ISODayNumber{#1}}}
%    \end{macrocode}
% \end{command}
% 
% \begin{command}{\DayNameByNumber}
% \changes{v3.05a}{2010/03/10}{added}
% Returns the name of the day of the week. The argument is a number that will
% be transposed to the range 0\dots6.
%    \begin{macrocode}
\newcommand*{\DayNameByNumber}[1]{%
  \@dayname{\XmodY{#1}{7}}%
}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\ISOToday}
% \changes{v3.05a}{2010/03/10}{added}
% Returns the ISO date.
%    \begin{macrocode}
\newcommand*{\ISOToday}{%
  \the\year-\ifnum \month<10 0\fi\the\month-\ifnum \day<10 0\fi\the\day%
}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\IsoToday}
% \changes{v3.05a}{2010/03/10}{added}
% Returns the ISO date.
%    \begin{macrocode}
\newcommand*{\IsoToday}{%
  \the\year-\the\month-\the\day%
}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\todaysname}
% \changes{v3.05a}{2010/03/10}{re-implemented}
% Using \cs{DayName} this is very, very simple.
%    \begin{macrocode}
\newcommand*{\todaysname}{\DayName{\year}{\month}{\day}}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\todaysnumber}
% \changes{v3.05a}{2010/03/11}{added}
% Using \cs{DayNumber} this is very, very simple.
%    \begin{macrocode}
\newcommand*{\todaysnumber}{\DayNumber{\year}{\month}{\day}}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\nameday}
% \changes{v3.05a}{2010/03/10}{no longer \cs{long}}
% We simply have to redefine \cs{todaysname}.
%    \begin{macrocode}
\newcommand\nameday[1]{\renewcommand*{\todaysname}{#1}}
%    \end{macrocode}
% \end{command}
%
% \begin{command}{\newdaylanguage}
% \changes{v3.05a}{2010/03/10}{Sunday is 0}
% We write a macro to define the name of the days.
%   \begin{macro}{\scrdate@languagenamewarning}
% But before this, we have to define a once only warning.
%    \begin{macrocode}
\newcommand*\scrdate@languagenamewarning{%
  \PackageWarningNoLine{scrdate}
    {\string\languagename\space not
     defined, using \string\language.\MessageBreak
     This may result in use of wrong language!\MessageBreak
     You should use a compatible language
     package\MessageBreak
     (e.g. `babel', `german', `french', ...)}%
  \let\scrdate@languagenamewarning\relax
}
%    \end{macrocode}
%  \end{macro}
%    \begin{macrocode}
\newcommand\newdaylanguage[8]{%
%    \end{macrocode}
% First we check, if the language is defined at the format, the user uses.
% If it is not defined, we do not define the name of the days and warn.
%    \begin{macrocode}
  \scr@ifundefinedorrelax{l@#1}{%
    \PackageInfoNoLine{scrdate}{Language #1\space not defined.\MessageBreak
                                \protect\dayname@#1\space skipped}%
%    \end{macrocode}
% \changes{v1.1c}{1995/05/24}{missing \cs{end\{macrocode\}} added}
% If it is defined, we define the name-selection-macro
% \cs{dayname@\meta{language}}.
% First we define the new macro \cs{dayname@\meta{language}}:
% \changes{v3.05a}{2010/03/10}{group removed}
% \changes{v3.15}{2014/12/11}{more robust \cs{ifcase}}
%    \begin{macrocode}
  }{%
    \@namedef{dayname@#1}##1{%
        \ifcase\numexpr \XmodY{##1}{7}\relax
          #8\or #2\or #3\or #4\or #5\or #6\or #7\fi%
    }%
%    \end{macrocode}
% Then we define, what to do at \cs{begin\{document\}}:
%    \begin{macrocode}
    \AtBeginDocument{%
%    \end{macrocode}
% There we first have to test, if \cs{date\meta{language}} is defined
% (e.g. using package \pkg{german}). If not, we have to warn once more.
%    \begin{macrocode}
      \scr@ifundefinedorrelax{date#1}{%
        \PackageInfoNoLine{scrdate}
                          {\protect\date#1\space not defined.\MessageBreak
                           \protect\todaysname\space probably cannot use
                           \protect\dayname@#1}%
%    \end{macrocode}
% But if it is defined, we can use it
%    \begin{macrocode}
      }{%
%    \end{macrocode}
% There we first save \cs{date\meta{language}} as \cs{D@date\meta{language}}.
%    \begin{macrocode}
        \expandafter\let\csname D@date#1\expandafter\endcsname
                        \csname date#1\endcsname
%    \end{macrocode}
% Now we redefine \cs{date\meta{language}}. It first defines \cs{@dayname} and
% then calls saved macro.
%    \begin{macrocode}
        \@namedef{date#1}{%
          \expandafter\let\expandafter\@dayname\csname dayname@#1\endcsname
          \@nameuse{D@date#1}}%
%    \end{macrocode}
% Last we have to select this new \cs{date\meta{language}}.
% \changes{v1.1j}{2000/01/20}{use of \cs{languagename} if defined}
% \changes{v3.08b}{2011/03/31}{one \% added}
%    \begin{macrocode}
        \@ifundefined{languagename}{%
          \scrdate@languagenamewarning
          \ifnum\language=\@nameuse{l@#1}
            \@nameuse{date#1}%
          \fi
        }{%
          \@ifundefined{date\languagename}%
            {}%
            {\@nameuse{date\languagename}}%
        }%
      }%
    }%
  }%
}
%    \end{macrocode}
% \end{command}
% 
% \begin{macro}{\@dayname}
% This should be named selecting the language. Since I changed the definitions
% package \pkg{german} and equal may be loaded before or after \pkg*{scrdate}
% or not.
%
% First we define the usual languages using \cs{newdaylanguage}:
% \begin{macro}{\dayname@german}
%    \begin{macrocode}
\newdaylanguage{german}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@ngerman}
% \changes{v1.1i}{1999/10/09}{new language ``ngerman''}
%    \begin{macrocode}
\newdaylanguage{ngerman}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@naustrian}
% \changes{v3.08b}{2011/02/22}{new language ``naustrian''}
%    \begin{macrocode}
\newdaylanguage{naustrian}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@austrian}
% \changes{v3.08b}{2011/02/22}{new language ``austrian''}
%    \begin{macrocode}
\newdaylanguage{austrian}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@swissgerman}
% \changes{v3.13}{2014/01/23}{new language ``swissgerman''}
%    \begin{macrocode}
\newdaylanguage{swissgerman}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@nswissgerman}
% \changes{v3.13}{2014/01/23}{new language ``nswissgerman''}
%    \begin{macrocode}
\newdaylanguage{nswissgerman}{Montag}{Dienstag}{Mittwoch}
               {Donnerstag}{Freitag}{Samstag}{Sonntag}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@american}
% \changes{v3.13}{2014/01/23}{new language ``american''}
%    \begin{macrocode}
\newdaylanguage{american}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@australian}
% \changes{v3.13}{2014/01/23}{new language ``australian''}
%    \begin{macrocode}
\newdaylanguage{australian}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@british}
% \changes{v3.13}{2014/01/23}{new language ``british''}
%    \begin{macrocode}
\newdaylanguage{british}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@canadian}
% \changes{v3.13}{2014/01/23}{new language ``canadian''}
%    \begin{macrocode}
\newdaylanguage{canadian}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@english}
% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''}
%    \begin{macrocode}
\newdaylanguage{english}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@newzealand}
% \changes{v3.13}{2014/01/23}{new language ``newzealand''}
%    \begin{macrocode}
\newdaylanguage{newzealand}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@UKenglish}
% \changes{v3.13}{2014/01/23}{new language ``UKenglish''}
%    \begin{macrocode}
\newdaylanguage{UKenglish}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@ukenglish}
% \changes{v3.24}{2017/05/29}{new language ``ukenglish''}
%    \begin{macrocode}
\newdaylanguage{ukenglish}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@USenglish}
% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''}
%    \begin{macrocode}
\newdaylanguage{USenglish}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@usenglish}
% \changes{v3.24}{2017/05/29}{new language ``usenglish''}
%    \begin{macrocode}
\newdaylanguage{usenglish}{Monday}{Tuesday}{Wednesday}
               {Thursday}{Friday}{Saturday}{Sunday}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@acadian}
%   \changes{v3.13}{2014/01/23}{new language ``acadian''}
%   This is a former \texttt{french} alias of \pkg{babel}. It will be removed
%   from \pkg*{scrdate} in future.
%    \begin{macrocode}
\newdaylanguage{acadian}{Lundi}{Mardi}{Mercredi}
               {Jeudi}{Vendredi}{Samedi}{Dimanche}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@canadien}
%   \changes{v3.13}{2014/01/23}{new language ``canadien''}
%   This is a former \texttt{french} alias of \pkg{babel}. It will be removed
%   from \pkg*{scrdate} in future.
%    \begin{macrocode}
\newdaylanguage{canadien}{Lundi}{Mardi}{Mercredi}
               {Jeudi}{Vendredi}{Samedi}{Dimanche}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@francais}
%   \changes{v3.13}{2014/01/23}{new language ``francais''}
%   This is a former \texttt{french} alias of \pkg{babel}. It will be removed
%   from \pkg*{scrdate} in future.
%    \begin{macrocode}
\newdaylanguage{francais}{Lundi}{Mardi}{Mercredi}
               {Jeudi}{Vendredi}{Samedi}{Dimanche}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@french}
%    \begin{macrocode}
\newdaylanguage{french}{Lundi}{Mardi}{Mercredi}
               {Jeudi}{Vendredi}{Samedi}{Dimanche}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@italian}
% \changes{v1.1f}{1997/06/06}{New (thanks to Lorenzo M.\ Catucci)}
%    \begin{macrocode}
\newdaylanguage{italian}{Luned\`\i}{Marted\`\i}{Mercoled\`\i}
               {Gioved\`\i}{Venerd\`\i}{Sabato}{Domenica}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@spanish}
% \changes{v1.1h}{1997/07/26}{New (thanks to Ralph J.\ Hangleiter)}
%    \begin{macrocode}
\newdaylanguage{spanish}{Lunes}{Martes}{Mi\'ercoles}
               {Jueves}{Viernes}{S\'abado}{Domingo}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@croatian}
% \changes{v1.1l}{2001/10/05}{New (thanks to Branka Lon\v{c}arevi\'{c})}
%  \begin{macrocode}
\newdaylanguage{croatian}{Ponedjeljak}{Utorak}{Srijeda}
               {\v{C}etvrtak}{Petak}{Subota}{Nedjelja}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dayname@dutch}
% \changes{v1.1m}{2002/02/02}{New (thanks to Henk Jongbloets)}
% \changes{v1.1p}{2009/01/01}{fixed to upper case}
%    \begin{macrocode}
\newdaylanguage{dutch}{Maandag}{Dinsdag}{Woensdag}
               {Donderdag}{Vrijdag}{Zaterdag}{Zondag}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@finnish}
% \changes{v1.1n}{2005/02/07}{New (thanks to Hannu V\"ais\"anen)}
%    \begin{macrocode}
\newdaylanguage{finnish}{Maanantai}{Tiistai}{Keskiviikko}
               {Torstai}{Perjantai}{Lauantai}{Sunnuntai}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@norsk}
% \changes{v1.1p}{2009/01/01}{New (thank to Sveinung Heggen)}
%    \begin{macrocode}
\newdaylanguage{norsk}{Mandag}{Tirsdag}{Onsdag}
               {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@danish}
% \changes{v3.08}{2011/01/18}{New (thanks to Benjamin Hell)}
%    \begin{macrocode}
\newdaylanguage{danish}{Mandag}{Tirsdag}{Onsdag}
               {Torsdag}{Fredag}{L\o{}rdag}{S\o{}ndag}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@swedish}
% \changes{v3.08}{2011/01/18}{New (thanks to Benjamin Hell)}
%    \begin{macrocode}
\newdaylanguage{swedish}{M\aa{}ndag}{Tisdag}{Onsdag}
               {Torsdag}{Fredag}{L\"ordag}{S\"ondag}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@polish}
% \changes{v3.13}{2014/01/07}{New (thanks to Blandyna Bogdol)}
% \changes{v3.13}{2014/01/23}{Fixed (thanks to Elke Schubert)}
%    \begin{macrocode}
\newdaylanguage{polish}{Poniedzia\l{}ek}{Wtorek}{\'Sroda}
               {Czwartek}{Pi\aob{}tek}{Sobota}{Niedziela}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@czech}
% \changes{v3.13}{2014/01/23}{New (thanks to Elke Schubert)}
%    \begin{macrocode}
\newdaylanguage{czech}{Pond\v{e}l\'\i}{\'Uter\'y}{St\v{r}eda}
               {\v{C}tvrtek}{P\'atek}{Sobota}{Ned\v{e}le}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dayname@slovak}
% \changes{v3.13}{2014/02/26}{New (thanks to Elke Schubert)}
%    \begin{macrocode}
\newdaylanguage{slovak}{Pondelok}{Utorok}{Streda}
               {\v{S}tvrtok}{Piatok}{Sobota}{Nede\v{l}a}
%    \end{macrocode}
% \end{macro}
%
% If there are no language-definitions, we simply want the US-english names
% of the days.
% \changes{v1.1g}{1997/06/21}{correct name is ``tuesday''}
% \changes{v3.15}{2014/12/11}{default language definition fixed}
%    \begin{macrocode}
\let\@dayname\dayname@english
%    \end{macrocode}
%  \end{macro}
%
% Last but not least file \file{scrdate.cfg} has to be included,
% if it exists.
% \changes{v3.42}{2024/02/01}{\cs{typeout} replaced by either
%   \cs{PackageNote} or \cs{PackageInfo}}
%    \begin{macrocode}
\InputIfFileExists{scrdate.cfg}
  {%
    \@ifundefined{PackageNote}{\PackageInfo}{\PackageNote}%
      {scrdate}{Local configuration file scrdate.cfg loaded}%
  }{}
%    \end{macrocode}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
% 
% \Finale
% \PrintChanges
% 
% \endinput
% Local Variables:
% mode: doctex
% ispell-local-dictionary: "en_US"
% eval: (flyspell-mode 1)
% TeX-master: t
% TeX-engine: luatex-dev
% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
% End:
