diff options
author | Norbert Preining <norbert@preining.info> | 2023-08-07 03:03:39 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-08-07 03:03:39 +0000 |
commit | aebf6a3b57eda6e22a8e5fb93958edbf6ad1b551 (patch) | |
tree | 22fd31bea1ac0ed82dd49684be5ae5415f69fa9a /macros/latex/contrib/profmaquette | |
parent | b8344986f0b0553f4794a39ae9b63c6b206cd48d (diff) |
CTAN sync 202308070303
Diffstat (limited to 'macros/latex/contrib/profmaquette')
-rw-r--r-- | macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf | bin | 169331 -> 177454 bytes | |||
-rw-r--r-- | macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex | 304 | ||||
-rw-r--r-- | macros/latex/contrib/profmaquette/latex/ProfMaquette.sty | 635 |
3 files changed, 685 insertions, 254 deletions
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf Binary files differindex 1e1de72f44..1f703cfde5 100644 --- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf +++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf 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 |