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.