summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-01-03 21:19:10 +0000
committerKarl Berry <karl@freefriends.org>2024-01-03 21:19:10 +0000
commit4cf5c509b3fe6338c8a2c8f4800e7a49033e4259 (patch)
treef83f86895fd8294d5a0981f83e4c6134e04d5d86 /Master
parent1c739fc36f1e3f221e786e20636ba6478c377cdc (diff)
profmaquette (3jan24)
git-svn-id: svn://tug.org/texlive/trunk@69287 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdfbin267874 -> 275467 bytes
-rw-r--r--Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.tex71
-rw-r--r--Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty415
3 files changed, 371 insertions, 115 deletions
diff --git a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf b/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf
index d3c757b5d4a..a8568b7ecaa 100644
--- a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf
+++ b/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.tex b/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.tex
index f7ed9229940..69ae2dafddc 100644
--- a/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.tex
+++ b/Master/texmf-dist/doc/latex/profmaquette/ProfMaquette-doc.tex
@@ -125,7 +125,7 @@
texcsstyle=*\color{black},%pour colorer la contre-oblique
classoffset=5,
texcsstyle=*\color{blue},%pour colorer la contre-oblique
- moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux,TikzContrat,TikzContratCor,TikzFdR,TikzFdRCor,AfficheContrat,AfficheFdR,TikzCAN,TikzCANCor,Complement},
+ moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux,TikzContrat,TikzContratCor,TikzFdR,TikzFdRCor,AfficheContrat,AfficheFdR,TikzCAN,TikzCANCor,Complement,PfMTexteEncart,PfMEspaceAvantLignes,PfMEspaceApresLignes},
emph={Maquette,exercice,Solution,Reponse,Indice},%
classoffset=1,
keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours,FdR,Contrat,CAN,Dys},
@@ -134,10 +134,10 @@
keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type,CoefQ,CoefR,CoefJ},
keywordstyle=\color{BlueViolet},%DarkMagenta},
classoffset=3,
- keywords={Pouce,Direct,PasCorrige,BaremeDetaille,BaremeTotal,Source,Titre,Oral,Calculatrice,Competence,Trajet,Confiance,Route,Stop},
+ keywords={Pouce,Direct,PasCorrige,BaremeDetaille,BaremeTotal,Source,Titre,Oral,Calculatrice,Competence,Trajet,Confiance,Route,Stop,Lignes,Encart},
keywordstyle=\color{DarkGreen},
classoffset=4,
- keywords={userfiche,userfichecor,userdm,userdmcor,userie,useriecor,userds,userdscor,userparcours,userparcourscor,userpdt,userpdtcor,usercours,usercontrat,usercontratcor,userfdr,userfdrcor},
+ keywords={userfiche,userfichecor,userdm,userdmcor,userie,useriecor,userds,userdscor,userparcours,userparcourscor,userpdt,userpdtcor,usercours,usercontrat,usercontratcor,userfdr,userfdrcor,usercan,usercancor},
keywordstyle=\color{Purple},
% delim = **[s][\color{purple}]{$}{$},
% moredelim = **[s][\color{purple}]{\\[}{\\]},
@@ -635,15 +635,15 @@ Le code suivant montre, à la page suivante, les effets de cette clé \Cle{Dys}.
Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes associées à des styles prédéfinis.\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} \lstinline!tcolorbox! :
\begin{itemize}[label=\textbullet]
\item \lstinline!userdm / userdmcor! pour la clé \Cle{DM};
-\item \lstinline!userds/userdscor! pour la clé \Cle{DS};%
-\item \lstinline!userie/useriecor! pour la clé \Cle{IE};%
-\item \lstinline!userfiche/userfichecor! pour la clé \Cle{Fiche};%*
-\item \lstinline!userparcours/userparcourscor! pour la clé \Cle{Parcours};%*
-\item \lstinline!userpdt/userpdtcor! pour la clé \Cle{PdT};%*
+\item \lstinline!userds / userdscor! pour la clé \Cle{DS};%
+\item \lstinline!userie / useriecor! pour la clé \Cle{IE};%
+\item \lstinline!userfiche / userfichecor! pour la clé \Cle{Fiche};%*
+\item \lstinline!userparcours / userparcourscor! pour la clé \Cle{Parcours};%*
+\item \lstinline!userpdt / userpdtcor! pour la clé \Cle{PdT};%*
\item \lstinline!usercours! pour la clé \Cle{Cours};
-\item \lstinline!usercontrat/usercontratcor! pour la clé \Cle{Contrat};%*
-\item \lstinline!userfdr/userfdrcor! pour la clé \Cle{FdR};%*
-\item et \lstinline!usercan/usercancor! pour la clé \Cle{CAN}.
+\item \lstinline!usercontrat / usercontratcor! pour la clé \Cle{Contrat};%*
+\item \lstinline!userfdr / userfdrcor! pour la clé \Cle{FdR};%*
+\item et \lstinline!usercan / usercancor! pour la clé \Cle{CAN}.
\end{itemize}
Par exemple, pour une fiche, le style {\em par défaut} permet d'obtenir :
@@ -684,16 +684,16 @@ on obtient :
Pour modifier {\em plus finement} les entêtes des différentes maquettes, on dispose des commandes :
\begin{itemize}[label=\textbullet]
-\item \lstinline!\TikzDM/\TikzDMCor! pour la clé \Cle{DM};
-\item \lstinline!\TikzDS/\TikzDSCor! pour la clé \Cle{DS};%
-\item \lstinline!\TikzIE/\TikzIECor! pour la clé \Cle{IE};%
-\item \lstinline!\TikzFiche/\TikzFicheCor! pour la clé \Cle{Fiche};%*
-\item \lstinline!\TikzParcours/\TikzParcoursCor! pour la clé \Cle{Parcours};%*
-\item \lstinline!\TikzPdT/\TikzPdTCor! pour la clé \Cle{PdT};%*
+\item \lstinline!\TikzDM / \TikzDMCor! pour la clé \Cle{DM};
+\item \lstinline!\TikzDS / \TikzDSCor! pour la clé \Cle{DS};%
+\item \lstinline!\TikzIE / \TikzIECor! pour la clé \Cle{IE};%
+\item \lstinline!\TikzFiche / \TikzFicheCor! pour la clé \Cle{Fiche};%*
+\item \lstinline!\TikzParcours / \TikzParcoursCor! pour la clé \Cle{Parcours};%*
+\item \lstinline!\TikzPdT / \TikzPdTCor! pour la clé \Cle{PdT};%*
\item \lstinline!\TikzCours! pour la clé \Cle{Cours};
-\item \lstinline!\TikzContrat/\TikzContratCor! pour la clé \Cle{Contrat};%*
-\item \lstinline!\TikzFdR/\TikzFdRCor! pour la clé \Cle{FdR};%*
-\item et \lstinline!\TikzCAN/\TikzCANCor! pour la clé \Cle{CAN}.%*
+\item \lstinline!\TikzContrat / \TikzContratCor! pour la clé \Cle{Contrat};%*
+\item \lstinline!\TikzFdR / \TikzFdRCor! pour la clé \Cle{FdR};%*
+\item et \lstinline!\TikzCAN / \TikzCANCor! pour la clé \Cle{CAN}.%*
\end{itemize}
Leurs modifications seront facilitées en copiant le code fourni par le fichier \lstinline!ProfMaquette.sty!.
@@ -725,7 +725,7 @@ Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera le
\end{exercice}
\end{Codes}
\subsection*{Habillage des exercices}
-L'environnement \lstinline!exercice! doit {\em impérativement} être inclus dans un environnement \lstinline!Maquette! car le choix de document influence la présentation des exercices.
+L'environnement \lstinline!exercice! doit {\em impérativement} être inclus dans un environnement \lstinline!Maquette! car le type de document choisi influence la présentation des exercices.
\begin{Codes}[]{0.5}{}
\begin{Maquette}[IE]{Theme=Les fonctions,Niveau=3,Classe=Gide}
\begin{exercice}%
@@ -864,6 +864,29 @@ Si on souhaite citer la source d'un exercice ou lui donner un titre, on dispose
\end{Maquette}
\end{Description}
\clearpage
+\subsection*{Des parties à compléter ?}
+Après chaque exercice, on peut faire apparaître des zones à compléter.
+\begin{Description}
+\item[La clé \Cle{Lignes}] indique le nombre de lignes à tracer {\em après} la fin de l'exercice.\Defaut{-}
+\item[La clé \Cle{Encart}] indique l'espace à laisser {\em après} la fin de l'exercice.\Defaut{-}\\La valeur attendue est une longueur.
+\end{Description}
+\begin{Codes}[]{0.4}{}
+\begin{Maquette}[Fiche]{Theme=Nombres entiers}
+ \begin{exercice}[Lignes=5]
+ On considère un triangle $ABC$ tel que \dots
+ \end{exercice}
+ \begin{exercice}[Encart=5em]
+ On considère un triangle $ABC$ tel que \dots
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
+On peut modifier :
+\begin{itemize}
+\item l'espace vertical avant les lignes par {\em la longueur} \lstinline!\PfMEspaceAvantLignes!;\\\phantom{t}\Defaut{1em}
+\item l'espace vertical avant les lignes par {\em la longueur} \lstinline!\PfMEspaceApresLignes!;\\\phantom{t}\Defaut{1em}
+\item le texte d'introduction de l'encart par {\em la commande} \lstinline!\PfMTexteEncart!.
+\end{itemize}
+\clearpage
\subsection*{Des logos ?}
Les clés décrites dans cette partie ne sont disponibles que pour les maquettes
\lstinline!Fiche! / \lstinline!Parcours!.
@@ -1122,6 +1145,7 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose de l
\end{Maquette}
\clearpage
\subsection*{Focus sur la maquette \lstinline!FdR!}
+%\setcounter{}{0}
Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose des clés \Cle{Route} et \Cle{Stop} permettant de construire automatiquement une feuille de route. La commande \lstinline!\AfficheFdR{}! représente un schéma associé à la feuille de route construite par l'enseignant : l'élève réalise les exercices de la ligne du bas puis demande la validation de l'enseignant. Une fois la validation acquise, l'enseignant peut lui proposer de faire les exercices de la ligne du haut ou de poursuivre la feuille de route.
\\Ce schéma se construit seul, automatiquement, après que l'enseignant ait utilisé les clés \Cle{Route} et \Cle{Stop} dans la création de ses exercices. Il faudra néanmoins deux compilations et vérifier que chaque \og morceau\fg{} de route soit non vide (La ligne haute, quant à elle, pouvant être vide). \`A noter que ce schéma, avec l'utilisation du package \lstinline!hyperref!, dispose de liens cliquables sur les exercices sélectionnés pour le parcours.
\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{\scriptsize}
@@ -1274,7 +1298,7 @@ On peut gérer la correction des exercices à deux niveaux :
\end{Description}
Pour les maquettes \lstinline!ParcoursPerso! et \lstinline!CAN!, seule la clé \Cle{CorrigeFin} est autorisée.
-
+\clearpage
\begin{Codes}[listing only]{0.4}{\footnotesize}
\begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral}
\begin{exercice}% n'a pas de correction
@@ -1428,7 +1452,8 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
\clearpage
\section*{Historique}
\begin{description}
-\item[\PfMfiledate{}--v \PfMfileversion] Correction de bugs.
+\item[\PfMfiledate{}--v \PfMfileversion] Ajout des clés \lstinline!Lignes! et \lstinline!Encart! à l'environnement \lstinline!exercice!. Amélioration de la documentation.
+ %0.82 Correction de bugs.
%0.80 Ajout d'une clé \Cle{Dys} pour les élèves à profil particulier.
%0.75 Exercices {\em éventuellement} non numérotés. Correction de bugs (Feuille de route).
%0.65 Création du format CAN (Course aux nombres).
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
index 24267d36b58..6713b00c72b 100644
--- a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
+++ b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2023/12/20}%
+\def\filedate{2024/01/03}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.82}%
+\def\fileversion{0.85}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -59,7 +59,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}%
+\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,Cadres=false}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
\defKV[ClesExercices]{Competence=\setKV[ClesExercices]{AffichageCompetence}}%
@@ -67,9 +67,32 @@
\defKV[ClesExercices]{Confiance=\setKV[ClesExercices]{Contrat}}%
\defKV[ClesExercices]{Route=\setKV[ClesExercices]{Routes}}%
\defKV[ClesExercices]{Stop=\setKV[ClesExercices]{Stops}}%
+\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[SchemaContrat]{Ecart=7mm,Rayon=2.5mm}%
\setKVdefault[SchemaFdR]{Ecart=7mm,Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}%
+% Sucres
+\makeatletter%
+\NewDocumentCommand\PfMDotfill{}{%
+\leavevmode%
+\cleaders\hb@xt@.44em{\hss\xleaders\hrule width0.33em\hss}\hfill%
+\kern\z@}%
+
+%\makeatother%
+%
+\NewDocumentCommand\PfMpointilles{o}{%
+ \IfNoValueTF{#1}{\PfMDotfill}{\makebox[#1]{\PfMDotfill}}%
+}%
+%
+\NewDocumentCommand\PfMLignespointilles{m}{%
+ \xintifboolexpr{\fpeval{#1}>1}{%
+ \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{%
+ \PfMpointilles\par%
+ }%
+ }{}%
+}%
% Definition de longueurs
\newlength\PfMLargeurSchemaParcours%
\newlength\PfMRayonSchemaParcours%
@@ -82,8 +105,12 @@
\newlength\PfMLargeurQuestion%
\newlength\PfMLargeurReponse%
\newlength\PfMLargeurJury%
+\newlength\PfMEspaceAvantLignes%
+\newlength\PfMEspaceApresLignes%
\setlength{\PfMHauteurAppreciation}{5cm}%
\setlength{\PfMHauteurRemarque}{5cm}%
+\setlength{\PfMEspaceAvantLignes}{1em}
+\setlength{\PfMEspaceApresLignes}{1em}
% définition des compteurs
\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
\setcounter{PfMMaquette}{0}%
@@ -112,11 +139,12 @@
% couleurs
\colorlet{PfMColCpt}{gray!50}%
\colorlet{PfMColSrc}{gray!50}%
-%\colorlet{PfMCadreFiche}{gray!50}
+\colorlet{PfMCadreEncart}{gray!50}
\colorlet{PfMCadreDM}{gray!85}%
\colorlet{PfMCadreParcours}{gray!50}%
\colorlet{PfMCadreContrat}{gray!50}%
\colorlet{PfMCadreFdR}{gray!50}%
+\colorlet{PfMFondEncart}{white}%
% Définitions de commandes
\newcommand\PfMIENom{\dotfill}%
\newcommand\PfMIEPrenom{\dotfill}%
@@ -142,14 +170,14 @@
\NewDocumentEnvironment{Consignes}{+b}{%
\ifboolKV[Boulot]{CAN}{}{%
- \begin{tcolorbox}[consignes]
+ \begin{tcolorbox}[consignes]%
\small\sffamily #1
- \end{tcolorbox}
- }
+ \end{tcolorbox}%
+ }%
}{}%
-\definecolor{SLCP}{HTML}{00B51A}
-\colorlet{Evidence}{SLCP}
+\definecolor{SLCP}{HTML}{00B51A}%
+\colorlet{Evidence}{SLCP}%
% Pour la gestion de l'aléatoire
% afin de permettre d'utiliser le même exercice.
@@ -293,6 +321,150 @@
\xdef#4{\PfMMixFoo}%
}%
+\NewDocumentCommand\MelangeNomFonction{mm}{%
+ % #1 Nombre d'éléments à conserver
+ % #2 Nom de la commande qui conserve
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeInter{f,g,h,k,\ell,m,p,q,r,s,u,v,w}%%
+ \xdef\faa{}% Liste construite
+ \xdef\fii{}% Liste détruite
+ \xintFor* ##1 in {\xintSeq{1}{#1}}\do{%
+ \xintifboolexpr{#1==1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea]}%
+ }{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea],}%
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa\ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+ }%
+ \xdef#2{\faa}%
+}%
+
+\NewDocumentCommand\MelangeNomVariable{mm}{%
+ % #1 Nombre d'éléments à conserver
+ % #2 Nom de la commande qui conserve
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeInter{a,b,n,t,x,y,z}%
+ \xdef\faa{}% Liste construite
+ \xdef\fii{}% Liste détruite
+ \xintFor* ##1 in {\xintSeq{1}{#1}}\do{%
+ \xintifboolexpr{#1==1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea]}%
+ }{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea],}%
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa\ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+ }%
+ \xdef#2{\faa}%
+}%
+
+\NewDocumentCommand\ChoixAleaMultiMixRep{mmmmm}{%
+ % #1 nombre de valeurs à choisir
+ % #2 valeur minimale
+ % #3 valeur maximale
+ % #4 valeur à exclure
+ % #5 Nom de la liste qui récupère les données.
+ \xdef\PfCRetiensRetenues{}%
+ \xdef\PfMMixFoo{#2,#3}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeValeursExclues{#4}%
+ \xintFor* ##1 in{\xintSeq{\fpeval{#2+1}}{\fpeval{#3-1}}}\do{%
+ \xdef\PfCRetiensExclues{0}%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeValeursExclueslen}}\do{%
+ \xintifboolexpr{##1==\ListeValeursExclues[##2]}{\xdef\PfCRetiensExclues{\fpeval{\PfCRetiensExclues+1}}}{}%
+ }%
+ \ifnum\fpeval{\PfCRetiensExclues}=0\relax%
+ \xdef\PfMMixFoo{\PfMMixFoo,##1}%
+ \fi%
+ }%
+ \xintFor* ##1 in {\xintSeq{1}{#1}}\do{%
+ \MelangeListe{\PfMMixFoo}{1}%
+ \xdef\PfCRetiensRetenues{\PfCRetiensRetenues\faa}%
+ }%
+ \xdef#5{\PfCRetiensRetenues}%
+}%
+
+\NewDocumentCommand\AffSigne{smm}{%
+ \ifnum#2=0\relax{}
+ \else
+ \ifnum#3=0\relax{}
+ \else
+ \ifnum#3>0\relax{}
+ +
+ \fi
+ \fi
+ \fi
+}%
+
+\NewDocumentCommand\AffPoly{O{x}m}{%
+ \setsepchar{,}\ignoreemptyitems
+ \readlist*\ListeCoeff{#2}
+ \ensuremath{
+ \ifnum\ListeCoeff[1]=0\relax
+ \Affichage{\ListeCoeff[2]}{\ListeCoeff[3]}{\ListeCoeff[4]}%
+ \else
+ \ifnum\ListeCoeff[1]=1\relax
+ #1^3%
+ \else\ifnum\ListeCoeff[1]=-1\relax
+ -#1^3
+ \else\num{\ListeCoeff[1]}#1^3
+ \fi
+ \fi
+ \ifnum\ListeCoeff[2]=0\relax
+ \ifnum\ListeCoeff[3]=0\relax
+ \ifnum\ListeCoeff[4]=0\relax
+ \else
+ \ifnum\ListeCoeff[4]>0
+ +\Affichage[Lettre=#1]{0}{0}{\ListeCoeff[4]}
+ \else
+ \Affichage[Lettre=#1]{0}{0}{\ListeCoeff[4]}
+ \fi
+ \fi
+ \else
+ \ifnum\ListeCoeff[3]>0\relax
+ +\Affichage[Lettre=#1]{0}{\ListeCoeff[3]}{\ListeCoeff[4]}
+ \else
+ \Affichage[Lettre=#1]{0}{\ListeCoeff[3]}{\ListeCoeff[4]}
+ \fi
+ \fi
+ \else
+ \ifnum\ListeCoeff[2]>0\relax
+ +\Affichage[Lettre=#1]{\ListeCoeff[2]}{\ListeCoeff[3]}{\ListeCoeff[4]}%\num{\ListeCoeff[2]}x^2
+ \else
+ \Affichage[Lettre=#1]{\ListeCoeff[2]}{\ListeCoeff[3]}{\ListeCoeff[4]}%\num{\ListeCoeff[2]}x^2
+ \fi
+ \fi
+ \fi
+ }
+}
+
+\newcounter{PfCenumi}
+
\NewDocumentCommand\RestoreChoixAlea{m}{%
\stepcounter{PfMAlea}%
%Je restaure la valeur \thePfMExoSol-\thePfMAlea
@@ -567,7 +739,7 @@
\newcommand*\FranPt[1]{%
% \ifboolKV[ClesExercices]{BaremeDetaille}{%
- \color{red!75}(\num{#1})%
+ \color{gray!75}(\num{#1})%
% }{}
}
@@ -695,7 +867,7 @@
%%% Base des exercices DM
\tcbset{%
tikzdm/.style={%
- lowerbox=ignored,
+ %lowerbox=ignored,
enhanced,
breakable,
colback=white,
@@ -752,19 +924,20 @@
\refstepcounter{PfMExo}%
\immediate\write\@auxout{%
\string\opcopy{\thePfMExo}{TotalExo}%
- }
+ }%
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }}{}
- \tcolorbox[%
- tikzdm,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
+ }}{}%
+ \begin{tcolorbox}[%
+ tikzdm,%
+ label is label,%
+ label=page-\thePfMMaquette-\thePfMExo%
+ ]%
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
#3
-\endtcolorbox%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
}{}%
%%Contrat
@@ -780,13 +953,13 @@
\setlength{\PfMLargeurSchemaContrat}{\useKV[SchemaContrat]{Ecart}}%
\setlength{\PfMRayonSchemaContrat}{\useKV[SchemaContrat]{Rayon}}%
%\colorlet{PfMCouleurSP}{\useKV[SchemaContrat]{Couleur}}%
- \@ifundefined{Op@\Alph{PfMMaquette}-ContratTotalExo}{Recompilez pour obtenir le contrat.}%
+ \@ifundefined{Op@\Roman{PfMMaquette}-ContratTotalExo}{Recompilez pour obtenir le contrat.}%
{%
- \opexport{\Alph{PfMMaquette}-ContratTotalExo}{\ContratTotalExo}%
+ \opexport{\Roman{PfMMaquette}-ContratTotalExo}{\ContratTotalExo}%
% % Total Exo : \ContratTotalExo
\setsepchar{,}\ignoreemptyitems%
- \xdef\PfCFooListeA{\csname \Alph{PfMMaquette}Contrata\endcsname}%
- \xdef\PfCFooListeB{\csname \Alph{PfMMaquette}Contratb\endcsname}%
+ \xdef\PfCFooListeA{\csname \Roman{PfMMaquette}Contrata\endcsname}%
+ \xdef\PfCFooListeB{\csname \Roman{PfMMaquette}Contratb\endcsname}%
\readlist*\ListeA{\PfCFooListeA}%
\readlist*\ListeB{\PfCFooListeB}%
% Liste A : \showitems\ListeA[]\par
@@ -881,27 +1054,30 @@
}%
\NewDocumentCommand\RemplisContrat{m}{%
- \ifcsname \Alph{PfMMaquette}confiance#1\endcsname
- \expandafter\xdef\csname \Alph{PfMMaquette}confiance#1\endcsname{\csname \Alph{PfMMaquette}confiance#1\endcsname,\thePfMExo}%
+ \ifcsname \Roman{PfMMaquette}confiance#1\endcsname
+ \expandafter\xdef\csname \Roman{PfMMaquette}confiance#1\endcsname{\csname \Roman{PfMMaquette}confiance#1\endcsname,\thePfMExo}%
% Yes !
\else
% No !
- \expandafter\xdef\csname \Alph{PfMMaquette}confiance#1\endcsname{\thePfMExo}%
+ \expandafter\xdef\csname \Roman{PfMMaquette}confiance#1\endcsname{\thePfMExo}%
\fi
- \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}Contrat#1\endcsname{\csname \Alph{PfMMaquette}confiance#1\endcsname}}%
+ \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}Contrat#1\endcsname{\csname \Roman{PfMMaquette}confiance#1\endcsname}}%
}%
-\newenvironment{exerciceContrat}[1][]{%
+\NewDocumentEnvironment{exerciceContrat}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
+ \setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Alph{PfMMaquette}-ContratTotalExo}}%
+ \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ContratTotalExo}}%
% Creation des parcours
\ifboolKV[ClesExercices]{Contrat}{%
% Remise à zéro de conteneurs des parcours
@@ -913,14 +1089,16 @@
}%
}{}%
%
- \tcolorbox[%
- tikzcontrat,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
-}{\endtcolorbox%
-}
+ \begin{tcolorbox}[%
+ tikzcontrat,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ \end{tcolorbox}
+ \PfMApresLesExercices%
+}{}%
%%% Contrat %%%
\tcbset{%
@@ -1004,12 +1182,12 @@
\setlength{\PfMLargeurSchemaFdR}{\useKV[SchemaFdR]{Ecart}}%
\setlength{\PfMRayonSchemaFdR}{\useKV[SchemaFdR]{Rayon}}%
\colorlet{PfMCouleurFdR}{\useKV[SchemaFdR]{Couleur}}%
- \@ifundefined{Op@\Alph{PfMMaquette}-FdRTotalExo}{Recompilez pour obtenir la feuille de route.}%
+ \@ifundefined{Op@\Roman{PfMMaquette}-FdRTotalExo}{Recompilez pour obtenir la feuille de route.}%
{%
- \opexport{\Alph{PfMMaquette}-FdRTotalExo}{\FdRTotalExo}%
- \xdef\PfMListeExerciceFdR{\csname \Alph{PfMMaquette}FdRtrue\endcsname}%
- \ifcsname \Alph{PfMMaquette}FdRstop\endcsname%
- \xdef\PfMListeExerciceFdRStop{\csname \Alph{PfMMaquette}FdRstop\endcsname}%
+ \opexport{\Roman{PfMMaquette}-FdRTotalExo}{\FdRTotalExo}%
+ \xdef\PfMListeExerciceFdR{\csname \Roman{PfMMaquette}FdRtrue\endcsname}%
+ \ifcsname \Roman{PfMMaquette}FdRstop\endcsname%
+ \xdef\PfMListeExerciceFdRStop{\csname \Roman{PfMMaquette}FdRstop\endcsname}%
\else%
\xdef\PfMListeExerciceFdRStop{}%
\fi%
@@ -1231,26 +1409,29 @@
}%
\NewDocumentCommand\RemplisFdR{m}{%
- \ifcsname \Alph{PfMMaquette}route#1\endcsname
- \expandafter\xdef\csname \Alph{PfMMaquette}route#1\endcsname{\csname \Alph{PfMMaquette}route#1\endcsname,\thePfMExo}%
+ \ifcsname \Roman{PfMMaquette}route#1\endcsname
+ \expandafter\xdef\csname \Roman{PfMMaquette}route#1\endcsname{\csname \Roman{PfMMaquette}route#1\endcsname,\thePfMExo}%
% Yes !
\else
% No !
- \expandafter\xdef\csname \Alph{PfMMaquette}route#1\endcsname{\thePfMExo}%
+ \expandafter\xdef\csname \Roman{PfMMaquette}route#1\endcsname{\thePfMExo}%
\fi
- \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}FdR#1\endcsname{\csname \Alph{PfMMaquette}route#1\endcsname}}%
+ \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}FdR#1\endcsname{\csname \Roman{PfMMaquette}route#1\endcsname}}%
}%
-\newenvironment{exerciceFdR}[1][]{%
+\NewDocumentEnvironment{exerciceFdR}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
+ \setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\stepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Alph{PfMMaquette}-FdRTotalExo}}%
+ \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-FdRTotalExo}}%
% Creation des parcours
\ifboolKV[ClesExercices]{Routes}{%
% Remise à zéro de conteneurs des parcours
@@ -1274,14 +1455,16 @@
}%
}{}%
%
- \tcolorbox[%
- tikzFdR,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
-}{\endtcolorbox%
-}
+ \begin{tcolorbox}[%
+ tikzFdR,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ \end{tcolorbox}
+ \PfMApresLesExercices%
+}{}%
%\makeatother
@@ -1289,6 +1472,7 @@
\setsepchar[*]{,*/}%
\readlist*\ListeNoms{Aude/Elle/d'Aude/qu'Aude,Bernard/Il/de Bernard/que Bernard,Céline/Elle/de Céline/que Céline,Daniel/Il/de Daniel/que Daniel,\'Elise/Elle/d'\'Elise/qu'\'Elise,Fabien/Il/de Fabien/que Fabien,Gérard/Il/de Gérard/que Gérard,Hélène/Elle/d'Hélène/qu'Hélène,Ilies/Il/d'Ilies/qu'Ilies,Jasmine/Elle/de Jasmine/que Jasmine,Kylian/Il/de Kylian/que Kylian,Laurent/Il/de Laurent/que Laurent,Mathilde/Elle/de Mathilde/que Mathilde,Nina/Elle/de Nina/que Nina,Octave/Il/d'Octave/qu'Octave,Philippe/Il/de Philippe/que Philippe,Joachim/Il/de Joachim/que Joachim,Thérèse/Elle/de Thérèse/que Thérèse,Nawel/Elle/de Nawel/que Nawel,Alexandre/Il/d'Alexandre/qu'Alexandre,Maxence/Il/de Maxence/que Maxence,Sophie/Elle/de Sophie/que Sophie,Christophe/Il/de Christophe/que Christophe,Myriam/Elle/de Myriam/que Myriam,Nathalie/Elle/de Nathalie/que Nathalie,Sébastien/Il/de Sébastion/que Sébastien}%
\readlist*\ListeChersObjets{montre/une,collier/un,bague/une,pendentif/un}%
+\readlist*\ListeSport{Football/du football/le football,Tennis/du tennis/le tennis,Basket/du basket/le basket,Athlétisme/de l'athlétisme/l'athlétisme,Natation/de la natation/la natation,Hand-ball/du hand-ball/le hand-ball,Volley-ball/du volley-ball/le volley-ball}
\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}%
@@ -1302,14 +1486,13 @@
\immediate\write\@auxout{%
\string\opcopy{\thePfMExo}{TotalExo}%
}%
- \@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.can"
- \let\do\@makeother\dospecials
- \catcode`\^^M\active
- %\immediate\write\verbatim@out{ \string\setcounter{PfMAlea}{0}}
- \def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}
- \verbatim@start}
-\def\endExoCANWrite{\immediate\closeout\verbatim@out\@esphack}
+ \@bsphack%
+ \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.can"%
+ \let\do\@makeother\dospecials%
+ \catcode`\^^M\active%
+ \def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}%
+ \verbatim@start}%
+\def\endExoCANWrite{\immediate\closeout\verbatim@out\@esphack}%
\makeatother
\NewDocumentCommand\Complement{+m}{%
@@ -1465,12 +1648,12 @@
\setKV[SchemaParcours]{#1}%
\setlength{\PfMLargeurSchemaParcours}{\useKV[SchemaParcours]{Largeur}}%
\colorlet{PfMCouleurSP}{\useKV[SchemaParcours]{Couleur}}%
- \@ifundefined{Op@\Alph{PfMMaquette}-ParcoursTotalExo}{Recompilez pour obtenir le parcours.}%
+ \@ifundefined{Op@\Roman{PfMMaquette}-ParcoursTotalExo}{Recompilez pour obtenir le parcours.}%
{%
- \opexport{\Alph{PfMMaquette}-ParcoursTotalExo}{\ParcoursTotalExo}%
+ \opexport{\Roman{PfMMaquette}-ParcoursTotalExo}{\ParcoursTotalExo}%
% Total Exo : \ParcoursTotalExo
\setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeExercicesPA{\csname \Alph{PfMMaquette}Parcours#2\endcsname}
+ \readlist*\ListeExercicesPA{\csname \Roman{PfMMaquette}Parcours#2\endcsname}
\reademptyitems%
\xdef\PfMFooTestA{\ListeExercicesPA[1]}%
\ifnum\ListeExercicesPAlen>1\relax%
@@ -1543,14 +1726,14 @@
}%
\NewDocumentCommand\RemplisParcours{m}{%
- \ifcsname \Alph{PfMMaquette}trajet#1\endcsname
- \expandafter\xdef\csname \Alph{PfMMaquette}trajet#1\endcsname{\csname \Alph{PfMMaquette}trajet#1\endcsname,\thePfMExo}%
+ \ifcsname \Roman{PfMMaquette}trajet#1\endcsname
+ \expandafter\xdef\csname \Roman{PfMMaquette}trajet#1\endcsname{\csname \Roman{PfMMaquette}trajet#1\endcsname,\thePfMExo}%
% Yes !
\else
% No !
- \expandafter\xdef\csname \Alph{PfMMaquette}trajet#1\endcsname{\thePfMExo}%
+ \expandafter\xdef\csname \Roman{PfMMaquette}trajet#1\endcsname{\thePfMExo}%
\fi
- \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}Parcours#1\endcsname{\csname \Alph{PfMMaquette}trajet#1\endcsname}}%
+ \immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}Parcours#1\endcsname{\csname \Roman{PfMMaquette}trajet#1\endcsname}}%
}%
\def\exerciceParcoursPerso{%
@@ -1567,16 +1750,19 @@
\def\endexerciceParcoursPerso{\immediate\write\verbatim@out{\string\end{exercice}}\immediate\closeout\verbatim@out\@esphack}%
-\newenvironment{exerciceParcours}[1][]{%
+\NewDocumentEnvironment{exerciceParcours}{so+b}{%
\setcounter{PfMAlea}{0}%
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
+ \setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Alph{PfMMaquette}-ParcoursTotalExo}}%
+ \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ParcoursTotalExo}}%
% Creation des parcours
\ifboolKV[ClesExercices]{Parcours}{%
% Remise à zéro de conteneurs des parcours
@@ -1588,14 +1774,56 @@
}%
}{}%
%
- \tcolorbox[%
- tikzparcours,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
-}{\endtcolorbox%
-}
+ \begin{tcolorbox}[%
+ tikzparcours,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+ \end{tcolorbox}
+ \PfMApresLesExercices%
+}{}%
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% Pour encart
+%%%%%%%%%%%%%%%%%%%%%%
+
+\newtcolorbox{PfMtcbEncart}{%
+ before skip=1em,
+ enhanced,
+ breakable,
+ frame hidden,
+ height=\useKV[ClesExercices]{Encart},
+ colback=PfMFondEncart,
+ left=10pt,
+% % colframe=PfMCadreEncart,
+ overlay unbroken and first={%
+ \coordinate[xshift=10*\kvtcb@leftlower] (B) at (frame.north west);
+ \coordinate[xshift=-10*\kvtcb@leftlower] (C) at (frame.south east);
+ \draw[PfMCadreEncart,line width=1pt] (frame.south east)--(frame.south west)--(frame.north west)--(B);
+ \node[%
+ name=A,
+ fill=PfMFondEncart,
+ anchor=west,
+ xshift=\kvtcb@leftlower,
+ ] at (frame.north west){\bfseries\sffamily\PfMTexteEncart};
+ %%
+ }%
+ }%
+
+\NewDocumentCommand\PfMApresLesExercices{}{%
+ \ifboolKV[ClesExercices]{Ligne}{%
+ \par\vspace{\PfMEspaceAvantLignes}\par\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
+ \par\vspace*{\PfMEspaceApresLignes}\par%
+ }{}%
+ \par%
+ \ifboolKV[ClesExercices]{Cadres}{%
+ \begin{PfMtcbEncart}%
+ %
+ \end{PfMtcbEncart}%
+ }{}%
+}%
\NewDocumentEnvironment{exerciceFiche}{so+b}{%
\setcounter{PfMAlea}{0}%
@@ -1611,14 +1839,15 @@
\refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
- \tcolorbox[%
+ \begin{tcolorbox}[%
tikzfiche,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
#3
-\endtcolorbox%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
}{}
\NewDocumentEnvironment{exerciceDS}{so+b}{%
@@ -1638,14 +1867,15 @@
\immediate\write\@auxout{%
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}}{}
- \tcolorbox[%
+ \begin{tcolorbox}[%
tikzds,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
#3
-\endtcolorbox%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
}{}%
\NewDocumentEnvironment{ExerciceRecapBrevet}{so+b}{%
@@ -1665,15 +1895,16 @@
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}%
}{}%
- \tcolorbox[%
+ \begin{tcolorbox}[%
tikzrecapbrevet,
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
-}{\endtcolorbox%
-}
+ #3
+ \end{tcolorbox}
+ \PfMApresLesExercices%
+}{}%
\makeatother
%%% Recap Brevet