% \iffalse ********************************************* METACOMMENT
%
%                   TeX this file with LaTeX2e !
%
%       The following files will be written:
%
%       ==> filo.dvi            Documentation (read this first)
%
%       --> bsp.tex             an example file
%       --> filo.cls            class file for filo fax
%       --> moon.sty            moon phase package
%       --> umoon.fd            moon phase font description file
%       --> moon10.mf           moon phase font
%
%% Copyright :  Kai-Uwe Bux
%% ---------    Norderneystra▀e 26
%%              D-26419 Schortens/Heidm³hle (Germany)
%%
%% *****************************************************************
% >>>>>>>>>  !! Proliferation of UNCHANGED versions of !!  <<<<<<<<<
%            !! this file is permitted                 !!
%
% >>>>>>>>>  !! Don't change this file without changing !! <<<<<<<<<
%            !! it's name                               !!
% ******************************************************************
%
%    \begin{macrocode}
%<*klasse|beispiel|pkgmoon|fdmoon>
\def\FileVersion{$\alpha$-Test}
\def\FileDate{1999/12/05}
\def\FileDescription{eine Dokumentenklasse f³r Terminplanereinlagen, das Paket beinhaltet METAFONT Quellcode!}
%</klasse|beispiel|pkgmoon|fdmoon>
%    \end{macrocode}
%
% ********************************************** END METACOMMENT \fi
%
% \CheckSum{0}
%
% \iffalse ********************************************* METACOMMENT
%    \begin{macrocode}
%<*driver>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\edef\ThisVersion{\FileVersion}
\edef\ThisDate{\FileDate}
%</driver>
%    \end{macrocode}
% ********************************************** END METACOMMENT \fi
%
% \iffalse ******************************************** METATCOMMENT
%
%   Dieser Abschnitt erscheint nicht in der Dokumentation
%
%   \Section{Installation}
%     Was jetzt kommt, ist ein wenig trickreich, da wir diese
%     Datei zugleich als DocStrip-Batch benutzen m"ussen.
%     Das hei"st, wir m"ussen daf"ur sorgen, da"s sie auch
%     bei zeilenweiser Bearbeitung sinnvoll bleibt.
%    \begin{macrocode}
%<*installation>
\ifx\undefined\batchfile\begingroup\newtoks\List\fi
  \def\batchfile{filo.dtx}
  \makeatletter
  \let\@@end=\relax
  \List={}
\def\File#1#2{\List=\expandafter{\the\List\file{#1}{\from{filo.dtx}{#2}}}}
  \File{filo.cls}{klasse}
  \File{bsp.tex}{beispiel}
  \File{moon10.mf}{mfmoon}
  \File{umoon.fd}{fdmoon}
  \File{moon.sty}{stymoon}
\def\G{\expandafter\expandafter\expandafter\generate\expandafter{\expandafter\askonceonly\the\List}}
  \def\GenerateAll{\G\let\GenerateAll\relax}
  \def\StopInput{\endinput\let\StopInput\relax}
  \input docstrip.tex
  \GenerateAll
  \StopInput
\endgroup
%    \end{macrocode}
%     Jetzt liegen die folgenden Dateien vor:
%     \begin{enumerate}
%       \item \file{filo.cls}
%       \item \file{bsp.tex}
%       \item \file{moon10.mf}, \file{umoon.fd} und \file{moon.sty}
%     \end{enumerate}
%
%     Jetzt basteln wir uns noch das Inhaltsverzeichnis und die
%     Hilfsdatei zusammen, damit nachher ein \LaTeX-Lauf reicht.
%    \begin{macroccode}
%\begin{filecontents}{filo.toc}
%\IfFileExists{babel.sty}{%
%  \select@language {german}
%}{}
%\end{filecontents}
\begin{filecontents}{filo.aux}
\relax 
\IfFileExists{babel.sty}{%
  \select@language{german}
  \@writefile{toc}{\select@language{german}}
  \@writefile{lof}{\select@language{german}}
  \@writefile{lot}{\select@language{german}}
}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Die \textsf  {filo}-Dokumentenklasse}{2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Optionen der \textsf  {filo}-Klasse}{2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Mondphasen}{2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Feiertage}{2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.3}Papierformat und Seitenlayout}{2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Voreinstellungen und globale Parameter}{3}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Makros und Umgebungen}{3}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Implementation}{4}}
\end{filecontents}
%</installation>
%    \end{macrocode}
%
% ********************************************** END METACOMMENT \fi
% 
% \iffalse ********************************************* METACOMMENT
%
% Dieser Abschnitt erscheint nicht in der Dokumentation
%
%   \Section{Die Erzeugung der Dokumentation}
%     Nun liegen also alle Dateien vor. Jetzt sollte die Beschreibung
%     erfolgen. Zum Gl"uck k"onnen wir die Pakete schon benutzen.
%
%    \begin{macrocode}
%<*driver>
\documentclass[12pt]{ltxdoc}
  \IfFileExists{babel.sty}{%
    \usepackage[german]{babel}
  }{%
    \usepackage{german}
  }
  \newcommand{\pkg}[1]{\textsf{#1}}
  \newcommand{\cls}[1]{\textsf{#1}}
  \newcommand{\file}[1]{\texttt{#1}}
  \newcommand{\env}[1]{\texttt{#1}}
  \newcommand{\opt}[1]{\textsf{#1}}
  \newcommand{\sect}[1]{{#1}}
  \newcommand{\sty}[1]{\emph{#1}}
  \newcommand{\ARG}[1]{\emph{#1}}
  \newcommand{\GobbleOne}[1]{}
  \newcommand{\Section}{\newpage\section}
  \newcommand{\finalnopagebreak}{\nopagebreak}
  \newcommand{\finalpagebreak}{\pagebreak}
%
  \OnlyDescription
%
\begin{document}
  \title{Terminplanereinlagen mit \LaTeX\\
         Die \cls{filo}-Dokumentenklasse}
  \author{Kai-Uwe Bux}
  \date{\begin{tabular}{ll}
           Datum:   & \ThisDate\\
           Version: & \ThisVersion
        \end{tabular}}
  \maketitle
%  \thispagestyle{empty}\newpage
%  \setcounter{page}{1}
%  \tableofcontents
  \DocInput{filo.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% ********************************************** END METACOMMENT \fi
%
% \section*{Installation}
%   Nachdem die Datei \file{filo.dtx} ge\TeX{}t ist, liegen folgende
%   neue Dateien neben der Datei \file{file.dvi} im aktuellen Verzeichnis:
%     \begin{enumerate}
%       \item \file{filo.cls}
%       \item \file{bsp.tex}
%       \item \file{moon10.mf}, \file{umoon.fd} und \file{moon.sty}
%     \end{enumerate}
%   Die Dateien \file{filo.cls}, \file{umoon.fd} und \file{moon.sty}
%   geh"oren in ein Verzeichnis, das von \TeX\ bzw.\ \LaTeX\ nach
%   Makropaketen durchsucht wird. (\TeX{}inputs-Pfad)
%
%   Die Datei \file{moon10.mf} geh"ort in ein Verzeichnis, das von
%   {\small \textsf{METAFONT}} durchsucht wird. Mit Hilfe dieses
%   Programms ist gegebenenfalls, wenn das System dies nicht bei Bedarf
%   automatisch tut, die Font-Metrik-Datei \file{moon10.tfm} zu
%   erzeugen. Daf"ur ist ein Aufruf von der Art
%   \begin{quote}
%     |mf \mode=localmode; input moon10|
%   \end{quote}
%   abzusetzen. Die Datei \file{moon10.tfm} geh"ort in ein Verzeichnis,
%   das \TeX\ nach Fontmetriken durchsucht.
%
% \Section{Die \cls{filo}-Dokumentenklasse}
%   Die dokumentenklasse \cls{filo} stellt Makros und Umgebungen
%   bereit, mit deren Hilfe sich leicht Einlagen f"ur Terminplaner
%   herstellen lassen. Sie wird in der "ublichen Weise als obligatorisches
%   Argument des |\documentclass|-Makros angegeben.
%
%   \subsection{Optionen der \cls{filo}-Klasse}
%     \subsubsection{Mondphasen}
%       Wer Angaben "uber Mondphasen haben will, kann diesem Wunsch
%       durch Angabe der Option \opt{mond} Ausdruck verleihen. Wer das
%       nicht m"ochte, w"ahle \opt{keinmond}.
%
%     \subsubsection{Feiertage}
%       Die \cls{filo}-Klasse berechnet selbstst"andig Feiertage.
%       Welche der Feiertage ausgegeben werden sollen kann mit den
%       Optionen \opt{gesetzlich}, \opt{katholisch}, \opt{evangelisch},
%       \opt{andere} und \opt{daten} gesteuert werden -- \opt{daten}
%       prodiziert im eigentlichen Sinne keine Feiertage sondern
%       Angaben "uber Anfang und Ende der Sommerzeit etc.
%
%       Wer alle Informationen haben will, kann einfach die Option
%       \opt{alle} angeben.
%
%       Information dar"uber, in welchen Bundesl"andern ein Feiertag
%       als gesetzlicher Tag der Arbeitsruhe und seelischen Erbauung
%       vor allzu gro"ser Aktivit"at der Staatsb"urger gesch"utzt ist,
%       erh"alt man durch die Option \opt{laender}. Entsprechend
%       erh"alt man durch Angabe der Option \opt{konfession} Angaben
%       dar"uber, welche Feiertage katholisch und welche evangelisch
%       sind.
%
%     \subsubsection{Papierformat und Seitenlayout}
%       Neben den "ublichen Papierformaten wie \opt{a4paper} und
%       \opt{legal} gibt es die Formate \opt{a4wide} und \opt{legalwide}
%       sowie \opt{typewriter} und \opt{typewriterwide} f"ur
%       Schreibmaschinenpapier, das etwas kleiner ist als Din~A4.
%
%       Mit der \opt{zweiblatt}- bzw.\ \opt{dreiblatt}-Option l"a"st
%       sich die Anzahl der Einlagenbl"atter je Seite steuern.
%
%       Das Aussehen der Terminplanereinlagen kann mit Hilfe der
%       Optionen \opt{ich}~(Eine Woche pro Doppelseite dabei links
%       ein PLan f"ur Aktivit"aten, die keinem Tag zugeordnet sind),
%       \opt{sven}~(zwei Wochen je Doppelseite) und
%       \opt{thomas}~(eine Woche je Doppelseite, drei Tage links, vier rechts)
%       beeinflu"st werden.
%
%       Wenn man die Option \opt{rotated} angibt, wird der Output
%       um 90~Grad gedreht, so da"s man auch auf senkrechtem A4-Papier
%       noch drei Einlagenbl"atter unterbringen kann. Erforderlich daf"ur
%       ist allerdings das \pkg{rotating}-Paket.
%
%   \subsection{Voreinstellungen und globale Parameter}
%     Gibt man keine Optionen an, so wird DinA4-Papier senkrecht
%     angenommen, die \cls{filo}-Klasse packt zwei Einlagenseiten auf ein
%     Blatt, und es werden weder Mondphasen noch Feiertage angegeben.
%     Das Layout der Einlagen erfolgt gem"a"s der \opt{ich}-Option.
%
%     Die H"ohe und Breite der Einlagenbl"atter wird "uber die L"angenparameter
%     |\blatthoehe| und |\blattbreite| angegeben. Die Breite von
%     Lochrand und Schnittrand durch |\lochrand| und |\schnittrand|.
%     Voreingestellt sind eine H"ohe von 17,5cm, eine Breite von 9,5cm
%     sowie R"ander von 1cm bzw.\ 2mm Breite.
%
%     Die L"angen |\DruckerKorrekturOben| und |\DruckerKorrekturLinks|
%     kann der Benutzer dazu verwenden, Vorder- und R"uckseite bei
%     zweiseitigem Druck zur Deckung zu bringen, falls der gro"se
%     Systemadministrator nicht zu der Einsicht zu bringen sein sollte,
%     sein \TeX-System sei fehlerhaft konfiguriert.
%
%   \subsection{Makros und Umgebungen}
%     Die wichtigste Funktion ist sicher das Erstellen von
%     Wochen"ubersichten f"ur ein ganzes Jahr. Hierf"ur gibt es die Umgebung
%     \env{termine}. Man schreibt sowas wie
%     \begin{quote}
%       |\begin{termine}{|\ARG{jahr}|}|\\
%       |  20.3  Martins Geburtstag|\\
%       |  15.11 Hannelores Hochzeitstag|\\
%       |  |$\vdots$\\
%       |\end{termine}|
%     \end{quote}
%     Dadurch erh"alt man dann die Terminplanereinlagen f"ur das angegebene
%     Jahr. Darin enthalten sind Angaben "uber Feiertage und die angegebenen
%     Termine.
%
%     Einen Jahreskalender, in dem man Wochentage ablesen kann, erh"alt
%     man mit |\Kalendarium{|\ARG{jahr}|}|.
%
%     Mit den Makros |\Listen{|\ARG{anzahl}|}|,
%     |\Adresslisten{|\ARG{anzahl}|}| und
%     |\Projektplaene{|\ARG{anzahl}|}| erh"alt man entsprechende
%     Einlagen.
%
% \section{Implementation}
%   Eine Dokumentation der Implementierung ist noch nicht verf"ugbar.
%   \StopEventually{}
% 
%    \begin{macrocode}
%<*klasse>
\ProvidesClass{filo}[\FileDate, \FileVersion\space Terminplanereinlagen (Kai-Uwe Bux)]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Optionen
%
\DeclareOption{a4wide}{%
  \AtEndOfClass{%
    \paperheight=210mm%
    \paperwidth=297mm%
  }%
}
\DeclareOption{a4paper}{%
  \AtEndOfClass{%
    \paperheight=297mm%
    \paperwidth=210mm%
  }%
}
\DeclareOption{legalwide}{%
  \AtEndOfClass{%
    \paperheight=8in%
    \paperwidth=11.5in%
  }%
}
\DeclareOption{legalpaper}{%
  \AtEndOfClass{%
    \paperheight=11.5in%
    \paperwidth=8in%
  }%
}
\DeclareOption{typewriter}{%
  \AtEndOfClass{%
    \paperheight=295.2mm%
    \paperwidth=209mm%
  }%
}
\DeclareOption{typewriterwide}{%
  \AtEndOfClass{%
    \paperheight=209mm%
    \paperwidth=295.2mm%
  }%
}
  \newcommand{\DruckAufteilung}{%
  % --> DruckZyklus!
    \MeineAufteilung
  }
  \newcount\@starttag
  \@starttag=0%          Montag
\DeclareOption{ich}{%
  \renewcommand{\DruckAufteilung}{%
    \MeineAufteilung
  }%
  \@starttag=0
}
\DeclareOption{sven}{%
  \renewcommand{\DruckAufteilung}{%
    \EspunktsAufteilung%
  }%
  \@starttag=0
}
\DeclareOption{thomas}{%
  \renewcommand{\DruckAufteilung}{%
    \ThomasAufteilung
  }%
  \@starttag=3
}
\newcount\blattjeseite
\DeclareOption{dreiblatt}{%
  \blattjeseite=3
}
\DeclareOption{zweiblatt}{%
  \blattjeseite=2
}
\newif\if@rotated
\@rotatedfalse
\DeclareOption{rotated}{%
  \@rotatedtrue
  \AtEndOfClass{\RequirePackage{rotating}}
}
\newcommand{\filo@gesetzlich}{ne}
\newcommand{\filo@katholisch}{ne}
\newcommand{\filo@evangelisch}{ne}
\newcommand{\filo@andere}{ne}
\newcommand{\filo@daten}{ne}
\newcommand{\filo@friesisch}{ja}
\DeclareOption{gesetzlich}{%
  \renewcommand{\filo@gesetzlich}{ja}
}
\DeclareOption{katholisch}{%
  \renewcommand{\filo@katholisch}{ja}
}
\DeclareOption{evangelisch}{%
  \renewcommand{\filo@evangelisch}{ja}
}
\DeclareOption{andere}{%
  \renewcommand{\filo@andere}{ja}
}
\DeclareOption{daten}{%
  \renewcommand{\filo@daten}{ja}%
}
\DeclareOption{alle}{%
  \ExecuteOptions{gesetzlich,katholisch,evangelisch,andere,daten}%
}
\newif\if@laender
\@laenderfalse
\DeclareOption{laender}{%
  \@laendertrue
}
\newif\if@konfession
\@konfessionfalse
\DeclareOption{konfession}{%
  \@konfessiontrue
}
\newif\if@mond
\@mondfalse
\DeclareOption{mond}{%
  \@mondtrue
}
\DeclareOption{keinmond}{%
  \@mondfalse
}
\DeclareOption*{%
  \PassOptionsToClass{\CurrentOption}{article}%
}
\ExecuteOptions{a4paper,zweiblatt,ich}
\ProcessOptions
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Aufbau auf der article-Klasse
%
\RequirePackage{moon}
\LoadClass{article}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Seitenlayout
%
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Parameter f"ur die Einlagen
  %
  \newlength\blatthoehe
  \newlength\blattbreite
  \newlength\feldbreite
  \newlength\lochrand
  \newlength\schnittrand
  \newlength\DruckerKorrekturLinks
  \DruckerKorrekturLinks=0mm
  \newlength\DruckerKorrekturOben
  \DruckerKorrekturOben=0mm
  \blatthoehe=170mm
  \blattbreite=95mm
  \lochrand=10mm
  \schnittrand=2mm
  \feldbreite=\blattbreite
    \advance\feldbreite by - \lochrand
    \advance\feldbreite by - \schnittrand
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % LaTeX-Parameter setzen
  %
  \AtEndOfClass{%
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %
    % grundlegende Werte
    %
    \parskip=0pt
    \parindent=0pt
    \if@rotated
      \textheight=\blattbreite
      \multiply\textheight by \blattjeseite
      \textwidth=\blatthoehe
    \else
      \textheight=\blatthoehe
      \textwidth=\blattbreite
      \multiply\textwidth by \blattjeseite
    \fi
    \headheight=0pt
    \headsep=0pt
    \hoffset=0pt
    \voffset=0pt
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %
    % Text genau mittig positionieren
    %
    \@tempdima\paperwidth
    \advance\@tempdima by -\textwidth
    \oddsidemargin 0.5\@tempdima
    \advance\oddsidemargin by -1in
    \advance\oddsidemargin by -1\hoffset
    \evensidemargin\oddsidemargin
    \@tempdima\paperheight
    \advance\@tempdima by -\textheight
    \topmargin 0.5\@tempdima
    \advance\topmargin by -1in
    \advance\topmargin by -\voffset
%    \advance\topmargin by -\topskip
    \advance\topmargin by -\headheight
    \advance\topmargin by -\headsep
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Kleinere Berechnungen mit Resten
%
\newcount\result%              Z"ahler f"ur Resultate
%
\newcommand{\div@mod}[2]{%
% #1 = div * #2 + mod
% \count200 := div
% \count201 := div * #2 = #1 - mod
% \count202 := mod
  \count200=#1\relax
  \divide\count200 by #2\relax
  \count201=\count200
  \multiply\count201 by #2\relax
  \count202=#1\relax
  \advance\count202by -\count201
}
\newcommand{\Plus}[2]{%
  \begingroup
    \count200=#1\relax
    \advance\count200 by #2\relax
    \global\result=\count200
  \endgroup
}
\newcommand{\IfVonBis}[3]{%
  \begingroup
    \count200=#1\relax
    \count201=#2\relax
    \count202=#3\relax
    \def\next{\@secondoftwo}%
    \ifnum\count200<\count201
    \else
      \ifnum\count200<\count202
        \def\next{\@firstoftwo}%
      \fi
    \fi
  \expandafter\endgroup\next
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Stringmanipulationen
%
\newcommand{\IfEqualThenElse}[2]{%
  \begingroup
    \edef\tempa{#1}%
    \edef\tempb{#2}%
    \ifx\tempa\tempb
      \def\next{\@firstoftwo}%
    \else
      \def\next{\@secondoftwo}%
    \fi
  \expandafter\endgroup\next
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Kalenderregeln
%
\newcommand{\IfSchaltjahr}[1]{%
  \begingroup
    \def\choice{\@secondoftwo}%
    \div@mod{#1}{4}%
    \ifnum\count202=0%
      \div@mod{#1}{100}%
      \ifnum\count202=0%
        \def\choice{\@firstoftwo}%
      \else
        \div@mod{#1}{400}%
        \ifnum\count202=0%
          \def\choice{\@firstoftwo}%
        \fi
      \fi
    \fi
  \expandafter\endgroup\choice
}
\newcommand{\JulianischesDatumErsterMaerz}[1]{%
% \result := 1.3.#1
  \begingroup
    \result=#1\relax
    \multiply\result by 365
    \div@mod{#1}{4}%
    \advance\result by \count200
    \div@mod{#1}{100}%
    \advance\result by -\count200
    \div@mod{#1}{400}%
    \advance\result by \count200
    \advance\result by 1721120
    \global\result=\result
  \endgroup
}
\newcommand{\JulianischesDatumErsterJanuar}[1]{%
% \result := 1.1.#1
  \begingroup
    \count102=#1\relax
    \advance\count102 by -1
    \JulianischesDatumErsterMaerz{\count102}%
    \global\advance\result by 306
  \endgroup
}
\newcommand{\JulianischesDatum}[3]{%
% #1 : Jahr
% #2 : Monat
% #3 : Tag
% --> \result := julianisches Datum des #3.#2.#1
  \begingroup
    \count100=#1\relax
    \count102=#2\relax
    \count104=#3\relax
    \ifnum\count102<3
      \JulianischesDatumErsterJanuar{\count100}%
      \global\advance\result by -1
      \global\advance\result by \count104
      \ifnum\count102=2
        \global\advance\result by 31
      \fi
    \else
      \JulianischesDatumErsterMaerz{\count100}%
      \global\advance\result by -1
      \global\advance\result by \count104
      \ifcase\count102
        0\or
        1\or
        2\or
        \global\advance\result by 31\or
        \global\advance\result by 61\or
        \global\advance\result by 92\or
        \global\advance\result by 122\or
        \global\advance\result by 153\or
        \global\advance\result by 184\or
        \global\advance\result by 214\or
        \global\advance\result by 245\or
        \global\advance\result by 275\else
        13\relax
      \fi
    \fi
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Rechnen mit Wochentagen
%
\newcommand{\NaechsterSonntag}[1]{%
% #1 : julianisches Datum
% --> result := julianisches Datum des n"achsten Montag
  \begingroup
    \div@mod{#1}{7}%
    \advance\count201 by 6
    \global\result=\count201
  \endgroup
}
\newcommand{\NaechsterHmHmTag}[2]{%
% #1 : julianisches Datum
% #2 : 0 f"ur Montag, 1 f"ur Dienstag, ..., 6 f"ur Sonntag
% --> \result := julianisches Datum des n"achsten durch #2 angegebenen Tages.
  \begingroup
    \Plus{#1}{-#2}%
    \advance\result by 6
    \div@mod{\result}{7}%
    \global\advance\result by #2\relax
  \endgroup
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Osterformel
%
\newcommand{\JulianischesDatumKarfreitag}[1]{%
% \result= Karfreitag #1
  \begingroup
    \JulianischesDatumErsterMaerz{#1}%
    \count150=#1\relax%                   N
    \div@mod{\count150}{100}%
    \count152=\count200%                  p
    \count154=\count202%                  n
    \div@mod{\count150}{19}%
    \count156=\count202%                  a
    \div@mod{\count152}{4}%
    \count158=\count200
    \count162=\count202% ---> mu
    \div@mod{\count152}{3}%
    \advance\count158 by \count200
    \advance\count158 by 14
    \advance\count158 by -\count152%      s
    \count160=\count156
    \multiply\count160 by 11
    \advance\count160 by \count158
    \div@mod{\count160}{30}%
    \count160=\count202%                  E
    \multiply\count162 by -2
    \advance\count162 by 10
    \div@mod{\count162}{7}%
    \count162=\count202%                  mu
    \count164=\count154
    \div@mod{\count154}{4}%
    \advance\count164 by \count200
    \advance\count164 by \count162
    \advance\count164 by -\count160
    \div@mod{\count164}{7}%
    \count164=\count202%                  t
    \advance\result by -\count160
    \advance\result by -\count164
    \global\advance\result by 54
    \ifnum\count164=0
      \ifnum\count160=0
        \global\advance\result by -7
      \fi
      \ifnum\count160=1
        \ifnum\count156>10
          \global\advance\result by -7
        \fi
      \fi
    \fi
  \endgroup
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Mondphasen
%
\newcommand{\Mondalter}[1]{%
% \result := Mondalter des julianischen Tages #1 in 10tel-Sekunden
%            Ein Tag hat 864000 10tel-Sekunden, eine Lunation 25514428.
%
%            Neumond MEZ: 36000 bis 36000 + 864000 = 900000
%            Zunehmend  : 6414607 bis 7278607
%            Vollmond   : 12793214 bis 13657214
%            Abnehmend  : 19171821 bis 20035821
%                
%            Die Berechnung erfolgt in Vielfachen von 0.4 Sekunden:
%            Eine Lunation dauert 6378607 Einheiten, ein Tag 216000.
%            In 2953 Tagen altert der Mond um -12700 Einheiten.
%
  \begingroup
    \div@mod{#1}{2953}%
    \count102=\count200
    \count104=\count202
    \multiply\count102 by 12700
    \multiply\count104 by 216000
    \advance\count104 by -\count102
    \advance\count104 by 4611829
    \advance\count104 by 9000%    Greenwich!
    \div@mod{\count104}{6378607}%
    \ifnum\count202<0
      \advance\count202 by 6378607
    \fi
%   Umrechnung in 10tel-Sekunden:
    \multiply\count202 by 4
    \global\result=\count202
  \endgroup
}
\newcommand{\MondalterMorgen}[1]{%
% \result := #1 + 864000 mod 25514428
  \begingroup
    \count100=#1\relax
    \advance\count100 by 864000
    \div@mod{\count100}{25514428}%
    \global\result=\count202
  \endgroup
}
\newcommand{\Mondphase}[1]{%
  \begingroup
    \def\mondphase{\nichtsloss}%
    \IfVonBis{#1}{36000}{900000}{%
      \def\mondphase{\neumond}%
    }{}%
    \IfVonBis{#1}{6414607}{7278607}{%
      \def\mondphase{\zunehmend}%
    }{}%
    \IfVonBis{#1}{12793214}{13657214}{%
      \def\mondphase{\vollmond}%
    }{}%
    \IfVonBis{#1}{19171821}{20035821}{%
      \def\mondphase{\abnehmend}%
    }{}%
  \expandafter\endgroup\mondphase%
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Gr"o"sen f"ur ein Jahr
%
\newcount\neujahr
\newcount\erstermaerz
\newcommand{\Fixtage}[1]{%
  \JulianischesDatumErsterJanuar{#1}%
  \neujahr=\result
  \JulianischesDatumErsterMaerz{#1}%
  \erstermaerz=\result
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Die Maschienerie f"ur Feiertage
%
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Globale Variablen
  \newtoks\Feiertags@Liste
  \Feiertags@Liste={}%
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Einen Feiertag mit Namen und Berechnungsvorschrift
  % einf"uhren
  %
  \newcommand{\DefiniereFeiertag}[2]{%
  % #1 : Name des Feiertags.
  % #2 : Makro, das \result auf das julianische Datum des Feiertages im
  %      Jahre \jahr setzt.
  % --> An die Liste \Feiertags@Liste wird \@tagdef{#1}{#2}
  %     angeh"angt.
    \expandafter\Feiertags@Liste\expandafter{%
      \the\Feiertags@Liste\@tagdef{#1}{#2}%
    }%
    \relax
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Ausrechnen der Feiertage f"ur \jahr
  %
  \newtoks\test@suite
  \test@suite={}
  \newcommand{\BerechneFeiertage}{%
  % \test@suite --> Liste von \test@tag{nummer}{name}
    \test@suite={}%
    \the\Feiertags@Liste% --> es ist Aufgabe der \@tagdef{name}{regel},
                        %     \test@suite zu f"ullen.
  }
  \newcommand{\@tagdef}[2]{%
    \begingroup
      #2\relax
      \toks@={{#1}}%
      \edef\@tempa{\the\test@suite\noexpand\test@tag{\number\result}\the\toks@}%
      \expandafter\global\expandafter\test@suite\expandafter=\expandafter{\@tempa}%
    \endgroup
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Entscheide, ob Feiertag und finde den Namen.
  %
    \newcommand{\test@tag}[2]{%
      \ifnum#1=\count206
        \ifx\Feiertagname\@empty
          \def\Feiertagname{\print@feiertag{#2}}\relax
        \else
          \expandafter\def\expandafter\Feiertagname\expandafter{\Feiertagname
            \print@feiertag{#2}}\relax
        \fi
      \fi
    }
  \newcommand{\IfFeiertagDefNameThenElse}[1]{%
    \begingroup
      \count206=#1\relax
      \def\Feiertagname{}%
      \the\test@suite\relax
      \ifx\@empty\Feiertagname
        \def\next{\@secondoftwo}%
      \else
        \expandafter\toks@\expandafter=\expandafter{\Feiertagname}%
        \edef\next{%
          \noexpand\def\noexpand\Feiertagname{\the\toks@}%
          \noexpand\@firstoftwo
        }%
      \fi
    \expandafter\endgroup\next
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Feiertage in Abh"angigkeit von den Optionen (gesetzlich, ...)
  %
    \def\filo@listmakro#1,#2\end{%
      \begingroup
        \edef\tempa{\csname filo@#1\endcsname}%
        \edef\ja{ja}%
        \ifx\tempa\ja
          \def\next{\DefiniereFeiertag}%
        \else
          \def\tempa{#2}%
          \def\tempb{\@nil}%
          \ifx\tempa\tempb
            \def\next{\@gobbletwo}%
          \else
            \def\next{\filo@listmakro#2\end}%
          \fi
        \fi
      \expandafter\endgroup\next
    }
  \newcommand{\DefiniereFeiertagInKategorie}[1]{%
    \filo@listmakro#1,\@nil\end
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Feiertage
%
\newcount\karfreitag
\newcount\heiligabend
\newcount\bussundbettag
\newcommand{\Feiertage}[1]{%
% setzt die drei obigen Feiertage f"ur das Jahr #1
% die Z"ahler enthalten nachher die entsprechenden julianischen Daten
  \JulianischesDatumKarfreitag{#1}%
  \karfreitag=\result
  \JulianischesDatumErsterMaerz{#1}%
  \heiligabend=\result
  \advance\heiligabend by 298
  \begingroup
    \count100=\heiligabend
    \advance\count100 by 1
    \div@mod{\count100}{7}%
    \count100=\count201%      letzter Montag <= erster Weihnachtstag
    \advance\count100 by -1%  letzter Sonntag <= Heiligabend = vierter Advendt
    \advance\count100 by -21% erster Advent
    \advance\count100 by -11% Bu"s- und Bet-tag
    \global\bussundbettag=\count100
  \endgroup
}
\newcommand{\Def@Feiertag}[4]{%
  \DefiniereFeiertagInKategorie{#4}{#3}{\Plus{#1}{#2}}%
  \relax
}
\newcommand{\Laender@Info}[1]{%
  \if@laender
    \def\@laen{#1}%
  \fi
}
\newcommand{\Konfession@Info}[1]{%
  \if@konfession
    \def\@konf{#1}%
  \fi
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Und hier eine Liste von Feiertagen
%
\Def@Feiertag{\neujahr}{0}{Neujahr\Laender@Info{alle L\"ander}}{gesetzlich}
\Def@Feiertag{\neujahr}{5}{Epiphanias\Konfession@Info{chrstl.}\Laender@Info{Ba-W\"u, Bay}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\neujahr}{32}{Mari\"a Lichtme\ss{}\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\neujahr}{44}{Valentinstag}{andere}
\Def@Feiertag{\erstermaerz}{18}{St.\ Joseph\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{24}{Mari\"a Verk\"undigung\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{61}{Tag der Arbeit\Laender@Info{alle L\"ander}}{gesetzlich}
\Def@Feiertag{\erstermaerz}{65}{Europatag}{andere}
\Def@Feiertag{\erstermaerz}{125}{Johannistag\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{120}{Peter und Paul\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{153}{Schweizer Bundesfeier}{andere}
\Def@Feiertag{\erstermaerz}{167}{Mari\"a Himmelfahrt\Konfession@Info{kath.}\Laender@Info{Sar, Bay/kath.}}{gesetzlich,katholisch}
\Def@Feiertag{\erstermaerz}{216}{Tag der dt.\ Einheit\Laender@Info{alle L\"ander}}{gesetzlich}
\Def@Feiertag{\erstermaerz}{239}{\"Osterreichischer Nationalfeiertag}{andere}
\Def@Feiertag{\erstermaerz}{244}{Reformationstag\Konfession@Info{ev.}\Laender@Info{Brb, Me-Vo, Sa, Sa-An, Th\"u}}{gesetzlich,evangelisch}
\Def@Feiertag{\erstermaerz}{245}{Allerheiligen\Konfession@Info{kath.}\Laender@Info{Ba-W\"u, Bay, Nrw, Rh-Pf, Sar}}{gesetzlich,katholisch}
\Def@Feiertag{\erstermaerz}{255}{Martinstag\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{280}{Nikolaus\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\erstermaerz}{282}{Mari\"a Empf\"angnis\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\erstermaerz}{298}{Heiligabend\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\erstermaerz}{299}{Erster Weihnachtstag\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\erstermaerz}{300}{Zweiter Weihnachstag\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\erstermaerz}{305}{Sylvester}{gesetzlich}
\Def@Feiertag{\erstermaerz}{306}{Neujahr\Laender@Info{alle L\"ander}}{gesetzlich}
\Def@Feiertag{\erstermaerz}{311}{Epiphanias\Konfession@Info{chrstl.}\Laender@Info{Ba-W\"u, Bay}}{katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{-46}{Rosenmontag\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\karfreitag}{-45}{Fastnacht\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\karfreitag}{-44}{Aschermittwoch\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\karfreitag}{-1}{Gr\"undonnerstag\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{0}{Karfreitag\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{2}{Ostersonntag\Konfession@Info{chrstl.}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{3}{Ostermontag\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{9}{Wei\ss{}er Sonntag\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{41}{Christi Himmelfahrt\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{51}{Pfingstsonntag\Konfession@Info{chrstl.}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{52}{Pfingstmontag\Konfession@Info{chrstl.}\Laender@Info{alle L\"ander}}{gesetzlich,katholisch,evangelisch}
\Def@Feiertag{\karfreitag}{53}{Upstalsboom-Dag}{friesisch}
\Def@Feiertag{\karfreitag}{58}{Trinitatis\Konfession@Info{kath.}}{katholisch}
\Def@Feiertag{\karfreitag}{62}{Fronleichnam\Konfession@Info{kath.}\Laender@Info{Ba-W\"u, Bay, He, Nrw, Rh-Pf, Sar}}{katholisch}
\Def@Feiertag{\bussundbettag}{-3}{Volkstrauertag}{andere}
\Def@Feiertag{\bussundbettag}{0}{Bu\ss{}- und Bettag\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\bussundbettag}{4}{Totensonntag\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\bussundbettag}{11}{Erster Advent\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\bussundbettag}{18}{Zweiter Advent\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\bussundbettag}{25}{Dritter Advent\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\Def@Feiertag{\bussundbettag}{32}{Vierter Advent\Konfession@Info{chrstl.}}{katholisch,evangelisch}
\DefiniereFeiertagInKategorie{andere}{Muttertag}{%
  \Plus{\erstermaerz}{68}\NaechsterSonntag{\result}%
}
\Def@Feiertag{\erstermaerz}{19}{Fr\"uhlingsanfang}{daten}
\Def@Feiertag{\erstermaerz}{112}{Sommeranfang}{daten}
\Def@Feiertag{\erstermaerz}{205}{Herbstanfang}{daten}
\Def@Feiertag{\erstermaerz}{295}{Winteranfang}{daten}
\DefiniereFeiertagInKategorie{daten}{Winterzeitende}{%
  \Plus{\erstermaerz}{24}\NaechsterSonntag{\result}%
}
\DefiniereFeiertagInKategorie{daten}{Sommerzeitende}{%
  \Plus{\erstermaerz}{238}\NaechsterSonntag{\result}%
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Tagesz"ahlung
%
\newcommand{\Wochentag}[1]{%
% Expandiert zum Namen des julianschen Tages #1
  \begingroup
    \div@mod{#1}{7}%
    \ifcase\count202
      Montag\or
      Dienstag\or
      Mittwoch\or
      Donnerstag\or
      Freitag\or
      Samstag\or
      Sonntag%
    \fi
  \endgroup
}
\newcommand{\Monatsname}[1]{%
  \ifcase#1\relax
    Error.\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
}
% Ein Tag ist durch folgende Angaben bestimmt:
\newcount\jahr
\newcount\monat
\newcount\woche
\newcount\tag
\newcount\julianischertag
\newcount\mondalter
\newcommand{\NaechsterTag}{%
%  \MessageTag
  \MondalterMorgen{\mondalter}%
  \global\mondalter=\result
  \global\advance\julianischertag by 1
  \begingroup
    \div@mod{\julianischertag}{7}%
    \ifnum\count202=0
      \def\next{\global\advance\woche by 1}%
      \ifnum\monat=12
        \ifnum\tag>27% \tag noch nicht erh"oht!
          \def\next{\global\woche=1}%
        \fi
      \fi
      \ifnum\monat=1
        \ifnum\woche>50
          \def\next{\global\woche=1}%
        \fi
      \fi
    \else
      \def\next{\relax}%
    \fi
  \expandafter\endgroup\next
  \ifcase\monat Error.\relax
  \or\Monat@Grenze{31}%              Januar
  \or\IfSchaltjahr{\jahr}{%          Februar
       \Monat@Grenze{29}%
     }{%
       \Monat@Grenze{28}%
     }%
  \or\Monat@Grenze{31}%              M"arz
  \or\Monat@Grenze{30}%              April
  \or\Monat@Grenze{31}%              Mai
  \or\Monat@Grenze{30}%              Juni
  \or\Monat@Grenze{31}%              Juli
  \or\Monat@Grenze{31}%              August
  \or\Monat@Grenze{30}%              September
  \or\Monat@Grenze{31}%              Oktober
  \or\Monat@Grenze{30}%              November
  \or\Monat@Grenze{31}%              Dezember
    \ifnum\monat=13
      \global\tag=1
      \global\monat=1
      \global\advance\jahr by 1
      \begingroup
        \div@mod{\julianischertag}{7}%
        \ifnum\count202=0
          \def\next{\woche=1}%
        \else
          \def\next{\relax}%
        \fi
      \expandafter\endgroup\next      
    \fi
  \fi
%  \MessageTag
}
  \newcommand{\Monat@Grenze}[1]{%
    \ifnum\tag<#1\relax
      \global\advance\tag by 1
    \else
      \global\tag=1
      \global\advance\monat by 1
    \fi
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Fixiere den ersten Januar
%
\newcommand{\SetzeErstenJanuar}[1]{%
  \Fixtage{#1}%
  \Feiertage{#1}%
  \global\tag=1
  \global\monat=1
  \global\jahr=#1\relax
  \julianischertag=\neujahr
  \begingroup
    \div@mod{\julianischertag}{7}%
    \ifnum\count202>3
      \def\next{\woche=0}%
    \else
      \def\next{\woche=1}%
    \fi
  \expandafter\endgroup\next
  \Mondalter{\julianischertag}%
  \mondalter=\result
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Gehe zum ersten Montag
%
\newcommand{\ErsterGedruckterTag}[1]{%
  \SetzeErstenJanuar{#1}%
  \begingroup
    \def\temp{%
      \div@mod{\julianischertag}{7}%
      \begingroup
        \ifnum\count202=\@starttag
          \def\next{\relax}%
        \else
          \def\next{\NaechsterTag\temp}%
        \fi
      \expandafter\endgroup\next
    }%
    \temp
  \endgroup
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Benutzerdefinierte Tage
%
  \newcommand{\ifdefinedthenelse}[1]{%
    \begingroup
      \expandafter\ifx\csname #1\endcsname\relax
        \def\next{\@secondoftwo}%
      \else
        \def\next{\@firstoftwo}%
      \fi
    \expandafter\endgroup\next
  }
  \newcommand{\defname}[1]{%
    \expandafter\gdef\csname #1\endcsname
  }
  \newcommand{\usename}[1]{%
    \csname #1\endcsname
    \expandafter\global\expandafter\let\csname #1\endcsname=\relax
  }
\newcommand{\lese@datum}[1]{%
  \begingroup
    \def\parsedate##1.##2.##3\end{%
      \count200=##1\relax
      \count201=##2\relax
    }%
  \expandafter\endgroup\parsedate#1..\end
}
\newcommand{\Tag}[2]{%
% #1 = tag.monat
% #2 = Expansion
  \begingroup
    \lese@datum{#1}%
    \edef\next{%
      \noexpand\defname{%
        tag@\romannumeral\count200:\romannumeral\count201%
      }{#2}%
    }%
  \expandafter\endgroup\next
}
\newcommand{\privat@tag}[2]{%
% #1 = tag
% #2 = monat
  \begingroup
    \count200=#1\relax
    \count201=#2\relax
    \ifdefinedthenelse{tag@\romannumeral\count200:\romannumeral\count201}{%
      \begingroup
        \textbf{
          \usename{tag@\romannumeral\count200:\romannumeral\count201}%
        }%
      \endgroup
    }{%
    }%
  \endgroup
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Darstellung der Mondphasen
%
  \newcommand{\moon@lift}[1]{%
    \raisebox{\depth}{#1}%
  }
  \newcommand{\nichtsloss}{}
  \newcommand{\neumond}{~\moon@lift{\NewMoon}}
  \newcommand{\zunehmend}{~\moon@lift{\OpenMoon}}
  \newcommand{\vollmond}{~\moon@lift{\FullMoon}}
  \newcommand{\abnehmend}{~\moon@lift{\CloseMoon}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Drucke einen Tag: (\jahr, ..., \mondalter sowie die Feiertage sind korrekt!)
%
  \newcommand{\f@info}{%
      \ifx\@konf\@empty
        \edef\tempa{\@laen}%
      \else
        \ifx\@laen\empty
          \edef\tempa{\@konf}%
        \else
          \edef\tempa{\@konf;\ \@laen}%
        \fi
      \fi
      \ifx\tempa\empty
      \else
        ~(\tempa)%
      \fi
  }
  \newcommand{\print@feiertag}[1]{%
    \begingroup
      \def\@laen{}%
      \def\@konf{}%
      ,~#1\f@info
    \endgroup
  }
\newcommand{\DruckeTag}{%
  \Wochentag{\julianischertag}~\number\tag%
  \if@mond
    \Mondphase{\mondalter}%
  \fi
  \IfFeiertagDefNameThenElse{\julianischertag}{\Feiertagname}{}\hfill\null\\
  \privat@tag{\tag}{\monat}\null%
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Eine Umgebung zur Definition privater Daten
%
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Tests f"ur \end{...}
  %
  \def\testend#1\end#2\@nil{%
    \begingroup
      \def\tempa{#2}%
      \def\tempb{}%
      \ifx\tempa\tempb
        \def\next{\@secondoftwo}%
      \else
        \def\next{\@firstoftwo}%
      \fi
    \expandafter\endgroup\next
  }
  \newcommand{\IfContainsEndThenElse}[1]{%
    \testend#1\end\@nil
  }
  \def\TestLineContainsEnd#1#2\end#3#4\@nil{
    \IfEqualThenElse{#1}{#3}{%
      \@firstoftwo
    }{%
      \IfEndEnvironmentThenElse{#1}{#4}%
    }%
  }
  \newcommand{\IfEndEnvironmentThenElse}[2]{%
    \IfContainsEndThenElse{#2}{%
      \TestLineContainsEnd{#1}#2\@nil
    }{%
      \@secondoftwo
    }%
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Verarbeiten einzelner Zeilen
  %
  \def\@Tag#1 #2\@nil{\Tag{#1}{#2}}%
  \newcommand{\processline}[1]{%
    \begingroup
      \def\cmp{#1}%
      \ifx\@empty\cmp
        \def\next{\@firstoftwo}%
      \else
        \def\next{\@secondoftwo}%
      \fi
    \expandafter\endgroup\next{%
    }{%
      \@Tag#1\@nil
    }%
  }
  \newcommand{\processuptoend}[1]{%
    \dotillend#1\end\@nil
  }
  \def\dotillend#1\end#2\@nil{%
    \processline{#1}%
  }%
  {%
    \catcode`\^^M=\active %
    \gdef\scanline#1
    {%
      \IfEndEnvironmentThenElse{termine}{#1}{%
        \processuptoend{#1}%
        \end{termine}%
      }{%
        \processline{#1}%
        \scanline%
      }%
    }%
  }%
  \newenvironment{termine}[1]{%
    \jahr=#1\relax
    \begingroup
      \catcode`\^^M=\active
      \scanline
  }{%
    \endgroup%
    \ErsterGedruckterTag{\jahr}%
    \BerechneFeiertage
    \DruckZyklus
    \@ignoretrue
    \ignorespaces
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Kalenderbl"atter
%
  \newcommand{\Tag@Feld}{%
    \hrule
%    \parbox[t][0pt][t]{0pt}{%
      \vskip 1pt%
      \makebox[0pt][l]{%
        \parbox[t][0pt][t]{\dimen206}{%
          \DruckeTag
        }%
      }%
%    }%
    \NaechsterTag
    \vfill
  }
  \newcommand{\fixiere@heute}{%
    \edef\restore{%
      \noexpand\global\noexpand\jahr\number\jahr
      \noexpand\global\noexpand\tag\number\tag
      \noexpand\global\noexpand\monat\number\monat
      \noexpand\global\noexpand\woche\number\woche
      \noexpand\global\noexpand\julianischertag\number\julianischertag
      \noexpand\global\noexpand\mondalter\number\mondalter
    }%
  }
\newcommand{\Wochenblatt}[2]{%
% Erzeugt eine Box der H"ohe #1 und der Breite #2.
% Darin ist ein Blatt f"ur eine Woche.
% Das Makro erh"oht dabei den Tag entsprechend.
%
  \makebox[#2][s]{%
    \begingroup
      \dimen200=#1\relax
      \dimen202=#2\relax
      \setbox204=\hbox{\kern1pt{ok}\kern1pt}%
      \dimen206=\dimen202
      \advance\dimen206 by -1mm
      \advance\dimen206 by -\wd204
      \parbox[b][\dimen200][s]{\dimen202}{%
        \rule{0pt}{\dimen200}\hfill
        \rule{0.4pt}{\dimen200}\kern\wd204
        \rule{0.4pt}{\dimen200}%
      }%
      \hss
      \parbox[b][\dimen200][s]{\dimen202}{%
        \fixiere@heute
        \edef\restore{%
          \noexpand\jahr\number\jahr
          \noexpand\tag\number\tag
          \noexpand\monat\number\monat
          \noexpand\woche\number\woche
          \noexpand\julianischertag\number\julianischertag
          \noexpand\mondalter\number\mondalter
        }%
        \edef\anfang{\number\tag~\Monatsname{\monat}}%
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \edef\ende{\number\tag~\Monatsname{\monat}}%
        \restore
        \hrule
        \vskip 3pt%
        \makebox[\dimen202][s]{%
          \hfill\anfang\hfill{bis}\hfill\ende\hfill\box204
        }%
        \vskip 4pt%
        \Tag@Feld\Tag@Feld\Tag@Feld
        \Tag@Feld\Tag@Feld\Tag@Feld
        \Tag@Feld
        \hrule
      }%
    \endgroup
  }%
}
\newcommand{\HalbWochenblattA}[2]{%
% Erzeugt eine Box der H"ohe #1 und der Breite #2.
% Darin ist ein Blatt f"ur eine halbe Woche (Do - So)
% Das Makro erh"oht dabei den Tag entsprechend.
%
  \makebox[#2][s]{%
    \begingroup
      \dimen200=#1\relax
      \dimen202=#2\relax
      \setbox204=\hbox{\kern1pt{ok}\kern1pt}%
      \dimen206=\dimen202
      \advance\dimen206 by -1mm
      \advance\dimen206 by -\wd204
      \parbox[b][\dimen200][s]{\dimen202}{%
        \rule{0pt}{\dimen200}\hfill
        \rule{0.4pt}{\dimen200}\kern\wd204
        \rule{0.4pt}{\dimen200}%
      }%
      \hss
      \parbox[b][\dimen200][s]{\dimen202}{%
        \hrule
        \vskip 3pt%
        \makebox[\dimen202][s]{%
          \null\hfill{Woche \number\woche}\hfill\box204
        }%
        \vskip 4pt%
        \Tag@Feld\vfill
        \Tag@Feld\vfill
        \Tag@Feld
        \Tag@Feld
        \hrule
      }%
    \endgroup
  }%
}
\newcommand{\HalbWochenblattB}[2]{%
% Erzeugt eine Box der H"ohe #1 und der Breite #2.
% Darin ist ein Blatt f"ur eine halbe Woche (Mo - Mi).
% Das Makro erh"oht dabei den Tag entsprechend.
%
  \makebox[#2][s]{%
    \begingroup
      \dimen200=#1\relax
      \dimen202=#2\relax
      \setbox204=\hbox{\kern1pt{ok}\kern1pt}%
      \dimen206=\dimen202
      \advance\dimen206 by -1mm
      \advance\dimen206 by -\wd204
      \parbox[b][\dimen200][s]{\dimen202}{%
        \rule{0pt}{\dimen200}\hfill
        \rule{0.4pt}{\dimen200}\kern\wd204
        \rule{0.4pt}{\dimen200}%
      }%
      \hss
      \parbox[b][\dimen200][s]{\dimen202}{%
        \fixiere@heute
        \edef\anfang{\number\tag~\Monatsname{\monat}}%
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \NaechsterTag
        \edef\ende{\number\tag~\Monatsname{\monat}}%
        \restore
        \hrule
        \vskip 3pt%
        \makebox[\dimen202][s]{%
          \hfill\anfang\hfill{bis}\hfill\ende\hfill\box204
        }%
        \vskip 4pt%
        \Tag@Feld\vfill
        \Tag@Feld\vfill
        \Tag@Feld\vfill
        \hrule
      }%
    \endgroup
  }%
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Positionierung der Bl"atter im Rahmen
%
  \newcommand{\Positioniere}[3]{%
  % #1 : Linker Rand
  % #2 : Rechter Rand
  % #3 : Boxinhalt
    \mbox{%
      \begingroup
        \fboxrule=0.4pt%
        \fboxsep=-0.4pt%
        \framebox{%
          \null\kern#1{}#3{}\kern#2\null%
        }%
      \endgroup
    }%
  }
  \newcommand{\AddRechts}[2]{%
  % #1 : Boxnummer
  % #2 : Material, das hinzuzuf"ugen ist.
    \sbox{#1}{\unhbox#1#2}%
  }
  \newcommand{\AddLinks}[2]{%
  % #1 : Boxnummer
  % #2 : Material, das hinzuzuf"ugen ist.
    \sbox{#1}{#2\unhbox#1}%
  }
\newsavebox\vorne
\newsavebox\hinten
\newcommand{\AddVorne}[3]{%
% #1 : lochrand
% #2 : schnittrand
% #3 : Material
  \AddRechts{\vorne}{\Positioniere{#1}{#2}{#3}}%
}
\newcommand{\AddHinten}[3]{%
% #1 : lochrand
% #2 : schnittrand
% #3 : Material
  \AddLinks{\hinten}{\Positioniere{#2}{#1}{#3}}%
  \PrintBlatt
}
\newcount\@blatt
\@blatt=0
\newif\if@vorne
\@vornetrue
  \newcommand{\VerschiebeSeite}[3]{%
    \clearpage\thispagestyle{empty}\par\noindent
    \parbox[b][\textheight][s]{\textwidth}{%
      \vskip#1\relax
      \makebox[\textwidth][s]{%
        \kern#2\relax#3\kern-#2\relax
      }%
      \vskip-#1\relax
    }%
    \relax
  }
\newcommand{\PrintBlatt}{%
  \ifnum\@blatt=\blattjeseite
    \if@rotated
      \VerschiebeSeite{0mm}{0mm}{%
        \parbox[b][\textheight][c]{\textwidth}{%
          \turn{-90}\raisebox{\depth}{\box\vorne}\endturn
        }%
      }%
      \VerschiebeSeite{\DruckerKorrekturOben}{\DruckerKorrekturLinks}{%
        \parbox[b][\textheight][c]{\textwidth}{%
          \turn{90}\raisebox{\depth}{\box\hinten}\endturn
        }%
      }%
    \else
      \VerschiebeSeite{0mm}{0mm}{\box\vorne}%
      \VerschiebeSeite{\DruckerKorrekturOben}{\DruckerKorrekturLinks}{\box\hinten}%
    \fi
    \global\@blatt=0
  \fi
}
\newcommand{\AddFeld}{%
  \begingroup
    \if@vorne
      \def\next{\global\advance\@blatt by 1\@vornefalse\AddVorne}%
    \else
      \def\next{\@vornetrue\AddHinten}%
    \fi
  \expandafter\endgroup\next
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Wochenpl"ane
%
  \newcommand{\Note@Feld}[1]{%
    \hrule
    \parbox[t][0pt][t]{\dimen202}{%
      \vskip 1pt%
      \makebox[0pt][l]{#1}%
    }%
  }
\newcommand{\Wochenplan}[2]{%
% Erzeugt eine Box der H"ohe #1 und der Breite #2.
% Darin ist ein Plan f"ur eine Woche.
%
  \makebox[#2][s]{%
    \begingroup
      \dimen200=#1\relax
      \dimen202=#2\relax
      \setbox204=\hbox{\kern1pt{ok}\kern1pt}%
      \parbox[b][\dimen200][s]{\dimen202}{%
        \rule{0pt}{\dimen200}\hfill
        \rule{0.4pt}{\dimen200}\kern\wd204
        \rule{0.4pt}{\dimen200}%
      }%
      \hss
      \parbox[b][\dimen200][s]{\dimen202}{%
        \hrule
        \vskip 3pt%
        \makebox[\dimen202][s]{%
          \hfill{Woche \number\woche}\hfill\box204
        }%
        \vskip 4pt%
        \Note@Feld{Besorgen}\vfill\vfill
        \Note@Feld{Erledigen}\vfill\vfill\vfill
        \Note@Feld{Notizen}\vfill\vfill
        \hrule
      }%
    \endgroup
  }%
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Aufteilungen
%
    \newcommand{\MacheBlatt}[2]{%
    % #1 : Vorderseite
    % #2 : R"uckseite
      \AddFeld{\lochrand}{\schnittrand}{#1}%
      \AddFeld{\lochrand}{\schnittrand}{#2}%
    }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Meine Aufteilung
  %
  \newcommand{\MeineAufteilung}{%
    \MacheBlatt{%
      \Wochenblatt{\blatthoehe}{\feldbreite}%
    }{%
      \Wochenplan{\blatthoehe}{\feldbreite}%
    }%
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Espunkts Aufteilung
  %
  \newcommand{\EspunktsAufteilung}{%
    \MacheBlatt{%
      \Wochenblatt{\blatthoehe}{\feldbreite}%
    }{%
      \Wochenblatt{\blatthoehe}{\feldbreite}%
    }%
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Thomas' Aufteilung
  %
  \newcommand{\ThomasAufteilung}{%
    \MacheBlatt{%
      \HalbWochenblattA{\blatthoehe}{\feldbreite}%
    }{%
      \HalbWochenblattB{\blatthoehe}{\feldbreite}%
    }%
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Drucke \blattjeseite viele Bl"atter
%
\newcommand{\MacheBlaetter}[1]{%
  \begingroup
    \count204=\blattjeseite
    \loop
    \ifnum\count204>0
      #1\relax
      \advance\count204 by -1
    \repeat
  \endgroup
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Druck der Bl"atter f"ur ein ganzes Jahr
%
\newcommand{\DruckZyklus}{%
  \begingroup
    \edef\help{\number\jahr}%
    \loop
    \expandafter\ifnum\help=\jahr
      \MacheBlaetter{\DruckAufteilung}%
    \repeat
  \endgroup
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Andere Bl"atter
%
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Projektpl"ane
  %
  \newcommand{\ProjektplanVorne}[2]{%
  % Erzeugt eine Box der H"ohe #1 und der Breite #2.
  % Darin ist die Vorderseite eines Projektplanes.
  %
    \makebox[#2][s]{%
      \begingroup
        \dimen200=#1\relax
        \dimen202=#2\relax
        \parbox[b][\dimen200][s]{\dimen202}{%
          \hrule
          \vskip 3pt%
          \makebox[\dimen202][s]{%
            Projekt:\hfill\hfill Datum:\hfill\null
          }%
          \vskip 4pt%
          \Note@Feld{Beschreibung}\vfill\vfill
          \Note@Feld{Ideen}\vfill\vfill\vfill\vfill\vfill
          \hrule
        }%
      \endgroup
    }%
  }
  \newcommand{\ProjektplanHinten}[2]{%
  % Erzeugt eine Box der H"ohe #1 und der Breite #2.
  % Darin ist die R"uckseite eines Projektplanes.
  %
    \makebox[#2][s]{%
      \begingroup
        \dimen200=#1\relax
        \dimen202=#2\relax
        \parbox[b][\dimen200][s]{\dimen202}{%
          \Note@Feld{Skizze}\vfill
          \Note@Feld{Material}\vfill
          \hrule
        }%
      \endgroup
    }%
  }
  \newcommand{\Projektplaene}[1]{%
    \begingroup
      \count204=#1\relax
      \advance\count204 by \blattjeseite
      \advance\count204 by -1
      \div@mod{\count204}{\blattjeseite}%
      \loop
        \ifnum\count201>0
          \MacheBlatt{%
            \ProjektplanVorne{\blatthoehe}{\feldbreite}%
          }{%
            \ProjektplanHinten{\blatthoehe}{\feldbreite}%
          }%
          \advance\count201 by -1
      \repeat
    \endgroup
    \ignorespaces
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Listen
  %
  \newcommand{\Listenseite}[2]{%
  % Erzeugt eine Box der H"ohe #1 und der Breite #2.
  % Darin ist eine Listenseite.
  %
    \makebox[#2][s]{%
      \begingroup
        \dimen200=#1\relax
        \dimen202=#2\relax
        \parbox[b][\dimen200][s]{\dimen202}{%
          \hrule
          \vskip 3pt%
          \makebox[\dimen202][l]{%
            Liste:
          }%
          \vskip 4pt%
          \hrule height1.2pt
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vfill\hrule\vfill\hrule\vfill\hrule
          \vskip 2pt
        }%
      \endgroup
    }%
  }
  \newcommand{\Listen}[1]{%
    \begingroup
      \count204=#1\relax
      \advance\count204 by \blattjeseite
      \advance\count204 by -1
      \div@mod{\count204}{\blattjeseite}%
      \loop
        \ifnum\count201>0
          \MacheBlatt{%
            \Listenseite{\blatthoehe}{\feldbreite}%
          }{%
            \Listenseite{\blatthoehe}{\feldbreite}%
          }%
          \advance\count201 by -1
      \repeat
    \endgroup
    \ignorespaces
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Adressen
  %
  \newcommand{\Adressenseite}[2]{%
  % Erzeugt eine Box der H"ohe #1 und der Breite #2.
  % Darin ist eine Adressenseite.
  %
    \makebox[#2][s]{%
      \begingroup
        \dimen200=#1\relax
        \dimen202=#2\relax
        \parbox[b][\dimen200][s]{\dimen202}{%
          \hrule
          \vskip 3pt%
          \makebox[\dimen202][l]{%
            Adressen:
          }%
          \vskip 4pt%
          \hrule height1.2pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vfill\hrule\vfill\hrule\vfill\hrule height 0.8pt
          \vskip 2pt
        }%
      \endgroup
    }%
  }
  \newcommand{\Adresslisten}[1]{%
    \begingroup
      \count204=#1\relax
      \advance\count204 by \blattjeseite
      \advance\count204 by -1
      \div@mod{\count204}{\blattjeseite}%
      \loop
        \ifnum\count201>0
          \MacheBlatt{%
            \Adressenseite{\blatthoehe}{\feldbreite}%
          }{%
            \Adressenseite{\blatthoehe}{\feldbreite}%
          }%
          \advance\count201 by -1
      \repeat
    \endgroup
    \ignorespaces
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Kalendarien
  %
    \newcommand{\Monat}{%
      \makebox[24.5mm][l]{%
        \begingroup
          \def\entr##1{\kern3.5mm\llap{##1}}%
          \def\cronsonntag{%
            \begingroup
              \div@mod{\julianischertag}{7}\relax
              \ifnum\count202=6\relax
                \def\next{\par\noindent}\relax
              \else
                \def\next{\relax}\relax
              \fi
            \expandafter\endgroup\next
          }%
          \parbox[t][0pt][t]{\textwidth}{%
            \tiny
            \par\noindent
            \rlap{{\normalsize\Monatsname{\monat}}}%
            \vskip4pt
            \par\noindent
            \rlap{\entr{Mo}\entr{Di}\entr{Mi}\entr{Do}\entr{Fr}\entr{Sa}\entr{So}}%
            \vskip2pt
            \par\noindent
            \begingroup
              \div@mod{\julianischertag}{7}%
              \loop\relax
              \ifnum\count202>0
                \advance\count202 by -1
                \entr{}%
              \repeat
            \endgroup
            \loop\relax
              \entr{\number\tag}%
              \cronsonntag
              \NaechsterTag
            \ifnum\tag>1\repeat
          }%
        \endgroup
      }%
    }
  \newcommand{\Kalendarienblatt}[2]{%
  % Erzeugt eine Box der H"ohe #1 und der Breite #2.
  % Darin ist ein Kalendarium f"ur das gegenw"artige Jahr.
  % Das Makro nimmt an, da"s der 1.1. eingestellt ist.
    \makebox[#2][s]{%
      \begingroup
        \dimen200=#1\relax
        \dimen202=#2\relax
        \parbox[b][\dimen200][s]{\dimen202}{%
          \null
          \vfill
          \center
            {\large\textbf{\number\jahr}}
          \endcenter
          \vfill
          \null\Monat\hfill\Monat\hfill\Monat\null\vfill\vfill
          \null\Monat\hfill\Monat\hfill\Monat\null\vfill\vfill
          \null\Monat\hfill\Monat\hfill\Monat\null\vfill\vfill
          \null\Monat\hfill\Monat\hfill\Monat\null\vfill\vfill
          \null
        }%
      \endgroup
    }%
  }
  \newcommand{\Kalendarium}[1]{%
    \SetzeErstenJanuar{#1}%
    \begingroup
      \count201=\blattjeseite
      \loop
        \ifnum\count201>0
          \MacheBlatt{%
            \Kalendarienblatt{\blatthoehe}{\feldbreite}%
          }{%
            \Kalendarienblatt{\blatthoehe}{\feldbreite}%
          }%
          \advance\count201 by -1
      \repeat
    \endgroup
    \ignorespaces
  }
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Debuging
%
\iffalse
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Tage in die Logdatei schreiben
  %
  \newcommand{\MessageTag}{%
    \message{%
      ^^J%
      tag: \number\jahr.\number\monat.\number\tag:\number\woche;\number\julianischertag%
      ^^J%
    }%
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % L"angen ausgeben
  %
  \newcommand{\MessageLength}[2]{%
    \begingroup
      \dimen204=1mm
      \count204=\dimen204
      \count203=#2\relax
      \div@mod{\count203}{\count204}%
      \message{^^J#1 = \number\count200 mm.}
    \endgroup
  }
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % Drucke ein ganzes Jahr
  %
  \newcommand{\DruckeJahr}{%
    \begingroup
      \edef\help{\number\jahr}%
      \loop
      \expandafter\ifnum\help=\jahr
        \Monatsname{\monat}~\DruckeTag\\
        \NaechsterTag
      \repeat
    \endgroup
  }
  %
  \message{\number\blattjeseite = \number\@blatt}%
\fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%</klasse>
%    \end{macrocode}
%
% \Section{Die Beispieldatei \file{bsp.tex}}
%    \begin{macrocode} 
%<*beispiel>
\ProvidesFile{bsp.tex}[\FileDate, \FileVersion\space Terminplaner-Beispieldatei (Kai-Uwe Bux)]
\documentclass[a4paper,zweiblatt,ich,alle,laender,konfession]{filo}
%\documentclass[a4paper,rotated,thomas,katholisch]{filo}
%\documentclass[a4wide,sven,dreiblatt]{filo}
  \usepackage[cp850]{inputenc}
%  \setlength{\DruckerKorrekturLinks}{-1mm}
\begin{document}
  \Adresslisten{5}
  \Kalendarium{1999}
  \Listen{4}
  \Projektplaene{1}
  \begin{termine}{1999}
    2.2 Halli Galli
    3.3 Hocus Pocus
    4.4 Na ja
  \end{termine}
\end{document}
%</beispiel>
%    \end{macrocode}
%
% \Section{Moondphasen}
%    \begin{macrocode}
%<*mfmoon>
if unknown cmbase: input cmbase fi

font_identifier:="MONDE";
font_size 10pt#;

u#:=20/36pt#;      % unit width
width_adj#:=0pt#;    % width adjustment for certain characters
serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
cap_serif_fit#:=5/36pt#;  % extra sidebar near uppercase serifs
letter_fit#:=0pt#;    % extra space added to all sidebars

body_height#:=270/36pt#;  % height of tallest characters
asc_height#:=250/36pt#;    % height of lowercase ascenders
cap_height#:=246/36pt#;    % height of caps
fig_height#:=232/36pt#;    % height of numerals
x_height#:=155/36pt#;    % height of lowercase without ascenders
math_axis#:=90/36pt#;    % axis of symmetry for math symbols
bar_height#:=87/36pt#;    % height of crossbar in lowercase e
comma_depth#:=70/36pt#;    % depth of comma below baseline
desc_depth#:=70/36pt#;    % depth of lowercase descenders

crisp#:=0pt#;      % diameter of serif corners
tiny#:=8/36pt#;      % diameter of rounded corners
fine#:=7/36pt#;      % diameter of sharply rounded corners
thin_join#:=7/36pt#;    % width of extrafine details
hair#:=9/36pt#;      % lowercase hairline breadth
stem#:=25/36pt#;    % lowercase stem breadth
curve#:=30/36pt#;    % lowercase curve breadth
ess#:=27/36pt#;      % breadth in middle of lowercase s
flare#:=33/36pt#;    % diameter of bulbs or breadth of terminals
dot_size#:=38/36pt#;    % diameter of dots
cap_hair#:=11/36pt#;    % uppercase hairline breadth
cap_stem#:=32/36pt#;    % uppercase stem breadth
cap_curve#:=37/36pt#;    % uppercase curve breadth
cap_ess#:=35/36pt#;    % breadth in middle of uppercase s
rule_thickness#:=.4pt#;    % thickness of lines in math symbols

dish#:=1/36pt#;      % amount erased at top or bottom of serifs
bracket#:=20/36pt#;    % vertical distance from serif base to tangent
jut#:=28/36pt#;      % protrusion of lowercase serifs
cap_jut#:=37/36pt#;    % protrusion of uppercase serifs
beak_jut#:=10/36pt#;    % horizontal protrusion of beak serifs
beak#:=70/36pt#;    % vertical protrusion of beak serifs
vair#:=8/36pt#;      % vertical diameter of hairlines
notch_cut#:=10pt#;    % maximum breadth above or below notches
bar#:=11/36pt#;      % lowercase bar thickness
slab#:=11/36pt#;    % serif and arm thickness
cap_bar#:=11/36pt#;    % uppercase bar thickness
cap_band#:=11/36pt#;    % uppercase thickness above/below lobes
cap_notch_cut#:=10pt#;    % max breadth above/below uppercase notches
serif_drop#:=4/36pt#;    % vertical drop of sloped serifs
stem_corr#:=1/36pt#;    % for small refinements of stem breadth
vair_corr#:=1/36pt#;    % for small refinements of hairline height
apex_corr#:=0pt#;    % extra width at diagonal junctions

o#:=8/36pt#;      % amount of overshoot for curves
apex_o#:=8/36pt#;    % amount of overshoot for diagonal junctions

slant:=0;      % tilt ratio $(\Delta x/\Delta y)$
fudge:=1;      % factor applied to weights of heavy characters
math_spread:=0;      % extra openness of math symbols
superness:=1/sqrt2;    % parameter for superellipses
superpull:=1/6;      % extra openness inside bowls
beak_darkness:=11/30;    % fraction of triangle inside beak serifs
ligs:=2;      % level of ligatures to be included

square_dots:=false;    % should dots be square?
hefty:=false;      % should we try hard not to be overweight?
serifs:=true;      % should serifs and bulbs be attached?
monospace:=false;    % should all characters have the same width?
variant_g:=false;    % should an italic-style g be used?
low_asterisk:=false;    % should the asterisk be centered at the axis?
math_fitting:=false;    % should math-mode spacing be used?

fontdimen 8:  % parameters $\xi_8$ through $\xi_{13}$ will now be listed
 rule_thickness#,  % default\_rule\_thickness
 40/36pt#,    % big\_op\_spacing1
 60/36pt#,    % big\_op\_spacing2
 72/36pt#,    % big\_op\_spacing3
 216/36pt#,    % big\_op\_spacing4
 36/36pt#;    % big\_op\_spacing5

font_coding_scheme:="Mondschein";
mode_setup;
font_setup;


beginarithchar(oct "001");
pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; 
filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
         ...z5{z6-z4}...z6{up}...z7{z8-z6}... cycle;
labels(1,2,3,4,5,6,7,8);
endchar;

beginarithchar(oct "002");
pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; draw_circle;  % circle
draw z4--z8;  % bar and stem
filldraw z4--z8{left}...z7{z6-z8}...z6{down}...z5{z4-z6}...z4{right}... cycle;
labels(1,2,3,4,5,6,7,8);
endchar;

beginarithchar(oct "003");
pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; draw_circle;  % circle
labels(1,2,3,4,5,6,7,8);
endchar;

beginarithchar(oct "004");
pickup light_rule.nib; autorounded;
lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
circle_points; draw_circle;  % circle
draw z4--z8;  % bar and stem
fill z4--z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left} ... cycle;
labels(1,2,3,4,5,6,7,8);
endchar;

font_x_height x_height#;
font_quad 18u#+4letter_fit#;
bye.
%</mfmoon>
%    \end{macrocode}
%    \begin{macrocode}
%<*fdmoon>
\ProvidesFile{umoon.fd}[\FileDate\space\FileVersion, moon]
\DeclareFontFamily{U}{moon}{}
\DeclareFontShape{U}{moon}{m}{n}{ <-> moon10 }{}
%</fdmoon>
%    \end{macrocode}
%    \begin{macrocode}
%<*stymoon>
\ProvidesPackage{moon}[\FileDate\space\FileVersion, moon]
\DeclareSymbolFont{moon}{U}{moon}{m}{n}
\DeclareMathSymbol{\newmoon}{\mathord}{moon}{"01}
\DeclareMathSymbol{\openmoon}{\mathord}{moon}{"02}
\DeclareMathSymbol{\fullmoon}{\mathord}{moon}{"03}
\DeclareMathSymbol{\closemoon}{\mathord}{moon}{"04}
\newcommand{\NewMoon}{\ensuremath{\newmoon}}
\newcommand{\OpenMoon}{\ensuremath{\openmoon}}
\newcommand{\FullMoon}{\ensuremath{\fullmoon}}
\newcommand{\CloseMoon}{\ensuremath{\closemoon}}
%</stymoon>
%    \end{macrocode}
% 
%
% \iffalse ********************************************* METACOMMENT
% Die folgende Section erscheint nicht in der Dokumentation!
% ------------------------------------------------------------------
% \Section{Die CharacterTable}
%   Das hier dient nur dazu, die CharacterTable aus den generierten
%   Dateien rauszuhalten.
%    \begin{macrocode}
%<*installation>
\endinput
%</installation>
%    \end{macrocode}
%   |\endinput| veranla"st |\generateFile| zum Abbruch der
%   Bearbeitung.
% ------------------------------------------------------------------
% Ab jetzt wieder im Ausdruck!
% ********************************************** END METACOMMENT \fi
%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
% \Finale
