diff options
Diffstat (limited to 'macros/latex/contrib/cahierprof/cahierprof.sty')
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof.sty | 424 |
1 files changed, 275 insertions, 149 deletions
diff --git a/macros/latex/contrib/cahierprof/cahierprof.sty b/macros/latex/contrib/cahierprof/cahierprof.sty index 59850eef8f..ad0469ff25 100644 --- a/macros/latex/contrib/cahierprof/cahierprof.sty +++ b/macros/latex/contrib/cahierprof/cahierprof.sty @@ -1,8 +1,8 @@ %% Informations générales -%% Dernière modification le 2023-07-12 at 08:23 +%% Dernière modification le 2023-08-10 at 16:16 \NeedsTeXFormat{LaTeX2e}[1999/01/01] \ProvidesPackage{cahierprof} - [2023-07-12 v0.91 Les commandes pour le cahier Professeur] + [2023/08/10 v0.92 Les commandes pour le cahier Professeur] % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Options du package commande @@ -13,13 +13,12 @@ % Chargement des extensions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{geometry} -\RequirePackage[table]{xcolor} \RequirePackage{tabularx} +\RequirePackage{colortbl} \RequirePackage{tikz} \usetikzlibrary{math} \usetikzlibrary{calc} \RequirePackage[babel=true,kerning=true]{microtype} -\RequirePackage{lscape} \RequirePackage{ifthen} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -30,6 +29,11 @@ \newcounter{month} \newcounter{year} % +% Compteurs pour la rentrée +\newcounter{lundiRentree} +\newcounter{monthRentree} +\newcounter{yearRentree} +% % Compteurs pour les vacances scolaires % Toussaint \newcounter{dayToussaint} @@ -65,55 +69,15 @@ \newcounter{frimonth} \newcounter{friyear} % -% Gestion des années bissextiles. -\newcounter{FinFevrier}% -% 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}% - }% - }% -}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Nouvelles macros +% Liste des macros pour le calendrier. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Liste des macros définies: % - \nextday : pour passer au jour d'après % - \weekend : pour passer les week-ends ou les vacances scolaires % - \getdate : afficher la date au format day/month/year -% - \getWeek : afficher la semaine au format -% Du lundi Day Month Year au Vendredi Day Month Year -% - \Semaine : afficher la première ligne du tableau du cahier de texte (Lundi -% day/month, Mardi day/month, etc) -% - EmploiDuTemps[1] : afficher l'emploi du temps prof. #1 : l'emploi du temps, -% au format tableau avec une colonne par jour. -% - \sem[2] : Cours 1 semaine sur 2. Affiche le contenu de #2 si la semaine #1 -% est paire (0) ou impaire (1). -% - \TableauClasse[2] : Afficher un tableau pour la classe. #1: le nom de la -% classe. #2: la liste des élèves séparées par des virgules. -% - \Classe[2] : Afficher 8 tableaux de classe. #1: le nom de la classe. #2: la -% liste des élèves. -% - \ListeEleves : créer un fichier ListeEleves.tex qui contient la liste des -% élèves puis insère le fichier (compiler deux fois, comme \tableofcontents). +% - \getWeek : afficher la semaine au format % -% Passer au jour d'après +%%%% Passer au jour d'après \newcommand{\nextday}% {% % Les mois à 30 jours : Avril, Juin, Septembre, Novembre @@ -141,36 +105,34 @@ \stepcounter{day}% }% }% -% -% Gestions des vacances et week-end +%%%% Gestions des vacances et week-end \newcommand{\weekend}{ % Vacances de Toussaint \ifthenelse{ \theday=\thedayToussaint \and \themonth=\themonthToussaint} { - \setcounter{day}{\thedayToussaintFin} - \setcounter{month}{\themonthToussaintFin} + % 15 jours de vacances, bien mérités ! + \foreach \jour in {1,...,16}{\nextday} Vacances de la Toussaint }{ % Vacances de Noël \ifthenelse{ \theday=\thedayNoel \and \themonth=\themonthNoel} { - \setcounter{day}{\thedayNoelFin} - \setcounter{month}{\themonthNoelFin} - \stepcounter{year} + % 15 jours de vacances, bien mérités ! + \foreach \jour in {1,...,16}{\nextday}% Vacances de Noël }{ % Vacances d'Hiver \ifthenelse{ \theday=\thedayHiver \and \themonth=\themonthHiver} { - \setcounter{day}{\thedayHiverFin} - \setcounter{month}{\themonthHiverFin} + % 15 jours de vacances, bien mérités ! + \foreach \jour in {1,...,16}{\nextday}% Vacances d'hiver }{ % Vacances de Printemps \ifthenelse{ \theday=\thedayPrintemps \and \themonth=\themonthPrintemps} { - \setcounter{day}{\thedayPrintempsFin} - \setcounter{month}{\themonthPrintempsFin} + % 15 jours de vacances, bien mérités ! + \foreach \jour in {1,...,16}{\nextday}% Vacances de printemps }{ % sinon c'est juste un week-end @@ -180,8 +142,7 @@ }% }% } -% -% Obtenir la date +%%%% Obtenir la date \newcommand{\getDate}{% % On affiche la date \theday/\themonth/\theyear% @@ -212,11 +173,11 @@ % Noël, le 25 décembre \or\(\theday=25 \and \themonth=12\)% }{ - \hfil $\star$Ferié$\star$% + \cellcolor[gray]{.9} \hfil $\star$Ferié$\star$% }{}% }% % -% Affichage de la semaine.% +%%%% Affichage de la semaine. \newcommand{\getWeek}{% \setcounter{friday}{\theday}% \setcounter{frimonth}{\themonth}% @@ -239,7 +200,7 @@ % Lundi 30 - Mar 31, Mer 1, Jeu 2, Ven 3% \ifthenelse{\theday=30}{\setcounter{friday}{3}}{}% % Lundi 29 - Mar 30, Mer 31, Jeu 1, Ven 2% - \ifthenelse{\theday=29}{\setcounter{friday}{3}}{}% + \ifthenelse{\theday=29}{\setcounter{friday}{2}}{}% % Lundi 28 - Mar 29, Mer 30, Jeu 31, Ven 1% \ifthenelse{\theday=28}{\setcounter{friday}{1}}{}% }% @@ -339,111 +300,276 @@ \thefriyear }% % -% Affichage de la semaine -\newcommand{\Semaine} -{ - & Lundi \getDate\nextday - & Mardi \getDate\nextday - & Mercredi \getDate\nextday - & Jeudi \getDate\nextday - & Vendredi \getDate\nextday -} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Liste des macros pour les jours spéciaux +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% - \setLundiRentree : définir le lundi de rentrée au format DD-MM-YYYY +% - \setDebutToussaint : définir le début (samedi) des vacances de Toussaint +% - \setDebutNoel : définir le début (samedi) des vacances de Noel +% - \setDebutHiver : définir le début (samedi) des vacances d'hiver +% - \setDebutPrintemps : définir le début (samedi) des vacances de Printemps +% - \setLundiPaques : définir le lundi de Paques au format DD-MM-YYYY +% - \setJoursFeries : définir les dates de l'ascension, du pont de +% l'ascension et de la Pentecôte à partir de la date du lundi de Pâques. +% +%%%% Définir le lundi de la rentrée +% \setLundiRentree a 3 arguments : +% - #1 Le jourde 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} + \stepcounter{year} + \newcounter{FinFevrier}% + % 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 +% Les commandes \set*Vacances* ont 2 arguments : +% - #1 Le jourde 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 le Lundi de Paques +\newcommand{\setLundiPaques}[2]% +{% + \setcounter{dayPaques}{#1}% + \setcounter{monthPaques}{#2}% +}% +%%%% Trouver les dates des jours fériés variables +\newcommand{\setJoursFeries}{% + % Si \setLundiPaques n'est pas utilisé (valable jusqu'en 2040)... + \ifthenelse{\equal{\thedayPaques}{0}}% + {% + \setcounter{year}{\theyearRentree}% + \stepcounter{year}% + \ifthenelse{\equal{\theyear}{2024}}{\setcounter{dayPaques}{1}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2025}}{\setcounter{dayPaques}{21}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2026}}{\setcounter{dayPaques}{6}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2027}}{\setcounter{dayPaques}{29}\setcounter{monthPaques}{3}}{} + \ifthenelse{\equal{\theyear}{2028}}{\setcounter{dayPaques}{17}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2029}}{\setcounter{dayPaques}{2}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2030}}{\setcounter{dayPaques}{22}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2031}}{\setcounter{dayPaques}{14}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2032}}{\setcounter{dayPaques}{29}\setcounter{monthPaques}{3}}{} + \ifthenelse{\equal{\theyear}{2033}}{\setcounter{dayPaques}{18}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2034}}{\setcounter{dayPaques}{10}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2035}}{\setcounter{dayPaques}{26}\setcounter{monthPaques}{3}}{} + \ifthenelse{\equal{\theyear}{2036}}{\setcounter{dayPaques}{14}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2037}}{\setcounter{dayPaques}{6}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2038}}{\setcounter{dayPaques}{26}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2039}}{\setcounter{dayPaques}{11}\setcounter{monthPaques}{4}}{} + \ifthenelse{\equal{\theyear}{2040}}{\setcounter{dayPaques}{2}\setcounter{monthPaques}{4}}{} + \setcounter{year}{\theyearRentree}% + }{} + % On fixe la date au lundi de Pâques + \setcounter{day}{\thedayPaques}% + \setcounter{month}{\themonthPaques}% + % Jeudi de l'ascension = 38 jours après le lundi de Paques + \foreach \jour in {1,...,38}{\nextday}% + \setcounter{dayAscension}{\theday}% + \setcounter{monthAscension}{\themonth}% + % Vendredi, pont de l'ascension + \nextday% + \setcounter{dayAscensionPont}{\theday}% + % Lundi de Pentecote = 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}% +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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% +}% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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]% -{ - \foreach \n in {1,...,37} - { - {\Large\textsc{Semaine \no\n{} --- \getWeek}} - \vfil - \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|} \hline - \Semaine \\ \hline - #1 - \end{tabularx} - \vfil - \hfil \weekend \hfil - \newpage +{% + \setJoursFeries% + \ifthenelse{\equal{\thenombreSemaines}{0}}% + {% + \tikzmath{\NbSem=int(36);}% + }{% + \tikzmath{\NbSem=int(\thenombreSemaines);}% + }% + \foreach \n in {1,...,\NbSem}% + {% + {\Large\textsc{Semaine \no\n{} --- \getWeek}}% + \vfil% + \begin{tabularx}{\linewidth}{|c||X|X|X|X|X|} \hline% + \Semaine \\ \hline% + #1% + \end{tabularx}% + \vfil% + \hfil \weekend \hfil% + \newpage% }% }% % -% Cours 1 semaine sur 2 -% La commande \sem a deux arguments: -% - #1 pour le cours en semaine impaire. -% - #2 pour le cours en semaine paire. +%%%% Séance bimestrielle +% Affiche #1 si le numéro de la semaine est impair. +% Affiche #2 si le numéro de la semaine est pair. \newcommand{\sem}[2]% -{ - \pgfmathparse{int(mod(\n,2))} - \ifthenelse{\pgfmathresult=1}{#1}{#2} +{% + \pgfmathparse{int(mod(\n,2))}% + \ifthenelse{\pgfmathresult=1}{#1}{#2}% }% -% Réaliser le tableau pour une classe -% En argument: +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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). -\newcommand{\TableauClasse}[2] -{ - \begin{tikzpicture} +\newcommand{\TableauClasse}[2]% +{% + \begin{tikzpicture}% % En tête et nom de la classe. - \tikzmath{\largeurLigne=18; \largeurNom=3.5;\largeurColonne=\largeurLigne-\largeurNom;} - \draw[fill=gray!50] (0,-.5) rectangle (\largeurLigne,.5); - \draw ({\largeurNom/2},0) node{\Large #1}; - \draw[shift={(\largeurNom,-.5)}] (0,0) grid[xstep=\largeurColonne/20] - ++(\largeurColonne,1); - \foreach[count=\n] \NomPrenom in {#2} - { + \tikzmath{\largeurLigne=18; \largeurNom=3.5;\largeurColonne=\largeurLigne-\largeurNom;}% + \draw[fill=gray!50] (0,-.5) rectangle (\largeurLigne,.5);% + \draw ({\largeurNom/2},0) node{\Large #1};% + \draw[shift={(\largeurNom,-.5)}] (0,0) grid[xstep=\largeurColonne/20] % + ++(\largeurColonne,1);% + \foreach[count=\n] \NomPrenom in {#2}% + {% % Griser une ligne sur 2 (les lignes paires) - \pgfmathparse{int(mod(\n,2))} - \ifnum0=\pgfmathresult\relax - \fill[gray!25] (0,{-.5*\n}) rectangle ++(\largeurLigne,-.5); - \fi + \pgfmathparse{int(mod(\n,2))}% + \ifnum0=\pgfmathresult\relax% + \fill[gray!25] (0,{-.5*\n}) rectangle ++(\largeurLigne,-.5);% + \fi% % Ecrire le numéro de l'élève et son nom - \draw (0,{-.5*\n}) node[text width=3.5cm,below right] - {\tiny \n. \NomPrenom} rectangle ++(\largeurNom,-.5); - \draw[shift={(\largeurNom,-.5*\n)}] (0,0) grid[xstep=14.5/20,ystep=.5] - (\largeurColonne,-.5); - } - \end{tikzpicture} + \draw (0,{-.5*\n}) node[text width=3.5cm,below right]% + {\tiny \n. \NomPrenom} rectangle ++(\largeurNom,-.5);% + \draw[shift={(\largeurNom,-.5*\n)}] (0,0) grid[xstep=14.5/20,ystep=.5]% + (\largeurColonne,-.5);% + }% + \end{tikzpicture}% }% -% -% Réaliser les tableaux de classe. -% \TableauClasse a 3 arguments: +%%%% 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 ~2 tableaux pour faire 37 semaines -%% Le nombre de tableaux est donc deux fois le nombre de fois qu'on voit les -%% élèves par semaine. -% -% -\newcommand{\Classe}[3] -{ - \immediate\write\outputstream{#1} - \immediate\write\outputstream{\string \begin{enumerate}} +% Il y a 20 colonnes par tableaux. Il faut à peu près 2 tableaux pour faire 36 +% semaines Le nombre de tableaux est donc deux fois le nombre de fois qu'on voit +% les élèves par semaine. +\newcommand{\Classe}[3]% +{% + \immediate\write\outputstream{#1}% + \immediate\write\outputstream{\string \begin{enumerate}}% % Ecrire les noms des élèves dans le bon fichier - \foreach \i in {#3} - { - \immediate\write\outputstream{\string\item\space \i} - } - \immediate\write\outputstream{\string \end{enumerate}} - \begin{center} - \tikzmath{\NbTableaux=2*#2;} - \foreach \i in {1,...,\NbTableaux} - { - \TableauClasse{#1}{#3} \\[.50cm] - } - \end{center} -} - -% Liste des élèves -\newcommand{\ListeEleves} -{ + \foreach \i in {#3}% + {% + \immediate\write\outputstream{\string\item\space \i}% + }% + \immediate\write\outputstream{\string \end{enumerate}}% + \begin{center}% + \tikzmath{\NbTableaux=2*#2;}% + \foreach \i in {1,...,\NbTableaux}% + {% + \TableauClasse{#1}{#3} \\[.50cm]% + }% + \end{center}% + \newpage% +}% +% +%%%% Liste des élèves +% \ListeEleves va créer un fichier ListeEleves.tex qui contient la liste des +% élèves puis insère le fichier (compiler deux fois, comme \tableofcontents). +\newcommand{\ListeEleves}% +{% %insère le fichier ListeEleves.tex s'il existe - \IfFileExists{ListeEleves.tex}{ - \input{ListeEleves.tex} - }{ - % Else : do nothing. - } + \IfFileExists{ListeEleves.tex}{% + \input{ListeEleves.tex}% + }{% + % Else : do nothing.% + }% % Stocker le nom des élèves dans un fichier externe. - \newwrite\outputstream + \newwrite\outputstream% \immediate\openout\outputstream=ListeEleves.tex -} +}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Divers |