summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profmaquette/latex/ProfMaquette.sty')
-rw-r--r--macros/latex/contrib/profmaquette/latex/ProfMaquette.sty674
1 files changed, 473 insertions, 201 deletions
diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
index da9aafbfe0..9aa462bb76 100644
--- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/03/26}%
+\def\filedate{2024/05/02}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.90}%
+\def\fileversion{0.94}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -33,20 +33,20 @@
\RequirePackage{modulus}%
-% mettre un option Dys
\RequirePackage{ragged2e}%
\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,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false,VersSolution=false,Small=false,Footnotesize=false,Scriptsize=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,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é
\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[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}%
@@ -58,7 +58,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}%
+\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}%
\defKV[ClesExercices]{TitreSolution=\setKV[ClesExercices]{TitreSol}}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
@@ -86,12 +86,28 @@
\IfNoValueTF{#1}{\PfMDotfill}{\makebox[#1]{\PfMDotfill}}%
}%
%
-\NewDocumentCommand\PfMLignespointilles{m}{%
- \xintifboolexpr{\fpeval{#1}>1}{%
- \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{%
- \PfMpointilles\par%
- }%
- }{}%
+\NewDocumentCommand\PfMNbLignesRestantes{}{%
+ \edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
+ \xdef\PfMResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
+}%
+
+\NewDocumentCommand\PfMLignesFinales{}{%
+ \PfMNbLignesRestantes%
+ \xintFor* ##1 in {\xintSeq {1}{\PfMResteLignes}}\do{%
+ \PfMpointilles\par%
+ }%
+}%
+
+\NewDocumentCommand\PfMLignespointilles{sm}{%
+ \IfBooleanTF{#1}{%
+ \par\PfMLignesFinales%
+ }{%
+ \xintifboolexpr{\fpeval{#2}>1}{%
+ \xintFor* ##1 in {\xintSeq {1}{#2}}\do{%
+ \PfMpointilles\par%
+ }%
+ }{}%
+ }%
}%
% Definition de longueurs
\newlength\PfMLargeurSchemaParcours%
@@ -108,12 +124,14 @@
\newlength\PfMEspaceAvantLignes%
\newlength\PfMEspaceApresLignes%
\newlength\PfMLargeurComp
-\newlength\CRRHauteur
+\newlength\CRRHauteur%
+\newlength\PfMEcartSupInterMots%
\setlength{\CRRHauteur}{10cm}
\setlength{\PfMHauteurAppreciation}{5cm}%
\setlength{\PfMHauteurRemarque}{5cm}%
\setlength{\PfMEspaceAvantLignes}{1em}
\setlength{\PfMEspaceApresLignes}{1em}
+\setlength{\PfMEcartSupInterMots}{1pt}%
% définition des compteurs
\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
\setcounter{PfMMaquette}{0}%
@@ -123,6 +141,8 @@
\setcounter{PfMExo}{0}%
\newcounter{PfMExoSol}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution
\setcounter{PfMExoSol}{0}%
+\newcounter{PfMExoEntrai}%Pour repérer les entrainements
+\setcounter{PfMExoEntrai}{0}%
\newcounter{PfMCorrigeParcoursPerso}%affichage des solutions ou pas dans le cadre d'un parcours perso
\setcounter{PfMCorrigeParcoursPerso}{0}%
\newcounter{PfMSOS}%Numéro des SOS dans les parcours fléchés
@@ -142,6 +162,8 @@
\newcounter{Nbcolonnes}
+\newbox\PfMSauvegardeBox%
+
\newif\ifPfMDeuxColonnes
\newif\ifPfMRectoVerso
\makeatletter
@@ -196,13 +218,14 @@
}
}
-\NewDocumentEnvironment{Consignes}{}{%
+\NewDocumentEnvironment{Consignes}{b}{%
\ifboolKV[Boulot]{CAN}{}{%
\begin{tcolorbox}[consignes]%
\small\sffamily
+ #1
}%
}{%
-\end{tcolorbox}%
+\ifboolKV[Boulot]{CAN}{}{\end{tcolorbox}}%
}%
%% Option french pour les mathématiques
@@ -218,6 +241,15 @@
\repeat
}%
+% On bloque la graine de fabrication des nombres aléatoires.
+\ExplSyntaxOn
+\cs_new_eq:NN \PfMGraineAlea \sys_gset_rand_seed:n
+\ExplSyntaxOff
+
+\ExplSyntaxOn
+\cs_new_eq:NN \PfMChoisisGraineAlea \int_rand:n
+\ExplSyntaxOff
+
%% Gestion de l'affichage ou pas des item (Pour élèves PAP) par exemple
% Code by egreg : https://tex.stackexchange.com/questions/627250/hide-specific-item-in-a-list
\ExplSyntaxOn
@@ -874,7 +906,7 @@
\]%
}%
%
-%%%%
+%
%%% Définitions des environnements pour la correction
\makeatletter
\newwrite\verbatim@out
@@ -1019,13 +1051,14 @@
}%
\def\PfMTexteDuCorrige{Corrigé de l'exercice}
+\def\PfMTexteDeLEntrainement{Automatisme(s) lié(s) à l'exercice}
\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~\ref{TestCAN-##1}:\fi}~\input{\jobname-Ex##1.sol}\par\goodbreak}{}%page-\thePfMMaquette-##1
+ \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
}%
}{%
\setcounter{PfMExoSol}{0}%
@@ -1033,14 +1066,51 @@
\refstepcounter{PfMExoSol}%{##1}%
\label{pagesol-\thePfMMaquette-\thePfMExoSol}
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\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~\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~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}%
+ \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}{}%
}%
}%
\PfMshowitems%
}%
}%
}%
+
+\NewDocumentEnvironment{Entrainement}{}{}{}%
+
+\makeatletter
+\def\EntrainementWrite{%
+ \@bsphack%
+ \immediate\openout \verbatim@out "\jobname-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
+ \TikzAutomatismes
+ \setcounter{PfMExoEntrai}{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \refstepcounter{PfMExoEntrai}%
+ \IfFileExists{\jobname-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}}{}%
+ }%
+}%
+
+\NewDocumentCommand\TikzAutomatismes{}{%
+ \begin{tcolorbox}
+ \begin{center}
+ \Large\sffamily Automatismes%
+ \end{center}
+ \end{tcolorbox}%
+}%
%%%%%%%% BAREME %%%%%%%%%%%
%% Bareme
\newlength{\brouillon}
@@ -1174,7 +1244,18 @@
\node[%
fill=tcbcolback,%
anchor=center,%
- ] at (frame.east){\hyperref[pagesol-\thePfMMaquette-\thePfMExo]{\faKey}};%
+ ] at ($(frame.north east)!0.25!(frame.south east)$){\hyperref[pagesol-\thePfMMaquette-\thePfMExo]{\faKey}};%
+ }%
+ }{}%
+}%
+
+\NewDocumentCommand{\PfMLienVersEntrainement}{}{%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \ifboolKV[ClesExercices]{PasEntrainement}{}{%
+ \node[%
+ fill=tcbcolback,%
+ anchor=center,rotate=45%
+ ] at ($(frame.north east)!0.75!(frame.south east)$){\hyperref[pageentrai-\thePfMMaquette-\thePfMExo]{\faDumbbell}};%
}%
}{}%
}%
@@ -1207,8 +1288,8 @@
colback=LightSteelBlue,
colbacklower=white,
frame hidden,
- }
-}
+ }%
+}%
\tcbset{%
tikzbasehtml/.style={%
@@ -1265,7 +1346,7 @@
}%
}%
-\NewDocumentEnvironment{exerciceDM}{so}{%
+\NewDocumentEnvironment{exerciceDM}{so+b}{%
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
@@ -1280,6 +1361,7 @@
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{%
\string\opcopy{\thePfMExo}{TotalExo}%
@@ -1294,11 +1376,17 @@
label=page-\thePfMMaquette-\thePfMExo,%
]%
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- }
+ #3
+}%
+}%
}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{
\end{tcolorbox}%
\PfMApresLesExercices%
}%
+}%
+}%
%%Contrat
@@ -1421,16 +1509,16 @@
}%
-\NewDocumentEnvironment{exerciceContrat}{so}{%
+\NewDocumentEnvironment{exerciceContrat}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#2}%
\ifboolKV[ClesExercices]{NonUtilise}{%
% Mettre la correction hors-jeu
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
}{%
- \setKV[ClesExercices]{#2}%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
@@ -1438,6 +1526,7 @@
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ContratTotalExo}}%
% Creation des parcours
@@ -1457,10 +1546,16 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ }%
}%
}{%
- \end{tcolorbox}
- \PfMApresLesExercices%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \end{tcolorbox}
+ \PfMApresLesExercices%
+ }%
+ }%
}%
%%% Contrat %%%
@@ -1519,6 +1614,8 @@
\PfMAffichageSource%
%
\PfMLienVersSolution%
+ %
+ \PfMLienVersEntrainement%
}%
}%
}%
@@ -1767,7 +1864,7 @@
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}FdR#1\endcsname{\csname \Roman{PfMMaquette}route#1\endcsname}}%
}%
-\NewDocumentEnvironment{exerciceFdR}{so}{%
+\NewDocumentEnvironment{exerciceFdR}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
@@ -1784,6 +1881,7 @@
\stepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-FdRTotalExo}}%
% Creation des parcours
@@ -1816,11 +1914,17 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ }%
}%
}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}
\PfMApresLesExercices%
}%
+}%
+}%
%CAN
\setsepchar[*]{,*/}%
@@ -1830,7 +1934,7 @@
\setsepchar{,}%
\readlist*\ListePetitsObjets{bonbons,billes,biscuits,gommes,clous,vis,cahiers,trousses}%
\readlist*\ListeFruits{pommes,poires,abricots,cerises,fraises,framboises,noix,pêches,nectarines,myrtilles,oranges,mandarines,kiwis}%
-\readlist*\ListeVariables{a,b,c,m,n,p,r,s,t,x,y,z}%
+\readlist*\ListeVariables{a,b,c,\ell,m,n,p,r,s,t,x,y,z}%
\makeatletter
\def\ExoCANWrite{%
@@ -1984,13 +2088,14 @@
\PfMAffichageSource%
%
\PfMLienVersSolution%
+ %
+ \PfMLienVersEntrainement%
}%
}%
}%
%% Fin FdR %%%
-
-%%Parcours
+%% Parcours
%\makeatletter
\NewDocumentCommand\AfficheParcours{om}{%
@@ -2100,7 +2205,7 @@
\def\endexerciceParcoursPerso{\immediate\write\verbatim@out{\string\end{exercice}}\immediate\closeout\verbatim@out\@esphack}%
-\NewDocumentEnvironment{exerciceParcours}{so}{%
+\NewDocumentEnvironment{exerciceParcours}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
@@ -2117,6 +2222,7 @@
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ParcoursTotalExo}}%
% Creation des parcours
@@ -2136,11 +2242,17 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- }
+ #3
+ }%
+ }%
}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
\end{tcolorbox}
\PfMApresLesExercices%
}%
+}%
+}%
%%%%%%%%%%%%%%%%%%%%%%%
% Pour encart
@@ -2232,9 +2344,9 @@
\NewDocumentCommand\PfMChoixHideItemSolution{}{%
\ifboolKV[ClesExercices]{Profile}{%
- % J'ai un élève à profile Je dois me souvenir que la correction doit être profilée. Le compteur PfMExo vaut \thePfMExo
+ % J'ai un élève à profil : Je dois me souvenir que la correction doit être profilée. Le compteur PfMExo vaut \thePfMExo
\expandafter\xdef\csname PfMHideSol\Roman{PfMExo}\endcsname{A}}{%
- %Je n'ai pas d'élève à profile
+ %Je n'ai pas d'élève à profil
\expandafter\xdef\csname PfMHideSol\Roman{PfMExo}\endcsname{}%
}%
}%
@@ -2249,7 +2361,9 @@
\fi%
}%
-\NewDocumentEnvironment{exerciceFiche}{so}{%
+\newbox\PfMBoxSauvegarde%
+
+\NewDocumentEnvironment{exerciceFiche}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
@@ -2278,6 +2392,49 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ %
+ #3
+ }%
+ }%
+ }{%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \end{tcolorbox}%
+ \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
+ \PfMApresLesExercices%
+ }%
+ }%
+}%
+
+\NewDocumentEnvironment{exerciceOlympiadesAPMEP}{so}{%
+ \setcounter{PfMAlea}{0}%
+ \setcounter{PfMNbLogo}{1}%
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#2}%
+ \ifboolKV[ClesExercices]{NonUtilise}{%
+ % Mettre la correction hors-jeu
+ \setKV[ClesExercices]{PasCorrige}%
+ \PfMChoixCorrection%
+ }{%
+ \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}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMChoixTitreSolution%
+ \PfMChoixHideItemSolution%
+ \begin{tcolorbox}[%
+ tikzOlympiadesAPMEP,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}%
}%
}{%
@@ -2288,7 +2445,7 @@
}
}%
-\NewDocumentEnvironment{exerciceDS}{so}{%
+\NewDocumentEnvironment{exerciceDS}{so+b}{%
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
@@ -2297,31 +2454,38 @@
\setKV[ClesExercices]{PasCorrige}%
\PfMChoixCorrection%
}{%
- \IfBooleanTF{#1}{%
- \setKV[ClesExercices]{Numerote=false}%
- }{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
- \PfMChoixTitreSolution%
- \immediate\write\@auxout{%
- \string\opcopy{\thePfMExo}{TotalExo}%
- }
- \ifboolKV[ClesExercices]{BaremeTotal}{%
- \immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }}{}
- \begin{tcolorbox}[%
- tikzds,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
- }%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
+ \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
+ \refstepcounter{PfMSection}%
+ \PfMChoixCorrection%
+ \refstepcounter{PfMExo}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMChoixTitreSolution%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }
+ \ifboolKV[ClesExercices]{BaremeTotal}{%
+ \immediate\write\@auxout{%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
+ }}{}
+ \begin{tcolorbox}[%
+ tikzds,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ }%
+ }%
}{%
- \end{tcolorbox}%
- \PfMApresLesExercices%
+ \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
+ }%
+ }%
}%
\NewDocumentEnvironment{ExerciceRecapBrevet}{so}{%
@@ -2371,10 +2535,10 @@
% Fiche Exercice Brevet
\newcommand\TikzRecapBrevet{%
\begin{tcolorbox}[userbrevet]%
- \Large\sffamily \useKV[RecapBrevet]{Theme}
- \par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}}
+ \Large\sffamily \useKV[RecapBrevet]{Theme}%
+ \par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}}%
\end{tcolorbox}%
-}
+}%
\newcommand\TikzRecapBrevetCor[1]{%
\clearpage
@@ -2666,6 +2830,7 @@
%Alias pour tous les exercices.
\NewDocumentEnvironment{exercice}{}{}{}%
+\NewDocumentEnvironment{Exercice}{}{}{}%
%%%%%%%%% STyle Kholle%%%%%%%%%%
% Kholle
@@ -2899,6 +3064,40 @@
\PfMAffichageSource%
% Lien vers la solution
\PfMLienVersSolution
+ % Lien vers les entrainements
+ \PfMLienVersEntrainement
+ }%
+ }%
+}%
+\makeatother
+
+\makeatletter
+\tcbset{%
+ tikzOlympiadesAPMEP/.style={%
+ top=10pt,
+ left=0mm,right=0mm,
+ before skip=1em,
+ enhanced,
+ breakable,
+ colback=ColExoFiche,
+ % colframe=PfMCadreFiche,
+ frame hidden,
+ overlay unbroken and first={%
+ \draw[colLogo,line width=1pt] ([yshift=-10pt]frame.north west)--([yshift=-10pt]frame.north east);
+ \node[%
+ name=A,
+ fill=ColExoFiche,
+ anchor=west,
+ xshift=\kvtcb@leftlower,
+ ] at (frame.north west){\color{colLogo}\resizebox{1em}{!}{\carreEntoure{}}~\Large\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{.~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{.~}}\useKV[ClesExercices]{Titre}}{}};
+ %%
+ \PfMAffichageLogos%
+ %
+ \PfMAffichageCompetencesTravaillees%
+ %
+ \PfMAffichageSource%
+ % Lien vers la solution
+ \PfMLienVersSolution
}%
}%
}%
@@ -2958,6 +3157,8 @@
\PfMAffichageSource%
%
\PfMLienVersSolution%
+ %
+ \PfMLienVersEntrainement%
}%
}%
}%
@@ -3098,9 +3299,14 @@
\end{tcolorbox}%
}%
-\NewDocumentCommand\Recapitulatif{m}{%
- \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{%
- \begin{Maquette}[Fiche]{#1,Code=\normalsize\Prenom~\Nom}%
+\NewDocumentCommand\Recapitulatif{mm}{%
+ \setKV[Boulot]{#1}%
+ \DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{%
+ \ifboolKV[Boulot]{Dys}{%
+ \begin{Maquette}[Fiche,Dys]{#2,Code=\normalsize\Prenom~\Nom}%
+ }{%
+ \begin{Maquette}[Fiche]{#2,Code=\normalsize\Prenom~\Nom}%
+ }%
\readlist*\ListeExercices{\RecapListeExo}%
\ifnum\fpeval{\ListeExerciceslen}=1\relax{}
\setKVdefault[ClesExercices]{Numerote=false}
@@ -3143,27 +3349,34 @@
}%
}%
+\NewDocumentCommand\PfMFontDys{}{}%
+\NewDocumentCommand\PfMFontNonDys{}{}%
+
\NewDocumentCommand\PfMBasculeDys{}{%
\ifboolKV[Boulot]{Dys}{%
- % d'après \url{https://culturedys.com/quelle-est-la-meilleure-police-pour-les-dyslexiques/}
- \xdef\PfMTaillePointDys{\useKV[Boulot]{Taille}}
+ % d'après \url{https://culturedys.com/quelle-est-la-meilleure-police-pour-les-dyslexiques/}
+ \xdef\PfMTaillePointDys{\useKV[Boulot]{Taille}}%
\fontsize{\PfMTaillePointDys}{\fpeval{\PfMTaillePointDys*1.2*1.5}}\selectfont%
\raggedright%
+ \setlength{\spaceskip}{\PfMEcartSupInterMots+\fontdimen2\font}%
+ \PfMFontDys%
}{%
\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%
+ %\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}
\justifying%
\fi%
+ \PfMFontNonDys%
}%
}%
@@ -3181,6 +3394,30 @@
}%
}%
+%% Pour factoriser l'appel aux corrections dans l'environnement Maquette
+\NewDocumentCommand\PfMPrepareCorrection{m}{%
+ \useKVdefault[Boulot]%
+ \setKV[Boulot]{#1}%
+ \if@Dyslexie%
+ \setKV[Boulot]{Dys}%
+ \fi%
+ \PfMBasculeDys%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMChangerTailleCorrection%
+}%
+
+\NewDocumentCommand\PfMAffichageCorrectionColonnes{}{%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+}%
+
+\NewDocumentCommand\PfMAffichageEntrainementColonnes{}{%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageEntrainement%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+}%
+
%%%%%%%%%%%%%%% Debut Maquette %%%%%%%
% Environnement englobant le tout.
\makeatletter
@@ -3196,7 +3433,7 @@
\stepcounter{PfMMaquette}%
% options de boulot
\IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
- \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
+ %\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
% \AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}%
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
@@ -3209,74 +3446,123 @@
% Test
\IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}%
\IfHookExistsTF{env/Maquette/end}{\RemoveFromHook{env/Maquette/end}[*]}{}%
- \ifboolKV[Boulot]{CAN}{%
- \setKV[CAN]{#2}%
- \ifboolKV[Boulot]{CorrigeSeul}{}{\TikzCAN}%
- \PfMChangerTailleCorrection%
- \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\PfMCANTotalExo{\thePfMExo}%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
- \setcounter{PfMExo}{0}%
- \renewcommand{\arraystretch}{2}%
- \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
- \hhline{~---}%
- \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\%
- \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&\\
- \hline%
- }%
- \end{longtable}%
- \renewcommand{\arraystretch}{1}%
- }%
- }%
+ \ifboolKV[Boulot]{OlympiadesAPMEP}{%
+ \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP%
+ \let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzCANCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- }%
- }{}%
+ \PfMPrepareCorrection{#1}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{CAN}{%
+ \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\PfMCANTotalExo{\thePfMExo}%
+ \setbox\PfMSauvegardeBox\vbox{%
+ \PfMGraineAlea{\thePfMMaquette}
+ \setcounter{PfMExo}{0}%
+ \renewcommand{\arraystretch}{2}%
+ \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
+ \hhline{~---}%
+ \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\%
+ \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&\\
+ \hline%
+ }%
+ \end{longtable}%
+ \renewcommand{\arraystretch}{1}%
+ }
+ \ifboolKV[Boulot]{CorrigeInverse}{%
+ \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}|}%
+ \hhline{~---}%
+ \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\%
+ \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&\\
+ \hline%
+ }%
+ \end{longtable}%
+ \renewcommand{\arraystretch}{1}%
+ }{%
+ \PfMGraineAlea{\PfMAncienneGraine}%
+ \TikzCAN%
+ \setcounter{PfMCNNumQ}{0}%
+ \setcounter{PfMExo}{0}%
+ \renewcommand{\arraystretch}{2}%
+ \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
+ \hhline{~---}%
+ \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\%
+ \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&\\
+ \hline%
+ }%
+ \end{longtable}%
+ \renewcommand{\arraystretch}{1}%
+ \ifboolKV[Boulot]{CorrigeFin}{\ifboolKV[Boulot]{CorrigeInverse}{}{\clearpage
+ \PfMPrepareCorrection{#1}%
+ \TikzCANCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }
+ }{}
+ }
+ }%
}{%
- \ifboolKV[Boulot]{FdR}{%
- \setKV[FdR]{#2}\TikzFdR%
- \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
+ \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]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
\TikzFdRCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
- \ifboolKV[Boulot]{Contrat}{%
- \setKV[Contrat]{#2}\TikzContrat%
- \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
+ \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}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzContratCor{#2}
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzContratCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
@@ -3286,14 +3572,9 @@
\let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}%
\TikzFicheCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
@@ -3303,14 +3584,9 @@
\let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}%
\TikzRecapBrevetCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
@@ -3321,54 +3597,50 @@
\ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
\setcounter{PfMExo}{0}%
\AtEndDocument{%
- \Recapitulatif{#2}%
+ \Recapitulatif{#1}{#2}%
}%
}{%
\ifboolKV[Boulot]{Parcours}{%
- \setKV[Parcours]{#2}\TikzParcours%
- \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
+ \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]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}%
\TikzParcoursCor{#2}
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
\ifboolKV[Boulot]{PdT}{%
- \setKV[PdT]{#2}\TikzPdT%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[PdT]{#2}\TikzPdT%
+ }
\let\exercice\exercicePdT\let\endexercice\endexercicePdT%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}%
\TikzPdTCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
\ifboolKV[Boulot]{DM}{%
- \setKV[DM]{#2}\TikzDM{}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DM]{#2}\TikzDM%
+ }
\let\exercice\exerciceDM\let\endexercice\endexerciceDM%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}%
\TikzDMCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
@@ -3378,14 +3650,16 @@
\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]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzFicheCor{#2}%
+ \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}{}%
@@ -3409,6 +3683,9 @@
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
%%
+ \if@Dyslexie
+ \setKV[Boulot]{Dys}
+ \fi
\PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzFicheCor{#2}%
@@ -3421,7 +3698,9 @@
}{}%
}{%
\ifboolKV[Boulot]{DS}{%
- \setKV[DS]{#2}\TikzDS%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DS]{#2}\TikzDS%
+ }%
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%
\ifboolKV[Boulot]{BaremeComplet}{%
\begin{center}
@@ -3430,30 +3709,22 @@
}{}%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzDSCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMPrepareCorrection{#1}
+ \TikzDSCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
\ifboolKV[Boulot]{IE}{%
- \setKV[IE]{#2}\TikzIE%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[IE]{#2}\TikzIE%
+ }
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \PfMPrepareCorrection{#1}
\TikzIECor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
@@ -3480,7 +3751,8 @@
}%
}%
}%
- }%
+}%
+}%
}%
}%
}%