texlive[67827] Master/texmf-dist: profmaquette (6aug23)

commits+karl at tug.org commits+karl at tug.org
Sun Aug 6 21:57:56 CEST 2023


Revision: 67827
          http://tug.org/svn/texlive?view=revision&revision=67827
Author:   karl
Date:     2023-08-06 21:57:56 +0200 (Sun, 06 Aug 2023)
Log Message:
-----------
profmaquette (6aug23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdf
    trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.tex
    trunk/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty

Modified: trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.tex	2023-08-06 19:57:44 UTC (rev 67826)
+++ trunk/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.tex	2023-08-06 19:57:56 UTC (rev 67827)
@@ -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 @@
   \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 @@
   \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 @@
   \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 @@
   \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 @@
   \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 @@
   \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 @@
 \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 @@
 \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 @@
 \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 @@
   \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 @@
 \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 @@
 \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 @@
 \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 @@
     \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 @@
 \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 @@
     \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 @@
 \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 @@
 \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 @@
 \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 @@
 \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 @@
   \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 @@
     $7x+35$
   \end{Reponse}
   \begin{exercice}[Direct]
-    
     $\dfrac34-\dfrac25=$?
   \end{exercice}
   \begin{Solution}
@@ -961,6 +1052,11 @@
     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

Modified: trunk/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty	2023-08-06 19:57:44 UTC (rev 67826)
+++ trunk/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty	2023-08-06 19:57:56 UTC (rev 67827)
@@ -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,8 +15,9 @@
 
 \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}
@@ -23,25 +24,29 @@
 \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 at out
 
 \def\SolutionWrite{%
+  \setcounter{PfMAlea}{0}%
   \@bsphack
   \immediate\openout \verbatim at out "\jobname-Ex\thePfMExo.sol" %
   \let\do\@makeother\dospecials
@@ -166,7 +272,7 @@
 \def\endIndiceWrite{\immediate\closeout\verbatim at 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 at section-\the\c at PfMExo}%
-      {total\the\c at section-\the\c at PfMExo}%
+      {total\the\c at PfMSection-\the\c at PfMExo}%
+      {total\the\c at PfMSection-\the\c at PfMExo}%
       \string\opcopy{\thePfMExo}{TotalExo}%
     }%
     \ifboolKV[ClesExercices]{BaremeDetaille}{%
@@ -405,7 +525,7 @@
         font=\bfseries
         ]
         at (frame.north east)
-        {\footnotesize\sffamily \total{\the\c at section-\the\c at PfMExo}};
+        {\footnotesize\sffamily \total{\the\c at PfMSection-\the\c at 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 at section-\the\c at PfMExo}%
+      \string\opcopy{0}{total\the\c at PfMSection-\the\c at 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 at section-\the\c at PfMExo}%
+      \string\opcopy{0}{total\the\c at PfMSection-\the\c at 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 at section-\the\c at PfMExo}%
+      \string\opcopy{0}{total\the\c at PfMSection-\the\c at 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 at section-\the\c at PfMExo}};%
+      {\footnotesize\sffamily \total{\the\c at PfMSection-\the\c at 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 at 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 at 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 at 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 at section-\the\c at PfMExo}};
+        {\footnotesize\sffamily \total{\the\c at PfMSection-\the\c at 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 at extract#1,\@nil,%
     % On met la valeur extraite dans la macro prévue
-    \xdef#3{\RL at return}%cp a remplacé edef par xdef
+    \edef#3{\RL at return}%cp a remplacé edef par xdef
     % La liste est celle sans l'élément extrait
     \let#1\RL at temp
   \fi



More information about the tex-live-commits mailing list.