% agenda.sty - version 1.0 (May 1994)
% agenda.sty - version 2.0 (August 1994)
% agenda.sty - version 3.0 (September 1994)
% agenda.sty - version 4.0 (September 1998)
% agenda.sty - version 5.0 (September 1998)
% by Alain Griffault

\typeout{agenda Style File for LaTeX/AmSLaTeX, version 5.0}
\typeout{by Alain Griffault - September 1998}

%\documentstyle[colordvi,makeidx,fr,agenda]{article} version 1.0
%\documentstyle[colordvi,makeidx,agenda]{article} version 2.0
% colordvi est necessaire, car des couleurs sont utilisees dans les commandes.
% makeidx est necessaire, car des index sont positionnes dans les commandes.
% fr est souhaitable avec la version 1.0 car la date est utilisee comme suit : Le \today
% fr n'est pas souhaitable avec la version 2.0 car la date est redefinie pour le contexte francais
% article : un choix comme un autre

% La version 2.0 est compatible ascendante avec la version 1.0
% La version 3.0 est compatible ascendante avec la version 2.0
% Il est maintenant possible de modifier les couleurs par plage 

%\newcommand{\contexte}[8][0]
% #1 (optionel) indique la langue 0 : francais, 1 : anglais
% #2 indique la filiere
% #3 indique l'annee universitaire
% #4 indique la periode (Semaine, Mois ou Semestre)
% #5 indique la magnification (l'unite de mesure par defaut est de 1.4cm) 
% #6 indique la couleur du fond pour les jours
% #7 indique la couleur du fond pour les plages horaires
% #8 indique la couleur du fond pour les plages horaires non utilisees

% les commandes suivantes ne sont pas definies ainsi, mais la syntaxe LaTeX me semble plus lisible pour comprendre leur semantique

% \newenvironment{emploidutemps}[3]
% #1 indique le premier jour de la periode
% #2 indique le dernier jour de la periode
% #3 indique des remarques eventuelles ( 4 lignes separees par des \\ )

% \newcommand{\lundi[1](\couleur)}[5]
% l'option 1 indique un seul groupe dans ce creneau
% l'option couleur doit faire reference a une des couleurs de colordvi
% #1 indique l'heure de debut (ATTENTION .5 pour les demi-heures)
% #2 indique la duree (ATTENTION .5 pour les demi-heures)
% #3 la matiere et le type : Cours, TD ou TP
% #4 l'enseignant
% #5 la salle

% \newcommand{\lundi[nb](\couleur)}[6]
% nb entre 2 et 5 est le nombre de groupes dans un meme creneau,
% #1 indique l'heure de debut (ATTENTION .5 pour les demi-heures)
% #2 indique la duree (ATTENTION .5 pour les demi-heures)
% #3 la matiere et le type : Cours, TD ou TP
% #4 l'enseignant
% #5 la salle
% #6 le numero du groupe ( compris entre 1 et nb )

% \newcommand{\lundi}[5]
% cette commande est identique a la commande :
%   {\lundi[1](\couleur du fond pour les plages horaires)}[5]

% Commandes similaires pour :
% mardi
% mercredi
% jeudi
% vendredi
% samedi
% dimanche      : la colonne est positionnee a droite de celle du samedi, et ecrase les horaires.

% Egalement en version anglaise
% monday
% tuesday
% wednesday
% thursday
% friday
% saturday
% sunday

% un exemple de source LaTeX
%------------------------------------------------------------------------------
%\documentstyle[a4,makeidx,colordvi,agenda]{article}
%\pagestyle{empty}
%\textwidth 8.5in
%\textheight 11in

% une liste d'abreviations peut etre definie grace a des commandes
%\newcommand{\GT}{Groupe de Travail\ }
%\newcommand{\GT}{G. T.\ }
% qui peuvent evidemment etre regroupees dans un fichier
%\input abrev

% Chaque plage horaire engendre un index sur les deux premiers champs
% Chaque environnement engendre egalement un index sur les dates
% la commande \makeindex permet de generer le fichier .idx des index
%\makeindex

%\begin{document}

% la commande \printindex permet de generer la page des index. 
% Elle peut evidemment etre mise en debut ou en fin de fichier
%\printindex

% Deux exemples de declaration de contexte
%\contexte{S\'eminaire et Groupes de Travail}{94-95}{Ann�e}{1}{\Apricot}{\GreenYellow}{\White}

%\begin{emploidutemps}{12 septembre}{30 juin}{}
%\lundi{14}{2}{\GT}{Graphes}{Salle A}
%\mardi{10.25}{1.75}{\GT}{Table-ronde de Programmation}{Salle A}
%\mardi[2]{13.50}{2.50}{\GT}{S\'emantique du parall\'elisme}{Salle A}{1}
%\mardi[2]{14}{2}{\GT}{Commission mat\'eriel}{Salle Bateau}
%\jeudi{10}{2}{\GT}{Informatique Graphique}{Salle A}
%\jeudi{14}{1.50}{S\'eminaire}{Recherche}{Salle s\'eminaire}
%\jeudi{16}{2}{\GT}{R\'eseaux et Protocoles}{Salle A}
%\vendredi{10}{2}{\GT}{Combinatoire}{Salle s\'eminaire}
%\vendredi{13.75}{1.50}{\GT}{Graphes et r\'eseaux d'interconnexion}{Salle A}
%\vendredi{15.25}{1.25}{\GT}{Mots et graphes}{Salle A}
%\end{emploidutemps}

%\contexte[2]{IUP MIAGe 3}{94-95}{Week}{0.8}{\YellowOrange}{\Apricot}{\Red}

%\begin{emploidutemps}{september 5}{september 10}{}
%\monday{14}{2}{\GT}{Graphes}{Room A}
%\end{emploidutemps}

%\contexte[1]{IUP MIAGe 3}{94-95}{Semaine}{0.6}{\YellowOrange}{\Apricot}{\Red}

%\begin{emploidutemps}{12 septembre}{17 septembre}{}
%\end{emploidutemps}

%\end{document}
%------------------------------------------------------------------------------

\newlength \duree
\newlength \mylength
\newcounter{largeur}
\newcounter{option}
\newcounter{heure}
\newcounter{debutplage}
\newcounter{jour}
\newcounter{langue}
\newsavebox{\texte}
\newsavebox{\page}

\newcommand{\anneeuniversitaire}{}
\newcommand{\ladate}{}
\newcommand{\journee}{}
\newcommand{\debutperiode}{}
\newcommand{\finperiode}{}

% les parametres d�pendant des langues
\newcommand{\langueA}{%
\renewcommand{\anneeuniversitaire}{Ann\'ee universitaire}%
\renewcommand{\ladate}{Le\space\number\day\space{\ifcase\month \or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi}\space\number\year}%
\renewcommand{\journee}{\ifcase\arabic{jour} \or Lundi\or Mardi\or Mercredi\or Jeudi\or Vendredi\or Samedi\or Dimanche\fi}%
\renewcommand{\debutperiode}{du}%
\renewcommand{\finperiode}{au}%
}

\newcommand{\langueB}{%
\renewcommand{\anneeuniversitaire}{University Year}%
\renewcommand{\ladate}{\today}%
\renewcommand{\journee}{\ifcase\arabic{jour} \or Monday\or Tuesday\or Wednesday\or Thursday\or Friday\or Saturday\or Sunday\fi}%
\renewcommand{\debutperiode}{from}%
\renewcommand{\finperiode}{to}%
}

% Le contexte par defaut modifiable par l'utilisateur. 
% La commande contexte redefini les commandes suivantes :
\newcommand{\formation}{}
\newcommand{\annee}{}
\newcommand{\periode}{}
\newcommand{\backgroungjour}{\Apricot}
\newcommand{\backgroungplage}{\GreenYellow}
\newcommand{\backgroungplagedefaut}{\GreenYellow}
\newcommand{\backgroungglobal}{\White}

% La commande qui permet de sauver le dessin d'une page.
\newcommand{\sauverpage}{
\sbox{\page}{
\put(0.5,-5.5){\makebox(0,0)[l]{\Large \formation}}
\put(13.5,-5.5){\makebox(0,0)[r]{\Large \anneeuniversitaire\ \annee}}
\put(1,-7.5){\backgroungjour{\rule{12\unitlength}{1\unitlength}}}
\put(1,-20){\backgroungglobal{\rule{12\unitlength}{12\unitlength}}}
\put(6.5,-20.5){\makebox(0,0){\large \ladate}}
\multiput(1,-20)(0,0.25){49}{\line(-1,0){0.25}}
\multiput(13,-20)(0,0.25){49}{\line(1,0){0.25}}
\setcounter{heure}{8}\multiput(0,-\value{heure})(0,-1){13}{
  \multiput(0.4,0)(13.5,0){2}{\makebox(0,0)[r]{\arabic{heure}}}
  \put(0.5,0){\line(1,0){13}}
  \addtocounter{heure}{1}}
\setcounter{jour}{1}\multiput(\value{jour},-7.5)(2,0){6}{\framebox(2,1){\large \journee}\addtocounter{jour}{1}}
\multiput(1,-20)(2,0){7}{\line(0,1){12}}}}

% La commande pour modifier le contexte, la langue est un parametre optionnel
%\@nameuse{langue\Alph{langue}}%
%\langue\Alph{langue}%
%\ifcase\arabic{jour} \or \langueA\or \langueB\fi
%\newenvironment{contexte}[8][1]{
\newcommand{\contexte}[8]{
\renewcommand{\formation}{#2}
\renewcommand{\annee}{#3}
\renewcommand{\periode}{#4}
\setlength{\mylength}{#5\mylength}
\setlength{\unitlength}{\mylength}
\renewcommand{\backgroungjour}{#6}
\renewcommand{\backgroungplage}{#7}
\renewcommand{\backgroungplagedefaut}{#7}
\renewcommand{\backgroungglobal}{#8}
\sauverpage}

% la sauvegarde de la page initiale par defaut (au cas ou
% l'utilisateur oubli d'inclure une commande de contexte).
\setlength{\mylength}{1.4cm}
\setlength{\unitlength}{\mylength}
\setcounter{langue}{1}
\langueA
%\@starttoc{toc}
%\contexte{Universite Bordeaux I}{courante}{Semaine}{1}{\Apricot}{\GreenYellow}{\White}

% L'environnement dans lequel on definit les plages horaires
%\htmlhead{\periode\ \debutperiode\ #1}{ \finperiode\ #2}
%\html{\Hsection{\periode\ \debutperiode\ #1 \finperiode\ #2}}
%\html{\addcontentsline{toc}{section}{\periode\ \debutperiode\ #1 \finperiode\ #2} \refstepcounter{section}}
%\html{\section*{\periode\ \debutperiode\ #1 \finperiode\ #2}}
\newenvironment{emploidutemps}[3]{
\newpage
\addcontentsline{toc}{section}{\periode\ \debutperiode\ #1 \finperiode\ #2} \refstepcounter{section}
\begin{center}
\begin{picture}(13.5,3)(0,-8.5)
\usebox{\page}
\put(7,-6){\makebox(0,0){\Large \periode\ \debutperiode\ {\bf #1} \finperiode\ {\bf #2}}}
\put(1,-22.5){\framebox(12,1.5){\large \shortstack{#3}}}
\index{ZZ @ \periode!\thepage @ \debutperiode\ #1 \finperiode\ #2}
}{\end{picture}\vspace{15\unitlength}\end{center}}

% la commande pour dessiner une plage horaire
\newcommand{\plage}[8]{
\setcounter{largeur}{#6}\addtocounter{largeur}{-1}
\setcounter{debutplage}{#7}\addtocounter{debutplage}{#7}\addtocounter{debutplage}{-1}
\setlength{\duree}{#2\unitlength}
\savebox{\texte}[#8\unitlength]{\begin{minipage}{#8\unitlength}\begin{center}#3\\\addvspace{\parskip}#4\\\addvspace{\parskip}#5\end{center}\end{minipage}}
\addtolength{\duree}{-2\ht\texte} % je ne sais pas pourquoi 2 fois
\put(\value{debutplage},-#1){\setlength{\unitlength}{#8\unitlength}\put(\value{largeur},0){\setlength{\unitlength}{\mylength}\makebox(0,0)[tl]{\backgroungplage{\rule{#8\unitlength}{#2\unitlength}}}}}
\put(\value{debutplage},-#1){\setlength{\unitlength}{#8\unitlength}\put(\value{largeur},0){\setlength{\unitlength}{\mylength}\makebox(0,0)[tl]{\framebox(#8,#2){\begin{minipage}{#8\unitlength}\begin{center}#3\\\addvspace{0.5\duree}#4\\\addvspace{0.5\duree}#5\end{center}\end{minipage}}}}}
\index{#4!#3}
}

\newcommand{\journeeA}[5]{\plage{#1}{#2}{#3}{#4}{#5}{1}{\value{jour}}{2}}
\newcommand{\journeeB}[6]{\begin{small}\plage{#1}{#2}{#3}{#4}{#5}{#6}{\value{jour}}{1}\end{small}}
\newcommand{\journeeC}[6]{\begin{footnotesize}\plage{#1}{#2}{#3}{#4}{#5}{#6}{\value{jour}}{0.6666}\end{footnotesize}}
\newcommand{\journeeD}[6]{\begin{scriptsize}\plage{#1}{#2}{#3}{#4}{#5}{#6}{\value{jour}}{0.5}\end{scriptsize}}
\newcommand{\journeeE}[6]{\begin{tiny}\plage{#1}{#2}{#3}{#4}{#5}{#6}{\value{jour}}{0.4}\end{tiny}}

\def\atmodifcouleur(#1){\renewcommand{\backgroungplage}{#1}\@nameuse{journee\Alph{option}}}
%\newcommand{\@modifcouleur(#1){\renewcommand{\backgroungplage}{#1}\@nameuse{journee\Alph{option}}}
%\newcommand{\atmodifcouleur}[1](\backgroungplagedefaut){\renewcommand{\backgroungplage}{#1}\@nameuse{journee\Alph{option}}}

\newcommand{\atjournee}[1][1]{\setcounter{option}{#1}\@ifnextchar({\atmodifcouleur}{\atmodifcouleur(\backgroungplagedefaut)}}

\newcommand{\lundi}{\setcounter{jour}{1}\atjournee}
\newcommand{\mardi}{\setcounter{jour}{2}\atjournee}
\newcommand{\mercredi}{\setcounter{jour}{3}\atjournee}
\newcommand{\jeudi}{\setcounter{jour}{4}\atjournee}
\newcommand{\vendredi}{\setcounter{jour}{5}\atjournee}
\newcommand{\samedi}{\setcounter{jour}{6}\atjournee}
\newcommand{\dimanche}{\setcounter{jour}{7}\put(13,-7.5){\backgroungjour{\rule{2\unitlength}{1\unitlength}}}\put(13,-7.5){\framebox(2,1){\large \journee}}\atjournee}

\newcommand{\monday}{\lundi}
\newcommand{\tuesday}{\mardi}
\newcommand{\wednesday}{\mercredi}
\newcommand{\thursday}{\jeudi}
\newcommand{\friday}{\vendredi}
\newcommand{\saturday}{\samedi}
\newcommand{\sunday}{\dimanche}





