summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datenumber/datenumber.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/datenumber/datenumber.dtx')
-rw-r--r--macros/latex/contrib/datenumber/datenumber.dtx693
1 files changed, 693 insertions, 0 deletions
diff --git a/macros/latex/contrib/datenumber/datenumber.dtx b/macros/latex/contrib/datenumber/datenumber.dtx
new file mode 100644
index 0000000000..96864d5b3f
--- /dev/null
+++ b/macros/latex/contrib/datenumber/datenumber.dtx
@@ -0,0 +1,693 @@
+%\iffalse meta comment
+%
+% This is file `datenumber.dtx',
+%
+% This file is part of the `datenumber' package,
+%
+% Copyright (C) 2001 J"org-Michael Schr"oder.
+%
+% IMPORTANT NOTICE:
+%
+% This program may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% This program consists of all files listed in README.txt.
+%
+% For error reports, or offers to help make this a more powerful
+% tool, please contact me on schrj020@mail.uni-mainz.de
+%
+%\fi
+%
+%\iffalse
+%<*datenumber>
+\def\fileversion{v0.02}
+\def\filedate{2001/08/06}
+%</datenumber>
+%<*driver>
+\documentclass{ltxdoc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\usepackage{german}
+\usepackage[latin1]{inputenc}
+\parindent0pt
+\begin{document}
+\DocInput{datenumber.dtx}
+\PrintIndex
+\PrintChanges
+\end{document}
+%</driver>
+%<*datenumber>
+%\fi
+% \DoNotIndex{\setcounter, \addtocounter, \newcount, \newcounter, \value, \the}
+% \DoNotIndex{\@tempcnta, \@tempcntb}
+% \DoNotIndex{\day,\month, \year,\relax}
+% \DoNotIndex{\ifcase,\or,\else,\fi,\if,\ifdim,\ifnum,\ifx, \loop, \repeat}
+% \DoNotIndex{\def,\gdef}
+% \DoNotIndex{\advance, \multiply, \divide}
+% \DoNotIndex{\csname, \endcsname, \expandafter}
+% \DoNotIndex{\ProvidesPackage,\NeedsTeXFormat, \DeclareOption, \ProcessOptions}
+% \DoNotIndex{\input, \endinput, \empty, \errmessage}
+%
+%\title{Das {\tt datenum.sty} Paket \fileversion}
+%\author{J\"org-Michael Schr\"oder\\{\small\texttt{schrj020@mail.uni-mainz.de}}}
+%\date{\filedate}
+%\maketitle
+%\MakeShortVerb{\|}
+
+%\section{Der Programmcode}
+%\subsection{Am Anfang}
+% Identifizierung
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datenumber}[\filedate \fileversion]
+% \end{macrocode}
+
+% Sprachoptionen deklarieren und entsprechende Dateien laden.
+% \begin{macrocode}
+\DeclareOption{english}{\input datenumberenglish.ldf}
+\DeclareOption{USenglish}{\input datenumberUSenglish.ldf}
+\DeclareOption{french}{\input datenumberfrench.ldf}
+\DeclareOption{italian}{\input datenumberitalian.ldf}
+\DeclareOption{spanish}{\input datenumberspanish.ldf}
+\DeclareOption{german}{\input datenumbergerman.ldf}
+\DeclareOption{ngerman}{\input datenumbergerman.ldf}
+\input datenumberUSenglish.ldf
+\ProcessOptions
+% \end{macrocode}
+% Interne Zähler
+% \begin{macrocode}
+\newcounter{@dayscnt}
+\newcounter{@startyear}
+% \end{macrocode}
+
+%\DescribeMacro{\setstartyear}
+%Hiermit kann der Start der Nummerierung festgelegt werden. Außerden werden alle Zähler
+%(siehe Abschnitt~\ref{defcounter}) Auf den heutigen Tag gesetzt.
+%Am Ende der Datei wird diese Makro aufgerufen.
+%|@startyear| muß größer als 0 sein und
+%kleiner als das Jahr eines, zu berechnenden Datums. Je kleiner der Wert ist, desto länger
+%dauern die Rechnungen.
+% \begin{macrocode}
+\def\setstartyear#1{%
+ \ifnum#1<1
+ \errmessage{Package datenumber: startyear < 1}%
+ \fi
+ \setcounter{@startyear}{#1}%
+ \setdatetoday
+}
+% \end{macrocode}
+
+%\DescribeMacro{\thestartyear}
+%Hiermit kann auf einfache Weise der Wert von |@startyear| ausgegeben werden.
+% \begin{macrocode}
+\def\thestartyear{\the@startyear}
+% \end{macrocode}
+
+%\subsection{Die grundlegenden Berechnungen}
+%\DescribeMacro{\setmydatenumber}
+%Berechnung einer laufenden Nummer für ein gegebenes Datum. Der erste Parameter ist der Name
+%eines Zählers in dem die Nummer gespeichtert wird. \#2, \#3, \#4 sind die Werte für das Jahr, den Monat und den Tag.
+%Es wird getestet, ob das Datum gültig ist, ob |startyear| größer 1 und ob das übergebene
+%Jahr nicht kleiner als |startyear| ist. Die Zwischenergebnisse werden in |@dayscnt| gespeichert und zum
+%Schluß in den Zähler \#1 geschrieben.
+% \begin{macrocode}
+\def\setmydatenumber#1#2#3#4{%
+ \ifvaliddate{#2}{#3}{#4}%
+ \else
+ \errmessage{\@errmessage}%
+ \fi
+ \ifnum\the@startyear<1
+ \errmessage{Package datenumber: startyear < 1}%
+ \fi
+ \ifnum#2<\the@startyear
+ \errmessage{Package datenumber: datenumber < startyear (#2 < \the@startyear)}%
+ \fi
+ \setcounter{@dayscnt}{0}%
+ \ifnum#2>\the@startyear
+ \relax\@yearloop{#2}%
+ \fi
+ \addtocounter{@dayscnt}{%
+ \ifcase #3%
+ \or 0\or 31\or 59
+ \or 90\or 120\or 151
+ \or 181\or 212\or 243
+ \or 273\or 304\or 334
+ \fi
+ }%
+ \ifleapyear{#2}%
+ \ifnum#3>2
+ \addtocounter{@dayscnt}{1}%
+ \fi
+ \fi
+ \ifnum#2=1582
+ \ifnum#3>10
+ \addtocounter{@dayscnt}{-10}%
+ \fi
+ \ifnum#3=10
+ \ifnum#4>14
+ \addtocounter{@dayscnt}{-10}%
+ \fi
+ \fi
+ \fi
+ \addtocounter{@dayscnt}{#4}%
+ \setcounter{#1}{\the@dayscnt}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\setmydatebynumber}
+%Berechnung eines Datums aus der laufenden Nummer. Der erste Parameter ist der Wert der Nummer.
+%\#2, \#3, \#4 sind die Namen von Zählern in denen das Jahr, der Monat und der Tag gespeichert werden sollen.
+%Es wird getestet, ob |startyear| größer 1 und ob die übergebene Nummer größer 0 ist.
+%Die |loop|, |return| Schleife ist nicht unbedingt erforderlich, macht das Ganze aber schneller.
+% \begin{macrocode}
+\def\setmydatebynumber#1#2#3#4{%
+ \ifnum\the@startyear<1
+ \errmessage{Package datenumber: startyear < 1}%
+ \fi
+ \ifnum#1<1
+ \errmessage{Package datenumber: datenumber < 1}%
+ \fi
+ \setcounter{#2}{\the@startyear}%
+ \setcounter{@dayscnt}{1}%
+ \loop
+ \ifleapyear{\thedateyear}%
+ \@tempcnta=366
+ \else
+ \@tempcnta=365
+ \fi
+ \ifnum\thedateyear=1582
+ \@tempcnta=355
+ \fi
+ \addtocounter{@dayscnt}{\the\@tempcnta}%
+ \ifnum\the@dayscnt<#1\addtocounter{dateyear}{1}%
+ \repeat
+ \addtocounter{@dayscnt}{-\the\@tempcnta}%
+ %
+ \setcounter{#3}{1}%
+ \setcounter{#4}{1}%
+ \setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}%
+ \ifnum#1>\the@dayscnt\relax
+ \loop
+ \mynextdate{#2}{#3}{#4}%
+ \addtocounter{@dayscnt}{1}%
+ \ifnum\the@dayscnt<#1\relax
+ \repeat
+ \setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}%
+ \fi
+}
+% \end{macrocode}
+
+%\DescribeMacro{\mynextdate}
+%Berechnung des nächsten Datums. Die Parameter \#1, \#2, \#3 sind die Namen von Zählern
+%in denen das Jahr, der Monat und der Tag steht und in die das neues Datum geschrieben werden soll.
+%Es wird getestet, ob das Datum gültig ist. Auf den 4.10.1582 folgt der 15.10.1582
+%(siehe hierzu auch Abschnitt \ref{sonstiges}, Stichwort |\ifleapyear| und |\ifvaliddate|).
+%Vielen Dank an David und Heiko für die Anregungen zu diesem Makro
+% \begin{macrocode}
+\def\mynextdate#1#2#3{%
+ \ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}%
+ \else
+ \errmessage{\@errmessage}%
+ \fi
+ \addtocounter{#3}{1}%
+ \ifleapyear{\value{#1}}%
+ \@tempcnta=29
+ \else
+ \@tempcnta=28
+ \fi
+ \ifnum\value{#3}>%
+ \ifcase\value{#2}\or31\or\@tempcnta\or31\or30\or31\or30%
+ \or31\or31\or30\or31\or30\else31%
+ \fi\relax
+ \setcounter{#3}{1}%
+ \addtocounter{#2}{1}%
+ \ifnum\value{#2}>12
+ \setcounter{#2}{1}%
+ \addtocounter{#1}{1}%
+ \fi
+ \fi
+ \ifnum\value{#1}=1582
+ \ifnum\value{#2}=10
+ \ifnum\value{#3}=5
+ \setcounter{#3}{15}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+
+%\DescribeMacro{\myprevdate}
+%Das gleiche wie eben nur anders herum.
+% \begin{macrocode}
+\def\myprevdate#1#2#3{%
+ \ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}%
+ \else
+ \errmessage{\@errmessage}%
+ \fi
+ \addtocounter{#3}{-1}%
+ \ifleapyear{\value{#1}}%
+ \@tempcnta=29
+ \else
+ \@tempcnta=28
+ \fi
+ \ifnum\value{#3}=0
+ \addtocounter{#2}{-1}%
+ \ifnum\value{#2}=0
+ \addtocounter{#1}{-1}%
+ \setcounter{#2}{12}%
+ \fi
+ \setcounter{#3}{%
+ \ifcase\value{#2}\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30
+ \or 31\or 31\or 30\or 31\or 30\else 31
+ \fi
+ }%
+ \fi
+ \ifnum\value{#1}=1582
+ \ifnum\value{#2}=10
+ \ifnum\value{#3}=14
+ \setcounter{#3}{4}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+
+%\subsection{Für den Anwender\label{defcounter}}
+
+% Es werden 5 Zähler definiert, damit man das nicht jedesmal selbst machen muß.
+% \begin{macrocode}
+\newcounter{datenumber}
+\newcounter{dateyear}
+\newcounter{datemonth}
+\newcounter{dateday}
+\newcounter{datedayname}
+% \end{macrocode}
+%Dann kommen die gleichen Makros wie eben, nur das diese mit den definierten Zählern arbeiten.
+%Außerdem werden alle Zähler aktualisiert und die Kommandos |\datedayname| und |\datemonthname|
+%neu definiert (siehe Abschnitt \ref{month} und \ref{dayname}).
+
+%\DescribeMacro{\setdatenumber}
+%Parameter \#1, \#2, \#3: Jahr, Monat und Tag
+% \begin{macrocode}
+\def\setdatenumber#1#2#3{%
+ \setmydatenumber{datenumber}{#1}{#2}{#3}%
+ \setcounter{dateyear}{#1}%
+ \setcounter{datemonth}{#2}%
+ \setcounter{dateday}{#3}%
+ \setdaynamebynumber{\thedatenumber}%
+ \setmonthname{\thedatemonth}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\setdatebynumber}
+%Parameter: Nummer des Tages
+% \begin{macrocode}
+\def\setdatebynumber#1{%
+ \setmydatebynumber{#1}{dateyear}{datemonth}{dateday}%
+ \setcounter{datenumber}{#1}%
+ \setdaynamebynumber{\thedatenumber}%
+ \setmonthname{\thedatemonth}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\nextdate}
+% \begin{macrocode}
+\def\nextdate{%
+ \mynextdate{dateyear}{datemonth}{dateday}%
+ \setdate{\thedateyear}{\thedatemonth}{\thedateday}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\prevdate}
+% \begin{macrocode}
+\def\prevdate{%
+ \myprevdate{dateyear}{datemonth}{dateday}%
+ \setdate{\thedateyear}{\thedatemonth}{\thedateday}%
+}
+% \end{macrocode}
+% Jetzt noch ein paar Makros, die das Leben einfacher machen.
+
+%\DescribeMacro{\setdate}
+%Für intuitivere Schreibweise
+% \begin{macrocode}
+\def\setdate#1#2#3{%#1 year, #2 month, #3 day
+ \setdatenumber{#1}{#2}{#3}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\setdatetoday}
+%Setzt alles auf Heute
+% \begin{macrocode}
+\def\setdatetoday{%
+ \setdatenumber{\the\year}{\the\month}{\the\day}%
+}
+% \end{macrocode}
+
+%\subsection{Monat\label{month}}
+
+%\DescribeMacro{\setmonthname}
+%Definiert |\datemonthname| entsprechend des übergebenen Wertes (1--12, Januar--Dezember).
+%Wird von den Makros in Abschnitt \ref{defcounter} aufgerufen.
+%Das Makro |\@monthname| wird in den |.ldf|-Dateien definiert.
+% \begin{macrocode}
+\def\setmonthname#1{%
+ \def\datemonthname{\@monthname{#1}}%
+}
+% \end{macrocode}
+
+%\subsection{Wochentag\label{dayname}}
+
+%\DescribeMacro{\setdayname}
+%Definiert |\datedayname| entsprechend des übergebenen Wertes (1--7, Montag--Sonntag).
+%Das Makro |\@dayname| wird in den |.ldf|-Dateien definiert.
+% \begin{macrocode}
+\def\setdayname#1{%
+ \def\datedayname{\@dayname{#1}}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\setdaynamebynumber}
+%Berechnung des Wochentages aus der Nummer des Tages und Aktualisierung
+%von |\datedayname|. Funktioniert, wenn
+%|startyear| auf 1800, 1900 oder 2000 gesetzt ist oder aus Zufall.
+%Wird von den Makros in Abschnitt \ref{defcounter} aufgerufen.
+% \begin{macrocode}
+\def\setdaynamebynumber#1{%
+ \@tempcnta=#1\relax
+ \ifnum\the@startyear=1800\advance \@tempcnta by 1\fi
+ \ifnum\the@startyear=1900\advance \@tempcnta by 6\fi
+ \ifnum\the@startyear=2000\advance \@tempcnta by 4\fi
+ \@modulo{\the\@tempcnta}{7}%
+ \setcounter{datedayname}{\the\@den}%
+ \addtocounter{datedayname}{1}%
+ \setdayname{\thedatedayname}%
+}
+% \end{macrocode}
+
+%\subsection{Sonstiges\label{sonstiges}}
+%\DescribeMacro{\datedate}
+%Gibt das Datum aus, das in den Standardzählern steht (siehe Abschnitt\ref{defcounter}).
+%Das Makro |\@datedate| wird in den |.ldf|-Dateien definiert.
+% \begin{macrocode}
+\def\datedate{\@datedate}%
+% \end{macrocode}
+
+
+%\subsection{Sonstiges\label{sonstiges}}
+%\DescribeMacro{\dateselectlanguage}
+%Umschalten der Sprache. Das Makro |\@datelanguage#1| wird in den |.ldf|-Dateien definiert.
+% \begin{macrocode}
+\def\dateselectlanguage#1{%
+ \csname @datelanguage#1\endcsname
+ \setdayname{\thedatedayname}%
+ \setmonthname{\thedatemonth}%
+}
+% \end{macrocode}
+
+%\DescribeMacro{\ifleapyear}
+%Schaltjahrtest (\#1 Jahr). Nach dem Julianischen Kalender ist jedes Jahr ein Schaltjahr, das ein ganzahliges
+%Vielfaches von 4 ist. Der Gregorianischer Kalender wurde 1582 eingeführt, aber nicht von
+%allen (Christen) übernommen. Dieses Paket übernimmt ihn ab 1582. D.h., ab 1582 ist ein Jahr, daß
+%ein ganzzahlige Vielfaches von 100 ist nur dann ein Schaltjahr, wenn es auch
+%ein ganzzahlige Vielfaches von 400 ist.
+% \begin{macrocode}
+\def\ifleapyear#1{%#1 year
+ \ifnum#1>1500
+ \@modulo{#1}{100}%
+ \ifnum\@den=0
+ \@modulo{#1}{400}%
+ \else
+ \@modulo{#1}{4}%
+ \fi
+ \else
+ \@modulo{#1}{4}%
+ \fi
+ \ifnum\@den=0
+}
+% \end{macrocode}
+
+%\DescribeMacro{\ifvaliddate}
+%Testet auf gültige Datum (\#1, \#2, \#3: Jahr, Monat, Tag).
+%Eine Fehlermeldung wird in |\@errmessage| geschrieben, wenn das Datum ungültig ist.
+%Im Jahr 1582 folgte nach der Gregorianischer Kalenderreform auf den 4.10 der 15.10.
+%Er hat uns also 10 Tage geklaut.
+% \begin{macrocode}
+\def\ifvaliddate#1#2#3{%
+ \ifleapyear{#1}%
+ \@tempcnta=29
+ \else
+ \@tempcnta=28
+ \fi
+ \gdef\@errmessage{}%
+ \ifnum#1<1
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: year < 1, #1/#2/#3}%
+ \fi%
+ \ifnum#2<1
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: month < 1, #1/#2/#3}%
+ \fi%
+ \ifnum#2>12
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: month > 12, #1/#2/#3}%
+ \fi%
+ \ifnum#3<1
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: day < 1, #1/#2/#3}%
+ \fi%
+ \@tempcntb=
+ \ifcase#2 31\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30
+ \or 31\or 31\or 30\or 31\or 30\else 31
+ \fi\relax
+ \ifnum#3>\@tempcntb
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: day > \the\@tempcntb, #1/#2/#3}%
+ \fi%
+ \ifnum#1=1582
+ \ifnum#2=10
+ \ifnum#3>4
+ \ifnum#3<15
+ \gdef\@errmessage{Package datenumber: %
+ invalid date: #1/#2/#3}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\@errmessage\empty
+}
+% \end{macrocode}
+
+%\subsection{Interna}
+%\DescribeMacro{\@yearloop}
+%Berechnet die Anzahl der Tage vom Startjahr bis zum Jahr \#1.
+% \begin{macrocode}
+\def\@yearloop#1{%
+ \@tempcnta=\the@startyear%
+ \loop
+ \ifleapyear{\@tempcnta}%
+ \addtocounter{@dayscnt}{366}%
+ \else
+ \addtocounter{@dayscnt}{365}%
+ \fi
+ \ifnum\@tempcnta=1582
+ \addtocounter{@dayscnt}{-10}%
+ \fi
+ \advance \@tempcnta by 1
+ \ifnum\@tempcnta=#1\else
+ \repeat
+}
+% \end{macrocode}
+
+% Die brauchen wir gleich
+% \begin{macrocode}
+\newcount\@nom\newcount\@den
+% \end{macrocode}
+
+%\DescribeMacro{\@modulo}
+%Berechnet \#1 modulo \#2 und speichert das Ergebnis in |\@den|
+%Vielen Dank an Christian für dieses Makro und an Heiko für die
+%Verbesserungen
+% \begin{macrocode}
+\def\@modulo#1#2{%
+ \@nom=#1\relax
+ \@den=#2\relax
+ \divide\@nom by \@den%
+ \multiply\@nom by \@den%
+ \@den=#1%
+ \advance\@den by -\@nom%
+}
+% \end{macrocode}
+
+%\subsection{Zum Schluß}
+%Zum Schluß setzen wir noch das Startjahr, was gleichzeitig
+%alle Zähler auf das heutige Datum setzt.
+% \begin{macrocode}
+\setstartyear{1800}
+% \end{macrocode}
+%\iffalse
+%</datenumber>
+%<*english>
+
+\ProvidesFile{datenumberenglish.ldf}
+
+\def\@datelanguageenglish{%
+ \def\@dayname{\@daynameenglish}
+ \def\@monthname{\@monthnameenglish}%
+ \def\@datedate{\@datedateenglish}%
+}
+
+\def\@monthnameenglish#1{%
+ \ifcase#1\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi}%
+
+\def\@daynameenglish#1{%
+ \ifcase#1\or
+ Monday\or Tuesday\or Wednesday\or Thursday\or
+ Friday\or Saturday\or Sunday\fi}
+
+\def\@datedateenglish{\thedateday \ifcase\thedateday \or
+ st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or
+ th\or th\or th\or th\or th\or th\or th\or th\or th\or th\or
+ st\or nd\or rd\or th\or th\or th\or th\or th\or th\or th\or
+ st\fi~\datemonthname \space\thedateyear}
+
+\@datelanguageenglish
+%</english>
+%<*USenglish>
+
+\ProvidesFile{datenumberUSenglish.ldf}
+
+\def\@datelanguageUSenglish{%
+ \def\@dayname{\@daynameUSenglish}
+ \def\@monthname{\@monthnameUSenglish}%
+ \def\@datedate{\@datedateUSenglish}%
+}
+
+\def\@monthnameUSenglish#1{%
+ \ifcase#1\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi}%
+
+\def\@daynameUSenglish#1{%
+ \ifcase#1\or
+ Monday\or Tuesday\or Wednesday\or Thursday\or
+ Friday\or Saturday\or Sunday\fi}
+
+\def\@datedateUSenglish{\datemonthname\space\thedateday, \thedateyear}
+
+\@datelanguageUSenglish
+%</USenglish>
+%<*french>
+
+\ProvidesFile{datenumberfrench.ldf}
+
+\def\@datelanguagefrench{%
+ \def\@dayname{\@daynamefrench}
+ \def\@monthname{\@monthnamefrench}%
+ \def\@datedate{\@datedatefrench}%
+}
+
+\def\@monthnamefrench#1{%
+ \ifcase#1\or
+ janvier\or f\'evrier\or mars\or avril\or mai\or juin\or
+ juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi}%
+
+\def\@daynamefrench#1{%
+ \ifcase#1\or
+ Lundi\or Mardi\or Mercredi\or Jeudi\or
+ Vendredi\or Samedi\or Dimanche\fi}
+
+\def\@datedatefrench{\thedateday \ifnum1=\thedateday \/$^{\rm er}$\fi
+ \space \datemonthname\space \number\year}
+
+\@datelanguagefrench
+%</french>
+%<*spanish>
+
+\ProvidesFile{datenumberspanish.ldf}
+
+\def\@datelanguagespanish{%
+ \def\@dayname{\@daynamespanish}
+ \def\@monthname{\@monthnamespanish}%
+ \def\@datedate{\@datedatespanish}%
+}
+
+\def\@monthnamespanish#1{%
+ \ifcase#1\or
+ enero\or febrero\or marzo\or abril\or mayo\or junio\or
+ julio\or agosto\or septiembre\or octubre\or noviembre\or diciembre\fi}%
+
+\def\@daynamespanish#1{%
+ \ifcase#1\or
+ Lunes\or Martes\or Mi\'ercoles\or Jueves\or
+ Viernes\or S\'abado\or Domingo\fi}
+
+\def\@datedatespanish{\thedateday~de \datemonthname\ de~\the\year}
+
+\@datelanguagespanish
+
+%</spanish>
+%<*german>
+
+\ProvidesFile{datenumbergerman.ldf}
+
+\def\@datelanguagegerman{%
+ \def\@dayname{\@daynamegerman}%
+ \def\@monthname{\@monthnamegerman}%
+ \def\@datedate{\@datedategerman}%
+}
+
+\def\@monthnamegerman#1{%
+ \ifcase#1\or
+ Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
+ Juli\or August\or September\or Oktober\or November\or Dezember\fi}%
+
+\def\@daynamegerman#1{%
+ \ifcase#1\or
+ Montag\or Dienstag\or Mittwoch\or Donnerstag\or
+ Freitag\or Samstag\or Sonntag\fi}
+
+\def\@datedategerman{\thedateday.~\datemonthname\space\thedateyear}
+
+\@datelanguagegerman
+%</german>
+%<*dummy>
+
+\ProvidesFile{datenumberdummy.ldf}
+
+\makeatletter
+
+\def\@datelanguagedummy{%
+ \def\@dayname{\@daynamedummy}
+ \def\@monthname{\@monthnamedummy}%
+ \def\@datedate{\@datedatedummy}%
+}
+
+\def\@monthnamedummy#1{%
+ \ifcase#1\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi}%
+
+\def\@daynamedummy#1{%
+ \ifcase#1\or
+ Monday\or Tuesday\or Wednesday\or Thursday\or
+ Friday\or Saturday\or Sunday\fi}
+
+\def\@datedatedummy{\datemonthname\space\thedateday, \thedateyear}
+
+\@datelanguagedummy
+
+\makeatother
+%</dummy>
+
+%\fi
+%\Finale
+\endinput
+%\def{\fileversion}{v0.02}\def{\filedate}{2001/08/06} \ No newline at end of file