%% Informations générales %% Dernière modification le 2023-09-01 at 09:14 \NeedsTeXFormat{LaTeX2e}[1999/01/01] \ProvidesPackage{cahierprof} [2023/09/01 v1.0 Les commandes pour le cahier Professeur] % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Chargement des extensions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{geometry} \RequirePackage{tabularx} \RequirePackage{colortbl} \RequirePackage{tikz} \usetikzlibrary{math} \usetikzlibrary{calc} \RequirePackage[babel=true,kerning=true]{microtype} \RequirePackage{ifthen} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Option samedi pour un emploi du temps du lundi au samedi \newboolean{Samedi} \setboolean{Samedi}{false} \DeclareOption{samedi}{\setboolean{Samedi}{true}} \ProcessOptions % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Définitions des compteurs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Compteurs day/month/year pour la date courante \newcounter{day} \newcounter{month} \newcounter{year} % % Compteurs pour la rentrée \newcounter{lundiRentree} \newcounter{monthRentree} \newcounter{yearRentree} % % Compteur pour la fin Février \newcounter{FinFevrier} % % Compteurs pour les vacances scolaires % Toussaint \newcounter{dayToussaint} \newcounter{monthToussaint} \newcounter{dayToussaintFin} \newcounter{monthToussaintFin} % Noel \newcounter{dayNoel} \newcounter{monthNoel} \newcounter{dayNoelFin} \newcounter{monthNoelFin} % Hiver \newcounter{dayHiver} \newcounter{monthHiver} \newcounter{dayHiverFin} \newcounter{monthHiverFin} % Printemps \newcounter{dayPrintemps} \newcounter{monthPrintemps} \newcounter{dayPrintempsFin} \newcounter{monthPrintempsFin} % % Compteurs pour les Jours Fériés \newcounter{dayPaques} \newcounter{monthPaques} \newcounter{dayAscension} \newcounter{dayAscensionPont} \newcounter{monthAscension} \newcounter{dayPentecote} \newcounter{monthPentecote} % % Compteurs pour les Examens \newcounter{dayDNBDebut} \newcounter{dayDNBFin} \newcounter{monthDNB} \newcounter{dayBacDebut} \newcounter{dayBacFin} \newcounter{monthBac} \newcounter{dayBacPhilo} \newcounter{monthBacPhilo} \newcounter{dayBacFrancais} \newcounter{monthBacFrancais} \newcounter{dayGODebut} \newcounter{dayGOFin} \newcounter{monthGO} % % Définition de compteurs pour gérer l'affichage de la semaine (\getWeek) \newcounter{dayRemember} \newcounter{monthRemember} \newcounter{yearRemember} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Commande pour un calendrier du lundi au samedi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \setSamedi : Déclare le samedi dans l'emploi du temps. \newcommand{\setSamedi}{% \setboolean{Samedi}{true}% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Liste des macros pour le calendrier. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \nextday : pour passer au jour d'après % - \weekend : pour passer les week-ends ou les vacances scolaires % - \isFerie : Si le jour est ferié alors, on affiche *Férié* % - \isExamen: Si le jour est un jour d'examen, on affiche *Examen* % - \getdate : afficher la date au format day/month/year % - \getWeek : afficher la semaine au format Du Lundi au Vendredi/Samedi % %%%% Passer au jour d'après \newcommand{\nextday}{% % Les mois à 30 jours : Avril, Juin, Septembre, Novembre % Les mois à 31 jours : Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre % Février à \theFinFevrier jours. \ifthenelse{% \(\theday=30 \and \(\themonth=4 \or \themonth=6 \or \themonth=9 \or \themonth=11\)\)% \or \(\theday=31 \and \(\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or% \themonth=8 \or \themonth=10 \or\themonth=12\)\) % \or \(\theday=\theFinFevrier \and \themonth=2\)}% {% % Si on est en décembre, on change d'année et month=1, day=1% \ifthenelse{\themonth=12}% {% \stepcounter{year}% \setcounter{month}{1}% \setcounter{day}{1}% }{% % Dans les autres cas, on change de mois et on recommence à day= 1% \stepcounter{month}% \setcounter{day}{1}% }% }{% % Sinon, on augmente juste le compteur jour% \stepcounter{day}% }% }% %%%% Gestions des vacances et week-end \newcommand{\weekend}{% % Vacances de Toussaint \ifthenelse{\theday=\thedayToussaint \and \themonth=\themonthToussaint}{% \ifthenelse{\thedayToussaintFin=0}{% % 15 jours de vacances, bien mérités ! \foreach \jour in {1,...,16}{\nextday}% }{% \setcounter{day}{\thedayToussaintFin}% \setcounter{month}{\themonthToussaintFin}% }% Vacances de la Toussaint% }{% % Vacances de Noël \ifthenelse{\theday=\thedayNoel \and \themonth=\themonthNoel}{% \ifthenelse{\thedayNoelFin=0}{% % 15 jours de vacances, bien mérités ! \foreach \jour in {1,...,16}{\nextday}% }{% \setcounter{day}{\thedayNoelFin}% \setcounter{month}{\themonthNoelFin}% }% Vacances de Noël% }{ % Vacances d'Hiver \ifthenelse{\theday=\thedayHiver \and \themonth=\themonthHiver}{% \ifthenelse{\thedayHiverFin=0}{% % 15 jours de vacances, bien mérités ! \foreach \jour in {1,...,16}{\nextday}% }{% \setcounter{day}{\thedayHiverFin}% \setcounter{month}{\themonthHiverFin}% }% Vacances d'hiver% }{ % Vacances de Printemps \ifthenelse{\theday=\thedayPrintemps \and \themonth=\themonthPrintemps}{% \ifthenelse{\thedayPrintempsFin=0}{% % 15 jours de vacances, bien mérités ! \foreach \jour in {1,...,16}{\nextday}% }{% \setcounter{day}{\thedayPrintempsFin}% \setcounter{month}{\themonthPrintempsFin}% }% Vacances de printemps% }{ % sinon c'est juste un week-end \nextday\nextday% }% }% }% }% }% %%%% Gestion des jours fériés \newcommand{\isFerie}{% % On affiche $\star$Ferié$\star$ si le jour est férié. \ifthenelse{% % Jour de l'an, 1er janvier \(\theday=1 \and \themonth=1\)% % Lundi de Pâques \or\(\theday=\thedayPaques \and \themonth=\themonthPaques\)% % Fête du travail, le 1er mai \or\(\theday=1 \and \themonth=5\)% % Victoire 1945, le 8 mai \or\(\theday=8 \and \themonth=5\)% % Jeudi de l'ascension \or\(\theday=\thedayAscension \and \themonth=\themonthAscension\)% % Pont du vendredi de l'ascension \or\(\theday=\thedayAscensionPont \and \themonth=\themonthAscension\)% % Lundi de Pentecôte \or\(\theday=\thedayPentecote \and \themonth=\themonthPentecote\)% % Fête Nationale, le 14 juillet \or\(\theday=14 \and \themonth=7\)% % Assomption, le 15 août \or\(\theday=15 \and \themonth=8\)% % Toussaint, le 1er novembre \or\(\theday=1 \and \themonth=11\)% % Armistice 1914-1918, le 11 novembre \or\(\theday=11 \and \themonth=11\)% % Noël, le 25 décembre \or\(\theday=25 \and \themonth=12\)% }{% \cellcolor[gray]{.9} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$Férié$\star$}{$\star$Férié$\star$} }{}% }% \newcommand{\isExamen}{% % Les jours du DNB \ifthenelse{% \(\theday=\thedayDNBDebut \or \theday>\thedayDNBDebut\) \and\(\theday<\thedayDNBFin \or \theday=\thedayDNBFin\) \and \themonth=\themonthDNB% }{% \cellcolor{green} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$DNB$\star$}{$\star$DNB$\star$} }{}% % Les jours du Bac \ifthenelse{% \(\theday=\thedayBacDebut \or \theday>\thedayBacDebut\) \and\(\theday<\thedayBacFin \or \theday=\thedayBacFin\) \and \themonth=\themonthBac% }{% \cellcolor{green} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$} }{}% % Le jour du Bac Philo \ifthenelse{\theday=\thedayBacPhilo \and \themonth=\themonthBacPhilo} {% \cellcolor{green} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$} }{}% % Le jour du Bac Français \ifthenelse{\theday=\thedayBacFrancais \and \themonth=\themonthBacFrancais} {% \cellcolor{green} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$Bac$\star$}{$\star$Bac$\star$} }{}% % Les jours du GO \ifthenelse{% \(\theday=\thedayGODebut \or \theday>\thedayGODebut\) \and\(\theday<\thedayGOFin \or \theday=\thedayGOFin\) \and \themonth=\themonthGO% }{% \cellcolor{green} \hfil % \ifthenelse{\boolean{Samedi}}{\tiny $\star$GO$\star$}{$\star$GO$\star$} }{}% }% %%%% Obtenir la date \newcommand{\getDate}{% % On affiche la date \theday/\themonth/\theyear% % Est-ce que le jour \theday/\themonth est férié? \isFerie% % Est-ce que le jour \theday/\themonth est un jour d'examen? \isExamen% }% % %%%% Affichage de la semaine. \newcommand{\getWeek}{% \setcounter{dayRemember}{\theday}% \setcounter{monthRemember}{\themonth}% \setcounter{yearRemember}{\theyear}% Du lundi \theday{} \ifthenelse{\themonth=1}{janvier}{}% \ifthenelse{\themonth=2}{février}{}% \ifthenelse{\themonth=3}{mars}{}% \ifthenelse{\themonth=4}{avril}{}% \ifthenelse{\themonth=5}{mai}{}% \ifthenelse{\themonth=6}{juin}{}% \ifthenelse{\themonth=7}{juillet}{}% \ifthenelse{\themonth=8}{août}{}% \ifthenelse{\themonth=9}{septembre}{}% \ifthenelse{\themonth=10}{octobre}{}% \ifthenelse{\themonth=11}{novembre}{}% \ifthenelse{\themonth=12}{décembre}{} \theyear{} au \nextday\nextday\nextday\nextday% \ifthenelse{\boolean{Samedi}}{samedi\nextday}{vendredi} \theday{} \ifthenelse{\themonth=1}{janvier}{}% \ifthenelse{\themonth=2}{février}{}% \ifthenelse{\themonth=3}{mars}{}% \ifthenelse{\themonth=4}{avril}{}% \ifthenelse{\themonth=5}{mai}{}% \ifthenelse{\themonth=6}{juin}{}% \ifthenelse{\themonth=7}{juillet}{}% \ifthenelse{\themonth=8}{août}{}% \ifthenelse{\themonth=9}{septembre}{}% \ifthenelse{\themonth=10}{octobre}{}% \ifthenelse{\themonth=11}{novembre}{}% \ifthenelse{\themonth=12}{décembre}{} \theyear \setcounter{day}{\thedayRemember}% \setcounter{month}{\themonthRemember}% \setcounter{year}{\theyearRemember}% }% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Liste des macros pour les jours spéciaux %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \setLundiRentree[3] : définir le lundi de rentrée au format DD-MM-YYYY % - \setDebutToussaint[2] : définir le début (samedi) des vacances de Toussaint % - \setDebutNoel[2] : définir le début (samedi) des vacances de Noel % - \setDebutHiver[2] : définir le début (samedi) des vacances d'hiver % - \setDebutPrintemps[2] : définir le début (samedi) des vacances de Printemps % - \setFinToussaint[2] : définir la fin (lundi) des vacances de Toussaint % - \setFinNoel[2] : définir la fin (lundi) des vacances de Noel % - \setFinHiver[2] : définir la fin (lundi) des vacances d'hiver % - \setFinPrintemps[2] : définir la fin (lundi) des vacances de Printemps % - \setLundiPaques[2] : définir le lundi de Pâques au format DD-MM % - \setJoursFeries : définir les dates de l'ascension, du pont de % l'ascension et de la Pentecôte à partir de la date du lundi de Pâques. % - \setDNB[3] : Définir les dates de début et fin des épreuves du DNB % - \setBac[3] : Définir les dates de début et fin des épreuves du Bac % - \setBacPhilo[2] : Définir le jour du Bac philo % - \setBacFrancais[2] : Définir le jour du Bac français % - \setGO[3] : Définir les dates de début et fin du Grand Oral % %%%% Définir le lundi de la rentrée % \setLundiRentree a 3 arguments : % - #1 Le jour de la rentrée % - #2 Le Mois de la rentrée % - #3 L'annéede la rentrée \newcommand{\setLundiRentree}[3]% {% \setcounter{lundiRentree}{#1}% \setcounter{monthRentree}{#2}% \setcounter{yearRentree}{#3}% % 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}}{} % Est-ce que l'année est bissextile?% \pgfmathparse{int(mod(\theyear,4))}% \ifthenelse{\pgfmathresult>0}% {% % if (year is not divisible by 4) then (it is a common year)% \setcounter{FinFevrier}{28}% }{% % else if (year is not divisible by 100) then (it is a leap year)% \pgfmathparse{int(mod(\theyear,100))}% \ifthenelse{\pgfmathresult>0}% {% \setcounter{FinFevrier}{29}% }{% % else if (year is not divisible by 400) then (it is a common year)% \pgfmathparse{int(mod(\theyear,400))}% \ifthenelse{\pgfmathresult>0}% {% \setcounter{FinFevrier}{28}% }{% % else (it is a leap year)% \setcounter{FinFevrier}{29}% }% }% }% }% %%%% 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]% {% \setcounter{dayToussaint}{#1}% \setcounter{monthToussaint}{#2}% }% %%%% Définir le début des vacances de Noel \newcommand{\setDebutNoel}[2]% {% \setcounter{dayNoel}{#1}% \setcounter{monthNoel}{#2}% }% %%%% Définir le début des vacances d'hiver \newcommand{\setDebutHiver}[2]% {% \setcounter{dayHiver}{#1}% \setcounter{monthHiver}{#2}% }% %%%% Définir le début des vacances de Printemps \newcommand{\setDebutPrintemps}[2]% {% \setcounter{dayPrintemps}{#1}% \setcounter{monthPrintemps}{#2}% }% %%%% Définir la fin des vacances de Toussaint, de noël, d'hiver et de printemps % Les commandes \setFin*Vacances* ont 2 arguments : % - #1 Le jour de la rentrée % - #2 Le Mois de la rentrée \newcommand{\setFinToussaint}[2]% {% \setcounter{dayToussaintFin}{#1}% \setcounter{monthToussaintFin}{#2}% }% \newcommand{\setFinNoel}[2]% {% \setcounter{dayNoelFin}{#1}% \setcounter{monthNoelFin}{#2}% }% \newcommand{\setFinHiver}[2]% {% \setcounter{dayHiverFin}{#1}% \setcounter{monthHiverFin}{#2}% }% \newcommand{\setFinPrintemps}[2]% {% \setcounter{dayPrintempsFin}{#1}% \setcounter{monthPrintempsFin}{#2}% }% %%%% Définir le Lundi de Paques \newcommand{\setLundiPaques}[2]% {% \setcounter{dayPaques}{#1}% \setcounter{monthPaques}{#2}% }% %%%% Trouver les dates des jours fériés variables \newcommand{\setJoursFeries}{% \ifthenelse{\thedayPaques=0}{ \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 \u=int(mod(\theyear,100)); % rang de l'année \s=int(div(\c,4)); % siècle bissextile \t=int(mod(\c,4)); % siècle bissextile \p=int(div(\c+8,25)); % cycle de proemptose \q=int(div(\c-\p+1,3)); % proemptose \e=int(mod(19*\n+\c-\s-\q+15,30)); % épacte \b=int(div(\u,4)); % année bissextile \d=int(mod(\u,4)); % année bissextile \LL=int(mod(2*\t+2*\b-\e-\d+32,7)); % lettre dominicale \h=int(div(\n+11*\e+22*\LL,451)); % correction \m=int(div(\e+\LL-7*\h+114,31)); % mois du dimanche de Pâques \j=int(mod(\e+\LL-7*\h+114,31)+1); % jour du dimanche de Pâques }% % Dimanche de Pâques \setcounter{day}{\j}% \setcounter{month}{\m}% % lundi de Pâques, immédiatement après le dimanche de Pâques. \nextday% \setcounter{dayPaques}{\theday}% \setcounter{monthPaques}{\themonth}% }{} % Jeudi de l'ascension = 38 jours après le lundi de Pâques \foreach \jour in {1,...,38}{\nextday}% \setcounter{dayAscension}{\theday}% \setcounter{monthAscension}{\themonth}% % Vendredi, pont de l'ascension \nextday% \setcounter{dayAscensionPont}{\theday}% % Lundi de Pentecôte = 10 jours après le vendredi de l'ascension \foreach \jour in {1,...,10}{\nextday}% \setcounter{dayPentecote}{\theday}% \setcounter{monthPentecote}{\themonth}% % Remettre la date au jour de la rentrée \setcounter{day}{\thelundiRentree}% \setcounter{month}{\themonthRentree}% \setcounter{year}{\theyearRentree}% }% %%%% Définir le début et la fin du DNB \newcommand{\setDNB}[3]% {% \setcounter{dayDNBDebut}{#1}% \setcounter{dayDNBFin}{#2}% \setcounter{monthDNB}{#3}% }% %%%% Définir le début et la fin du Bac \newcommand{\setBac}[3]% {% \setcounter{dayBacDebut}{#1}% \setcounter{dayBacFin}{#2}% \setcounter{monthBac}{#3}% }% %%%% Définir le jour du Bac Philo \newcommand{\setBacPhilo}[2]% {% \setcounter{dayBacPhilo}{#1}% \setcounter{monthBacPhilo}{#2}% }% %%%% Définir le jour du Bac Français \newcommand{\setBacFrancais}[2]% {% \setcounter{dayBacFrancais}{#1}% \setcounter{monthBacFrancais}{#2}% }% %%%%%%% Définir le début et la fin du Grand Oral \newcommand{\setGO}[3]% {% \setcounter{dayGODebut}{#1}% \setcounter{dayGOFin}{#2}% \setcounter{monthGO}{#3}% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Liste des macros pour l'affichage de la semaine %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \Semaine : afficher la première ligne du tableau du cahier de texte (Lundi % day/month, Mardi day/month, etc) % %%%% Affichage de la semaine \newcommand{\Semaine}% {% & Lundi \getDate\nextday% & Mardi \getDate\nextday% & Mercredi \getDate\nextday% & Jeudi \getDate\nextday% & Vendredi \getDate\nextday% \ifthenelse{\boolean{Samedi}}{& Samedi\ \getDate}{}% }% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Liste des macros pour l'emploi du temps %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \setNombreSemaines[1] : définir le nombre N de semaines à afficher. % - \EmploiDuTemps[1] : afficher N fois le tableau #1, % - \sem[2] : Séances bimensuelle. % %%% Nombre de semaine à afficher % #1 est le nombre N de semaines à afficher. % Si \setSemaines n'est pas utilisé, alors N=36 semaines. \newcounter{nombreSemaines} \newcommand{\setNombreSemaines}[1]% {% \setcounter{nombreSemaines}{#1} }% %%%% Affichage de l'emploi du temps \newcommand{\EmploiDuTemps}[1]% {% \setJoursFeries% \ifthenelse{\thenombreSemaines=0}% {% Si \setNombreSemaines n'est pas défini, on affiche 36 semaines \tikzmath{\NbSem=int(36);}% }{% Sinon, on affiche le nombre de semaines demandées. \tikzmath{\NbSem=int(\thenombreSemaines);}% }% \foreach \n in {1,...,\NbSem}% {% {\Large\textsc{Semaine \no\n{} --- \getWeek}}% \vfil% \ifthenelse{\boolean{Samedi}}% { \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|X|} \hline% }{ \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|} \hline% } \Semaine \\ \hline% #1% \end{tabularx}% \vfil% \hfil \weekend \hfil% \newpage% }% }% % %%%% Séance bimestrielle % -\sem[2] affiche les seances bimestrielles: % Affiche #1 si le numéro de la semaine est impair. % Affiche #2 si le numéro de la semaine est pair. \newcommand{\sem}[2]% {% \pgfmathparse{int(mod(\n,2))}% \ifthenelse{\pgfmathresult=1}{#1}{#2}% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Liste des macros pour les tableaux des classes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - \TableauClasse : Afficher un tableau pour la classe. % - \Classe : Afficher 8 tableaux de classe. % - \ListeEleves : Insère la liste des élèves % %%%% Réaliser un tableau pour une classe % TableauClasse a deux arguments: % - #1 : la classe. % - #2 la liste des élèves, séparée par des virgules (sauf le dernier). \makeatletter \newcommand{\TableauClasse}[2]{% \def\tabledata{}% reset \tabledata \foreach[count=\n] \NomPrenom in {#2}{% build table data from #1 \protected@xappto\tabledata{{\tiny\n. \NomPrenom} & & & & & & & & & & & & & & & & & & & & \\} }% \rowcolors[\hline]{2}{lightgray}{white}% \begin{tabularx}{\linewidth}{|l|*{20}{X|}}% {\Large\strut #1} & & & & & & & & & & & & & & & & & & & & \\ \tabledata% \end{tabularx}% }% \makeatother % %%%% Réaliser les tableaux de classe. % \Classe a 3 arguments: % - #1 : la classe % - #2 : le nombre de fois qu'on voit la classe par semaine % - #3 : la liste des élèves % Il y a 20 colonnes par tableaux. Il faut à peu près 2 tableaux pour faire 36 % semaines Le nombre de tableaux est donc deux fois le nombre de fois qu'on voit % les élèves par semaine. \newcommand{\Classe}[3]{% \immediate\write\outputstream{\string \subsection*{#1}}% \immediate\write\outputstream{\string \begin{enumerate}}% % Écrire les noms des élèves dans le bon fichier \foreach \i in {#3}{% \immediate\write\outputstream{\string\item\space \i}% }% \immediate\write\outputstream{\string \end{enumerate}}% \begin{center}% \tikzmath{\NbTableaux=2*#2;}% \foreach \i in {1,...,\NbTableaux}% {% \TableauClasse{#1}{#3} \\[.5cm]% }% \end{center}% \newpage% }% % %%%% Liste des élèves % \ListeEleves a 1 argument : % Si #1 est défini, alors il insère la liste des élèves % Sinon, il va créer un fichier ListeEleves.tex qui contient la liste des % élèves puis insère le fichier (compiler deux fois, comme \tableofcontents). \newcommand{\ListeEleves}[1]{% \ifthenelse{\equal{#1}{}}{% % S'il n'y a pas de fichier défini, on insère ListeEleves.tex \IfFileExists{ListeEleves.tex}{\input{ListeEleves.tex}}{}% }{ % Sinon, on utilise le fichier #1 (s'il existe) \IfFileExists{#1}{\input{#1}}{}% } % Stocker le nom des élèves dans un fichier externe. \newwrite\outputstream% \immediate\openout\outputstream=ListeEleves.tex% }% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Divers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Pas d'indentation des paragraphes \setlength{\parindent}{0pt} % % Fin du package. \endinput