texlive[68148] Master/texmf-dist: cahierprof (2sep23)

commits+karl at tug.org commits+karl at tug.org
Sat Sep 2 22:07:46 CEST 2023


Revision: 68148
          http://tug.org/svn/texlive?view=revision&revision=68148
Author:   karl
Date:     2023-09-02 22:07:46 +0200 (Sat, 02 Sep 2023)
Log Message:
-----------
cahierprof (2sep23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.pdf
    trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex
    trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.pdf
    trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.tex
    trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/cahierprof/ListeEleves.tex

Deleted: trunk/Master/texmf-dist/doc/latex/cahierprof/ListeEleves.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/ListeEleves.tex	2023-09-02 20:07:32 UTC (rev 68147)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/ListeEleves.tex	2023-09-02 20:07:46 UTC (rev 68148)
@@ -1,32 +0,0 @@
-Seconde
-\begin{enumerate}
-\item Élève Seconde 1
-\item Élève Seconde 2
-\item Élève Seconde 3
-\item Élève Seconde 4
-\item Élève Seconde 5 
-\end{enumerate}
-Première G
-\begin{enumerate}
-\item Élève Première 1
-\item Élève Première 2
-\item Élève Première 3
-\item Élève Première 4
-\item Élève Première 5 
-\end{enumerate}
-1 STMG
-\begin{enumerate}
-\item Élève STMG 1
-\item Élève STMG 2
-\item Élève STMG 3
-\item Élève STMG 4
-\item Élève STMG 5 
-\end{enumerate}
-2 euro
-\begin{enumerate}
-\item Élève Euro 1
-\item Élève Euro 2
-\item Élève Euro 3
-\item Élève Euro 4
-\item Élève Euro 5 
-\end{enumerate}

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex	2023-09-02 20:07:32 UTC (rev 68147)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex	2023-09-02 20:07:46 UTC (rev 68148)
@@ -5,6 +5,7 @@
 \usepackage{tcolorbox}
 \usepackage[framemethod=TikZ]{mdframed}
 \usepackage{minted}
+\usepackage{xcolor}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % En tête du document
@@ -15,13 +16,13 @@
 
 \title{
   cahierprof.sty\\
-  Un cahier de textes pour les professeurs en \LaTeX{}
+  Un cahier de textes en \LaTeX{} pour les professeurs
 }
 \author{
   Raphaël Giromini\\
   \texttt{raphael.giromini -- at -- gmail.com}
 }
-\date{Version 0.92 -- 10 août 2023}
+\date{Version 1.0 -- 1er septembre 2023}
 
 \setminted{frame=single,linenos,numbersep=6pt}
 
@@ -42,8 +43,28 @@
   \item un tableau des élèves répartis par classe (pour les absences et/ou les
     notes).
 \end{itemize}
+Merci à Frédéric Bréal pour ses conseils, ses idées et ses relectures attentives
+du package.
 
+\subsection*{Nouveautés de la version 1.0}
+\begin{itemize}
+  \item La date du lundi de Pâques se calcule automatiquement.
+  \item Option \texttt{samedi}, qui permet d'afficher un emploi tu temps
+    hebdomadaire du lundi au samedi.
+  \item Possibilité d'utiliser un fichier personnel dans la commande
+    \mintinline{latex}|\ListeEleves|.
+  \item Création des commandes \mintinline{latex}|\setFin|\texttt{*}, où
+    \texttt{*} correspond à \texttt{Toussaint}, \texttt{Noel}, \texttt{Hiver} ou
+    \texttt{Printemps}, qui permet de définir des dates spécifiques de fin de
+    vacances. 
+  \item Création de commandes pour définir les dates du diplôme national du
+    brevet et du baccalauréat: \mintinline{latex}|\setDNB|,
+    \mintinline{latex}|\setBac|, \mintinline{latex}|\setBacPhilo|,
+    \mintinline{latex}|\setBacFrancais|, \mintinline{latex}|\setGO|.
+\end{itemize}
 
+\section*{Versions antérieures}
+
 \subsection*{Nouveautés de la version 0.92}
 \begin{itemize}
   \item Correction de la gestion des années bissextiles.
@@ -66,7 +87,7 @@
     automatiquement.
 \end{itemize}
 
-
+\vfil
 \begin{center}
   \begin{minipage}{.8\linewidth}
     \begin{tcolorbox}[colback=white, colframe=green!75!black]
@@ -74,16 +95,17 @@
     \end{tcolorbox}
   \end{minipage}
 \end{center}
+\vfil
 
+\newpage
 
-\section{
-  Calendrier des semaines de cours -- 
-  commande \texttt{\textbackslash{}EmploiDuTemps}
-}
+\section{Calendrier des semaines de cours -- 
+  commande \texttt{\textbackslash{}EmploiDuTemps}}
 Pour créer un calendrier scolaire hebdomadaire; il faut définir en préambule la
 date du premier lundi de l'année scolaire, avec la commande 
-\mintinline{latex}|\setLundiRentree\{JJ\}\{MM\}\{YYYY\}|, où \texttt{JJ} est
-le quantième du mois; \texttt{MM} est le mois et \texttt{YYYY} est l'année.
+\mintinline{latex}|\setLundiRentree{JJ}{MM}{YYYY}|, où \texttt{JJ} est le
+quantième du mois; \texttt{MM} est le mois et \texttt{YYYY} est l'année de la
+rentrée.
 \begin{minted}{latex}
 % Le lundi de la semaine de la rentrée est le 4 septembre 2023
 \setLundiRentree{4}{9}{2023}
@@ -97,7 +119,7 @@
 \EmploiDuTemps{
   %     & Lundi & Mardi & Mercr.    & Jeudi & Vend. \\
   8h    &       & 1G    &           & 1G    &       \\ [1.5cm] \cline{1-2}\cline{4-6}
-  9h    &       &       & 1STMG     & 1STMG &       \\ [1.5cm] \hline
+  9h    &       &       & TSTMG     & TSTMG &       \\ [1.5cm] \hline
   10h   & 1G    & 2nde  & 1G        &       &       \\ [1.5cm] \hline
   11h   &       &       & 2nde A.P. &       & 1G    \\ [1.5cm] \hline\hline
   13h30 &       & 1G    &           &       & 2nde  \\ [1.5cm] \cline{1-5}
@@ -117,6 +139,35 @@
 \setNombreSemaines{10}
 \end{minted}
 
+\subsection{Emploi du temps du lundi au samedi -- 
+  option \texttt{samedi} ou \texttt{\textbackslash{}Samedi}}
+
+Par défaut, l'emploi du temps est du lundi au vendredi. Mais il est possible
+d'avoir un emploi du temps du lundi au samedi avec l'option \texttt{samedi},
+dans la déclaration du package.
+\begin{minted}{latex}
+\usepackage[samedi]{cahierprof}
+\end{minted}
+Cette option peut également être activée par la commande
+\mintinline{latex}|\setSamedi|. Ne pas oublier de déclarer un Emploi du temps à
+sept colonnes
+\begin{minted}{latex}
+% Déclaration du samedi (sans utiliser l'option du package)
+\setSamedi
+% Emploi du temps sur sept colonnes.
+\EmploiDuTemps{
+  %     & Lundi & Mardi & Merc.     & Jeudi & Vend. & Sam. \\
+  8h    &       & 1G    &           & 1G    &       &      \\ [1.5cm] \cline{1-2}\cline{4-7}
+  9h    &       &       & TSTMG     & TSTMG &       &      \\ [1.5cm] \hline
+  10h   & 1G    & 2nde  & 1G        &       &       & 2nde \\ [1.5cm] \cline{1-6}
+  11h   &       &       & 2nde A.P. &       & 1G    &      \\ [1.5cm] \hline\hline
+  13h30 &       & 1G    &           &       &       &      \\ [1.5cm] \hline
+  14h30 &       &       & 1G A/B    &       &       &      \\ [1.5cm] \hline
+  15h30 &       &       & 2 euro    &       &       &      \\ [1.5cm] \hline
+  16h30 &       &       &           &       &       &      \\ [1.5cm] \hline
+}
+\end{minted}
+
 \subsection{Séance bimestrielles -- commande \texttt{\textbackslash{}sem}}
 
 Certaines séances sont bimestriels (tous les 15 jours), suivant la parité de la
@@ -133,10 +184,11 @@
 \subsection{Gestion des vacances scolaires}
 
 Le package \texttt{cahierprof} permet de gérer les vacances scolaires
-Les vacances scolaires (de Toussaint, de Noel, d'hiver et de printemps). Chacune
-de ces petites vacances dure 15 jours. Selon les zones (et les années) il faut
-définir en préambule le premier samedi de chaque vacances.
-
+Les vacances scolaires (de Toussaint, de Noel, d'hiver et de printemps). Selon
+les zones (et les années) il faut définir en préambule le premier samedi de
+chaque vacances, sous la forme \mintinline{latex}|\setDebutToussaint{JJ}{MM}|
+où \texttt{JJ} est le quantième du samedi du début des vacances et \texttt{MM}
+le mois du début des vacances. 
 \begin{minted}{latex}
 % Début de chaque vacances scolaire pour l'année en cours (le samedi).
 \setDebutToussaint{21}{10}
@@ -144,7 +196,69 @@
 \setDebutHiver{10}{2}
 \setDebutPrintemps{6}{4}
 \end{minted}
+Chacune de ces petites vacances dure automatiquement 15 jours. Cependant, il est
+possible de définir des dates spécifiques, sous la forme
+\mintinline{latex}|\setFinToussaint{JJ}{MM}| où \texttt{JJ} est le quantième du
+lundi de la fin des vacances et \texttt{MM} le mois de la fin des vacances.
+\begin{minted}{latex}
+% Fin de chaque vacances scolaire pour l'année en cours (le lundi).
+% Optionnel
+\setFinToussaint{6}{11}
+\setFinNoel{8}{1}
+\setFinHiver{26}{2}
+\setFinPrintemps{22}{4}
+\end{minted}
 
+\subsection{Gestion des examens -- commandes \texttt{\textbackslash{}setDNB} et
+  \texttt{\textbackslash{}setBac}
+}
+
+On peut définir des dates pour les examens: diplôme national du brevet (DNB), le
+les épreuves finales du baccalauréat, l'épreuve de philosophie, l'épreuve de
+français et le grand oral. 
+
+Pour le diplôme national du brevet (DNB), les dates des épreuves sont définies
+par la commande \mintinline{latex}|\setDNB{JD}{JF}{YY}|, où \texttt{JD} est le
+quantième du début du DNB, \texttt{JF} est le quantième de la fin du DNB et
+\texttt{MM} est le mois du DNB. Pour ces jours, la date sera sur fond vert et la
+mention \colorbox{green}{$\star$DNB$\star$} sera ajoutée après la date.
+\begin{minted}{latex}
+% Le DNB a lieu les 24 et 25 juin.
+\setDNB{24}{25}{6}
+\end{minted}
+Pour les épreuves du baccalauréat:
+\begin{itemize}
+  \item les jours des épreuves finales du baccalauréat sont définie par la
+    commande \mintinline{latex}|\setBac{JD}{JF}{MM}|, où \texttt{JD} est le
+    quantième du début des épreuves, \texttt{JF} est le quantième de la fin des
+    épreuves et \texttt{MM} est le mois des épreuves;
+  \item le jour de l'épreuve de philosophie est définie par la commande
+    \mintinline{latex}|\setBacPhilo{JJ}{MM}|, où \texttt{JJ} est le quantième et
+    \texttt{MM} est le mois de l'épreuve de philosophie;
+  \item le jour de l'épreuve de français est définie par la commande
+    \mintinline{latex}|\setBacfrancais{JJ}{MM}|, où \texttt{JJ} est le quantième
+    et \texttt{MM} est le mois de l'épreuve de français.
+  \item Les jours des épreuves de grand oral sont définie par la commande
+    \mintinline{latex}|\setGO{JD}{JF}{MM}|, où \texttt{JD} est le quantième du
+    début des épreuves, \texttt{JF} est le quantième de la fin des épreuves et
+    \texttt{MM} est le mois des épreuves.
+\end{itemize}
+Pour ces jours, la date sera sur fond vert et la mention
+\colorbox{green}{$\star$Bac$\star$} ou bien \colorbox{green}{$\star$GO$\star$}
+sera ajoutée après la date.
+\begin{minted}{latex}
+% Les épreuves finales du bac ont lieu du 18 au 20 mars
+\setBac{18}{20}{3}
+% L'épreuve de philosophie a lieu le 11 juin
+\setBacPhilo{11}{6}
+% L'épreuve de français a lieu le 12 jun
+\setBacFrancais{12}{6}
+% Le Grand Oral a lieu du 17 au 28 juin
+\setGO{17}{28}{6}
+\end{minted}
+
+
+
 \subsection{Gestion des jours fériés}
 
 Les jours fériés sont les jours de fêtes légales énumérés par l’article
@@ -151,21 +265,19 @@
 L.~3133-1 du code du travail: 1er janvier, lundi de Pâques, 1er mai, 8 mai,
 Ascension, lundi de Pentecôte, 14 juillet, Assomption (15 août), Toussaint, 11
 novembre et 25 décembre. Pour ces jours, La date sera sur fond gris et la
-mention $\star$Ferié$\star$ sera ajoutée après la date.
+mention \colorbox{lightgray}{$\star$Férié$\star$} sera ajoutée après la date.
 
-La date du lundi de Pâques est variable chaque l'année, de même pour le jeudi de
-l'ascension et le lundi de Pentecôte. L'ascension a lieu 38 jours après le lundi
-de Pâques. Par défaut, le vendredi de l'ascension est considéré comme férié. Le
-lundi de Pentecôte a lieu 10 jours après le vendredi de l'ascension.
+La date du lundi de Pâques est définie par celle du calendrier grégorien
+occidental (la date utilisée par l'éducation nationale), calculé automatiquement
+par la méthode de Butcher-Meeus. Cependant, il est possible de fixer un autre
+lundi de Pâques, en utilisant, dans le préambule, la commande
+\mintinline{latex}|\setLundiPaques{JJ}{MM}| où \texttt{JJ} est le jour et
+\texttt{MM} est le mois du lundi de Pâques. L'ascension a lieu 38 jours après le
+lundi de Pâques. Par défaut, le vendredi de l'ascension est considéré comme
+férié. Le lundi de Pentecôte a lieu 10 jours après le vendredi de l'ascension.
 
-Dans ce package, la date du lundi de Pâques est définie (jusqu'à l'année
-2040) par celle du calendrier grégorien occidental (la date utilisée par
-l'éducation nationale). Cependant, si l'on souhaite entrer une autre date, on
-peut utiliser dans le préambule la commande
-\mintinline{latex}|\setLundiPaques{JJ}{MM}|, où \texttt{JJ} est le jour
-et \texttt{MM} est le mois du lundi de Pâques.\\
 Dans tous les cas, les dates de l'ascension et de la Pentecôte sont
-automatiquement calculées.
+automatiquement calculées à partir de la date du lundi de Pâques.
 
 \begin{minted}{latex}
 % Et si le lundi de Pâques était un 17 mars ?
@@ -176,7 +288,8 @@
 \texttt{\textbackslash{}Classe}}
 
 La commande \mintinline{latex}|\Classe| permet de générer des tableaux
-d'appels des classes. Cette commande prend trois arguments:
+d'appels des classes.\\
+Cette commande prend trois arguments:
 \begin{itemize}
   \item le nom de la classe;
   \item le nombre de fois que l'on voit les élèves dans la semaine;
@@ -184,7 +297,7 @@
 \end{itemize}
 Par exemple:
 \begin{minted}{latex}
-% La classe de seconde a 3 séances dans la semaine 
+% La classe de seconde a 4 séances dans la semaine 
 \Classe{Seconde}{4}{
   Élève Seconde 1,
   Élève Seconde 2,
@@ -202,21 +315,25 @@
 }
 \end{minted}
 
-\subsection{Liste des élèves}
+\subsection{Liste des élèves -- commande \texttt{\textbackslash{}ListeEleves}}
 
-La commande \mintinline{latex}|\ListeEleves| va va créer un fichier
-\texttt{ListeEleves.tex} avec la liste (numérotés) de l'ensemble des élèves
-réparti par classe, puis insérer dans le cahier de texte cette liste (penser à
-compiler deux fois).
+La commande \mintinline{latex}|\ListeEleves{<fichier>}| permet d'insérer le
+contenu du \texttt{<fichier>}. Si aucun fichier n'est spécifié, le package créé
+un fichier \texttt{ListeEleves.tex} avec la liste (numérotés) de l'ensemble des
+élèves réparti par classe, puis insérer dans le cahier de texte cette liste
+(penser à compiler deux fois).
 
-% \begin{minted}{latex}
-% % Liste des élèves, sauvée dans le fichier ListeEleves.tex,
-% % créée à partir des \Classe{}{}{}. Penser à compiler deux fois.
-% \ListeEleves
-% \end{minted}
+\begin{minted}{latex}
+% Liste des élèves, sauvée dans le fichier ListeEleves.tex,
+% créée à partir des \Classe{}{}{}. Penser à compiler deux fois.
+\ListeEleves{}
+\end{minted}
 
 \section{Un exemple complet}
 
+L'exemple ci-dessous du cahier de texte est compilé dans
+\texttt{cahierprof-exemple.pdf}
+
 \inputminted{latex}{cahierprof-exemple.tex}
 
 \end{document}

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.tex	2023-09-02 20:07:32 UTC (rev 68147)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.tex	2023-09-02 20:07:46 UTC (rev 68148)
@@ -14,13 +14,13 @@
 
 \title{
   cahierprof-exemple.tex\\
-  Utilisation du cahier de textes pour les professeurs en \LaTeX{}
+  Utilisation du cahier de textes en \LaTeX{} pour les professeurs
 }
 \author{
   Raphaël Giromini\\
   \texttt{raphael.giromini -- at -- gmail.com}
 }
-\date{Version 0.92 -- 10 août 2023}
+\date{Version 1.0 -- 1er septembre 2023}
 
 % 1er lundi de l'année scolaire (pour le cahier de texte)
 \setLundiRentree{4}{9}{2023}
@@ -29,6 +29,17 @@
 \setDebutNoel{23}{12}
 \setDebutHiver{10}{2}
 \setDebutPrintemps{6}{4}
+% Les examens
+% Le DNB a lieu les 24 et 25 juin.
+% \setDNB{24}{25}{6}
+% Les épreuves finales du bac ont lieu du 18 au 20 mars
+\setBac{18}{20}{3}
+% L'épreuve de philosophie a lieu le 11 juin
+\setBacPhilo{11}{6}
+% L'épreuve de français a lieu le 12 jun
+\setBacFrancais{12}{6}
+%Le Grand Oral a lieu du 17 au 28 juin
+\setGO{17}{28}{6}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Début du document
@@ -39,16 +50,21 @@
 
 \section{Calendrier des semaines de cours}
 
-Le calendrier débute sur la page suivante au format paysage. 
+Exemple du cahier de texte à partir de l'exemple complet de
+\texttt{cahierprof-doc.tex}
 
+Le cahier de texte débute sur la page suivante au format paysage.
+
 % Emploi du temps au format tableau (tabularx).
 \begin{landscape}
   \EmploiDuTemps{
     %     & Lundi & Mardi & Merc.                  & Jeudi & Vend. \\
-    8h    &       & 1G    &                        & 1G    &       \\ [1.5cm] \cline{1-2}\cline{4-6}
-    9h    &       &       & 1STMG                  & 1STMG &       \\ [1.5cm] \hline
+    8h    &       & 1G    &                        & 1G    &       \\ [1.5cm] 
+    \cline{1-2}\cline{4-6}
+    9h    &       &       & TSTMG                  & TSTMG &       \\ [1.5cm] \hline
     10h   & 1G    & 2nde  & 1G                     &       &       \\ [1.5cm] \hline
-    11h   &       &       & \sem{2nde A.P.}{}      &       & 1G    \\ [1.5cm] \hline\hline
+    11h   &       &       & \sem{2nde A.P.}{}      &       & 1G    \\ [1.5cm] 
+    \hline\hline
     13h30 &       & 1G    &                        &       & 2nde  \\ [1.5cm] \cline{1-5}
     14h30 &       &       & 1G (Groupe~\sem{A}{B}) &       &       \\ [1.5cm] \hline
     15h30 &       &       & 2 euro                 &       &       \\ [1.5cm] \hline
@@ -60,16 +76,18 @@
 
 \subsection{Liste des élèves}
 
-\ListeEleves
+Affiche la liste des élèves et la sauve dans le fichier par défaut
+\texttt{ListeEleves.tex}.
+\ListeEleves{}
 
 \newpage
 
 \subsection{Tableaux des classes}
 
-% \Classe{Nom de la classe}{Nombre de séances dans la semaine}{Liste des élèves
-% séparés par une virgule}
+% \Classe{Nom de la classe}{Nombre de séances dans la semaine}
+% {Liste des élèves séparés par une virgule}
 
-\Classe{Seconde}{3}
+\Classe{Seconde}{4}
 {
   Élève Seconde 1,
   Élève Seconde 2,
@@ -87,7 +105,7 @@
   Élève Première 5
 }
 
-\Classe{1 STMG}{2}
+\Classe{T STMG}{2}
 {
   Élève STMG 1,
   Élève STMG 2,

Modified: trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty	2023-09-02 20:07:32 UTC (rev 68147)
+++ trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty	2023-09-02 20:07:46 UTC (rev 68148)
@@ -1,15 +1,10 @@
 %% Informations générales
-%% Dernière modification le 2023-08-10 at 16:16
+%% Dernière modification le 2023-09-01 at 09:14
 \NeedsTeXFormat{LaTeX2e}[1999/01/01]
 \ProvidesPackage{cahierprof}
-  [2023/08/10 v0.92 Les commandes pour le cahier Professeur]
+  [2023/09/01 v1.0 Les commandes pour le cahier Professeur]
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Options du package commande
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Pas d'options
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Chargement des extensions
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \RequirePackage{geometry}
@@ -22,6 +17,15 @@
 \RequirePackage{ifthen}
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Options 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Option samedi pour un emploi du temps du lundi au samedi 
+\newboolean{Samedi}
+\setboolean{Samedi}{false}
+\DeclareOption{samedi}{\setboolean{Samedi}{true}}
+\ProcessOptions
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Définitions des compteurs
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Compteurs day/month/year pour la date courante
@@ -34,6 +38,9 @@
 \newcounter{monthRentree}
 \newcounter{yearRentree}
 %
+% Compteur pour la fin Février
+\newcounter{FinFevrier}
+%
 % Compteurs pour les vacances scolaires
 % Toussaint
 \newcounter{dayToussaint}
@@ -55,7 +62,8 @@
 \newcounter{monthPrintemps}
 \newcounter{dayPrintempsFin}
 \newcounter{monthPrintempsFin}
-% Jours Feriés 
+%
+% Compteurs pour les Jours Fériés 
 \newcounter{dayPaques}
 \newcounter{monthPaques}
 \newcounter{dayAscension}
@@ -64,93 +72,130 @@
 \newcounter{dayPentecote}
 \newcounter{monthPentecote}
 %
-% Définition de nouveaux compteurs pour Vendredi Jour/Mois/Année
-\newcounter{friday}
-\newcounter{frimonth}
-\newcounter{friyear}
+% Compteurs pour les Examens
+\newcounter{dayDNBDebut}
+\newcounter{dayDNBFin}
+\newcounter{monthDNB}
+\newcounter{dayBacDebut}
+\newcounter{dayBacFin}
+\newcounter{monthBac}
+\newcounter{dayBacPhilo}
+\newcounter{monthBacPhilo}
+\newcounter{dayBacFrancais}
+\newcounter{monthBacFrancais}
+\newcounter{dayGODebut}
+\newcounter{dayGOFin}
+\newcounter{monthGO}
 %
+% Définition de compteurs pour gérer l'affichage de la semaine (\getWeek) 
+\newcounter{dayRemember}
+\newcounter{monthRemember}
+\newcounter{yearRemember}
+%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Commande pour un calendrier du lundi au samedi 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - \setSamedi : Déclare le samedi dans l'emploi du temps.
+\newcommand{\setSamedi}{%
+  \setboolean{Samedi}{true}%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Liste des macros pour le calendrier.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % - \nextday : pour passer au jour d'après
-% - \weekend : pour passer les week-ends ou les vacances scolaires 
+% - \weekend : pour passer les week-ends ou les vacances scolaires
+% - \isFerie : Si le jour est ferié alors, on affiche *Férié*
+% - \isExamen: Si le jour est un jour d'examen, on affiche *Examen*
 % - \getdate : afficher la date au format day/month/year
-% - \getWeek : afficher la semaine au format
+% - \getWeek : afficher la semaine au format Du Lundi au Vendredi/Samedi
 %
 %%%% Passer au jour d'après
-\newcommand{\nextday}%
-{% 
+\newcommand{\nextday}{%
   % Les mois à 30 jours : Avril, Juin, Septembre, Novembre
   % Les mois à 31 jours : Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre
   % Février à \theFinFevrier jours.
-  \ifthenelse{
-      \(\theday=30 \and \(\themonth=4 \or \themonth=6 \or \themonth=9 \or \themonth=11\)\)
-  \or \(\theday=31 \and \(\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or
-        \themonth=8 \or \themonth=10 \or\themonth=12\)\) 
+  \ifthenelse{%
+      \(\theday=30 \and \(\themonth=4 \or \themonth=6 \or \themonth=9 \or \themonth=11\)\)%
+  \or \(\theday=31 \and \(\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or%
+        \themonth=8 \or \themonth=10 \or\themonth=12\)\) %
   \or \(\theday=\theFinFevrier \and \themonth=2\)}%
-  {
-    % Si on est en décembre, on change d'année et month=1, day=1
+  {%
+    % Si on est en décembre, on change d'année et month=1, day=1%
     \ifthenelse{\themonth=12}%
-    {
-      \stepcounter{year}
-      \setcounter{month}{1}
-      \setcounter{day}{1}
-    }{
-      % Dans les autres cas, on change de mois et on recommence à day= 1
+    {%
+      \stepcounter{year}%
+      \setcounter{month}{1}%
+      \setcounter{day}{1}%
+    }{%
+      % Dans les autres cas, on change de mois et on recommence à day= 1%
       \stepcounter{month}%
       \setcounter{day}{1}%
     }%
-  }{
-    % Sinon, on augmente juste le compteur jour
+  }{%
+    % Sinon, on augmente juste le compteur jour%
     \stepcounter{day}%
   }%
 }%
 %%%% Gestions des vacances et week-end
-\newcommand{\weekend}{
+\newcommand{\weekend}{%
   % Vacances de Toussaint 
-  \ifthenelse{ \theday=\thedayToussaint \and \themonth=\themonthToussaint}
-  {
-    % 15 jours de vacances, bien mérités !
-    \foreach \jour in {1,...,16}{\nextday}
-    Vacances de la Toussaint
-  }{
-    % Vacances de Noël
-    \ifthenelse{ \theday=\thedayNoel \and \themonth=\themonthNoel}
-    {
+  \ifthenelse{\theday=\thedayToussaint \and \themonth=\themonthToussaint}{%
+    \ifthenelse{\thedayToussaintFin=0}{%
       % 15 jours de vacances, bien mérités !
       \foreach \jour in {1,...,16}{\nextday}%
-      Vacances de Noël
+    }{%
+      \setcounter{day}{\thedayToussaintFin}%
+      \setcounter{month}{\themonthToussaintFin}%
+    }%
+    Vacances de la Toussaint%
+  }{%
+    % Vacances de Noël
+    \ifthenelse{\theday=\thedayNoel \and \themonth=\themonthNoel}{%
+      \ifthenelse{\thedayNoelFin=0}{%
+        % 15 jours de vacances, bien mérités !
+        \foreach \jour in {1,...,16}{\nextday}%
+      }{%
+        \setcounter{day}{\thedayNoelFin}%
+        \setcounter{month}{\themonthNoelFin}%
+      }%
+      Vacances de Noël%
     }{
       % Vacances d'Hiver
-      \ifthenelse{ \theday=\thedayHiver \and \themonth=\themonthHiver}
-      {
-        % 15 jours de vacances, bien mérités !
-        \foreach \jour in {1,...,16}{\nextday}%
-        Vacances d'hiver 
+      \ifthenelse{\theday=\thedayHiver \and \themonth=\themonthHiver}{%
+        \ifthenelse{\thedayHiverFin=0}{%
+          % 15 jours de vacances, bien mérités !
+          \foreach \jour in {1,...,16}{\nextday}%
+        }{%
+          \setcounter{day}{\thedayHiverFin}%
+          \setcounter{month}{\themonthHiverFin}%
+        }%
+        Vacances d'hiver%
       }{
         % Vacances de Printemps
-        \ifthenelse{ \theday=\thedayPrintemps \and \themonth=\themonthPrintemps}
-        {
-          % 15 jours de vacances, bien mérités !
-          \foreach \jour in {1,...,16}{\nextday}%
-          Vacances de printemps
+        \ifthenelse{\theday=\thedayPrintemps \and \themonth=\themonthPrintemps}{%
+          \ifthenelse{\thedayPrintempsFin=0}{%
+            % 15 jours de vacances, bien mérités !
+            \foreach \jour in {1,...,16}{\nextday}%
+          }{%
+            \setcounter{day}{\thedayPrintempsFin}%
+            \setcounter{month}{\themonthPrintempsFin}%
+          }%
+          Vacances de printemps%
         }{
           % sinon c'est juste un week-end
-          \nextday\nextday
+          \nextday\nextday%
         }%
       }%
     }%
   }%
-}
-%%%% Obtenir la date
-\newcommand{\getDate}{%
-  % On affiche la date
-  \theday/\themonth/\theyear%
-  % On affiche $\star$Ferié$\star$ si le jour est ferié.
+}%
+%%%% Gestion des jours fériés
+\newcommand{\isFerie}{%
+  % On affiche $\star$Ferié$\star$ si le jour est férié.
   \ifthenelse{%
     % Jour de l'an, 1er janvier
     \(\theday=1 \and \themonth=1\)%
-    % Lundi de Paques
+    % Lundi de Pâques
     \or\(\theday=\thedayPaques \and \themonth=\themonthPaques\)%
     % Fête du travail, le 1er mai
     \or\(\theday=1 \and \themonth=5\)%
@@ -160,7 +205,7 @@
     \or\(\theday=\thedayAscension \and \themonth=\themonthAscension\)%
     % Pont du vendredi de l'ascension
     \or\(\theday=\thedayAscensionPont \and \themonth=\themonthAscension\)%
-    % Lundi de Pentecote
+    % Lundi de Pentecôte
     \or\(\theday=\thedayPentecote \and \themonth=\themonthPentecote\)%
     % Fête Nationale, le 14 juillet
     \or\(\theday=14 \and \themonth=7\)%
@@ -172,103 +217,67 @@
     \or\(\theday=11 \and \themonth=11\)%
     % Noël, le 25 décembre
     \or\(\theday=25 \and \themonth=12\)%
-  }{
-    \cellcolor[gray]{.9} \hfil $\star$Ferié$\star$%
+  }{%
+    \cellcolor[gray]{.9} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$Férié$\star$}{$\star$Férié$\star$}
   }{}%
 }%
+\newcommand{\isExamen}{%
+  % Les jours du DNB
+  \ifthenelse{%
+    \(\theday=\thedayDNBDebut \or \theday>\thedayDNBDebut\)
+    \and\(\theday<\thedayDNBFin \or \theday=\thedayDNBFin\)
+    \and \themonth=\themonthDNB%
+  }{%
+    \cellcolor{green} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$DNB$\star$}{$\star$DNB$\star$}
+  }{}%
+  % Les jours du Bac
+  \ifthenelse{%
+    \(\theday=\thedayBacDebut \or \theday>\thedayBacDebut\)
+    \and\(\theday<\thedayBacFin \or \theday=\thedayBacFin\)
+    \and \themonth=\themonthBac%
+  }{%
+    \cellcolor{green} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$}
+  }{}%
+  % Le jour du Bac Philo
+  \ifthenelse{\theday=\thedayBacPhilo \and \themonth=\themonthBacPhilo}
+  {%
+    \cellcolor{green} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$}
+  }{}%
+  % Le jour du Bac Français
+  \ifthenelse{\theday=\thedayBacFrancais \and \themonth=\themonthBacFrancais}
+  {%
+    \cellcolor{green} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$}
+  }{}%
+  % Les jours du GO
+  \ifthenelse{%
+    \(\theday=\thedayGODebut \or \theday>\thedayGODebut\)
+    \and\(\theday<\thedayGOFin \or \theday=\thedayGOFin\)
+    \and \themonth=\themonthGO%
+  }{%
+    \cellcolor{green} \hfil %
+    \ifthenelse{\boolean{Samedi}}{\tiny $\star$GO$\star$}{$\star$GO$\star$}
+  }{}%
+}%
+%%%% Obtenir la date
+\newcommand{\getDate}{%
+  % On affiche la date
+  \theday/\themonth/\theyear%
+  % Est-ce que le jour \theday/\themonth est férié?
+  \isFerie%
+  % Est-ce que le jour \theday/\themonth est un jour d'examen?
+  \isExamen%
+}%
 %
 %%%% Affichage de la semaine.
 \newcommand{\getWeek}{%
-  \setcounter{friday}{\theday}%
-  \setcounter{frimonth}{\themonth}%
-  \setcounter{friyear}{\theyear}%
-  % Si le mois a 31 jours.%
-  % Les mois à 31 jours : Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre%
-  \ifthenelse{\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or \themonth=8 \or \themonth=10 \or \themonth=12}%
-  {%
-    % Alors si on est avant le 28 du mois, on ajoute 4 jours%
-    \ifthenelse{\theday < 28}%
-    {%
-      \addtocounter{friday}{4}%
-    }{%
-      % Sinon, on change de mois %
-      \stepcounter{frimonth}%
-      % Changement d'année pour décembre%
-      \ifthenelse{\themonth=12}{\stepcounter{friyear}}{}%
-      % Lundi 31 - Mar 1, Mer 2, Jeu 3, Ven 4%
-      \ifthenelse{\theday=31}{\setcounter{friday}{4}}{}%
-      % Lundi 30 - Mar 31, Mer 1, Jeu 2, Ven 3%
-      \ifthenelse{\theday=30}{\setcounter{friday}{3}}{}%
-      % Lundi 29 - Mar 30, Mer 31, Jeu 1, Ven 2%
-      \ifthenelse{\theday=29}{\setcounter{friday}{2}}{}%
-      % Lundi 28 - Mar 29, Mer 30, Jeu 31, Ven 1%
-      \ifthenelse{\theday=28}{\setcounter{friday}{1}}{}%
-    }%
-  }{%
-    % Sinon, si on est au mois de février%
-    \ifthenelse{\themonth=2}%
-    {%
-      % Si le mois de février a 28 jours%
-      \ifthenelse{\theFinFevrier=28}%
-      {%
-        % Si on est avant le 25%
-        \ifthenelse{\theday < 25}%
-        {%
-          % Alors on ajoute 4 jours%
-          \addtocounter{friday}{4}%
-        }{%
-          % Sinon, on change de mois%
-          \stepcounter{frimonth}%
-          % Lundi 28 - Mar 1, Mer 2, Jeu 3, Ven 4%
-          \ifthenelse{\theday=28}{\setcounter{friday}{4}}{}%
-          % Lundi 27 - Mar 28, Mer 1, Jeu 2, Ven 3%
-          \ifthenelse{\theday=27}{\setcounter{friday}{3}}{}%
-          % Lundi 26 - Mar 27, Mer 28, Jeu 1, Ven 2%
-          \ifthenelse{\theday=26}{\setcounter{friday}{2}}{}%
-          % Lundi 25 - Mar 26, Mer 27, Jeu 28, Ven 1%
-          \ifthenelse{\theday=25}{\setcounter{friday}{1}}{}%
-        }%
-      }{%
-        % sinon le mois de février a 29 jours%
-        % si on est avant le 26%
-        \ifthenelse{\theday < 26}%
-        {%
-          % alors on ajoute 4 jours%
-          \addtocounter{friday}{4}%
-        }{%
-          % sinon, on change de mois%
-          \stepcounter{frimonth}%
-          % lundi 29 - mar 1, mer 2, jeu 3, ven 4%
-          \ifthenelse{\theday=29}{\setcounter{friday}{4}}{}%
-          % lundi 28 - mar 29, mer 1, jeu 2, ven 3%
-          \ifthenelse{\theday=28}{\setcounter{friday}{3}}{}%
-          % lundi 27 - mar 28, mer 29, jeu 1, ven 2%
-          \ifthenelse{\theday=27}{\setcounter{friday}{2}}{}%
-          % lundi 26 - mar 27, mer 28, jeu 29, ven 1%
-          \ifthenelse{\theday=26}{\setcounter{friday}{1}}{}%
-        }%
-      }%
-    }{%
-      % Sinon le mois a 30 jours%
-      % Les mois de 30 jours : Avril, Juin, Septembre, Novembre%
-      % Si on est avant le 27, on ajoute 4 jours%
-      \ifthenelse{\theday < 27}%
-      {%
-        \addtocounter{friday}{4}%
-      }{%
-        % Sinon, on change de mois%
-        \stepcounter{frimonth}%
-        % Lundi 30 - Mar 1, Mer 2, Jeu 3, Ven 4%
-        \ifthenelse{\theday=30}{\setcounter{friday}{4}}{}%
-        % Lundi 29 - Mar 30, Mer 1, Jeu 2, Ven 3%
-        \ifthenelse{\theday=29}{\setcounter{friday}{3}}{}%
-        % Lundi 28 - Mar 29, Mer 30, Jeu 1, Ven 2%
-        \ifthenelse{\theday=28}{\setcounter{friday}{2}}{}%
-        % Lundi 27 - Mar 28, Mer 29, Jeu 30, Ven 1%
-        \ifthenelse{\theday=27}{\setcounter{friday}{1}}{}%
-      }%
-    }%
-  }%
+  \setcounter{dayRemember}{\theday}%
+  \setcounter{monthRemember}{\themonth}%
+  \setcounter{yearRemember}{\theyear}%
   Du lundi \theday{}
   \ifthenelse{\themonth=1}{janvier}{}%
   \ifthenelse{\themonth=2}{février}{}%
@@ -283,38 +292,52 @@
   \ifthenelse{\themonth=11}{novembre}{}%
   \ifthenelse{\themonth=12}{décembre}{}
   \theyear{}
-  au vendredi
-  \thefriday{}
-  \ifthenelse{\thefrimonth=1}{janvier}{}%
-  \ifthenelse{\thefrimonth=2}{février}{}%
-  \ifthenelse{\thefrimonth=3}{mars}{}%
-  \ifthenelse{\thefrimonth=4}{avril}{}%
-  \ifthenelse{\thefrimonth=5}{mai}{}%
-  \ifthenelse{\thefrimonth=6}{juin}{}%
-  \ifthenelse{\thefrimonth=7}{juillet}{}%
-  \ifthenelse{\thefrimonth=8}{août}{}%
-  \ifthenelse{\thefrimonth=9}{septembre}{}%
-  \ifthenelse{\thefrimonth=10}{octobre}{}%
-  \ifthenelse{\thefrimonth=11}{novembre}{}%
-  \ifthenelse{\thefrimonth=12}{décembre}{}
-  \thefriyear
+  au 
+  \nextday\nextday\nextday\nextday%
+  \ifthenelse{\boolean{Samedi}}{samedi\nextday}{vendredi}
+  \theday{}
+  \ifthenelse{\themonth=1}{janvier}{}%
+  \ifthenelse{\themonth=2}{février}{}%
+  \ifthenelse{\themonth=3}{mars}{}%
+  \ifthenelse{\themonth=4}{avril}{}%
+  \ifthenelse{\themonth=5}{mai}{}%
+  \ifthenelse{\themonth=6}{juin}{}%
+  \ifthenelse{\themonth=7}{juillet}{}%
+  \ifthenelse{\themonth=8}{août}{}%
+  \ifthenelse{\themonth=9}{septembre}{}%
+  \ifthenelse{\themonth=10}{octobre}{}%
+  \ifthenelse{\themonth=11}{novembre}{}%
+  \ifthenelse{\themonth=12}{décembre}{}
+  \theyear
+  \setcounter{day}{\thedayRemember}%
+  \setcounter{month}{\themonthRemember}%
+  \setcounter{year}{\theyearRemember}%
 }%
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% Liste des macros pour les jours spéciaux
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - \setLundiRentree   : définir le lundi de rentrée au format DD-MM-YYYY
-% - \setDebutToussaint : définir le début (samedi) des vacances de Toussaint
-% - \setDebutNoel      : définir le début (samedi) des vacances de Noel
-% - \setDebutHiver     : définir le début (samedi) des vacances d'hiver
-% - \setDebutPrintemps : définir le début (samedi) des vacances de Printemps
-% - \setLundiPaques    : définir le lundi de Paques au format DD-MM-YYYY
-% - \setJoursFeries    : définir les dates de l'ascension, du pont de
+% - \setLundiRentree[3]   : définir le lundi de rentrée au format DD-MM-YYYY
+% - \setDebutToussaint[2] : définir le début (samedi) des vacances de Toussaint
+% - \setDebutNoel[2]      : définir le début (samedi) des vacances de Noel
+% - \setDebutHiver[2]     : définir le début (samedi) des vacances d'hiver
+% - \setDebutPrintemps[2] : définir le début (samedi) des vacances de Printemps
+% - \setFinToussaint[2]   : définir la fin (lundi) des vacances de Toussaint
+% - \setFinNoel[2]        : définir la fin (lundi) des vacances de Noel
+% - \setFinHiver[2]       : définir la fin (lundi) des vacances d'hiver
+% - \setFinPrintemps[2]   : définir la fin (lundi) des vacances de Printemps
+% - \setLundiPaques[2]    : définir le lundi de Pâques au format DD-MM
+% - \setJoursFeries       : définir les dates de l'ascension, du pont de
 %   l'ascension et de la Pentecôte à partir de la date du lundi de Pâques.
+% - \setDNB[3]            : Définir les dates de début et fin des épreuves du DNB
+% - \setBac[3]            : Définir les dates de début et fin des épreuves du Bac 
+% - \setBacPhilo[2]       : Définir le jour du Bac philo
+% - \setBacFrancais[2]    : Définir le jour du Bac français
+% - \setGO[3]             : Définir les dates de début et fin du Grand Oral
 %
 %%%% Définir le lundi de la rentrée
 % \setLundiRentree a 3 arguments :
-% - #1 Le jourde la rentrée
+% - #1 Le jour de la rentrée
 % - #2 Le Mois de la rentrée
 % - #3 L'annéede la rentrée
 \newcommand{\setLundiRentree}[3]%
@@ -324,8 +347,9 @@
   \setcounter{yearRentree}{#3}%
   % Gestion des années bissextiles.
   \setcounter{year}{\theyearRentree}
-  \stepcounter{year}
-  \newcounter{FinFevrier}%
+  % Si la rentrée est après la fin de Février, alors on prend en compte l'année
+  % suivante.
+  \ifthenelse{\themonthRentree>2}{\stepcounter{year}}{}
   % Est-ce que l'année est bissextile?%
   \pgfmathparse{int(mod(\theyear,4))}%
   \ifthenelse{\pgfmathresult>0}%
@@ -351,9 +375,9 @@
     }%
   }%
 }%
-%%%% Définir le début des vacances de Toussaint
-% Les commandes \set*Vacances* ont 2 arguments :
-% - #1 Le jourde la rentrée
+%%%% Définir le début des vacances de Toussaint, de noël, d'hiver et de printemps
+% Les commandes \setDebut*Vacances* ont 2 arguments :
+% - #1 Le jour de la rentrée
 % - #2 Le Mois de la rentrée
 \newcommand{\setDebutToussaint}[2]%
 {%
@@ -378,6 +402,30 @@
   \setcounter{dayPrintemps}{#1}%
   \setcounter{monthPrintemps}{#2}%
 }%
+%%%% Définir la fin des vacances de Toussaint, de noël, d'hiver et de printemps
+% Les commandes \setFin*Vacances* ont 2 arguments :
+% - #1 Le jour de la rentrée
+% - #2 Le Mois de la rentrée
+\newcommand{\setFinToussaint}[2]%
+{%
+  \setcounter{dayToussaintFin}{#1}%
+  \setcounter{monthToussaintFin}{#2}%
+}%
+\newcommand{\setFinNoel}[2]%
+{%
+  \setcounter{dayNoelFin}{#1}%
+  \setcounter{monthNoelFin}{#2}%
+}%
+\newcommand{\setFinHiver}[2]%
+{%
+  \setcounter{dayHiverFin}{#1}%
+  \setcounter{monthHiverFin}{#2}%
+}%
+\newcommand{\setFinPrintemps}[2]%
+{%
+  \setcounter{dayPrintempsFin}{#1}%
+  \setcounter{monthPrintempsFin}{#2}%
+}%
 %%%% Définir le Lundi de Paques
 \newcommand{\setLundiPaques}[2]%
 {%
@@ -386,34 +434,35 @@
 }%
 %%%% Trouver les dates des jours fériés variables 
 \newcommand{\setJoursFeries}{%
-  % Si \setLundiPaques n'est pas utilisé (valable jusqu'en 2040)...
-  \ifthenelse{\equal{\thedayPaques}{0}}%
-  {%
+  \ifthenelse{\thedayPaques=0}{
     \setcounter{year}{\theyearRentree}%
     \stepcounter{year}%
-    \ifthenelse{\equal{\theyear}{2024}}{\setcounter{dayPaques}{1}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2025}}{\setcounter{dayPaques}{21}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2026}}{\setcounter{dayPaques}{6}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2027}}{\setcounter{dayPaques}{29}\setcounter{monthPaques}{3}}{}
-    \ifthenelse{\equal{\theyear}{2028}}{\setcounter{dayPaques}{17}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2029}}{\setcounter{dayPaques}{2}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2030}}{\setcounter{dayPaques}{22}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2031}}{\setcounter{dayPaques}{14}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2032}}{\setcounter{dayPaques}{29}\setcounter{monthPaques}{3}}{}
-    \ifthenelse{\equal{\theyear}{2033}}{\setcounter{dayPaques}{18}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2034}}{\setcounter{dayPaques}{10}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2035}}{\setcounter{dayPaques}{26}\setcounter{monthPaques}{3}}{}
-    \ifthenelse{\equal{\theyear}{2036}}{\setcounter{dayPaques}{14}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2037}}{\setcounter{dayPaques}{6}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2038}}{\setcounter{dayPaques}{26}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2039}}{\setcounter{dayPaques}{11}\setcounter{monthPaques}{4}}{}
-    \ifthenelse{\equal{\theyear}{2040}}{\setcounter{dayPaques}{2}\setcounter{monthPaques}{4}}{}
-    \setcounter{year}{\theyearRentree}%
+    % Calcul du Dimanche de Pâques, par la méthode de Butcher-Meeus.
+    \tikzmath{%
+      \n=int(mod(\theyear,19));           % cycle de Méton
+      \c=int(div(\theyear,100));          % centaine l'année
+      \u=int(mod(\theyear,100));          % rang de l'année
+      \s=int(div(\c,4));                  % siècle bissextile
+      \t=int(mod(\c,4));                  % siècle bissextile
+      \p=int(div(\c+8,25));               % cycle de proemptose
+      \q=int(div(\c-\p+1,3));             % proemptose
+      \e=int(mod(19*\n+\c-\s-\q+15,30));  % épacte
+      \b=int(div(\u,4));                  % année bissextile
+      \d=int(mod(\u,4));                  % année bissextile
+      \LL=int(mod(2*\t+2*\b-\e-\d+32,7)); % lettre dominicale
+      \h=int(div(\n+11*\e+22*\LL,451));   % correction
+      \m=int(div(\e+\LL-7*\h+114,31));    % mois du dimanche de Pâques
+      \j=int(mod(\e+\LL-7*\h+114,31)+1);  % jour du dimanche de Pâques
+    }%
+    % Dimanche de Pâques
+    \setcounter{day}{\j}%
+    \setcounter{month}{\m}%
+    % lundi de Pâques, immédiatement après le dimanche de Pâques.
+    \nextday%
+    \setcounter{dayPaques}{\theday}%
+    \setcounter{monthPaques}{\themonth}%
   }{}
-  % On fixe la date au lundi de Pâques
-  \setcounter{day}{\thedayPaques}%
-  \setcounter{month}{\themonthPaques}%
-  % Jeudi de l'ascension = 38 jours après le lundi de Paques
+  % Jeudi de l'ascension = 38 jours après le lundi de Pâques
   \foreach \jour in {1,...,38}{\nextday}%
   \setcounter{dayAscension}{\theday}%
   \setcounter{monthAscension}{\themonth}%
@@ -420,7 +469,7 @@
   % Vendredi, pont de l'ascension
   \nextday%
   \setcounter{dayAscensionPont}{\theday}%
-  % Lundi de Pentecote = 10 jours après le vendredi de l'ascension
+  % Lundi de Pentecôte = 10 jours après le vendredi de l'ascension
   \foreach \jour in {1,...,10}{\nextday}%
   \setcounter{dayPentecote}{\theday}%
   \setcounter{monthPentecote}{\themonth}%
@@ -429,6 +478,39 @@
   \setcounter{month}{\themonthRentree}%
   \setcounter{year}{\theyearRentree}%
 }%
+%%%% Définir le début et la fin du DNB 
+\newcommand{\setDNB}[3]%
+{%
+  \setcounter{dayDNBDebut}{#1}%
+  \setcounter{dayDNBFin}{#2}%
+  \setcounter{monthDNB}{#3}%
+}%
+%%%% Définir le début et la fin du Bac 
+\newcommand{\setBac}[3]%
+{%
+  \setcounter{dayBacDebut}{#1}%
+  \setcounter{dayBacFin}{#2}%
+  \setcounter{monthBac}{#3}%
+}%
+%%%% Définir le jour du Bac Philo 
+\newcommand{\setBacPhilo}[2]%
+{%
+  \setcounter{dayBacPhilo}{#1}%
+  \setcounter{monthBacPhilo}{#2}%
+}%
+%%%% Définir le jour du Bac Français 
+\newcommand{\setBacFrancais}[2]%
+{%
+  \setcounter{dayBacFrancais}{#1}%
+  \setcounter{monthBacFrancais}{#2}%
+}%
+%%%%%%% Définir le début et la fin du Grand Oral 
+\newcommand{\setGO}[3]%
+{%
+  \setcounter{dayGODebut}{#1}%
+  \setcounter{dayGOFin}{#2}%
+  \setcounter{monthGO}{#3}%
+}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Liste des macros pour l'affichage de la semaine
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -443,6 +525,7 @@
   & Mercredi \getDate\nextday%
   & Jeudi \getDate\nextday%
   & Vendredi \getDate\nextday%
+  \ifthenelse{\boolean{Samedi}}{& Samedi\ \getDate}{}%
 }%
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -449,8 +532,8 @@
 % Liste des macros pour l'emploi du temps
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % - \setNombreSemaines[1] : définir le nombre N de semaines à afficher.
-% - \EmploiDuTemps[1] : afficher N fois le tableau #1, 
-% - \sem[2] : Séances bimensuelle.
+% - \EmploiDuTemps[1]     : afficher N fois le tableau #1,
+% - \sem[2]               : Séances bimensuelle.
 %
 %%% Nombre de semaine à afficher 
 % #1 est le nombre N de semaines à afficher.
@@ -464,10 +547,10 @@
 \newcommand{\EmploiDuTemps}[1]%
 {%
   \setJoursFeries%
-  \ifthenelse{\equal{\thenombreSemaines}{0}}%
-  {%
+  \ifthenelse{\thenombreSemaines=0}%
+  {% Si \setNombreSemaines n'est pas défini, on affiche 36 semaines
     \tikzmath{\NbSem=int(36);}%
-  }{%
+  }{% Sinon, on affiche le nombre de semaines demandées.
     \tikzmath{\NbSem=int(\thenombreSemaines);}%
   }%
   \foreach \n in {1,...,\NbSem}%
@@ -474,7 +557,12 @@
   {%
     {\Large\textsc{Semaine \no\n{} --- \getWeek}}%
     \vfil%
-    \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|} \hline%
+    \ifthenelse{\boolean{Samedi}}%
+    {
+      \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|X|} \hline%
+    }{
+      \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|} \hline%
+    }
       \Semaine \\ \hline%
       #1%
     \end{tabularx}%
@@ -485,8 +573,9 @@
 }%
 %
 %%%% Séance bimestrielle
-% Affiche #1 si le numéro de la semaine est impair.
-% Affiche #2 si le numéro de la semaine est pair.
+% -\sem[2] affiche les seances bimestrielles:
+%   Affiche #1 si le numéro de la semaine est impair.
+%   Affiche #2 si le numéro de la semaine est pair.
 \newcommand{\sem}[2]%
 {%
   \pgfmathparse{int(mod(\n,2))}%
@@ -503,30 +592,21 @@
 % TableauClasse a deux arguments:
 % - #1 : la classe.
 % - #2 la liste des élèves, séparée par des virgules (sauf le dernier).
-\newcommand{\TableauClasse}[2]%
-{%
-  \begin{tikzpicture}%
-    % En tête et nom de la classe.
-    \tikzmath{\largeurLigne=18; \largeurNom=3.5;\largeurColonne=\largeurLigne-\largeurNom;}%
-    \draw[fill=gray!50] (0,-.5)  rectangle (\largeurLigne,.5);%
-    \draw ({\largeurNom/2},0) node{\Large #1};%
-    \draw[shift={(\largeurNom,-.5)}] (0,0) grid[xstep=\largeurColonne/20] %
-    ++(\largeurColonne,1);%
-    \foreach[count=\n] \NomPrenom in {#2}%
-    {%
-      % Griser une ligne sur 2 (les lignes paires)
-      \pgfmathparse{int(mod(\n,2))}%
-      \ifnum0=\pgfmathresult\relax%
-        \fill[gray!25] (0,{-.5*\n}) rectangle ++(\largeurLigne,-.5);%
-      \fi%
-      % Ecrire le numéro de l'élève et son nom
-      \draw (0,{-.5*\n}) node[text width=3.5cm,below right]%
-      {\tiny \n. \NomPrenom} rectangle ++(\largeurNom,-.5);%
-      \draw[shift={(\largeurNom,-.5*\n)}] (0,0) grid[xstep=14.5/20,ystep=.5]%
-      (\largeurColonne,-.5);%
-    }%
-  \end{tikzpicture}%
+\makeatletter
+\newcommand{\TableauClasse}[2]{%
+  \def\tabledata{}% reset \tabledata
+  \foreach[count=\n] \NomPrenom in {#2}{% build table data from #1  
+    \protected at xappto\tabledata{{\tiny\n. \NomPrenom} 
+    & & & & & & & & & & & & & & & & & & & & \\}
+  }%
+  \rowcolors[\hline]{2}{lightgray}{white}%
+  \begin{tabularx}{\linewidth}{|l|*{20}{X|}}% 
+    {\Large\strut #1} & & & & & & & & & & & & & & & & & & & & \\
+    \tabledata%
+  \end{tabularx}%
 }%
+\makeatother
+%
 %%%% Réaliser les tableaux de classe.
 % \Classe a 3 arguments:
 % - #1 : la classe
@@ -535,40 +615,40 @@
 % Il y a 20 colonnes par tableaux. Il faut à peu près 2 tableaux pour faire 36
 % semaines Le nombre de tableaux est donc deux fois le nombre de fois qu'on voit
 % les élèves par semaine.
-\newcommand{\Classe}[3]%
-{%
-  \immediate\write\outputstream{#1}%
+\newcommand{\Classe}[3]{%
+  \immediate\write\outputstream{\string \subsection*{#1}}%
   \immediate\write\outputstream{\string \begin{enumerate}}%
-      % Ecrire les noms des élèves dans le bon fichier
-      \foreach \i in {#3}%
-      {%
+    % Écrire les noms des élèves dans le bon fichier
+    \foreach \i in {#3}{%
       \immediate\write\outputstream{\string\item\space \i}%
-      }%
-  \immediate\write\outputstream{\string \end{enumerate}}%
-  \begin{center}%
-    \tikzmath{\NbTableaux=2*#2;}%
-    \foreach \i in {1,...,\NbTableaux}%
-    {%
-      \TableauClasse{#1}{#3} \\[.50cm]%
     }%
-  \end{center}%
-  \newpage%
+\immediate\write\outputstream{\string \end{enumerate}}%
+\begin{center}%
+  \tikzmath{\NbTableaux=2*#2;}%
+  \foreach \i in {1,...,\NbTableaux}%
+  {%
+    \TableauClasse{#1}{#3} \\[.5cm]%
+  }%
+\end{center}%
+\newpage%
 }%
 %
 %%%% Liste des élèves
-% \ListeEleves va créer un fichier ListeEleves.tex qui contient la liste des
+% \ListeEleves a 1 argument :
+% Si #1 est défini, alors il insère la liste des élèves
+% Sinon, il va créer un fichier ListeEleves.tex qui contient la liste des
 % élèves puis insère le fichier (compiler deux fois, comme \tableofcontents).
-\newcommand{\ListeEleves}%
-{%
-  %insère le fichier ListeEleves.tex s'il existe
-  \IfFileExists{ListeEleves.tex}{%
-    \input{ListeEleves.tex}%
-  }{%
-    % Else : do nothing.%
-  }%
+\newcommand{\ListeEleves}[1]{%
+  \ifthenelse{\equal{#1}{}}{%
+    % S'il n'y a pas de fichier défini, on insère ListeEleves.tex
+    \IfFileExists{ListeEleves.tex}{\input{ListeEleves.tex}}{}%
+  }{
+    % Sinon, on utilise le fichier #1 (s'il existe)
+    \IfFileExists{#1}{\input{#1}}{}%
+  }
   % Stocker le nom des élèves dans un fichier externe.
   \newwrite\outputstream%
-  \immediate\openout\outputstream=ListeEleves.tex
+  \immediate\openout\outputstream=ListeEleves.tex%
 }%
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



More information about the tex-live-commits mailing list.