diff options
Diffstat (limited to 'macros/latex')
-rw-r--r-- | macros/latex/contrib/cahierprof/ListeEleves.tex | 42 | ||||
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof-doc.pdf | bin | 289363 -> 282687 bytes | |||
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof-doc.tex | 424 | ||||
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof-exemple.pdf | bin | 158682 -> 220954 bytes | |||
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof-exemple.tex | 152 | ||||
-rw-r--r-- | macros/latex/contrib/cahierprof/cahierprof.sty | 424 | ||||
-rw-r--r-- | macros/latex/contrib/couleurs-fr/README.md | 7 | ||||
-rw-r--r-- | macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.pdf | bin | 0 -> 82639 bytes | |||
-rw-r--r-- | macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.tex | 315 | ||||
-rw-r--r-- | macros/latex/contrib/couleurs-fr/tex/couleurs-fr.sty | 181 | ||||
-rw-r--r-- | macros/latex/contrib/eolang/eolang.dtx | 148 | ||||
-rw-r--r-- | macros/latex/contrib/eolang/eolang.pdf | bin | 1888881 -> 1931964 bytes |
12 files changed, 1088 insertions, 605 deletions
diff --git a/macros/latex/contrib/cahierprof/ListeEleves.tex b/macros/latex/contrib/cahierprof/ListeEleves.tex index 6b8ecd25eb..cc5c2adffc 100644 --- a/macros/latex/contrib/cahierprof/ListeEleves.tex +++ b/macros/latex/contrib/cahierprof/ListeEleves.tex @@ -1,32 +1,32 @@ Seconde \begin{enumerate} -\item Élève 1 -\item Élève 2 -\item Élève 3 -\item Élève 4 -\item Élève 5 +\item Élève Seconde 1 +\item Élève Seconde 2 +\item Élève Seconde 3 +\item Élève Seconde 4 +\item Élève Seconde 5 \end{enumerate} -1 G +Première G \begin{enumerate} -\item Élève 1 -\item Élève 2 -\item Élève 3 -\item Élève 4 -\item Élève 5 +\item Élève Première 1 +\item Élève Première 2 +\item Élève Première 3 +\item Élève Première 4 +\item Élève Première 5 \end{enumerate} 1 STMG \begin{enumerate} -\item Élève 1 -\item Élève 2 -\item Élève 3 -\item Élève 4 -\item Élève 5 +\item Élève STMG 1 +\item Élève STMG 2 +\item Élève STMG 3 +\item Élève STMG 4 +\item Élève STMG 5 \end{enumerate} 2 euro \begin{enumerate} -\item Élève 1 -\item Élève 2 -\item Élève 3 -\item Élève 4 -\item Élève 5 +\item Élève Euro 1 +\item Élève Euro 2 +\item Élève Euro 3 +\item Élève Euro 4 +\item Élève Euro 5 \end{enumerate} diff --git a/macros/latex/contrib/cahierprof/cahierprof-doc.pdf b/macros/latex/contrib/cahierprof/cahierprof-doc.pdf Binary files differindex 187febaf51..e3b174888d 100644 --- a/macros/latex/contrib/cahierprof/cahierprof-doc.pdf +++ b/macros/latex/contrib/cahierprof/cahierprof-doc.pdf diff --git a/macros/latex/contrib/cahierprof/cahierprof-doc.tex b/macros/latex/contrib/cahierprof/cahierprof-doc.tex index 6f180bdeee..338ddb0b24 100644 --- a/macros/latex/contrib/cahierprof/cahierprof-doc.tex +++ b/macros/latex/contrib/cahierprof/cahierprof-doc.tex @@ -2,7 +2,8 @@ \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{commandes} -% \usepackage{cahierprof} +\usepackage{tcolorbox} +\usepackage[framemethod=TikZ]{mdframed} \usepackage{minted} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -14,154 +15,167 @@ \title{ cahierprof.sty\\ - Pour créer un cahier du professeur en LaTeX + Un cahier de textes pour les professeurs en \LaTeX{} } \author{ Raphaël Giromini\\ \texttt{raphael.giromini -- at -- gmail.com} } -\date{Version 0.91 -- 12 juillet 2023} +\date{Version 0.92 -- 10 août 2023} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setminted{frame=single,linenos,numbersep=6pt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Début du document %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \maketitle -% \begin{resume} -Le package \texttt{cahierprof} permet de créer un cahier du professeur, +\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 une liste des semaines de cours, à raison d'une semaine par page; - \item un tableau pour les absences et/ou les notes des élèves. + \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} -% \end{resume} -\tableofcontents -\section{Liste des semaines de cours -- commande -\texttt{\textbackslash{}EmploiDuTemps}} +\begin{center} + \begin{minipage}{.8\linewidth} + \begin{tcolorbox}[colback=white, colframe=green!75!black] + \tableofcontents + \end{tcolorbox} + \end{minipage} +\end{center} -Le package \texttt{cahierprof} va créer un calendrier; il faut donc commencer -par entrer la date du premier lundi de l'année scolaire, sous la forme: -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} -% Le premier lundi de la rentrée scolaire -\setcounter{year}{2023} -\setcounter{month}{9} -\setcounter{day}{4} + +\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 \texttt{\textbackslash{}EmploiDuTemps} va permettre de de créer le +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, comme dans l'exemple ci-dessous: -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} +description d'une semaine type (sous la forme d'un \texttt{tabularx}) comme dans +l'exemple ci-dessous: +\begin{minted}{latex} \EmploiDuTemps{ - % & Lundi & Mardi & Mercredi & Jeudi & Vendredi \\ - 8h & & 1G & & & \\ [1.5cm] \hline - 9h & & 2nde & 1STMG & & 1STMG \\ [1.5cm] \hline - 10h & & & 1G & & \\ [1.5cm] \hline - 11h & & & 2nde (A.P.) & & 1G \\ [1.5cm] \hline\hline - 13h30 & & 1G & 2nde & & 2nde \\ [1.5cm] \cline{1-5} - 14h30 & & & Term/1ere & & \\ [1.5cm] \hline - 15h30 & & 1 euro & 2 euro & & T euro \\ [1.5cm] \hline - 16h30 & & & & & \\ [1.5cm] \hline + % & 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 37 semaines de cours à compter du premier lundi de +Cette commande va générer 36 semaines de cours à compter du premier lundi de l'année scolaire. -\subsection{Cours bimestriels -- commande \texttt{\textbackslash{}sem}} +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}} -Certains cours sont bimestriels (tous les 15 jours), suivant la parité de la -semaine. Pour cela il existe la commande \texttt{\textbackslash{}sem} qui prend -deux arguments: le cours en semaine impair, puis le cours en semaine pair. +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}[frame=single,linenos,numbersep=6pt]{latex} -% L'aide personnalisé en seconde n'a lieu que les semaines paires - \sem{}{2nde (A.P.)} -% En semaine impaire, il y a un cours de terminale et en semaine paire, il y a -% un cours de première - \sem{Term}{1ere} +\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). Pour -l'instant la gestion est un peu pénible. Il faut ajouter \emph{dans le -préambule} les dates de début et de fin de chaque vacances. - -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} -% Toussaint -\setcounter{dayToussaint}{21} -\setcounter{monthToussaint}{10} -\setcounter{dayToussaintFin}{6} -\setcounter{monthToussaintFin}{11} -% Noel -\setcounter{dayNoel}{23} -\setcounter{monthNoel}{12} -\setcounter{dayNoelFin}{8} -\setcounter{monthNoelFin}{1} -% Hiver -\setcounter{dayHiver}{10} -\setcounter{monthHiver}{2} -\setcounter{dayHiverFin}{26} -\setcounter{monthHiverFin}{2} -% Printemps -\setcounter{dayPrintemps}{6} -\setcounter{monthPrintemps}{4} -\setcounter{dayPrintempsFin}{22} -\setcounter{monthPrintempsFin}{4} +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} -Pour les jours fériés officiels, le package \texttt{cahierprof} va ajouter la -mention $\star$Ferié$\star$ à côté de la date. - -Les jours fériés officiels de l'année sont: -\begin{itemize} - \item Le jour de l'an (1er janvier) - \item Fête du travail (le 1er mai) - \item La Victoire 1945 (le 8 mai) - \item Le jeudi de l'ascension (date variable, 40 jours après le dimanche de - Pâques, entre le 30 avril et le 3 juin).\\ - Cette date est variable et doit être entrée à la main par les commandes - \texttt{thedayAscension} et \texttt{themonthAscension}.\\ - Le pont de l'ascension (le vendredi suivant le jeudi de l'ascension) est - également considéré comme férié) - \item Le lundi de pentecôte, 50 jours après le dimanche de Pâques, entre le - 10 mai et le 13 juin).\\ - Cette date est variable et doit être entrée à la main par les commandes - \texttt{thedayPentecote} et \texttt{themonthPentecote}. - \item La fête nationale (14 juillet) - \item L'assomption (15 août) - \item La toussaint (1er novembre) - \item L'armistice 1914-1918 (11 novembre) - \item Noël (25 décembre) -\end{itemize} - -Les jours fériés à date fixe sont gérés automatiquement, pour les jours fériés à -date variable, il faut donc ajouter dans le préambule: -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} -% Lundi de Paques -\setcounter{dayPaques}{1} -\setcounter{monthPaques}{4} -% Ascension -\setcounter{dayAscension}{9} -\setcounter{dayAscensionPont}{10} -\setcounter{monthAscension}{5} -% Lundi de Pentecote -\setcounter{dayPentecote}{20} -\setcounter{monthPentecote}{5} +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 note des classe -- commande +\section{Tableau d'appel et de notes des classes -- commande \texttt{\textbackslash{}Classe}} -La commande \texttt{\textbackslash{}Classe} permet de générer des tableaux +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; @@ -169,182 +183,40 @@ d'appels des classes. Cette commande prend trois arguments: \item la liste des élèves séparés par des virgules. \end{itemize} Par exemple: - -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} -% La classe de seconde est vue 4 fois dans la semaine: -\Classe{2nde}{4}{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - ... +\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 est vue 2 fois dans la semaine: +% La classe de 1e STMG a 2 séances dans la semaine \Classe{1 STMG}{2}{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - ... + Élève STMG 1, + Élève STMG 2, + Élève STMG 3, + Élève STMG 4, + Élève STMG 5 } \end{minted} -La liste des élèves va créer un fichier \texttt{ListeEleves.tex} avec la liste -(numérotés) de l'ensemble des élèves, réparti par classe. La commande -\texttt{\textbackslash{}ListeElèves} permet d'insérer dans le cahier de texte -cette liste (penser à compiler deux fois). - -\section{Un exemple complet} - -\begin{minted}[frame=single,linenos,numbersep=6pt]{latex} -\documentclass[a4paper,french,10pt]{article} -\usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} -\usepackage{babel} -\usepackage{multicol} -\usepackage{cahierprof} +\subsection{Liste des élèves} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% En tête du document -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +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). -%%% Les marges de mon document. -\geometry{margin=1.2cm,head=0.6cm,headsep=10pt,foot=.6cm} -% 1er lundi de l'année scolaire (pour le cahier de texte) -\setcounter{year}{2023} -\setcounter{month}{9} -\setcounter{day}{4} - -% Vacances Scolaire pour l'année en cours. -% Toussaint -\setcounter{dayToussaint}{21} -\setcounter{monthToussaint}{10} -\setcounter{dayToussaintFin}{6} -\setcounter{monthToussaintFin}{11} -% Noel -\setcounter{dayNoel}{23} -\setcounter{monthNoel}{12} -\setcounter{dayNoelFin}{8} -\setcounter{monthNoelFin}{1} -% Hiver -\setcounter{dayHiver}{10} -\setcounter{monthHiver}{2} -\setcounter{dayHiverFin}{26} -\setcounter{monthHiverFin}{2} -% Printemps -\setcounter{dayPrintemps}{6} -\setcounter{monthPrintemps}{4} -\setcounter{dayPrintempsFin}{22} -\setcounter{monthPrintempsFin}{4} -% Lundi de Paques -\setcounter{dayPaques}{1} -\setcounter{monthPaques}{4} -% Ascension -\setcounter{dayAscension}{9} -\setcounter{dayAscensionPont}{10} -\setcounter{monthAscension}{5} -% Lundi de Pentecote -\setcounter{dayPentecote}{20} -\setcounter{monthPentecote}{5} - -\title{\scshape Cahier du Professeur} -\author{Un-e excellent-e professeur-e} -\date{2023-2024} +% \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} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Début du document -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{document} - -%%Page de Garde -\maketitle -\thispagestyle{empty} - -\begin{center} - {\Large - \textsc{Cahier de texte} - } -\end{center} - -\newpage - -% Emploi du temps au format tableau (tabularx). - -\begin{landscape} - \EmploiDuTemps - { -% & Lundi & Mardi & Mercredi & Jeudi & Vendredi \\ - 8h & & 1G & & & \\ [1.5cm] \hline - 9h & & 2nde & 1STMG & & 1STMG \\ [1.5cm] \hline - 10h & & & 1G & & \\ [1.5cm] \hline - 11h & & & \sem{2nde (A.P.)}{} & & 1G \\ [1.5cm] \hline\hline - 13h30 & & 1G & 2nde & & 2nde \\ [1.5cm] \cline{1-5} - 14h30 & & & \sem{Term}{1ere} & & \\ [1.5cm] \hline - 15h30 & & 1 euro & 2 euro & & T euro \\ [1.5cm] \hline - 16h30 & & & & & \\ [1.5cm] \hline - } -\end{landscape} - -\begin{center} - {\Large - \textsc{Appel des classes} - } -\end{center} - -% Liste des élèves, sauvée dans le fichier ListeEleves.tex, créée à partir des -% \Classe{}{}{}. -% Penser à compiler deux fois. - -\ListeEleves - -\newpage - -\tiny - -% Tableau de classe -% \Classe{Nom de la classe}{Nombre de séances dans la semaine}{Liste des élèves -% séparés par une virgule} - -\Classe{Seconde}{3} -{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 -} - -\newpage - -\Classe{1 G}{4} -{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 -} +\section{Un exemple complet} -\newpage +\inputminted{latex}{cahierprof-exemple.tex} -\Classe{1 STMG}{2} -{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 -} -\newpage - -\Classe{2 euro}{1} -{ - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 -} -\end{document} -\end{minted} \end{document} diff --git a/macros/latex/contrib/cahierprof/cahierprof-exemple.pdf b/macros/latex/contrib/cahierprof/cahierprof-exemple.pdf Binary files differindex 3401a99650..24d975ecdf 100644 --- a/macros/latex/contrib/cahierprof/cahierprof-exemple.pdf +++ b/macros/latex/contrib/cahierprof/cahierprof-exemple.pdf diff --git a/macros/latex/contrib/cahierprof/cahierprof-exemple.tex b/macros/latex/contrib/cahierprof/cahierprof-exemple.tex index 1aa7941855..f1f80b8f01 100644 --- a/macros/latex/contrib/cahierprof/cahierprof-exemple.tex +++ b/macros/latex/contrib/cahierprof/cahierprof-exemple.tex @@ -2,148 +2,106 @@ \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{babel} -\usepackage{multicol} +\usepackage{lscape} \usepackage{cahierprof} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% En tête du document +% Préambule %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Les marges de mon document. \geometry{margin=1.2cm,head=0.6cm,headsep=10pt,foot=.6cm} + +\title{ + cahierprof-exemple.tex\\ + Utilisation du 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} + % 1er lundi de l'année scolaire (pour le cahier de texte) -\setcounter{year}{2023} -\setcounter{month}{9} -\setcounter{day}{4} - -% Vacances Scolaire pour l'année en cours. -% Toussaint -\setcounter{dayToussaint}{21} -\setcounter{monthToussaint}{10} -\setcounter{dayToussaintFin}{6} -\setcounter{monthToussaintFin}{11} -% Noel -\setcounter{dayNoel}{23} -\setcounter{monthNoel}{12} -\setcounter{dayNoelFin}{8} -\setcounter{monthNoelFin}{1} -% Hiver -\setcounter{dayHiver}{10} -\setcounter{monthHiver}{2} -\setcounter{dayHiverFin}{26} -\setcounter{monthHiverFin}{2} -% Printemps -\setcounter{dayPrintemps}{6} -\setcounter{monthPrintemps}{4} -\setcounter{dayPrintempsFin}{22} -\setcounter{monthPrintempsFin}{4} -% Lundi de Paques -\setcounter{dayPaques}{1} -\setcounter{monthPaques}{4} -% Ascension -\setcounter{dayAscension}{9} -\setcounter{dayAscensionPont}{10} -\setcounter{monthAscension}{5} -% Lundi de Pentecote -\setcounter{dayPentecote}{20} -\setcounter{monthPentecote}{5} - -\title{\scshape Cahier du Professeur} -\author{Un-e excellent-e professeur-e} -\date{2023-2024} +\setLundiRentree{4}{9}{2023} +% 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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Début du document %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} -%%Page de Garde \maketitle -\thispagestyle{empty} -\begin{center} - {\Large - \textsc{Cahier de texte} - } -\end{center} +\section{Calendrier des semaines de cours} -\newpage +Le calendrier débute sur la page suivante au format paysage. % Emploi du temps au format tableau (tabularx). - \begin{landscape} - \EmploiDuTemps - { -% & Lundi & Mardi & Mercredi & Jeudi & Vendredi \\ - 8h & & 1G & & & \\ [1.5cm] \hline - 9h & & 2nde & 1STMG & & 1STMG \\ [1.5cm] \hline - 10h & & & 1G & & \\ [1.5cm] \hline - 11h & & & \sem{2nde (A.P.)}{} & & 1G \\ [1.5cm] \hline\hline - 13h30 & & 1G & 2nde & & 2nde \\ [1.5cm] \cline{1-5} - 14h30 & & & \sem{Term}{1ere} & & \\ [1.5cm] \hline - 15h30 & & 1 euro & 2 euro & & T euro \\ [1.5cm] \hline - 16h30 & & & & & \\ [1.5cm] \hline + \EmploiDuTemps{ + % & Lundi & Mardi & Merc. & 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 & & & \sem{2nde A.P.}{} & & 1G \\ [1.5cm] \hline\hline + 13h30 & & 1G & & & 2nde \\ [1.5cm] \cline{1-5} + 14h30 & & & 1G (Groupe~\sem{A}{B}) & & \\ [1.5cm] \hline + 15h30 & & & 2 euro & & \\ [1.5cm] \hline + 16h30 & & & & & \\ [1.5cm] \hline } \end{landscape} -\begin{center} - {\Large - \textsc{Appel des classes} - } -\end{center} +\section{Liste des élèves et tableau d'appel et de notes des classes} -% Liste des élèves, sauvée dans le fichier ListeEleves.tex, créée à partir des -% \Classe{}{}{}. -% Penser à compiler deux fois. +\subsection{Liste des élèves} \ListeEleves \newpage -\tiny +\subsection{Tableaux des classes} -% Tableau de classe % \Classe{Nom de la classe}{Nombre de séances dans la semaine}{Liste des élèves % séparés par une virgule} \Classe{Seconde}{3} { - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 + Élève Seconde 1, + Élève Seconde 2, + Élève Seconde 3, + Élève Seconde 4, + Élève Seconde 5 } -\newpage - -\Classe{1 G}{4} +\Classe{Première G}{6} { - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 + É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 } -\newpage - \Classe{1 STMG}{2} { - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 + Élève STMG 1, + Élève STMG 2, + Élève STMG 3, + Élève STMG 4, + Élève STMG 5 } -\newpage \Classe{2 euro}{1} { - Élève 1, - Élève 2, - Élève 3, - Élève 4, - Élève 5 + Élève Euro 1, + Élève Euro 2, + Élève Euro 3, + Élève Euro 4, + Élève Euro 5 } \end{document} 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 diff --git a/macros/latex/contrib/couleurs-fr/README.md b/macros/latex/contrib/couleurs-fr/README.md new file mode 100644 index 0000000000..b3ca47dc02 --- /dev/null +++ b/macros/latex/contrib/couleurs-fr/README.md @@ -0,0 +1,7 @@ +couleurs-fr is a package french names of xcolor schemes. +--------------------------------------------------------------------------- +couleurs-fr est un package avec les versions francisées de couleurs xcolor. +--------------------------------------------------------------------------- +Author : Cédric Pierquet +email : cpierquet@outlook.fr +Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file diff --git a/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.pdf b/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.pdf Binary files differnew file mode 100644 index 0000000000..e7c0ea0e29 --- /dev/null +++ b/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.pdf diff --git a/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.tex b/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.tex new file mode 100644 index 0000000000..7be6cb854e --- /dev/null +++ b/macros/latex/contrib/couleurs-fr/doc/couleurs-fr-doc.tex @@ -0,0 +1,315 @@ +% !TeX TXS-program:compile = txs:///arara +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} +% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') + +\documentclass[french,11pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{DejaVuSerif} +\usepackage[scale=1.125]{inconsolata} +\usepackage{amssymb} +\usepackage{couleurs-fr} +\usepackage{tikz} +\usepackage{soul} +\usepackage{codehigh} +\usepackage{multicol} +\usepackage{fontawesome5} +\usepackage{fancyvrb} +\usepackage{fancyhdr} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\lfoot{\sffamily\small [couleurs-fr]} +\cfoot{\sffamily\small - \thepage{} -} +\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} +\usepackage{hologo} +\providecommand\tikzlogo{Ti\textit{k}Z} +\providecommand\TeXLive{\TeX{}Live\xspace} +\providecommand\PSTricks{\textsf{PSTricks}\xspace} +\let\pstricks\PSTricks +\let\TikZ\tikzlogo + +\usepackage{hyperref} +\urlstyle{same} +\hypersetup{pdfborder=0 0 0} +\usepackage[margin=1.5cm]{geometry} +\setlength{\parindent}{0pt} + +\def\TPversion{0.1.0} +\def\TPdate{09 août 2023} + +\usepackage{tcolorbox} + +\NewDocumentCommand\MontreCouleur{ O{black} m }{% + \begin{tikzpicture} + \draw[thick,draw=black,fill=#2] (0,0) rectangle++ (2,0.65) ; + \draw (2.025,0.325) node[right,font=\large\ttfamily,text=#1] {#2} ; + \end{tikzpicture}% + \par +} + +\sethlcolor{GrisLeger!25} +\NewDocumentCommand\MontreCode{ m }{% + \hl{\vphantom{\texttt{pf}}\texttt{#1}}% +} + +\usepackage{babel} + +\begin{document} + +\pagestyle{fancy} + +\thispagestyle{empty} + +\begin{center} + \begin{minipage}{0.75\linewidth} + \begin{tcolorbox}[colframe=yellow,colback=yellow!15] + \begin{center} + \begin{tabular}{c} + {\Huge \texttt{couleurs-fr}}\\ + \\ + {\LARGE Des couleurs de \texttt{xcolor},} \\ + {\LARGE en version francisées.} \\ + \end{tabular} + + \medskip + + {\small \texttt{Version \TPversion{} -- \TPdate}} + \end{center} + \end{tcolorbox} +\end{minipage} +\end{center} + +\vspace*{2.5mm} + +\begin{center} + \begin{tabular}{c} + \texttt{Cédric Pierquet}\\ + {\ttfamily c pierquet -- at -- outlook . fr}\\ + \texttt{\url{https://github.com/cpierquet/couleurs-fr}} +\end{tabular} +\end{center} + +\vspace{2.5mm} + +\phantomsection + +\hypertarget{matoc}{} + +\tableofcontents + +\section{Le package couleurs-fr} + +\subsection{Idée} + +L'idée est de proposer des couleurs au noms francisés, indépendamment des options \MontreCode{[table]}, \MontreCode{[svgnames]} ou \MontreCode{[dvipsnames]} du package \MontreCode{xcolor} (\url{https://ctan.org/pkg/xcolor}). + +\smallskip + +Cela permet notamment d'éviter des incompatibilités du type \MontreCode{clash error for} puisque le seul package chargé par \MontreCode{couleurs-fr} est \MontreCode{xcolor} sans option ! + +\subsection{Chargement} + +Le package se charge dans le préambule, via \MontreCode{\textbackslash usepackage\{couleurs-fr\}}. + +Si \texttt{xcolor} est amené à être chargé avec des options particulières, il faudra le charger \textbf{avant} \MontreCode{couleurs-fr}. + +\begin{codehigh}[language=latex/latex3,style/main=BleuAlice,style/code=BleuAlice] +%chargement sans xcolor explicite +\documentclass{article} +... +\usepackage{couleurs-fr} +... +\end{codehigh} + +\begin{codehigh}[language=latex/latex3,style/main=BleuAlice,style/code=BleuAlice] +%chargement avec xcolor explicite +\documentclass{article} +... +\usepackage[options]{xcolor} +... +\usepackage{couleurs-fr} +... +\end{codehigh} + +\pagebreak + +\section{Historique} + +\verb|v0.1.0|~:~~~~Version initiale + +\subsection{Les couleurs issues de la gamme \og svgnames \fg} + +\begin{multicols}{3} + \MontreCouleur{Amande} + \MontreCouleur{AmandineFonce} + \MontreCouleur{AmandineLeger} + \MontreCouleur{AmandinePale} + \MontreCouleur{Amandine} + \MontreCouleur{Argent} + \MontreCouleur{Azur} + \MontreCouleur{BeigeFonce} + \MontreCouleur{Beige} + \MontreCouleur{Bisque} + \MontreCouleur{BlancAntique} + \MontreCouleur{BlancFantome} + \MontreCouleur{BlancFloral} + \MontreCouleur{BlancNajavo} + \MontreCouleur{Blanc} + \MontreCouleur{BleuAcierClair} + \MontreCouleur{BleuAcier} + \MontreCouleur{BleuAlice} + \MontreCouleur{BleuArdoiseFonce} + \MontreCouleur{BleuArdoiseLeger} + \MontreCouleur{BleuArdoise} + \MontreCouleur{BleuCadet} + \MontreCouleur{BleuCielIntense} + \MontreCouleur{BleuCielLeger} + \MontreCouleur{BleuCiel} + \MontreCouleur{BleuDodger} + \MontreCouleur{BleuFonce} + \MontreCouleur{BleuInter} + \MontreCouleur{BleuLeger} + \MontreCouleur{BleuMarineInter} + \MontreCouleur{BleuNavy} + \MontreCouleur{BleuNuit} + \MontreCouleur{BleuPoudre} + \MontreCouleur{BleuRoyal} + \MontreCouleur{Bleuet} + \MontreCouleur{Bleu} + \MontreCouleur{Ble} + \MontreCouleur{Bois} + \MontreCouleur{Brique} + \MontreCouleur{Bronze} + \MontreCouleur{BrunIntense} + \MontreCouleur{BrunLeger} + \MontreCouleur{Brun} + \MontreCouleur{Caramel} + \MontreCouleur{Chardon} + \MontreCouleur{Chartreuse} + \MontreCouleur{CitronVertFonce} + \MontreCouleur{CitronVert} + \MontreCouleur{Coquillage} + \MontreCouleur{CorailLeger} + \MontreCouleur{Corail} + \MontreCouleur{Cramoisi} + \MontreCouleur{CremeMenthe} + \MontreCouleur{CyanFonce} + \MontreCouleur{CyanLeger} + \MontreCouleur{Cyan} + \MontreCouleur{EauMarine} + \MontreCouleur{Eau} + \MontreCouleur{Fumee} + \MontreCouleur{Fuschia} + \MontreCouleur{GrisArdoiseFonce} + \MontreCouleur{GrisArdoiseLeger} + \MontreCouleur{GrisArdoise} + \MontreCouleur{GrisAttenue} + \MontreCouleur{GrisEtain} + \MontreCouleur{GrisFonce} + \MontreCouleur{GrisLeger} + \MontreCouleur{Gris} + \MontreCouleur{Indigo} + \MontreCouleur{Ivoire} + \MontreCouleur{JauneAmandineLeger} + \MontreCouleur{JauneLeger} + \MontreCouleur{JauneVert} + \MontreCouleur{Jaune} + \MontreCouleur{KakiFonce} + \MontreCouleur{Kaki} + \MontreCouleur{LavandeLeger} + \MontreCouleur{Lavande} + \MontreCouleur{Lin} + \MontreCouleur{MagentaFonce} + \MontreCouleur{Magenta} + \MontreCouleur{Mais} + \MontreCouleur{MarronRosy} + \MontreCouleur{MarronSandy} + \MontreCouleur{Marron} + \MontreCouleur{Miellat} + \MontreCouleur{Mocassin} + \MontreCouleur{Neige} + \MontreCouleur{Noir} + \MontreCouleur{Olivatre} + \MontreCouleur{Olive} + \MontreCouleur{OrangeFonce} + \MontreCouleur{Orange} + \MontreCouleur{OrchideeFonce} + \MontreCouleur{OrchideeInter} + \MontreCouleur{Orchidee} + \MontreCouleur{Or} + \MontreCouleur{Papaye} + \MontreCouleur{Perou} + \MontreCouleur{Prune} + \MontreCouleur{RoseFonce} + \MontreCouleur{RoseIntense} + \MontreCouleur{RoseLeger} + \MontreCouleur{RoseMisty} + \MontreCouleur{Rose} + \MontreCouleur{RougeFonce} + \MontreCouleur{RougeIndien} + \MontreCouleur{RougeOrange} + \MontreCouleur{RougeVioletInter} + \MontreCouleur{RougeVioletPale} + \MontreCouleur{RougeViolet} + \MontreCouleur{Rouge} + \MontreCouleur{Sarcelle} + \MontreCouleur{SaumonFonce} + \MontreCouleur{SaumonLeger} + \MontreCouleur{Saumon} + \MontreCouleur{Sienne} + \MontreCouleur{Tomate} + \MontreCouleur{TurquoiseFonce} + \MontreCouleur{TurquoiseInter} + \MontreCouleur{TurquoisePale} + \MontreCouleur{Turquoise} + \MontreCouleur{VertFonce} + \MontreCouleur{VertForet} + \MontreCouleur{VertJaune} + \MontreCouleur{VertLeger} + \MontreCouleur{VertMerFonce} + \MontreCouleur{VertMerInter} + \MontreCouleur{VertMerLeger} + \MontreCouleur{VertMer} + \MontreCouleur{VertOliveFonce} + \MontreCouleur{VertPale} + \MontreCouleur{VertPelouse} + \MontreCouleur{VertPrintanierInter} + \MontreCouleur{VertPrintanier} + \MontreCouleur{Vert} + \MontreCouleur{VieilleDentelle} + \MontreCouleur{VioletFonce} + \MontreCouleur{VioletInter} + \MontreCouleur{Violet} + \MontreCouleur{Violette} +\end{multicols} + +\subsection{Les couleurs issues de la gamme \og dvipsnames \fg} + +\begin{multicols}{3} + \MontreCouleur{Abricot} + \MontreCouleur{Acajou} + \MontreCouleur{BleuCeruleen} + \MontreCouleur{BleuProcess} + \MontreCouleur{BrunJaune} + \MontreCouleur{Emeraude} + \MontreCouleur{Melon} + \MontreCouleur{Mure} + \MontreCouleur{OrangeBrule} + \MontreCouleur{OrangeRoughy} + \MontreCouleur{Peche} + \MontreCouleur{Pervenche} + \MontreCouleur{Pissenlit} + \MontreCouleur{Rhodamine} + \MontreCouleur{RoseCarmin} + \MontreCouleur{RougeBrique} + \MontreCouleur{RougeRubis} + \MontreCouleur{Sepia} + \MontreCouleur{VertBleu} + \MontreCouleur{VertJungle} + \MontreCouleur{VertPin} + \MontreCouleur{VioletBleu} + \MontreCouleur{VioletRouge} + \MontreCouleur{VioletRoyal} +\end{multicols} + +\end{document}
\ No newline at end of file diff --git a/macros/latex/contrib/couleurs-fr/tex/couleurs-fr.sty b/macros/latex/contrib/couleurs-fr/tex/couleurs-fr.sty new file mode 100644 index 0000000000..f08fbf9e24 --- /dev/null +++ b/macros/latex/contrib/couleurs-fr/tex/couleurs-fr.sty @@ -0,0 +1,181 @@ +% Author : C. Pierquet +% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{couleurs-fr}[2023/08/09 Version fr des couleurs svgnames/dvipsnames de xcolor] + +%====BASE +\RequirePackage{xcolor} + +%====SVGNAMES +\definecolor{Amande}{rgb}{1,.92,.804} +\definecolor{AmandineFonce}{rgb}{.72,.525,.044} +\definecolor{AmandineLeger}{rgb}{.933,.867,.51} +\definecolor{AmandinePale}{rgb}{.932,.91,.668} +\definecolor{Amandine}{rgb}{.855,.648,.125} +\definecolor{Argent}{rgb}{.752,.752,.752} +\definecolor{Azur}{rgb}{.94,1,1} +\definecolor{BeigeFonce}{rgb}{1,.855,.725} +\definecolor{Beige}{rgb}{.96,.96,.864} +\definecolor{Bisque}{rgb}{1,.894,.77} +\definecolor{BlancAntique}{rgb}{.98,.92,.844} +\definecolor{BlancFantome}{rgb}{.972,.972,1} +\definecolor{BlancFloral}{rgb}{1,.98,.94} +\definecolor{BlancNajavo}{rgb}{1,.87,.68} +\definecolor{Blanc}{rgb}{1,1,1} +\definecolor{BleuAcierClair}{rgb}{.69,.77,.87} +\definecolor{BleuAcier}{rgb}{.275,.51,.705} +\definecolor{BleuAlice}{rgb}{.94,.972,1} +\definecolor{BleuArdoiseFonce}{rgb}{.284,.24,.545} +\definecolor{BleuArdoiseInter}{rgb}{.484,.408,.932} +\definecolor{BleuArdoiseLeger}{rgb}{.518,.44,1} +\definecolor{BleuArdoise}{rgb}{.415,.352,.804} +\definecolor{BleuCadet}{rgb}{.372,.62,.628} +\definecolor{BleuCielIntense}{rgb}{0,.75,1} +\definecolor{BleuCielLeger}{rgb}{.53,.808,.98} +\definecolor{BleuCiel}{rgb}{.53,.808,.92} +\definecolor{BleuDodger}{rgb}{.116,.565,1} +\definecolor{BleuFonce}{rgb}{0,0,.545} +\definecolor{BleuInter}{rgb}{0,0,.804} +\definecolor{BleuLeger}{rgb}{.68,.848,.9} +\definecolor{BleuMarineInter}{rgb}{.4,.804,.668} +\definecolor{BleuNavy}{rgb}{0,0,.5} +\definecolor{BleuNuit}{rgb}{.098,.098,.44} +\definecolor{BleuPoudre}{rgb}{.69,.88,.9} +\definecolor{BleuRoyal}{rgb}{.255,.41,.884} +\definecolor{BleuViolet}{rgb}{.54,.17,.888} +\definecolor{Bleuet}{rgb}{.392,.585,.93} +\definecolor{Bleu}{rgb}{0,0,1} +\definecolor{Ble}{rgb}{.96,.87,.7} +\definecolor{Bois}{rgb}{.87,.72,.53} +\definecolor{Brique}{rgb}{.698,.132,.132} +\definecolor{Bronze}{rgb}{.824,.705,.55} +\definecolor{BrunIntense}{rgb}{.545,.27,.075} +\definecolor{BrunLeger}{rgb}{1,.92,.804} +\definecolor{Brun}{rgb}{.648,.165,.165} +\definecolor{Caramel}{rgb}{.824,.41,.116} +\definecolor{Chardon}{rgb}{.848,.75,.848} +\definecolor{Chartreuse}{rgb}{.498,1,0} +\definecolor{CitronVertFonce}{rgb}{.196,.804,.196} +\definecolor{CitronVert}{rgb}{0,1,0} +\definecolor{Coquillage}{rgb}{1,.96,.932} +\definecolor{CorailLeger}{rgb}{.94,.5,.5} +\definecolor{Corail}{rgb}{1,.498,.312} +\definecolor{Cramoisi}{rgb}{.864,.08,.235} +\definecolor{CremeMenthe}{rgb}{.96,1,.98} +\definecolor{CyanFonce}{rgb}{0,.545,.545} +\definecolor{CyanLeger}{rgb}{.88,1,1} +\definecolor{Cyan}{rgb}{0,1,1} +\definecolor{EauMarine}{rgb}{.498,1,.83} +\definecolor{Eau}{rgb}{0,1,1} +\definecolor{Fumee}{rgb}{.96,.96,.96} +\definecolor{Fuschia}{rgb}{1,0,1} +\definecolor{GrisArdoiseFonce}{rgb}{.185,.31,.31} +\definecolor{GrisArdoiseLeger}{rgb}{.468,.532,.6} +\definecolor{GrisArdoise}{rgb}{.44,.5,.565} +\definecolor{GrisAttenue}{rgb}{.41,.41,.41} +\definecolor{GrisEtain}{rgb}{.864,.864,.864} +\definecolor{GrisFonce}{rgb}{.664,.664,.664} +\definecolor{GrisLeger}{rgb}{.828,.828,.828} +\definecolor{Gris}{rgb}{.5,.5,.5} +\definecolor{Indigo}{rgb}{.294,0,.51} +\definecolor{Ivoire}{rgb}{1,1,.94} +\definecolor{JauneAmandineLeger}{rgb}{.98,.98,.824} +\definecolor{JauneLeger}{rgb}{1,.98,.804} +\definecolor{JauneVert}{rgb}{.68,1,.185} +\definecolor{Jaune}{rgb}{1,1,0} +\definecolor{KakiFonce}{rgb}{.74,.716,.42} +\definecolor{Kaki}{rgb}{.94,.9,.55} +\definecolor{LavandeLeger}{rgb}{1,.94,.96} +\definecolor{Lavande}{rgb}{.9,.9,.98} +\definecolor{Lin}{rgb}{.98,.94,.9} +\definecolor{MagentaFonce}{rgb}{.545,0,.545} +\definecolor{Magenta}{rgb}{1,0,1} +\definecolor{Mais}{rgb}{1,.972,.864} +\definecolor{MarronRosy}{rgb}{.736,.56,.56} +\definecolor{MarronSandy}{rgb}{.956,.644,.376} +\definecolor{Marron}{rgb}{.5,0,0} +\definecolor{Miellat}{rgb}{.94,1,.94} +\definecolor{Mocassin}{rgb}{1,.894,.71} +\definecolor{Neige}{rgb}{1,.98,.98} +\definecolor{Noir}{rgb}{0,0,0} +\definecolor{Olivatre}{rgb}{.42,.556,.136} +\definecolor{Olive}{rgb}{.5,.5,0} +\definecolor{OrangeFonce}{rgb}{1,.55,0} +\definecolor{Orange}{rgb}{1,.648,0} +\definecolor{OrchideeFonce}{rgb}{.6,.196,.8} +\definecolor{OrchideeInter}{rgb}{.73,.332,.828} +\definecolor{Orchidee}{rgb}{.855,.44,.84} +\definecolor{Or}{rgb}{1,.844,0} +\definecolor{Papaye}{rgb}{1,.936,.835} +\definecolor{Perou}{rgb}{.804,.52,.248} +\definecolor{Prune}{rgb}{.868,.628,.868} +\definecolor{RoseFonce}{rgb}{1,.41,.705} +\definecolor{RoseIntense}{rgb}{1,.08,.576} +\definecolor{RoseLeger}{rgb}{1,.712,.756} +\definecolor{RoseMisty}{rgb}{1,.894,.884} +\definecolor{Rose}{rgb}{1,.752,.796} +\definecolor{RougeFonce}{rgb}{.545,0,0} +\definecolor{RougeIndien}{rgb}{.804,.36,.36} +\definecolor{RougeOrange}{rgb}{1,.27,0} +\definecolor{RougeVioletInter}{rgb}{.78,.084,.52} +\definecolor{RougeVioletPale}{rgb}{.86,.44,.576} +\definecolor{RougeViolet}{rgb}{.816,.125,.565} +\definecolor{Rouge}{rgb}{1,0,0} +\definecolor{Sarcelle}{rgb}{0,.5,.5} +\definecolor{SaumonFonce}{rgb}{.912,.59,.48} +\definecolor{SaumonLeger}{rgb}{1,.628,.48} +\definecolor{Saumon}{rgb}{.98,.5,.448} +\definecolor{Sienne}{rgb}{.628,.32,.176} +\definecolor{Tomate}{rgb}{1,.39,.28} +\definecolor{TurquoiseFonce}{rgb}{0,.808,.82} +\definecolor{TurquoiseInter}{rgb}{.284,.82,.8} +\definecolor{TurquoisePale}{rgb}{.688,.932,.932} +\definecolor{Turquoise}{rgb}{.25,.88,.815} +\definecolor{VertFonce}{rgb}{0,.392,0} +\definecolor{VertForet}{rgb}{.132,.545,.132} +\definecolor{VertJaune}{rgb}{.604,.804,.196} +\definecolor{VertLeger}{rgb}{.565,.932,.565} +\definecolor{VertMerFonce}{rgb}{.56,.736,.56} +\definecolor{VertMerInter}{rgb}{.235,.7,.444} +\definecolor{VertMerLeger}{rgb}{.125,.698,.668} +\definecolor{VertMer}{rgb}{.18,.545,.34} +\definecolor{VertOliveFonce}{rgb}{.332,.42,.185} +\definecolor{VertPale}{rgb}{.596,.985,.596} +\definecolor{VertPelouse}{rgb}{.488,.99,0} +\definecolor{VertPrintanierInter}{rgb}{0,.98,.604} +\definecolor{VertPrintanier}{rgb}{0,1,.498} +\definecolor{Vert}{rgb}{0,.5,0} +\definecolor{VieilleDentelle}{rgb}{.992,.96,.9} +\definecolor{VioletFonce}{rgb}{.58,0,.828} +\definecolor{VioletInter}{rgb}{.576,.44,.86} +\definecolor{Violet}{rgb}{.5,0,.5} +\definecolor{Violette}{rgb}{.932,.51,.932} + +%====DVIPSNAMES +\definecolor{Abricot}{HTML}{FAB780} +\definecolor{Acajou}{HTML}{A9331F} +\definecolor{BleuCeruleen}{HTML}{00A3E3} +\definecolor{BleuProcess}{HTML}{00B0EF} +\definecolor{BrunJaune}{HTML}{973F05} +\definecolor{Emeraude}{HTML}{00A99D} +\definecolor{Melon}{HTML}{F79E7C} +\definecolor{Mure}{HTML}{A93B94} +\definecolor{OrangeBrule}{HTML}{F6911E} +\definecolor{OrangeRoughy}{HTML}{C04F16} +\definecolor{Peche}{HTML}{F79559} +\definecolor{Pervenche}{HTML}{7A77B8} +\definecolor{Pissenlit}{HTML}{FDBB43} +\definecolor{Rhodamine}{HTML}{EE549F} +\definecolor{RoseCarmin}{HTML}{F181B2} +\definecolor{RougeBrique}{HTML}{B6301C} +\definecolor{RougeRubis}{HTML}{ED027D} +\definecolor{Sepia}{HTML}{671600} +\definecolor{VertBleu}{HTML}{00B3b8} +\definecolor{VertJungle}{HTML}{00A99A} +\definecolor{VertPin}{HTML}{008A73} +\definecolor{VioletBleu}{HTML}{483A94} +\definecolor{VioletRouge}{HTML}{9F236C} +\definecolor{VioletRoyal}{HTML}{623E99} + +\endinput
\ No newline at end of file diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx index a2e4944689..32a617a083 100644 --- a/macros/latex/contrib/eolang/eolang.dtx +++ b/macros/latex/contrib/eolang/eolang.dtx @@ -50,7 +50,7 @@ %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{eolang} %<*package> -[2023-08-02 0.14.0 Formulas and Graphs for EO Programming Language] +[2023-08-10 0.15.0 Formulas and Graphs for EO Programming Language] %</package> %<*driver> \documentclass{ltxdoc} @@ -70,9 +70,9 @@ \CodelineIndex \RecordChanges \begin{document} - \DocInput{eolang.dtx} - \PrintChanges - \PrintIndex + \DocInput{eolang.dtx} + \PrintChanges + \PrintIndex \end{document} %</driver> % \fi @@ -228,7 +228,8 @@ % \item ``|xy:<v>,<r>,<d>|'' places this vertex in a position relative to the vertex ``|<v>|,'' % shifting it right by ``|<r>|'' and down by ``|<d>|'' centimetres; % \item ``|+:<v>|'' makes a copy of an existing vertex and all its kids; -% \item ``|edgeless|'' removes the border from the vertex. +% \item ``|edgeless|'' removes the border from the vertex; +% \item ``|style:{...}|'' adds this TikZ style to the vertex |\node|. % \end{itemize} % The following markers are supported for an edge: @@ -236,7 +237,8 @@ % \item ``|rho|'' places a backward snake arrow to the edge, % \item ``|bend:<angle>|'' bend it right by the amount of ``|<angle>|,'' % \item ``|a:<txt>|'' attaches label ``|<txt>|'' to it, -% \item ``|pi|'' makes it dotted, with $\pi$ label. +% \item ``|pi|'' makes it dotted, with $\pi$ label; +% \item ``|style:{...}|'' adds this TikZ style to the edge |\path|. % \end{itemize} % It is also possible to put transformation arrows to the graph, with the help of ``|v0=>v1|'' syntax. The arrow @@ -702,6 +704,24 @@ % \end{document} % \end{docshot} +% You can modify TikZ style yourself (make sure |style:| stays at the end of the line!), for example: +% \docshotOptions{firstline=6,lastline=12} +% \begin{docshot} +% \documentclass{article} +% \pagestyle{empty} +% \usepackage{eolang} +% \usetikzlibrary{fit} +% \begin{document} +% \begin{sodg} +% v0 +% v1 xy:v0,-2,1 style:font=\color{red} +% v2 xy:v0,2,1 +% v0->v1 style:line width=2pt +% v0->v2 style:draw=orange +% \end{sodg} +% \end{document} +% \end{docshot} + % \StopEventually{} % \section{Implementation} @@ -800,7 +820,7 @@ $macro = $ARGV[0]; open(my $fh, '<', $ARGV[1]); my $tex; { local $/; $tex = <$fh>; } -print "% This file is auto-generated by 0.14.0\n"; +print "% This file is auto-generated by 0.15.0\n"; print '% There are ', length($tex), ' chars in the input: ', $ARGV[1], "\n"; print '% ---', "\n"; @@ -817,17 +837,17 @@ $tex =~ s/(?<!\\)%.*\n/\n/g; $tex =~ s/^\s+|\s+$//g; my $splitting = $tex =~ /^\\begin\{split\}/; if ($splitting) { - print '% The manual splitting mode is ON since \begin{split} started the text' . "\n"; + print '% The manual splitting mode is ON since \begin{split} started the text' . "\n"; } my $indents = $tex =~ /\n +/g; my $gathered = (0 == $indents); if ($gathered) { if ($splitting) { - print '% The "gathered" is NOT used because of manual splitting' . "\n"; - $gathered = 0; - } else { - print '% The "gathered" is used since all lines are left-aligned' . "\n"; - } + print '% The "gathered" is NOT used because of manual splitting' . "\n"; + $gathered = 0; + } else { + print '% The "gathered" is used since all lines are left-aligned' . "\n"; + } } else { print '% The "gathered" is NOT used because ' . $indents . " lines are indented\n"; @@ -840,10 +860,10 @@ if (index($tex, '&&') >= 0) { print '% The "align" is used because of && seen in the text' . "\n"; } if ($macro ne 'phiq') { - if (not $splitting) { - $tex =~ s/\\\\\n/\n\n/g; - $tex =~ s/\\\n\s*//g; - } + if (not $splitting) { + $tex =~ s/\\\\\n/\n\n/g; + $tex =~ s/\\\n\s*//g; + } $tex =~ s/\n*(\\label\{[^\}]+\})\n*/\1/g; $tex =~ s/\n{3,}/\n\n/g; } @@ -854,22 +874,22 @@ sub trep { my $p = 0; for (; $p < length($s); $p++) { $c = substr($s, $p, 1); - if ($c eq '}') { - if ($open eq 0) { - last; - } - $open--; - } - if ($c eq '{') { - $open++; - } - } + if ($c eq '}') { + if ($open eq 0) { + last; + } + $open--; + } + if ($c eq '{') { + $open++; + } + } push(@texts, substr($s, 0, $p)); return '{TEXT' . (0+@texts - 1) . '}' . substr($s, $p + 1); } $tex =~ s/\\text\{(.+)/trep("$1")/ge; if (not $splitting) { - $tex =~ s/(?<![{&])&(?![&}])/\\sigma{}/g; + $tex =~ s/(?<![{&])&(?![&}])/\\sigma{}/g; } $tex =~ s/([^\\{a-z0-9]|^)QQ(?![a-z0-9])/\1\\dot{\\Phi{}}/g; $tex =~ s/([^\\{a-z0-9]|^)Q(?![a-z0-9])/\1\\Phi{}/g; @@ -883,15 +903,15 @@ $tex =~ s/([^^_]|^)([0-9]+|\*) (->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\space{}\3/xg; if ($macro ne 'phiq') { if (not $splitting) { - $tex =~ s/\\begin\{split\}\n/\\begin{split}&/g; - $tex =~ s/\n\s*\\end\{split\}/\\end{split}/g; - $tex =~ s/\n\n/\\\\&/g; - $tex =~ s/\n/\\phiEOL{}\n&/g; - $tex =~ s/\\\\$//g; - $tex =~ s/\\\\/\\\\\n/g; - $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g; - $tex =~ s/\s{2}/ \\quad{}/g; - $tex = '&' . $tex; + $tex =~ s/\\begin\{split\}\n/\\begin{split}&/g; + $tex =~ s/\n\s*\\end\{split\}/\\end{split}/g; + $tex =~ s/\n\n/\\\\&/g; + $tex =~ s/\n/\\phiEOL{}\n&/g; + $tex =~ s/\\\\$//g; + $tex =~ s/\\\\/\\\\\n/g; + $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g; + $tex =~ s/\s{2}/ \\quad{}/g; + $tex = '&' . $tex; } my $lead = '[^\s]+\s(?:->|:=|=|==)\s'; my @leads = $tex =~ /&${lead}/g; @@ -899,19 +919,19 @@ if ($macro ne 'phiq') { if (0+@leads == 0+@eols && 0+@eols > 1) { $tex =~ s/&(${lead})/\1&~/g; $gathered = 0; - print '% The "gathered" is NOT used because all ' . - (0+@eols) . ' lines are ' . (0+@leads) . " leads\n"; + print '% The "gathered" is NOT used because all ' . + (0+@eols) . ' lines are ' . (0+@leads) . " leads\n"; } } if ($macro ne 'phiq') { - sub strip_tabs { - my ($env, $tex) = @_; - $tex =~ s/&//g; - return "\\begin{$env}" . $tex . "\\end{$env}"; + sub strip_tabs { + my ($env, $tex) = @_; + $tex =~ s/&//g; + return "\\begin{$env}" . $tex . "\\end{$env}"; } foreach my $e (('matrix', 'cases')) { - $tex =~ s/\\begin\{(\Q$e\E\*?)\}(.+)\\end\{\Q$e\E\*?\}/strip_tabs($1, $2)/sge; - } + $tex =~ s/\\begin\{(\Q$e\E\*?)\}(.+)\\end\{\Q$e\E\*?\}/strip_tabs($1, $2)/sge; + } } $tex =~ s/\$/\\xi{}/g; $tex =~ s/(?<!\{)\^(?!\{)/\\rho{}/g; @@ -940,11 +960,11 @@ if ($macro eq 'phiq') { } else { print '\begin{', $macro, "}\n"; if (not($align)) { - if ($gathered) { - print '\begin{gathered}' . "\n"; - } elsif (not $splitting) { - print '\begin{split}' . "\n"; - } + if ($gathered) { + print '\begin{gathered}' . "\n"; + } elsif (not $splitting) { + print '\begin{split}' . "\n"; + } } } if ($gathered and not($align)) { @@ -956,11 +976,11 @@ if ($macro eq 'phiq') { print '$' if ($tex ne ''); } else { if (not($align)) { - if ($gathered) { - print "\n" . '\end{gathered}'; - } elsif (not $splitting) { - print "\n" . '\end{split}'; - } + if ($gathered) { + print "\n" . '\end{gathered}'; + } elsif (not $splitting) { + print "\n" . '\end{split}'; + } } print "\n" . '\end{' . $macro . '}'; } @@ -1025,7 +1045,7 @@ print '\endinput'; % \begin{macrocode} \RequirePackage{xstring} \makeatletter\newcommand\phiq[1]{% - \StrSubstitute{\detokenize{#1}}{'}{'"'"'}[\clean]% + \StrSubstitute{\detokenize{#1}}{'}{'"'"'}[\clean]% \iexec[log,trace,quiet,stdout=\eolang@tmpdir/\jobname/phiq.tex]{ /bin/echo '\clean'}% \def\hash{\eolang@mdfive @@ -1071,6 +1091,7 @@ print '\endinput'; % \changes{0.8.0}{2022/11/20}{The \texttt{tag} attribute is introduced for changing labels inside a vertex circle.} % \changes{0.12.1}{2023/03/01}{The bug is fixed related to the formatting of indexes of vertices.} % \changes{0.14.0}{2023/07/26}{The \texttt{edgeless} tag of a vertex removes the border of it.} +% \changes{0.15.0}{2023/08/210}{The \texttt{style} tag of vertices and edges.} % Then, we create a Perl script for |sodg| graphs processing using |VerbatimOut| from % \href{https://ctan.org/pkg/fancyvrb}{fancyvrb}: % \begin{macrocode} @@ -1133,6 +1154,9 @@ for (my $c = 0; $c < 0+@cmds; $c++) { $cmd =~ s/(?<!\\)%.*//g; my ($head, $tail) = split(/ /, $cmd, 2); my %opts = {}; + my ($body, $style) = split(/style:/, $tail, 2); + $opts{'style'} = $style; + $tail = $body; foreach my $p (split(/ /, $tail)) { my ($q, $t) = split(/:/, $p); $opts{$q} = $t; @@ -1150,7 +1174,7 @@ for (my $c = 0; $c < 0+@cmds; $c++) { if (exists $opts{'rho'} and not(exists $opts{'bend'})) { $draw = $draw . '<MB:,phi-rho>'; } - $draw = $draw . ']'; + $draw = $draw . ',' . $opts{'style'} . ']'; my ($from, $to) = split (/->/, $head); $draw = $draw . " (${from}) "; if (exists $opts{'bend'}) { @@ -1313,7 +1337,7 @@ for (my $c = 0; $c < 0+@cmds; $c++) { if (exists $opts{'edgeless'}) { print ',draw=none'; } - print ']'; + print ',' . $opts{'style'} . ']'; print ' (' . $head . ')'; print ' {'; if (exists $opts{'tag'}) { @@ -1321,9 +1345,9 @@ for (my $c = 0; $c < 0+@cmds; $c++) { if (index($t, '$') == -1) { $t = '$' . $t . '$'; } else { - $t = fmt($t); - } - print $t; + $t = fmt($t); + } + print $t; } else { print '$' . vertex($head) . '$'; } @@ -1512,7 +1536,7 @@ print '\endinput'; \makeatletter \NewExpandableDocumentCommand{\eoAnon}{O{ANONYMIZED}m}{% \ifdefined\eolang@anonymous% - \textcolor{orange}{#1}% + \textcolor{orange}{#1}% \else% #2% \fi% diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf Binary files differindex 34a9d5bea0..612b3eda53 100644 --- a/macros/latex/contrib/eolang/eolang.pdf +++ b/macros/latex/contrib/eolang/eolang.pdf |