diff options
author | Karl Berry <karl@freefriends.org> | 2023-08-06 19:57:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-08-06 19:57:56 +0000 |
commit | 19142fe5c9adabe50bee101cbd7b411bcdf28c8e (patch) | |
tree | e51787bf6200b7d47553e116b9bd1c29a45f6e93 /Master/texmf-dist/tex/latex | |
parent | 0d631e74cb19efb28bdca18f247bbf016e5e3590 (diff) |
profmaquette (6aug23)
git-svn-id: svn://tug.org/texlive/trunk@67827 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty | 635 |
1 files changed, 485 insertions, 150 deletions
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty index c18029cbe4c..d8fb448c6ee 100644 --- a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty +++ b/Master/texmf-dist/tex/latex/profmaquette/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 |