diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:57:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:57:29 +0000 |
commit | 1d525088e885a66353b76b9057fabe8f1ebb13a1 (patch) | |
tree | a1c796e1db5862491f24bfbfaa25ac97e0cf10ba | |
parent | 504f1507dc7e6518e561324d3d11107fd151a0d2 (diff) |
kalender
git-svn-id: svn://tug.org/texlive/trunk@1012 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/tex/latex/kalender/kalender.sty | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/kalender/kalender.sty b/Master/texmf-dist/tex/latex/kalender/kalender.sty new file mode 100644 index 00000000000..2ca3ad9fdb9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/kalender/kalender.sty @@ -0,0 +1,246 @@ +%==================================================================== +% Allg. (La)TeX-Regeln: +% Dieser Style darf uebernommen oder geandert werden, aber nur mit +% Nennung des Orginalautors. (ich habe ja auch meinen Stolz ;-)) +%==================================================================== +% Style zum automatischen Ertellen eines Kalenders +% Es werden die Packete ifthen und calc ben”tigt +% zum Erstellen nur den Befehl \Kalender{Jahr} eingeben +% Jahr: Die Jahreszahl z.B. 1995 +% J”rg S”hner 24.03.95 +% e-mail: joerg.soehner@stud.uni-karlsruhe.de +% www: http://www.uni-karlsruhe.de/~uh6f +% +% Kalender.sty bercksichtigt Schaltjahre. +% Referenzjahr ist 1900. Es sind alle Jahre m”glch; auch < 1900 +% Er berckisichtigt auch folgende Regeln: +% Jahrhundert-Jahre sind keine Schaltjahre +% Jahrhundert-Jahre, die durch 400 teilbar sind, sind Schaltjahre +%==================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{kalender}[1995/03/25 Kalender-Style von Joerg Soehner] +\RequirePackage{ifthen,calc} +\newcounter{Jahr} +\newcounter{Vorjahr} +\newcounter{Nextjahr} +\newcounter{n} +\newcounter{vielfaches} +\newboolean{Schaltjahr} +\newcounter{differ} +\newcounter{grenze} +\newcounter{ycopya} +\newcounter{ycopyb} +\newcounter{ykoordrahmen} +\newcounter{spalte} % Z„hler fr Spalte, wo Tage gesetzt werden +\newcounter{zeile} % Z„hler fr Monatszeile +\newcounter{tag} % Z„hler fr die Tage +\newcounter{xkoord} % x-Koordinate fr Setzen der Tage +\newcounter{ykoord} % y-Koordinate fr Setzen der Tage +\newcounter{monatnr} % Fr Ermittlung der Monatsgrenze +\newcounter{monatna} % Fr Ermittlung des Monatsnamen +\newcounter{zeilenanzahl} %Fr mehrere Zeilen pro Monat +\newcounter{ykoordmonat} +\newcounter{boxhoehe} +\newcounter{Kurzjahr} + +\newcommand{\Kalender}[1]{ +\setcounter{Jahr}{#1} %hier wird das Jahr dem Z„hler zugewiesen +\setcounter{Vorjahr}{\value{Jahr}-1} %das Vor- und das Nachfolgejahr +\setcounter{Nextjahr}{\value{Jahr}+1} +% ab hier werden die Kurzbezeichungen erstellt +\setcounter{Kurzjahr}{#1} +\whiledo{\value{Vorjahr} > 99}{\setcounter{Vorjahr}{ +\value{Vorjahr}- 100}} +\whiledo{\value{Kurzjahr} > 99}{\setcounter{Kurzjahr}{ +\value{Kurzjahr}- 100}} +\ifthenelse{\value{Kurzjahr} = 100}{\setcounter{Kurjahr}{00}} +% ein kleiner Hinweis, daá es ein wenig dauert +\typeout{Erstelle Kalender des Jahres \theJahr} +\typeout{... bitte warten ...} +\begin{scriptsize} +\unitlength0.7mm +\begin{picture}(198,143) +\modulJahr{#1} %dieser Befehl errechnet die Spalte fr den ersten Tag +\Tage %dieser Befehl setzt die Tage +\Kalenderrahmen %am Schluá noch der Rahmen um das Ganze +\end{picture} +\end{scriptsize}} + + +%##################################################################### +%===================================================================== +% Damit wird das Schaltjahr bercksichtigt und die Position des ersten +% Tages wird ermittelt. Fixjahr ist 1900 (ist halt so) +%===================================================================== + +\newcommand{\modulJahr}[1]{% +\setcounter{n}{#1} +\setcounter{vielfaches}{0} +\setcounter{differ}{\value{n}-1900} +\setcounter{n}{\value{n}-1900} %Jahresabstand von Jahr und Fixjahr + +%fr Jahre ber Fixjahr 1900 +\ifthenelse{\value{n} > 0}{ +\whiledo{\value{n} > 4}{ %solange n>4, 4 wegen den Schaltjahren +\setcounter{n}{\value{n}-4} % Anzahl der Schaltjahren werden ermittelt +\stepcounter{vielfaches}} % Volltreffer: Jahr ist Schaltjahr, oder doch nicht +\ifthenelse{\value{n}=4}{% +\setboolean{Schaltjahr}{true}}{\setboolean{Schaltjahr}{false}}}{} + +%fr Jahre unter Fixjahr 1900 +\ifthenelse{\value{n} < 0}{ +\whiledo{\value{n} < -4}{ %solange n<-4 +\setcounter{n}{\value{n}+4} +\addtocounter{vielfaches}{-1}} +\ifthenelse{\value{n}=-4}{% +\setboolean{Schaltjahr}{true}\addtocounter{vielfaches}{-1}}{% +\setboolean{Schaltjahr}{false}}}{} + +%fr das Fixjahr 1900 +\ifthenelse{\value{n} = 0}{ +\setcounter{vielfaches}{0} +\setboolean{Schaltjahr}{false}}{} + +% wenn Jahr durch 100 teilbar, dann kein Schaltjahr +\setcounter{n}{#1} %Jahresabstand von Jahr und Fixjahr +\whiledo{\value{n} > 100}{ %solange n>100, 100 wegen den Jahrhunderten +\setcounter{n}{\value{n}-100}} % Anzahl der Schaltjahren werden ermittelt +\ifthenelse{\value{n}=100}{% +\setboolean{Schaltjahr}{false}}{} +% wenn Jahr durch 400 teilbar, dann wiederum = Schaltjahr +\setcounter{n}{#1} %Jahresabstand von Jahr und Fixjahr +\whiledo{\value{n} > 400}{ %solange n>100, 100 wegen den Jahrhunderten +\setcounter{n}{\value{n}-400}} % Anzahl der Schaltjahren werden ermittelt +\ifthenelse{\value{n}=400}{% +\setboolean{Schaltjahr}{true}}{} +} + + +%##################################################################### +%============================== +% Hier wird die Spalte mit den Monatsnamen definiert +% mit Vorjahr und Nachfolgejahr +%===================================================================== +\newcommand{\monatname}{% +\ifcase\value{monatna}\or +\ifthenelse{\value{Vorjahr} < 10}{\bf Dezember 0\theVorjahr}{\bf Dezember +\theVorjahr}\or + {\bf Januar \theJahr}\or + {\bf Februar}\or + {\bf M"arz}\or + {\bf April}\or + {\bf Mai}\or + {\bf Juni}\or + {\bf Juli}\or + {\bf August}\or + {\bf September}\or + {\bf Oktober}\or + {\bf November}\or +\ifthenelse{\value{Kurzjahr} < 10}{\bf Dezember 0\theKurzjahr}{\bf Dezember +\theKurzjahr} + \or + {\bf Januar \theNextjahr}\fi} + +%##################################################################### +%===================================================================== +% Hier werden die Anzahl der Tage des Monats gesetzt +% Das Schaltjahr wird auch bercksichtigt +%==================================================================== + +\newcommand{\setgrenze}{% + \ifcase\value{monatnr}\or {\setcounter{grenze}{31+1}}\or + {\ifthenelse{\boolean{Schaltjahr}}{ + \setcounter{grenze}{29+1}}{\setcounter{grenze}{28+1}}}\or + {\setcounter{grenze}{31+1}}\or + {\setcounter{grenze}{30+1}}\or + {\setcounter{grenze}{31+1}}\or + {\setcounter{grenze}{30+1}}\or + {\setcounter{grenze}{31+1}}\or + {\setcounter{grenze}{31+1}}\or + {\setcounter{grenze}{30+1}}\or + {\setcounter{grenze}{31+1}}\or + {\setcounter{grenze}{30+1}}\or + {\setcounter{grenze}{31+1}}\or\fi} + +% das +1 kommt daher, weil Zeilennummer <> Monatsnummer +%===================================================================== + +%##################################################################### +%===================================================================== +% Hier wird der Rahmen des Kalenders gesetzt und mein Vermerk +%===================================================================== + +\newcommand{\Kalenderrahmen}{ +\setcounter{ykoordrahmen}{141-\value{ykoord}-3} +\setcounter{ycopya}{\value{ykoord}-14} +\setcounter{ycopyb}{\value{ykoord}-17} +\put(0,141){\line(0,-1){\value{ykoordrahmen}}} %linke Randlinie +\multiput(30,141)(6,0){29}{\line(0,-1){\value{ykoordrahmen}}} %senkr Linien +\put(1.5,135){\bf Monat} +\multiput(30,135)(42,0){4}{\makebox(6,0)[b]{\bf M\hspace*{-0.4mm}o}} +\multiput(36,135)(42,0){4}{\makebox(6,0)[b]{\bf Di}} +\multiput(42,135)(42,0){4}{\makebox(6,0)[b]{\bf Mi}} +\multiput(48,135)(42,0){4}{\makebox(6,0)[b]{\bf Do}} +\multiput(54,135)(42,0){4}{\makebox(6,0)[b]{\bf Fr}} +\multiput(60,135)(42,0){4}{\makebox(6,0)[b]{\bf Sa}} +\multiput(66,135)(42,0){4}{\makebox(6,0)[b]{\bf So}} +\put(0,141){\line(1,0){198}} +\put(0,133){\line(1,0){198}} +\put(158,\value{ycopya}){\makebox(30,15)[t]{\tiny \copyright 1995 J"org +S"ohner}} +\put(158,\value{ycopyb}){\makebox(30,15)[t]{\tiny formed and printed by +\LaTeXe}}} + +%#################################################################### +%==================================================================== +% Hier werden die Tage richtig gesetzt +%==================================================================== + +\newcommand{\Tage}{ +\setcounter{monatnr}{12} %Monatsnummer wird gesetzt (mit Dezember f„ngts an) +\setcounter{ykoord}{130} % Anfangs - y - Koordinate +\setcounter{monatna}{1} % Fr dem Monatsnamen +\setcounter{spalte}{5+\value{differ}+\value{vielfaches}} +% Die Zahl 5 bedeutet, dass der 1 Dez. 1899 am 5. Wochentag (Freitag beginnt) +\whiledo{\value{spalte} > 28}{\setcounter{spalte}{\value{spalte} - 28}} +\whiledo{\value{spalte} < 1}{\setcounter{spalte}{\value{spalte} + 28}} +\setcounter{zeile}{1} +\setzetage} % Die Tage werden nun fr alle Monate gesetzt + +%=================================================================== +\newcommand{\zeileunten}{\setcounter{ykoord}{\value{ykoord}-4}} +\newcommand{\linie}{\setcounter{ykoord}{\value{ykoord}-1} + \put(0,\value{ykoord}){\line(1,0){198}} + \setcounter{ykoord}{\value{ykoord}-3}} +%===================================================================== +\newcommand{\setzemonatname}{\setcounter{ykoordmonat}{\value{ykoord}+3} + \setcounter{boxhoehe}{\value{zeilenanzahl}*4} +\put(1.5,\value{ykoordmonat}){\makebox(0,\value{boxhoehe})[l]{\monatname}}} +%=================================================================== +\newcommand{\setxkoord}{\setcounter{xkoord}{24+3+\value{spalte}*6}} + +%=================================================================== + +\newcommand{\setzetage}{ % Befehl zum Setzen der Tage +\setcounter{tag}{1} +\setgrenze % Die Monatsgrenze wird ermittel +\setcounter{zeilenanzahl}{1} +\whiledo{\value{tag} < \value{grenze}}{\setxkoord +\put(\value{xkoord},\value{ykoord}){\makebox(0,0)[b]{\thetag}} +\stepcounter{tag} +\stepcounter{spalte} +\ifthenelse{\value{spalte}=29}{\setcounter{spalte}{1} +\ifthenelse{\value{tag} < +\value{grenze}}{\zeileunten\stepcounter{zeilenanzahl}}{}}{} +} +\linie +\setzemonatname +\stepcounter{zeile} +\whiledo{\value{zeile} < 15}{\stepcounter{monatnr} +\stepcounter{monatna} +\ifthenelse{\value{monatnr} > 12}{\setcounter{monatnr}{1}}{} +\setzetage} % fr die restlichen Monate +} +%========================== E N D E ================================= + +
\ No newline at end of file |