texlive[76102] Master/texmf-dist: cahierprof (20aug25)

commits+karl at tug.org commits+karl at tug.org
Wed Aug 20 22:01:36 CEST 2025


Revision: 76102
          https://tug.org/svn/texlive?view=revision&revision=76102
Author:   karl
Date:     2025-08-20 22:01:35 +0200 (Wed, 20 Aug 2025)
Log Message:
-----------
cahierprof (20aug25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/cahierprof/ListeElevesPerso.tex
    trunk/Master/texmf-dist/doc/latex/cahierprof/README.md
    trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.pdf
    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

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

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/ListeElevesPerso.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/ListeElevesPerso.tex	2025-08-20 20:01:15 UTC (rev 76101)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/ListeElevesPerso.tex	2025-08-20 20:01:35 UTC (rev 76102)
@@ -16,15 +16,6 @@
   \item Élève Cinquième 5 
 \end{enumerate}
 
-\subsubsection*{Quatrième}
-\begin{enumerate}
-  \item Élève Quatrième 1
-  \item Élève Quatrième 2
-  \item Élève Quatrième 3
-  \item Élève Quatrième 4
-  \item Élève Quatrième 5 
-\end{enumerate}
-
 \subsubsection*{Troisième}
 \begin{enumerate}
   \item Élève Troisième 1

Modified: trunk/Master/texmf-dist/doc/latex/cahierprof/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/README.md	2025-08-20 20:01:15 UTC (rev 76101)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/README.md	2025-08-20 20:01:35 UTC (rev 76102)
@@ -1,14 +1,16 @@
 Vous êtes un enseignant en France ?
 cahierprof vous aidera a réaliser un cahier de texte, c'est à dire 
-- un emploi du temps hedomadaire
+- un emploi du temps hebdomadaire
 - des tableaux d'absences/de notes pour chaque classe
+- une liste d'élèves
 
 ----------------
 
-You are a french mathematics teacher ?
-cahierprof helps you to make a textbook with :
+You are a french mathematics teacher?
+cahierprof helps you to make a textbook with:
 - week schedule
 - a grade book for each class 
+- a list of students
 
 ---------------
 

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

Added: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex	2025-08-20 20:01:35 UTC (rev 76102)
@@ -0,0 +1,506 @@
+\documentclass[a4paper,french,10pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{babel}
+\usepackage[margin=1.8cm,head=.9cm,headsep=10pt,foot=.9cm]{geometry}
+\usepackage{cahierprof}
+% Extensions pour la présentation de cahierprof-doc.tex
+\usepackage{tcolorbox}
+\usepackage[framemethod=TikZ]{mdframed}
+\usepackage{minted}
+\usepackage{xcolor}
+\usepackage[colorlinks]{hyperref}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% En tête du document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{
+  cahierprof.sty\\
+  Un cahier de textes en \LaTeX{} pour les professeurs
+}
+\author{
+  Raphaël Giromini\\
+  \mil|raphael.giromini -- at -- gmail.com|
+}
+\date{Version \cahierprofversion{} -- \cahierprofdate{}}
+
+\setminted{frame=single,linenos,numbersep=6pt}
+\newcommand{\mil}{\mintinline{latex}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Début du document
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+\maketitle
+
+\section*{Résumé}
+\noindent
+L'extension \mil|cahierprof.sty| permet de créer un cahier de texte du
+professeur, constitué de trois éléments:
+\begin{itemize}
+  \item un calendrier scolaire annuel (de septembre à juillet) avec une semaine
+    par par page;
+  \item un tableau des élèves répartis par classe (pour les appels et/ou les
+    notes).
+  \item une liste des élèves, qui créé un fichier supplémentaire
+    \mil|ListeEleves.tex| à partir des listes des élèves dans les tableaux
+    des classes. 
+\end{itemize}
+Merci à Frédéric Bréal pour ses conseils, ses idées et ses relectures attentives
+de cette extension. Merci à F. Pantigny pour ses conseils et exemples sur
+l'utilisation de l'extension \mil|nicematrix.sty|.
+
+% \smallskip
+% \noindent
+% Le paquet \mil|cahierprof| charge les paquets \mil|geometry|,
+% \mil|tikz| (avec les biliothèques \mil|math| et \mil|calc|),
+% \mil|microtype| (avec les options \mil|babel=true| et
+% \mil|kerning=true|), \mil|ifthen|, \mil|nicematrix|, \mil|xparse|,
+% \mil|xstring| et \mil|listofitems|.
+
+\subsection*{Nouveautés de la version 1.3}
+\begin{itemize}
+  \item Possibilité de créer des blocs de 1h30 dans l'emploi du temps avec la
+    command \mil|\TP|.
+  \item Redéfinition de la commande \mil|\Classe| pour y intégrer le nombre de
+    colonne par tableau d'appel. La commande \mil|\setNombreColonnes| disparait.
+  \item Correction de bugs mineurs de la version 1.2.
+\end{itemize}
+
+\vfil
+\begin{center}
+  \begin{minipage}{.8\linewidth}
+    \begin{tcolorbox}[colback=white, colframe=green!75!black]
+      \tableofcontents
+    \end{tcolorbox}
+  \end{minipage}
+\end{center}
+\vfil
+
+\newpage
+
+\section{
+  Calendrier des semaines de cours -- \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 
+\mil|\setLundiRentree{<JJ>}{<MM>}{<YYYY>}|, où \mil|<JJ>| est le
+quantième du mois; \mil|<MM>| est le mois et \mil|<YYYY>| est l'année de la
+rentrée.
+\begin{minted}{latex}
+% Le lundi de la semaine de la rentrée est le 2 septembre 2024 
+\setLundiRentree{2}{9}{2024}
+\end{minted}
+
+La commande \mil|\EmploiDuTemps{<Tableau_hebdomadaire>}| génère 36 tableaux
+hebdomadaires à compter du premier lundi de l'année scolaire.
+La clé \mil|<Tableau_hebdomadaire>| est un tableau de la
+semaine (sous la forme d'un \mil|niceTabularX|) avec 6 colonnes.
+\begin{minted}{latex}
+\EmploiDuTemps{
+  %     & Lundi      & Mardi        & Merc. & Jeudi      & Vend.                 \\
+  8h    &            &              &       &            & \DeuxH{1G}            \\[1.5cm]
+  9h    & \Sem{1G}{} &              &       & \TP{1G}    &                       \\[1.5cm]
+  10h   &            & \DeuxH{2nde} & 1G    & \TP*{2nde} & 1STMG                 \\[1.5cm]
+  11h   &            &              &       &            &                       \\[1.5cm]
+  \hline\hline
+  13h30 & 2nde       & 1STMG        & 1STMG &            & 2nde (Gr.~\Sem{A}{B}) \\[1.5cm]
+  14h30 &            &              &       &            & 2euro                 \\[1.5cm]
+  15h30 &            &              &       &            &                       \\[1.5cm]
+  16h30 &            &              &       &            &                       \\[1.5cm]
+}
+\end{minted}
+
+La commande \mil|\setNombreSemaines{<N>}| permet d'afficher un nombre différent
+de semaines, où \mil|<N>| est le nombre entier de semaines à générer.
+Cette commande doit être placée avant la commande \mil|\EmploiDuTemps|.
+\begin{minted}{latex}
+% Un emploi du temps avec 10 semaines de cours.
+\setNombreSemaines{10}
+\end{minted}
+
+\subsection{
+  Emploi du temps du lundi au samedi -- 
+  option \texttt{samedi} ou \texttt{\textbackslash{}setSamedi}
+}
+
+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 (7 colonnes) avec l'option
+\mil|samedi|, dans la déclaration de l'extension.
+\begin{minted}{latex}
+\usepackage[samedi]{cahierprof}
+\end{minted}
+Cette option peut également être activée par la commande \mil|\setSamedi|,
+placée avant la commande \mil|\EmploiDuTemps|. 
+\begin{minted}{latex}
+% Déclaration du samedi (sans utiliser l'option de l'extension)
+\setSamedi
+% Emploi du temps sur sept colonnes.
+\EmploiDuTemps{
+  %     & Lundi      & Mardi & Merc. & Jeudi      & Vend.      & Samedi           \\
+  8h    &            &       &       &            & \DeuxH{1G} &                  \\[1.5cm]
+  9h    & \Sem{1G}{} &       &       & \TP{1G}    &            & \Heure{3}{TSTMG} \\[1.5cm]
+  10h   &            & 2nde  & 1G    & \TP*{2nde} & 1STMG      &                  \\[1.5cm]
+  11h   &            &       &       &            &            &                  \\[1.5cm]
+  \hline\hline
+  13h30 & 2nde       & 1STMG & 1STMG &            &            &                  \\[1.5cm]
+  14h30 &            &       &       &            & 2euro      &                  \\[1.5cm]
+  15h30 &            &       &       &            &            &                  \\[1.5cm]
+  16h30 &            &       &       &            &            &                  \\[1.5cm]
+}
+\end{minted}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Saut de page manuel.
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{
+  Séance bimensuelle -- \texttt{\textbackslash{}Sem}
+}
+
+La commande \mil|\Sem{<S1>}{<S2>}| permet de définir des séances bimensuelles
+(tous les 15 jours), suivant la parité de la semaine. \mil|<S1>| est le contenu
+de la séance en semaine impaire et \mil|<S2>| est le contenu de la séance en
+semaine paire.
+
+\begin{minted}{latex}
+% Les 1G ont cours uniquement en semaine impaire. 
+\Sem{1G}{}
+% Les 2nde sont en groupe (A et B) bimensuels. 
+2nde (Gr.~\Sem{A}{B})
+\end{minted}
+
+\subsection{
+  Bloc d'heures de cours -- \texttt{\textbackslash{}DeuxH} ou
+  \texttt{\textbackslash{}Heures}
+}
+
+Pour les séances qui durent plus d'une heure, il est possible de créer un bloc
+sur plusieurs heures.
+\begin{itemize}
+  \item La commande \mil|\DeuxH{<classe>}| crée un bloc de deux heures
+    pour la classe \mil|<classe>|.
+  \item La commande \mil|\Heures{<N>}{<classe>}| crée un bloc de \mil|<N>|
+    heures pour la classe \mil|<classe>|.
+\end{itemize}
+
+\begin{minted}{latex}
+% Bloc de deux heures de Seconde
+\DeuxH{2nde}
+% Bloc de trois heures de Terminale STMG
+\Heures{3}{TSTMG}
+\end{minted}
+
+\subsection{
+  Bloc d'une heure et demi de cours -- \texttt{\textbackslash{}TP}
+}
+
+Il est possible de créer un bloc de 1h30 avec la commande
+\mil|\TP<*>{<classe>}|.
+\begin{itemize}
+  \item La commande \mil|\TP{<classe>}| crée un bloc de 1h30 pour la classe
+    \mil|<classe>| qui commence à l'heure entière.
+  \item La commande \mil|\TP*{<classe>}| crée un bloc de 1h30 pour la classe
+    \mil|<classe>| qui commence à la demi de l'heure.
+\end{itemize}
+
+\begin{minted}{latex}
+% Bloc de 1h30 pour les 1G, début du bloc à l'heure. 
+\TP{1G}
+% Bloc de 1h30 pour les 2nde, début du bloc à la demi de l'heure.
+\TP*{2nde}
+\end{minted}
+
+\subsection{
+  Gestion des vacances scolaires
+}
+
+Les vacances scolaires zonées (Toussaint, Noël, hiver et printemps) peuvent se
+définir en préambule sous la forme \mil|\setDebutToussaint{<JJ>}{<MM>}| où
+\mil|<JJ>| est le quantième du samedi du début des vacances et \mil|<MM>| le
+mois. 
+Chacune de ces vacances dure automatiquement 15 jours.
+\begin{minted}{latex}
+% Début de chaque vacances scolaire pour l'année en cours (le samedi).
+\setDebutToussaint{19}{10}
+\setDebutNoel{21}{12}
+\setDebutHiver{15}{2}
+\setDebutPrintemps{12}{4}
+\end{minted}
+
+\subsection{
+  Gestion des examens -- \texttt{\textbackslash{}setDNB} et
+  \texttt{\textbackslash{}setBac}
+}
+
+Dans le préambule, il est possible de définir les dates du  diplôme national du
+brevet (DNB), de l'épreuve de philosophie, de l'épreuve de français, des
+épreuves de spécialités et la période du grand oral. 
+\begin{itemize}
+  \item La commande \mil|\setDNB[<couleur>]{<JD>}{<JF>}{YY}| définie les dates
+    des épreuves du DNB, où \mil|<JD>| est le quantième du début, \mil|<JF>| est
+    le quantième de la fin et \mil|<MM>| est le mois.
+  \item La commande \mil|\setBacPhilo[<couleur>]{<JJ>}{<MM>}| définie la date de
+    l'épreuve de philosophie du baccalauréat, où \mil|<JJ>| est le
+    quantième et \mil|<MM>| est le mois.
+  \item La commande \mil|\setBacFrancais[<couleur>]{<JJ>}{<MM>}| définie la date
+    de l'épreuve anticipée de français du baccalauréat, où \mil|<JJ>| est le
+    quantième et \mil|<MM>| est le mois.
+  \item La commande \mil|\setBac[<couleur>]{<JD>}{<JF>}{<MM>}| définie les dates
+    des épreuves de spécialité du baccalauréat, où \mil|<JD>| est le quantième
+    du début, \mil|<JF>| est le quantième de la fin et \mil|<MM>| est le mois.
+  \item La commande \mil|\setGO[<couleur>]{<JD>}{<JF>}{<MM>}| définie la période
+    des épreuves du grand oral du baccalauréat, où \mil|<JD>| est le quantième
+    du début, \mil|<JF>| est le quantième de la fin et \mil|<MM>| est le
+    mois.
+\end{itemize}
+Pour les jours d'examens, la colonne du tableau hebdomadaire aura un fond gris
+clair.  La clé optionnelle \mil|<couleur>| permet de changer la couleur du fond
+de la colonne. Les couleurs possibles sont les mêmes que celles gérées par
+PGF/TiKZ.
+\begin{minted}{latex}
+% Le DNB a lieu les 26 et 27 juin.
+\setDNB{26}{27}{6}
+% Les épreuves finales du bac ont lieu du 17 au 19 juin sur fond blue!30
+\setBac[blue!30]{17}{19}{6}
+% L'épreuve de philosophie a lieu le 16 juin sur fond green!50
+\setBacPhilo[green!50]{16}{6}
+% L'épreuve de français a lieu le 13 jun sur fond red!50
+\setBacFrancais[red!50]{13}{6}
+% Le Grand Oral a lieu du 24 au 30 juin sur fond lightgray (par défaut)
+\setGO{24}{30}{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
+L.~3133-1 du code du travail: 1\textsuperscript{er}~janvier, lundi de Pâques,
+1\textsuperscript{er}~mai, 8~mai, Ascension, lundi de Pentecôte, 14~juillet,
+Assomption (15~août), Toussaint (1\textsuperscript{er}~novembre), 11~novembre et
+25~décembre. Le vendredi de l'Ascension est également considéré comme férié.
+Les jours fériés sont signalés dans l'emploi du temps par un fond gris clair.
+
+La date du lundi de Pâques est celle du calendrier grégorien
+occidental (utilisé par l'éducation nationale), calculée par la méthode de
+Butcher-Meeus. L'Ascension (38~jours après le lundi de Pâques) et le lundi
+de Pentecôte (10~jours après le vendredi de l'ascension) sont calculées
+automatiquement.
+
+La commande \mil|\setLundiPaques{<JJ>}{<MM>}| (dans le préambule) permet de
+changer la date du lundi de Pâques, où \mil|<JJ>| est le quantième et \mil|<MM>|
+est le mois.
+
+\begin{minted}{latex}
+% Et si le lundi de Pâques était un 17 mars?
+\setLundiPaques{17}{3}
+\end{minted}
+
+\section{
+  Tableau d'appel et de notes des classes -- \texttt{\textbackslash{}Classe}
+}
+
+La commande \mil|\Classe<*>[<N>]{<Nom>}{<Frequence>}{<Liste_eleves>}|
+permet de générer des tableaux d'appel des classes.
+Cette commande prend quatre arguments.
+\begin{itemize}
+  \item l'étoile \mil|*| signale que le tableau a des séances bimensuelles
+    («\emph{quinzomadaires}»).
+  \item La clé optionnelle \mil|<N>| donne le nombre de colonne par tableau. 
+    Par défaut cette clé vaut 18.
+  \item La clé \mil|<Nom>| de la classe, dans la première case d'en-tête du
+    tableau.
+  \item La clé \mil|<Frequence>| des séances (voir ci-dessous).
+  \item la liste \mil|<Liste_eleves>| séparés par des virgules, constitue la
+    première colonne des tableaux d'appel.
+\end{itemize}
+
+\subsection{
+  Commande \texttt{\textbackslash{}Classe} avec le nombre de séances
+}
+
+La commande \mil|\Classe{<Nom>}{<F>}{<Liste_eleves>}| crée des tableaux pour la
+classe \mil|<Nom>|, à en-tête vide, pour une fréquence de \mil|<F>| séances par
+semaines (\mil|<F>| peut être un entier ou un nombre décimal).
+\begin{minted}{latex}
+% La classe de Seconde euro a 1,5 séance dans la semaine.
+% Les tableaux ont 18 colonnes (valeur par défaut).
+\Classe{2 euro}{1.5}{
+  Élève Euro 1,
+  Élève Euro 2,
+  Élève Euro 3,
+  Élève Euro 4,
+  Élève Euro 5
+}
+\end{minted}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Saut de page manuel.
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{
+  Commande \texttt{\textbackslash{}Classe} avec la liste des jours
+}
+
+La commande \mil|\Classe{<Nom>}{<Liste_jours>}{<Liste_eleves>}|
+crée des tableaux pour la classe \mil|<Nom>|. Les en-têtes des colonnes
+correspondent aux dates de la liste \mil|<Liste_jours>| (sans les jours
+fériés).\\
+Les valeurs possibles de \mil|<Liste_jours>| sont: \mil|L| (lundi), \mil|M|
+(mardi), \mil|W| (mercredi), \mil|J| (jeudi), \mil|V| (vendredi) ou \mil|S|
+(samedi). Les valeurs sont séparées par des virgules.
+\begin{minted}{latex}
+% La classe de Seconde a cours le mardi, le jeudi et le vendredi.
+% Les tableaux ont 19 colonnes pour éviter un tableau presque vide.
+\Classe[19]{Seconde}{M,J,V}{
+  Élève Seconde 1,
+  Élève Seconde 2,
+  Élève Seconde 3,
+  Élève Seconde 4,
+  Élève Seconde 5
+}
+\end{minted}
+
+\subsection{
+  Commande \texttt{\textbackslash{}Classe*} avec des séances bimensuelles
+}
+
+L'étoile \mil|*| permet de définir des séances bimensuelles
+(\emph{quinzomadaires}).\\ 
+La commande \mil|{\Classe*{<Nom>}{<Liste_J/P>}{<Liste_eleves>}| permet de
+définir en en-tête les jours \mil|J| suivant leur fréquence \mil|P|: 
+\begin{itemize}
+  \item \mil|0|: toutes les séances du jour \mil|J|. 
+  \item \mil|1|: uniquement les semaines impaires du jour \mil|J|.
+  \item \mil|2|: uniquement les semaines impaires du jour \mil|J|.
+\end{itemize}
+La parité \mil|P| correspond à la parité de la semaine de \mil|\EmploiDuTemps|. 
+\begin{minted}{latex}
+% La classe de Première G a cours en semaine impaire les lundis, tous les
+% mercredis et tous les vendredis.
+% Les tableaux ont 16 colonnes pour éviter un tableau presque vide.
+\Classe*[16]{Première G}{L/1,W/0,V/0}{
+  Élève Première 1,
+  Élève Première 2,
+  Élève Première 3,
+  Élève Première 4,
+  Élève Première 5
+}
+\end{minted}
+
+\subsection{
+  Date de fin des cours -- 
+  \texttt{\textbackslash{}setFinCours}
+}
+Dans le préambule, la commande \mil|\setFinCours{<JJ>}{<MM>}| indique le dernier
+jour pour les en-tête des tableaux de classe, où \mil|<JJ>|
+est le quantième du dernier jour de cours et \mil|<MM>| est le mois du dernier
+jour de l'année.
+
+\begin{minted}{latex}
+% Fin des cours le 7 juin. 
+\setFinCours{7}{6}
+\end{minted}
+
+\section{
+  Liste des élèves -- \texttt{\textbackslash{}ListeEleves}
+}
+
+La commande \mil|\ListeEleves{<fichier>}| permet d'insérer le
+contenu du \mil|<fichier>|. Si aucun fichier n'est spécifié, un fichier
+\mil|ListeEleves.tex| est créé avec la liste (numérotés) de l'ensemble des
+élèves réparti par classe, puis inséré dans le cahier de texte cette liste
+(penser à compiler deux fois).
+
+\begin{minted}{latex}
+% Liste des élèves créée à partir des \Classe
+\ListeEleves{}
+% Liste des élèves créée à partir d'un fichier personnel. 
+\ListeEleves{ListeElevesPerso.tex}
+\end{minted}
+
+\newpage
+\section{Un exemple complet}
+L'exemple ci-dessous du cahier de texte est compilé dans
+\mil|cahierprof-doc.pdf|
+
+\inputminted{latex}{cahierprof-exemple.tex}
+
+\newpage
+\section{Versions antérieures}
+
+\subsection*{Nouveautés de la version 0.92}
+\begin{itemize}
+  \item Correction de la gestion des années bissextiles.
+  \item Correction de l'affichage de la semaine lorsque le quantième du lundi
+    est 29.
+  \item Création de la commande \mil|\setNombreSemaines| pour
+    fixer le nombre de semaines à afficher.\\
+    Si cette commande n'est pas utilisée, 36 semaines sont affichées par défaut.
+  \item Création de la commandes \mil|\setLundiRentree| pour
+    configurer le lundi de la rentrée scolaire.
+  \item Création des commandes \mil|\setDebut|\mil|*|, où
+    \mil|*| correspond à \mil|Toussaint|, \mil|Noel|, \mil|Hiver| ou
+    \mil|Printemps| et gestion automatique de la date de la fin des petites
+    vacances.
+  \item Création de la commande \mil|\setLundiPaques| pour
+    fixer la date du lundi de Pâques et gestion automatique des dates du jeudi
+    de l'Ascension et du lundi de Pentecôte en fonction de la date du lundi de
+    Pâques.\\
+    À noter: jusqu'à l'année 2040, la date du lundi de Pâques est gérée
+    automatiquement.
+\end{itemize}
+
+\subsection*{Nouveautés de la version 1.0}
+\begin{itemize}
+  \item La date du lundi de Pâques se calcule automatiquement par la méthode de
+    Butcher-Meeus.
+  \item Option \mil|samedi|, qui permet d'afficher un emploi du temps
+    hebdomadaire du lundi au samedi.
+  \item Possibilité d'utiliser un fichier personnel dans la commande
+    \mil|\ListeEleves|.
+  % \item Création des commandes \mil|\setFin{*}|, où \mil|*| correspond à
+  %   \mil|Toussaint|, \mil|Noel|, \mil|Hiver| ou \mil|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: \mil|\setDNB|,
+    \mil|\setBac|, \mil|\setBacPhilo|,
+    \mil|\setBacFrancais|, \mil|\setGO|.
+\end{itemize}
+
+\subsection*{Nouveautés de la version 1.1}
+\noindent
+Le principal changement de cette version est l'utilisation de l'extension
+\mil|niceMatrix| pour les tableaux des semaines et les tableaux
+d'appel.
+\begin{itemize}
+  \item Dans les tableaux de semaine, les colonnes des jours fériés et des
+    examens sont grisées. 
+  \item Les séances bimensuelles s'intitulent maintenant
+    \mil|\Sem| dans un souci d'uniformité des commandes.
+  \item Création des commandes \mil|\DeuxH| et  
+    \mil|\Heures| pour définir des blocs de plusieurs heures de
+    cours. 
+  \item Dans les tableaux d'appel (commande \mil|\Classe|), on
+    peut mettre soit le nombre de séances hebdomadaires, soit la liste des jours
+    des séances dans la semaine. 
+  \item Création de la commande \mil|\setNombreColonnes| pour
+    régler le nombre de colonnes dans les tableaux d'appel. 
+\end{itemize}
+
+\subsection*{Nouveautés de la version 1.2}
+\begin{itemize}
+  \item Possibilité de mettre un fond de couleur aux jours d'examens dans les
+    tableaux hebdomadaires.
+  \item Affichage par défaut de 18 colonnes (au lieu de 20) dans les tableaux
+    d'élèves.
+  \item Suppression des jours fériés dans les colonnes des tableaux d'élèves. 
+  \item Possibilité de définir des dates bimensuelles dans les tableaux
+    d'appels.
+\end{itemize}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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	2025-08-20 20:01:15 UTC (rev 76101)
+++ trunk/Master/texmf-dist/doc/latex/cahierprof/cahierprof-exemple.tex	2025-08-20 20:01:35 UTC (rev 76102)
@@ -1,26 +1,30 @@
 \documentclass[a4paper,french,10pt]{article}
 \usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
+\usepackage{lmodern}
 \usepackage{babel}
+\usepackage[margin=1.8cm,head=.9cm,headsep=10pt,foot=.9cm]{geometry}
 \usepackage{cahierprof}
+% Extensions pour la présentation de cahierprof-exemple.tex
 \usepackage{lscape}
 \usepackage{tcolorbox}
-\RequirePackage[colorlinks]{hyperref}
+\usepackage[colorlinks]{hyperref}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Préambule 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Les marges de mon document.
-\geometry{margin=1.2cm,head=0.6cm,headsep=10pt,foot=.6cm}
-\title{cahierprof-exemple.tex\\
+\title{
+  cahierprof-exemple.tex\\
   Utilisation du cahier de textes en \LaTeX{} pour les professeurs
 }
 \author{Raphaël Giromini\\ \texttt{raphael.giromini -- at -- gmail.com}}
-\date{Version 1.2 -- 30 juin 2025}
+\date{Version \cahierprofversion{} -- \cahierprofdate{}}
 
-%% Commandes spécifiques pour cahierprof
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Commandes spécifiques pour l'extension cahierprof
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % 1er lundi de l'année scolaire (pour le cahier de texte)
 \setLundiRentree{2}{9}{2024}
-% Début de chaque vacances scolaire pour l'année en cours (le samedi).
+
+%% Début de chaque vacances scolaire pour l'année en cours (le samedi).
 \setDebutToussaint{19}{10}
 \setDebutNoel{21}{12}
 \setDebutHiver{15}{2}
@@ -44,9 +48,7 @@
 % Début du document
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{document}
-
 \maketitle
-
 \begin{center}
   \begin{minipage}{.8\linewidth}
     \begin{tcolorbox}[colback=white, colframe=green!75!black]
@@ -55,47 +57,50 @@
   \end{minipage}
 \end{center}
 
-\section{Calendrier des semaines de cours -- commande \texttt{\textbackslash{}EmploiDuTemps}}
+\section{
+  Calendrier des semaines de cours -- \texttt{\textbackslash{}EmploiDuTemps}
+}
 Exemple du cahier de texte à partir de l'exemple complet de
-\texttt{cahierprof-doc.tex}.\par
+\texttt{cahierprof-doc.tex}.
+
+\smallskip
+
 Le cahier de texte débute sur la page suivante au format paysage.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Début du cahier de texte.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \begin{landscape}
   \EmploiDuTemps{
-    %     & Lundi      & Mardi         & Merc.      & Jeudi & Vend.      \\
-    8h    &            &               &            &       & \DeuxH{1G} \\[1.5cm]
-    9h    & \Sem{1G}{} &               &            &       &            \\[1.5cm]
-    10h   &            & \DeuxH{2nde}  & \DeuxH{1G} &       & 1STMG      \\[1.5cm]
-    11h   &            &               &            & 2nde  & 2 euro     \\[1.5cm] \hline\hline
-    13h30 &            & \DeuxH{1STMG} & 1STMG      &       & 2nde       \\[1.5cm]
-    14h30 &            &               &            &       &            \\[1.5cm]
-    15h30 &            &               &            &       &            \\[1.5cm]
-    16h30 &            &               &            &       &            \\[1.5cm]
+    %     & Lundi      & Mardi        & Merc. & Jeudi      & Vend.                 \\
+    8h    &            &              &       &            & \DeuxH{1G}            \\[1.5cm]
+    9h    & \Sem{1G}{} &              &       & \TP{1G}    &                       \\[1.5cm]
+    10h   &            & \DeuxH{2nde} & 1G    & \TP*{2nde} & 1STMG                 \\[1.5cm]
+    11h   &            &              &       &            &                       \\[1.5cm]
+    \hline\hline
+    13h30 & 2nde       & 1STMG        & 1STMG &            & 2nde (Gr.~\Sem{A}{B}) \\[1.5cm]
+    14h30 &            &              &       &            & 2euro                 \\[1.5cm]
+    15h30 &            &              &       &            &                       \\[1.5cm]
+    16h30 &            &              &       &            &                       \\[1.5cm]
   }
-  %%% Exemple avec un samedi.
-  %% On défini le samedi.
-  % \setSamedi
-  % \EmploiDuTemps{
-  %   %     & Lundi      & Mardi         & Merc.      & Jeudi & Vend.      & Sam. \\
-  %   8h    &            &               &            &       & \DeuxH{1G} & \Heures{3}{TSTMG} \\[1.5cm]
-  %   9h    & \Sem{1G}{} &               &            &       &            & \\[1.5cm]
-  %   10h   &            & \DeuxH{2nde}  & \DeuxH{1G} &       & 1STMG      & \\[1.5cm]
-  %   11h   &            &               &            & 2nde  & 2 euro     & \\[1.5cm] \hline\hline
-  %   13h30 &            & \DeuxH{1STMG} & 1STMG      &       & 2nde       & \\[1.5cm]
-  %   14h30 &            &               &            &       &            & \\[1.5cm]
-  %   15h30 &            &               &            &       &            & \\[1.5cm]
-  %   16h30 &            &               &            &       &            & \\[1.5cm]
-  % }
 \end{landscape}
 
-\section{Tableau d'appel et de notes des classes -- commande \texttt{\textbackslash{}Classe}}
+\section{
+  Tableau d'appel et de notes des classes -- \texttt{\textbackslash{}Classe}
+}
 
-% On arrête les cours après 31 semaines de cours 
-% (évite d'avoir des tableaux sans date) 
+Dans le préambule, la date de fin des cours est fixée au 7 juin. Les cours
+s'arrêtent après 31 semaines de cours (évite d'avoir des tableaux vide).
 \setNombreSemaines{31}
 
-\subsection{Commande \texttt{\textbackslash{}Classe} avec le nombre de séances}
+\subsection{
+  Commande \texttt{\textbackslash{}Classe} avec le nombre de séances
+}
 La classe de Seconde euro a cours 1,5 fois dans la semaine (sans les dates).
 
+Les tableaux ont 18 colonnes (valeur par défaut).
+
 \Classe{2 euro}{1.5}{
   Élève Euro 1,
   Élève Euro 2,
@@ -104,13 +109,14 @@
   Élève Euro 5
 }
 
-\subsection{Commande \texttt{\textbackslash{}Classe} avec la liste des jours}
-La classe de Seconde, qui a cours le mardi, le jeudi et le vendredi.
+\subsection{
+  Commande \texttt{\textbackslash{}Classe} avec la liste des jours
+}
+La classe de Seconde a cours le mardi, le jeudi et le vendredi.
 
-% On fixe le nombre de colonnes dans les tableaux d'appel à 19.
-% \setNombreColonnes{19}
+Les tableaux ont 19 colonnes pour éviter un tableau presque vide.
 
-\Classe{Seconde}{M,J,V}{
+\Classe[19]{Seconde}{M,J,V}{
   Élève Seconde 1,
   Élève Seconde 2,
   Élève Seconde 3,
@@ -118,13 +124,15 @@
   Élève Seconde 5
 }
 
-\subsection{Commande \texttt{\textbackslash{}Classe} avec des séances bimensuelles}
-La classe de Première G, qui a cours en semaine impaire les lundis, tous les
+\subsection{
+  Commande \texttt{\textbackslash{}Classe*} avec des séances bimensuelles
+}
+La classe de Première G a cours en semaine impaire les lundis, tous les
 mercredis et tous les vendredis.
 
-% On fixe le nombre de colonnes dans les tableaux d'appel à 16.
-\setNombreColonnes{16}
-\Classe[B]{Première G}{L/1,W/0,V/0}{
+Les tableaux ont 16 colonnes pour éviter un tableau presque vide.
+
+\Classe*[16]{Première G}{L/1,W/0,V/0}{
   Élève Première 1,
   Élève Première 2,
   Élève Première 3,
@@ -132,11 +140,18 @@
   Élève Première 5
 }
 
-\section{Liste des élèves -- commande \texttt{\textbackslash{}ListeEleves}}
+\section{
+  Liste des élèves -- \texttt{\textbackslash{}ListeEleves}
+}
 
-%% Si la \ListeEleves est un fichier personnel, décommenter la ligne ci-dessous.
-% \ListeEleves{ListeElevesPerso.tex}
-%% Génération de la liste des élèves.
+\subsection{
+  Liste des élèves créée à partir des listes de \textbackslash{}Classe
+}
 \ListeEleves{}
 
+\subsection{
+  Liste des élèves créée à partir d'un fichier personnel 
+}
+\ListeEleves{ListeElevesPerso.tex}
+
 \end{document}

Modified: trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty	2025-08-20 20:01:15 UTC (rev 76101)
+++ trunk/Master/texmf-dist/tex/latex/cahierprof/cahierprof.sty	2025-08-20 20:01:35 UTC (rev 76102)
@@ -1,23 +1,40 @@
 %% Informations générales
-%% Dernière modification le 2025-06-30 at 11:25
+%% Dernière modification le 2025-08-14 at 11:32 
 \NeedsTeXFormat{LaTeX2e}[1999/01/01]%
 \ProvidesPackage{cahierprof}%
-  [2025-06-30 v1.2 Les commandes pour le cahier Professeur]%
+[2025-08-14 v1.3 Les commandes pour le cahier Professeur]%
+\def\cahierprofversion{1.3}%
+\def\cahierprofdate{14 août 2025}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Chargement des extensions
+% Sommaire
+% 0.1. Chargement des extensions
+% 0.2. Options
+% 0.3. Définition des compteurs
+% 0.4. Commandes pour le calendrier
+% 0.5. Commandes pour les jours spéciaux (rentrée, fériés, examens)
+% 0.6. Commandes pour l'affichage de la semaine
+% 1. Commandes pour l'emploi du temps
+% 2. Commandes pour les tableaux des classes
+% 3. Commandes pour la Liste des élèves
+% 4. Au début du document 
+% 5. À la fin du document 
+% 6. Divers 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{geometry}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 0.1. Chargement des extensions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \RequirePackage{tikz}%
   \usetikzlibrary{math}%  
   \usetikzlibrary{calc}%
 \RequirePackage[babel=true,kerning=true]{microtype}%
+\RequirePackage{nicematrix}%
 \RequirePackage{ifthen}%
-\RequirePackage{nicematrix}%
-\RequirePackage{xparse}%
+% \RequirePackage{xparse}%
 \RequirePackage{xstring}%
 \RequirePackage{listofitems}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Options 
+% 0.2. Options 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Option samedi pour un emploi du temps du lundi au samedi 
 \newboolean{Samedi}%
@@ -28,8 +45,13 @@
   \tikzmath{\LastDay=int(6);}%
 }%
 \ProcessOptions%
+% \setSamedi : Déclare le samedi dans l'emploi du temps.
+\NewDocumentCommand \setSamedi{ }{%
+  \setboolean{Samedi}{true}%
+  \tikzmath{\LastDay=int(6);}%
+}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Définitions des compteurs
+% 0.3. Définitions des compteurs
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% Compteurs day/month/year pour la date courante
 \newcounter{day}%
@@ -78,7 +100,7 @@
 \newcounter{dayGODebut}%
 \newcounter{dayGOFin}%
 \newcounter{monthGO}%
-% Compteurs pour le dernier jours de classe
+%% Compteurs pour le dernier jours de classe
 \newcounter{dayFin}\setcounter{dayFin}{32}%
 \newcounter{monthFin}\setcounter{monthFin}{13}%
 %% Définition de compteurs pour gérer l'affichage de la semaine (\getWeek) 
@@ -85,26 +107,17 @@
 \newcounter{dayRemember}%
 \newcounter{monthRemember}%
 \newcounter{yearRemember}%
-%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Commande pour un calendrier du lundi au samedi 
+% 0.4. Commandes pour le calendrier
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - \setSamedi : Déclare le samedi dans l'emploi du temps.
-\newcommand{\setSamedi}{%
-  \setboolean{Samedi}{true}%
-  \tikzmath{\LastDay=int(6);}%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Liste des macros pour le calendrier.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % - \nextday : pour passer au jour d'après
 % - \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*
+% - \isFerie : Si le jour est férié alors le fond de la colonne est coloré
+% - \isExamen: Si le jour est un jour d'examen, alors le fond de la colonne est coloré
 % - \getdate : afficher la date au format day/month/year
-% - \getWeek : afficher la semaine au format Du Lundi au Vendredi/Samedi
+% - \getWeek : afficher la semaine au format <Du Lundi au Vendredi/Samedi>
 %%%% Passer au jour d'après
-\newcommand{\nextday}{%
+\NewDocumentCommand \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.
@@ -113,24 +126,21 @@
   \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%
+    }{% 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}{%
+\NewDocumentCommand \weekend{ }{%
   \ifthenelse{\theday=\thedayToussaint \and \themonth=\themonthToussaint}{%
     % Vacances de Toussaint : 15 jours de vacances, bien mérités !
     \foreach \jour in {1,...,16}{\nextday}%
@@ -145,13 +155,12 @@
         % Vacances d'Hiver : 15 jours de vacances, bien mérités !
         \foreach \jour in {1,...,16}{\nextday}%
         Vacances d'hiver%
-      }{
+      }{%
         \ifthenelse{\theday=\thedayPrintemps \and \themonth=\themonthPrintemps}{%
           % Vacances de Printemps : 15 jours de vacances, bien mérités !
           \foreach \jour in {1,...,16}{\nextday}%
           Vacances de printemps%
-        }{
-          % sinon c'est juste un week-end
+        }{% sinon c'est juste un week-end
           \nextday\nextday%
         }%
       }%
@@ -159,7 +168,7 @@
   }%
 }%
 %%%% Gestion des jours fériés
-\newcommand{\isFerie}{%
+\NewDocumentCommand \isFerie{ }{%
   \ifthenelse{% Jour de l'an, 1er janvier
         \(\theday=1 \and \themonth=1\)%
     \or% Lundi de Pâques
@@ -185,12 +194,12 @@
     \or% Noël, le 25 décembre
       \(\theday=25 \and \themonth=12\)%
   }{% Si le jour est férié : la colonne est grisée
+    % \Block[r]{1-1}{$\star$Ferié$\star$}%
     \columncolor{lightgray}%
-    \Block[r]{1-1}{$\star$Ferié$\star$}%
-  }{}% Sinon, on ne fait rien.
+  }{}%
 }%
 %%%% Gestion des jours d'examens 
-\newcommand{\isExamen}{%
+\NewDocumentCommand \isExamen{ }{%
   \ifthenelse{% Les jours du DNB
     \(\theday=\thedayDNBDebut \or \theday>\thedayDNBDebut\)%
     \and\(\theday<\thedayDNBFin \or \theday=\thedayDNBFin\)%
@@ -197,7 +206,7 @@
     \and \themonth=\themonthDNB%
   }{% Couleur du fond de la colonne du DNB
     \bgDNB%
-    \Block[r]{1-1}{$\star$DNB$\star$}%
+    % \Block[r]{1-1}{$\star$DNB$\star$}%
   }{}%
   \ifthenelse{% Les jours du Bac
     \(\theday=\thedayBacDebut \or \theday>\thedayBacDebut\)%
@@ -205,19 +214,19 @@
     \and \themonth=\themonthBac%
   }{% Couleur du fond de la colonne du bac
     \bgBac%
-    \Block[r]{1-1}{$\star$Spé$\star$}%
+    % \Block[r]{1-1}{$\star$Spé$\star$}%
   }{}%
   % Le jour du Bac Philo
   \ifthenelse{\theday=\thedayBacPhilo \and \themonth=\themonthBacPhilo%
   }{% Couleur du fond de la colonne du bac philo
     \bgBacPhilo% 
-    \Block[r]{1-1}{$\star$Philo$\star$}%
+    % \Block[r]{1-1}{$\star$Philo$\star$}%
   }{}%
   % Le jour du Bac Français
   \ifthenelse{\theday=\thedayBacFrancais \and \themonth=\themonthBacFrancais%
   }{% Couleur du fond de la colonne Bac Français
     \bgBacFrancais%
-    \Block[r]{1-1}{$\star$EAF$\star$}
+    % \Block[r]{1-1}{$\star$EAF$\star$}
   }{}%
   % Les jours du GO
   \ifthenelse{%
@@ -230,13 +239,13 @@
   }{}%
 }%
 %%%% Obtenir la date dans la première ligne du tableau
-\newcommand{\getDate}{%
+\NewDocumentCommand \getDate{ }{%
   \theday/\themonth/\theyear% On affiche la date
   \isFerie%  Est-ce que le jour \theday/\themonth est férié?
   \isExamen% Est-ce que le jour \theday/\themonth est un jour d'examen?
 }%
 %%%% Affichage de la semaine.
-\newcommand{\getWeek}{%
+\NewDocumentCommand \getWeek{ }{%
   \setcounter{dayRemember}{\theday}%
   \setcounter{monthRemember}{\themonth}%
   \setcounter{yearRemember}{\theyear}%
@@ -278,28 +287,25 @@
   \setcounter{year}{\theyearRemember}%
 }%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Liste des macros pour les jours spéciaux
+% 0.5. Commandes pour les jours spéciaux (rentrée, fériés, examens)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - \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
-% - \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
+% - \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 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            : Définir les dates de début et fin des épreuves du DNB
+% - \setBac            : Définir les dates de début et fin des épreuves du Bac 
+% - \setBacPhilo       : Définir le jour du Bac philo
+% - \setBacFrancais    : Définir le jour du Bac français
+% - \setGO             : 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 jour de la rentrée
-% - #2 Le Mois de la rentrée
-% - #3 L'annéede la rentrée
-\newcommand{\setLundiRentree}[3]{%
+\NewDocumentCommand \setLundiRentree{ m m m }{%
+  % #1 = Le jour ;  #2 = Le mois ; #3 = L'année de la rentrée
   \setcounter{lundiRentree}{#1}%
   \setcounter{monthRentree}{#2}%
   \setcounter{yearRentree}{#3}%
@@ -306,7 +312,7 @@
   % Gestion des années bissextiles.
   \setcounter{year}{\theyearRentree}%
   % 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}}{}
+  \ifthenelse{\themonthRentree>2}{\stepcounter{year}}{}%
   % Est-ce que l'année est bissextile?%
   \pgfmathparse{int(mod(\theyear,4))}%
   \ifthenelse{\pgfmathresult>0}{%
@@ -327,48 +333,50 @@
   }%
 }%
 %%%% 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]{%
+\NewDocumentCommand \setDebutToussaint{ m m }{%
+  % #1 = Le jour (samedi) des vacances ;  #2 = Le mois des vacances
   \setcounter{dayToussaint}{#1}%
   \setcounter{monthToussaint}{#2}%
 }%
 %%%% Définir le début des vacances de Noel
-\newcommand{\setDebutNoel}[2]{%
+\NewDocumentCommand \setDebutNoel{ m m }{%
+  % #1 = Le jour (samedi) des vacances ;  #2 = Le mois des vacances
   \setcounter{dayNoel}{#1}%
   \setcounter{monthNoel}{#2}%
 }%
 %%%% Définir le début des vacances d'hiver
-\newcommand{\setDebutHiver}[2]{%
+\NewDocumentCommand \setDebutHiver{ m m }{%
+  % #1 = Le jour (samedi) des vacances ;  #2 = Le mois des vacances
   \setcounter{dayHiver}{#1}%
   \setcounter{monthHiver}{#2}%
 }%
 %%%% Définir le début des vacances de Printemps
-\newcommand{\setDebutPrintemps}[2]{%
+\NewDocumentCommand \setDebutPrintemps{ m m }{%
+  % #1 = Le jour (samedi) des vacances ;  #2 = Le mois des vacances
   \setcounter{dayPrintemps}{#1}%
   \setcounter{monthPrintemps}{#2}%
 }%
-%%%% Définir le Lundi de Paques
-\newcommand{\setLundiPaques}[2]{%
+%%%% Définir le Lundi de Pâques
+\NewDocumentCommand \setLundiPaques{ m m }{%
+  % #1 = Le jour ;  #2 = Le mois du lundi de Pâques. 
   \setcounter{dayPaques}{#1}%
   \setcounter{monthPaques}{#2}%
 }%
-%%%% Trouver les dates des jours fériés variables 
-\newcommand{\setJoursFeries}{%
-  \ifthenelse{\thedayPaques=0}{
+%%%% Calculer les dates des jours fériés variables (Pâques, Ascension, Pentecôte)
+\NewDocumentCommand \setJoursFeries{ }{%
+  \ifthenelse{\thedayPaques=0}{% Si le lundi de Pâques n'est pas défini.
     \setcounter{year}{\theyearRentree}%
     \stepcounter{year}%
     % 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
+      \cc=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
+      \s=int(div(\cc,4));                 % siècle bissextile
+      \t=int(mod(\cc,4));                 % siècle bissextile
+      \p=int(div(\cc+8,25));              % cycle de proemptose
+      \q=int(div(\cc-\p+1,3));            % proemptose
+      \e=int(mod(19*\n+\cc-\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
@@ -401,46 +409,49 @@
   \setcounter{year}{\theyearRentree}%
 }%
 %%%% Définir le début et la fin du DNB 
-% \setcounter{monthDNB}{13}% Utile pour arrêter \ListeJour après le DNB
-\newcommand{\setDNB}[4][lightgray]{%
-  \def\bgDNB{\columncolor{#1}}
+\NewDocumentCommand \setDNB{ O{lightgray} m m m }{%
+  % #1 = couleur du fond ; #2 = jour début ; #3 = jour fin ; #4 = mois
+  \def\bgDNB{\columncolor{#1}}%
   \setcounter{dayDNBDebut}{#2}%
   \setcounter{dayDNBFin}{#3}%
   \setcounter{monthDNB}{#4}%
 }%
 %%%% Définir le jour du Bac Français 
-% \setcounter{monthBacFrancais}{13}% utile pour arrêter \ListeJour après le bac fr.
-\newcommand{\setBacFrancais}[3][lightgray]{%
-  \def\bgBacFrancais{\columncolor{#1}}
+\NewDocumentCommand \setBacFrancais{ O{lightgray} m m }{%
+  % #1 = couleur du fond ; #2 = jour ; #3 = mois 
+  \def\bgBacFrancais{\columncolor{#1}}%
   \setcounter{dayBacFrancais}{#2}%
   \setcounter{monthBacFrancais}{#3}%
 }%
 %%%% Définir le jour du Bac Philo 
-\newcommand{\setBacPhilo}[3][lightgray]{%
-  \def\bgBacPhilo{\columncolor{#1}}
+\NewDocumentCommand \setBacPhilo{ O{lightgray} m m }{%
+  % #1 = couleur du fond ; #2 = jour ; #3 = mois 
+  \def\bgBacPhilo{\columncolor{#1}}%
   \setcounter{dayBacPhilo}{#2}%
   \setcounter{monthBacPhilo}{#3}%
 }%
 %%%% Définir le début et la fin du Bac 
-\newcommand{\setBac}[4][lightgray]{%
-  \def\bgBac{\columncolor{#1}}
+\NewDocumentCommand \setBac{ O{lightgray} m m m }{%
+  % #1 = couleur du fond ; #2 = jour début ; #3 = jour fin ; #4 = mois
+  \def\bgBac{\columncolor{#1}}%
   \setcounter{dayBacDebut}{#2}%
   \setcounter{dayBacFin}{#3}%
   \setcounter{monthBac}{#4}%
 }%
 %%%%%%% Définir le début et la fin du Grand Oral 
-\newcommand{\setGO}[4][lightgray]{%
-  \def\bgGO{\columncolor{#1}}
+\NewDocumentCommand \setGO{ O{lightgray} m m m }{%
+  % #1 = couleur du fond ; #2 = jour début ; #3 = jour fin ; #4 = mois
+  \def\bgGO{\columncolor{#1}}%
   \setcounter{dayGODebut}{#2}%
   \setcounter{dayGOFin}{#3}%
   \setcounter{monthGO}{#4}%
 }%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Liste des macros pour l'affichage de la semaine
+% 0.6. Commandes pour l'affichage de la semaine
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \Semaine : afficher la première ligne du tableau du cahier de texte 
-% de la fome Lundi day/month, Mardi day/month, etc.
-\newcommand{\Semaine}{%
+% \Semaine : afficher la première ligne du tableau du cahier de texte de la
+% forme Lundi day/month, Mardi day/month, etc.
+\NewDocumentCommand \Semaine{ }{%
   & Lundi \getDate\nextday%
   & Mardi \getDate\nextday%
   & Mercredi \getDate\nextday%
@@ -449,26 +460,30 @@
   \ifthenelse{\boolean{Samedi}}{& Samedi\ \getDate}{}%
 }%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Liste des macros pour l'emploi du temps
+% 1. Commandes 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.
-% - \DeuxH[1]             : Bloc de 2h de cours avec la classe #1.
-% - \Heures[2]            : Bloc de #1 heures de cours avec la classe #2.
+% - \setNombreSemaines : définir le nombre N de semaines à afficher.
+% - \EmploiDuTemps     : afficher N fois le tableau hebdomadaire.
+% - \Sem               : Séances bimensuelle.
+% - \DeuxH             : Bloc de 2h de cours.
+% - \Heures            : Bloc de plusieures heures de cours.
+% - \TP                : Bloc de 1h30 de cours.
 %%% Nombre de semaine à afficher 
 % Par défaut on affiche 36 semaines.
 \tikzmath{\NbSem=int(36);}%
 % Si on définit \setNombreSemaines, alors on affiche #1 semaine.
-\newcommand{\setNombreSemaines}[1]{%
+\NewDocumentCommand \setNombreSemaines{ m }{%
   \tikzmath{\NbSem=int(#1);}%
 }%
 %%%% Affichage de l'emploi du temps
-\newcommand{\EmploiDuTemps}[1]{%
+\NewDocumentCommand \EmploiDuTemps{ m }{%
+  % #1 = Tableau hebdomadaire
   \foreach \n in {1,...,\NbSem}{%
-    {\Large\textsc{Semaine \no\n{} --- \getWeek}}%
+    {\Large\textsc{Semaine \n{} --- \getWeek}}%
     \vfil%
     \begin{NiceTabularX}{\linewidth}{l||*{\LastDay}{X}}[hvlines]%
+      \CodeBefore [create-cell-nodes]
+      \Body
       \Semaine \\%
       #1%
     \end{NiceTabularX}%
@@ -477,25 +492,182 @@
     \newpage%
   }%
 }%
-% \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]{%
+%%%% Séances bimestrielles
+\NewDocumentCommand \Sem{ m m }{%
+  % #1 = Contenu de la semaine impair ; #2 = contenu de la semaine paire
   \pgfmathparse{int(mod(\n,2))}%
   \ifthenelse{\pgfmathresult=1}{#1}{#2}%
 }%
 %%%% Heures de cours multiples 
-% \DeuxH[1] affiche un bloc de 2 heures contenant #1
-\newcommand{\DeuxH}[1]{%
+% Bloc de 2h. 
+\NewDocumentCommand \DeuxH{ m }{%
+  % #1 = Contenu des 2h de cours.
   \Block[t,l]{2-1}{#1}%
 }%
-% \Heure[2] affiche un bloc de #1 heures contenant #2
-\newcommand{\Heures}[2]{%
+% Bloc de plusieurs heures 
+\NewDocumentCommand \Heures{ m m }{%
+  % #1 = Nombre d'heures du bloc ; #2 = Contenu du bloc.
   \Block[t,l]{#1-1}{#2}%
 }%
+% Bloc de 1h30
+\ExplSyntaxOn%
+\cs_new_protected:Nn \__filet_fin:nn{ % Filet au bout de 1h30
+  \tikz \draw%
+  (\fp_eval:n{#1+1.5} -| #2) -- (\fp_eval:n{#1+1.5} -| \int_eval:n{#2+1});%
+}%
+\NewDocumentCommand \FiletFin{ }{% Filet au bout de 1h30.
+  \tl_gput_right:Nx \g_nicematrix_code_before_tl{%
+    \__filet_fin:nn{\arabic{iRow}}{\arabic{jCol}}%
+  }%
+}%
+\cs_new_protected:Nn \__filet_demi:nnn{% Filet au bout de 30 min
+  \tikz \draw%
+  (\fp_eval:n{#1+.5} -| #2) -- (\fp_eval:n{#1+.5} -| \int_eval:n{#2+1}) ;%
+  % Nom de la classe à la demi.
+  \tikz \draw (\fp_eval:n{#1+.5} -| #2) node[below=5.5pt,right=2.5pt]{#3};%
+}%
+\NewDocumentCommand \FiletDemi{ m }{% Filet à 30 min
+  % #1 = Nom de la classe.
+  \tl_gput_right:Nx \g_nicematrix_code_before_tl{%
+    \__filet_demi:nnn{\arabic{iRow}}{\arabic{jCol}}{\exp_not:n{#1}}%
+  }%
+}%
+\ExplSyntaxOff%
+\NewDocumentCommand \TP{ s m }{%
+  % #1 = star : TP à la demi heure ; #2 = nom de la classe
+  \IfBooleanTF{#1}{%
+    \Block[t,l]{2-1}{}%
+    \FiletDemi{#2}%
+  }{%
+    \Block[t,l]{2-1}{#2}%
+    \FiletFin{}%
+  }%
+}%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Au début du doucment 
+% 2. Commandes pour les tableaux des classes
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% - \setFinCours       : Fixe la fin des cours
+% - \setNombreColonnes : Le nombre de colonne par tableau de classe.
+% - \Classe            : Afficher les tableaux de classe.
+%%%%% Fixer la fin des cours
+\NewDocumentCommand \setFinCours{ m m }{%
+  % #1 = jour ; #2 = mois de la fin des cours
+  \setcounter{dayFin}{#1}%
+  \setcounter{monthFin}{#2}%
+}%
+%%% Commande pour répliquer le nombre de colonnes dans le tableau.
+\ExplSyntaxOn%
+\newcommand*\replicate{\prg_replicate:nn}%
+\ExplSyntaxOff%
+%%% Compteur pour la position de la date dans le tableau
+\newcounter{ypos}%
+%%% Commande Classe.
+\makeatletter%
+\NewDocumentCommand \Classe{ s O{18} m m m }{%
+  % #1 = star : si séance bimestrielle. 
+  % #2 = optionnel : nombre de colonne (par défaut = 18).
+  % #3 = nom de la classe
+  % #4 = - soit un entier qui correspond au nombre de fois où l'on voit la
+  %        classe dans la semaine, 
+  %      - soit une liste qui correspond aux jours où l'on voit la classe dans
+  %        la semaine (par exemple L,L,M pour Lundi, Lundi et Mardi),
+  %      - soit une liste Jour/Parité (nécessite l'étoile) qui correspond au
+  %        jour et à la parité où l'on voit la classe.
+  % #5 = la liste des élèves.
+  %%% Nombre de colonnes dans le tableau
+  \tikzmath{\NbColonnes=int(#2);}%
+  %%% Écrire le nom des élèves dans le fichier ListeEleves.aux_LE :
+  \immediate\write\tempfile{\string \subsection*{#3}}% Nom de la classe
+  \immediate\write\tempfile{\string \begin{enumerate}}% 
+    \foreach \i in {#5}{%
+      \immediate\write\tempfile{\string\item\space \i}% Liste des élèves
+    }%
+  \immediate\write\tempfile{\string \end{enumerate}}%
+  %%% Imprimer les tableaux d'appel
+  \def\tabledata{}% initialisation du tableau. 
+  \foreach[count=\n] \NomPrenom in {#5}{% Corps du tableau avec la liste des élèves
+    \protected at xappto\tabledata{{\tiny\n. \NomPrenom} \replicate{\NbColonnes}{&} \\}%
+  }%
+  %%% Combien de tableaux à imprimer ?
+  \IfDecimal{#4}{% Si #4 est un entier, Le nombre hebdo où l'on voit la classe est #4 
+    \pgfmathtruncatemacro\NbTableaux{ceil(#4*\NbSem/\NbColonnes)-1}% 
+  }{% Sinon #4 est une liste et on compte le nombre de fois où l'on voit la classe
+    \IfBooleanTF{#1}{% Si star = liste #4 du type L/1,M/2,W/0.
+      \pgfmathsetmacro{\p}{0}%
+      \foreach \J/\P in{#4}{% On va calculer Les parités de la liste
+        % 0 --> Toutes les semaines ; 1 ou 2 --> 0,5 semaine.
+        \ifthenelse{\P=0}{\pgfmathparse{\p+1}}{\pgfmathparse{\p+.5}}%
+        \xdef\p{\pgfmathresult}%
+      }%
+      \pgfmathtruncatemacro\NbTableaux{ceil(\p*\NbSem/\NbColonnes)-1}%
+    }{% Sinon liste #4 du type L,M,W
+      \readlist{\listeJours}{#4}%
+      \pgfmathtruncatemacro\NbTableaux{ceil(\listeJourslen*\NbSem/\NbColonnes)-1}%
+    }%
+  }%
+  \foreach \i in {0,...,\NbTableaux}{% Pour chaque tableau à imprimer
+    % Si on imprime les dates, savoir où commencer et où finir.
+    \pgfmathtruncatemacro\debut{1+\i*\NbColonnes}%
+    \pgfmathtruncatemacro\fin{2+\NbColonnes+\i*\NbColonnes}%
+    % La postion de la date est initialisée à 1
+    \setcounter{ypos}{1}%
+    % Corps du tableau.
+    \begin{NiceTabularX}{\linewidth}{l*{\NbColonnes}{X|}}[hvlines]%
+      \CodeBefore%
+      \rowcolors{2}{lightgray}{}% Alternance des couleurs du tableau blanc/gris.
+      \Body%
+      \rowcolor{lightgray}{\Large\strut #3} \replicate{\NbColonnes}{&\NotEmpty} \\%
+      \tabledata%
+      \CodeAfter%
+      \IfDecimal{#4}{% Si on veut un tableau sans date, la clé #3 est un entier.
+        % Le tableau est fini.
+      }{% Si on veut un tableau avec les dates la clé #4 est une liste du type L,M,W
+        \IfBooleanTF{#1}{% Si star : la liste des de la forme L/1,M,2,W0
+          \foreach \Day/\Parite/\Date in \ListeJours {% On récupère chaque jour de l'année
+            \foreach \J/\P in {#4}{% Pour les jours/Parite de la liste #3
+              \ifthenelse{% Si ça correspond à un jour de #1
+              \equal{\Day}{\J}\AND\(\equal{\P}{0}\OR\equal{\P}{\Parite}\)}{%
+              \stepcounter{ypos}% On place la date à la bonne position.
+              \ifthenelse{\theypos>\debut\AND\theypos<\fin}{%
+                \pgfmathtruncatemacro\position{\theypos-\i*\NbColonnes}%
+              \tikz[remember picture,overlay]\path (1-\position) node{\tiny \Date};}{}%
+            }{}%
+          }%
+        }%
+      }{% Si pas star : la liste des de la forme L,M,W
+        \foreach \Day/\Parite/\Date in \ListeJours {% On récupère chaque jour de l'année
+            \foreach \J/\P in {#4}{% Pour les jours/parité de la liste #4
+              \ifthenelse{\equal{\Day}{\J}}{% Si ça correspond à un jour de #3
+                \stepcounter{ypos}% On place la date à la bonne position.
+                \ifthenelse{\theypos>\debut\AND\theypos<\fin}{%
+                  \pgfmathtruncatemacro\position{\theypos-\i*\NbColonnes}%
+                \tikz[remember picture,overlay]\path (1-\position) node{\tiny \Date};}{}%
+              }{}%
+            }%
+          }%
+        }%
+      }%
+    \end{NiceTabularX}\par%
+    \vspace{4ex}%
+  }%
+}%
+\makeatother%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 3. Commandes pour la Liste des élèves
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Écrire la liste des élèves 
+\NewDocumentCommand \ListeEleves{ m }{%
+  % #1 = le nom du fichier à insérer. 
+  \ifthenelse{\equal{#1}{}}{%
+    % Si #1 est vide, on insère le fichier ListeEleves.tex
+    \IfFileExists{ListeEleves.tex}{\input{ListeEleves.tex}}{}%
+  }{% Sinon, on utilise le fichier #1 (s'il existe)
+    \IfFileExists{#1}{\input{#1}}{}%
+  }%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 4. Au début du document 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \AtBeginDocument{% 
   %%% Stocker le nom des élèves dans un fichier externe.
   \newwrite\tempfile%
@@ -506,7 +678,8 @@
   \setcounter{month}{\themonthRentree}%
   \setcounter{year}{\theyearRentree}%
   %%% Commande locale pour savoir si #3-#4 est un jour ouvré 
-  \newcommand\isJourOuvre[4]{% 
+  \NewDocumentCommand \isJourOuvre{ m m m m }{% 
+    % #1 = jour ; #2 = parité ; #3 = quantième ; #4 = mois.
     \IfStrEqCase{#3-#4}{% Si la date est un jour férié, on ne fait rien.
       {1-1}{}% 1er janvier
       {\thedayPaques-\themonthPaques}{}% Lundi de Pâques
@@ -531,7 +704,7 @@
   %%% Définition de \ListeJours 
   \gdef\ListeJours{}%
   \foreach \n in {1,...,\NbSem}{%
-    \pgfmathtruncatemacro\parite{int(mod(\n,2))}% Calcul de la parité de la semaine
+    \pgfmathtruncatemacro\parite{2-int(mod(\n,2))}% Calcul de la parité de la semaine
     \isJourOuvre{L}{\parite}{\theday}{\themonth}\nextday% Lundi
     \isJourOuvre{M}{\parite}{\theday}{\themonth}\nextday% Mardi
     \isJourOuvre{W}{\parite}{\theday}{\themonth}\nextday% Mercredi
@@ -556,7 +729,7 @@
   \setcounter{year}{\theyearRentree}%
 }%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% À la fin du doucment 
+% 5. À la fin du document 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \AtEndDocument{%
   \immediate\closeout\tempfile% Close the temp file
@@ -576,139 +749,8 @@
   \closeout\tempfile%
 }%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Liste des macros pour les tableaux des classes
+% 6. Divers 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% - \setFinCours[2]       : Fixe la fin des cours
-% - \setNombreColonnes[1] : Le nombre de colonne par tableau de classe.
-% - \Classe[3]            : Afficher les tableaux de classe.
-%%%%% Ficer la fin des cours
-\newcommand{\setFinCours}[2]{%
-  \setcounter{dayFin}{#1}%
-  \setcounter{monthFin}{#2}%
-}%
-%%%%% Fixer le nombre de colonne
-% Par défaut 18 colonnes
-\tikzmath{\NbColonnes=18;}%
-% Mais on peut fixer le nombre de colonne que l'on veut...
-\newcommand{\setNombreColonnes}[1]{%
-  \tikzmath{\NbColonnes=int(#1);}%
-}%
-%%%%% Réaliser les tableaux de classe.
-%% \Classe a 4 arguments: 
-%% #1 : (optionnel) un argument qui indique si on voit des classes 1 semaine sur 2
-%% #2 : Le nom de la classe 
-%% #3 : - Soit un entier qui correspond au nombre de fois où l'on voit la classe
-%%        dans la semaine, 
-%%      - Soit une liste qui correspond aux jours où l'on voit la classe dans la
-%%        semaine (par exemple L,L,M pour Lundi, Lundi et Mardi).
-%% #4 : la liste des élèves
-%%% Commande pour repliquer le nombre de colonnes dans le tableau.
-\ExplSyntaxOn%
-\newcommand*\replicate{\prg_replicate:nn}%
-\ExplSyntaxOff%
-%%% Compteur pour la position de la date dans le tableau
-\newcounter{ypos}%
-%%% Compteur pour le nombre de tableaux à faire (si #3 est une liste). 
-\newcounter{NbHebdo}%
-%%% Commande Classe.
-\makeatletter%
-\newcommand\Classe[4][]{%
-  %%% Ecrire le nom des élèves dans le fichier ListeEleves.tex :
-  \immediate\write\tempfile{\string \subsection*{#2}}% Nom de la classe
-  \immediate\write\tempfile{\string \begin{enumerate}}% 
-    \foreach \i in {#4}{%
-      \immediate\write\tempfile{\string\item\space \i}% Liste des élèves
-    }%
-  \immediate\write\tempfile{\string \end{enumerate}}%
-  %%% Imprimer les tableaux d'absences.
-  \def\tabledata{}% initialisation du tableau. 
-  \foreach[count=\n] \NomPrenom in {#4}{% Corps du tableau avec la liste des élèves
-    \protected at xappto\tabledata{{\tiny\n. \NomPrenom} \replicate{\NbColonnes}{&} \\}%
-  }%
-  % Combien de tableaux à imprimer ?
-  \IfDecimal{#3}{% Si #3 est un entier, Le nombre hebdo où l'on voit la classe est #3 
-    \pgfmathtruncatemacro\NbTableaux{ceil(#3*\NbSem/\NbColonnes)-1} 
-  }{% Sinon #3 est une liste et on compte le nombre de fois où l'on voit la classe
-    \readlist{\listeJours}{#3}%
-    \if\relax\detokenize{#1}\relax% Si la liste #1 est vide
-      \readlist{\listeJours}{#3}%
-      \pgfmathtruncatemacro\NbTableaux{ceil(\listeJourslen*\NbSem/\NbColonnes)-1}%
-    \else% Si la liste #1 n'est pas vide, il faut compter la parité
-      \pgfmathsetmacro{\p}{0}%
-      \foreach \J/\P in{#3}{% On va calculer Les parités de la liste
-        % 0 --> Toutes les semaines ; 1 ou 2 --> 0,5 semaine.
-        % \pgfmathparse{\p+1}%
-        \ifthenelse{\P=0}{\pgfmathparse{\p+1}}{\pgfmathparse{\p+.5}}%
-        \xdef\p{\pgfmathresult}%
-      }%
-      \pgfmathtruncatemacro\NbTableaux{ceil(\p*\NbSem/\NbColonnes)-1}%
-    \fi%
-  }%
-  \foreach \i in {0,...,\NbTableaux}{% Pour chaque tableau à imprimer
-    % Si on imprime les dates, savoir où commencer et où finir.
-    \pgfmathtruncatemacro\debut{1+\i*\NbColonnes}%
-    \pgfmathtruncatemacro\fin{2+\NbColonnes+\i*\NbColonnes}%
-    % La postion de la date est initialisée à 1
-    \setcounter{ypos}{1}%
-    % Corps du tableau.
-    \begin{NiceTabularX}{\linewidth}{l*{\NbColonnes}{X|}}[hvlines]%
-      \CodeBefore%
-      \rowcolors{2}{lightgray}{}% Alternance des couleurs du tableau blanc/gris.
-      \Body%
-      \rowcolor{lightgray}{\Large\strut #2} \replicate{\NbColonnes}{&\NotEmpty} \\%
-      \tabledata%
-      \CodeAfter%
-      \IfDecimal{#3}{% Si on veut un tableau sans date, la clé #2 est un entier.
-        % Le tableau est fini.
-      }{% Si on veut un tableau avec les dates la clé #3 est une liste du type L,M,W
-        \if\relax\detokenize{#1}\relax% Si la liste #1 est vide
-          \foreach \Day/\Parite/\Date in \ListeJours {% On récupère chaque jour de l'année
-            \foreach \J/\P in {#3}{% Pour les jours/parité de la liste #3
-              \ifthenelse{\equal{\Day}{\J}}{% Si ça correspond à un jour de #2
-                \stepcounter{ypos}% On place la date à la bonne position.
-                \ifthenelse{\theypos>\debut\AND\theypos<\fin}{%
-                  \pgfmathtruncatemacro\position{\theypos-\i*\NbColonnes}%
-                \tikz[remember picture,overlay]\path (1-\position) node{\tiny \Date};}{}%
-              }{}%
-            }%
-          }%
-        \else% La liste #1 est de la forme L/1,M/2,W0
-          \foreach \Day/\Parite/\Date in \ListeJours {% On récupère chaque jour de l'année
-            \foreach \J/\P in {#3}{% Pour les jours/Parite de la liste #2
-              \ifthenelse{% Si ça correspond à un jour de #1
-              \equal{\Day}{\J}\AND\(\equal{\P}{0}\OR\equal{\P}{\Parite}\)}{%
-              \stepcounter{ypos}% On place la date à la bonne position.
-              \ifthenelse{\theypos>\debut\AND\theypos<\fin}{%
-                \pgfmathtruncatemacro\position{\theypos-\i*\NbColonnes}%
-              \tikz[remember picture,overlay]\path (1-\position) node{\tiny \Date};}{}%
-            }{}%
-          }%
-        }%
-      \fi%
-    }%
-    \end{NiceTabularX}\par%
-    \vspace{4ex}%
-  }%
-}%
-\makeatother%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Liste des élèves
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \ListeEleves[1] : Insère la liste des élèves 
-% - 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}[1]{%
-  \ifthenelse{\equal{#1}{}}{%
-    % S'il n'y a pas de fichier défini, on insère le fichier ListeEleves.tex
-    \IfFileExists{ListeEleves.tex}{\input{ListeEleves.tex}}{}%
-  }{% Sinon, on utilise le fichier #1 (s'il existe)
-    \IfFileExists{#1}{\input{#1}}{}%
-  }%
-}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Divers 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Pas d'indentation des paragraphes
 \setlength{\parindent}{0pt}%
 % Fin du package.



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