diff options
author | Karl Berry <karl@freefriends.org> | 2009-03-28 22:52:37 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-03-28 22:52:37 +0000 |
commit | 48066adf939ff889ed9e33a4a8e5ede53db58d28 (patch) | |
tree | 98aec5997b916cfc7614afb4f0f21477f5a6a39a /Master/texmf-dist | |
parent | 88e63a5d68668d620c783cdbf51e0c5bab111b7c (diff) |
pst-calendar missing (from Herbert Voss, 28mar09)
git-svn-id: svn://tug.org/texlive/trunk@12554 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/Changes | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/README | 13 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.ltx | 226 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.pdf | bin | 0 -> 138683 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.tex | 131 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.pdf | bin | 0 -> 164316 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.tex | 382 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pst-calendar/pst-calendar.sty | 496 |
8 files changed, 1255 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/pst-calendar/Changes b/Master/texmf-dist/doc/latex/pst-calendar/Changes new file mode 100644 index 00000000000..884b50f3718 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/Changes @@ -0,0 +1,7 @@ +..... pst-calendar.sty +0.47 2005-11-09 first CTAN version + + +..... pst-calendar-docFR.tex + 2004-11-09 first CTAN version + diff --git a/Master/texmf-dist/doc/latex/pst-calendar/README b/Master/texmf-dist/doc/latex/pst-calendar/README new file mode 100644 index 00000000000..cf3a6469bf2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/README @@ -0,0 +1,13 @@ +Save the files pst-calendar.sty in a directory, which is part of your +local TeX tree. +Then do not forget to run texhash to update this tree. +For more information see the documentation of your LATEX distribution +on installing packages into your LATEX distribution or the +TeX Frequently Asked Questions: +(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages). + +pst-calendar needs pstricks, fp, pst-3d, multido and pst-xkey +which should be all part of your +local TeX installation, otherwise get it from a CTAN server, f.ex. +ftp://ftp.ctan.org + diff --git a/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.ltx b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.ltx new file mode 100644 index 00000000000..caa831ddd34 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.ltx @@ -0,0 +1,226 @@ +\documentclass[11pt,a4paper,ngerman]{article} +\usepackage[latin1]{inputenc}% +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{lmodern} +\parindent=0pt +\parskip=5pt plus 3pt minus 2pt +\usepackage{enumerate,longtable,url} +\let\OldUrl=\url +\renewcommand\url[1]{\protect\OldUrl{#1}} + +\usepackage[scaled]{luximono} +% +\usepackage{xspace,nonfloat} +\usepackage[bottom]{footmisc} +% +\usepackage{tabularx} +\usepackage{longtable} +\usepackage{ltxtable} +\usepackage{varioref} +\usepackage[NewCommands,NewParameters]{ragged2e} +\usepackage{url} +\def\UrlFont{\ttfamily} +\makeatletter +%\def\verbatim@font{\small\normalfont\ttfamily} +% +\usepackage[dvipsnames,prologue,table]{pstricks} +\colorlet{tableheadcolor}{gray!25} +\colorlet{tablerowcolor}{gray!12} +\newcommand\XCBox[1]{\fcolorbox{black}{#1}{\phantom{aa}} \small #1} +\usepackage{pst-calendar} +\let\PSTfileversion\fileversion +\SpecialCoor +\psset{griddots=10,subgriddiv=0,gridlabels=7pt} +% +\definecolor{hellgelb}{rgb}{1,1,0.8} +\definecolor{shadecolor}{rgb}{0.9,0.9,0.9} +\definecolor{sphgrau}{rgb}{0.40,0.40,0.40} +% +% ------------------------------- Namen Abkuerungen ---------------------- +\newcommand{\La}% + {L\kern-.36em + {\setbox0\hbox{T}% + \vbox to\ht0{\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + A}% + \vss}% + }} +\def\AllTeX{(\La\kern-.075em)\kern-.075em\TeX\xspace} +\def\AMS{American Mathematical Society\xspace} +\def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox + {$\mathcal{M}$}\kern-.125em$\mathcal{S}$} +\def\AmSLaTeX{\AmS-\LaTeX\xspace} +\let\latex\LaTeX +\let\tex\TeX +% +\def\BibTeX{\textsc{Bib}\kern-.08em\TeX\index{BiBTeX@Bib\TeX}} +\def\PT{Plain \TeX\index{Plain TeX@Plain \TeX}\xspace} +\def\PST{{\texttt{PSTricks}}\xspace} +\def\CTAN{{\texttt{CTAN}}\index{CTAN}\xspace} +\def\PDF{{\texttt{PDF}}\xspace} +\def\pst{{\texttt{pstricks}}\xspace} +\def\PS{PostScript\xspace} +\def\CT{Con\TeX t\index{ConTeXt@Con\TeX t}\xspace} +\def\GS{Ghostscript\index{Ghostscript}\xspace} +\def\GeX{G\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@} +\def\at{\char064} +\def\VTeX{\texttt{V\TeX}\index{VTeX@\texttt{V\protect\TeX}}} +\newcommand*\CMD[1]{{\texttt{\textbackslash #1}}} +\newcommand\Paket[1]{\texttt{#1}} +\providecommand\Programm[1]{\textsf{#1}} +\providecommand\RaggedRight{\raggedright} +% +\def\Index#1{\index{#1}#1} +\index{Environment|see{Umgebung}} +\def\eIndex#1{\index{Umgebung!#1@\texttt{#1}}\index{#1@\texttt{#1}}} +\def\tIndex#1{\index{#1@\texttt{#1}}} +\def\cIndex#1{\index{#1@\protect\CMD{#1}}} +\def\pIndex#1{\index{Parameter@\textbf{Parameter}!#1@\texttt{#1}}\index{#1@\texttt{#1}}} +\def\ppIndex#1{\index{Parameter@\textbf{Parameter}!#1@\texttt{#1}}} +\def\sIndex#1{\index{Syntax@\textbf{Syntax}!\protect\CMD{#1}}} +\def\csIndex#1{\sIndex{#1}\cIndex{#1}} +\def\PIndex#1{\index{Paket@\textbf{Paket}!\texttt{#1}}} +\def\mIndex#1{\texttt{#1}\tIndex{#1}\pIndex{#1}} +\def\aref#1{$\rightarrow$\vref{#1}} +\def\PSindex#1{\index{PostScript!#1}} +\def\Makroindex#1{\index{Makro!#1@\protect\CMD{#1}}} +\def\Optindex#1{\index{Parameter@\textbf{Parameter}!\texttt{#1}}} +\def\ttindex#1{\index{#1@\texttt{#1}}} +\def\vert{\ensuremath{|}} +% +\let\Olddegrees\textdegrees +\def\textdegrees{\ensuremath{\mbox{\Olddegrees}}} +\def\sa{\ensuremath{\sphericalangle}\xspace}% needs amssymb +% +% +%%-------------------------------- danger --------------------------------------------- +\usepackage{manfnt} +\usepackage{lettrine} +\newsavebox{\dBox} + +\newenvironment{dangerPar*} +{\gdef\dangerSym{\dbend\,\dbend}\@dangerPar} +{\end@dangerPar} + +\newenvironment{dangerPar} +{\gdef\dangerSym{\dbend\phantom{\,\dbend}}\@dangerPar} +{\end@dangerPar} + +\def\@dangerPar{% + \begin{lrbox}{\dBox} + \minipage[c]{\linewidth-\widthof{\dangerSym}-\columnsep}% +} +\def\end@dangerPar{% + \endminipage + \end{lrbox}% + \trivlist\item\relax + \noindent + \minipage[c]{\widthof{\dangerSym}} + \raisebox{\height}[.9\height][.1\height]{\dangerSym}% ??? + \endminipage + \hfill + \minipage[c]{\wd\dBox} + \usebox{\dBox} + \endminipage% + \endtrivlist +} +\newsavebox{\bombbox} +\sbox\bombbox{% + \psset{unit=.55ex}% + \begin{pspicture}(-4,-4)(4,4) + \pscircle[fillcolor=gray,fillstyle=solid]{4} + \rput{45}{\psscaleboxto(6,0){\textsf{\textbf{PS}}}} + \psellipse*(0,3.8)(1,.2) + \psellipse*(0,5.5)(1,.2) + \psframe*(-1,3.8)(1,5.5) + \psbezier(0,5.5)(0,7)(1,8)(3.5,8) + \multido{\r=-0+40}{9}{\rput{\r}(3.5,8){\psline(0,0)(.4,0)}} + \end{pspicture}} + +\newcommand\danger{% + \lettrine[lines=2,lraise=0.65,nindent=0pt,findent=.5em]{{\small\dbend}}} + +\newcommand\ddanger{% + \lettrine[lines=2,lraise=0.65,nindent=0pt,findent=.5em]{% + {\small\dbend\,\dbend}}} + +\newcommand\DANGER{% + \lettrine[lines=3,lraise=0.01,lhang=0,nindent=0pt,findent=.75em]{% + \usebox\bombbox}} +%%------------------------------- Rest ------------------------------------------ +\pretolerance=500 +\tolerance=1000 +\hbadness=3000 +\vbadness=3000 +\hyphenpenalty=400 + +%-------------------------------- Listings ------------------------------------- +\usepackage{showexpl}% not a real PSTricks package +% +\renewcommand{\ttdefault}{ul9}% Luxi Mono +%\lstset{language=PSTricks,keywordstyle=\small\fontfamily{ul9}\bfseries} +\lstset{wide=true} +% +%-------------------------------- Allgemein ------------------------------------- +%\addtolength\belowcaptionskip{-10pt} +% +\providecommand\dante{DANTE \eV} +\providecommand\eV{e.V\kern-.18em\@ifnextchar.{}{.}} +\def\textat{\protect\makeatletter\texttt{@}\protect\makeatother} + +\def\lBrace{\texttt{\{}} +\def\rBrace{\texttt{\}}} +\def\lBracket{\texttt{[}} +\def\rBracket{\texttt{]}} +% +\newcounter{SX@refC}% for texlive8 +\def\PSTemph#1{\textit{\texttt{#1}}} +% +\def\LPack#1{\texttt{#1}\PIndex{#1}} +\def\Lmenv#1{\texttt{#1}\eIndex{#1}} +\def\Lmcs#1{\CMD{#1}\Makroindex{#1}\cIndex{#1}} +\let\xLcs\Lmcs +\let\Lmsyn\Lmcs +\let\Lcs\CMD +\let\Lit\texttt +\def\Loption#1{\texttt{#1}\Optindex{#1}\ttindex{#1}} +\def\LProg#1{\texttt{#1}\pIndex{#1}} +\let\Prog\LProg +\def\LFile#1{\texttt{#1}\tIndex{#1}} +\def\LColor#1{\texttt{#1}\index{Farbe!#1@\texttt{#1}}} +\def\Lindex#1{#1\index{#1}}% Ausgeben und in den Index +\def\Lext#1{\texttt{#1}\index{Dateiendung!#1@\texttt{#1}}} +\def\LClass#1{\texttt{#1}} +\def\Lmnotation#1{\texttt{#1}\tIndex{#1}} +\newcommand\Larga{} +\DeclareRobustCommand\Larga[1]{$\langle$\PSTemph{#1}$\rangle$} +\newcommand\LargA{} +\DeclareRobustCommand\LargA[1]{\lBrace$\langle$\PSTemph{#1}$\rangle$\rBrace} +\newcommand\Largs{} +\DeclareRobustCommand\Largs[1]{\lBracket$\langle$\PSTemph{#1}$\rangle$\rBracket} +\newcommand\Largb{} +\DeclareRobustCommand\Largb[1]{\lBrace$\langle$\PSTemph{#1}$\rangle$\rBrace} +\newcommand\Largr{} +\DeclareRobustCommand\Largr[1]{\PSTemph{({#1})}} +\DeclareRobustCommand\Largra[1]{(\Larga{#1})} +\newcommand\Larg{} +\DeclareRobustCommand\Larg[1]{\lBrace\texttt{#1}\rBrace} +\def\begEnv#1{\CMD{begin\{#1\}}\tIndex{#1}} +\def\endEnv#1{\CMD{end\{#1\}}} +\def\OptArg{\Largs{Optionen}} +\def\Largrao{($\langle x_0,y_0\rangle$)} +\def\Largrai{($\langle x_1,y_1\rangle$)} +\def\Largraii{($\langle x_2,y_2\rangle$)} +\def\Largraiii{($\langle x_3,y_3\rangle$)} +\def\Largran{($\langle x_n,y_n\rangle$)} +% +\input random +% +\begin{document} + +\input{pst-calendar-docDE} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.pdf b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.pdf Binary files differnew file mode 100644 index 00000000000..86ae9dbb863 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.pdf diff --git a/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.tex b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.tex new file mode 100644 index 00000000000..23522d6f7ac --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docDE.tex @@ -0,0 +1,131 @@ +\title{\texttt{PST-Calendar} - plotting calendars\\ +\footnotesize{version \PSTfileversion}} +\author{% +Manuel Luque\thanks{\url{Mluque5130@aol.com}} and +Herbert Vo\ss\thanks{\url{voss@pstricks.de}}} +\date{\today} +\maketitle + +\begin{abstract} +\texttt{pst-calendar} stellt zwei Makros für das Erstellen von Kalenderblättern +oder Kalender-Dodekaedern. Der Monat und das Jahr können frei gewählt werden, +wobei Kalender nur zwischen 2000 und 2099 möglich sind. Die Berechnung +erfolgt ausschließlich mit den Makros des \LPack{fp}-Pakets. +\end{abstract} + +%\tableofcontents + + +\section{\LPack{pst-calendar} -- Verschiedene Kalenderoperationen} + +Das Paket hat die drei Optionen \Loption{french}, \Loption{english} und \Loption{ngerman}. +Standardmäßig wird \verb+english+ ausgewählt, womit die Monats- und WOchennamen dann +in eben dieser Sprache ausgegeben werden. Für die Dokumentation wurde \verb+ngerman+ +ausgewählt. + + +Dieses Paket bietet keine Kalenderoperationen im mathematischen Sinne, sondern erlaubt +die Ausgabe von Kalenderblättern. \LPack{pst-calendar} verfügt über speziellen Sprachanpassungen +für Englisch (Standard),Französisch und Deutsch. Dies bezieht sich auch auf die Optionen, die +in Tabelle~\ref{tab:calendrier:options} zusammengestellt sind. +Es existiert keine spezielle +\TeX-Version, sodass hier spezielle Anpassungen nötig werden, wenn nicht mit \LaTeX\ +gearbeitet wird. + +\Lmsyn{psCalendar}\OptArg\\ +\Lmsyn{psCalDodecaeder}\OptArg + +Ohne Angabe von Daten wird immer vom aktuellen Tagesdatum ausgegangen und der entsprechende Monat +für \Lmcs{psCalendar} und die entsprechenden Monate für \Lmcs{psCalDodecaeder} ausgegeben. +\begin{table}[htb] +\caption{Zusammenstellung der verfügbaren Optionen für \texttt{calendrierfp}}\label{tab:calendrier:options} +\begin{tabularx}{\linewidth}{@{}ll@{}c>{\RaggedRight}X@{}} +\emph{Name} & \emph{Wert} & \emph{Vorgabe} & \emph{Bedeutung}\\\hline +\Loption{Jahr} & \Larga{Integer} & \verb+\number\year+ & betrachteter Jahr\\ +\Loption{Monat} & \Larga{$1\ldots 12$} & \verb+\number\month+ & betrachteter Monat\\ +\Loption{MonatT} & \Larga{$1\ldots 12$} & \verb+\number\month+ & Markierung des aktuellen Tages im angegebenen Monat\\ +\Loption{Tag} & \Larga{$1\ldots 31$} & \verb+\number\day+ & betrachteter Monat\\ +\Loption{style} & \Larga{Monat} & \verb+\number\month+ & vorne liegender Monat beim Dodekaeder +\end{tabularx} +\end{table} + + +\bgroup +\begin{LTXexample}[pos=t] +\psscalebox{0.5}{\psCalendar} +\psscalebox{0.5}{\psCalendar[Jahr=2006,Monat=1]} +\psscalebox{0.5}{\psCalendar[Jahr=2006,Tag=23,Monat=2,MonatT=2]} +\end{LTXexample} +\egroup + +Das einzige Problem sind die Feiertage, die bislang noch ausschließlich auf den französichen +Vorgaben aufbauen. Die entsprechenden Kode-Sequenzen in dem Paket sind jedoch leicht zu +erkennen und entsprechend zu ändern. Die Ausgabe eines kompletten Jahres lässt sich +mithilfe des \Lmcs{multido}-Makros leicht realisieren. + + +\begin{center} +\bgroup +\multido{\iM=1+3}{4}{% + \multido{\iMM=\iM+1}{3}{\psscalebox{0.5}{\psCalendar[Jahr=2006,Monat=\iMM]}}\\} +\egroup +\end{center} + +\begin{lstlisting} +\multido{\iM=1+3}{4}{% + \multido{\iMM=\iM+1}{3}{\psscalebox{0.5}{\psCalendar[Jahr=2006,Monat=\iMM]}}\\} +\end{lstlisting} + +Eine weitaus ansprechendere Ausgabe ermöglicht \Lmcs{psCalDodecaeder}, welcher die +Monate auf den Seiten eines Dodekaeders\index{Dodekaeder} anordnet. Ohne Angabe irgendeines +Monates beziehungsweise Jahres wird grundsätzlich vom Januar des aktuellen Jahres +ausgegangen. Mit der Option \Loption{style}\verb+=+\Larga{Monat} kann man jederzeit +einen anderen Monat auf die Vorderseite platzieren. + +\bgroup +\begin{LTXexample}[pos=t] +\psscalebox{0.2}{\psCalDodecaeder}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,Monat=1]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=April]} +\end{LTXexample} +\egroup + +\begin{center} +\bgroup +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Januar]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Februar]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Maerz]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=April]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Mai]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Juni]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Juli]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=August]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=September]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Oktober]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=November]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Dezember]} +\egroup +\end{center} + +\begin{lstlisting} +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Januar]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Februar]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Maerz]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=April]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Mai]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Juni]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Juli]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=August]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=September]}\\ +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Oktober]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=November]}\hfill +\psscalebox{0.2}{\psCalDodecaeder[Jahr=2006,style=Dezember]} +\end{lstlisting} + +\iffalse +\nocite{*} +\bibliographystyle{plain} +\bibliography{pst-labo-doc} +\fi + +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.pdf b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.pdf Binary files differnew file mode 100644 index 00000000000..f522579e219 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.pdf diff --git a/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.tex b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.tex new file mode 100644 index 00000000000..cce06c5ef1f --- /dev/null +++ b/Master/texmf-dist/doc/latex/pst-calendar/pst-calendar-docFR.tex @@ -0,0 +1,382 @@ +\documentclass{article} +\usepackage[latin1]{inputenc}% +\usepackage[T1]{fontenc} +\usepackage[a4paper,margin=2cm]{geometry} +%% Manuel LUQUE <Mluque5130aol.com> %% +%% 1 Octobre 1999 pour le dodécaèdre %% +%% 23 avril 2003 pour le calendrier %% +%% 26 avril : calcul de la date de Pâques %% +%% 27 avril 20003 : repérer une date particulière, +%% suggestion de Jean-Michel Sarlat %% +%% jours fériés : 1 et 8 mai, 1 et 11 décembre +%% 25 août et lundi de Pâques +\pagestyle{empty} +% +\usepackage[french]{pst-calendar} +% +\usepackage{url} +\newcommand\Encadre[1]{\psframebox[fillstyle=solid,fillcolor=yellow,linecolor=red]{#1}} +\title{Calculer un calendrier avec \LaTeX{},\\ +le dessiner en 3D avec PSTricks (version 0.47)} +\author{Manuel Luque} +\date{\today} +\begin{document} + +\maketitle +%{\typein[\Year]{Entrez l'année (2000...2099)?} +%\def\Year{2006} +\begin{center} +\psset{An=2006} +\begin{tabular}{ll} +\psCalendar[Mois=1]&\psCalendar[Mois=2]\\ +\psCalendar[Mois=3]&\psCalendar[Mois=4]\\ +\psCalendar[Mois=5]&\psCalendar[Mois=6] +\end{tabular} + +\end{center} +\begin{center} +\begin{tabular}{ll} +\psCalendar[Mois=7]&\psCalendar[Mois=8]\\ +\psCalendar[Mois=9]&\psCalendar[Mois=10]\\ +\psCalendar[Mois=11]&\psCalendar[Mois=12] +\end{tabular} +\end{center} +%} +\begin{center} +\psscalebox{0.5}{\psCalDodecaeder[Vx=-\rd,Vy=\rc,Vz=0,viewangle=198]} +\end{center} +\section{Objectifs, outils et méthodes adoptés} +\subsection{Objectifs} +Il s'agissait de calculer avec \LaTeX{}, un calendrier valable de l'an +2\,000 à l'an 2\,099 (je suis optimiste), puis d'adopter une méthode +originale de représentation en 3D, en plaçant chaque mois sur l'une des +faces d'un dodécaèdre. Un calendrier de ce type était, il y quelques années, +offert par les visiteurs médicaux des laboratoires \textsc{Pfizer}. +\subsection{Outils adoptés} +Il existe déjà un calendrier écrit en \LaTeX{}, dont les calculs sont faits +directement en \TeX{}. Il s'agit de \texttt{calendar}, écrit par Michael +Barret et disponible sur le serveur du \texttt{CTAN} ; c'est très bien fait. + +Un calendrier en 3D, dessiné avec PSTricks, est déjà proposé depuis plusieurs d'années par Denis +Girou sur : \url{http://tug.org/applications/PSTricks/More}. + +Donc, rien de neuf, mais revu à ma façon : pour ma part j'ai décidé d'utiliser les macros du package \texttt{fp} de Michael +Mehlich, qui forment un excellent outil de calcul. La lecture du code écrit +avec ce package est plus compréhensible que celui écrit en \TeX{} de base. + +Pour la représentation en 3d, j'ai aussi, utilisé PSTricks de Timothy Van Zandt, et +en particulier l'extension \texttt{pst-3d}. +\subsection{Méthode adoptée} +La méthode de calcul des jours de semaine du calendrier est déduite de quelques +observations : +\begin{enumerate} + \item Le 1 janvier 2\,000 est un samedi. On adopte la convention de + représenter les jours de semaine par un numéro : j'ai choisi : +\begin{center} + \renewcommand{\arraystretch}{1.5} + \begin{tabular}{ccccccc} + lundi&mardi&mercredi&jeudi&vendredi&samedi&dimanche\\ \hline + 1&2&3&4&5&6&7 + \end{tabular} +\end{center} + \item Une année ordinaire comprend 365 jours, or $365=52\times7+1$. Il y a + donc un décalage de 1~jour dans le nom des jours pour l'année suivante si + elle est ordinaire elle aussi. Autrement dit le 1~janvier 2\,001 devrait + être un dimanche ($6+1=7$). Or l'an 2\,000 est bissextile et comporte 366~jours : le + décalage sera de 2, le 1~janvier 2\,001 correspondra au numéro $6+2=8=1\ (modulo\ 7)$. + \item Sur la période retenue 2\,000/2\,099 les années divisibles par 4 : + 2\,000, 2\,004, 2\,008 etc. sont bissextiles. On déterminera donc si + l'année choisie est bissextile en testant si elle est un multiple de~4. +\begin{verbatim} +% test d'une année bissextile +\FPeval{\YearBissextil}{(\psk@CalendrierA)/4} +\FPtrunc{\YearBissextil}{\YearBissextil}{0} +\FPeval{\YearBissextil}{(\YearBissextil)*4} +\FPtrunc{\YearBissextil}{\YearBissextil}{0} +\ifnum\YearBissextil=\psk@CalendrierA +etc. +\end{verbatim} + \item Pour une année choisie, on calculera le décalage par rapport à + 2\,000, en comptant les années et en ajoutant 1 chaque fois qu'il y aura + dans cet intervalle une année bissextile (en tenant compte de 2\,000). + \item On retient pour le début de chaque mois : +\begin{center} + \renewcommand{\arraystretch}{1.5} + \begin{tabular}{c|c|c} + mois&année ordinaire&année bissextile\\ \hline + janvier&1&1\\ + février&32&32\\ + mars&60&61\\ + avril&91&92\\ + mai&121&122\\ + juin&152&153\\ + juillet&182&183\\ + août&213&214\\ + septembre&244&245\\ + octobre&274&275\\ + novembre&305&306\\ + décembre&335&336\\ + \end{tabular} +\end{center} +\end{enumerate} + + + + +\section{L'utilisation} +\subsection{Utilisation simple} +Si on veut voir uniquement le mois de l'année choisie, on fera, par exemple : +\begin{verbatim} +\psCalendar[An=2099,Mois=12,Jour=25,MoisChoisi=12] +\end{verbatim} +\begin{center} +\psCalendar[An=2099,Mois=12,Jour=25,MoisChoisi=12] +\end{center} +Cette étude ne teste pas si les valeurs introduites pour l'année(\texttt{An}) et le mois(\texttt{Mois}), sont correctes ! + +Par défaut, la commande \verb+\psCalendar+ affiche le mois et l'année en +cours et entoure la date du jour (suggestion de Jean-Michel \textsc{Sarlat}). + +Si on veut voir afficher, un jour d'un mois particulier, on rajoutera le +paramètre \Encadre{\texttt{MoisChoisi=valeur}} aux autres, comme dans +l'exemple précédent et le suivant. +\begin{center} +\psCalendar +\end{center} +\begin{verbatim} +\psCalendar[An=2004,Mois=6,Jour=21,MoisChoisi=6] +\end{verbatim} +\begin{center} +\psCalendar[An=2004,Mois=6,Jour=21,MoisChoisi=6] +\end{center} +\subsection{Le calendrier en 3D} +La commande s'écrit très simplement : +\begin{verbatim} +\psCalDodecaeder +\end{verbatim} +\begin{center} +\psscalebox{0.5}{\psCalDodecaeder} +\end{center} +pour avoir le calendrier de l'année en cours. Si le schéma est trop grand à +votre goût, encadrez la commande par un \verb+\psscalebox{0.5}{\psCalDodecaeder}+ + +Pour avoir le mois de mai face à soi, on écrira, par exemple : +\begin{verbatim} +\psscalebox{0.5}{\psCalDodecaeder[style=mai]} +\end{verbatim} +\begin{center} +\psscalebox{0.5}{\psCalDodecaeder[style=mai]} +\end{center} +\verb+Vx, Vy, Vz+ sont les valeurs des paramètres de \texttt{viewpoint=-5.85 -3.62 +0} de la commande \verb+\ThreeDput+ de \verb+pst-3d+, qui sont les +coordonnées d'un vecteur définissant la direction où se trouve +l'observateur (la direction de la projection parallèle). + +On jouera aussi sur le paramètre \verb+viewangle+, pour amener la face +observée dans le bon sens de la lecture. + +Pour avoir le mois de janvier face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=janvier]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=janvier]} +\end{center} +Pour avoir le mois de février face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=fevrier]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=fevrier]} +\end{center} +Pour avoir le mois de mars face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=mars]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=mars]} +\end{center} +Pour avoir le mois d'avril face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=avril]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=avril]} +\end{center} +Pour avoir le mois de juin face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=juin]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=juin]} +\end{center} +Pour avoir le mois de juillet face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=juillet]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=juillet]} +\end{center} +Pour avoir le mois d'août face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=aout]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=aout]} +\end{center} +Pour avoir le mois de septembre face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=septembre]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=septembre]} +\end{center} +Pour avoir le mois d'octobre face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=octobre]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=octobre]} +\end{center} +Pour avoir le mois de novembre face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=novembre]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=novembre]} +\end{center} +Pour avoir le mois de décembre face à soi, on écrira : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=decembre]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=decembre]} +\end{center} +Pour visualiser une année particulière, avec un mois choisi face à soi, et un jour de ce mois, (15~mai~2004) on +fera : +\begin{verbatim} +\psscalebox{0.35}{\psCalDodecaeder[style=mai,An=2004,MoisChoisi=5,Jour=15]} +\end{verbatim} +\begin{center} +\psscalebox{0.35}{\psCalDodecaeder[style=mai,An=2004,MoisChoisi=5,Jour=15]} +\end{center} +\section{Calcul de la date de Pâques} +On trouve sur internet, à propos de ce sujet de nombreux sites. \'A partir +de la \textit{définition} de la fête proprement dite, les formules << +magiques >> abondent. L'une d'elle a retenu mon attention, je l'ai +retranscrite avec le package \texttt{fp}. Dans l'ordre, un aperçu de la +page, puis le codage des calculs avec \texttt{fp}. + +Le site : \texttt{http://www.altcal.com/elmcal.html}, et un extrait : + +\begin{verbatim} +Version 2.0 - 11 Nov 1998 + +Copyright and disclaimer +------------------------ + This document is Copyright (C) 1998 by Claus Tondering. + E-mail: claus@tondering.dk. + The document may be freely distributed, provided this + copyright notice is included and no money is charged for + the document. + This document is provided "as is". No warranties are made as + to its correctness. + +G = year mod 19 + +For the Julian calendar: + I = (19*G + 15) mod 30 + J = (year + year/4 + I) mod 7 + +For the Gregorian calendar: + C = year/100 + H = (C - C/4 - (8*C+13)/25 + 19*G + 15) mod 30 + I = H - (H/28)*(1 - (H/28)*(29/(H + 1))*((21 - G)/11)) + J = (year + year/4 + I + 2 - C + C/4) mod 7 + +Thereafter, for both calendars: +L = I - J +EasterMonth = 3 + (L + 40)/44 +EasterDay = L + 28 - 31*(EasterMonth/4) +\end{verbatim} + +\hrule +{\blue +\begin{verbatim} +\FPset{\Year}{1981} % placer ici l'année +\FPeval\GY{(\Year)-19*trunc((\Year)/19,0)} +\FPeval{\Cent}{trunc((\Year)/100,0)} +\FPeval{\Iter}{trunc((\Cent)-trunc((\Cent)/4,0)-trunc((8*(\Cent)+13)/25,0)+ + (\GY)*19+15,0)} +\FPeval{\Iterdiv}{trunc((\Iter)/30,0)} +\FPeval\Hepact{(\Iter)-30*(\Iterdiv)} +\FPeval\Inbre{trunc((\Hepact)-trunc((\Hepact)/28,0)* + (1-trunc((\Hepact)/28,0))*(trunc(29/((\Hepact)+1),0)*trunc((21-(\GY))/11,0)),0)} +\FPeval\Jnbreinter{trunc((\Year)+trunc((\Year)/4,0)+(\Inbre)+2-(\Cent)+trunc((\Cent)/4,0),0)} +\FPeval\Jnbre{trunc((\Jnbreinter)-7*trunc((\Jnbreinter)/7,0),0)} +\FPeval\Lnbre{trunc((\Inbre)-(\Jnbre),0)} +\FPeval\Month{trunc(3+trunc(((\Lnbre)+40)/44,0),0)} +\FPeval\Day{trunc((\Lnbre)+28-31*trunc((\Month)/4,0),0)} +\ifnum\Month=4 + \ifnum\Day>25 \FPeval{\Day}{trunc((\Day)-7,0)} \fi +\fi + +P\^aques le Dimanche \FPprint\Day/\FPprint\Month/\FPprint\Year +\end{verbatim}} +\FPset{\Year}{1981} % placer ici l'année +\FPeval\GY{(\Year)-19*trunc((\Year)/19,0)} +\FPeval{\Cent}{trunc((\Year)/100,0)} +\FPeval{\Iter}{trunc((\Cent)-trunc((\Cent)/4,0)-trunc((8*(\Cent)+13)/25,0)+ + (\GY)*19+15,0)} +\FPeval{\Iterdiv}{trunc((\Iter)/30,0)} +\FPeval\Hepact{(\Iter)-30*(\Iterdiv)} +\FPeval\Inbre{trunc((\Hepact)-trunc((\Hepact)/28,0)* + (1-trunc((\Hepact)/28,0))*(trunc(29/((\Hepact)+1),0)*trunc((21-(\GY))/11,0)),0)} +\FPeval\Jnbreinter{trunc((\Year)+trunc((\Year)/4,0)+(\Inbre)+2-(\Cent)+trunc((\Cent)/4,0),0)} +\FPeval\Jnbre{trunc((\Jnbreinter)-7*trunc((\Jnbreinter)/7,0),0)} +\FPeval\Lnbre{trunc((\Inbre)-(\Jnbre),0)} +\FPeval\Month{trunc(3+trunc(((\Lnbre)+40)/44,0),0)} +\FPeval\Day{trunc((\Lnbre)+28-31*trunc((\Month)/4,0),0)} +\ifnum\Month=4 + \ifnum\Day>25 \FPeval{\Day}{trunc((\Day)-7,0)} \fi +\fi + +\centerline{\Encadre{P\^aques tombe le dimanche +\FPprint\Day/\FPprint\Month/\FPprint\Year}} + +Vous y reconnaîtrez sans peine l'algorithme initial, j'ai rajouté les trois +dernières lignes, car l'auteur des formules précédentes semble avoir oublié +que Pâques peut varier seulement entre le 22~mars et le 25~avril inclus + Sans cette correction, le programme affiche dans l'exemple précédent (1981), le dimanche 26~avril au lieu du + 19~avril. + +Pour le tester quelques dates : +\begin{center} +\begin{tabular}{c|c} +1978& 26 mars \\ \hline +1979&15 avril \\ \hline +1980&6 avril \\ \hline +2000&23 avril \\ \hline +2002&31 mars \\ \hline +2003&20 avril \\ \hline +\end{tabular} +\end{center} +Ce n'est pas garanti sans erreurs, l'emploi des fonctions \texttt{trunc} ou +\texttt{round} ou \texttt{clip} ne donnent pas à 100\% toujours, le résultat +attendu. Par exemple si \texttt{fp} calcule $14.99999999$, alors que +de toute évidence c'est $15$, il ne vaut mieux pas faire +\texttt{trunc} pour avoir la partie entière, mais \texttt{round}, +car sinon on commet une erreur d'une unité en moins ! Il faudrait +donc prévoir de tester ces cas ! +\section{Que reste-t-il à faire ? Problèmes !} +\begin{itemize} + \item Placer les jours fériés du lundi de Pâques et du lundi de + Pentecôte. + \item Dessiner automatiquement le mois en cours, face à notre regard. + \item Prévoir un test qui limite l'année choisie à l'intervalle permis, + soit $[2000-2099]$. + \item Trouver un moyen simple, élégant et cohérent d'entourer la date choisie. + \item Débusquer les erreurs, si vous en trouvez\ldots +\end{itemize} + +\end{document} diff --git a/Master/texmf-dist/tex/latex/pst-calendar/pst-calendar.sty b/Master/texmf-dist/tex/latex/pst-calendar/pst-calendar.sty new file mode 100644 index 00000000000..c34692384f4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-calendar/pst-calendar.sty @@ -0,0 +1,496 @@ +%% +%% This is file `pst-calendar.sty', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-calendar.sty' +%% +%% Manuel LUQUE <Mluque5130aol.com> +%% Herbert Voss <voss _at_ perce.de> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-calendar' is a PSTricks package to draw a calendar, +%% as a tabular or as doecahedron +%% +% Requires PSTricks, pstricks, pst-3d, multido, fp packages +%% Manuel LUQUE <Mluque5130aol.com> %% +%% 1 Octobre 1999 pour le dodécaèdre %% +%% 23 avril 2003 pour le calendrier %% +%% 27 avril : placer une date de son choix +%% suggestion de Jean-Michel Sarlat +%% jours fériés et fêtes : 1 mai 003 %% +%% 1 et 8 mai, 15 août, 1 et 11 novembre, 25 décembre +%% fête de Pâques %% +%% ascension et pentecôte : 8 mai 2003 +% +\NeedsTeXFormat{LaTeX2e} +% +\ProvidesPackage{pst-calendar} + [2005/11/09 v0.47 calendars with `PSTricks' (ML,hv)] + % +% +\RequirePackage{fp} +\FPmessagesfalse +\RequirePackage{pstricks} +\SpecialCoor% +\RequirePackage{pst-3d} +\RequirePackage{multido} +\RequirePackage{pst-xkey} + +\pst@addfams{pst-calendar}% hv + +\def\CalendrierFP@version{Version 0.47, 2005-11-07} +\message{`pst-Calendar avec FP', \CalendrierFP@version\space ML/hv} +% +\DeclareOption{english}{% +\def\ps@Jan{January} +\def\ps@Feb{February} +\def\ps@Mar{March} +\def\ps@Apr{April} +\def\ps@May{May} +\def\ps@Jun{June} +\def\ps@Jul{July} +\def\ps@Aug{August} +\def\ps@Sep{September} +\def\ps@Oct{October} +\def\ps@Nov{November} +\def\ps@Dec{December} +\def\ps@Mon{M} +\def\ps@Tue{T} +\def\ps@Wed{W} +\def\ps@Thu{T} +\def\ps@Fri{F} +\def\ps@Sat{S} +\def\ps@Son{S} +} +\DeclareOption{french}{% +\typeout{pst-calendar: using french options} +\def\ps@Jan{JANVIER} +\def\ps@Feb{FEVRIER} +\def\ps@Mar{MARS} +\def\ps@Apr{AVRIL} +\def\ps@May{MAI} +\def\ps@Jun{JUIN} +\def\ps@Jul{JUILLET} +\def\ps@Aug{AOUT} +\def\ps@Sep{SEPTEMBRE} +\def\ps@Oct{OCTOBRE} +\def\ps@Nov{NOVEMBRE} +\def\ps@Dec{DECEMBRE} +\def\ps@Mon{L} +\def\ps@Tue{M} +\def\ps@Wed{M} +\def\ps@Thu{J} +\def\ps@Fri{V} +\def\ps@Sat{S} +\def\ps@Son{D} +} +\DeclareOption{ngerman}{% +\def\ps@Jan{Januar} +\def\ps@Feb{Februar} +\def\ps@Mar{M\"arz} +\def\ps@Apr{April} +\def\ps@May{Mai} +\def\ps@Jun{Juni} +\def\ps@Jul{Juli} +\def\ps@Aug{August} +\def\ps@Sep{September} +\def\ps@Oct{Oktober} +\def\ps@Nov{November} +\def\ps@Dec{Dezember} +\def\ps@Mon{M} +\def\ps@Tue{D} +\def\ps@Wed{M} +\def\ps@Thu{D} +\def\ps@Fri{F} +\def\ps@Sat{S} +\def\ps@Son{S} +} +% +\ExecuteOptions{english} +\ProcessOptions +% +\define@key[psset]{pst-calendar}{Day}{\def\psk@CalendrierJ{#1}} +\define@key[psset]{pst-calendar}{MonthUse}{\def\psk@CalendrierMchoix{#1}} +\define@key[psset]{pst-calendar}{Month}{\def\psk@CalendrierM{#1}} +\define@key[psset]{pst-calendar}{Year}{\def\psk@CalendrierA{#1}} +\psset{Day=\number\day,Month=\number\month,MonthUse=\number\month,Year=\number\year} +% +\define@key[psset]{pst-calendar}{Jour}{\def\psk@CalendrierJ{#1}} +\define@key[psset]{pst-calendar}{MoisChoisi}{\def\psk@CalendrierMchoix{#1}} +\define@key[psset]{pst-calendar}{Mois}{\def\psk@CalendrierM{#1}} +\define@key[psset]{pst-calendar}{An}{\def\psk@CalendrierA{#1}} +\psset{Jour=\number\day,Mois=\number\month,MoisChoisi=\number\month,An=\number\year} +% +\define@key[psset]{pst-calendar}{Tag}{\def\psk@CalendrierJ{#1}} +\define@key[psset]{pst-calendar}{MonatT}{\def\psk@CalendrierMchoix{#1}} +\define@key[psset]{pst-calendar}{Monat}{\def\psk@CalendrierM{#1}} +\define@key[psset]{pst-calendar}{Jahr}{\def\psk@CalendrierA{#1}} +\psset{Tag=\number\day,Monat=\number\month,MonatT=\number\month,Jahr=\number\year} +% +\newpsstyle{january}{Vx=-\rc,Vy=0,Vz=-\rd,viewangle=108} +\newpsstyle{february}{Vx=\rc,Vy=0,Vz=-\rd,viewangle=180} +\newpsstyle{march}{Vx=0,Vy=-\ra,Vz=-\rb,viewangle=144} +\newpsstyle{april}{Vx=-\rd,Vy=-\rc,Vz=0,viewangle=162} +\newpsstyle{may}{Vx=-\rd,Vy=\rc,Vz=0,viewangle=198} +\newpsstyle{june}{Vx=0,Vy=\ra,Vz=-\rb,viewangle=216} +\newpsstyle{july}{Vx=-\rc,Vy=0,Vz=\rd,viewangle=0} +\newpsstyle{august}{Vx=0,Vy=-\ra,Vz=\rb,viewangle=-36} +\newpsstyle{september}{Vx=\rd,Vy=-\rc,Vz=0,viewangle=-18} +\newpsstyle{october}{Vx=\rd,Vy=\rc,Vz=0,viewangle=18} +\newpsstyle{november}{Vx=0,Vy=\ra,Vz=\rb,viewangle=36} +\newpsstyle{december}{Vx=\rc,Vy=0,Vz=\rb,viewangle=0} +% +\newpsstyle{Januar}{Vx=-\rc,Vy=0,Vz=-\rd,viewangle=108} +\newpsstyle{Februar}{Vx=\rc,Vy=0,Vz=-\rd,viewangle=180} +\newpsstyle{Maerz}{Vx=0,Vy=-\ra,Vz=-\rb,viewangle=144} +\newpsstyle{April}{Vx=-\rd,Vy=-\rc,Vz=0,viewangle=162} +\newpsstyle{Mai}{Vx=-\rd,Vy=\rc,Vz=0,viewangle=198} +\newpsstyle{Juni}{Vx=0,Vy=\ra,Vz=-\rb,viewangle=216} +\newpsstyle{Juli}{Vx=-\rc,Vy=0,Vz=\rd,viewangle=0} +\newpsstyle{August}{Vx=0,Vy=-\ra,Vz=\rb,viewangle=-36} +\newpsstyle{September}{Vx=\rd,Vy=-\rc,Vz=0,viewangle=-18} +\newpsstyle{Oktober}{Vx=\rd,Vy=\rc,Vz=0,viewangle=18} +\newpsstyle{November}{Vx=0,Vy=\ra,Vz=\rb,viewangle=36} +\newpsstyle{Dezember}{Vx=\rc,Vy=0,Vz=\rb,viewangle=0} +% +\newpsstyle{janvier}{Vx=-\rc,Vy=0,Vz=-\rd,viewangle=108} +\newpsstyle{fevrier}{Vx=\rc,Vy=0,Vz=-\rd,viewangle=180} +\newpsstyle{mars}{Vx=0,Vy=-\ra,Vz=-\rb,viewangle=144} +\newpsstyle{avril}{Vx=-\rd,Vy=-\rc,Vz=0,viewangle=162} +\newpsstyle{mai}{Vx=-\rd,Vy=\rc,Vz=0,viewangle=198} +\newpsstyle{juin}{Vx=0,Vy=\ra,Vz=-\rb,viewangle=216} +\newpsstyle{juillet}{Vx=-\rc,Vy=0,Vz=\rd,viewangle=0} +\newpsstyle{aout}{Vx=0,Vy=-\ra,Vz=\rb,viewangle=-36} +\newpsstyle{septembre}{Vx=\rd,Vy=-\rc,Vz=0,viewangle=-18} +\newpsstyle{octobre}{Vx=\rd,Vy=\rc,Vz=0,viewangle=18} +\newpsstyle{novembre}{Vx=0,Vy=\ra,Vz=\rb,viewangle=36} +\newpsstyle{decembre}{Vx=\rc,Vy=0,Vz=\rb,viewangle=0} +% +\definecolor{RougeA}{cmyk}{0.05,0.1,0.1,0} +\definecolor{RougeB}{cmyk}{0.05,0.15,0.15,0} +\definecolor{RougeC}{cmyk}{0.05,0.2,0.2,0} +\definecolor{RougeD}{cmyk}{0.05,0.25,0.25,0} +\definecolor{RougeE}{cmyk}{0.05,0.3,0.3,0} +\definecolor{RougeF}{cmyk}{0.05,0.35,0.35,0} +\definecolor{RougeG}{cmyk}{0.05,0.4,0.4,0} +\definecolor{RougeH}{cmyk}{0.05,0.45,0.45,0} +\definecolor{RougeI}{cmyk}{0.05,0.5,0.5,0} +\definecolor{RougeJ}{cmyk}{0.05,0.55,0.55,0} +\definecolor{RougeK}{cmyk}{0.05,0.6,0.6,0} +\definecolor{RougeL}{cmyk}{0.1,0.65,0.65,0} +\newpsstyle{holiday}{framesep=2pt,doubleline=true,doublecolor=red,linecolor=red,fillstyle=solid,fillcolor=RougeA} +\define@key[psset]{pst-calendar}{Vx}{\def\psk@Solide@Viewpointx{#1}} +\define@key[psset]{pst-calendar}{Vy}{\def\psk@Solide@Viewpointy{#1}} +\define@key[psset]{pst-calendar}{Vz}{\def\psk@Solide@Viewpointz{#1}} +\psset{Vx=1,Vy=1,Vz=1} +% +\def\RA{7.36022}\gdef\rb{5.06525}\gdef\ra{8.19574}% +\gdef\rc{5.06525}\gdef\rd{8.19574} +% +\def\psCalDodecaeder{% + \@ifnextchar[{\pst@CalDodecaedre}{\pst@CalDodecaedre[style=janvier]}}% +\def\pst@CalDodecaedre[#1]{{% + \psset{#1}% + \pspicture(-8,-12)(8,12)% + \psset{fillstyle=solid}% + \psset{viewpoint={\psk@Solide@Viewpointx} {\psk@Solide@Viewpointy} {\psk@Solide@Viewpointz}}% +\newcommand{\faceA}{\pspolygon(\RA;18)(\RA;90)(\RA;162)(\RA;234)(\RA;306)} +\newcommand{\faceB}{\pspolygon(\RA;270)(\RA;-18)(\RA;54)(\RA;126)(\RA;198)} +\newcommand{\faceC}{\pspolygon(\RA;0)(\RA;72)(\RA;144)(\RA;216)(\RA;288)} +\newcommand{\faceD}{\pspolygon(\RA;36)(\RA;108)(\RA;180)(\RA;252)(\RA;324)} +%face1 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(0)+(\psk@Solide@Viewpointy)*(\ra)+(\psk@Solide@Viewpointz)*(\rb)}% +\FPifpos{\Test}\ThreeDput[normal=0 {\ra} {\rb}](0,\ra,\rb){% +\psset{fillcolor=RougeA}\faceA\rput{36}{\rput(0,0){\psCalendar[Mois=11]}}}\fi +%face2 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(0)-(\psk@Solide@Viewpointy)*(\ra)+(\psk@Solide@Viewpointz)*(\rb)}% +\FPifpos{\Test}\ThreeDput[normal=0 {-\ra} {\rb}](0,-\ra,\rb){% +\psset{fillcolor=RougeB}\faceA\rput{-36}{\rput(0,0){\psCalendar[Mois=8]}}}\fi +%face3 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(0)+(\psk@Solide@Viewpointy)*(\ra)-(\psk@Solide@Viewpointz)*(\rb)}% +\FPifpos{\Test}\ThreeDput[normal=0 {\ra} {-\rb}](0,\ra,-\rb){% +\psset{fillcolor=RougeC}\faceB\rput{216}{\rput(0,0){\psCalendar[Mois=6]}}}\fi +%face4 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(0)-(\psk@Solide@Viewpointy)*(\ra)-(\psk@Solide@Viewpointz)*(\rb)}% +\FPifpos{\Test}\ThreeDput[normal=0 {-\ra} {-\rb}](0,-\ra,-\rb){% +\psset{fillcolor=RougeD}\faceB\rput{144}{\rput(0,0){\psCalendar[Mois=3]}}}\fi% +%face 5 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(\rc)+(\psk@Solide@Viewpointy)*(0)+(\psk@Solide@Viewpointz)*(\rd)}% +\FPifpos{\Test}\ThreeDput[normal={\rc} 0 {\rd}](\rc,0,\rd){% +\psset{fillcolor=RougeE}\faceB\rput(0,0){\psCalendar[Mois=12]}}\fi +%face6 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(-\rc)+(\psk@Solide@Viewpointy)*(0)+(\psk@Solide@Viewpointz)*(\rd)}% +\FPifpos{\Test}\ThreeDput[normal={-\rc} 0 {\rd}](-\rc,0,\rd){% +\psset{fillcolor=RougeF}\faceB\rput{0}{\rput(0,0){\psCalendar[Mois=7]}}}\fi +%face7 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(\rc)+(\psk@Solide@Viewpointy)*(0)-(\psk@Solide@Viewpointz)*(\rd)}% +\FPifpos{\Test}\ThreeDput[normal={\rc} 0 {-\rd}](\rc,0,-\rd){% +\psset{fillcolor=RougeG}\faceA\rput{180}{\rput(0,0){\psCalendar[Mois=2]}}}\fi +%face8 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(-\rc)+(\psk@Solide@Viewpointy)*(0)-(\psk@Solide@Viewpointz)*(\rd)}% +\FPifpos{\Test}\ThreeDput[normal={-\rc} 0 {-\rd}](-\rc,0,-\rd){% +\psset{fillcolor=RougeH}\faceA\rput{108}{\rput(0,0){\psCalendar[Mois=1]}}}\fi% +%face 9 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(\rd)+(\psk@Solide@Viewpointy)*(\rc)+(\psk@Solide@Viewpointz)*(0)}% +\FPifpos{\Test}\ThreeDput[normal={\rd} {\rc} 0](\rd,\rc,0){% +\psset{fillcolor=RougeI}\faceC\rput{18}{\rput(0,0){\psCalendar[Mois=10]}}}\fi +%face10 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(-\rd)+(\psk@Solide@Viewpointy)*(\rc)+(\psk@Solide@Viewpointz)*(0)}% +\FPifpos{\Test}\ThreeDput[normal={-\rd} {\rc} 0](-\rd,\rc,0){% +\psset{fillcolor=RougeJ}\faceD\rput{198}{\rput(0,0){\psCalendar[Mois=5]}}}\fi +%face11 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(\rd)-(\psk@Solide@Viewpointy)*(\rc)+(\psk@Solide@Viewpointz)*(0)}% +\FPifpos{\Test}\ThreeDput[normal={\rd} {-\rc} 0](\rd,-\rc,0){% +\psset{fillcolor=RougeK}\faceD\rput{-18}{\rput(0,0){\psCalendar[Mois=9]}}}\fi +%face8 +\FPeval{\Test}{(\psk@Solide@Viewpointx)*(-\rd)+(\psk@Solide@Viewpointz)*(0)-(\psk@Solide@Viewpointy)*(\rc)}% +\FPifpos{\Test}\ThreeDput[normal={-\rd} {-\rc} 0](-\rd,-\rc,0){% +\psset{fillcolor=RougeL}\faceC\rput{162}{\rput(0,0){\psCalendar[Mois=4]}}}\fi% +\endpspicture +}} +% +% +\newcount\colonne\newcount\ligne +\def\psCalendar{\@ifnextchar[{\pst@Calendrier}{\pst@Calendrier[]}} +\def\pst@Calendrier[#1]{{% + \pst@killglue + \psset{#1}% +% calcul de la date de Pâques +% lundi de Pâques + \FPset{\Year}{\psk@CalendrierA}% + \FPeval\GY{(\Year)-19*trunc((\Year)/19,0)}% + \FPeval{\Cent}{trunc((\Year)/100,0)}% + \FPeval{\Iter}{trunc((\Cent)-trunc((\Cent)/4,0)-trunc((8*(\Cent)+13)/25,0)+ + (\GY)*19+15,0)}% + \FPeval{\Iterdiv}{trunc((\Iter)/30,0)}% + \FPeval\Hepact{(\Iter)-30*(\Iterdiv)}% + \FPeval\Inbre{trunc((\Hepact)-trunc((\Hepact)/28,0)* + (1-trunc((\Hepact)/28,0))*(trunc(29/((\Hepact)+1),0)*trunc((21-(\GY))/11,0)),0)}% + \FPeval\Jnbreinter{trunc((\Year)+trunc((\Year)/4,0)+(\Inbre)+2-(\Cent)+trunc((\Cent)/4,0),0)}% + \FPeval\Jnbre{trunc((\Jnbreinter)-7*trunc((\Jnbreinter)/7,0),0)}% + \FPeval\Lnbre{trunc((\Inbre)-(\Jnbre),0)}% + \FPeval\Month{trunc(3+trunc(((\Lnbre)+40)/44,0),0)}% + \FPeval\Day{trunc((\Lnbre)+28-31*trunc((\Month)/4,0),0)}% + \ifnum\Month=4 + \ifnum\Day>25 \FPeval{\Day}{trunc((\Day)-7,0)}% dimanche de Pâques +% \ifnum\Day>25 \FPeval{\Day}{trunc((\Day)-6,0)}% Lundi de Pâques +% \else +% \FPeval{\Day}{trunc((\Day)+1,0)}% Lundi de Pâques + \fi + \fi +\ifnum\Month=3 + \ifnum\Day=32 \FPset{\Day}{1}\FPset{\Month}{4}% +% \else +% \FPeval{\Day}{trunc((\Day)+1,0)}% Lundi + \fi% +\fi% +% +% calcul du jour de l'ascension +% si Pâques tombe au mois d'avril, faire (39-30)+\Day = 9+\Day +% pour le jour du mois de mai de l'ascension +\ifnum\Month=4 + \FPeval\DayAscension{trunc((\Day)+9,0)}% + \FPeval\MonthAscension{trunc((\Month)+1,0)}% +% Ascension le \FPprint\DayAscension/\FPprint\MonthAscension/\FPprint\Year + \FPeval\TestJourPentecote{trunc((\DayAscension)+10,0)}% + \ifnum\TestJourPentecote>31 + \FPeval\DayPentecote{trunc((\TestJourPentecote)-31,0)}% + \FPeval\MonthPentecote{trunc((\Month)+2,0)}% + \else% + \FPset{\DayPentecote}{\TestJourPentecote}% + \FPset\MonthPentecote{\MonthAscension}% + \fi% +% +% Pentec\^ote le \FPprint\DayPentecote/\FPprint\MonthPentecote/\FPprint\Year +\fi% +% +% Dans le cas où Pâques tombe en mars +% (39-30)+\Day=8+\Day +% si 8+\Day<ou=30 on reste en avril +% \DayAscension=8+\Day +% \MonthAscension=4 +% Pentcôte est 10 jours après l'ascension +\ifnum\Month=3 + \FPeval\TestSiJourAvril{trunc((\Day)+8,0)}% + \ifnum\TestSiJourAvril<30 + \FPeval\MonthAscension{trunc((\Month)+1,0)}% + \FPeval\DayAscension{trunc(8+(\Day),0)}% + \else% + \FPeval\DayAscension{trunc((\Day)-22,0)}% + \FPeval\MonthAscension{trunc((\Month)+2,0)}% +\fi% + \FPeval\TestJourPentecote{trunc((\DayAscension)+10,0)}% + \ifnum\MonthAscension=4 + \ifnum\TestJourPentecote<31 + \FPset{\DayPentecote}{\TestJourPentecote}% + \FPset\MonthPentecote{4}% + \else + \FPeval\DayPentecote{trunc((\TestJourPentecote)-30,0)}% + \FPset\MonthPentecote{5}% + \fi% + \fi% + \ifnum\MonthAscension=5 + \FPeval\DayPentecote{trunc((\DayAscension)+10,0)}% + \FPset\MonthPentecote{5}% + \fi% +\fi% +% +% test d'une année bissextile +\FPeval{\YearBissextil}{(\psk@CalendrierA)/4}% +\FPtrunc{\YearBissextil}{\YearBissextil}{0}% +\FPeval{\YearBissextil}{(\YearBissextil)*4}% +\FPtrunc{\YearBissextil}{\YearBissextil}{0}% +% +\ifnum\psk@CalendrierM=1\def\adddays{0}\let\Name\ps@Jan\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=2\def\adddays{31}\let\Name\ps@Feb% + \ifnum\YearBissextil=\psk@CalendrierA\def\NbreJours{29}\else\def\NbreJours{28}% +\fi\fi% +\ifnum\psk@CalendrierM=3 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{60}\else\def\adddays{59}\fi% +\let\Name\ps@Mar\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=4 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{91}\else\def\adddays{90}\fi% +\let\Name\ps@Apr\def\NbreJours{30}\fi% +\ifnum\psk@CalendrierM=5 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{121}\else\def\adddays{120}\fi% +\let\Name\ps@May\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=6 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{152}\else\def\adddays{151}\fi% +\let\Name\ps@Jun\def\NbreJours{30}\fi% +\ifnum\psk@CalendrierM=7 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{182}\else\def\adddays{181}\fi% +\let\Name\ps@Jul\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=8 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{213}\else\def\adddays{212}\fi% +\let\Name\ps@Aug\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=9 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{244}\else\def\adddays{243}\fi% +\let\Name\ps@Sep\def\NbreJours{30}\fi% +\ifnum\psk@CalendrierM=10 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{274}\else\def\adddays{273}\fi% +\let\Name\ps@Oct\def\NbreJours{31}\fi% +\ifnum\psk@CalendrierM=11 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{305}\else\def\adddays{304}\fi% +\let\Name\ps@Nov\def\NbreJours{30}\fi% +\ifnum\psk@CalendrierM=12 + \ifnum\YearBissextil=\psk@CalendrierA\def\adddays{335}\else\def\adddays{334}\fi% +\let\Name\ps@Dec\def\NbreJours{31}\fi% +% +\ifnum\YearBissextil=\psk@CalendrierA + \FPeval{\NbYearBissextil}{((\psk@CalendrierA)-2000)/4}% + \FPtrunc{\NbYearBissextil}{\NbYearBissextil}{0}% + \else% + \FPeval{\NbYearBissextil}{((\psk@CalendrierA)-2000)/4+1}% + \FPtrunc{\NbYearBissextil}{\NbYearBissextil}{0}% +\fi% +% le 1 janvier 2000 est un samedi : Nbdays=6 +\FPeval{\NbDays}{6+((\psk@CalendrierA)-2000)+(\NbYearBissextil)+(\adddays)}% +% +\FPtrunc{\NbDays}{\NbDays}{0}% +% +\FPeval{\Frac}{(\NbDays)/7}% +\FPtrunc{\Frac}{\Frac}{0}% +% +\FPeval{\Quotient}{(\Frac)*7}% +\FPtrunc{\Quotient}{\Quotient}{0}% +% +\FPeval{\firstDay}{(\NbDays)-({\Quotient})}% +% +\FPclip{\firstDay}{\firstDay}% +\FPifzero\firstDay\FPset{\firstDay}{7}\fi% +\ligne=2% +\colonne=\firstDay% +\pspicture(0,-4)(8,4) + \psframe*[linecolor=blue](0.5,3.2)(7.5,4) + \rput(4,3.6){\textcolor{white}{\textsf{\textbf{\huge\Name}}}} + \rput(1,2.8){\textsf{\textbf{\Large\ps@Mon}}} + \rput(2,2.8){\textsf{\textbf{\Large\ps@Tue}}} + \rput(3,2.8){\textsf{\textbf{\Large\ps@Wed}}} + \rput(4,2.8){\textsf{\textbf{\Large\ps@Thu}}} + \rput(5,2.8){\textsf{\textbf{\Large\ps@Fri}}} + \rput(6,2.8){\textsf{\textbf{\Large\ps@Sat}}} + \rput(7,2.8){\textsf{\textbf{\Large\ps@Son}}} + \multido{\i=\firstDay+1}{\NbreJours}{% + \ifnum\i>7\ligne=1\fi + \ifnum\i>14\ligne=0\fi + \ifnum\i>21\ligne=-1\fi + \ifnum\i>28\ligne=-2\fi + \ifnum\i>35\ligne=-3\fi + \ifnum\psk@CalendrierM=\psk@CalendrierMchoix + \ifnum\the\multidocount=\psk@CalendrierJ + \rput(\colonne,\ligne){% + \pscirclebox[linestyle=none,fillstyle=solid,fillcolor=yellow]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \else\rput(\colonne,\ligne){\textbf{\Large\the\multidocount}} + \fi + \else\rput(\colonne,\ligne){\textbf{\Large\the\multidocount}} + \fi +% les jours fériés +% le 1 de l'an + \ifnum\psk@CalendrierM=1 + \ifnum\the\multidocount=1 + \rput(\colonne,\ligne){\psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% le 1 mai et 8 mai + \ifnum\psk@CalendrierM=5 + \ifnum\the\multidocount=1 + \rput(\colonne,\ligne){\psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}}% + \fi + \ifnum\the\multidocount=8 + \rput(\colonne,\ligne){\psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}}% + \fi + \fi +% 15 août + \ifnum\psk@CalendrierM=8 + \ifnum\the\multidocount=15 + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% 1 Novembre et 11 Novembre + \ifnum\psk@CalendrierM=11 + \ifnum\the\multidocount=1 + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi + \ifnum\the\multidocount=11 + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi + \fi +% Noël + \ifnum\psk@CalendrierM=12 + \ifnum\the\multidocount=25 + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% Dimanche de Pâques + \ifnum\psk@CalendrierM=\Month + \ifnum\the\multidocount=\Day + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% Ascension + \ifnum\psk@CalendrierM=\MonthAscension + \ifnum\the\multidocount=\DayAscension + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% Pentecôte + \ifnum\psk@CalendrierM=\MonthPentecote + \ifnum\the\multidocount=\DayPentecote + \rput(\colonne,\ligne){% + \psframebox[style=holiday]{\textbf{\textcolor{red}{\Large\the\multidocount}}}} + \fi\fi +% +\advance\colonne by +1 +\ifnum\colonne>7\colonne=1\fi} +\rput(4,-3.5){\psovalbox[fillstyle=solid,fillcolor=blue,linestyle=none]{\textcolor{white}{\textsf{\textbf{\huge\psk@CalendrierA}}}}} +\multido{\rL=-2.5+1.0}{6}{\psline[linecolor=blue](0.5,\rL)(7.5,\rL)} +\endpspicture}} +% +%% END: CalendrierFP.sty +\endinput |