% \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!} % % \end{macrocode} % % ********************************************** END METACOMMENT \fi % % \CheckSum{0} % % \iffalse ********************************************* METACOMMENT % \begin{macrocode} %<*driver> \NeedsTeXFormat{LaTeX2e}[1995/12/01] \edef\ThisVersion{\FileVersion} \edef\ThisDate{\FileDate} % % \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} % % \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} % % \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 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \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} % % \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. % % \end{macrocode} % \begin{macrocode} %<*fdmoon> \ProvidesFile{umoon.fd}[\FileDate\space\FileVersion, moon] \DeclareFontFamily{U}{moon}{} \DeclareFontShape{U}{moon}{m}{n}{ <-> moon10 }{} % % \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}} % % \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 % % \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