summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-10-26 19:52:45 +0000
committerKarl Berry <karl@freefriends.org>2023-10-26 19:52:45 +0000
commitb6160c75117303c1a6efa16a67c8f94e198e8010 (patch)
tree2fdfc22f45ba17ed6ce1aa21e217985caa1f24ae /Master/texmf-dist/tex
parent75882bc5f35741f99d77b5a55672d6d45a03669b (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.sty767
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