summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-08-28 21:05:23 +0000
committerKarl Berry <karl@freefriends.org>2024-08-28 21:05:23 +0000
commite293716290be9622526e234caf373028a3df2ed1 (patch)
tree0fdfedc2ad06c29f932bff1ff5bcfd7042f750ce
parenta58409f6b5e32a4589655994439dbc9973126672 (diff)
profmaquette (28aug24)
git-svn-id: svn://tug.org/texlive/trunk@72123 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdfbin298965 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdfbin0 -> 333019 bytes
-rw-r--r--Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.zip (renamed from Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.zip)bin103762 -> 105641 bytes
-rw-r--r--Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty1240
4 files changed, 864 insertions, 376 deletions
diff --git a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf b/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf
deleted file mode 100644
index 655d73fe6ee..00000000000
--- a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdf b/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdf
new file mode 100644
index 00000000000..17618e7120f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.zip b/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.zip
index 460f5a1bbd5..60298056841 100644
--- a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.zip
+++ b/Master/texmf-dist/doc/latex/profmaquette/profmaquette-doc.zip
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
index 9aa462bb76f..f64c1bf745d 100644
--- a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
+++ b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
@@ -2,20 +2,33 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/05/02}%
+\def\filedate{2024/08/27}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.94}%
+\def\fileversion{0.97b}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
\newif\if@Dyslexie \@Dyslexiefalse
+\newif\if@CAN \@CANfalse
+\newif\if@Revision \@Revisionfalse
+\newif\if@AssembleCorrections \@AssembleCorrectionsfalse
+\newif\if@Personnel \@Personnelfalse
\DeclareOption{Dyslexie}{\@Dyslexietrue}
+\DeclareOption{CAN}{\@CANtrue}
+\DeclareOption{Revision}{\@Revisiontrue}
+\DeclareOption{AssembleCorrections}{\@AssembleCorrectionstrue}
+\DeclareOption{Personnel}{\@Personneltrue}
\ProcessOptions\relax
+
+\if@AssembleCorrections
+ \AddToHook{env/document/end}[AC]{\PfMAffichageTousCorriges}%
+\fi
+
% packages nécessaires
\RequirePackage{verbatim}%
-
+\RequirePackage{xintexpr}
\RequirePackage{calc}%
\RequirePackage{xlop}%
@@ -34,23 +47,25 @@
\RequirePackage{modulus}%
\RequirePackage{ragged2e}%
-
+\RequirePackage{fontawesome5}
\makeatletter
\gdef\PfMFontSize{\@ptsize}
%\gdef\PfMFontSize{\f@size}
\makeatother
%définition des clés
\RequirePackage{simplekv}%
-\setKVdefault[Boulot]{Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=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[Boulot]{Dys=false,Taille=14,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,OlympiadesAPMEP=false,LivreHeros=false,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,EntrainementColonnes=false,Epaisseur=0pt,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=false,Input=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}}%
+\defKV[Boulot]{EColonnes=\setKV[Boulot]{EntrainementColonnes}}%
\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[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}%
\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres décimaux}%
\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}}%
@@ -58,7 +73,7 @@
\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[CAN]{Date=\today,Niveau=6,Duree=9,CoefQ=0.4,CoefR=0.35,CoefJ=0.1}%
-\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,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,TitreSol=false,NonUtilise=false,Profile=false,PasEntrainement=false}%
+\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,Ligne=false,Doublespacing=false,Onehalfspacing=false,Cadres=false,TitreSol=false,NonUtilise=false,Profile=false,AEntretenir=false,Fragile=false,AvecIndications=false,ACompleter=false,Aide=0}%
\defKV[ClesExercices]{TitreSolution=\setKV[ClesExercices]{TitreSol}}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
@@ -70,9 +85,18 @@
\defKV[ClesExercices]{Lignes=\setKV[ClesExercices]{Ligne}}%
\defKV[ClesExercices]{Encart=\setKV[ClesExercices]{Cadres}}%
\def\PfMTexteEncart{Indique ton travail ci-dessous.}%
-\setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}%
+\setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=gray!70}%,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}%
+\setKVdefault[SchemaFdR]{Ecart=7mm,Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=gray!70}%,Csv=false}%
+% Commande pour retenir le nombre d'exercices par maquette.Utile seulement pour la clé AssembleCorrection
+\xdef\PfMRetiensLienExoMa{}%
+\xdef\PfMRetiensLienDefMa{}%
+% Commande pour passer des options à travers la clé Input. Elle remplace \input :)
+\NewDocumentCommand\Input{om}{%
+ \def\Relecture{\setKV[ClesExercices]{#1}}
+ \input{#2}
+ \def\Relecture{}
+}%
% Sucres
\makeatletter%
\NewDocumentCommand\PfMDotfill{}{%
@@ -88,7 +112,15 @@
%
\NewDocumentCommand\PfMNbLignesRestantes{}{%
\edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
+ \edef\measurepagemax{\dimexpr\textheight\relax}%
+ % \edef\measurepage{\dimeval{\pagegoal-\pagetotal-\baselineskip}}%
\xdef\PfMResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
+ \xdef\PfMResteLignesMax{\fpeval{trunc((\the\measurepagemax)/(\baselineskip),0)}}%
+ \ifnum\PfMResteLignesMax<\PfMResteLignes\relax
+ \xdef\PfMResteLignes{\PfMResteLignesMax}
+ \fi
+ %\xdef\PfMResteLignes{\dimeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
+ %Il reste \PfMResteLignes{} lignes alors que le nombre maximal de lignes sur une page est \PfMResteLignesMax{}.
}%
\NewDocumentCommand\PfMLignesFinales{}{%
@@ -123,23 +155,30 @@
\newlength\PfMLargeurJury%
\newlength\PfMEspaceAvantLignes%
\newlength\PfMEspaceApresLignes%
-\newlength\PfMLargeurComp
+\newlength\PfMLargeurComp%
\newlength\CRRHauteur%
\newlength\PfMEcartSupInterMots%
-\setlength{\CRRHauteur}{10cm}
+\newlength\PfMCoefcompetences%
+\def\PfMCoefCompetences{0.85}%
+\setlength{\CRRHauteur}{10cm}%
\setlength{\PfMHauteurAppreciation}{5cm}%
\setlength{\PfMHauteurRemarque}{5cm}%
-\setlength{\PfMEspaceAvantLignes}{1em}
-\setlength{\PfMEspaceApresLignes}{1em}
+\setlength{\PfMEspaceAvantLignes}{1em}%
+\setlength{\PfMEspaceApresLignes}{1em}%
\setlength{\PfMEcartSupInterMots}{1pt}%
+\setlength{\PfMCoefcompetences}{0.7\linewidth}%
% définition des compteurs
\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
\setcounter{PfMMaquette}{0}%
+\newcounter{PfMMaquetteSol}[PfMMaquette]%Pour compter le nombres de "travaux" dans les corrections
+\setcounter{PfMMaquetteSol}{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
+%\newcounter{PfMExoSolAlea}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution
+%\setcounter{PfMExoSolAlea}{0}%
+\newcounter{PfMExoSol}[PfMMaquette]%
\setcounter{PfMExoSol}{0}%
\newcounter{PfMExoEntrai}%Pour repérer les entrainements
\setcounter{PfMExoEntrai}{0}%
@@ -152,12 +191,17 @@
\newcounter{RetiensSol}%Pour l'affichage des solutions
\newcounter{RetiensRep}%Pour l'affichage des reponses.
\newcounter{RetiensInd}%Pour l'affichage des indices.
+\newcounter{RetiensIndic}%Pour l'affichage des indications.
+\newcounter{PfMRetiensQr}%Pour l'affichage des entrainements
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
\setcounter{RetiensInd}{0}%
+\setcounter{RetiensIndic}{0}%
+\setcounter{PfMRetiensQr}{0}%
\newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox
\setcounter{PfMNbLogo}{0}%
\newcount\Orientation%Pour le schéma des parcours
+\newcount\TotalParcoursTikz%Pour le total des exos à utiliser dans l'affichage des parcours tikz
\newcounter{PfMCNNumQ}%
\newcounter{Nbcolonnes}
@@ -166,6 +210,8 @@
\newif\ifPfMDeuxColonnes
\newif\ifPfMRectoVerso
+\newif\ifPfMRevision
+
\makeatletter
\if@twocolumn
\PfMDeuxColonnestrue
@@ -179,6 +225,11 @@
\else
\PfMRectoVersofalse
\fi
+\if@Revision
+ \PfMRevisiontrue
+\else
+ \PfMRevisionfalse
+\fi
\makeatother
% couleurs
@@ -228,6 +279,22 @@
\ifboolKV[Boulot]{CAN}{}{\end{tcolorbox}}%
}%
+\tcbset{%
+ indications/.style={
+ empty,
+ right=0pt,
+ left=0mm,
+ top=0pt,
+ bottom=0pt,
+ frame engine=path,
+ % colframe=Crimson!10,
+ frame hidden,
+ notitle,
+ sharp corners=west,
+ borderline west={3pt}{0pt}{black!50}
+ }
+}
+
%% Option french pour les mathématiques
% By CT
\NewDocumentCommand\TypoMathFrance{}{%
@@ -291,7 +358,7 @@
\NewDocumentCommand\RepartirEffectifTotal{mmm}{%
% #1 valeur de l'effectif total
% #2 nombre de valeurs à obtenir
- % #3 écart acceptable :) autour de la moyenen
+ % #3 écart acceptable :) autour de la moyenne
\xdef\PfCSLEffectifs{}%
\xdef\PfCValeurMoyenneTemp{\fpeval{floor(#1/#2)}}%
\xdef\PfCRetiensRETSomme{}%
@@ -882,7 +949,7 @@
}
\def\buildtabcompetences{%
- \[\begin{tabular}{|p{0.70\linewidth}|*{3}{>{\centering\arraybackslash}p{0.05\linewidth}|}}
+ \[\begin{tabular}{|p{\PfMCoefcompetences}|*{3}{>{\centering\arraybackslash}p{0.05\linewidth}|}}
\cline{2-4}
\multicolumn{1}{c|}{}&\PfMCompNA&\PfMCompECA&\PfMCompA\\
\hline
@@ -892,7 +959,7 @@
}%
\def\Buildtabcompetences#1#2{%
- \setlength{\PfMLargeurComp}{\fpeval{0.85-0.05*#1}\linewidth-\fpeval{2*(#1-3)}\tabcolsep}%
+ \setlength{\PfMLargeurComp}{\fpeval{\PfMCoefCompetences-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{%
@@ -914,7 +981,7 @@
\def\SolutionWrite{%
\setcounter{PfMAlea}{0}%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.sol"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
@@ -924,7 +991,7 @@
\def\SolutionWritePP{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-PPEx\thePfMExo.sol" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-PPEx\thePfMExo.sol" %
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -934,7 +1001,7 @@
\def\ReponseWrite{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.rep" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.rep" %
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -944,7 +1011,7 @@
\def\IndiceWrite{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.cdp" %coup de pouce
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.cdp" %coup de pouce
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -953,7 +1020,7 @@
\def\endIndiceWrite{\immediate\closeout\verbatim@out\@esphack}
\makeatother
-\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}
+\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}\PfMAffichageHideItemSolution}%\setcounter{PfMExoSolAlea}{\thePfMExo}
\def\endSolutionNow{\par\goodbreak\PfMshowitems}
\def\ReponseNow{\textbf{Réponse(s) de l'exercice --}\par\nopagebreak\PfMAffichageHideItemSolution}
@@ -965,6 +1032,52 @@
\NewDocumentEnvironment{Solution}{}{}{}%
\NewDocumentEnvironment{Reponse}{}{}{}%
\NewDocumentEnvironment{Indice}{}{}{}%
+\NewDocumentEnvironment{PfMHide}{+b}{}{}%
+\NewDocumentEnvironment{PfMSeek}{+b}{#1}{}%
+
+\NewDocumentEnvironment{AideA}{+b}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>0\relax%
+ \begin{PfMSeek}%
+ \else%
+ \begin{PfMHide}%
+ \fi%
+ #1
+}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>0\relax%
+ \end{PfMSeek}%
+ \else%
+ \end{PfMHide}%
+ \fi%
+}%
+
+\NewDocumentEnvironment{AideB}{+b}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>1\relax%
+ \begin{PfMSeek}%
+ \else%
+ \begin{PfMHide}%
+ \fi%
+ #1
+}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>1\relax%
+ \end{PfMSeek}%
+ \else%
+ \end{PfMHide}%
+ \fi%
+}%
+
+\NewDocumentEnvironment{Indications}{+b}{%
+ \ifnum\theRetiensIndic=1\relax%
+ \textbf{\PfMTexteDesIndications :}\par%
+ \else%
+ \begin{PfMHide}%
+ \fi%
+ #1
+}{%
+ \ifnum\theRetiensIndic=1\relax%
+ \else
+ \end{PfMHide}%
+ \fi%
+}%
\NewDocumentCommand\PfMChoixAffichageCorrection{}{%
\ifboolKV[Boulot]{CorrigeAll}{%
@@ -1050,24 +1163,40 @@
}%
}%
-\def\PfMTexteDuCorrige{Corrigé de l'exercice}
-\def\PfMTexteDeLEntrainement{Automatisme(s) lié(s) à l'exercice}
+\NewDocumentCommand\PfMChoixEntrainement{}{%
+ \setcounter{PfMRetiensQr}{0}%
+ \ifboolKV[ClesExercices]{AEntretenir}{\setcounter{PfMRetiensQr}{1}}{}%
+}%
+
+\NewDocumentCommand\PfMChoixAffichageEntrainement{}{%
+ \ifnum\thePfMRetiensQr=1\relax%
+ \let\Entrainement\EntrainementWrite\let\endEntrainement\endEntrainementWrite%
+ \else%
+ \let\Entrainement\comment\let\endEntrainement\endcomment
+ \fi%
+}%
+
+\def\PfMTexteDuCorrige{Corrigé de l'exercice}%
+\def\PfMTexteDeLEntrainement{Automatisme(s) lié(s) à l'exercice}%
+\def\PfMTexteDesIndications{Indications}%
\NewDocumentCommand\PfMAffichageCorrige{}{%
\ifboolKV[Boulot]{CAN}{%
\xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{%
\setcounter{PfMExoSol}{##1}%
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-Ex##1.sol}\par\goodbreak}{}%page-\thePfMMaquette-##1
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}%page-\thePfMMaquette-##1
}%
}{%
\setcounter{PfMExoSol}{0}%
+ %\setcounter{PfMExoSolAlea}{0}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
\refstepcounter{PfMExoSol}%{##1}%
- \label{pagesol-\thePfMMaquette-\thePfMExoSol}
+ %\stepcounter{PfMExoSolAlea}%
+ \label{pagesol-\thePfMMaquette-\thePfMExoSol}%
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{%
- \IfFileExists{\jobname-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.rep}\par\goodbreak}{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}%
}%
}%
\PfMshowitems%
@@ -1075,33 +1204,73 @@
}%
}%
+% Tous les corrigés
+\NewDocumentCommand\PfMAffichageTousCorriges{}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNombreExoMq{\PfMRetiensLienExoMa}%
+ \reademptyitems%
+ \xintFor* ##2 in{\xintSeq{1}{\thePfMMaquette}}\do{%
+ \refstepcounter{PfMMaquetteSol}%
+ \setcounter{PfMExoSol}{0}%
+ %\setcounter{PfMExoSolAlea}{0}%
+ \ifPfMRectoVerso%
+ \cleardoublepage%
+ \else%
+ \clearpage%
+ \fi%
+ \input{\jobname-DefiMq-##2}
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombreExoMq[##2]}}\do{%
+ \stepcounter{PfMExoSol}%
+ %\stepcounter{PfMExoSolAlea}%
+ \label{pagesol-\thePfMMaquetteSol-\thePfMExoSol}%
+ \setcounter{PfMAlea}{0}%
+ \IfFileExists{\jobname-Ma##2-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma##2-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.rep}\par\goodbreak}{%
+ \IfFileExists{\jobname-Ma##2-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.cdp}\par\goodbreak}{}%
+ }%
+ }%
+ \PfMshowitems%
+ }%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+}%
+
\NewDocumentEnvironment{Entrainement}{}{}{}%
\makeatletter
\def\EntrainementWrite{%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.qrc"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.qrc"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
\immediate\write\verbatim@out{\the\verbatim@line}}%
\verbatim@start}%
\def\endEntrainementWrite{\immediate\closeout\verbatim@out\@esphack}%
-
-\let\Entrainement\EntrainementWrite\let\endEntrainement\endEntrainementWrite%
\makeatother
\NewDocumentCommand\PfMAffichageEntrainement{}{%
- \clearpage
+ \ifPfMDeuxColonnes
+ \newpage
+ \else
+ \ifPfMRectoVerso
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \fi
\TikzAutomatismes
+ \ifboolKV[Boulot]{EntrainementColonnes}{\begin{multicols}{\useKV[Boulot]{EColonnes}}}{}%
\setcounter{PfMExoEntrai}{0}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
\refstepcounter{PfMExoEntrai}%
- \IfFileExists{\jobname-Ex##1.qrc}{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.qrc}{%
\begin{center}
- \label{pageentrai-\thePfMMaquette-\thePfMExoEntrai}%
- \textbf{\PfMTexteDeLEntrainement\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.qrc}\end{center}}{}%
+ \label{pageentrai-\thePfMMaquette-\thePfMExoEntrai}%
+ \textbf{\PfMTexteDeLEntrainement\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.qrc}\end{center}%
+ }{}%
}%
+ \ifboolKV[Boulot]{EntrainementColonnes}{\end{multicols}}{}%
}%
\NewDocumentCommand\TikzAutomatismes{}{%
@@ -1128,17 +1297,23 @@
\newcommand*\brm[1]{%
\ifboolKV[Boulot]{Fiche}{}{%
- \immediate\write\@auxout{%
- \string\opadd*{#1}%
- {total\the\c@PfMSection-\the\c@PfMExo}%
- {total\the\c@PfMSection-\the\c@PfMExo}%
- \string\opcopy{\thePfMExo}{TotalExo}%
+ \ifboolKV[Boulot]{FdR}{}{%
+ \ifboolKV[Boulot]{Contrat}{}{%
+ \ifboolKV[Boulot]{Parcours}{}{%
+ \immediate\write\@auxout{%
+ \string\opadd*{#1}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }%
+ \ifboolKV[ClesExercices]{BaremeDetaille}{%
+ \setlength{\brouillon}{\BaremeEspace@Marge-\linewidth+\textwidth}%
+ \makebox[0pt][r]{\footnotesize\FranPt{#1}\hspace*{\brouillon}}%
+ \ignorespaces%
+ }{}%
+ }%
+ }%
}%
- \ifboolKV[ClesExercices]{BaremeDetaille}{%
- \setlength{\brouillon}{\BaremeEspace@Marge-\linewidth+\textwidth}%
- \makebox[0pt][r]{\footnotesize\FranPt{#1}\hspace*{\brouillon}}%
- \ignorespaces%
- }{}%
}%
}%
@@ -1251,12 +1426,12 @@
\NewDocumentCommand{\PfMLienVersEntrainement}{}{%
\ifboolKV[Boulot]{AvecEntrainement}{%
- \ifboolKV[ClesExercices]{PasEntrainement}{}{%
+ \ifboolKV[ClesExercices]{AEntretenir}{%
\node[%
fill=tcbcolback,%
anchor=center,rotate=45%
] at ($(frame.north east)!0.75!(frame.south east)$){\hyperref[pageentrai-\thePfMMaquette-\thePfMExo]{\faDumbbell}};%
- }%
+ }{}%
}{}%
}%
@@ -1307,7 +1482,6 @@
%%% Base des exercices DM
\tcbset{%
tikzdm/.style={%
- %lowerbox=ignored,
enhanced,
breakable,
colback=white,
@@ -1346,21 +1520,23 @@
}%
}%
-\NewDocumentEnvironment{exerciceDM}{so+b}{%
+\NewDocumentEnvironment{exerciceDM}{so}{%
\setcounter{PfMAlea}{0}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{%
@@ -1376,12 +1552,11 @@
label=page-\thePfMMaquette-\thePfMExo,%
]%
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{
\end{tcolorbox}%
\PfMApresLesExercices%
}%
@@ -1509,23 +1684,25 @@
}%
-\NewDocumentEnvironment{exerciceContrat}{so+b}{%
+\NewDocumentEnvironment{exerciceContrat}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ContratTotalExo}}%
@@ -1546,11 +1723,10 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}
\PfMApresLesExercices%
@@ -1799,7 +1975,7 @@
\xdef\RetiensLeDepart{0}%
\xdef\RetiensLesReponses{0}%
\xdef\RetiensNonAffichees{0}%
- \xdef\RetiensEtage{0}
+ \xdef\RetiensEtage{0}%
\xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{%
\xintifboolexpr{\ListeRouteHaute[##1]==0}{%
\xdef\RetiensEtage{\fpeval{\RetiensEtage+1}}%
@@ -1814,7 +1990,7 @@
\xintifboolexpr{\fpeval{\RetiensLesReponses-1}==\RetiensNonAffichees}{%
% %
}{%
- \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{
+ \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{%
\xintifboolexpr{\ListeRouteHaute[##2]<0}{%
\draw (B-##2) to (B-\fpeval{##2+1});%
}{%
@@ -1863,24 +2039,28 @@
\fi
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}FdR#1\endcsname{\csname \Roman{PfMMaquette}route#1\endcsname}}%
}%
-
-\NewDocumentEnvironment{exerciceFdR}{so+b}{%
+
+\def\Relecture{}%
+
+\NewDocumentEnvironment{exerciceFdR}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \stepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-FdRTotalExo}}%
@@ -1914,11 +2094,10 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}
\PfMApresLesExercices%
@@ -1945,7 +2124,7 @@
\string\opcopy{\thePfMExo}{TotalExo}%
}%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.can"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.can"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}%
@@ -1970,7 +2149,6 @@
\tcbset{%
usercan/.style={%
enhanced,
- % spread upwards=-1cm,colback=gray!5%
frame hidden,
colback=white,
middle=24pt,
@@ -2030,7 +2208,6 @@
\Large\sffamily Course aux nombres (Correction)
\end{center}
\hfill\useKV[CAN]{Niveau}%
- %\par{\tiny\useKV[CAN]{Code}}\hfill{\scriptsize\useKV[CAN]{Date}}%
\end{tcolorbox}%
}
%%% FdR %%%
@@ -2112,19 +2289,33 @@
\reademptyitems%
\xdef\PfMFooTestA{\ListeExercicesPA[1]}%
\ifnum\ListeExercicesPAlen>1\relax%
- \xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{%
- \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}%
- }%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{%
+ \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}%
+ }%
\fi%
- \ifboolKV[Parcours]{Vertical}{%
- \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}%
+ \ifboolKV[Parcours]{Plan}{%
+ \BuildParcoursPlan{\ParcoursTotalExo}{\PfMFooTestA}%
}{%
- \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}%
+ \ifboolKV[Parcours]{Vertical}{%
+ \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}%
+ }{%
+ \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}%
+ }%
}%
}%
}%
%\makeatother
+\NewDocumentCommand\BuildParcoursPlan{mm}{%
+ \setsepchar{,}%
+ \readlist*\ListeRetiens{#2}%
+ \begin{enumerate}
+ \foreachitem\compteur\in\ListeRetiens{%
+ \item[$\square$] Exercice \ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}%
+ }%
+ \end{enumerate}
+}%
+
\NewDocumentCommand\BuildParcoursTikzV{mm}{%
\setsepchar{,}%
\readlist*\ListeRetiens{#2}%
@@ -2155,8 +2346,13 @@
\begin{tikzpicture}[anchor=center,baseline=-1.25mm]
% On place les points
\Orientation=1\relax
+ \ifboolKV[Parcours]{Court}{%
+ \TotalParcoursTikz=\ListeRetienslen%
+ }{%
+ \TotalParcoursTikz=#1%
+ }%
\coordinate[anchor=base,baseline=-1.25mm] (A-1) at (0,0);%
- \xintFor* ##1 in{\xintSeq{2}{\fpeval{#1+1}}}\do{%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\the\TotalParcoursTikz+1}}}\do{%
\modulo{##1}{\useKV[SchemaParcours]{Colonnes}}%
\ifnum\remainder=0\relax%
\Orientation=\numexpr\Orientation*(-1)\relax%
@@ -2165,17 +2361,23 @@
\coordinate[xshift=\the\Orientation*\PfMLargeurSchemaParcours] (A-##1) at (A-\fpeval{##1-1});%
\fi%
}%
- \foreach\i in{2,...,#1}{%
- \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};%
+ \foreach\i in{1,...,\the\TotalParcoursTikz}{%
+ \draw[line width=1pt] (A-\i) -- (A-\fpeval{\i+1});%
}%
- \foreachitem\compteur\in\ListeRetiens{%
- \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+% %
+ \draw[line width=1pt,>=latex,->] (A-\the\TotalParcoursTikz)--(A-\fpeval{\the\TotalParcoursTikz+1});
+% %
+ \ifboolKV[Parcours]{Court}{%
+ \foreachitem\compteur\in\ListeRetiens{%
+ \draw[fill=PfMCouleurSP](A-\compteurcnt) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+ }%
+ }{%
+ \xintFor* ##1 in{\xintSeq{1}{\the\TotalParcoursTikz}}\do{%
+ \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-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+ }%
}%
\end{tikzpicture}%
}%
@@ -2195,7 +2397,7 @@
\stepcounter{PfMExo}%
\PfMChoixCorrection%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-PPEx\thePfMExo.tex" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-PPEx\thePfMExo.tex" %
\immediate\write\verbatim@out{\string\begin{exercice}}
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
@@ -2205,23 +2407,25 @@
\def\endexerciceParcoursPerso{\immediate\write\verbatim@out{\string\end{exercice}}\immediate\closeout\verbatim@out\@esphack}%
-\NewDocumentEnvironment{exerciceParcours}{so+b}{%
+\NewDocumentEnvironment{exerciceParcours}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ParcoursTotalExo}}%
@@ -2242,11 +2446,10 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}
\PfMApresLesExercices%
@@ -2312,15 +2515,24 @@
\NewDocumentCommand\PfMApresLesExercices{}{%
\ifboolKV[ClesExercices]{Ligne}{%
- % \vspace{\PfMEspaceAvantLignes}
- \PfMSetStretch\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
+ \vspace*{\PfMEspaceAvantLignes}%
+ \PfMSetStretch\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
\par\vspace*{\PfMEspaceApresLignes}\par%
}{}%
\par%
\ifboolKV[ClesExercices]{Cadres}{%
- \begin{PfMtcbEncart}%
- %
- \end{PfMtcbEncart}%
+ \begin{PfMtcbEncart}%
+ %
+ \end{PfMtcbEncart}%
+ }{}%
+ \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
+ \ifboolKV[ClesExercices]{ACompleter}{%
+ \IfHookExistsTF{env/center/begin}{\RemoveFromHook{env/center/begin}[*]}{}%
+ \IfHookExistsTF{env/center/end}{\RemoveFromHook{env/center/after}[*]}{}%
+ \IfHookExistsTF{env/itemize/begin}{\RemoveFromHook{env/itemize/begin}[*]}{}%
+ \IfHookExistsTF{env/itemize/end}{\RemoveFromHook{env/itemize/after}[*]}{}%
+ \IfHookExistsTF{env/description/begin}{\RemoveFromHook{env/description/begin}[*]}{}%
+ \IfHookExistsTF{env/description/end}{\RemoveFromHook{env/description/after}[*]}{}%
}{}%
}%
@@ -2329,7 +2541,7 @@
\expandafter\xdef\csname PfMEcrireTitreSol\endcsname{\csname PfMTSol\Roman{PfMExoSol}\endcsname}%
\ifx\bla\PfMEcrireTitreSol\bla%
\else
- \PfMEcrireTitreSol%
+ ~:~\PfMEcrireTitreSol%
\fi%
}%
@@ -2361,68 +2573,105 @@
\fi%
}%
-\newbox\PfMBoxSauvegarde%
+\NewDocumentCommand\PfMAvantLesExercices{}{%
+ \ifboolKV[ClesExercices]{AvecIndications}{\setcounter{RetiensIndic}{1}}{}%
+ \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
+ \refstepcounter{PfMSection}%
+ \PfMChoixCorrection%
+ \PfMChoixEntrainement%
+ \refstepcounter{PfMExo}%
+ \ifboolKV[ClesExercices]{ACompleter}{%
+ \let\oldenumerate\enumerate%
+ \let\oldendenumerate\endenumerate%
+ \let\enumerate\autoenumerate%
+ \let\endenumerate\endautoenumerate%
+ \AddToHook{env/center/begin}[Bcenter]{\let\item\olditem}%
+ \AddToHook{env/center/end}[Ecenter]{\let\item\litem}%
+ \AddToHook{env/description/begin}[Bdescription]{\let\item\olditem}%
+ \AddToHook{env/description/end}[Edescription]{\let\item\litem}%
+ \AddToHook{env/itemize/begin}[Bitemize]{\let\item\olditem}%
+ \AddToHook{env/itemize/end}[Eitemize]{\let\item\litem}%
+ }{}%
+}%
-\NewDocumentEnvironment{exerciceFiche}{so+b}{%
+\NewDocumentEnvironment{exerciceFiche}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
\colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
\colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
- \PfMChoixTitreSolution%
- \PfMChoixHideItemSolution%
- \begin{tcolorbox}[%
- tikzfiche,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
- %
- #3
+ \PfMChoixTitreSolution%
+ \PfMChoixHideItemSolution%
+ \begin{tcolorbox}[%
+ tikzfiche,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{
\end{tcolorbox}%
- \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
+ % \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
\PfMApresLesExercices%
}%
}%
}%
+%\makeatletter
+\NewDocumentCommand\TikzOlympiadesAPMEPCor{m}{%
+ \ifPfMRectoVerso%
+ \cleardoublepage%
+ \else%
+ \clearpage%
+ \fi%
+ \setKV[OlympiadesAPMEP]{#1}%
+ \begin{tcolorbox}[colback=colLogo]
+ \begin{Dispo}*{\normalsize\logoapmep{\scale@logo}}
+ \Large\sffamily \useKV[OlympiadesAPMEP]{Theme}
+
+ (Correction)%
+ \end{Dispo}
+ \end{tcolorbox}%
+}%
+%\makeatother
+
\NewDocumentEnvironment{exerciceOlympiadesAPMEP}{so}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
- \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
- \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
- \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
+ \PfMAvantLesExercices%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
@@ -2438,29 +2687,30 @@
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\end{tcolorbox}%
- \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
+ %\ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
\PfMApresLesExercices%
- }
+ }%
}%
-\NewDocumentEnvironment{exerciceDS}{so+b}{%
+\NewDocumentEnvironment{exerciceDS}{so}{%
\setcounter{PfMAlea}{0}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
+ \begin{PfMHide}
}{%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{%
@@ -2476,11 +2726,10 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}%
\PfMApresLesExercices%
@@ -2490,8 +2739,11 @@
\NewDocumentEnvironment{ExerciceRecapBrevet}{so}{%
\setcounter{PfMAlea}{0}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
@@ -2655,8 +2907,11 @@
\newenvironment{exercicePdT}[1][]{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
@@ -2704,6 +2959,17 @@
\end{tikzpicture}%
}%
+\NewDocumentCommand\CheminNeutre{m}{%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCheminVrai{#1}%
+ \setsepchar{,}%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \foreachitem\compteur\in\ListeCheminVrai{%
+ \draw[cheminPdT] (\ListeCheminVrai[\compteurcnt,1]) to (\ListeCheminVrai[\compteurcnt,2]);%
+ }%
+ \end{tikzpicture}%
+}%
+
\NewDocumentCommand\CheminFaux{m}{%
\setsepchar[*]{,*/}%
\readlist*\ListeCheminVrai{#1}%
@@ -2785,8 +3051,11 @@
}%
\NewDocumentEnvironment{exerciceKholle}{o}{%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
@@ -2803,8 +3072,11 @@
\newenvironment{exerciceBase}[1][]{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]
\setKV[ClesExercices]{#1}
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}
\refstepcounter{PfMExo}
\tcolorbox[%
@@ -2816,8 +3088,11 @@
\newenvironment{exerciceBaseHTML}[1][]{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]
\setKV[ClesExercices]{#1}
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}
\refstepcounter{PfMExo}
\tcolorbox[%
@@ -3083,7 +3358,7 @@
% colframe=PfMCadreFiche,
frame hidden,
overlay unbroken and first={%
- \draw[colLogo,line width=1pt] ([yshift=-10pt]frame.north west)--([yshift=-10pt]frame.north east);
+ \draw[colLogo,line width=1pt] ([yshift=-12pt]frame.north west)--([yshift=-12pt]frame.north east);
\node[%
name=A,
fill=ColExoFiche,
@@ -3311,13 +3586,13 @@
\ifnum\fpeval{\ListeExerciceslen}=1\relax{}
\setKVdefault[ClesExercices]{Numerote=false}
% \begin{exercice}*
- \input{\jobname-PPEx\ListeExercices[1].tex}%
+ \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].tex}%
% \end{exercice}%
\setKVdefault[ClesExercices]{Numerote}
\else
\foreach\i in{1,...,\ListeExerciceslen}{%
% \begin{exercice}
- \input{\jobname-PPEx\ListeExercices[\i].tex}%
+ \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].tex}%
% \end{exercice}%
}
\fi
@@ -3327,10 +3602,10 @@
\TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
\readlist*\ListeExercices{\RecapListeExo}%
\ifnum\fpeval{\ListeExerciceslen}=1\relax{}
- \textbf{Corrigé de l'exercice} : \input{\jobname-PPEx\ListeExercices[1].sol}\par\goodbreak%
+ \textbf{Corrigé de l'exercice} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].sol}\par\goodbreak%
\else
\foreach\i in{1,...,\ListeExerciceslen}{%
- \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak%
+ \textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak%
}%
\fi%
\fi%
@@ -3344,7 +3619,7 @@
\TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
\readlist*\ListeExercices{\RecapListeExo}%
\foreach\i in{1,...,\ListeExerciceslen}{%
- \IfFileExists{\jobname-PPEx\ListeExercices[\i].sol}{\textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak}{}%
+ \IfFileExists{\jobname-PPEx\ListeExercices[\i].sol}{\textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak}{}%
}%
}%
}%
@@ -3363,14 +3638,6 @@
}{%
\ifnum\thePfMMaquette=1\relax%
\else%
- %\ifnum\PfMFontSize=0\relax%
- % \fontsize{10}{\fpeval{1.2*10}}%
- %\else\ifnum\PfMFontSize=1\relax%
- % \fontsize{11}{\fpeval{1.2*11}}%
- % \else%
- % \fontsize{12}{\fpeval{1.2*12}}%
- % \fi%
- %\fi%
\fontsize{\fpeval{10+\PfMFontSize}}{\fpeval{1.2*(10+\PfMFontSize)}}%
\selectfont%
\renewcommand{\JustifyingParindent}{\parindent}
@@ -3395,9 +3662,17 @@
}%
%% Pour factoriser l'appel aux corrections dans l'environnement Maquette
+\makeatletter
\NewDocumentCommand\PfMPrepareCorrection{m}{%
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \if@CAN
+ \ifnum\thepage<5\relax
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{5-\thepage}}}\do{%
+ ~\clearpage%
+ }%
+ \fi%
+ \fi%
\if@Dyslexie%
\setKV[Boulot]{Dys}%
\fi%
@@ -3405,6 +3680,7 @@
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\PfMChangerTailleCorrection%
}%
+\makeatletter
\NewDocumentCommand\PfMAffichageCorrectionColonnes{}{%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -3418,9 +3694,63 @@
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
+% GameBook
+\tcbset{%
+ userlivreheros/.style={%
+ spread upwards=-1cm,colback=Ivory,colframe=black!25!Ivory%
+ }%
+}%
+
+\setKVdefault[LivreHeros]{Theme=Les nombres décimaux}
+
+\NewDocumentCommand\vaen{m}{\ref{#1}}%
+
+\NewDocumentCommand\TikzLivreHeros{}{%
+ \begin{tcolorbox}[userlivreheros]%
+ \begin{center}
+ \Large\sffamily \useKV[LivreHeros]{Theme}
+ \end{center}
+ \end{tcolorbox}%
+}%
+
+\tcbset{%
+ tikzLH/.style={%
+ before skip=1em,
+ enhanced,
+ coltitle=black,
+ colbacktitle=black!10!Ivory,
+ colframe=white,
+ colback=white,
+ attach boxed title to top center={yshift=-2mm},
+ label is label
+ }%
+}%
+
+\newcounter{PfMGameBook}[PfMMaquette]
+\setcounter{PfMGameBook}{0}
+
+\makeatletter
+\def\ExoGBWrite{%
+ \setcounter{PfMAlea}{0}%
+ \PfMChoixCorrection%
+ \stepcounter{PfMExo}%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }%
+ \@bsphack%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.gb"%
+ \let\do\@makeother\dospecials%
+ \catcode`\^^M\active%
+ \def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}%
+ \verbatim@start}%
+\def\endExoGBWrite{\immediate\closeout\verbatim@out\@esphack}%
+\makeatother
+%%%%
+
%%%%%%%%%%%%%%% Debut Maquette %%%%%%%
% Environnement englobant le tout.
\makeatletter
+\newwrite\PfMfile@out%
\NewDocumentEnvironment{Maquette}{om}{%
% on remet à zéro les compteurs de solutions : inutile ?
\setcounter{RetiensSol}{0}%
@@ -3431,10 +3761,17 @@
\setcounter{PfMSOS}{0}%
% nouvelles valeurs.
\stepcounter{PfMMaquette}%
+ \if@AssembleCorrections
+ \immediate\openout\PfMfile@out \jobname-DefiMq-\thePfMMaquette.tex%
+ \immediate\write\PfMfile@out{\unexpanded{\useKVdefault[Boulot]}}%
+ \immediate\write\PfMfile@out{\unexpanded{\setKV[Boulot]{#1}}}%
+ \immediate\write\PfMfile@out{\TikzFicheCor{\unexpanded{#2}}}%
+ \immediate\closeout\PfMfile@out%
+ \fi
% options de boulot
\IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
- %\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
- % \AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}%
+ \AddToHook{env/Maquette/after}[RetiensExo]{\xdef\PfMRetiensLienExoMa{\PfMRetiensLienExoMa,\thePfMExo}}
+ %--------------
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
\ifboolKV[Boulot]{CorrigeSeul}{\setKV[Boulot]{CorrigeFin}}{}%
@@ -3442,32 +3779,34 @@
\setKV[Boulot]{Dys}
\fi
\PfMBasculeDys%
- \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}%
+ \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection\PfMChoixAffichageEntrainement}}%
% Test
\IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}%
\IfHookExistsTF{env/Maquette/end}{\RemoveFromHook{env/Maquette/end}[*]}{}%
\ifboolKV[Boulot]{OlympiadesAPMEP}{%
- \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP%
- \let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{CAN}{%
+ % \input{PfMMaquetteOlympAPMEP}%
+ \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP%
+ \let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzOlympiadesAPMEPCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{CAN}{%
+ % \input{PfMMaquetteCAN.tex}
\setKV[CAN]{#2}%
- %\ifboolKV[Boulot]{CorrigeSeul}{}{\TikzCAN}%
\setcounter{PfMCNNumQ}{0}%
\setlength{\PfMLargeurQuestion}{\useKV[CAN]{CoefQ}\linewidth}\setlength{\PfMLargeurReponse}{\useKV[CAN]{CoefR}\linewidth}\setlength{\PfMLargeurJury}{\useKV[CAN]{CoefJ}\linewidth}%
\let\exercice\ExoCANWrite\let\endexercice\endExoCANWrite%
\AddToHook{env/exercice/begin}{\setcounter{PfMAlea}{0}}%
\AddToHook{env/Maquette/end}{%
- \xdef\PfMAncienneGraine{\PfMChoisisGraineAlea{123456789}}
+ \xdef\PfMAncienneGraine{\PfMChoisisGraineAlea{123456789}}%
\xdef\PfMCANTotalExo{\thePfMExo}%
\setbox\PfMSauvegardeBox\vbox{%
- \PfMGraineAlea{\thePfMMaquette}
+ \PfMGraineAlea{\thePfMMaquette}%
\setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
@@ -3476,21 +3815,21 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
\renewcommand{\arraystretch}{1}%
- }
+ }%
\ifboolKV[Boulot]{CorrigeInverse}{%
- \PfMPrepareCorrection{#1}%
- \TikzCANCor{#2}%
- \PfMAffichageCorrectionColonnes%
- \clearpage
- \normalsize%
- \TikzCAN%
- \PfMGraineAlea{\thePfMMaquette}%
- \setcounter{PfMCNNumQ}{0}%
+ \PfMPrepareCorrection{#1}%
+ \TikzCANCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \clearpage
+ \normalsize%
+ \TikzCAN%
+ \PfMGraineAlea{\thePfMMaquette}%
+ \setcounter{PfMCNNumQ}{0}%
\setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
@@ -3499,7 +3838,7 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
@@ -3508,7 +3847,7 @@
\PfMGraineAlea{\PfMAncienneGraine}%
\TikzCAN%
\setcounter{PfMCNNumQ}{0}%
- \setcounter{PfMExo}{0}%
+ \setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
\hhline{~---}%
@@ -3516,233 +3855,276 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\
+ \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ma\thePfMMaquette-Ex##1.can}&\CNReponse&\\
\hline%
}%
\end{longtable}%
\renewcommand{\arraystretch}{1}%
- \ifboolKV[Boulot]{CorrigeFin}{\ifboolKV[Boulot]{CorrigeInverse}{}{\clearpage
- \PfMPrepareCorrection{#1}%
- \TikzCANCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }
- }{}
- }
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeInverse}{}{%
+ \clearpage
+ \PfMPrepareCorrection{#1}%
+ \TikzCANCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }%
}%
}{%
\ifboolKV[Boulot]{FdR}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[FdR]{#2}\TikzFdR%
- }
- \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzFdRCor{#2}%
- \PfMAffichageCorrectionColonnes
+ % \input{PfMMaquetteFdR.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[FdR]{#2}\TikzFdR%
}%
- }{}%
- }{%
- \ifboolKV[Boulot]{Contrat}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Contrat]{#2}\TikzContrat%
- }
- \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
+ \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\PfMPrepareCorrection{#1}%
- \TikzContratCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{Cours}{%
- \setKV[Cours]{#2}%
- \TikzCours%
- \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzFicheCor{#2}%
- \PfMAffichageCorrectionColonnes
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{RecapBrevet}{%
- \setKV[RecapBrevet]{#2}%
- \TikzRecapBrevet%
- \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzRecapBrevetCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{ParcoursPerso}{%
- \setKV[ParcoursPerso]{#2}%
- \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
- \let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso%
- \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
- \setcounter{PfMExo}{0}%
- \AtEndDocument{%
- \Recapitulatif{#1}{#2}%
- }%
- }{%
- \ifboolKV[Boulot]{Parcours}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Parcours]{#2}\TikzParcours%
- }
- \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzParcoursCor{#2}
- \PfMAffichageCorrectionColonnes
- }%
+ \TikzFdRCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
}{}%
}{%
- \ifboolKV[Boulot]{PdT}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[PdT]{#2}\TikzPdT%
- }
- \let\exercice\exercicePdT\let\endexercice\endexercicePdT%
+ \ifboolKV[Boulot]{Contrat}{%
+ % \input{PfMMaquetteContrat.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Contrat]{#2}\TikzContrat%
+ }%
+ \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzPdTCor{#2}%
- \PfMAffichageCorrectionColonnes%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzContratCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
- \ifboolKV[Boulot]{DM}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[DM]{#2}\TikzDM%
- }
- \let\exercice\exerciceDM\let\endexercice\endexerciceDM%
+ \ifboolKV[Boulot]{Cours}{%
+ % \input{PfMMaquetteCours.tex}%
+ \setKV[Cours]{#2}%
+ \TikzCours%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzDMCor{#2}%
- \PfMAffichageCorrectionColonnes%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
- \ifboolKV[Boulot]{Fiche}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Fiche]{#2}%
- \TikzFiche%
+ \ifboolKV[Boulot]{RecapBrevet}{%
+ % \input{PfMMaquetteRecapBrevet.tex}%
+ \setKV[RecapBrevet]{#2}%
+ \TikzRecapBrevet%
+ \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzRecapBrevetCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{ParcoursPerso}{%
+ % \input{PfMMaquetteParcoursPerso.tex}%
+ \setKV[ParcoursPerso]{#2}%
+ \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
+ \let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso%
+ \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
+ \setcounter{PfMExo}{0}%
+ \AtEndDocument{%
+ \Recapitulatif{#1}{#2}%
}%
- \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
- \ifboolKV[Boulot]{AvecEntrainement}{%
+ }{%
+ \ifboolKV[Boulot]{Parcours}{%
+ % \input{PfMMaquetteParcours.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Parcours]{#2}\TikzParcours%
+ }%
+ \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
\AddToHook{env/Maquette/end}[Haltere]{%
\PfMAffichageEntrainementColonnes%
}%
}{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \ifboolKV[Boulot]{CorrigeAll}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \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]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- %%
- \if@Dyslexie
- \setKV[Boulot]{Dys}
- \fi
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzFicheCor{#2}%
- \PfMChangerTailleCorrection%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- }%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{DS}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[DS]{#2}\TikzDS%
- }%
- \let\exercice\exerciceDS\let\endexercice\endexerciceDS%
- \ifboolKV[Boulot]{BaremeComplet}{%
- \begin{center}
- \TableauRecapitulatif
- \end{center}
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}
- \TikzDSCor{#2}%
+ \PfMPrepareCorrection{#1}%
+ \TikzParcoursCor{#2}%
\PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{IE}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[IE]{#2}\TikzIE%
- }
- \let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}
- \TikzIECor{#2}%
- \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
- \ifboolKV[Boulot]{Kholle}{%
- \setKV[Kholle]{#2}%
- \TikzKholle%
- \let\exercice\exerciceKholle\let\endexercice\endexerciceKholle%
- \ifboolKV[Kholle]{CR}{}{%
+ \ifboolKV[Boulot]{PdT}{%
+ % \input{PfMMaquettePdT.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[PdT]{#2}\TikzPdT%
+ }%
+ \let\exercice\exercicePdT\let\endexercice\endexercicePdT%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzPdTCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{DM}{%
+ % \input{PfMMaquetteDM.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DM]{#2}\TikzDM%
+ }%
+ \let\exercice\exerciceDM\let\endexercice\endexerciceDM%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \TikzKholleCor{#2}%
- \TikzKholleCor{#2}%
- \TikzKholleCor{#2}%
- \PfMAffichageCorrige%
+ \PfMPrepareCorrection{#1}%
+ \TikzDMCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
+ }{%
+ \ifboolKV[Boulot]{Fiche}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Fiche]{#2}%
+ \TikzFiche%
+ }%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeAll}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-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-Ma\thePfMMaquette-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-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-Ma\thePfMMaquette-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}%
+ }%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+ }{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+% \useKVdefault[Boulot]%
+% \setKV[Boulot]{#1}%
+% %%
+% \if@Dyslexie
+% \setKV[Boulot]{Dys}%
+% \fi
+% \PfMBasculeDys%
+% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \if@AssembleCorrections
+ \else
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \fi%
+ }%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{DS}{%
+ % \input{PfMMaquetteDS.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DS]{#2}\TikzDS%
+ }%
+ \let\exercice\exerciceDS\let\endexercice\endexerciceDS%
+ \ifboolKV[Boulot]{BaremeComplet}{%
+ \begin{center}
+ \TableauRecapitulatif
+ \end{center}
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzDSCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{IE}{%
+ % \input{PfMMaquetteIE.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[IE]{#2}\TikzIE%
+ }%
+ \let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzIECor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{Kholle}{%
+ % \input{PfMMaquetteKholle.tex}%
+ \setKV[Kholle]{#2}%
+ \TikzKholle%
+ \let\exercice\exerciceKholle\let\endexercice\endexerciceKholle%
+ \ifboolKV[Kholle]{CR}{}{%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \TikzKholleCor{#2}%
+ \TikzKholleCor{#2}%
+ \TikzKholleCor{#2}%
+ \PfMAffichageCorrige%
+ }%
+ }{}%
+ }%
+ }{%
+ \ifboolKV[Boulot]{LivreHeros}{%
+ \setKV[LivreHeros]{#2}%
+ \TikzLivreHeros%
+ \let\exercice\ExoGBWrite\let\endexercice\endExoGBWrite%
+ \AddToHook{env/Maquette/end}{%
+ \xdef\PfMListeExoGB{}%
+ \xintFor* ##1 in{\xintSeq{2}{\thePfMExo}}\do{%
+ \xdef\PfMListeExoGB{\PfMListeExoGB,##1}%
+ }%
+ \MelangeListe{\PfMListeExoGB}{\fpeval{\thePfMExo-1}}%
+ \xdef\PfMFooMelange{1,\faa}%
+ \setsepchar{,}\ignoreemptyitems\readlist*\ListePerm{\PfMFooMelange}\reademptyitems%
+ \phantomsection{}
+ \addcontentsline{toc}{section}{\useKV[LivreHeros]{Theme}}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \itemtomacro\ListePerm[##1]\PfMPermute%
+ \begin{tcolorbox}[tikzLH,title=##1]%
+ \refstepcounter{PfMGameBook}%
+ \input{\jobname-Ma\thePfMMaquette-Ex\PfMPermute.gb}%
+ \end{tcolorbox}%
+ }%
+ }%
+ }{}%
+ }%
+ }%
+ }%
+ }%
}%
- }{}%
+ }%
}%
}%
}%
@@ -3751,11 +4133,6 @@
}%
}%
}%
-}%
-}%
-}%
-}%
-}%
}{}%
\makeatother
%D'après JCC
@@ -4391,8 +4768,9 @@
\BaremeEspaceMarge{-82pt}
}
-\AddToHook{env/multicols/begin}{\setcounter{Nbcolonnes}{2}}%
-\AddToHook{env/multicols/after}{\setcounter{Nbcolonnes}{4}}%
+%\AddToHook{env/multicols/begin}{\setcounter{Nbcolonnes}{2}}%
+%\AddToHook{env/multicols/after}{\setcounter{Nbcolonnes}{4}}%
+
\NewDocumentEnvironment{Dispo}{sm+b}{%
\ifPfMDeuxColonnes
\IfBooleanTF{#1}{%
@@ -4468,4 +4846,114 @@
}%
\fi%
\end{align*}
+}{}%
+
+\def\RetiensEchelle{1cm}
+\def\ChoixNbQuestions{3}
+\makeatletter
+\if@CAN
+ \AddToHook{env/document/before}{%
+ \ProvidesPackage{ProfMaquette}[Mode CAN (CP)]%
+ \RequirePackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper,landscape]
+ }
+\fi
+
+\if@Revision
+ \AddToHook{env/document/before}{%
+ \ProvidesPackage{ProfMaquette}[Mode Revision (CP)]%
+ \setcounter{Nbcolonnes}{2}%
+ \def\RetiensEchelle{0.5cm}
+ \RequirePackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper]
+ }
+\fi
+
+\if@Personnel
+ \input{PfMPerso.cfg}
+\fi
+\makeatother
+
+% enumitem obligatoire ^^
+\RequirePackage{enumitem}
+% d'après https://tex.stackexchange.com/questions/164613/adding-code-at-the-end-of-each-list-item
+\newif\iffirstlegal\firstlegalfalse% We need a toggle to track whether the item is first in the list or not
+
+\newlist{Test}{enumerate}{3}
+
+\def\PfMPar{\par}
+
+\NewDocumentCommand\litem{}{}
+
+\let\olditem\item% save the standard definition of \item in a macro, \olditem
+
+\setlist[Test,1]{%
+ leftmargin=*,
+ label=\arabic*.,
+ before={%
+ \setcounter{PfMProfondeur}{1}%
+ \setcounter{PfMNbLignesFinitem}{0}
+ \firstlegaltrue% set the toggle for first item in the list to true
+ \def\Primeitem{\iffirstlegal\olditem\stepcounter{PfMNbLignesFinitem}%
+ \firstlegalfalse
+ \else
+ \ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]}\else\ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]=1\relax\PfMPar\pointilles\fi\fi%
+ \olditem\stepcounter{PfMNbLignesFinitem}%
+ \fi
+ }% new, temporary defition of \item
+ \let\litem\Primeitem
+ \let\item\litem
+ },
+ after={%
+ \ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]>0\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]}\else\ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]=1\relax\PfMPar\pointilles\fi\fi%
+ % fill for final item in list
+ \let\litem\olditem% restore standard definition of \item
+ \let\item\olditem
+ \setcounter{PfMProfondeur}{0}%
+ }%
+}%
+
+\setlist[Test,2]{%
+ leftmargin=*,
+ label=(\alph*),
+ before={%
+ \setcounter{PfMProfondeur}{2}%
+ \setcounter{PfMNbLignesFinitemi}{0}
+ \firstlegaltrue%
+ \def\Seconditem{\iffirstlegal\olditem\stepcounter{PfMNbLignesFinitemi}\firstlegalfalse\else%
+ \ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]}\else\ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]=1\relax\PfMPar\pointilles\fi
+ \fi%
+ \olditem\stepcounter{PfMNbLignesFinitemi}
+ \fi
+ }% new, temporary defition of \item
+ \let\litem\Seconditem
+ \let\item\litem
+ },
+ after={%
+ \ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]}\else\ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]=1\relax\PfMPar\pointilles\fi
+ \fi%
+% % fill for final item in list
+ \let\litem\Primeitem%
+ \let\item\litem
+ \setcounter{PfMProfondeur}{1}%
+ }%
+}
+
+\newcounter{PfMNbLignesFinitem}
+\newcounter{PfMNbLignesFinitemi}
+\newcounter{PfMProfondeur}
+\setcounter{PfMProfondeur}{0}%
+
+\NewDocumentEnvironment{autoenumerate}{O{}m +b}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \ifnum\thePfMProfondeur=0\relax%
+ \readlist*\PfMListeDesAjoutsdeLignes{#2}%
+ \else%
+ \readlist*\PfMListeDesAjoutsdeLignesi{#2}%
+ \fi%
+ \begin{Test}[#1]%
+ #3
+ \end{Test}%
}{}% \ No newline at end of file