diff options
author | Karl Berry <karl@freefriends.org> | 2023-10-26 19:52:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-10-26 19:52:45 +0000 |
commit | b6160c75117303c1a6efa16a67c8f94e198e8010 (patch) | |
tree | 2fdfc22f45ba17ed6ce1aa21e217985caa1f24ae /Master/texmf-dist/tex | |
parent | 75882bc5f35741f99d77b5a55672d6d45a03669b (diff) |
profmaquette (26oct23)
git-svn-id: svn://tug.org/texlive/trunk@68662 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty | 767 |
1 files changed, 702 insertions, 65 deletions
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty index 01cd3097815..31e188b47a9 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/09/09}% +\def\filedate{2023/10/25}% \let\PfMfiledate\filedate% -\def\fileversion{0.45}% +\def\fileversion{0.55}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -30,34 +30,50 @@ %définition des clés \RequirePackage{simplekv} -\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é +\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=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[FdR]{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[Contrat]{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,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Background=white,Cadre=gray!50,Numerote}% +\setKVdefault[ClesExercices]{NbQuestions=1,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,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote}% \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]{Confiance=\setKV[ClesExercices]{Contrat}}% +\defKV[ClesExercices]{Route=\setKV[ClesExercices]{Routes}}% +\defKV[ClesExercices]{Stop=\setKV[ClesExercices]{Stops}}% \setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}% +\setKVdefault[SchemaContrat]{Ecart=7mm,Rayon=2.5mm}% +\setKVdefault[SchemaFdR]{Ecart=7mm,Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}% % Definition de longueurs -\newlength\PfMLargeurSchemaParcours -\newlength{\PfMHauteurAppreciation} -\setlength{\PfMHauteurAppreciation}{5cm} -\newlength{\PfMHauteurRemarque} -\setlength{\PfMHauteurRemarque}{5cm} -%définition des compteurs -\newcounter{PfMExo}%Numéro des exercices +\newlength\PfMLargeurSchemaParcours% +\newlength\PfMRayonSchemaParcours% +\newlength\PfMLargeurSchemaContrat% +\newlength\PfMRayonSchemaContrat% +\newlength\PfMLargeurSchemaFdR% +\newlength\PfMRayonSchemaFdR% +\newlength{\PfMHauteurAppreciation}% +\setlength{\PfMHauteurAppreciation}{5cm}% +\newlength{\PfMHauteurRemarque}% +\setlength{\PfMHauteurRemarque}{5cm}% +% définition des compteurs +\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}% +\newcounter{PfMExo}[PfMMaquette]%Numéro des exercices \setcounter{PfMExo}{0}% \newcounter{PfMExoSol}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution \setcounter{PfMExoSol}{0}% @@ -75,10 +91,6 @@ \setcounter{RetiensInd}{0}% \newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox \setcounter{PfMNbLogo}{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} @@ -86,6 +98,8 @@ %\colorlet{PfMCadreFiche}{gray!50} \colorlet{PfMCadreDM}{gray!85} \colorlet{PfMCadreParcours}{gray!50} +\colorlet{PfMCadreContrat}{gray!50} +\colorlet{PfMCadreFdR}{gray!50} % Définitions de commandes \newcommand\PfMIENom{\dotfill} \newcommand\PfMIEPrenom{\dotfill} @@ -100,25 +114,41 @@ \newcommand\ChoixSommet[2]{% % #1 le nombre de sommets % #2 le nom de base des commandes qui sauvegarde les noms + % après chgt + \stepcounter{PfMAlea}% + % fin chgt \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 + \ignoreemptyitems% \readlist*\PfMSommet{\faa}% - \reademptyitems + \reademptyitems% \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% - \setcounter{PfMSommetcount}{##1} + \setcounter{PfMSommetcount}{##1}% \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% - \expandafter\xdef\csname #2\Alph{PfMExo}\alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% + % avant chgt + % \expandafter\xdef\csname #2\Roman{PfMExo}\alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% + % après chgt + \expandafter\xdef\csname #2\Roman{PfMExo}\roman{PfMAlea}\alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}% }% }% %%% +\NewDocumentCommand\RestoreSommet{mm}{% + % #1 le nombre de sommets + % #2 le nom de base utilisé lors de la création des sommets + \stepcounter{PfMAlea}% + \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% + \setcounter{PfMSommetcount}{##1}% + \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\csname #2\Roman{PfMExoSol}\roman{PfMAlea}\alph{PfMSommetcount}\endcsname}% + }% +}% + \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}% + \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{#3}}% + \expandafter\xdef\csname #2\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}% }{% \xdef#2{\fpeval{#3}}% }% @@ -127,8 +157,8 @@ \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}% + \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{#3}}% + \expandafter\xdef\csname #2\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}% }{% \xdef#2{\fpeval{#3}}% }% @@ -140,11 +170,11 @@ \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\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{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}% + \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}% }% }{% \IfNoValueTF{#2}{% @@ -159,11 +189,11 @@ \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\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{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}% + \expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}% + \expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}% }% }{% \IfNoValueTF{#2}{% @@ -175,18 +205,66 @@ }% }% +\NewDocumentCommand\ChoixAleaMultiMix{mmmmm}{% + % #1 nombre de valeurs à choisir + % #2 valeur minimale + % #3 valeur maximale + % #4 valeur(s) exclue(s) + % #5 Nom de la liste qui récupère les données. + \ifx\bla#4\bla% + \PackageWarning{ProfMaquette}{Il faut définir au moins une valeur à exclure.} + \else% + \xdef\PfMMixFoo{#2}% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeValeursExclues{#4}% + \xintFor* ##1 in{\xintSeq{\fpeval{#2+1}}{#3}}\do{% + \xdef\PfMMixFoo{\PfMMixFoo,##1}% + }% + \readlist*\ListeValeursRetenues{\PfMMixFoo}% + \xintFor* ##1 in{\xintSeq{1}{\ListeValeursExclueslen}}\do{% + \xdef\PfMMixFoo{}% + \xintFor* ##2 in{\xintSeq{1}{\ListeValeursRetenueslen}}\do{% + \xintifboolexpr{\ListeValeursRetenues[##2]==\ListeValeursExclues[##1]}{}{% + \xdef\PfMMixFoo{\PfMMixFoo,\ListeValeursRetenues[##2]}% + }% + }% + \ignoreemptyitems% + \readlist*\ListeValeursRetenues{\PfMMixFoo}% + }% + \MelangeListe{\PfMMixFoo}{#1}% + \xdef#5{\faa}% + \fi% +}% + +\NewDocumentCommand\ChoixAleaMulti{mmmm}{% + % #1 nombre de valeurs à choisir + % #2 valeur minimale + % #3 valeur maximale + % #4 Nom de la liste qui récupère les données. + \xdef\PfMMixFoo{\fpeval{randint(#2,#3)}}% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{#1-1}}}\do{% + \xdef\PfMMixFoo{\PfMMixFoo,\fpeval{randint(#2,#3)}}% + }% + \xdef#4{\PfMMixFoo}% +}% + \NewDocumentCommand\RestoreChoixAlea{m}{% \stepcounter{PfMAlea}% - \expandafter\xdef\csname #1\endcsname{\csname valeur\Alph{PfMExoSol}\alph{PfMAlea}\endcsname} + \expandafter\xdef\csname #1\endcsname{\csname valeur\Roman{PfMExoSol}\roman{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} - }% +\NewDocumentCommand\ExporteListe{mm}{% + %#1 le nom de la liste + %#2 le contenu de la liste. + \stepcounter{PfMAlea} + \expandafter\xdef\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname{#2}% + \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname} +}% + +\NewDocumentCommand\RestoreListe{m}{% + %#1 le nom de la liste à restaurer + \stepcounter{PfMAlea}% + \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExoSol}\roman{PfMAlea}\endcsname} }% % Définitions pour les compétences @@ -556,6 +634,529 @@ \endtcolorbox% } +%%Contrat + +%\makeatletter + +%\makeatother + +%\makeatletter +\NewDocumentCommand\AfficheContrat{o}{% + \useKVdefault[SchemaContrat]% + \setKV[SchemaContrat]{#1}% + \setlength{\PfMLargeurSchemaContrat}{\useKV[SchemaContrat]{Ecart}}% + \setlength{\PfMRayonSchemaContrat}{\useKV[SchemaContrat]{Rayon}}% + %\colorlet{PfMCouleurSP}{\useKV[SchemaContrat]{Couleur}}% + \@ifundefined{Op@\Alph{PfMMaquette}-ContratTotalExo}{Recompilez pour obtenir le contrat.}% + {% + \opexport{\Alph{PfMMaquette}-ContratTotalExo}{\ContratTotalExo}% + % Total Exo : \ContratTotalExo + \setsepchar{,}\ignoreemptyitems% + \xdef\PfCFooListeA{\csname \Alph{PfMMaquette}Contrata\endcsname}% + \xdef\PfCFooListeB{\csname \Alph{PfMMaquette}Contratb\endcsname}% + \readlist*\ListeA{\PfCFooListeA}% + \readlist*\ListeB{\PfCFooListeB}% +% Liste A : \showitems\ListeA[]\par +% Liste B : \showitems\ListeB[]\par + % On écrit en supposant que la liste A est la plus longue + \xdef\LongueurA{\ListeAlen}% + \xdef\LongueurB{\ListeBlen}% + \xdef\Foo{}% + \xdef\Decalage{0}% + % On change la liste B en ajoutant des 0 où il manque des éléments. + \xintFor* ##1 in{\xintSeq{1}{\LongueurB}}\do{% + \xdef\Test{0}% + \xintFor * ##2 in {\xintSeq{1}{\LongueurA}}\do{% + % ListeA vaut \ListeA[##2] et ListeB vaut \ListeB[##1]\par + \IfStrEq{\ListeA[##2]}{\ListeB[##1]}{\xdef\Test{\fpeval{\Test+1}}\xdef\Position{##2}}{}% + }% + \xintifboolexpr{\Test==0}{%pas présent + \xdef\Foo{\Foo,\ListeB[##1]} + }{%présent + \xintifboolexpr{\Position>\fpeval{##1+\Decalage}}{% + \xintFor* ##3 in{\xintSeq{\fpeval{##1+\Decalage}}{\fpeval{\Position-1}}}\do{% + \xdef\Foo{\Foo,0}% + } + \xdef\Decalage{\fpeval{\Position-##1-\Decalage}} + }{} + \xdef\Foo{\Foo,\ListeB[##1]} + }% + }% +% La liste A est \showitems\ListeA[]\par + \readlist*\ListeB{\Foo}% +% La liste B modifiée est \showitems\ListeB[]\par + \xdef\FooNoeuds{}% + \foreachitem\compteur\in\ListeA{% + \xdef\FooNoeuds{\FooNoeuds,\ListeA[\compteurcnt]/\ListeB[\compteurcnt]}% + }% + \BuildConfianceTikz{\FooNoeuds}% + }% +}% +%\makeatother + +\NewDocumentCommand\BuildConfianceTikz{m}{% + \setsepchar[*]{,*/}\ignoreemptyitems% + \readlist*\Noeuds{#1}% + \begin{tikzpicture} + \coordinate (C-0) at (-\PfMLargeurSchemaContrat,0);% + \coordinate (A-0) at (-\PfMLargeurSchemaContrat,-\PfMLargeurSchemaContrat+\PfMRayonSchemaContrat);% + \coordinate (B-0) at (-\PfMLargeurSchemaContrat,\PfMLargeurSchemaContrat-\PfMRayonSchemaContrat);% + \xintFor*##1 in{\xintSeq{1}{\fpeval{\Noeudslen+1}}}\do{% + \coordinate[xshift=\PfMLargeurSchemaContrat] (C-##1) at (C-\fpeval{##1-1});% + \coordinate[xshift=\PfMLargeurSchemaContrat] (A-##1) at (A-\fpeval{##1-1});% + \coordinate[xshift=\PfMLargeurSchemaContrat] (B-##1) at (B-\fpeval{##1-1});% + }% + % On place les points + \xintFor* ##1 in{\xintSeq{1}{\Noeudslen}}\do{% + \xintifboolexpr{\Noeuds[##1,1]==\Noeuds[##1,2]}{% + \coordinate (A-##1) at (C-##1);% + \coordinate (B-##1) at (C-##1);% + }{}% + }% + % on trace + \xintifboolexpr{\Noeuds[1,1]==\Noeuds[1,2]}{\draw[line width=1pt,->] (C-0)--(C-1);% + }{% + \draw[line width=1pt,->] (A-0)--(A-1); + \draw[line width=1pt,->] (B-0)--(B-1); + }% + \xintFor* ##1 in{\xintSeq{2}{\Noeudslen}}\do{% + \draw[line width=1pt] (A-\fpeval{##1-1})--(A-##1);% + \draw[line width=1pt] (B-\fpeval{##1-1})--(B-##1);% + }% + \xintifboolexpr{\Noeuds[\Noeudslen,1]==\Noeuds[\Noeudslen,2]}{\draw[line width=1pt,->] (C-\Noeudslen)--(C-\fpeval{\Noeudslen+1});% + }{% + \draw[line width=1pt,->] (A-\Noeudslen)--(A-\fpeval{\Noeudslen+1}); + \draw[line width=1pt,->] (B-\Noeudslen)--(B-\fpeval{\Noeudslen+1}); + }% + % on dessine les cercles + \xintFor* ##1 in{\xintSeq{1}{\Noeudslen}}\do{% + \xintifboolexpr{\Noeuds[##1,1]==\Noeuds[##1,2]}{% + \draw[fill=white] (C-##1) circle (\PfMRayonSchemaContrat) node{\ref{page-\thePfMMaquette-\Noeuds[##1,1]}};% + }{% + \draw[fill=white] (A-##1) circle (\PfMRayonSchemaContrat) node{\ref{page-\thePfMMaquette-\Noeuds[##1,1]}};% + \xintifboolexpr{\Noeuds[##1,2]==0}{}{\draw[fill=white] (B-##1) circle (\PfMRayonSchemaContrat) node{\ref{page-\thePfMMaquette-\Noeuds[##1,2]}};}% + }% + }% + \end{tikzpicture}% +}% + +\NewDocumentCommand\RemplisContrat{m}{% + \ifcsname \Alph{PfMMaquette}confiance#1\endcsname + \expandafter\xdef\csname \Alph{PfMMaquette}confiance#1\endcsname{\csname \Alph{PfMMaquette}confiance#1\endcsname,\thePfMExo}% +% Yes ! + \else +% No ! + \expandafter\xdef\csname \Alph{PfMMaquette}confiance#1\endcsname{\thePfMExo}% + \fi + \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}Contrat#1\endcsname{\csname \Alph{PfMMaquette}confiance#1\endcsname}}% +}% + + +\newenvironment{exerciceContrat}[1][]{% + \setcounter{PfMAlea}{0}% + \setcounter{PfMNbLogo}{1}% + \useKVdefault[ClesExercices]% + \setKV[ClesExercices]{#1}% + \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}% + \refstepcounter{PfMSection}% + \PfMChoixCorrection% + \refstepcounter{PfMExo}% + \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Alph{PfMMaquette}-ContratTotalExo}}% + % Creation des parcours + \ifboolKV[ClesExercices]{Contrat}{% + % Remise à zéro de conteneurs des parcours + \setsepchar{,}% + \xdef\PfMFooListeContrat{\useKV[ClesExercices]{Confiance}} + \readlist*\ListeContrat{\PfMFooListeContrat}% + \foreachitem\compteur\in\ListeContrat{% + \RemplisContrat{\ListeContrat[\compteurcnt]}% + }% + }{}% + % + \tcolorbox[% + tikzcontrat, + label is label, + label=page-\thePfMMaquette-\thePfMExo + ] +}{\endtcolorbox% +} + +%%% Contrat %%% +\tcbset{% + usercontrat/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + usercontratcor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\NewDocumentCommand\TikzContrat{}{% + \begin{tcolorbox}[usercontrat]% + \Large\sffamily \useKV[Contrat]{Theme}\hfill\useKV[Contrat]{Niveau} \useKV[Contrat]{Classe}% + \par{\tiny\useKV[Contrat]{Code}}\hfill{\scriptsize\useKV[Contrat]{Date}}% + \end{tcolorbox}% +} + +\NewDocumentCommand\TikzContratCor{m}{% + \clearpage + \setKV[Contrat]{#1}% + \begin{tcolorbox}[usercontratcor]% + \Large\sffamily \useKV[Contrat]{Theme} (Correction) \hfill\useKV[Contrat]{Niveau} \useKV[Contrat]{Classe} + \par{\tiny\useKV[Contrat]{Code}}\hfill{\scriptsize\useKV[Contrat]{Date}} + \end{tcolorbox}% +} + +\tcbset{% + tikzcontrat/.style={% + before skip=1em, + enhanced, + breakable, + colback=white, + colframe=PfMCadreContrat, + overlay unbroken and first={% + \node[% + name=A, + fill=white, + anchor=west, + xshift=10pt, + ] at (frame.north west){\bfseries\sffamily \useKV[Contrat]{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]{AffichageCompetence}{% + \node[% + fill=white, + anchor=east, + xshift=-10pt, + text=PfMColCpt,% + ] + at (frame.north east) + {\itshape\scriptsize\sffamily Compétence(s) dominante(s) : \useKV[ClesExercices]{Competence}}; + }{}% + %% + \ifboolKV[ClesExercices]{AffichageSource}{% + \node[% + fill=white, + anchor=east, + xshift=-10pt, + text=PfMColSrc, + ] + at (frame.south east) + {\scriptsize\sffamily \useKV[ClesExercices]{Source}}; + }{}% + }% + }% +}% +%% Fin Contrat %%% + +%%FdR + +%\makeatletter +\NewDocumentCommand\AfficheFdR{o}{% + \useKVdefault[SchemaFdR]% + \setKV[SchemaFdR]{#1}% + \setlength{\PfMLargeurSchemaFdR}{\useKV[SchemaFdR]{Ecart}}% + \setlength{\PfMRayonSchemaFdR}{\useKV[SchemaFdR]{Rayon}}% + \colorlet{PfMCouleurFdR}{\useKV[SchemaFdR]{Couleur}}% + \@ifundefined{Op@\Alph{PfMMaquette}-FdRTotalExo}{Recompilez pour obtenir la feuille de route.}% + {% + \opexport{\Alph{PfMMaquette}-FdRTotalExo}{\FdRTotalExo}% + \xdef\PfMListeExerciceFdR{\csname \Alph{PfMMaquette}FdRtrue\endcsname}% + \ifcsname \Alph{PfMMaquette}FdRstop\endcsname + \xdef\PfMListeExerciceFdRStop{\csname \Alph{PfMMaquette}FdRstop\endcsname}% + \else + \xdef\PfMListeExerciceFdRStop{} + \fi + % On ajoute un stop au dernier exercice + \xdef\PfMListeExerciceFdRStop{\PfMListeExerciceFdRStop,\FdRTotalExo}% +% Liste Exos : \PfMListeExerciceFdR\\ +% Liste Stop : \PfMListeExerciceFdRStop\\ + \BuildRouteTikz{\FdRTotalExo}{\PfMListeExerciceFdR}{\PfMListeExerciceFdRStop}% + }% +}% +%\makeatother + +\NewDocumentCommand\BuildRouteTikz{mmm}{% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeRetiensExo{#2}% + \readlist*\ListeRetiensStop{#3}% + \reademptyitems +% Les exos retenus : \showitems\ListeRetiensExo[]\\ +% Les exos stop : \showitems\ListeRetiensStop[]\\ + \xdef\LongueurA{\ListeRetiensExolen}% + \xdef\LongueurB{\fpeval{\ListeRetiensStoplen-1}}% + \xdef\PfMFooExoIncrustes{} + \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% + \xdef\RetiensExclus{0}% + \xintFor* ##2 in {\xintSeq{1}{\LongueurA}}\do{% + \xintifboolexpr{\ListeRetiensExo[##2]==##1}{\xdef\RetiensExclus{1}}{}% + }% + \xintifboolexpr{\RetiensExclus>0}{}{\xdef\PfMFooExoIncrustes{\PfMFooExoIncrustes,##1}}% + }% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeRetiensExclus{\PfMFooExoIncrustes}% + \xdef\LongueurC{\ListeRetiensExcluslen}% + % portion 1 +% Portion 1 :\\ + \xdef\ListeRoute{}% + \xdef\ListeRouteExclus{}% + \xdef\NBExo{0}\xdef\NBExoSup{0}% + \xintFor* ##1 in{\xintSeq{1}{\LongueurA}}\do{% + \xintifboolexpr{\ListeRetiensExo[##1]>\ListeRetiensStop[1]}{% + % + }{% + \xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}% + }% + }% + \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{% + \xintifboolexpr{\ListeRetiensExclus[##1]>\ListeRetiensStop[1]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}% + }% + \xintifboolexpr{\NBExoSup==\NBExo}{}{% + \xintifboolexpr{\NBExoSup>\NBExo}{% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{% + \xdef\ListeRoute{\ListeRoute,-1}%0 pour l'écart + }% + }{% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExo-\NBExoSup}}}\do{% + \xdef\ListeRouteExclus{\ListeRouteExclus,-1}%0 pour l'écart + }% + }% + }% + \xdef\ListeRoute{\ListeRoute,0}%0 pour le symbole stop + \xdef\ListeRouteExclus{\ListeRouteExclus,0}%0 pour le symbole stop +% Route Basse : \ListeRoute\\ +% Route Haute : \ListeRouteExclus\\ + % portions centrales +% Portions centrales :\\ + \xintifboolexpr{\ListeRetiensStoplen>2}{% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{\LongueurB-1}}}\do{% + \xdef\NBExo{0}\xdef\NBExoSup{0} + \xintFor* ##2 in{\xintSeq{1}{\LongueurA}}\do{% + \xintifboolexpr{\ListeRetiensExo[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExo[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##2]}% + }% + }% + \xintFor* ##2 in{\xintSeq{1}{\LongueurC}}\do{% + \xintifboolexpr{\ListeRetiensExclus[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExclus[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##2]}% + }%% + }% + \xintifboolexpr{\NBExoSup==\NBExo}{}{% + \xintifboolexpr{\NBExoSup>\NBExo}{% + \xintFor* ##3 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{% + \xdef\ListeRoute{\ListeRoute,-1}%0 pour l'écart + }% + }{% + \xintFor* ##3 in{\xintSeq{1}{\fpeval{\NBExo-\NBExoSup}}}\do{% + \xdef\ListeRouteExclus{\ListeRouteExclus,-1}%0 pour l'écart + }% + }% + }% + \xdef\ListeRoute{\ListeRoute,0}\xdef\ListeRouteExclus{\ListeRouteExclus,0}% + }% + }{}% + % portion finale +% Portion fin \\ + \xintifboolexpr{\ListeRetiensStoplen>1}{% + \xdef\NBExo{0}\xdef\NBExoSup{0}% + \xintFor* ##1 in{\xintSeq{1}{\LongueurA}}\do{% + \xintifboolexpr{\ListeRetiensExo[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}{}% + }% + }% + \xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{% + \xintifboolexpr{\ListeRetiensExclus[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}{}% + }% + }% + \xintifboolexpr{\NBExoSup==\NBExo}{}{ + \xintifboolexpr{\NBExoSup>\NBExo}{% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{% + \xdef\ListeRoute{\ListeRoute,-1}%0 pour l'écart + }% + }{% + \xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExo-\NBExoSup}}}\do{% + \xdef\ListeRouteExclus{\ListeRouteExclus,-1}%0 pour l'écart + }% + }% + }% + \xdef\ListeRoute{\ListeRoute,0}%0 pour le symbole stop + \xdef\ListeRouteExclus{\ListeRouteExclus,0}%0 pour le symbole stop + }{}% + \setsepchar{,}\ignoreemptyitems + \readlist*\ListeRouteBasse{\ListeRoute}% + \readlist*\ListeRouteHaute{\ListeRouteExclus}% +% Liste Route : \showitems\ListeRouteBasse[]\\ +% Liste Exclus : \showitems\ListeRouteHaute[] + \begin{tikzpicture} + \coordinate (A-0) at (-\PfMLargeurSchemaFdR,0); + \coordinate (A-1) at (0,0);% + \coordinate (B-1) at (0,1);% + \xintFor* ##1 in{\xintSeq{2}{\ListeRouteBasselen}}\do{% + \coordinate[xshift=\PfMLargeurSchemaFdR] (A-##1) at (A-\fpeval{##1-1});% + \coordinate[xshift=\PfMLargeurSchemaFdR] (B-##1) at (B-\fpeval{##1-1});% + }% + \coordinate[xshift=\PfMLargeurSchemaFdR] (A-\fpeval{\ListeRouteBasselen+1}) at (A-\ListeRouteBasselen);% + %Route haute + \xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{% + \xintifboolexpr{\ListeRouteHaute[##1]<0}{% + \draw[] (B-##1) to (B-\fpeval{##1+1}); + }{% + \xintifboolexpr{\ListeRouteHaute[##1]==0}{% + \draw (B-##1) to (A-##1);% + }{% + \draw[] (B-##1) to (B-\fpeval{##1+1}); + \draw[fill=white](B-##1) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##1]}};% + } + }% + }% + % Route basse + \foreach\i in{1,...,\fpeval{\ListeRouteBasselen}}{% + \draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);% + }% + \draw[line width=1pt,>=latex,->] (A-\ListeRouteBasselen) to (A-\fpeval{\ListeRouteBasselen+1});% + \xintFor* ##1 in{\xintSeq{1}{\ListeRouteBasselen}}\do{% + \xintifboolexpr{\ListeRouteBasse[##1]<0}{}{% + \xintifboolexpr{\ListeRouteBasse[##1]==0}{% + \draw[fill=white,draw=white](A-##1) circle (\PfMRayonSchemaFdR) node{\faCheck};% + }{% + \draw[fill=PfMCouleurFdR](A-##1) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteBasse[##1]}};% + }% + }% + }% + \end{tikzpicture}% +}% + +\NewDocumentCommand\RemplisFdR{m}{% + \ifcsname \Alph{PfMMaquette}route#1\endcsname + \expandafter\xdef\csname \Alph{PfMMaquette}route#1\endcsname{\csname \Alph{PfMMaquette}route#1\endcsname,\thePfMExo}% +% Yes ! + \else +% No ! + \expandafter\xdef\csname \Alph{PfMMaquette}route#1\endcsname{\thePfMExo}% + \fi + \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}FdR#1\endcsname{\csname \Alph{PfMMaquette}route#1\endcsname}}% +}% + + +\newenvironment{exerciceFdR}[1][]{% + \setcounter{PfMAlea}{0}% + \setcounter{PfMNbLogo}{1}% + \useKVdefault[ClesExercices]% + \setKV[ClesExercices]{#1}% + \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}% + \stepcounter{PfMSection}% + \PfMChoixCorrection% + \refstepcounter{PfMExo}% + \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Alph{PfMMaquette}-FdRTotalExo}}% + % Creation des parcours + \ifboolKV[ClesExercices]{Routes}{% + % Remise à zéro de conteneurs des parcours + \setsepchar{,}% + % \ifboolKV[ClesExercices]{Stop}{\xdef\PfMFooListeFdR{\useKV[ClesExercices]{Route},0}}{ + \xdef\PfMFooListeFdR{\useKV[ClesExercices]{Route}} + % % }% + \readlist*\ListeFdR{\PfMFooListeFdR}% + \foreachitem\compteur\in\ListeFdR{% + \RemplisFdR{\ListeFdR[\compteurcnt]}% + }% + }{} + \ifboolKV[ClesExercices]{Stops}{% + \setsepchar{,}% + % \ifboolKV[ClesExercices]{Stop}{\xdef\PfMFooListeFdR{\useKV[ClesExercices]{Route},0}}{ + \xdef\PfMFooListeFdR{stop}% + % }% + \readlist*\ListeFdR{\PfMFooListeFdR}% + \foreachitem\compteur\in\ListeFdR{% + \RemplisFdR{\ListeFdR[\compteurcnt]}% + }% + }{}% + % + \tcolorbox[% + tikzFdR, + label is label, + label=page-\thePfMMaquette-\thePfMExo + ] +}{\endtcolorbox% +} + +%\makeatother + +%%% FdR %%% +\tcbset{% + userfdr/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\tcbset{% + userfdrcor/.style={% + spread upwards=-1cm,colback=gray!5% + }% +}% + +\NewDocumentCommand\TikzFdR{}{% + \begin{tcolorbox}[userfdr]% + \Large\sffamily \useKV[FdR]{Theme}\hfill\useKV[FdR]{Niveau} \useKV[FdR]{Classe}% + \par{\tiny\useKV[FdR]{Code}}\hfill{\scriptsize\useKV[FdR]{Date}}% + \end{tcolorbox}% +} + +\NewDocumentCommand\TikzFdRCor{m}{% + \clearpage + \setKV[FdR]{#1}% + \begin{tcolorbox}[userfdrcor]% + \Large\sffamily \useKV[FdR]{Theme} (Correction) \hfill\useKV[FdR]{Niveau} \useKV[FdR]{Classe} + \par{\tiny\useKV[FdR]{Code}}\hfill{\scriptsize\useKV[FdR]{Date}} + \end{tcolorbox}% +} + +\tcbset{% + tikzFdR/.style={% + before skip=1em, + enhanced, + breakable, + colback=white, + colframe=PfMCadreFdR, + overlay unbroken and first={% + \node[% + name=A, + fill=white, + anchor=west, + xshift=10pt, + ] at (frame.north west){\bfseries\sffamily \useKV[FdR]{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]{AffichageCompetence}{% + \node[% + fill=white, + anchor=east, + xshift=-10pt, + text=PfMColCpt,% + ] + at (frame.north east) + {\itshape\scriptsize\sffamily Compétence(s) dominante(s) : \useKV[ClesExercices]{Competence}}; + }{}% + %% + \ifboolKV[ClesExercices]{AffichageSource}{% + \node[% + fill=white, + anchor=east, + xshift=-10pt, + text=PfMColSrc, + ] + at (frame.south east) + {\scriptsize\sffamily \useKV[ClesExercices]{Source}}; + }{}% + }% + }% +}% +%% Fin FdR %%% + + %%Parcours %\makeatletter @@ -590,14 +1191,17 @@ \setsepchar{,}% \readlist*\ListeRetiens{#2}% \begin{tikzpicture}[remember picture,overlay] - % On place les points - \coordinate[xshift=-1cm,yshift=-4cm] (A-1) at (current page.north east);% + % On place les points%anchor=base,baseline[xshift=-1cm,yshift=-4cm] + \coordinate (A-1) at (0,0);% \xintFor* ##1 in{\xintSeq{2}{#1}}\do{% \coordinate[yshift=-1cm] (A-##1) at (A-\fpeval{##1-1});% }% \foreach\i in{2,...,#1}{% - \draw[dashed] (A-\fpeval{\i-1}) -- (A-\i);% + \draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);% }% + % + \draw[line width=1pt,>=latex,->] (A-#1)--(A-\fpeval{#1+1}); + % \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};% }% @@ -610,11 +1214,11 @@ \NewDocumentCommand\BuildParcoursTikz{mm}{% \setsepchar{,}% \readlist*\ListeRetiens{#2}% - \begin{tikzpicture} + \begin{tikzpicture}[anchor=center,baseline=-1.25mm] % On place les points \Orientation=1\relax - \coordinate (A-1) at (0,0);% - \xintFor* ##1 in{\xintSeq{2}{#1}}\do{% + \coordinate[anchor=base,baseline=-1.25mm] (A-1) at (0,0);% + \xintFor* ##1 in{\xintSeq{2}{\fpeval{#1+1}}}\do{% \modulo{##1}{\useKV[SchemaParcours]{Colonnes}}% \ifnum\remainder=0\relax% \Orientation=\numexpr\Orientation*(-1)\relax% @@ -624,8 +1228,11 @@ \fi% }% \foreach\i in{2,...,#1}{% - \draw[dashed] (A-\fpeval{\i-1}) -- (A-\i);% + \draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);% }% + % + \draw[line width=1pt,>=latex,->] (A-#1)--(A-\fpeval{#1+1}); + % \xintFor* ##1 in{\xintSeq{1}{#1}}\do{% \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};% }% @@ -1537,7 +2144,7 @@ enhanced,% overlay unbroken and first={% \node[yshift=1em] at (frame.south) { - \scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} -- + \scriptsize\sffamily-- Calculatrice \ifboolKV[IE]{Calculatrice}{autorisée}{interdite} -- };% }% }% @@ -1609,7 +2216,7 @@ \setcounter{RetiensRep}{0}% \setcounter{RetiensInd}{0}% % on remet à zéro le compteur des exercices - \setcounter{PfMExo}{0}% + %\setcounter{PfMExo}{0}% \setcounter{PfMSOS}{0}% % nouvelles valeurs. \stepcounter{PfMMaquette}% @@ -1620,23 +2227,51 @@ \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]{FdR}{% + \setKV[FdR]{#2}\TikzFdR% + \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR% \ifboolKV[Boulot]{CorrigeFin}{% - \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}}{}% - }% - }{}% + \AddToHook{env/Maquette/after}[Correction]{% + \setKV[Boulot]{#1}% + \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \TikzFdRCor{#2} + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \PfMAffichageCorrige% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + }% + }{}% + }{% + \ifboolKV[Boulot]{Contrat}{% + \setKV[Contrat]{#2}\TikzContrat% + \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat% + \ifboolKV[Boulot]{CorrigeFin}{% + \AddToHook{env/Maquette/after}[Correction]{% + \setKV[Boulot]{#1}% + \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \TikzContratCor{#2} + \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% + \PfMAffichageCorrige% + \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% + }% + }{}% + }{% + \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]{% + \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]{RecapBrevet}{% + \ifboolKV[Boulot]{RecapBrevet}{% \setKV[RecapBrevet]{#2}% \TikzRecapBrevet% \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet% @@ -1775,7 +2410,7 @@ % \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%On garde exerciceDS \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% - \setKV[Boulot]{#1}% + \setKV[Boulot]{#1}% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% \TikzIECor{#2}% \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% @@ -1806,8 +2441,10 @@ }% }% }% - }% }% + }% +}% +}% }{}% %\makeatother |