summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datenumber
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/datenumber
Initial commit
Diffstat (limited to 'macros/latex/contrib/datenumber')
-rw-r--r--macros/latex/contrib/datenumber/README.txt59
-rw-r--r--macros/latex/contrib/datenumber/datenumber.dtx693
-rw-r--r--macros/latex/contrib/datenumber/datenumber.ins66
-rw-r--r--macros/latex/contrib/datenumber/doc.pdfbin0 -> 66258 bytes
-rw-r--r--macros/latex/contrib/datenumber/doc.tex211
-rw-r--r--macros/latex/contrib/datenumber/docgerman.pdfbin0 -> 69979 bytes
-rw-r--r--macros/latex/contrib/datenumber/docgerman.tex209
7 files changed, 1238 insertions, 0 deletions
diff --git a/macros/latex/contrib/datenumber/README.txt b/macros/latex/contrib/datenumber/README.txt
new file mode 100644
index 0000000000..74be60d584
--- /dev/null
+++ b/macros/latex/contrib/datenumber/README.txt
@@ -0,0 +1,59 @@
+%%
+%% This is file `README.txt',
+%%
+%% 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.
+%%
+%% For error reports, or offers to help make this a more powerful
+%% tool, please contact me on schrj020@mail.uni-mainz.de
+%%
+
+This program consists of all files listed here.
+
+README.txt
+datenumber.dtx
+datenumber.ins
+doc.tex
+dov.dvi
+docgerman.tex
+docgerman.dvi
+
+generated files:
+
+datenumber.sty
+datenumberenglish.ldf
+datenumberUSenglish.ldf
+datenumberfrench.ldf
+datenumberspanish.ldf
+datenumbergerman.ldf
+datenumberdummy.ldf
+
+Installation:
+
+call latex on `datenumber.ins'
+copy datenumber.sty and all *.ldf files to a place LaTeX can find it.
+run `texhash', `initexmf -u' or something else.
+say latex `doc.tex' (2 times) to get a short documentation
+
+german documentation:
+
+Eine kurze Dokumentation ist in docgerman.tex.
+
+Für eine kurze Beschreibung des Programmcodes in Deutsch:
+latex datenumber.dtx (2 mal)
+makeindex -s gind.ist datenumber.idx
+latex datenumber.dtx
+
+
+
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
diff --git a/macros/latex/contrib/datenumber/datenumber.ins b/macros/latex/contrib/datenumber/datenumber.ins
new file mode 100644
index 0000000000..1a23d37667
--- /dev/null
+++ b/macros/latex/contrib/datenumber/datenumber.ins
@@ -0,0 +1,66 @@
+%% datenumber.ins
+%%
+%% Docstrip installation instruction file
+%% for the `datenumber' package, Version 0.02 of 2001/08/06
+%%
+%% Copyright (C) 2001 J"org-Michael Schr"oder.
+
+\def\batchfile{datenumber.ins}
+\input docstrip.tex
+
+
+\preamble
+
+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
+
+\endpreamble
+
+\declarepreamble\emptypreamble
+\endpreamble
+
+\Msg{* Generating files *}
+
+\generate{%
+ \file{datenumber.sty}{\from{datenumber.dtx}{datenumber}}
+ \file{datenumberenglish.ldf}{\from{datenumber.dtx}{english}}
+ \file{datenumberUSenglish.ldf}{\from{datenumber.dtx}{USenglish}}
+ \file{datenumberfrench.ldf}{\from{datenumber.dtx}{french}}
+ \file{datenumberspanish.ldf}{\from{datenumber.dtx}{spanish}}
+ \file{datenumbergerman.ldf}{\from{datenumber.dtx}{german}}
+ \file{datenumberdummy.ldf}{\from{datenumber.dtx}{dummy}}
+}
+
+\Msg{************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space datenumber.sty}
+\Msg{*}
+\Msg{*}
+\Msg{* To produce the documentation you}
+\Msg{* can run the file `datenumber.dtx' through LaTeX:}
+\Msg{* \space latex datenumber.dtx}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{************************************************************}
+\endbatchfile
+%%
+%% End of file `datenumber.ins'.
diff --git a/macros/latex/contrib/datenumber/doc.pdf b/macros/latex/contrib/datenumber/doc.pdf
new file mode 100644
index 0000000000..50d3269e9e
--- /dev/null
+++ b/macros/latex/contrib/datenumber/doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/datenumber/doc.tex b/macros/latex/contrib/datenumber/doc.tex
new file mode 100644
index 0000000000..60d5351d66
--- /dev/null
+++ b/macros/latex/contrib/datenumber/doc.tex
@@ -0,0 +1,211 @@
+%%
+%% This is file `docgerman.tex'.
+%%
+%% 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
+%%
+
+\documentclass[draft]{article}
+\usepackage{datenumber}
+
+\oddsidemargin 0.25in
+\textwidth 5.875 in
+\addtolength{\textheight}{8\baselineskip}
+\addtolength{\topmargin}{-5\baselineskip}
+
+\title{The {\tt datenumber.sty} package \fileversion}
+
+\author{J\"org-Michael Schr\"oder\\{\small\texttt{schrj020@mail.uni-mainz.de}}}
+
+\date{\filedate}
+
+\newcounter{dateone}\newcounter{datetwo}%
+\newcommand{\daydifftoday}[3]{%
+ \setmydatenumber{dateone}{\the\year}{\the\month}{\the\day}%
+ \setmydatenumber{datetwo}{#1}{#2}{#3}%
+ \addtocounter{datetwo}{-\thedateone}%
+ \thedatetwo
+}
+
+\newcommand{\sd}{%
+\ifcase\thedatedayname \or
+ Mon\or Tue\or Wed\or Thu\or
+ Fri\or Sat\or Sun\fi
+}%
+
+\newcommand{\pnext}{%
+\thedateyear/%
+\ifnum\value{datemonth}<10 0\fi
+\thedatemonth/%
+\ifnum\value{dateday}<10 0\fi
+\thedateday%
+\nextdate
+}
+
+\begin{document}
+\maketitle
+\begin{abstract}
+
+This package provides commands to convert a date into a number. Turned around a date can be calculated also by a number. Additionally there are commands for incrementing and decrementing a date. Leap years and the Gregorian calendar reform are considered.
+\end{abstract}
+
+\tableofcontents
+\section{Start year}
+The start of the counting is determined with \verb+\setstartyear{year}+ (standard 1800). The first day of the start year gets the number 1. The value of \texttt{startyear} must be greater 0. It may not be larger than the year of a date to be calculated. If the difference of date and \texttt{startyear} is large, the calculation can last for a long time. The correct setting of the weekdays is guaranteed only if the value of \texttt{startyear} is 1800, 1900 or 2000.
+\section{Counters}
+There are five counters defined
+\begin{description}
+\item[\texttt{datenumber}:] number of the day
+\item[\texttt{dateyear}:] year
+\item[\texttt{datemonth}:] month
+\item[\texttt{dateday}:] day
+\item[\texttt{datedayname}:] weekday: 1--7 (Monday--Sunday)
+\end{description}
+\section{Macros}
+\subsection{Macros which operate with defined counters\label{macro}}
+All counters specified above are updated by these macros. \verb+\datedayname+ and \verb+\datemonthname+ are also updated.
+\begin{description}
+\item[\texttt{\textbackslash setdatenumber\{year\}\{month\}\{day\}}:] Sets the counter \texttt{datenumber} to a value, which corresponds to the date.
+\item[\texttt{\textbackslash setdatebynumber\{number\}}:] Sets the counters \texttt{dateyear}, \texttt{datemonth}, and \texttt{dateday} to values, which corresponds to the number.
+\item[\texttt{\textbackslash nextdate}:] Sets the counters \texttt{dateyear}, \texttt{datemonth}, and \texttt{dateday} to the next date.
+\item[\texttt{\textbackslash prevdate}:] Sets the counters \texttt{dateyear}, \texttt{datemonth}, and \texttt{dateday} to the previous date.
+\item[\texttt{\textbackslash setdate\{year\}\{month\}\{day\}}:] Sets the counters \texttt{dateyear}, \texttt{datemonth}, and \texttt{dateday} to \texttt{year}, \texttt{month}, and \texttt{day}.
+\item[\texttt{\textbackslash setdatetoday}:] Sets the counters \texttt{dateyear}, \texttt{datemonth}, and \texttt{dateday} to the current date.
+\item[\texttt{\textbackslash datemonthname}:] typesets the month (see section \ref{monthname}).
+\item[\texttt{\textbackslash datedayname}:] typesets the weekday (see section \ref{dayname}).
+\item[\texttt{\textbackslash datedate}:] typesets the date, corresponding to the counters \texttt{dateyear}, \texttt{datemonth}, \texttt{dateday}.
+\end{description}
+\subsection{Macros which operate with your own counters}
+Only the counters you specified are updated by these macros. \verb+\datedayname+ and \verb+\datemonthname+ are not updated.
+\begin{description}\sloppypar
+\item[\texttt{\textbackslash setmydatenumber\{numbercount\}\{year\}\{month\}\{day\}}:] Sets the counter \texttt{numbercount} to a value, which corresponds to the date.
+\item[\texttt{\textbackslash setmydatebynumber\{number\}\{yearcount\}\{monthcount\}\{daycount\}}:] Sets the counters \texttt{yearcount}, \texttt{monthcount}, and \texttt{daycount} to values, which corresponds to the number.
+\item[\texttt{\textbackslash mynextdate\{yearcount\}\{monthcount\}\{daycount\}}:] Sets the counters \texttt{yearcount}, \texttt{monthcount}, and \texttt{daycount} to the next date.
+\item[\texttt{\textbackslash mynextdate\{yearcount\}\{monthcount\}\{daycount\}}:]Sets the counters \texttt{yearcount}, \texttt{monthcount}, and \texttt{daycount} to the previous date.
+\end{description}
+
+\subsection{Month\label{monthname}}
+The command \verb+\datemonthname+ typesets the month. It is updated by macros described in section \ref{macro}. You can do this by your own saying \verb+\setmonthname{number}+.
+
+\subsection{Weekday\label{dayname}}
+To typeset the weekday say \verb+\datedayname+. This command is updated by macros described in section \ref{macro}.
+You can do this by your own saying \verb+\setmonthname{number}+ (1 for Monday and 7 for Sunday). You can also write \verb+\setdaynamebynumber{number}+, were \verb+number+ is the number of a date. If \texttt{startyear} is set to 1800, 1900 or 2000 the calculation of the weekday will work.
+
+\section{Language}\sloppypar
+The language options \texttt{english}, \texttt{USenglish} (standard), \texttt{french}, \texttt{spanish}, \texttt{german}, and \texttt{ngerman} are supported. Say \verb+\dateselectlanguage{language}+ to select a language. For other languages: Create a file \texttt{datenumbermylanguage.ldf}. Copy the text from \texttt{datenumberdummy.ldf}. Replace every ``dummy'' with ``mylanguage'' and change the months and weekdays. Say \verb+\usepackage{datenumber}+ \verb+\input{datenumbermylanguage.ldf}+ in your document.
+
+\section{Examples}
+\begin{quote}
+\begin{verbatim}
+\setdate{2002}{1}{1}%
+\thedatenumber
+\end{verbatim}
+\setdate{2002}{1}{1}%
+Result: \thedatenumber
+\end{quote}
+
+\begin{quote}
+\begin{verbatim}
+\setdatetoday
+\addtocounter{datenumber}{10}%
+\setdatebynumber{\thedatenumber}%
+In 10 days is \datedate
+\end{verbatim}
+\setdatetoday
+\addtocounter{datenumber}{10}%
+\setdatebynumber{\thedatenumber}%
+Result: In 10 days is \datedate
+\end{quote}
+
+\begin{quote}
+\begin{verbatim}
+\newcounter{dateone}\newcounter{datetwo}%
+
+\newcommand{\daydifftoday}[3]{%
+ \setmydatenumber{dateone}{\the\year}{\the\month}{\the\day}%
+ \setmydatenumber{datetwo}{#1}{#2}{#3}%
+ \addtocounter{datetwo}{-\thedateone}%
+ \thedatetwo
+}
+
+There is still \daydifftoday{\the\year}{12}{25} days to Christmas.
+\end{verbatim}
+Result: There is still \daydifftoday{\the\year}{12}{25} days to Christmas.
+\end{quote}
+
+\clearpage
+\begin{quote}
+\begin{verbatim}
+\newcommand{\sd}{%
+\ifcase\thedatedayname \or
+ Mon\or Tue\or Wed\or Thu\or
+ Fri\or Sat\or Sun\fi
+}%
+
+\newcommand{\pnext}{%
+\thedateyear/%
+\ifnum\value{datemonth}<10 0\fi
+\thedatemonth/%
+\ifnum\value{dateday}<10 0\fi
+\thedateday%
+\nextdate
+}
+
+\setdate{2001}{9}{29}%
+\[\begin{tabular}{lll}
+\sd & \pnext & Abc\\
+\sd & \pnext & Def\\
+\sd & \pnext & Ghi\\
+\sd & \pnext & Jkl\\
+\end{tabular}\]
+\end{verbatim}
+Result: \setdate{2001}{9}{29}%
+\[\begin{tabular}{lll}
+\sd & \pnext & Abc\\
+\sd & \pnext & Def\\
+\sd & \pnext & Ghi\\
+\sd & \pnext & Jkl\\
+\end{tabular}\]
+\end{quote}
+
+\section{Other}
+\begin{itemize}
+\item leap year test
+\begin{quote}
+\begin{verbatim}
+The \the\year\ is
+\ifleapyear{\the\year} a \else no \fi leap year.
+\end{verbatim}
+Result: The \the\year\ is \ifleapyear{\the\year} a \else no \fi leap year.
+\end{quote}
+\item date test
+\begin{quote}
+\begin{verbatim}
+The 29.2.1900 is
+\ifvaliddate{1900}{2}{29} a \else no \fi valid date.
+\end{verbatim}
+Result: The 29.2.1900 is \ifvaliddate{1900}{2}{29} a \else no \fi valid date.%
+\footnote{There are programs, which have another opinion about that. Search for ''Gregorian calendar'' in order to get more information about leap years and October 5, 1582}
+\end{quote}
+\end{itemize}
+
+\end{document}
+\endinput
+%%
+%% End of file `doc.tex'.
diff --git a/macros/latex/contrib/datenumber/docgerman.pdf b/macros/latex/contrib/datenumber/docgerman.pdf
new file mode 100644
index 0000000000..b6745d0194
--- /dev/null
+++ b/macros/latex/contrib/datenumber/docgerman.pdf
Binary files differ
diff --git a/macros/latex/contrib/datenumber/docgerman.tex b/macros/latex/contrib/datenumber/docgerman.tex
new file mode 100644
index 0000000000..4d9271f317
--- /dev/null
+++ b/macros/latex/contrib/datenumber/docgerman.tex
@@ -0,0 +1,209 @@
+%%
+%% This is file `docgerman.tex'.
+%% generated with the docstrip utility.
+%%
+%% 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
+%%
+
+\documentclass[a4paper,draft]{article}
+\usepackage[german]{datenumber}
+\usepackage{german}
+\oddsidemargin 0.25in
+\textwidth 5.875 in
+\addtolength{\textheight}{7\baselineskip}
+\addtolength{\topmargin}{-5\baselineskip}
+
+\title{Das {\tt datenum.sty} Paket \fileversion}
+\author{J"org-Michael Schr"oder\\{\small\texttt{schrj020@mail.uni-mainz.de}}}
+\date{\filedate}
+
+\newcounter{dateone}\newcounter{datetwo}%
+\newcommand{\daydifftoday}[3]{%
+ \setmydatenumber{dateone}{\the\year}{\the\month}{\the\day}%
+ \setmydatenumber{datetwo}{#1}{#2}{#3}%
+ \addtocounter{datetwo}{-\thedateone}%
+ \thedatetwo
+}
+
+\newcommand{\sd}{%
+\ifcase\thedatedayname \or
+ Mo.\or Di.\or Mi.\or Do.\or
+ Fr.\or Sa.\or So.\fi
+}%
+
+\newcommand{\pnext}{%
+\ifnum\value{dateday}<10 0\fi
+\thedateday.%
+\ifnum\value{datemonth}<10 0\fi
+\thedatemonth.\thedateyear
+\nextdate
+}
+
+\begin{document}
+\maketitle
+\begin{abstract}
+Dieses Paket stellt Kommandos zur Verf"ugung, mit denen sich ein Datum in eine nat"urliche Zahl umwandeln l"a"st. Umgekehrt kann auch aus einer Zahl ein Datum errechnet werden. Au"serdem gibt es Kommandos zur Inkrementierung und Dekrementierung eines Datums. Schaltjahre und die Gregorianische Kalenderreform werden ber"ucksichtigt.
+\end{abstract}
+
+\tableofcontents
+\section{Startjahr}
+Der Start der Z"ahlung wird mit \verb+\setstartyear{year}+ festgelegt (Standard 1800).
+Der 01.01. des Startjahres bekommt die Nummer 1. Der Wert von \texttt{startyear} mu"s mindestens 1 sein darf aber nicht gr"o"ser sein als das Jahr eines Datums f"ur das eine Nummer berechnet werden soll. Je gr"o"ser die Differenz von Datum und Startjahr ist, desto l"anger dauern die Berechnungen. Die richtige Berechnung der Wochentage ist nur garantiert, wenn \texttt{startyear} auf 1800, 1900 oder 2000 gesetzt ist. Ausgegeben wird das Jahr mit \verb+\thestartyear+.
+\section{Z"ahler}
+Es werden f"unf Z"ahler definiert
+\begin{description}
+\item[\texttt{datenumber}:] Nummer des Tages
+\item[\texttt{dateyear}:] Jahr
+\item[\texttt{datemonth}:] Monat
+\item[\texttt{dateday}:] Tag
+\item[\texttt{datedayname}:] Wochentag: 1--7 entspricht Montag--Sonntag
+\end{description}
+Diese Z"ahler werden von den meisten Makros verwendet. Es gibt aber auch Makros denen eigene Z"ahler "ubergeben werden k"onnen.
+\section{Makros}
+\subsection{Makros mit Standardz"ahlern\label{macro}}
+Bei diesen Makros werden alle oben genannten Z"ahler, der Wochentag und der Monatsname aktualisiert.
+
+\begin{description}
+\item[\texttt{\textbackslash setdatenumber\{year\}\{month\}\{day\}}:] Setzt den Z"ahler \texttt{datenumber} auf den Wert, der dem Datum entspricht.
+\item[\texttt{\textbackslash setdatebynumber\{number\}}:] Setzt die Z"ahler \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} auf die Werte, die der Nummer entsprechen.
+\item[\texttt{\textbackslash nextdate}:] Setzt die Z"ahler \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} auf das n"achste Datum.
+\item[\texttt{\textbackslash prevdate}:] Setzt die Z"ahler \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} auf das vorherige Datum.
+\item[\texttt{\textbackslash setdate\{year\}\{month\}\{day\}}:] Setzt die Z"ahler \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} auf die "ubergebenen Werte.
+\item[\texttt{\textbackslash setdatetoday}:] Setzt die Z"ahler \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} auf das aktuelle Datum.
+\item[\texttt{\textbackslash datemonthname}:] Gibt den Namen des Monats aus (Siehe Abschnitt \ref{monthname}).
+\item[\texttt{\textbackslash datedayname}:] Gibt den Namen des Wochentages aus (Siehe Abschnitt \ref{dayname}).
+\item[\texttt{\textbackslash datedate}:] Gibt das Datum aus, da"s den Z"ahlern \texttt{dateyear}, \texttt{datemonth} und \texttt{dateday} entspricht.
+\end{description}
+\subsection{Makros mit eigenen Z"ahlern}
+Bei diesen Makros werden weder die oben genannten Z"ahler ge"andert (es sei denn, ihre Namen werden hier "ubergeben), noch werden der Wochentag und der Monatsname aktualisiert.
+\begin{description}\sloppypar
+\item[\texttt{\textbackslash setmydatenumber\{numbercount\}\{year\}\{month\}\{day\}}:] Setzt den Z"ahler \texttt{numbercount} auf den Wert, der dem Datum entspricht.
+\item[\texttt{\textbackslash setmydatebynumber\{number\}\{yearcount\}\{monthcount\}\{daycount\}}:] Setzt die Z"ahler \texttt{yearcount}, \texttt{monthcount} und \texttt{daycount} auf die Werte, die der Nummer entsprechen.
+\item[\texttt{\textbackslash mynextdate\{yearcount\}\{monthcount\}\{daycount\}}:] Setzt die Z"ahler \texttt{yearcount}, \texttt{monthcount} und \texttt{daycount} auf das n"achste Datum.
+\item[\texttt{\textbackslash mynextdate\{yearcount\}\{monthcount\}\{daycount\}}:] Setzt die Z"ahler \texttt{yearcount}, \texttt{monthcount} und \texttt{daycount} auf das vorherige Datum.
+\end{description}
+
+\subsection{Monatsname\label{monthname}}
+Der Monatsname wird von den Makros aus Abschnitt \ref{macro} mit dem Aufruf \verb+\setmonthname{number}+ aktualisiert. Der Name steht mit \verb+\datemonthname+ zur Verf"ugung.
+
+\subsection{Wochentag\label{dayname}}
+Makros aus Abschnitt \ref{macro} definieren das Kommando \verb+\datedayname+ entsprechend dem Datum. Man kann mit \verb+\setdayname{number}+ den Wochentag auch explizit setzen, wobei 1 Montag und 7 Sonntag entspricht. Auch mit der laufenden Nummer eines Tages l"a"st sich der Wochentag setzen: \verb+\setdaynamebynumber{number}+. Das Ganze funktioniert richtig, wenn \texttt{startyear} auf 1800, 1900 oder 2000 gesetzt ist.
+
+\section{Sprachunterst"utzung}\sloppypar
+Bisher werden die Sprachenoptionen \texttt{english}, \texttt{USenglish} (Standard), \texttt{french}, \texttt{spanish}, \texttt{german} und \texttt{ngerman} unterst"utzt. Um eine Sprache auszuw"ahlen, schreibe \verb+\dateselectlanguage{language}+.
+F"ur andere Sprachen: Erstelle eine Datei \texttt{datenumbermylanguage.ldf}. Kopiere den Inhalt von \texttt{datenumberdummy.ldf}. Ersetzte jedes Vorkommen von "`dummy"' durch "`mylanguage"' und "andere die Namen f"ur Monat und Wochentag. Nach \verb+\usepackage{datenumber}+ f"uge \verb+\input{datenumbermylanguage.ldf}+ in das Dokument ein.
+
+\section{Beispiele}
+\begin{quote}
+\begin{verbatim}
+\setdate{2002}{1}{1}%
+\thedatenumber
+\end{verbatim}
+\setdate{2002}{1}{1}%
+Ergebnis: \thedatenumber
+\end{quote}\vspace{\baselineskip}
+
+\begin{quote}
+\begin{verbatim}
+\setdatetoday
+\addtocounter{datenumber}{10}%
+\setdatebynumber{\thedatenumber}%
+In 10 Tagen ist der \datedate
+\end{verbatim}
+\setdatetoday
+\addtocounter{datenumber}{10}%
+\setdatebynumber{\thedatenumber}%
+Ergebnis: In 10 Tagen ist der \datedate
+\end{quote}\vspace{\baselineskip}
+
+\begin{quote}
+\begin{verbatim}
+\newcounter{dateone}\newcounter{datetwo}%
+
+\newcommand{\daydifftoday}[3]{%
+ \setmydatenumber{dateone}{\the\year}{\the\month}{\the\day}%
+ \setmydatenumber{datetwo}{#1}{#2}{#3}%
+ \addtocounter{datetwo}{-\thedateone}%
+ \thedatetwo
+}
+
+Bis Weinachten sind es noch \daydifftoday{\the\year}{12}{25} Tage.
+\end{verbatim}
+Ergebnis: Bis Weinachten sind es noch \daydifftoday{\the\year}{12}{25} Tage.
+\end{quote}\vspace{\baselineskip}
+
+\clearpage
+\begin{quote}
+\begin{verbatim}
+\newcommand{\sd}{%
+\ifcase\thedatedayname \or
+ Mo.\or Di.\or Mi.\or Do.\or
+ Fr.\or Sa.\or So.\fi
+}%
+
+\newcommand{\pnext}{%
+\ifnum\value{dateday}<10 0\fi
+\thedateday.%
+\ifnum\value{datemonth}<10 0\fi
+\thedatemonth.\thedateyear
+\nextdate
+}
+
+\setdate{2001}{9}{29}%
+\[\begin{tabular}{lll}
+\sd & \pnext & Abc\\
+\sd & \pnext & Def\\
+\sd & \pnext & Ghi\\
+\sd & \pnext & Jkl\\
+\end{tabular}\]
+\end{verbatim}
+Ergebnis: \setdate{2001}{9}{29}%
+\[\begin{tabular}{lll}
+\sd & \pnext & Abc\\
+\sd & \pnext & Def\\
+\sd & \pnext & Ghi\\
+\sd & \pnext & Jkl\\
+\end{tabular}\]
+\end{quote}
+
+\section{Sonstiges}
+\begin{itemize}
+\item Test auf Schaltjahr
+\begin{quote}
+\begin{verbatim}
+Das Jahr \the\year\ ist
+\ifleapyear{\the\year} ein \else kein \fi Schaltjahr.
+\end{verbatim}
+Ergebnis: Das Jahr \the\year\ ist \ifleapyear{\the\year} ein \else kein \fi Schaltjahr.
+\end{quote}
+\item Test auf g"ultiges Datum
+\begin{quote}
+\begin{verbatim}
+Das Datum 29.2.1900 ist
+\ifvaliddate{1900}{2}{29} g"ultig\else nicht g"ultig\fi.
+\end{verbatim}
+Ergebnis: Das Datum 29.2.1900 ist \ifvaliddate{1900}{2}{29} g"ultig\else nicht g"ultig\fi.%
+\footnote{Es gibt einige Programme, die dazu eine andere Meinung haben. F"ur mehr Information "uber Schaltjahre und den 5. Oktober 1582 suche nach "`Gregorian calendar"'.}
+\end{quote}
+\end{itemize}
+\end{document}
+\endinput
+%%
+%% End of file `docgerman.tex'.