\documentclass[a4paper,french,10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{commandes}
\usepackage{tcolorbox}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage{minted}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% En tête du document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Les marges de mon document.
\geometry{margin=1.2cm,head=0.6cm,headsep=10pt,foot=.6cm}

\title{
  cahierprof.sty\\
  Un cahier de textes pour les professeurs en \LaTeX{}
}
\author{
  Raphaël Giromini\\
  \texttt{raphael.giromini -- at -- gmail.com}
}
\date{Version 0.92 -- 10 août 2023}

\setminted{frame=single,linenos,numbersep=6pt}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Début du document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle

\section*{Résumé}
\noindent
Le package \texttt{cahierprof} permet de créer un cahier de texte du professeur,
constitué de deux é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 absences et/ou les
    notes).
\end{itemize}


\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 \mintinline{latex}|\setNombreSemaines| pour
    fixer le nombre de semaine à afficher.\\
    Si cette commande n'est pas utilisée, 36 semaines sont affichées par défaut.
  \item Création de la commandes \mintinline{latex}|\setRentree| pour configurer
    le lundi de la rentrée scolaire.
  \item Création des commandes \mintinline{latex}|\setDebut|\texttt{*}, où
    \texttt{*} correspond à \texttt{Toussaint}, \texttt{Noel}, \texttt{Hiver} ou
    \texttt{Printemps} et gestion automatique de la date de la fin des petites
    vacances.
  \item Création de la commande \mintinline{latex}|\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âque est gérée
    automatiquement.
\end{itemize}


\begin{center}
  \begin{minipage}{.8\linewidth}
    \begin{tcolorbox}[colback=white, colframe=green!75!black]
      \tableofcontents
    \end{tcolorbox}
  \end{minipage}
\end{center}


\section{
  Calendrier des semaines de cours -- 
  commande \texttt{\textbackslash{}EmploiDuTemps}
}
Pour créer un calendrier scolaire hebdomadaire; il faut définir en préambule la
date du premier lundi de l'année scolaire, avec la commande 
\mintinline{latex}|\setLundiRentree\{JJ\}\{MM\}\{YYYY\}|, où \texttt{JJ} est
le quantième du mois; \texttt{MM} est le mois et \texttt{YYYY} est l'année.
\begin{minted}{latex}
% Le lundi de la semaine de la rentrée est le 4 septembre 2023
\setLundiRentree{4}{9}{2023}
\end{minted}

La commande \mintinline{latex}|\EmploiDuTemps| va permettre de de créer le
tableau de la semaine. Cette commande a un seul argument qui contient la
description d'une semaine type (sous la forme d'un \texttt{tabularx}) comme dans
l'exemple ci-dessous:
\begin{minted}{latex}
\EmploiDuTemps{
  %     & Lundi & Mardi & Mercr.    & Jeudi & Vend. \\
  8h    &       & 1G    &           & 1G    &       \\ [1.5cm] \cline{1-2}\cline{4-6}
  9h    &       &       & 1STMG     & 1STMG &       \\ [1.5cm] \hline
  10h   & 1G    & 2nde  & 1G        &       &       \\ [1.5cm] \hline
  11h   &       &       & 2nde A.P. &       & 1G    \\ [1.5cm] \hline\hline
  13h30 &       & 1G    &           &       & 2nde  \\ [1.5cm] \cline{1-5}
  14h30 &       &       & 1G (A/B)  &       &       \\ [1.5cm] \hline
  15h30 &       &       & 2 euro    &       &       \\ [1.5cm] \hline
  16h30 &       &       &           &       &       \\ [1.5cm] \hline
}
\end{minted}
Cette commande va générer 36 semaines de cours à compter du premier lundi de
l'année scolaire.

Pour afficher un nombre différent de semaines, il faut passer dans le préambule
la commande \mintinline{latex}|\setNombreSemaines{N}|, où \texttt{N} est le
nombre entier de semaines.
\begin{minted}{latex}
% On ne veut que 10 semaines de cours ! 
\setNombreSemaines{10}
\end{minted}

\subsection{Séance bimestrielles -- commande \texttt{\textbackslash{}sem}}

Certaines séances sont bimestriels (tous les 15 jours), suivant la parité de la
semaine. Pour cela il existe la commande \mintinline{latex}|\sem| qui prend
deux arguments: la séance en semaine impair, puis la séance en semaine pair.

\begin{minted}{latex}
% L'aide personnalisée en seconde n'a lieu que les semaines impaires
\sem{2nde (A.P.)}{}
% L'aide personnalisée en première est divisée en deux groupes bimestiels. 
1G A.P. (Groupe~\sem{A}{B})
\end{minted}

\subsection{Gestion des vacances scolaires}

Le package \texttt{cahierprof} permet de gérer les vacances scolaires
Les vacances scolaires (de Toussaint, de Noel, d'hiver et de printemps). Chacune
de ces petites vacances dure 15 jours. Selon les zones (et les années) il faut
définir en préambule le premier samedi de chaque vacances.

\begin{minted}{latex}
% Début de chaque vacances scolaire pour l'année en cours (le samedi).
\setDebutToussaint{21}{10}
\setDebutNoel{23}{12}
\setDebutHiver{10}{2}
\setDebutPrintemps{6}{4}
\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: 1er janvier, lundi de Pâques, 1er mai, 8 mai,
Ascension, lundi de Pentecôte, 14 juillet, Assomption (15 août), Toussaint, 11
novembre et 25 décembre. Pour ces jours, La date sera sur fond gris et la
mention $\star$Ferié$\star$ sera ajoutée après la date.

La date du lundi de Pâques est variable chaque l'année, de même pour le jeudi de
l'ascension et le lundi de Pentecôte. L'ascension a lieu 38 jours après le lundi
de Pâques. Par défaut, le vendredi de l'ascension est considéré comme férié. Le
lundi de Pentecôte a lieu 10 jours après le vendredi de l'ascension.

Dans ce package, la date du lundi de Pâques est définie (jusqu'à l'année
2040) par celle du calendrier grégorien occidental (la date utilisée par
l'éducation nationale). Cependant, si l'on souhaite entrer une autre date, on
peut utiliser dans le préambule la commande
\mintinline{latex}|\setLundiPaques{JJ}{MM}|, où \texttt{JJ} est le jour
et \texttt{MM} est le mois du lundi de Pâques.\\
Dans tous les cas, les dates de l'ascension et de la Pentecôte sont
automatiquement calculées.

\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 -- commande
\texttt{\textbackslash{}Classe}}

La commande \mintinline{latex}|\Classe| permet de générer des tableaux
d'appels des classes. Cette commande prend trois arguments:
\begin{itemize}
  \item le nom de la classe;
  \item le nombre de fois que l'on voit les élèves dans la semaine;
  \item la liste des élèves séparés par des virgules.
\end{itemize}
Par exemple:
\begin{minted}{latex}
% La classe de seconde a 3 séances dans la semaine 
\Classe{Seconde}{4}{
  Élève Seconde 1,
  Élève Seconde 2,
  Élève Seconde 3,
  Élève Seconde 4,
  Élève Seconde 5
}
% La classe de 1e STMG a 2 séances dans la semaine 
\Classe{1 STMG}{2}{
  Élève STMG 1,
  Élève STMG 2,
  Élève STMG 3,
  Élève STMG 4,
  Élève STMG 5
}
\end{minted}

\subsection{Liste des élèves}

La commande \mintinline{latex}|\ListeEleves| va va créer un fichier
\texttt{ListeEleves.tex} avec la liste (numérotés) de l'ensemble des élèves
réparti par classe, puis insérer dans le cahier de texte cette liste (penser à
compiler deux fois).

% \begin{minted}{latex}
% % Liste des élèves, sauvée dans le fichier ListeEleves.tex,
% % créée à partir des \Classe{}{}{}. Penser à compiler deux fois.
% \ListeEleves
% \end{minted}

\section{Un exemple complet}

\inputminted{latex}{cahierprof-exemple.tex}

\end{document}
