From aebf6a3b57eda6e22a8e5fb93958edbf6ad1b551 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 7 Aug 2023 03:03:39 +0000 Subject: CTAN sync 202308070303 --- macros/latex/contrib/cahierprof/ListeEleves.tex | 32 ++ macros/latex/contrib/cahierprof/README.md | 17 + macros/latex/contrib/cahierprof/cahierprof-doc.pdf | Bin 0 -> 289363 bytes macros/latex/contrib/cahierprof/cahierprof-doc.tex | 350 ++++++++++++ .../contrib/cahierprof/cahierprof-exemple.pdf | Bin 0 -> 158682 bytes .../contrib/cahierprof/cahierprof-exemple.tex | 149 +++++ macros/latex/contrib/cahierprof/cahierprof.sty | 455 +++++++++++++++ .../contrib/profmaquette/doc/profmaquette-doc.pdf | Bin 169331 -> 177454 bytes .../contrib/profmaquette/doc/profmaquette-doc.tex | 304 ++++++---- .../contrib/profmaquette/latex/ProfMaquette.sty | 635 ++++++++++++++++----- 10 files changed, 1688 insertions(+), 254 deletions(-) create mode 100644 macros/latex/contrib/cahierprof/ListeEleves.tex create mode 100644 macros/latex/contrib/cahierprof/README.md create mode 100644 macros/latex/contrib/cahierprof/cahierprof-doc.pdf create mode 100644 macros/latex/contrib/cahierprof/cahierprof-doc.tex create mode 100644 macros/latex/contrib/cahierprof/cahierprof-exemple.pdf create mode 100644 macros/latex/contrib/cahierprof/cahierprof-exemple.tex create mode 100644 macros/latex/contrib/cahierprof/cahierprof.sty (limited to 'macros/latex/contrib') diff --git a/macros/latex/contrib/cahierprof/ListeEleves.tex b/macros/latex/contrib/cahierprof/ListeEleves.tex new file mode 100644 index 0000000000..6b8ecd25eb --- /dev/null +++ b/macros/latex/contrib/cahierprof/ListeEleves.tex @@ -0,0 +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 +\end{enumerate} +1 G +\begin{enumerate} +\item Élève 1 +\item Élève 2 +\item Élève 3 +\item Élève 4 +\item Élève 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 +\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 +\end{enumerate} diff --git a/macros/latex/contrib/cahierprof/README.md b/macros/latex/contrib/cahierprof/README.md new file mode 100644 index 0000000000..508f6c638c --- /dev/null +++ b/macros/latex/contrib/cahierprof/README.md @@ -0,0 +1,17 @@ +Vous êtes un enseignant en France ? +cahierprof vous aidera a réaliser un cahier de texte, c'est à dire +- un emploi du temps hedomadaire +- des tableaux d'absences/de notes pour chaque classe + +---------------- + +You are a french mathematics teacher ? +cahierprof helps you to make a textbook with : +- week schedule +- a grade book for each class + +--------------- + +Author : Raphael Giromini +email : raphael.giromini@gmail.com +Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt diff --git a/macros/latex/contrib/cahierprof/cahierprof-doc.pdf b/macros/latex/contrib/cahierprof/cahierprof-doc.pdf new file mode 100644 index 0000000000..187febaf51 Binary files /dev/null and b/macros/latex/contrib/cahierprof/cahierprof-doc.pdf differ diff --git a/macros/latex/contrib/cahierprof/cahierprof-doc.tex b/macros/latex/contrib/cahierprof/cahierprof-doc.tex new file mode 100644 index 0000000000..6f180bdeee --- /dev/null +++ b/macros/latex/contrib/cahierprof/cahierprof-doc.tex @@ -0,0 +1,350 @@ +\documentclass[a4paper,french,10pt]{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{commandes} +% \usepackage{cahierprof} +\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\\ + Pour créer un cahier du professeur en LaTeX +} +\author{ + Raphaël Giromini\\ + \texttt{raphael.giromini -- at -- gmail.com} +} +\date{Version 0.91 -- 12 juillet 2023} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Début du document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\maketitle + +% \begin{resume} +Le package \texttt{cahierprof} permet de créer un cahier 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. +\end{itemize} +% \end{resume} + +\tableofcontents + +\section{Liste des semaines de cours -- commande +\texttt{\textbackslash{}EmploiDuTemps}} + +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} +\end{minted} + +La commande \texttt{\textbackslash{}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} +\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 +} +\end{minted} +Cette commande va générer 37 semaines de cours à compter du premier lundi de +l'année scolaire. + +\subsection{Cours bimestriels -- 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. + +\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} +\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} +\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} +\end{minted} + +\section{Tableau d'appel et de note des classe -- commande +\texttt{\textbackslash{}Classe}} + +La commande \texttt{\textbackslash{}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}[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, + ... +} +% La classe de 1e STMG est vue 2 fois dans la semaine: +\Classe{1 STMG}{2}{ + Élève 1, + Élève 2, + Élève 3, + Élève 4, + ... +} +\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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% En tête du document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% 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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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 +} + +\newpage + +\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 new file mode 100644 index 0000000000..3401a99650 Binary files /dev/null and b/macros/latex/contrib/cahierprof/cahierprof-exemple.pdf differ diff --git a/macros/latex/contrib/cahierprof/cahierprof-exemple.tex b/macros/latex/contrib/cahierprof/cahierprof-exemple.tex new file mode 100644 index 0000000000..1aa7941855 --- /dev/null +++ b/macros/latex/contrib/cahierprof/cahierprof-exemple.tex @@ -0,0 +1,149 @@ +\documentclass[a4paper,french,10pt]{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{babel} +\usepackage{multicol} +\usepackage{cahierprof} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% En tête du document +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% 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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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 +} + +\newpage + +\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} diff --git a/macros/latex/contrib/cahierprof/cahierprof.sty b/macros/latex/contrib/cahierprof/cahierprof.sty new file mode 100644 index 0000000000..59850eef8f --- /dev/null +++ b/macros/latex/contrib/cahierprof/cahierprof.sty @@ -0,0 +1,455 @@ +%% Informations générales +%% Dernière modification le 2023-07-12 at 08:23 +\NeedsTeXFormat{LaTeX2e}[1999/01/01] +\ProvidesPackage{cahierprof} + [2023-07-12 v0.91 Les commandes pour le cahier Professeur] +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Options du package commande +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Pas d'options +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Chargement des extensions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{geometry} +\RequirePackage[table]{xcolor} +\RequirePackage{tabularx} +\RequirePackage{tikz} + \usetikzlibrary{math} + \usetikzlibrary{calc} +\RequirePackage[babel=true,kerning=true]{microtype} +\RequirePackage{lscape} +\RequirePackage{ifthen} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Définitions des compteurs +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Compteurs day/month/year pour la date courante +\newcounter{day} +\newcounter{month} +\newcounter{year} +% +% Compteurs pour les vacances scolaires +% Toussaint +\newcounter{dayToussaint} +\newcounter{monthToussaint} +\newcounter{dayToussaintFin} +\newcounter{monthToussaintFin} +% Noel +\newcounter{dayNoel} +\newcounter{monthNoel} +\newcounter{dayNoelFin} +\newcounter{monthNoelFin} +% Hiver +\newcounter{dayHiver} +\newcounter{monthHiver} +\newcounter{dayHiverFin} +\newcounter{monthHiverFin} +% Printemps +\newcounter{dayPrintemps} +\newcounter{monthPrintemps} +\newcounter{dayPrintempsFin} +\newcounter{monthPrintempsFin} +% Jours Feriés +\newcounter{dayPaques} +\newcounter{monthPaques} +\newcounter{dayAscension} +\newcounter{dayAscensionPont} +\newcounter{monthAscension} +\newcounter{dayPentecote} +\newcounter{monthPentecote} +% +% Définition de nouveaux compteurs pour Vendredi Jour/Mois/Année +\newcounter{friday} +\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 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). +% +% Passer au jour d'après +\newcommand{\nextday}% +{% + % Les mois à 30 jours : Avril, Juin, Septembre, Novembre + % Les mois à 31 jours : Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre + % Février à \theFinFevrier jours. + \ifthenelse{ + \(\theday=30 \and \(\themonth=4 \or \themonth=6 \or \themonth=9 \or \themonth=11\)\) + \or \(\theday=31 \and \(\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or + \themonth=8 \or \themonth=10 \or\themonth=12\)\) + \or \(\theday=\theFinFevrier \and \themonth=2\)}% + { + % Si on est en décembre, on change d'année et month=1, day=1 + \ifthenelse{\themonth=12}% + { + \stepcounter{year} + \setcounter{month}{1} + \setcounter{day}{1} + }{ + % Dans les autres cas, on change de mois et on recommence à day= 1 + \stepcounter{month}% + \setcounter{day}{1}% + }% + }{ + % Sinon, on augmente juste le compteur jour + \stepcounter{day}% + }% +}% +% +% Gestions des vacances et week-end +\newcommand{\weekend}{ + % Vacances de Toussaint + \ifthenelse{ \theday=\thedayToussaint \and \themonth=\themonthToussaint} + { + \setcounter{day}{\thedayToussaintFin} + \setcounter{month}{\themonthToussaintFin} + Vacances de la Toussaint + }{ + % Vacances de Noël + \ifthenelse{ \theday=\thedayNoel \and \themonth=\themonthNoel} + { + \setcounter{day}{\thedayNoelFin} + \setcounter{month}{\themonthNoelFin} + \stepcounter{year} + Vacances de Noël + }{ + % Vacances d'Hiver + \ifthenelse{ \theday=\thedayHiver \and \themonth=\themonthHiver} + { + \setcounter{day}{\thedayHiverFin} + \setcounter{month}{\themonthHiverFin} + Vacances d'hiver + }{ + % Vacances de Printemps + \ifthenelse{ \theday=\thedayPrintemps \and \themonth=\themonthPrintemps} + { + \setcounter{day}{\thedayPrintempsFin} + \setcounter{month}{\themonthPrintempsFin} + Vacances de printemps + }{ + % sinon c'est juste un week-end + \nextday\nextday + }% + }% + }% + }% +} +% +% Obtenir la date +\newcommand{\getDate}{% + % On affiche la date + \theday/\themonth/\theyear% + % On affiche $\star$Ferié$\star$ si le jour est ferié. + \ifthenelse{% + % Jour de l'an, 1er janvier + \(\theday=1 \and \themonth=1\)% + % Lundi de Paques + \or\(\theday=\thedayPaques \and \themonth=\themonthPaques\)% + % Fête du travail, le 1er mai + \or\(\theday=1 \and \themonth=5\)% + % Victoire 1945, le 8 mai + \or\(\theday=8 \and \themonth=5\)% + % Jeudi de l'ascension + \or\(\theday=\thedayAscension \and \themonth=\themonthAscension\)% + % Pont du vendredi de l'ascension + \or\(\theday=\thedayAscensionPont \and \themonth=\themonthAscension\)% + % Lundi de Pentecote + \or\(\theday=\thedayPentecote \and \themonth=\themonthPentecote\)% + % Fête Nationale, le 14 juillet + \or\(\theday=14 \and \themonth=7\)% + % Assomption, le 15 août + \or\(\theday=15 \and \themonth=8\)% + % Toussaint, le 1er novembre + \or\(\theday=1 \and \themonth=11\)% + % Armistice 1914-1918, le 11 novembre + \or\(\theday=11 \and \themonth=11\)% + % Noël, le 25 décembre + \or\(\theday=25 \and \themonth=12\)% + }{ + \hfil $\star$Ferié$\star$% + }{}% +}% +% +% Affichage de la semaine.% +\newcommand{\getWeek}{% + \setcounter{friday}{\theday}% + \setcounter{frimonth}{\themonth}% + \setcounter{friyear}{\theyear}% + % Si le mois a 31 jours.% + % Les mois à 31 jours : Janvier, Mars, Mai, Juillet, Août, Octobre, Décembre% + \ifthenelse{\themonth=1 \or \themonth=3 \or \themonth=5 \or \themonth=7 \or \themonth=8 \or \themonth=10 \or \themonth=12}% + {% + % Alors si on est avant le 28 du mois, on ajoute 4 jours% + \ifthenelse{\theday < 28}% + {% + \addtocounter{friday}{4}% + }{% + % Sinon, on change de mois % + \stepcounter{frimonth}% + % Changement d'année pour décembre% + \ifthenelse{\themonth=12}{\stepcounter{friyear}}{}% + % Lundi 31 - Mar 1, Mer 2, Jeu 3, Ven 4% + \ifthenelse{\theday=31}{\setcounter{friday}{4}}{}% + % 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}}{}% + % Lundi 28 - Mar 29, Mer 30, Jeu 31, Ven 1% + \ifthenelse{\theday=28}{\setcounter{friday}{1}}{}% + }% + }{% + % Sinon, si on est au mois de février% + \ifthenelse{\themonth=2}% + {% + % Si le mois de février a 28 jours% + \ifthenelse{\theFinFevrier=28}% + {% + % Si on est avant le 25% + \ifthenelse{\theday < 25}% + {% + % Alors on ajoute 4 jours% + \addtocounter{friday}{4}% + }{% + % Sinon, on change de mois% + \stepcounter{frimonth}% + % Lundi 28 - Mar 1, Mer 2, Jeu 3, Ven 4% + \ifthenelse{\theday=28}{\setcounter{friday}{4}}{}% + % Lundi 27 - Mar 28, Mer 1, Jeu 2, Ven 3% + \ifthenelse{\theday=27}{\setcounter{friday}{3}}{}% + % Lundi 26 - Mar 27, Mer 28, Jeu 1, Ven 2% + \ifthenelse{\theday=26}{\setcounter{friday}{2}}{}% + % Lundi 25 - Mar 26, Mer 27, Jeu 28, Ven 1% + \ifthenelse{\theday=25}{\setcounter{friday}{1}}{}% + }% + }{% + % sinon le mois de février a 29 jours% + % si on est avant le 26% + \ifthenelse{\theday < 26}% + {% + % alors on ajoute 4 jours% + \addtocounter{friday}{4}% + }{% + % sinon, on change de mois% + \stepcounter{frimonth}% + % lundi 29 - mar 1, mer 2, jeu 3, ven 4% + \ifthenelse{\theday=29}{\setcounter{friday}{4}}{}% + % lundi 28 - mar 29, mer 1, jeu 2, ven 3% + \ifthenelse{\theday=28}{\setcounter{friday}{3}}{}% + % lundi 27 - mar 28, mer 29, jeu 1, ven 2% + \ifthenelse{\theday=27}{\setcounter{friday}{2}}{}% + % lundi 26 - mar 27, mer 28, jeu 29, ven 1% + \ifthenelse{\theday=26}{\setcounter{friday}{1}}{}% + }% + }% + }{% + % Sinon le mois a 30 jours% + % Les mois de 30 jours : Avril, Juin, Septembre, Novembre% + % Si on est avant le 27, on ajoute 4 jours% + \ifthenelse{\theday < 27}% + {% + \addtocounter{friday}{4}% + }{% + % Sinon, on change de mois% + \stepcounter{frimonth}% + % Lundi 30 - Mar 1, Mer 2, Jeu 3, Ven 4% + \ifthenelse{\theday=30}{\setcounter{friday}{4}}{}% + % Lundi 29 - Mar 30, Mer 1, Jeu 2, Ven 3% + \ifthenelse{\theday=29}{\setcounter{friday}{3}}{}% + % Lundi 28 - Mar 29, Mer 30, Jeu 1, Ven 2% + \ifthenelse{\theday=28}{\setcounter{friday}{2}}{}% + % Lundi 27 - Mar 28, Mer 29, Jeu 30, Ven 1% + \ifthenelse{\theday=27}{\setcounter{friday}{1}}{}% + }% + }% + }% + Du lundi \theday{} + \ifthenelse{\themonth=1}{janvier}{}% + \ifthenelse{\themonth=2}{février}{}% + \ifthenelse{\themonth=3}{mars}{}% + \ifthenelse{\themonth=4}{avril}{}% + \ifthenelse{\themonth=5}{mai}{}% + \ifthenelse{\themonth=6}{juin}{}% + \ifthenelse{\themonth=7}{juillet}{}% + \ifthenelse{\themonth=8}{août}{}% + \ifthenelse{\themonth=9}{septembre}{}% + \ifthenelse{\themonth=10}{octobre}{}% + \ifthenelse{\themonth=11}{novembre}{}% + \ifthenelse{\themonth=12}{décembre}{} + \theyear{} + au vendredi + \thefriday{} + \ifthenelse{\thefrimonth=1}{janvier}{}% + \ifthenelse{\thefrimonth=2}{février}{}% + \ifthenelse{\thefrimonth=3}{mars}{}% + \ifthenelse{\thefrimonth=4}{avril}{}% + \ifthenelse{\thefrimonth=5}{mai}{}% + \ifthenelse{\thefrimonth=6}{juin}{}% + \ifthenelse{\thefrimonth=7}{juillet}{}% + \ifthenelse{\thefrimonth=8}{août}{}% + \ifthenelse{\thefrimonth=9}{septembre}{}% + \ifthenelse{\thefrimonth=10}{octobre}{}% + \ifthenelse{\thefrimonth=11}{novembre}{}% + \ifthenelse{\thefrimonth=12}{décembre}{} + \thefriyear +}% +% +% Affichage de la semaine +\newcommand{\Semaine} +{ + & Lundi \getDate\nextday + & Mardi \getDate\nextday + & Mercredi \getDate\nextday + & Jeudi \getDate\nextday + & Vendredi \getDate\nextday +} +\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 + }% +}% +% +% 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. +\newcommand{\sem}[2]% +{ + \pgfmathparse{int(mod(\n,2))} + \ifthenelse{\pgfmathresult=1}{#1}{#2} +}% +% Réaliser le tableau pour une classe +% En argument: +% - #1 : la classe. +% - #2 la liste des élèves, séparée par des virgules (sauf le dernier). +\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} + { + % 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 + % 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} +}% +% +% Réaliser les tableaux de classe. +% \TableauClasse 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}} + % 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} +{ + %insère le fichier ListeEleves.tex s'il existe + \IfFileExists{ListeEleves.tex}{ + \input{ListeEleves.tex} + }{ + % Else : do nothing. + } + % Stocker le nom des élèves dans un fichier externe. + \newwrite\outputstream + \immediate\openout\outputstream=ListeEleves.tex +} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Divers +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Pas d'indentation des paragraphes +\setlength{\parindent}{0pt} +% +% Fin du package. +\endinput diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf index 1e1de72f44..1f703cfde5 100644 Binary files a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf and b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf differ diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex index 2929c9926d..0bb0d4d4ee 100644 --- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex +++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex @@ -95,8 +95,12 @@ }{}% \usepackage{pdfpages} - -\title{Factoriser la production de documents} +\title{% + \begin{tabular}{c} + \ttfamily ProfMaquette.sty\\ + \small Factoriser la production de documents + \end{tabular} +}% \author{C.Poulain} \date{\PfMfiledate} @@ -116,10 +120,10 @@ texcsstyle=*\color{black},%pour colorer la contre-oblique classoffset=5, texcsstyle=*\color{blue},%pour colorer la contre-oblique - moretexcs={brm,TikzDM,TikzDS,TikzIE,TikzFiche,Competences,TikzParcours,TikzPdT,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours}, - emph={Maquette,exercice,Solution,Reponse,Indice},% + moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux}, + emph={Maquette,exercice,exercice,Solution,Reponse,Indice},% classoffset=1, - keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso}, + keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours}, keywordstyle=\color{OliveDrab}, classoffset=2, keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type}, @@ -148,7 +152,7 @@ \makeatother \usepackage{textcomp}%pour les < de listings -\usepackage{enumerate} +\usepackage{enumitem} \usepackage{hhline} \usepackage{pifont} @@ -172,7 +176,7 @@ }% \usepackage{menukeys} -\newcommand\metamk[1]{\textlangle#1\textrangle} +\newcommand\metamk[1]{\textcolor{chocolate}{\textlangle}{\ttfamily #1}\textcolor{chocolate}{\textrangle}} \newcommand\Cle[1]{% {\sffamily\textlangle #1\textrangle}% @@ -227,7 +231,7 @@ ]% \sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{NumSujet})}{} \vspace{1em} - \par{\tiny\jobname}\hfill{\scriptsize\useKV[DS]{Date}} + \par{\tiny\jobname}\hfill{\scriptsize\useKV[IE]{Date}} \end{tcolorbox}% \end{minipage}\hfill\begin{minipage}{0.35\linewidth} Nom : \dotfill\\[0.5em] @@ -237,9 +241,14 @@ \par\bigskip } +\tcbset{% + userfiche/.style={% + colback=gray!5% + }% +}% + \renewcommand\TikzFiche{% - \begin{tcolorbox}[%spread outwards=-1cm,spread inwards=-1cm, - colback=gray!5]% + \begin{tcolorbox}[userfiche]% \Large\sffamily \useKV[Fiche]{Theme}\hfill\useKV[Fiche]{Niveau}\ieme{} \useKV[Fiche]{Classe} \par{\tiny\jobname}\hfill{\scriptsize\useKV[Fiche]{Date}} \end{tcolorbox}% @@ -263,35 +272,36 @@ \begin{document} \maketitle \thispagestyle{empty} -Après la création du package \lstinline!ProfCollege!, l'idée de poursuivre la factorisation des méthodes de travail a naturellement germé. Produire des fiches, des devoirs, des évaluations\dots{} avec des méthodes différentes, cela peut vite apparaître fastidieux. Créé pour améliorer cela, cet ensemble de macro-commandes est basé, quasi exclusivement, sur les environnements \lstinline!Maquette! et \lstinline!exercice! : +Après la création du package \lstinline!ProfCollege!, l'idée de poursuivre la factorisation des méthodes de travail a naturellement germé. Produire des fiches, des devoirs, des évaluations\dots{} avec des méthodes différentes, peut vite apparaître fastidieux. Créé pour factoriser ce travail, cet ensemble de macro-commandes est basé, quasi exclusivement, sur les environnements \lstinline!Maquette! et \lstinline!exercice! : \begin{itemize} \item l'environnement \lstinline!Maquette! indique le type de document souhaité et ses caractéristiques; -\item l'environnement \lstinline!exercice! adapte la présentation et les fonctions des exercices en accord avec l'environnement \lstinline!Maquette!. +\item l'environnement \lstinline!exercice! adapte la présentation et les fonctions des exercices en accord avec l'environnement \lstinline!Maquette! choisi. \end{itemize} +Le c\oe ur de l'utilisation du package \lstinline!ProfMaquette! est donc une gestion des briques élémentaires du travail d'enseignant, à savoir les exercices. \clearpage \section*{L'environnement \lstinline!Maquette!} -\begin{Codes}[listing only]{0.4}{} -\begin{Maquette} +\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{} +\begin{Maquette}[!\metamk{TypeDocument}!,!\metamk{TypeCorrection}!]{!\metamk{Caracteristiques}!} \end{Maquette} \end{Codes} -C'est lui qui va indiquer : +C'est lui qui indique : \begin{itemize} -\item le type de document souhaité (Devoir Maison / Devoir Surveillé / Interrogatin écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail); -\item et si ce travail est corrigé (à la suite d'un exercice ou à la fin du document) ou pas; +\item le type de document souhaité \metamk{TypeDocument} (Devoir Maison / Devoir Surveillé / Interrogation écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail / Cours); +\item et si ce travail est corrigé \metamk{TypeCorrection} (à la suite d'un exercice ou à la fin du document) ou pas; \end{itemize} -puis il indiquera les caractéristiques du document souhaité. +puis il indiquera les caractéristiques \metamk{Caracteristiques} du document souhaité. \clearpage \subsection*{Les devoirs maison} \begin{CadreMP} \begin{Description} -\item[La clé \Cle{DM}]\Defaut{false} +\item[]La clé \Cle{DM}\Defaut{false} \begin{itemize} - \item[La clé \Cle{Numero}]\Defaut{1} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{\{\}} - \item[La clé \Cle{Niveau}]\Defaut{3} - \item[La clé \Cle{Code}\footnotemark]\Defaut{\{\}} + \item[]La clé \Cle{Numero}\Defaut{1} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} + \item[]La clé \Cle{Classe}\Defaut{\{\}} + \item[]La clé \Cle{Niveau}\Defaut{3} + \item[]La clé \Cle{Code}\footnotemark\Defaut{\{\}} \end{itemize} \end{Description} \end{CadreMP} @@ -307,13 +317,13 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{DS}]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Numero}]\Defaut{1} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{} - \item[La clé \Cle{Niveau}]\Defaut{3} - \item[La clé \Cle{Code}]\Defaut{} - \item[La clé \Cle{Calculatrice}] autorisée ou non\Defaut{false} - \item[La clé \Cle{Sujet}]\Defaut{A} + \item[]La clé \Cle{Numero}\Defaut{1} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} + \item[]La clé \Cle{Classe}\Defaut{} + \item[]La clé \Cle{Niveau}\Defaut{3} + \item[]La clé \Cle{Code}\Defaut{} + \item[]La clé \Cle{Calculatrice} autorisée ou non\Defaut{false} + \item[]La clé \Cle{Sujet}\Defaut{A} \end{itemize} \end{Description} \end{CadreMP} @@ -328,15 +338,15 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{IE}]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Numero}]\Defaut{1} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{} - \item[La clé \Cle{Niveau}]\Defaut{3} - \item[La clé \Cle{Code}]\Defaut{} - \item[La clé \Cle{Calculatrice}] autorisée ou nom\Defaut{false} - \item[La clé \Cle{Sujet}] pour de multiples sujets\Defaut{\{\}} - \item[La clé \Cle{Theme}] Thème de l'évaluation \Defaut{\{\}} - \item[La clé \Cle{Nom}] Pour changer le nom \og \'Evaluation\fg\Defaut{\'Evaluation} + \item[]La clé \Cle{Numero}\Defaut{1} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} +% \item[]La clé \Cle{Classe}\Defaut{} + % \item[]La clé \Cle{Niveau}\Defaut{3} + \item[]La clé \Cle{Code}\Defaut{} + \item[]La clé \Cle{Calculatrice} autorisée ou nom\Defaut{false} + \item[]La clé \Cle{Sujet} pour de multiples sujets\Defaut{\{\}} + \item[]La clé \Cle{Theme} Thème de l'évaluation \Defaut{\{\}} + \item[]La clé \Cle{Nom} Pour changer le nom \og \'Evaluation\fg\Defaut{\'Evaluation} \end{itemize} \end{Description} \end{CadreMP} @@ -351,12 +361,12 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{Fiche}]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{Nairobi} - \item[La clé \Cle{Niveau}]\Defaut{6} - \item[La clé \Cle{Theme}] Thème de la fiche \Defaut{Les nombres décimaux} - \item[La clé \Cle{Code}]\Defaut{} - \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} + \item[]La clé \Cle{Classe}\Defaut{} + \item[]La clé \Cle{Niveau}\Defaut{6} + \item[]La clé \Cle{Theme} Thème de la fiche \Defaut{Les nombres décimaux} + \item[]La clé \Cle{Code}\Defaut{} + \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice} \end{itemize} \end{Description} \end{CadreMP} @@ -374,12 +384,12 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{Parcours}\footnotemark]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{Nairobi} - \item[La clé \Cle{Niveau}]\Defaut{6} - \item[La clé \Cle{Theme}] Thème du parcours \Defaut{Les nombres décimaux} - \item[La clé \Cle{Code}]\Defaut{} - \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} + \item[]La clé \Cle{Classe}\Defaut{} + \item[]La clé \Cle{Niveau}\Defaut{6} + \item[]La clé \Cle{Theme} Thème du parcours \Defaut{Les nombres décimaux} + \item[]La clé \Cle{Code}\Defaut{} + \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice} \end{itemize} \end{Description} \end{CadreMP} @@ -395,12 +405,12 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{PdT}\footnotemark]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!} - \item[La clé \Cle{Classe}]\Defaut{Nairobi} - \item[La clé \Cle{Niveau}]\Defaut{6} - \item[La clé \Cle{Theme}] Thème du plan de travail \Defaut{Les nombres décimaux} - \item[La clé \Cle{Code}]\Defaut{} - \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice} + \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!} + \item[]La clé \Cle{Classe}\Defaut{} + \item[]La clé \Cle{Niveau}\Defaut{6} + \item[]La clé \Cle{Theme} Thème du plan de travail \Defaut{Les nombres décimaux} + \item[]La clé \Cle{Code}\Defaut{} + \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice} \end{itemize} \end{Description} \end{CadreMP} @@ -419,7 +429,7 @@ puis il indiquera les caractéristiques du document souhaité. \begin{Description} \item[La clé \Cle{ParcoursPerso}]\Defaut{false} \begin{itemize} - \item[La clé \Cle{Fichier}]\Defaut{}\par est le nom du fichier {\ttfamily csv} à utiliser pour créer les parcours personnalisés. + \item[]La clé \Cle{Fichier} est le nom du fichier {\ttfamily csv} à utiliser.\Defaut{} \end{itemize} \end{Description} \end{CadreMP} @@ -429,8 +439,85 @@ puis il indiquera les caractéristiques du document souhaité. \end{Maquette} \end{Codes} \clearpage -Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} : \lstinline!\TikzDM/\TikzDMCor! pour la clé \Cle{DM}; \lstinline!\TikzDS/\TikzDSCor! pour la clé \Cle{DS}; \lstinline!\TikzIE/\TikzIECor! pour la clé \Cle{IE}; \lstinline!\TikzFiche/\TikzFicheCor! pour la clé \Cle{Fiche}, \lstinline!\TikzParcours/\TikzParcoursCor! pour la clé \Cle{Parcours} et \lstinline!\TikzPdT! pour la clé \Cle{PdT}. +\subsection*{Les \og cours\fg\footnote{Le package \lstinline!ProfMaquette! n'est pas fait pour des documents longs. D'ailleurs, cette clé \Cle{Cours} n'a été ajouté qu'après forte insistance de ses demandeurs\dots}} +\begin{CadreMP} + \begin{Description} +\item[La clé \Cle{Cours}]\Defaut{false} + \begin{itemize} + \item[]La clé \Cle{Theme} modifie le titre du \og cours\fg\Defaut{Trace écrite} + \item[]La clé \Cle{Couleur} modifie la couleur donnée à l'entête\Defaut{Crimson} + \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice} + \end{itemize} +\end{Description} +\end{CadreMP} +\begin{Codes}[listing only]{0.4}{} +\begin{Maquette}[Cours]{} + On considère un triangle $ABC$\dots +\end{Maquette} +\end{Codes} +\begin{Maquette}[Cours]{} + On considère un triangle $ABC$\dots +\end{Maquette} +\clearpage +Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes associées à des styles prédéfinies.\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} \lstinline!tcolorbox! : +\begin{itemize}[label=\textbullet] +\item \lstinline!userdm/userdmcor! pour la clé \Cle{DM}; +\item \lstinline!userds/userdscor! pour la clé \Cle{DS};% +\item \lstinline!userie/useriecor! pour la clé \Cle{IE};% +\item \lstinline!userfiche/userfichecor! pour la clé \Cle{Fiche};%* +\item \lstinline!userparcours/userparcourscor! pour la clé \Cle{Parcours};%* +\item \lstinline!userpdt/userpdtcor! pour la clé \Cle{PdT};%* +\item et \lstinline!usercours! pour la clé \Cle{Cours}. +\end{itemize} +Par exemple, pour une fiche, le style {\em par défaut} permet d'obtenir : + +%\begin{Codes}[]{0.4}{} +\begin{Maquette}[Fiche]{Niveau=6,Classe=Zola,Date=25 décembre 2020} + On considère un triangle $ABC$\dots +\end{Maquette} +%\end{Codes} + +En écrivant {\em avant l'appel} à l'environnement \lstinline!Maquette! : +\begin{Codes}[listing only]{0.4}{} +\tcbset{% + userfiche/.style={% + colframe=Orange!75, + colback=Orange!15% + }% +}% +\end{Codes} +on obtient : + +\tcbset{% + userfiche/.style={% + colframe=Orange!75, + colback=Orange!15% + }% +}% + +\begin{Maquette}[Fiche]{Niveau=6,Classe=Zola,Date=25 décembre 2020} + On considère un triangle $ABC$\dots +\end{Maquette} + +\tcbset{% + userfiche/.style={% + colback=gray!5% + }% +}% + +Pour modifier {\em plus finement} les entêtes des différentes maquettes, on dispose des commandes : +\begin{itemize}[label=\textbullet] +\item \lstinline!\TikzDM/\TikzDMCor! pour la clé \Cle{DM}; +\item \lstinline!\TikzDS/\TikzDSCor! pour la clé \Cle{DS};% +\item \lstinline!\TikzIE/\TikzIECor! pour la clé \Cle{IE};% +\item \lstinline!\TikzFiche/\TikzFicheCor! pour la clé \Cle{Fiche};%* +\item \lstinline!\TikzParcours/\TikzParcoursCor! pour la clé \Cle{Parcours};%* +\item \lstinline!\TikzPdT/\TikzPdTCor! pour la clé \Cle{PdT};%* +\item et \lstinline!\TikzCours! pour la clé \Cle{Cours}. +\end{itemize} +Leurs modifications seront facilitées en copiant le code fourni par le fichier \lstinline!ProfMaquette.sty!. +\clearpage On dispose également de la commande \lstinline!\Competences! permettant de construire un tableau de\dots{} compétences données par l'utilisateur; les compétences étant séparées par le symbole \lstinline!/!. \begin{Codes}[]{0.4}{} \Competences{Utiliser le compas/Utiliser l'équerre} @@ -444,10 +531,10 @@ Les notations \lstinline!NA!, \lstinline!ECA! et \lstinline!A! peuvent être red \end{Codes} Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera les codes suivants : \begin{Codes}[]{0.4}{} -\Competences[4]{0§1§2§3/Utiliser le compas/Utiliser l'équerre} +\Competences[4]{0/1/2/3/Utiliser le compas/Utiliser l'équerre} \end{Codes} \begin{Codes}[]{0.4}{} -\Competences[2]{A§NA/Utiliser le compas/Utiliser l'équerre} +\Competences[2]{A/NA/Utiliser le compas/Utiliser l'équerre} \end{Codes} \clearpage \section*{L'environnement \lstinline!exercice!} @@ -457,7 +544,7 @@ Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera le \end{exercice} \end{Codes} \subsection*{Habillage des exercices} -L'envionnement \lstinline!exercice! doit {\em impérativement} être inclus dans un environnement \lstinline!Maquette! car le choix de document influence la présentation des exercices. +L'environnement \lstinline!exercice! doit {\em impérativement} être inclus dans un environnement \lstinline!Maquette! car le choix de document influence la présentation des exercices. \begin{Codes}[]{0.5}{} \begin{Maquette}[IE]{Theme=Les fonctions,Niveau=3,Classe=Gide} \begin{exercice} @@ -486,11 +573,21 @@ L'envionnement \lstinline!exercice! doit {\em impérativement} être inclus dans \end{exercice} \end{Maquette} \end{Codes} -%\begin{Maquette}[Fiche]{Theme=Les fonctions,Niveau=3,Classe=Gide} -% \begin{exercice} -% La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier. -% \end{exercice} -%\end{Maquette} +\subsection*{La personnalisation} +On peut, dans un premier temps, utiliser les clés suivantes : +\begin{Description} +\item[La clé \Cle{BackGround}]\Defaut{white} + modifie les arrière-plans des exercices. +\item[La clé \Cle{Cadre}]\Defaut{gray!50} + modifie la couleur du cadre des exercices. +\end{Description} +\begin{Codes}[]{0.4}{} +\begin{Maquette}[Fiche]{Theme=Les fonctions,Niveau=3,Classe=Gide} + \begin{exercice}[Background=Orange!15,Cadre=Orange!50] + La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier. + \end{exercice} +\end{Maquette} +\end{Codes} \subsection*{Le barème des exercices} On remarque que certains exercices sont associés à un total de point. C'est une des clés disponibles pour l'environnement \lstinline!exercice!. Voici celles pour les barèmes : \begin{Description} @@ -576,7 +673,7 @@ Les clés décrites dans cette partie ne sont disponibles que pour les maquettes \lstinline!Fiche! / \lstinline!Parcours!. \begin{Description} \item[La clé \Cle{Oral}]\Defaut{false}\par - pour indiquer que l'exercice se résoud oralement. + pour indiquer que l'exercice se résout oralement. \item[La clé \Cle{Calculatrice}]\Defaut{true}\par pour afficher que la calculatrice {\em est interdite}. \end{Description} @@ -646,13 +743,13 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose de l \subsection*{Focus sur la maquette \lstinline!ParcoursPerso!} Dans le cas de cette maquette, l'environnement \lstinline!exercice! n'admet aucune clé. En effet, cette maquette utilise : \begin{itemize} -\item et un fichier {\ttfamily *.csv} de la forme : +\item un fichier {\ttfamily *.csv} de la forme : \begin{Codes}[listing only]{0.4}{} Anne,Bec,{1,2} Paul,Isse,{1,3} Jean,Némar,{1,4} \end{Codes} -\item une liste d'exercices pour produire les trois pages suivantes à l'aide du code : +\item et une liste d'exercices pour produire les trois pages suivantes à l'aide du code : \begin{Codes}[listing only]{0.4}{} \begin{Maquette}[ParcoursPerso]{Type=Fiche,Fichier=Documentation,Theme=L'alphabet,Niveau=6,Classe=Alpha} \begin{exercice} @@ -687,13 +784,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \begin{Maquette}[PdT]{Theme=Plan de travail : Calcul littéral,Niveau=3,Classe=Alpha,Date={},Code={}} \setcounter{PfMExo}{0} \begin{minipage}{0.35\linewidth} - \begin{exercice}%Exercice 1 + \begin{exercice}%exercice 1 A \end{exercice} \end{minipage} \hfill \begin{minipage}{0.3\linewidth} - \begin{exercice}%Exercice 2 + \begin{exercice}%exercice 2 B \end{exercice} \end{minipage} @@ -707,13 +804,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \vspace*{2cm} \begin{minipage}{0.35\linewidth} - \begin{exercice}%Exercice 3 + \begin{exercice}%exercice 3 C \end{exercice} \end{minipage} \hfill \begin{minipage}{0.3\linewidth} - \begin{exercice}%Exercice 4 + \begin{exercice}%exercice 4 D \end{exercice} \end{minipage} @@ -730,13 +827,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \begin{Codes}[listing only]{}{} \begin{Maquette}[PdT]{Theme=Plan de travail : Calcul littéral,Niveau=3,Classe=Alpha,Date={},Code={}} \begin{minipage}{0.35\linewidth} - \begin{exercice}%Exercice 1 + \begin{exercice}%exercice 1 A \end{exercice} \end{minipage} \hfill \begin{minipage}{0.3\linewidth} - \begin{exercice}%Exercice 2 + \begin{exercice}%exercice 2 B \end{exercice} \end{minipage} @@ -750,13 +847,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \vspace*{2cm} \begin{minipage}{0.35\linewidth} - \begin{exercice}%Exercice 3 + \begin{exercice}%exercice 3 C \end{exercice} \end{minipage} \hfill \begin{minipage}{0.3\linewidth} - \begin{exercice}%Exercice 4 + \begin{exercice}%exercice 4 D \end{exercice} \end{minipage} @@ -772,7 +869,7 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \end{Codes} \clearpage \subsection*{\og Correction\fg{} des exercices} - Un exercice avec correction aura la forme suivante : + Un exercice avec correction pourra\footnote{Dans les faits, seul l'environnement \lstinline!exercice! est nécessaire.} avoir la forme suivante : \begin{Codes}[listing only]{0.4}{} \begin{exercice} @@ -780,14 +877,27 @@ L'exemple suivant est obtenu par le code présenté à la page suivante. \begin{Solution} \end{Solution} +\begin{Reponse} + +\end{Reponse} +\begin{Indice} + +\end{Indice} \end{Codes} On peut gérer la correction des exercices à deux niveaux : \begin{Description} - \item[Au niveau de l'environnement ]\lstinline!Maquette!, on dispose de deux clés : + \item[Au niveau de l'environnement ]\lstinline!Maquette!, on dispose des clés : \end{Description} \begin{Description} \item[la Clé \Cle{CorrigeApres}]\Defaut{false}\par qui affiche le corrigé, s'il existe, après l'énoncé de l'exercice. \item[la Clé \Cle{CorrigeFin}]\Defaut{false}\par qui affiche les corrigés, s'ils existent, à la fin du document. + \begin{quote} + \begin{description} + \item[la Clé \Cle{CorrigeAll}]\Defaut{false}\par est {\em uniquement} valable avec la clé \Cle{Fiche}. Elle affiche une feuille avec tous les corrigés détaillés (environnement \lstinline!Solution!); une feuille avec toutes les réponses brutes (environnement \lstinline!Reponse!) et une feuille avec tous les indices (environnement \lstinline!Indice!). +\item[la Clé \Cle{Colonnes}]\Defaut{1}\par définit le nombre de colonnes utilisé pour afficher les corrigés. +\item[la Clé \Cle{Epaisseur}]\Defaut{0pt}\par modifie l'épaisseur de la barre de séparation des colonnes. + \end{description} + \end{quote} \end{Description} Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est autorisée. @@ -796,7 +906,7 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a \begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral} \begin{exercice}% n'a pas de correction \begin{enumerate} - \item $1+1=?$. + \item $1+1=?$ \end{enumerate} \end{exercice} \begin{exercice} @@ -814,7 +924,7 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a \begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral} \begin{exercice}% n'a pas de correction \begin{enumerate} - \item $1+1=?$. + \item $1+1=?$ \end{enumerate} \end{exercice} \begin{exercice} @@ -829,31 +939,13 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a \end{Solution} \end{Maquette} \begin{Description} -\item[Au niveau de l'environnement ]\lstinline!exercice!, on peut affiner la correction proposée en écrivant le code de l'exercice sous la forme : -\end{Description} -\begin{Codes}[listing only]{0.4}{} -\begin{exercice} - -\end{exercice} -\begin{Solution} - -\end{Solution} -\begin{Reponse} - -\end{Reponse} -\begin{Indice} - -\end{Indice} -\end{Codes} -L'environnement \lstinline!exercice! dispose alors des clés suivantes : +\item[Au niveau de l'environnement ]\lstinline!exercice!, on peut affiner la correction à l'aide des clés : \begin{Description} \item[la Clé \Cle{PasCorrige}]\Defaut{false}\par supprime l'affichage de tous types de correction pour l'exercice considéré; \item[la Clé \Cle{Pouce}]\Defaut{false}\par qui affiche uniquement le contenu de l'environnement \lstinline!Indice!; \item[la Clé \Cle{Direct}]\Defaut{false}\par qui affiche uniquement le contenu de l'environnement \lstinline!Reponse!. \end{Description} - -\bigskip - +\end{Description} Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour les solutions, \lstinline!*.rep! pour les réponses et \lstinline!*.cdp! pour les indices. Il conviendra de les effacer à chaque changement de clé (\Cle{PasCorrige}, \Cle{Pouce}, \Cle{Direct}) ou ajout d'exercice(s). En effet, la priorité d'affichage est donnée aux fichiers \lstinline!*.sol! puis \lstinline!*.rep! et enfin \lstinline!*.cdp!. \bigskip @@ -936,7 +1028,6 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le $7x+35$ \end{Reponse} \begin{exercice}[Direct] - $\dfrac34-\dfrac25=$? \end{exercice} \begin{Solution} @@ -961,6 +1052,11 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le 39 \end{Reponse} \end{Maquette} +\clearpage +\section*{Historique} +\begin{description} +\item[\PfMfiledate{}--v \PfMfileversion] Ajout de styles de personnalisation. +\end{description} \end{document} %%% Local Variables: %%% TeX-engine: luatex diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty index c18029cbe4..d8fb448c6e 100644 --- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty +++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty @@ -2,9 +2,9 @@ % licence : Released under the LaTeX Project Public License v1.3c % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e}% -\def\filedate{2023/06/04}% +\def\filedate{2023/08/07}% \let\PfMfiledate\filedate% -\def\fileversion{0.15}% +\def\fileversion{0.2}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -15,33 +15,38 @@ \RequirePackage{xlop} -\RequirePackage[most]{tcolorbox} -\RequirePackage{varwidth} +\RequirePackage{tcolorbox} +\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8} + \RequirePackage{xinttools} \RequirePackage{listofitems} \RequirePackage{array} \RequirePackage{datatool} +\RequirePackage{modulus} + %définition des clés \RequirePackage{simplekv} -\setKVdefault[Boulot]{Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé -\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname} -\setKVdefault[DS]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false,Sujet=A} -\setKVdefault[Fiche]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe=Nairobi,Code={},NomExercice=Exercice} -\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe=Nairobi,Code={},NomExercice=Exercice} -\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe=Nairobi,Code={},NomExercice=Exercice,Vertical=false} -\setKVdefault[ParcoursPerso]{Fichier={}} -\setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false} -\defKV[IE]{Sujet=\setKV[IE]{Sujets}} -\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice} +\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé +\defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}% +\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}% +\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}% +\setKVdefault[DS]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false,Sujet=A}% +\setKVdefault[Fiche]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% +\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% +\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false}% +\setKVdefault[ParcoursPerso]{Fichier={}}% +\setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false}% +\defKV[IE]{Sujet=\setKV[IE]{Sujets}}% +\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}% \setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lycée - du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false} -\setKVdefault[ClesExercices]{PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,TitreExo=Exercice,PasCorrige=false,Direct=false,Pouce=false,Parcours=false}% + du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}% +\setKVdefault[ClesExercices]{PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Background=white,Cadre=gray!50}% \defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}% \defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}% \defKV[ClesExercices]{Competence=\setKV[ClesExercices]{AffichageCompetence}}% -\defKV[ClesExercices]{Trajet=\setKV[ClesExercices]{Parcours}} +\defKV[ClesExercices]{Trajet=\setKV[ClesExercices]{Parcours}}% \setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}% % Definition de longueurs \newlength\PfMLargeurSchemaParcours @@ -52,6 +57,8 @@ %définition des compteurs \newcounter{PfMExo}%Numéro des exercices \setcounter{PfMExo}{0}% +\newcounter{PfMExoSol}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution +\setcounter{PfMExoSol}{0}% \newcounter{PfMCorrigeParcoursPerso}%affichage des solutions ou pas dans le cadre d'un parcours perso \setcounter{PfMCorrigeParcoursPerso}{0}% \newcounter{PfMSOS}%Numéro des SOS dans les parcours fléchés @@ -66,13 +73,15 @@ \setcounter{RetiensInd}{0}% \newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox \setcounter{PfMNbLogo}{0}% -\newcounter{Maquette}%Pour compter le nombres de "travaux" -\setcounter{Maquette}{0}% +\newcounter{PfMMaquette}%Pour compter le nombres de "travaux" +\setcounter{PfMMaquette}{0}% +\newcounter{PfMSection}%Pour le barème et ne pas faire obstruction à section +\setcounter{PfMSection}{0}% \newcount\Orientation%Pour le schéma des parcours % couleurs \colorlet{PfMColCpt}{gray!50} \colorlet{PfMColSrc}{gray!50} -\colorlet{PfMCadreFiche}{gray!50} +%\colorlet{PfMCadreFiche}{gray!50} \colorlet{PfMCadreDM}{gray!85} \colorlet{PfMCadreParcours}{gray!50} % Définitions de commandes @@ -82,14 +91,110 @@ \newcommand\PfMCompNA{NA} \newcommand\PfMCompECA{ECA} \newcommand\PfMCompA{A} +% Pour la gestion de l'aléatoire +% afin de permettre d'utiliser le même exercice. +% Extraire des sommets +\newcounter{PfMSommetcount}% +\newcommand\ChoixSommet[2]{% + % #1 le nombre de sommets + % #2 le nom de base des commandes qui sauvegarde les noms + \xdef\CANSGFoo{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}% + \MelangeListe{\CANSGFoo}{#1}% + \ignoreemptyitems + \readlist*\PfMSommet{\faa}% + \reademptyitems + \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% + \setcounter{PfMSommetcount}{##1} + \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% + \expandafter\xdef\csname #2\Alph{PfMExo}\alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% + }% +}% +%%% + +\ifdef{\VariableAlea}{% + \RenewDocumentCommand\VariableAlea{s m m}{% + \IfBooleanTF{#1}{% + \stepcounter{PfMAlea}% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{#3}}% + \expandafter\xdef\csname #2\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }{% + \xdef#2{\fpeval{#3}}% + }% + }% +}{% + \NewDocumentCommand\VariableAlea{s m m}{% + \IfBooleanTF{#1}{% + \stepcounter{PfMAlea}% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{#3}}% + \expandafter\xdef\csname #2\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }{% + \xdef#2{\fpeval{#3}}% + }% + }% +}% + +\ifdef{\ChoixAlea}{% + \RenewDocumentCommand\ChoixAlea{s o m m m}{% + \IfBooleanTF{#1}{% + \stepcounter{PfMAlea}% + \IfNoValueTF{#2}{% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }{% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }% + }{% + \IfNoValueTF{#2}{% + \xdef#5{\fpeval{randint(#3,#4)}}% + }{% + \xdef#5{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + }% + }% + }% +}{% + \NewDocumentCommand\ChoixAlea{s o m m m}{% + \IfBooleanTF{#1}{% + \stepcounter{PfMAlea}% + \IfNoValueTF{#2}{% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }{% + \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}% + }% + }{% + \IfNoValueTF{#2}{% + \xdef#5{\fpeval{randint(#3,#4)}}% + }{% + \xdef#5{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + }% + }% + }% +}% + +\NewDocumentCommand\RestoreChoixAlea{m}{% + \stepcounter{PfMAlea}% + \expandafter\xdef\csname #1\endcsname{\csname valeur\Alph{PfMExoSol}\alph{PfMAlea}\endcsname} +}% + +\NewDocumentCommand\RestoreSommet{mm}{% + % #1 le nombre de sommets + % #2 le nom de base utilisé lors de la création des sommets + \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% + \setcounter{PfMSommetcount}{##1} + \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\csname #2\Alph{PfMExoSol}\alph{PfMSommetcount}\endcsname} + }% +}% + % Définitions pour les compétences \NewDocumentCommand\Competences{O{3}m}{% - \setsepchar[*]{/*§}\ignoreemptyitems% + \setsepchar[*]{/}\ignoreemptyitems% \readlist*\ListeCompetence{#2} \ifnum#1=3\relax \buildtabcompetences% \else - \Buildtabcompetences{#1}{\listlen\ListeCompetence[1]}% + \Buildtabcompetences{#1}{\ListeCompetencelen}% \fi } @@ -106,13 +211,13 @@ \newlength\PfMLargeurComp \def\Buildtabcompetences#1#2{% - \setlength{\PfMLargeurComp}{\fpeval{0.85-0.05*#2}\linewidth}% + \setlength{\PfMLargeurComp}{\fpeval{0.85-0.05*#1}\linewidth-\fpeval{2*(#1-3)}\tabcolsep}% \[\begin{tabular}{|p{\PfMLargeurComp}|*{#1}{>{\centering\arraybackslash}p{0.05\linewidth}|}}% \cline{2-\fpeval{1+#1}}% \multicolumn{1}{c|}{}\xintFor* ##1 in{\xintSeq{1}{#1}}\do{% - &\ListeCompetence[1,##1]}\\% + &\ListeCompetence[##1]}\\% \hline% - \xintFor* ##1 in {\xintSeq {2}{\ListeCompetencelen}}\do{\ListeCompetence[##1]% + \xintFor* ##1 in {\xintSeq {\fpeval{#1+1}}{\ListeCompetencelen}}\do{\ListeCompetence[##1]% \xintFor* ##2 in {\xintSeq{1}{#1}}\do{&}% \\\hline% }% @@ -126,6 +231,7 @@ \newwrite\verbatim@out \def\SolutionWrite{% + \setcounter{PfMAlea}{0}% \@bsphack \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol" % \let\do\@makeother\dospecials @@ -166,7 +272,7 @@ \def\endIndiceWrite{\immediate\closeout\verbatim@out\@esphack} \makeatother -\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak} +\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}} \def\endSolutionNow{\par\goodbreak} \def\ReponseNow{\textbf{Réponse(s) de l'exercice --}\par\nopagebreak} @@ -180,6 +286,11 @@ \NewDocumentEnvironment{Indice}{}{}{}% \NewDocumentCommand\PfMChoixAffichageCorrection{}{% + \ifboolKV[Boulot]{CorrigeAll}{% + \let\Solution\SolutionWrite\let\endSolution\endSolutionWrite + \let\Reponse\ReponseWrite\let\endReponse\endReponseWrite + \let\Indice\IndiceWrite\let\endIndice\endIndiceWrite + }{% \ifboolKV[Boulot]{ParcoursPerso}{% \let\Solution\SolutionWritePP\let\endSolution\endSolutionWritePP }{% @@ -216,16 +327,23 @@ \fi \fi }% + }% }% \NewDocumentCommand\PfMChoixCorrection{}{% - \setcounter{RetiensSol}{0} - \setcounter{RetiensRep}{0} - \setcounter{RetiensInd}{0} + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{0}% + \setcounter{RetiensInd}{0}% \ifboolKV[Boulot]{CorrigeFin}{% - \setcounter{RetiensSol}{1}% - \setcounter{RetiensRep}{0}% - \setcounter{RetiensInd}{0}% +% \ifboolKV[Boulot]{CorrigeAll}{% +% \setcounter{RetiensSol}{1}% +% \setcounter{RetiensRep}{1}% +% \setcounter{RetiensInd}{1}% +% }{% + \setcounter{RetiensSol}{1}% + \setcounter{RetiensRep}{0}% + \setcounter{RetiensInd}{0}% +% }% }{\ifboolKV[Boulot]{CorrigeApres}{% \setcounter{RetiensSol}{1}% \setcounter{RetiensRep}{0}% @@ -233,18 +351,18 @@ }{}% }% \ifboolKV[ClesExercices]{PasCorrige}{% - \setcounter{RetiensSol}{0} - \setcounter{RetiensRep}{0} + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{0}% \setcounter{RetiensInd}{0}% }{% \ifboolKV[ClesExercices]{Direct}{% - \setcounter{RetiensSol}{0} - \setcounter{RetiensRep}{1} + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{1}% \setcounter{RetiensInd}{0}% }{% - \ifboolKV[ClesExercices]{Pouce}{ - \setcounter{RetiensSol}{0} - \setcounter{RetiensRep}{0} + \ifboolKV[ClesExercices]{Pouce}{% + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{0}% \setcounter{RetiensInd}{1}% }{}% }% @@ -253,6 +371,8 @@ \NewDocumentCommand\PfMAffichageCorrige{}{% \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% + \setcounter{PfMExoSol}{##1}% + \setcounter{PfMAlea}{0}% \IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) seule(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{% \IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{} }% @@ -278,8 +398,8 @@ \ifboolKV[Boulot]{Fiche}{}{% \immediate\write\@auxout{% \string\opadd*{#1}% - {total\the\c@section-\the\c@PfMExo}% - {total\the\c@section-\the\c@PfMExo}% + {total\the\c@PfMSection-\the\c@PfMExo}% + {total\the\c@PfMSection-\the\c@PfMExo}% \string\opcopy{\thePfMExo}{TotalExo}% }% \ifboolKV[ClesExercices]{BaremeDetaille}{% @@ -405,7 +525,7 @@ font=\bfseries ] at (frame.north east) - {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}}; + {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}}; }{} }% }% @@ -415,7 +535,7 @@ \setcounter{PfMAlea}{0}% \useKVdefault[ClesExercices] \setKV[ClesExercices]{#1} - \refstepcounter{section} + \refstepcounter{PfMSection} \PfMChoixCorrection% \refstepcounter{PfMExo} \immediate\write\@auxout{% @@ -423,12 +543,12 @@ } \ifboolKV[ClesExercices]{BaremeTotal}{% \immediate\write\@auxout{% - \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}% + \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}% }}{} \tcolorbox[% BaseDM, label is label, - label=page-\theMaquette-\thePfMExo% + label=page-\thePfMMaquette-\thePfMExo% ] }{% \endtcolorbox% @@ -448,16 +568,16 @@ \setsepchar{,}\ignoreemptyitems% \readlist*\ListeExercicesPA{\csname Parcours#2\endcsname} \reademptyitems% - \xdef\PfCFooTestA{\ListeExercicesPA[1]}% + \xdef\PfMFooTestA{\ListeExercicesPA[1]}% \ifnum\ListeExercicesPAlen>1\relax% \xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{% - \xdef\PfCFooTestA{\PfCFooTestA,\ListeExercicesPA[##1]}% + \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}% }% \fi% \ifboolKV[Parcours]{Vertical}{% - \BuildParcoursTikzV{\ParcoursTotalExo}{\PfCFooTestA}% + \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}% }{% - \BuildParcoursTikz{\ParcoursTotalExo}{\PfCFooTestA}% + \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}% }% }% }% @@ -479,7 +599,7 @@ \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};% }% \foreachitem\compteur\in\ListeRetiens{% - \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\theMaquette-\ListeRetiens[\compteurcnt]}};% + \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};% }% \end{tikzpicture}% }% @@ -507,7 +627,7 @@ \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};% }% \foreachitem\compteur\in\ListeRetiens{% - \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\theMaquette-\ListeRetiens[\compteurcnt]}};% + \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};% }% \end{tikzpicture}% }% @@ -542,7 +662,7 @@ \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#1}% \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}% - \refstepcounter{section}% + \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% \immediate\write\@auxout{\string\opcopy{\thePfMExo}{ParcoursTotalExo}}% @@ -559,7 +679,7 @@ \tcolorbox[% tikzparcours, label is label, - label=page-\theMaquette-\thePfMExo + label=page-\thePfMMaquette-\thePfMExo ] }{\endtcolorbox% } @@ -569,14 +689,16 @@ \setcounter{PfMNbLogo}{1}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#1}% + \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}% + \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}% \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}% - \refstepcounter{section}% + \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% \tcolorbox[% tikzfiche, label is label, - label=page-\theMaquette-\thePfMExo + label=page-\thePfMMaquette-\thePfMExo ] }{\endtcolorbox% } @@ -585,7 +707,7 @@ \setcounter{PfMAlea}{0}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#1}% - \refstepcounter{section}% + \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% \immediate\write\@auxout{% @@ -593,20 +715,33 @@ } \ifboolKV[ClesExercices]{BaremeTotal}{% \immediate\write\@auxout{% - \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}% + \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}% }}{} \tcolorbox[% tikzds, label is label, - label=page-\theMaquette-\thePfMExo + label=page-\thePfMMaquette-\thePfMExo ] }{\endtcolorbox% } \makeatother %%% Recap Brevet +%%% Style Brevet +\tcbset{% + userbrevet/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + userbrevetcor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + % Fiche Exercice Brevet \newcommand\TikzRecapBrevet{% -\begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% +\begin{tcolorbox}[userbrevet]% \Large\sffamily \useKV[RecapBrevet]{Theme} \par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}} \end{tcolorbox}% @@ -615,7 +750,7 @@ \newcommand\TikzRecapBrevetCor[1]{% \clearpage \setKV[RecapBrevet]{#1}% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userbrevetcor]% \Large\sffamily \useKV[RecapBrevet]{Theme} (Correction) \par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}} \end{tcolorbox}% @@ -626,18 +761,18 @@ \setcounter{PfMAlea}{0}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#1}% - \refstepcounter{section}% + \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% \ifboolKV[ClesExercices]{BaremeTotal}{% \immediate\write\@auxout{% - \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}% + \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}% }% }{}% \tcolorbox[% tikzrecapbrevet, label is label, - label=page-\theMaquette-\thePfMExo + label=page-\thePfMMaquette-\thePfMExo ] }{\endtcolorbox% } @@ -665,7 +800,7 @@ font=\bfseries% ] at (frame.north east)% - {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}};% + {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};% }% }% }% @@ -728,8 +863,20 @@ }% }% +\tcbset{% + userpdt/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + userpdtcor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + \NewDocumentCommand\TikzPdT{}{% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userpdt]% \Large\sffamily \useKV[PdT]{Theme}\hfill\useKV[PdT]{Niveau} \useKV[PdT]{Classe}% \par{\tiny\useKV[PdT]{Code}}\hfill{\scriptsize\useKV[PdT]{Date}}% \end{tcolorbox}% @@ -738,7 +885,7 @@ \NewDocumentCommand\TikzPdTCor{m}{% \clearpage \setKV[PdT]{#1}% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userpdtcor]% \Large\sffamily \useKV[PdT]{Theme} (Correction) \hfill\useKV[PdT]{Niveau} \useKV[PdT]{Classe} \par{\tiny\useKV[PdT]{Code}}\hfill{\scriptsize\useKV[PdT]{Date}} \end{tcolorbox}% @@ -750,7 +897,7 @@ \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#1}% \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}% - \refstepcounter{section}% + \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% \tcolorbox[% @@ -845,10 +992,10 @@ ] at (frame.south east) {\scriptsize\sffamily \useKV[ClesExercices]{Source}}; - }{} - } - } -} + }{}% + }% + }% +}% \newenvironment{CRNote}{% \tcolorbox[colback=white,height=2cm,title=NOTE,fonttitle=\color{black}\bfseries\sffamily,colbacktitle=white,enhanced,% @@ -893,7 +1040,7 @@ \tcolorbox[% tikzkholle, label is label, - label=page-\theMaquette-\thePfMExo + label=page-\thePfMMaquette-\thePfMExo ] }{\endtcolorbox% } @@ -931,14 +1078,19 @@ %%%%%%%%% STyle Kholle%%%%%%%%%% % Kholle -\newcommand\TikzKholle{% - \clearpage - \begin{tcolorbox}[frame hidden,colback=white,enhanced,% +\tcbset{% + userkholle/.style={% + frame hidden,colback=white,enhanced,% borderline north={3pt}{0pt}{gray!85}, borderline north={2pt}{0.5pt}{gray!15}, borderline south={3pt}{0pt}{gray!85}, - borderline south={2pt}{0.5pt}{gray!15}, - ]% + borderline south={2pt}{0.5pt}{gray!15} + }% +}% + +\newcommand\TikzKholle{% + \clearpage + \begin{tcolorbox}[userkholle]% \sffamily Interrogation Orale \no\useKV[Kholle]{Numero}\hfill \ifboolKV[Kholle]{CR}{}{Sujet \useKV[Kholle]{Sujet}\hfill}\useKV[Kholle]{Niveau}% \par\useKV[Kholle]{Lieu}\hfill Le \useKV[Kholle]{Date}% @@ -977,14 +1129,25 @@ } %%%%%%%%%% Style DM%%%%%%%%%%%%% -\NewDocumentCommand\TikzDM{}{% - \clearpage% - \begin{tcolorbox}[frame hidden,colback=white,enhanced,% +\tcbset{% + userdm/.style={% + frame hidden,colback=white,enhanced,% borderline north={3pt}{0pt}{gray!85},% borderline north={2pt}{0.5pt}{gray!15},% borderline south={3pt}{0pt}{gray!85},% - borderline south={2pt}{0.5pt}{gray!15},% - ]% + borderline south={2pt}{0.5pt}{gray!15}% + }% +}% + +\tcbset{% + userdmcor/.style={% + colback=gray!5% + }% +}% + +\NewDocumentCommand\TikzDM{}{% + \clearpage% + \begin{tcolorbox}[userdm]% \sffamily Devoir en temps libre \useKV[DM]{Numero}\hfill\useKV[DM]{Niveau} \useKV[DM]{Classe}%\no \par{\tiny\useKV[DM]{Code}}\hfill{\scriptsize Pour le \useKV[DM]{Date}}% \end{tcolorbox}% @@ -1012,9 +1175,68 @@ ]% \end{tcolorbox}% } -%%%%%%Style Fiche +%%% Style Cours +\tcbset{ + usercours/.style={ + enhanced, + skin=enhancedlast jigsaw, + attach boxed title to top left={xshift=-4mm,yshift=-0.5mm}, + fonttitle=\bfseries\sffamily, + colbacktitle=blue!45, + colframe=red!50!black, + interior style={ + top color=blue!10, + bottom color=red!10 + }, + boxed title style={ + empty, + arc=0pt, + outer arc=0pt, + boxrule=0pt + }, + underlay boxed title={ + \fill[blue!45!white] + (title.north west) -- + (title.north east) -- + +(\tcboxedtitleheight-1mm,-\tcboxedtitleheight+1mm) -- + ([xshift=4mm,yshift=0.5mm]frame.north east) -- + +(0mm,-1mm) -- + (title.south west) -- cycle; + \fill[blue!45!white!50!black] + ([yshift=-0.5mm]frame.north west) -- + +(-0.4,0) -- + +(0,-0.3) -- cycle; + \fill[blue!45!white!50!black] + ([yshift=-0.5mm]frame.north east) -- + +(0,-0.3) -- + +(0.4,0) -- cycle; + }, + title={\useKV[Cours]{Theme}}, +} +} + +\NewDocumentCommand\TikzCours{}{% + \begin{tcolorbox}[usercours]% +% \Large\sffamily\bfseries Cours : \useKV[Fiche]{Theme}% +% \useKV[Fiche]{Niveau}~\useKV[Fiche]{Classe}\hfill{\scriptsize\useKV[Fiche]{Date}}% + \end{tcolorbox}% +} + +%%%%%% Style Fiche +\tcbset{% + userfiche/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + userfichecor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + \NewDocumentCommand\TikzFiche{}{% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userfiche]% \Large\sffamily \useKV[Fiche]{Theme}\hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}% \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}% \end{tcolorbox}% @@ -1023,35 +1245,54 @@ \NewDocumentCommand\TikzFicheCor{m}{% \clearpage \setKV[Fiche]{#1}% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userfichecor]% \Large\sffamily \useKV[Fiche]{Theme} (Correction) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}} \end{tcolorbox}% } +\NewDocumentCommand\TikzFicheCorRep{m}{% + \clearpage + \setKV[Fiche]{#1}% + \begin{tcolorbox}[userfichecor]% + \Large\sffamily \useKV[Fiche]{Theme} (Réponses) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} + \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}} + \end{tcolorbox}% +} + +\NewDocumentCommand\TikzFicheCorInd{m}{% + \clearpage + \setKV[Fiche]{#1}% + \begin{tcolorbox}[userfichecor]% + \Large\sffamily \useKV[Fiche]{Theme} (Indices) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} + \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}} + \end{tcolorbox}% +} + +\makeatletter \tcbset{% tikzfiche/.style={% before skip=1em, enhanced, breakable, - colback=white, + colback=ColExoFiche, colframe=PfMCadreFiche, overlay unbroken and first={% \node[% name=A, - fill=white, + fill=ColExoFiche, anchor=west, - xshift=10pt, + xshift=\kvtcb@leftlower, ] at (frame.north west){\bfseries\sffamily \useKV[Fiche]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; %% - \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}} - \ifboolKV[ClesExercices]{Oral}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{} + \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}} + \ifboolKV[ClesExercices]{Oral}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{} %% \ifboolKV[ClesExercices]{AffichageCompetence}{% \node[% - fill=white, + fill=ColExoFiche, anchor=east, - xshift=-10pt, + xshift=-\kvtcb@rightlower, text=PfMColCpt,% ] at (frame.north east) @@ -1060,9 +1301,9 @@ %% \ifboolKV[ClesExercices]{AffichageSource}{% \node[% - fill=white, + fill=ColExoFiche, anchor=east, - xshift=-10pt, + xshift=-\kvtcb@rightlower, text=PfMColSrc, ] at (frame.south east) @@ -1071,9 +1312,22 @@ }% }% }% +\makeatother %%% Parcours %%% +\tcbset{% + userparcours/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + userparcourscor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + \NewDocumentCommand\TikzParcours{}{% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userparcours]% \Large\sffamily \useKV[Parcours]{Theme}\hfill\useKV[Parcours]{Niveau} \useKV[Parcours]{Classe}% \par{\tiny\useKV[Parcours]{Code}}\hfill{\scriptsize\useKV[Parcours]{Date}}% \end{tcolorbox}% @@ -1082,7 +1336,7 @@ \NewDocumentCommand\TikzParcoursCor{m}{% \clearpage \setKV[Parcours]{#1}% - \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]% + \begin{tcolorbox}[userparcourscor]% \Large\sffamily \useKV[Parcours]{Theme} (Correction) \hfill\useKV[Parcours]{Niveau} \useKV[Parcours]{Classe} \par{\tiny\useKV[Parcours]{Code}}\hfill{\scriptsize\useKV[Parcours]{Date}} \end{tcolorbox}% @@ -1132,14 +1386,26 @@ }% %% Fin Parcours %%% %%% DS %%% -\newcommand\TikzDS{% - \clearpage - \begin{tcolorbox}[colback=gray!5,% +\tcbset{% + userds/.style={% + colback=gray!5,% enhanced,% overlay unbroken and first={% \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} --}; - } - ]% + }% + }% +}% + +\tcbset{% + userdscor/.style={% + colback=gray!5% + }% +}% + + +\newcommand\TikzDS{% + \clearpage + \begin{tcolorbox}[userds]% \sffamily Devoir surveillé \no\useKV[DS]{Numero} (Sujet \useKV[DS]{Sujet})\hfill\useKV[DS]{Niveau} \useKV[DS]{Classe} \par{\tiny\useKV[DS]{Code}}\hfill{\scriptsize\useKV[DS]{Date}} \end{tcolorbox}% @@ -1148,7 +1414,7 @@ \newcommand\TikzDSCor[1]{% \clearpage \setKV[DS]{#1} - \begin{tcolorbox}[colback=gray!5]% + \begin{tcolorbox}[userdscor]% \sffamily Devoir surveillé \no\useKV[DS]{Numero} (Sujet \useKV[DS]{Sujet})\hfill\useKV[DS]{Niveau} \useKV[DS]{Classe}% \par Correction% \end{tcolorbox}% @@ -1201,22 +1467,38 @@ font=\bfseries ] at (frame.north east) - {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}}; + {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}}; }{} }% }% }% \makeatother -%Interrogations écrites +% Interrogations écrites +\tcbset{% + userie/.style={% + colback=gray!5, + enhanced,% + overlay unbroken and first={% + \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[IE]{Calculatrice}{autorisée}{interdite} --}; + }% + }% +}% + +\tcbset{% + useriecor/.style={% + colback=gray!5, + enhanced,% + overlay unbroken and first={% + \node[yshift=1em] at (frame.south) { + \scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} -- + };% + }% + }% +}% \newcommand\TikzIE{% \clearpage \begin{minipage}{0.6\linewidth} - \begin{tcolorbox}[colback=gray!5, - enhanced,% - overlay unbroken and first={% - \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[IE]{Calculatrice}{autorisée}{interdite} --}; - } - ]% + \begin{tcolorbox}[userie]% \sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{} \vspace{1em} \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[IE]{Date}} @@ -1224,24 +1506,19 @@ \end{minipage}\hfill\begin{minipage}{0.35\linewidth} Nom : \PfMIENom\\[0.5em] Prénom : \PfMIEPrenom\\[0.5em] - Classe : \PfMIEClasse - \end{minipage} - \par\bigskip -} + Classe : \PfMIEClasse% + \end{minipage}% + \par\bigskip% +}% \newcommand\TikzIECor[1]{% - \clearpage - \setKV[IE]{#1} - \begin{tcolorbox}[colback=gray!5, - enhanced,% - overlay unbroken and first={% - \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} --}; - } - ]% + \clearpage% + \setKV[IE]{#1}% + \begin{tcolorbox}[useriecor]% \sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{}\hfill Correction% - \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[DS]{Date}} + \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[DS]{Date}}% \end{tcolorbox}% -} +}% \NewDocumentCommand\Recapitulatif{m}{% \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{% @@ -1250,8 +1527,17 @@ \foreach\i in{1,...,\ListeExerciceslen}{% \begin{exercice}% \input{\jobname-PPEx\ListeExercices[\i].tex}% - \end{exercice}% + \end{exercice}% + } + \ifnum\thePfMCorrigeParcoursPerso=1\relax% + % \RecapitulatifCorrection{#2}% + \clearpage + \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}% + \readlist*\ListeExercices{\RecapListeExo}% + \foreach\i in{1,...,\ListeExerciceslen}{% + \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak% }% + \fi \end{Maquette}% }% }% @@ -1271,11 +1557,15 @@ % Environnement englobant le tout. %\makeatletter \NewDocumentEnvironment{Maquette}{om}{% + % on remet à zéro les compteurs de solutions : inutile ? + \setcounter{RetiensSol}{0}% + \setcounter{RetiensRep}{0}% + \setcounter{RetiensInd}{0}% % on remet à zéro le compteur des exercices \setcounter{PfMExo}{0}% \setcounter{PfMSOS}{0}% % nouvelles valeurs. - \stepcounter{Maquette}% + \stepcounter{PfMMaquette}% % options de boulot \IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}% \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}% @@ -1283,10 +1573,23 @@ \useKVdefault[Boulot]% \setKV[Boulot]{#1}% \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}% + \ifboolKV[Boulot]{Cours}{% + \setKV[Cours]{#2}% + \TikzCours% + \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche% + %\let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche% + \ifboolKV[Boulot]{CorrigeFin}{% + \AddToHook{env/Maquette/after}[Correction]{% + \TikzFicheCor{#2}% + \PfMAffichageCorrige% + }% + }{}% + }{% \ifboolKV[Boulot]{RecapBrevet}{% \setKV[RecapBrevet]{#2}% \TikzRecapBrevet% \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet% + %\let\Exercice\ExerciceRecapBrevet\let\endExercice\endExerciceRecapBrevet% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \TikzRecapBrevetCor{#2}% @@ -1297,29 +1600,29 @@ \ifboolKV[Boulot]{ParcoursPerso}{% \setKV[ParcoursPerso]{#2}% \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}% - \let\exercice\exerciceParcoursPerso% - \let\endexercice\endexerciceParcoursPerso% + \let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso% + %\let\Exercice\exerciceParcoursPerso\let\endExercice\endexerciceParcoursPerso% \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}% \setcounter{PfMExo}{0}% \AtEndDocument{% \Recapitulatif{#2}% - \ifnum\thePfMCorrigeParcoursPerso=1\relax% - \RecapitulatifCorrection{#2}% - \fi }% }{% \ifboolKV[Boulot]{Parcours}{% \setKV[Parcours]{#2}\TikzParcours% - \let\exercice\exerciceParcours% - \let\endexercice\endexerciceParcours% + \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours% + %\let\Exercice\exerciceParcours\let\endExercice\endexerciceParcours% \ifboolKV[Boulot]{CorrigeFin}{% - \PfMAffichageCorrige% + \AddToHook{env/Maquette/after}[Correction]{% + \TikzParcoursCor{#2} + \PfMAffichageCorrige% + }% }{}% }{% \ifboolKV[Boulot]{PdT}{% \setKV[PdT]{#2}\TikzPdT% - \let\exercice\exercicePdT - \let\endexercice\endexercicePdT% + \let\exercice\exercicePdT\let\endexercice\endexercicePdT% + %\let\Exercice\exercicePdT\let\endExercice\endexercicePdT% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \TikzPdTCor{#2}% @@ -1329,8 +1632,8 @@ }{ \ifboolKV[Boulot]{DM}{% \setKV[DM]{#2}\TikzDM% - \let\exercice\exerciceDM - \let\endexercice\endexerciceDM% + \let\exercice\exerciceDM\let\endexercice\endexerciceDM% + %\let\Exercice\exerciceDM\let\endExercice\endexerciceDM% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \TikzDMCor{#2}% @@ -1339,20 +1642,50 @@ }{}% }{% \ifboolKV[Boulot]{Fiche}{% - \setKV[Fiche]{#2}\TikzFiche% - \let\exercice\exerciceFiche - \let\endexercice\endexerciceFiche% - \ifboolKV[Boulot]{CorrigeFin}{% - \AddToHook{env/Maquette/after}[Correction]{% - \TikzFicheCor{#2}% - \PfMAffichageCorrige% - }% + \setKV[Fiche]{#2}% + \TikzFiche + \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche% + %\let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche% + \ifboolKV[Boulot]{CorrigeFin}{% + \ifboolKV[Boulot]{CorrigeAll}{% + \AddToHook{env/Maquette/after}[Correction]{% + \setKV[Boulot]{#1}% + \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \TikzFicheCor{#2}% + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% + \IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{} + }% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + \TikzFicheCorRep{#2}% + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% + \IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{} + }% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + \TikzFicheCorInd{#2}% + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{% + \IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{} + }% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + }% + }{% + \AddToHook{env/Maquette/after}[Correction]{% + \setKV[Boulot]{#1}% + \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \TikzFicheCor{#2}% + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \PfMAffichageCorrige% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + }% + }% }{}% }{% \ifboolKV[Boulot]{DS}{% \setKV[DS]{#2}\TikzDS% - \let\exercice\exerciceDS - \let\endexercice\endexerciceDS% + \let\exercice\exerciceDS\let\endexercice\endexerciceDS% +% \let\Exercice\exerciceDS\let\endExercice\endexerciceDS% \ifboolKV[Boulot]{BaremeComplet}{% \begin{center} \TableauRecapitulatif @@ -1368,6 +1701,7 @@ \ifboolKV[Boulot]{IE}{% \setKV[IE]{#2}\TikzIE% \let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS + % \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%On garde exerciceDS \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \TikzIECor{#2}% @@ -1397,12 +1731,13 @@ }% }% }% + }% }% }{}% %\makeatother %D'après JCC -% pour gérer les nombres pseudo-aléatoires +% Package pour gérer les nombres pseudo-aléatoires \makeatletter \input{random} @@ -1488,7 +1823,7 @@ % Lancement de la lecture récursive de la liste \expandafter\RL@extract#1,\@nil,% % On met la valeur extraite dans la macro prévue - \xdef#3{\RL@return}%cp a remplacé edef par xdef + \edef#3{\RL@return}%cp a remplacé edef par xdef % La liste est celle sans l'élément extrait \let#1\RL@temp \fi -- cgit v1.2.3