summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profmaquette
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-08-07 03:03:39 +0000
committerNorbert Preining <norbert@preining.info>2023-08-07 03:03:39 +0000
commitaebf6a3b57eda6e22a8e5fb93958edbf6ad1b551 (patch)
tree22fd31bea1ac0ed82dd49684be5ae5415f69fa9a /macros/latex/contrib/profmaquette
parentb8344986f0b0553f4794a39ae9b63c6b206cd48d (diff)
CTAN sync 202308070303
Diffstat (limited to 'macros/latex/contrib/profmaquette')
-rw-r--r--macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdfbin169331 -> 177454 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex304
-rw-r--r--macros/latex/contrib/profmaquette/latex/ProfMaquette.sty635
3 files changed, 685 insertions, 254 deletions
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
index 1e1de72f44..1f703cfde5 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
+++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
index 2929c9926d..0bb0d4d4ee 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
@@ -95,8 +95,12 @@
}{}%
\usepackage{pdfpages}
-
-\title{Factoriser la production de documents}
+\title{%
+ \begin{tabular}{c}
+ \ttfamily ProfMaquette.sty\\
+ \small Factoriser la production de documents
+ \end{tabular}
+}%
\author{C.Poulain}
\date{\PfMfiledate}
@@ -116,10 +120,10 @@
texcsstyle=*\color{black},%pour colorer la contre-oblique
classoffset=5,
texcsstyle=*\color{blue},%pour colorer la contre-oblique
- moretexcs={brm,TikzDM,TikzDS,TikzIE,TikzFiche,Competences,TikzParcours,TikzPdT,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours},
- emph={Maquette,exercice,Solution,Reponse,Indice},%
+ moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux},
+ emph={Maquette,exercice,exercice,Solution,Reponse,Indice},%
classoffset=1,
- keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso},
+ keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours},
keywordstyle=\color{OliveDrab},
classoffset=2,
keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type},
@@ -148,7 +152,7 @@
\makeatother
\usepackage{textcomp}%pour les < de listings
-\usepackage{enumerate}
+\usepackage{enumitem}
\usepackage{hhline}
\usepackage{pifont}
@@ -172,7 +176,7 @@
}%
\usepackage{menukeys}
-\newcommand\metamk[1]{\textlangle#1\textrangle}
+\newcommand\metamk[1]{\textcolor{chocolate}{\textlangle}{\ttfamily #1}\textcolor{chocolate}{\textrangle}}
\newcommand\Cle[1]{%
{\sffamily\textlangle #1\textrangle}%
@@ -227,7 +231,7 @@
]%
\sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{NumSujet})}{}
\vspace{1em}
- \par{\tiny\jobname}\hfill{\scriptsize\useKV[DS]{Date}}
+ \par{\tiny\jobname}\hfill{\scriptsize\useKV[IE]{Date}}
\end{tcolorbox}%
\end{minipage}\hfill\begin{minipage}{0.35\linewidth}
Nom : \dotfill\\[0.5em]
@@ -237,9 +241,14 @@
\par\bigskip
}
+\tcbset{%
+ userfiche/.style={%
+ colback=gray!5%
+ }%
+}%
+
\renewcommand\TikzFiche{%
- \begin{tcolorbox}[%spread outwards=-1cm,spread inwards=-1cm,
- colback=gray!5]%
+ \begin{tcolorbox}[userfiche]%
\Large\sffamily \useKV[Fiche]{Theme}\hfill\useKV[Fiche]{Niveau}\ieme{} \useKV[Fiche]{Classe}
\par{\tiny\jobname}\hfill{\scriptsize\useKV[Fiche]{Date}}
\end{tcolorbox}%
@@ -263,35 +272,36 @@
\begin{document}
\maketitle
\thispagestyle{empty}
-Après la création du package \lstinline!ProfCollege!, l'idée de poursuivre la factorisation des méthodes de travail a naturellement germé. Produire des fiches, des devoirs, des évaluations\dots{} avec des méthodes différentes, cela peut vite apparaître fastidieux. Créé pour améliorer cela, cet ensemble de macro-commandes est basé, quasi exclusivement, sur les environnements \lstinline!Maquette! et \lstinline!exercice! :
+Après la création du package \lstinline!ProfCollege!, l'idée de poursuivre la factorisation des méthodes de travail a naturellement germé. Produire des fiches, des devoirs, des évaluations\dots{} avec des méthodes différentes, peut vite apparaître fastidieux. Créé pour factoriser ce travail, cet ensemble de macro-commandes est basé, quasi exclusivement, sur les environnements \lstinline!Maquette! et \lstinline!exercice! :
\begin{itemize}
\item l'environnement \lstinline!Maquette! indique le type de document souhaité et ses caractéristiques;
-\item l'environnement \lstinline!exercice! adapte la présentation et les fonctions des exercices en accord avec l'environnement \lstinline!Maquette!.
+\item l'environnement \lstinline!exercice! adapte la présentation et les fonctions des exercices en accord avec l'environnement \lstinline!Maquette! choisi.
\end{itemize}
+Le c\oe ur de l'utilisation du package \lstinline!ProfMaquette! est donc une gestion des briques élémentaires du travail d'enseignant, à savoir les exercices.
\clearpage
\section*{L'environnement \lstinline!Maquette!}
-\begin{Codes}[listing only]{0.4}{}
-\begin{Maquette}
+\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{}
+\begin{Maquette}[!\metamk{TypeDocument}!,!\metamk{TypeCorrection}!]{!\metamk{Caracteristiques}!}
\end{Maquette}
\end{Codes}
-C'est lui qui va indiquer :
+C'est lui qui indique :
\begin{itemize}
-\item le type de document souhaité (Devoir Maison / Devoir Surveillé / Interrogatin écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail);
-\item et si ce travail est corrigé (à la suite d'un exercice ou à la fin du document) ou pas;
+\item le type de document souhaité \metamk{TypeDocument} (Devoir Maison / Devoir Surveillé / Interrogation écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail / Cours);
+\item et si ce travail est corrigé \metamk{TypeCorrection} (à la suite d'un exercice ou à la fin du document) ou pas;
\end{itemize}
-puis il indiquera les caractéristiques du document souhaité.
+puis il indiquera les caractéristiques \metamk{Caracteristiques} du document souhaité.
\clearpage
\subsection*{Les devoirs maison}
\begin{CadreMP}
\begin{Description}
-\item[La clé \Cle{DM}]\Defaut{false}
+\item[]La clé \Cle{DM}\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Numero}]\Defaut{1}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{\{\}}
- \item[La clé \Cle{Niveau}]\Defaut{3}
- \item[La clé \Cle{Code}\footnotemark]\Defaut{\{\}}
+ \item[]La clé \Cle{Numero}\Defaut{1}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Classe}\Defaut{\{\}}
+ \item[]La clé \Cle{Niveau}\Defaut{3}
+ \item[]La clé \Cle{Code}\footnotemark\Defaut{\{\}}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -307,13 +317,13 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{DS}]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Numero}]\Defaut{1}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{}
- \item[La clé \Cle{Niveau}]\Defaut{3}
- \item[La clé \Cle{Code}]\Defaut{}
- \item[La clé \Cle{Calculatrice}] autorisée ou non\Defaut{false}
- \item[La clé \Cle{Sujet}]\Defaut{A}
+ \item[]La clé \Cle{Numero}\Defaut{1}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Classe}\Defaut{}
+ \item[]La clé \Cle{Niveau}\Defaut{3}
+ \item[]La clé \Cle{Code}\Defaut{}
+ \item[]La clé \Cle{Calculatrice} autorisée ou non\Defaut{false}
+ \item[]La clé \Cle{Sujet}\Defaut{A}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -328,15 +338,15 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{IE}]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Numero}]\Defaut{1}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{}
- \item[La clé \Cle{Niveau}]\Defaut{3}
- \item[La clé \Cle{Code}]\Defaut{}
- \item[La clé \Cle{Calculatrice}] autorisée ou nom\Defaut{false}
- \item[La clé \Cle{Sujet}] pour de multiples sujets\Defaut{\{\}}
- \item[La clé \Cle{Theme}] Thème de l'évaluation \Defaut{\{\}}
- \item[La clé \Cle{Nom}] Pour changer le nom \og \'Evaluation\fg\Defaut{\'Evaluation}
+ \item[]La clé \Cle{Numero}\Defaut{1}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+% \item[]La clé \Cle{Classe}\Defaut{}
+ % \item[]La clé \Cle{Niveau}\Defaut{3}
+ \item[]La clé \Cle{Code}\Defaut{}
+ \item[]La clé \Cle{Calculatrice} autorisée ou nom\Defaut{false}
+ \item[]La clé \Cle{Sujet} pour de multiples sujets\Defaut{\{\}}
+ \item[]La clé \Cle{Theme} Thème de l'évaluation \Defaut{\{\}}
+ \item[]La clé \Cle{Nom} Pour changer le nom \og \'Evaluation\fg\Defaut{\'Evaluation}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -351,12 +361,12 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{Fiche}]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{Nairobi}
- \item[La clé \Cle{Niveau}]\Defaut{6}
- \item[La clé \Cle{Theme}] Thème de la fiche \Defaut{Les nombres décimaux}
- \item[La clé \Cle{Code}]\Defaut{}
- \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Classe}\Defaut{}
+ \item[]La clé \Cle{Niveau}\Defaut{6}
+ \item[]La clé \Cle{Theme} Thème de la fiche \Defaut{Les nombres décimaux}
+ \item[]La clé \Cle{Code}\Defaut{}
+ \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -374,12 +384,12 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{Parcours}\footnotemark]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{Nairobi}
- \item[La clé \Cle{Niveau}]\Defaut{6}
- \item[La clé \Cle{Theme}] Thème du parcours \Defaut{Les nombres décimaux}
- \item[La clé \Cle{Code}]\Defaut{}
- \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Classe}\Defaut{}
+ \item[]La clé \Cle{Niveau}\Defaut{6}
+ \item[]La clé \Cle{Theme} Thème du parcours \Defaut{Les nombres décimaux}
+ \item[]La clé \Cle{Code}\Defaut{}
+ \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -395,12 +405,12 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{PdT}\footnotemark]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Date}]\Defaut{\lstinline!\\today!}
- \item[La clé \Cle{Classe}]\Defaut{Nairobi}
- \item[La clé \Cle{Niveau}]\Defaut{6}
- \item[La clé \Cle{Theme}] Thème du plan de travail \Defaut{Les nombres décimaux}
- \item[La clé \Cle{Code}]\Defaut{}
- \item[La clé \Cle{NomExercice}] pour modifier le nom des exercices\Defaut{Exercice}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Classe}\Defaut{}
+ \item[]La clé \Cle{Niveau}\Defaut{6}
+ \item[]La clé \Cle{Theme} Thème du plan de travail \Defaut{Les nombres décimaux}
+ \item[]La clé \Cle{Code}\Defaut{}
+ \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -419,7 +429,7 @@ puis il indiquera les caractéristiques du document souhaité.
\begin{Description}
\item[La clé \Cle{ParcoursPerso}]\Defaut{false}
\begin{itemize}
- \item[La clé \Cle{Fichier}]\Defaut{}\par est le nom du fichier {\ttfamily csv} à utiliser pour créer les parcours personnalisés.
+ \item[]La clé \Cle{Fichier} est le nom du fichier {\ttfamily csv} à utiliser.\Defaut{}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -429,8 +439,85 @@ puis il indiquera les caractéristiques du document souhaité.
\end{Maquette}
\end{Codes}
\clearpage
-Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes\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!\TikzDM/\TikzDMCor! pour la clé \Cle{DM}; \lstinline!\TikzDS/\TikzDSCor! pour la clé \Cle{DS}; \lstinline!\TikzIE/\TikzIECor! pour la clé \Cle{IE}; \lstinline!\TikzFiche/\TikzFicheCor! pour la clé \Cle{Fiche}, \lstinline!\TikzParcours/\TikzParcoursCor! pour la clé \Cle{Parcours} et \lstinline!\TikzPdT! pour la clé \Cle{PdT}.
+\subsection*{Les \og cours\fg\footnote{Le package \lstinline!ProfMaquette! n'est pas fait pour des documents longs. D'ailleurs, cette clé \Cle{Cours} n'a été ajouté qu'après forte insistance de ses demandeurs\dots}}
+\begin{CadreMP}
+ \begin{Description}
+\item[La clé \Cle{Cours}]\Defaut{false}
+ \begin{itemize}
+ \item[]La clé \Cle{Theme} modifie le titre du \og cours\fg\Defaut{Trace écrite}
+ \item[]La clé \Cle{Couleur} modifie la couleur donnée à l'entête\Defaut{Crimson}
+ \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \end{itemize}
+\end{Description}
+\end{CadreMP}
+\begin{Codes}[listing only]{0.4}{}
+\begin{Maquette}[Cours]{}
+ On considère un triangle $ABC$\dots
+\end{Maquette}
+\end{Codes}
+\begin{Maquette}[Cours]{}
+ On considère un triangle $ABC$\dots
+\end{Maquette}
+\clearpage
+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éfinies.\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 et \lstinline!usercours! pour la clé \Cle{Cours}.
+\end{itemize}
+Par exemple, pour une fiche, le style {\em par défaut} permet d'obtenir :
+
+%\begin{Codes}[]{0.4}{}
+\begin{Maquette}[Fiche]{Niveau=6,Classe=Zola,Date=25 décembre 2020}
+ On considère un triangle $ABC$\dots
+\end{Maquette}
+%\end{Codes}
+
+En écrivant {\em avant l'appel} à l'environnement \lstinline!Maquette! :
+\begin{Codes}[listing only]{0.4}{}
+\tcbset{%
+ userfiche/.style={%
+ colframe=Orange!75,
+ colback=Orange!15%
+ }%
+}%
+\end{Codes}
+on obtient :
+
+\tcbset{%
+ userfiche/.style={%
+ colframe=Orange!75,
+ colback=Orange!15%
+ }%
+}%
+
+\begin{Maquette}[Fiche]{Niveau=6,Classe=Zola,Date=25 décembre 2020}
+ On considère un triangle $ABC$\dots
+\end{Maquette}
+
+\tcbset{%
+ userfiche/.style={%
+ colback=gray!5%
+ }%
+}%
+
+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 et \lstinline!\TikzCours! pour la clé \Cle{Cours}.
+\end{itemize}
+Leurs modifications seront facilitées en copiant le code fourni par le fichier \lstinline!ProfMaquette.sty!.
+\clearpage
On dispose également de la commande \lstinline!\Competences! permettant de construire un tableau de\dots{} compétences données par l'utilisateur; les compétences étant séparées par le symbole \lstinline!/!.
\begin{Codes}[]{0.4}{}
\Competences{Utiliser le compas/Utiliser l'équerre}
@@ -444,10 +531,10 @@ Les notations \lstinline!NA!, \lstinline!ECA! et \lstinline!A! peuvent être red
\end{Codes}
Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera les codes suivants :
\begin{Codes}[]{0.4}{}
-\Competences[4]{0§1§2§3/Utiliser le compas/Utiliser l'équerre}
+\Competences[4]{0/1/2/3/Utiliser le compas/Utiliser l'équerre}
\end{Codes}
\begin{Codes}[]{0.4}{}
-\Competences[2]{A§NA/Utiliser le compas/Utiliser l'équerre}
+\Competences[2]{A/NA/Utiliser le compas/Utiliser l'équerre}
\end{Codes}
\clearpage
\section*{L'environnement \lstinline!exercice!}
@@ -457,7 +544,7 @@ Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera le
\end{exercice}
\end{Codes}
\subsection*{Habillage des exercices}
-L'envionnement \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 choix de document influence la présentation des exercices.
\begin{Codes}[]{0.5}{}
\begin{Maquette}[IE]{Theme=Les fonctions,Niveau=3,Classe=Gide}
\begin{exercice}
@@ -486,11 +573,21 @@ L'envionnement \lstinline!exercice! doit {\em impérativement} être inclus dans
\end{exercice}
\end{Maquette}
\end{Codes}
-%\begin{Maquette}[Fiche]{Theme=Les fonctions,Niveau=3,Classe=Gide}
-% \begin{exercice}
-% La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
-% \end{exercice}
-%\end{Maquette}
+\subsection*{La personnalisation}
+On peut, dans un premier temps, utiliser les clés suivantes :
+\begin{Description}
+\item[La clé \Cle{BackGround}]\Defaut{white}
+ modifie les arrière-plans des exercices.
+\item[La clé \Cle{Cadre}]\Defaut{gray!50}
+ modifie la couleur du cadre des exercices.
+\end{Description}
+\begin{Codes}[]{0.4}{}
+\begin{Maquette}[Fiche]{Theme=Les fonctions,Niveau=3,Classe=Gide}
+ \begin{exercice}[Background=Orange!15,Cadre=Orange!50]
+ La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
\subsection*{Le barème des exercices}
On remarque que certains exercices sont associés à un total de point. C'est une des clés disponibles pour l'environnement \lstinline!exercice!. Voici celles pour les barèmes :
\begin{Description}
@@ -576,7 +673,7 @@ Les clés décrites dans cette partie ne sont disponibles que pour les maquettes
\lstinline!Fiche! / \lstinline!Parcours!.
\begin{Description}
\item[La clé \Cle{Oral}]\Defaut{false}\par
- pour indiquer que l'exercice se résoud oralement.
+ pour indiquer que l'exercice se résout oralement.
\item[La clé \Cle{Calculatrice}]\Defaut{true}\par
pour afficher que la calculatrice {\em est interdite}.
\end{Description}
@@ -646,13 +743,13 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose de l
\subsection*{Focus sur la maquette \lstinline!ParcoursPerso!}
Dans le cas de cette maquette, l'environnement \lstinline!exercice! n'admet aucune clé. En effet, cette maquette utilise :
\begin{itemize}
-\item et un fichier {\ttfamily *.csv} de la forme :
+\item un fichier {\ttfamily *.csv} de la forme :
\begin{Codes}[listing only]{0.4}{}
Anne,Bec,{1,2}
Paul,Isse,{1,3}
Jean,Némar,{1,4}
\end{Codes}
-\item une liste d'exercices pour produire les trois pages suivantes à l'aide du code :
+\item et une liste d'exercices pour produire les trois pages suivantes à l'aide du code :
\begin{Codes}[listing only]{0.4}{}
\begin{Maquette}[ParcoursPerso]{Type=Fiche,Fichier=Documentation,Theme=L'alphabet,Niveau=6,Classe=Alpha}
\begin{exercice}
@@ -687,13 +784,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\begin{Maquette}[PdT]{Theme=Plan de travail : Calcul littéral,Niveau=3,Classe=Alpha,Date={},Code={}}
\setcounter{PfMExo}{0}
\begin{minipage}{0.35\linewidth}
- \begin{exercice}%Exercice 1
+ \begin{exercice}%exercice 1
A
\end{exercice}
\end{minipage}
\hfill
\begin{minipage}{0.3\linewidth}
- \begin{exercice}%Exercice 2
+ \begin{exercice}%exercice 2
B
\end{exercice}
\end{minipage}
@@ -707,13 +804,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\vspace*{2cm}
\begin{minipage}{0.35\linewidth}
- \begin{exercice}%Exercice 3
+ \begin{exercice}%exercice 3
C
\end{exercice}
\end{minipage}
\hfill
\begin{minipage}{0.3\linewidth}
- \begin{exercice}%Exercice 4
+ \begin{exercice}%exercice 4
D
\end{exercice}
\end{minipage}
@@ -730,13 +827,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\begin{Codes}[listing only]{}{}
\begin{Maquette}[PdT]{Theme=Plan de travail : Calcul littéral,Niveau=3,Classe=Alpha,Date={},Code={}}
\begin{minipage}{0.35\linewidth}
- \begin{exercice}%Exercice 1
+ \begin{exercice}%exercice 1
A
\end{exercice}
\end{minipage}
\hfill
\begin{minipage}{0.3\linewidth}
- \begin{exercice}%Exercice 2
+ \begin{exercice}%exercice 2
B
\end{exercice}
\end{minipage}
@@ -750,13 +847,13 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\vspace*{2cm}
\begin{minipage}{0.35\linewidth}
- \begin{exercice}%Exercice 3
+ \begin{exercice}%exercice 3
C
\end{exercice}
\end{minipage}
\hfill
\begin{minipage}{0.3\linewidth}
- \begin{exercice}%Exercice 4
+ \begin{exercice}%exercice 4
D
\end{exercice}
\end{minipage}
@@ -772,7 +869,7 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\end{Codes}
\clearpage
\subsection*{\og Correction\fg{} des exercices}
- Un exercice avec correction aura la forme suivante :
+ Un exercice avec correction pourra\footnote{Dans les faits, seul l'environnement \lstinline!exercice! est nécessaire.} avoir la forme suivante :
\begin{Codes}[listing only]{0.4}{}
\begin{exercice}
@@ -780,14 +877,27 @@ L'exemple suivant est obtenu par le code présenté à la page suivante.
\begin{Solution}
\end{Solution}
+\begin{Reponse}
+
+\end{Reponse}
+\begin{Indice}
+
+\end{Indice}
\end{Codes}
On peut gérer la correction des exercices à deux niveaux :
\begin{Description}
- \item[Au niveau de l'environnement ]\lstinline!Maquette!, on dispose de deux clés :
+ \item[Au niveau de l'environnement ]\lstinline!Maquette!, on dispose des clés :
\end{Description}
\begin{Description}
\item[la Clé \Cle{CorrigeApres}]\Defaut{false}\par qui affiche le corrigé, s'il existe, après l'énoncé de l'exercice.
\item[la Clé \Cle{CorrigeFin}]\Defaut{false}\par qui affiche les corrigés, s'ils existent, à la fin du document.
+ \begin{quote}
+ \begin{description}
+ \item[la Clé \Cle{CorrigeAll}]\Defaut{false}\par est {\em uniquement} valable avec la clé \Cle{Fiche}. Elle affiche une feuille avec tous les corrigés détaillés (environnement \lstinline!Solution!); une feuille avec toutes les réponses brutes (environnement \lstinline!Reponse!) et une feuille avec tous les indices (environnement \lstinline!Indice!).
+\item[la Clé \Cle{Colonnes}]\Defaut{1}\par définit le nombre de colonnes utilisé pour afficher les corrigés.
+\item[la Clé \Cle{Epaisseur}]\Defaut{0pt}\par modifie l'épaisseur de la barre de séparation des colonnes.
+ \end{description}
+ \end{quote}
\end{Description}
Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est autorisée.
@@ -796,7 +906,7 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a
\begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral}
\begin{exercice}% n'a pas de correction
\begin{enumerate}
- \item $1+1=?$.
+ \item $1+1=?$
\end{enumerate}
\end{exercice}
\begin{exercice}
@@ -814,7 +924,7 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a
\begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral}
\begin{exercice}% n'a pas de correction
\begin{enumerate}
- \item $1+1=?$.
+ \item $1+1=?$
\end{enumerate}
\end{exercice}
\begin{exercice}
@@ -829,31 +939,13 @@ Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est a
\end{Solution}
\end{Maquette}
\begin{Description}
-\item[Au niveau de l'environnement ]\lstinline!exercice!, on peut affiner la correction proposée en écrivant le code de l'exercice sous la forme :
-\end{Description}
-\begin{Codes}[listing only]{0.4}{}
-\begin{exercice}
-
-\end{exercice}
-\begin{Solution}
-
-\end{Solution}
-\begin{Reponse}
-
-\end{Reponse}
-\begin{Indice}
-
-\end{Indice}
-\end{Codes}
-L'environnement \lstinline!exercice! dispose alors des clés suivantes :
+\item[Au niveau de l'environnement ]\lstinline!exercice!, on peut affiner la correction à l'aide des clés :
\begin{Description}
\item[la Clé \Cle{PasCorrige}]\Defaut{false}\par supprime l'affichage de tous types de correction pour l'exercice considéré;
\item[la Clé \Cle{Pouce}]\Defaut{false}\par qui affiche uniquement le contenu de l'environnement \lstinline!Indice!;
\item[la Clé \Cle{Direct}]\Defaut{false}\par qui affiche uniquement le contenu de l'environnement \lstinline!Reponse!.
\end{Description}
-
-\bigskip
-
+\end{Description}
Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour les solutions, \lstinline!*.rep! pour les réponses et \lstinline!*.cdp! pour les indices. Il conviendra de les effacer à chaque changement de clé (\Cle{PasCorrige}, \Cle{Pouce}, \Cle{Direct}) ou ajout d'exercice(s). En effet, la priorité d'affichage est donnée aux fichiers \lstinline!*.sol! puis \lstinline!*.rep! et enfin \lstinline!*.cdp!.
\bigskip
@@ -936,7 +1028,6 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
$7x+35$
\end{Reponse}
\begin{exercice}[Direct]
-
$\dfrac34-\dfrac25=$?
\end{exercice}
\begin{Solution}
@@ -961,6 +1052,11 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
39
\end{Reponse}
\end{Maquette}
+\clearpage
+\section*{Historique}
+\begin{description}
+\item[\PfMfiledate{}--v \PfMfileversion] Ajout de styles de personnalisation.
+\end{description}
\end{document}
%%% Local Variables:
%%% TeX-engine: luatex
diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
index c18029cbe4..d8fb448c6e 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{2023/06/04}%
+\def\filedate{2023/08/07}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.15}%
+\def\fileversion{0.2}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -15,33 +15,38 @@
\RequirePackage{xlop}
-\RequirePackage[most]{tcolorbox}
-\RequirePackage{varwidth}
+\RequirePackage{tcolorbox}
+\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8}
+
\RequirePackage{xinttools}
\RequirePackage{listofitems}
\RequirePackage{array}
\RequirePackage{datatool}
+\RequirePackage{modulus}
+
%définition des clés
\RequirePackage{simplekv}
-\setKVdefault[Boulot]{Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,Brevet=false,BaremeComplet=false,BaremeGlobal=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[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=Nairobi,Code={},NomExercice=Exercice}
-\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe=Nairobi,Code={},NomExercice=Exercice}
-\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe=Nairobi,Code={},NomExercice=Exercice,Vertical=false}
-\setKVdefault[ParcoursPerso]{Fichier={}}
-\setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false}
-\defKV[IE]{Sujet=\setKV[IE]{Sujets}}
-\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}
+\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
+\defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}%
+\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}%
+\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}%
+\setKVdefault[DS]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false,Sujet=A}%
+\setKVdefault[Fiche]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
+\setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false}%
+\setKVdefault[ParcoursPerso]{Fichier={}}%
+\setKVdefault[IE]{Nom=\'Evaluation,Sujets=false,Theme={},Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname,Calculatrice=false}%
+\defKV[IE]{Sujet=\setKV[IE]{Sujets}}%
+\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}%
\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lycée
- du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}
-\setKVdefault[ClesExercices]{PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,TitreExo=Exercice,PasCorrige=false,Direct=false,Pouce=false,Parcours=false}%
+ du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}%
+\setKVdefault[ClesExercices]{PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Background=white,Cadre=gray!50}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
\defKV[ClesExercices]{Competence=\setKV[ClesExercices]{AffichageCompetence}}%
-\defKV[ClesExercices]{Trajet=\setKV[ClesExercices]{Parcours}}
+\defKV[ClesExercices]{Trajet=\setKV[ClesExercices]{Parcours}}%
\setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}%
% Definition de longueurs
\newlength\PfMLargeurSchemaParcours
@@ -52,6 +57,8 @@
%définition des compteurs
\newcounter{PfMExo}%Numéro des exercices
\setcounter{PfMExo}{0}%
+\newcounter{PfMExoSol}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution
+\setcounter{PfMExoSol}{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
@@ -66,13 +73,15 @@
\setcounter{RetiensInd}{0}%
\newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox
\setcounter{PfMNbLogo}{0}%
-\newcounter{Maquette}%Pour compter le nombres de "travaux"
-\setcounter{Maquette}{0}%
+\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
+\setcounter{PfMMaquette}{0}%
+\newcounter{PfMSection}%Pour le barème et ne pas faire obstruction à section
+\setcounter{PfMSection}{0}%
\newcount\Orientation%Pour le schéma des parcours
% couleurs
\colorlet{PfMColCpt}{gray!50}
\colorlet{PfMColSrc}{gray!50}
-\colorlet{PfMCadreFiche}{gray!50}
+%\colorlet{PfMCadreFiche}{gray!50}
\colorlet{PfMCadreDM}{gray!85}
\colorlet{PfMCadreParcours}{gray!50}
% Définitions de commandes
@@ -82,14 +91,110 @@
\newcommand\PfMCompNA{NA}
\newcommand\PfMCompECA{ECA}
\newcommand\PfMCompA{A}
+% Pour la gestion de l'aléatoire
+% afin de permettre d'utiliser le même exercice.
+% Extraire des sommets
+\newcounter{PfMSommetcount}%
+\newcommand\ChoixSommet[2]{%
+ % #1 le nombre de sommets
+ % #2 le nom de base des commandes qui sauvegarde les noms
+ \xdef\CANSGFoo{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}%
+ \MelangeListe{\CANSGFoo}{#1}%
+ \ignoreemptyitems
+ \readlist*\PfMSommet{\faa}%
+ \reademptyitems
+ \xintFor* ##1 in{\xintSeq{1}{#1}}\do{%
+ \setcounter{PfMSommetcount}{##1}
+ \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}%
+ \expandafter\xdef\csname #2\Alph{PfMExo}\alph{PfMSommetcount}\endcsname{\PfMSommet[##1]}%
+ }%
+}%
+%%%
+
+\ifdef{\VariableAlea}{%
+ \RenewDocumentCommand\VariableAlea{s m m}{%
+ \IfBooleanTF{#1}{%
+ \stepcounter{PfMAlea}%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{#3}}%
+ \expandafter\xdef\csname #2\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }{%
+ \xdef#2{\fpeval{#3}}%
+ }%
+ }%
+}{%
+ \NewDocumentCommand\VariableAlea{s m m}{%
+ \IfBooleanTF{#1}{%
+ \stepcounter{PfMAlea}%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{#3}}%
+ \expandafter\xdef\csname #2\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }{%
+ \xdef#2{\fpeval{#3}}%
+ }%
+ }%
+}%
+
+\ifdef{\ChoixAlea}{%
+ \RenewDocumentCommand\ChoixAlea{s o m m m}{%
+ \IfBooleanTF{#1}{%
+ \stepcounter{PfMAlea}%
+ \IfNoValueTF{#2}{%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }{%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }%
+ }{%
+ \IfNoValueTF{#2}{%
+ \xdef#5{\fpeval{randint(#3,#4)}}%
+ }{%
+ \xdef#5{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
+ }%
+ }%
+ }%
+}{%
+ \NewDocumentCommand\ChoixAlea{s o m m m}{%
+ \IfBooleanTF{#1}{%
+ \stepcounter{PfMAlea}%
+ \IfNoValueTF{#2}{%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }{%
+ \expandafter\xdef\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
+ \expandafter\xdef\csname #5\endcsname{\csname valeur\Alph{PfMExo}\alph{PfMAlea}\endcsname}%
+ }%
+ }{%
+ \IfNoValueTF{#2}{%
+ \xdef#5{\fpeval{randint(#3,#4)}}%
+ }{%
+ \xdef#5{\fpeval{round(randint(#3,#4)+rand(),#2)}}%
+ }%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\RestoreChoixAlea{m}{%
+ \stepcounter{PfMAlea}%
+ \expandafter\xdef\csname #1\endcsname{\csname valeur\Alph{PfMExoSol}\alph{PfMAlea}\endcsname}
+}%
+
+\NewDocumentCommand\RestoreSommet{mm}{%
+ % #1 le nombre de sommets
+ % #2 le nom de base utilisé lors de la création des sommets
+ \xintFor* ##1 in{\xintSeq{1}{#1}}\do{%
+ \setcounter{PfMSommetcount}{##1}
+ \expandafter\xdef\csname p\Alph{PfMSommetcount}\endcsname{\csname #2\Alph{PfMExoSol}\alph{PfMSommetcount}\endcsname}
+ }%
+}%
+
% Définitions pour les compétences
\NewDocumentCommand\Competences{O{3}m}{%
- \setsepchar[*]{/*§}\ignoreemptyitems%
+ \setsepchar[*]{/}\ignoreemptyitems%
\readlist*\ListeCompetence{#2}
\ifnum#1=3\relax
\buildtabcompetences%
\else
- \Buildtabcompetences{#1}{\listlen\ListeCompetence[1]}%
+ \Buildtabcompetences{#1}{\ListeCompetencelen}%
\fi
}
@@ -106,13 +211,13 @@
\newlength\PfMLargeurComp
\def\Buildtabcompetences#1#2{%
- \setlength{\PfMLargeurComp}{\fpeval{0.85-0.05*#2}\linewidth}%
+ \setlength{\PfMLargeurComp}{\fpeval{0.85-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{%
- &\ListeCompetence[1,##1]}\\%
+ &\ListeCompetence[##1]}\\%
\hline%
- \xintFor* ##1 in {\xintSeq {2}{\ListeCompetencelen}}\do{\ListeCompetence[##1]%
+ \xintFor* ##1 in {\xintSeq {\fpeval{#1+1}}{\ListeCompetencelen}}\do{\ListeCompetence[##1]%
\xintFor* ##2 in {\xintSeq{1}{#1}}\do{&}%
\\\hline%
}%
@@ -126,6 +231,7 @@
\newwrite\verbatim@out
\def\SolutionWrite{%
+ \setcounter{PfMAlea}{0}%
\@bsphack
\immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol" %
\let\do\@makeother\dospecials
@@ -166,7 +272,7 @@
\def\endIndiceWrite{\immediate\closeout\verbatim@out\@esphack}
\makeatother
-\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak}
+\def\SolutionNow{\textbf{Correction de l'exercice --}\par\nopagebreak\setcounter{PfMExoSol}{\thePfMExo}\setcounter{PfMAlea}{0}}
\def\endSolutionNow{\par\goodbreak}
\def\ReponseNow{\textbf{Réponse(s) de l'exercice --}\par\nopagebreak}
@@ -180,6 +286,11 @@
\NewDocumentEnvironment{Indice}{}{}{}%
\NewDocumentCommand\PfMChoixAffichageCorrection{}{%
+ \ifboolKV[Boulot]{CorrigeAll}{%
+ \let\Solution\SolutionWrite\let\endSolution\endSolutionWrite
+ \let\Reponse\ReponseWrite\let\endReponse\endReponseWrite
+ \let\Indice\IndiceWrite\let\endIndice\endIndiceWrite
+ }{%
\ifboolKV[Boulot]{ParcoursPerso}{%
\let\Solution\SolutionWritePP\let\endSolution\endSolutionWritePP
}{%
@@ -216,16 +327,23 @@
\fi
\fi
}%
+ }%
}%
\NewDocumentCommand\PfMChoixCorrection{}{%
- \setcounter{RetiensSol}{0}
- \setcounter{RetiensRep}{0}
- \setcounter{RetiensInd}{0}
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{0}%
+ \setcounter{RetiensInd}{0}%
\ifboolKV[Boulot]{CorrigeFin}{%
- \setcounter{RetiensSol}{1}%
- \setcounter{RetiensRep}{0}%
- \setcounter{RetiensInd}{0}%
+% \ifboolKV[Boulot]{CorrigeAll}{%
+% \setcounter{RetiensSol}{1}%
+% \setcounter{RetiensRep}{1}%
+% \setcounter{RetiensInd}{1}%
+% }{%
+ \setcounter{RetiensSol}{1}%
+ \setcounter{RetiensRep}{0}%
+ \setcounter{RetiensInd}{0}%
+% }%
}{\ifboolKV[Boulot]{CorrigeApres}{%
\setcounter{RetiensSol}{1}%
\setcounter{RetiensRep}{0}%
@@ -233,18 +351,18 @@
}{}%
}%
\ifboolKV[ClesExercices]{PasCorrige}{%
- \setcounter{RetiensSol}{0}
- \setcounter{RetiensRep}{0}
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{0}%
\setcounter{RetiensInd}{0}%
}{%
\ifboolKV[ClesExercices]{Direct}{%
- \setcounter{RetiensSol}{0}
- \setcounter{RetiensRep}{1}
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{1}%
\setcounter{RetiensInd}{0}%
}{%
- \ifboolKV[ClesExercices]{Pouce}{
- \setcounter{RetiensSol}{0}
- \setcounter{RetiensRep}{0}
+ \ifboolKV[ClesExercices]{Pouce}{%
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{0}%
\setcounter{RetiensInd}{1}%
}{}%
}%
@@ -253,6 +371,8 @@
\NewDocumentCommand\PfMAffichageCorrige{}{%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \setcounter{PfMExoSol}{##1}%
+ \setcounter{PfMAlea}{0}%
\IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) seule(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{%
\IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}
}%
@@ -278,8 +398,8 @@
\ifboolKV[Boulot]{Fiche}{}{%
\immediate\write\@auxout{%
\string\opadd*{#1}%
- {total\the\c@section-\the\c@PfMExo}%
- {total\the\c@section-\the\c@PfMExo}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
\string\opcopy{\thePfMExo}{TotalExo}%
}%
\ifboolKV[ClesExercices]{BaremeDetaille}{%
@@ -405,7 +525,7 @@
font=\bfseries
]
at (frame.north east)
- {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}};
+ {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};
}{}
}%
}%
@@ -415,7 +535,7 @@
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]
\setKV[ClesExercices]{#1}
- \refstepcounter{section}
+ \refstepcounter{PfMSection}
\PfMChoixCorrection%
\refstepcounter{PfMExo}
\immediate\write\@auxout{%
@@ -423,12 +543,12 @@
}
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}}{}
\tcolorbox[%
BaseDM,
label is label,
- label=page-\theMaquette-\thePfMExo%
+ label=page-\thePfMMaquette-\thePfMExo%
]
}{%
\endtcolorbox%
@@ -448,16 +568,16 @@
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeExercicesPA{\csname Parcours#2\endcsname}
\reademptyitems%
- \xdef\PfCFooTestA{\ListeExercicesPA[1]}%
+ \xdef\PfMFooTestA{\ListeExercicesPA[1]}%
\ifnum\ListeExercicesPAlen>1\relax%
\xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{%
- \xdef\PfCFooTestA{\PfCFooTestA,\ListeExercicesPA[##1]}%
+ \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}%
}%
\fi%
\ifboolKV[Parcours]{Vertical}{%
- \BuildParcoursTikzV{\ParcoursTotalExo}{\PfCFooTestA}%
+ \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}%
}{%
- \BuildParcoursTikz{\ParcoursTotalExo}{\PfCFooTestA}%
+ \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}%
}%
}%
}%
@@ -479,7 +599,7 @@
\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-\theMaquette-\ListeRetiens[\compteurcnt]}};%
+ \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
}%
\end{tikzpicture}%
}%
@@ -507,7 +627,7 @@
\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-\theMaquette-\ListeRetiens[\compteurcnt]}};%
+ \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
}%
\end{tikzpicture}%
}%
@@ -542,7 +662,7 @@
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{section}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{ParcoursTotalExo}}%
@@ -559,7 +679,7 @@
\tcolorbox[%
tikzparcours,
label is label,
- label=page-\theMaquette-\thePfMExo
+ label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
}
@@ -569,14 +689,16 @@
\setcounter{PfMNbLogo}{1}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
+ \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
+ \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{section}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
\tcolorbox[%
tikzfiche,
label is label,
- label=page-\theMaquette-\thePfMExo
+ label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
}
@@ -585,7 +707,7 @@
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
- \refstepcounter{section}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
\immediate\write\@auxout{%
@@ -593,20 +715,33 @@
}
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}}{}
\tcolorbox[%
tikzds,
label is label,
- label=page-\theMaquette-\thePfMExo
+ label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
}
\makeatother
%%% Recap Brevet
+%%% Style Brevet
+\tcbset{%
+ userbrevet/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\tcbset{%
+ userbrevetcor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
% Fiche Exercice Brevet
\newcommand\TikzRecapBrevet{%
-\begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+\begin{tcolorbox}[userbrevet]%
\Large\sffamily \useKV[RecapBrevet]{Theme}
\par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}}
\end{tcolorbox}%
@@ -615,7 +750,7 @@
\newcommand\TikzRecapBrevetCor[1]{%
\clearpage
\setKV[RecapBrevet]{#1}%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userbrevetcor]%
\Large\sffamily \useKV[RecapBrevet]{Theme} (Correction)
\par{\tiny\useKV[RecapBrevet]{Code}}\hfill{\scriptsize\useKV[RecapBrevet]{Date}}
\end{tcolorbox}%
@@ -626,18 +761,18 @@
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
- \refstepcounter{section}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
\ifboolKV[ClesExercices]{BaremeTotal}{%
\immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@section-\the\c@PfMExo}%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}%
}{}%
\tcolorbox[%
tikzrecapbrevet,
label is label,
- label=page-\theMaquette-\thePfMExo
+ label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
}
@@ -665,7 +800,7 @@
font=\bfseries%
]
at (frame.north east)%
- {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}};%
+ {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};%
}%
}%
}%
@@ -728,8 +863,20 @@
}%
}%
+\tcbset{%
+ userpdt/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\tcbset{%
+ userpdtcor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
\NewDocumentCommand\TikzPdT{}{%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userpdt]%
\Large\sffamily \useKV[PdT]{Theme}\hfill\useKV[PdT]{Niveau} \useKV[PdT]{Classe}%
\par{\tiny\useKV[PdT]{Code}}\hfill{\scriptsize\useKV[PdT]{Date}}%
\end{tcolorbox}%
@@ -738,7 +885,7 @@
\NewDocumentCommand\TikzPdTCor{m}{%
\clearpage
\setKV[PdT]{#1}%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userpdtcor]%
\Large\sffamily \useKV[PdT]{Theme} (Correction) \hfill\useKV[PdT]{Niveau} \useKV[PdT]{Classe}
\par{\tiny\useKV[PdT]{Code}}\hfill{\scriptsize\useKV[PdT]{Date}}
\end{tcolorbox}%
@@ -750,7 +897,7 @@
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{section}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
\tcolorbox[%
@@ -845,10 +992,10 @@
]
at (frame.south east)
{\scriptsize\sffamily \useKV[ClesExercices]{Source}};
- }{}
- }
- }
-}
+ }{}%
+ }%
+ }%
+}%
\newenvironment{CRNote}{%
\tcolorbox[colback=white,height=2cm,title=NOTE,fonttitle=\color{black}\bfseries\sffamily,colbacktitle=white,enhanced,%
@@ -893,7 +1040,7 @@
\tcolorbox[%
tikzkholle,
label is label,
- label=page-\theMaquette-\thePfMExo
+ label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
}
@@ -931,14 +1078,19 @@
%%%%%%%%% STyle Kholle%%%%%%%%%%
% Kholle
-\newcommand\TikzKholle{%
- \clearpage
- \begin{tcolorbox}[frame hidden,colback=white,enhanced,%
+\tcbset{%
+ userkholle/.style={%
+ frame hidden,colback=white,enhanced,%
borderline north={3pt}{0pt}{gray!85},
borderline north={2pt}{0.5pt}{gray!15},
borderline south={3pt}{0pt}{gray!85},
- borderline south={2pt}{0.5pt}{gray!15},
- ]%
+ borderline south={2pt}{0.5pt}{gray!15}
+ }%
+}%
+
+\newcommand\TikzKholle{%
+ \clearpage
+ \begin{tcolorbox}[userkholle]%
\sffamily Interrogation Orale \no\useKV[Kholle]{Numero}\hfill
\ifboolKV[Kholle]{CR}{}{Sujet \useKV[Kholle]{Sujet}\hfill}\useKV[Kholle]{Niveau}%
\par\useKV[Kholle]{Lieu}\hfill Le \useKV[Kholle]{Date}%
@@ -977,14 +1129,25 @@
}
%%%%%%%%%% Style DM%%%%%%%%%%%%%
-\NewDocumentCommand\TikzDM{}{%
- \clearpage%
- \begin{tcolorbox}[frame hidden,colback=white,enhanced,%
+\tcbset{%
+ userdm/.style={%
+ frame hidden,colback=white,enhanced,%
borderline north={3pt}{0pt}{gray!85},%
borderline north={2pt}{0.5pt}{gray!15},%
borderline south={3pt}{0pt}{gray!85},%
- borderline south={2pt}{0.5pt}{gray!15},%
- ]%
+ borderline south={2pt}{0.5pt}{gray!15}%
+ }%
+}%
+
+\tcbset{%
+ userdmcor/.style={%
+ colback=gray!5%
+ }%
+}%
+
+\NewDocumentCommand\TikzDM{}{%
+ \clearpage%
+ \begin{tcolorbox}[userdm]%
\sffamily Devoir en temps libre \useKV[DM]{Numero}\hfill\useKV[DM]{Niveau} \useKV[DM]{Classe}%\no
\par{\tiny\useKV[DM]{Code}}\hfill{\scriptsize Pour le \useKV[DM]{Date}}%
\end{tcolorbox}%
@@ -1012,9 +1175,68 @@
]%
\end{tcolorbox}%
}
-%%%%%%Style Fiche
+%%% Style Cours
+\tcbset{
+ usercours/.style={
+ enhanced,
+ skin=enhancedlast jigsaw,
+ attach boxed title to top left={xshift=-4mm,yshift=-0.5mm},
+ fonttitle=\bfseries\sffamily,
+ colbacktitle=blue!45,
+ colframe=red!50!black,
+ interior style={
+ top color=blue!10,
+ bottom color=red!10
+ },
+ boxed title style={
+ empty,
+ arc=0pt,
+ outer arc=0pt,
+ boxrule=0pt
+ },
+ underlay boxed title={
+ \fill[blue!45!white]
+ (title.north west) --
+ (title.north east) --
+ +(\tcboxedtitleheight-1mm,-\tcboxedtitleheight+1mm) --
+ ([xshift=4mm,yshift=0.5mm]frame.north east) --
+ +(0mm,-1mm) --
+ (title.south west) -- cycle;
+ \fill[blue!45!white!50!black]
+ ([yshift=-0.5mm]frame.north west) --
+ +(-0.4,0) --
+ +(0,-0.3) -- cycle;
+ \fill[blue!45!white!50!black]
+ ([yshift=-0.5mm]frame.north east) --
+ +(0,-0.3) --
+ +(0.4,0) -- cycle;
+ },
+ title={\useKV[Cours]{Theme}},
+}
+}
+
+\NewDocumentCommand\TikzCours{}{%
+ \begin{tcolorbox}[usercours]%
+% \Large\sffamily\bfseries Cours : \useKV[Fiche]{Theme}%
+% \useKV[Fiche]{Niveau}~\useKV[Fiche]{Classe}\hfill{\scriptsize\useKV[Fiche]{Date}}%
+ \end{tcolorbox}%
+}
+
+%%%%%% Style Fiche
+\tcbset{%
+ userfiche/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\tcbset{%
+ userfichecor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
\NewDocumentCommand\TikzFiche{}{%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userfiche]%
\Large\sffamily \useKV[Fiche]{Theme}\hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}%
\par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}%
\end{tcolorbox}%
@@ -1023,35 +1245,54 @@
\NewDocumentCommand\TikzFicheCor{m}{%
\clearpage
\setKV[Fiche]{#1}%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userfichecor]%
\Large\sffamily \useKV[Fiche]{Theme} (Correction) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}
\par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}
\end{tcolorbox}%
}
+\NewDocumentCommand\TikzFicheCorRep{m}{%
+ \clearpage
+ \setKV[Fiche]{#1}%
+ \begin{tcolorbox}[userfichecor]%
+ \Large\sffamily \useKV[Fiche]{Theme} (Réponses) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}
+ \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}
+ \end{tcolorbox}%
+}
+
+\NewDocumentCommand\TikzFicheCorInd{m}{%
+ \clearpage
+ \setKV[Fiche]{#1}%
+ \begin{tcolorbox}[userfichecor]%
+ \Large\sffamily \useKV[Fiche]{Theme} (Indices) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}
+ \par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}
+ \end{tcolorbox}%
+}
+
+\makeatletter
\tcbset{%
tikzfiche/.style={%
before skip=1em,
enhanced,
breakable,
- colback=white,
+ colback=ColExoFiche,
colframe=PfMCadreFiche,
overlay unbroken and first={%
\node[%
name=A,
- fill=white,
+ fill=ColExoFiche,
anchor=west,
- xshift=10pt,
+ xshift=\kvtcb@leftlower,
] at (frame.north west){\bfseries\sffamily \useKV[Fiche]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};
%%
- \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}}
- \ifboolKV[ClesExercices]{Oral}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{}
+ \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}}
+ \ifboolKV[ClesExercices]{Oral}{\node[fill=ColExoFiche,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{}
%%
\ifboolKV[ClesExercices]{AffichageCompetence}{%
\node[%
- fill=white,
+ fill=ColExoFiche,
anchor=east,
- xshift=-10pt,
+ xshift=-\kvtcb@rightlower,
text=PfMColCpt,%
]
at (frame.north east)
@@ -1060,9 +1301,9 @@
%%
\ifboolKV[ClesExercices]{AffichageSource}{%
\node[%
- fill=white,
+ fill=ColExoFiche,
anchor=east,
- xshift=-10pt,
+ xshift=-\kvtcb@rightlower,
text=PfMColSrc,
]
at (frame.south east)
@@ -1071,9 +1312,22 @@
}%
}%
}%
+\makeatother
%%% Parcours %%%
+\tcbset{%
+ userparcours/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\tcbset{%
+ userparcourscor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
\NewDocumentCommand\TikzParcours{}{%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userparcours]%
\Large\sffamily \useKV[Parcours]{Theme}\hfill\useKV[Parcours]{Niveau} \useKV[Parcours]{Classe}%
\par{\tiny\useKV[Parcours]{Code}}\hfill{\scriptsize\useKV[Parcours]{Date}}%
\end{tcolorbox}%
@@ -1082,7 +1336,7 @@
\NewDocumentCommand\TikzParcoursCor{m}{%
\clearpage
\setKV[Parcours]{#1}%
- \begin{tcolorbox}[spread upwards=-1cm,colback=gray!5]%
+ \begin{tcolorbox}[userparcourscor]%
\Large\sffamily \useKV[Parcours]{Theme} (Correction) \hfill\useKV[Parcours]{Niveau} \useKV[Parcours]{Classe}
\par{\tiny\useKV[Parcours]{Code}}\hfill{\scriptsize\useKV[Parcours]{Date}}
\end{tcolorbox}%
@@ -1132,14 +1386,26 @@
}%
%% Fin Parcours %%%
%%% DS %%%
-\newcommand\TikzDS{%
- \clearpage
- \begin{tcolorbox}[colback=gray!5,%
+\tcbset{%
+ userds/.style={%
+ colback=gray!5,%
enhanced,%
overlay unbroken and first={%
\node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} --};
- }
- ]%
+ }%
+ }%
+}%
+
+\tcbset{%
+ userdscor/.style={%
+ colback=gray!5%
+ }%
+}%
+
+
+\newcommand\TikzDS{%
+ \clearpage
+ \begin{tcolorbox}[userds]%
\sffamily Devoir surveillé \no\useKV[DS]{Numero} (Sujet \useKV[DS]{Sujet})\hfill\useKV[DS]{Niveau} \useKV[DS]{Classe}
\par{\tiny\useKV[DS]{Code}}\hfill{\scriptsize\useKV[DS]{Date}}
\end{tcolorbox}%
@@ -1148,7 +1414,7 @@
\newcommand\TikzDSCor[1]{%
\clearpage
\setKV[DS]{#1}
- \begin{tcolorbox}[colback=gray!5]%
+ \begin{tcolorbox}[userdscor]%
\sffamily Devoir surveillé \no\useKV[DS]{Numero} (Sujet \useKV[DS]{Sujet})\hfill\useKV[DS]{Niveau} \useKV[DS]{Classe}%
\par Correction%
\end{tcolorbox}%
@@ -1201,22 +1467,38 @@
font=\bfseries
]
at (frame.north east)
- {\footnotesize\sffamily \total{\the\c@section-\the\c@PfMExo}};
+ {\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};
}{}
}%
}%
}%
\makeatother
-%Interrogations écrites
+% Interrogations écrites
+\tcbset{%
+ userie/.style={%
+ colback=gray!5,
+ enhanced,%
+ overlay unbroken and first={%
+ \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[IE]{Calculatrice}{autorisée}{interdite} --};
+ }%
+ }%
+}%
+
+\tcbset{%
+ useriecor/.style={%
+ colback=gray!5,
+ enhanced,%
+ overlay unbroken and first={%
+ \node[yshift=1em] at (frame.south) {
+ \scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} --
+ };%
+ }%
+ }%
+}%
\newcommand\TikzIE{%
\clearpage
\begin{minipage}{0.6\linewidth}
- \begin{tcolorbox}[colback=gray!5,
- enhanced,%
- overlay unbroken and first={%
- \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[IE]{Calculatrice}{autorisée}{interdite} --};
- }
- ]%
+ \begin{tcolorbox}[userie]%
\sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{}
\vspace{1em}
\par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[IE]{Date}}
@@ -1224,24 +1506,19 @@
\end{minipage}\hfill\begin{minipage}{0.35\linewidth}
Nom : \PfMIENom\\[0.5em]
Prénom : \PfMIEPrenom\\[0.5em]
- Classe : \PfMIEClasse
- \end{minipage}
- \par\bigskip
-}
+ Classe : \PfMIEClasse%
+ \end{minipage}%
+ \par\bigskip%
+}%
\newcommand\TikzIECor[1]{%
- \clearpage
- \setKV[IE]{#1}
- \begin{tcolorbox}[colback=gray!5,
- enhanced,%
- overlay unbroken and first={%
- \node[yshift=1em] at (frame.south) {\scriptsize\sffamily-- Calculatrice \ifboolKV[DS]{Calculatrice}{autorisée}{interdite} --};
- }
- ]%
+ \clearpage%
+ \setKV[IE]{#1}%
+ \begin{tcolorbox}[useriecor]%
\sffamily \useKV[IE]{Nom} \no\useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{}\hfill Correction%
- \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[DS]{Date}}
+ \par{\tiny\useKV[IE]{Code}}\hfill{\scriptsize\useKV[DS]{Date}}%
\end{tcolorbox}%
-}
+}%
\NewDocumentCommand\Recapitulatif{m}{%
\DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{%
@@ -1250,8 +1527,17 @@
\foreach\i in{1,...,\ListeExerciceslen}{%
\begin{exercice}%
\input{\jobname-PPEx\ListeExercices[\i].tex}%
- \end{exercice}%
+ \end{exercice}%
+ }
+ \ifnum\thePfMCorrigeParcoursPerso=1\relax%
+ % \RecapitulatifCorrection{#2}%
+ \clearpage
+ \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
+ \readlist*\ListeExercices{\RecapListeExo}%
+ \foreach\i in{1,...,\ListeExerciceslen}{%
+ \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak%
}%
+ \fi
\end{Maquette}%
}%
}%
@@ -1271,11 +1557,15 @@
% Environnement englobant le tout.
%\makeatletter
\NewDocumentEnvironment{Maquette}{om}{%
+ % on remet à zéro les compteurs de solutions : inutile ?
+ \setcounter{RetiensSol}{0}%
+ \setcounter{RetiensRep}{0}%
+ \setcounter{RetiensInd}{0}%
% on remet à zéro le compteur des exercices
\setcounter{PfMExo}{0}%
\setcounter{PfMSOS}{0}%
% nouvelles valeurs.
- \stepcounter{Maquette}%
+ \stepcounter{PfMMaquette}%
% options de boulot
\IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
@@ -1283,10 +1573,23 @@
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}%
+ \ifboolKV[Boulot]{Cours}{%
+ \setKV[Cours]{#2}%
+ \TikzCours%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
+ %\let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \TikzFicheCor{#2}%
+ \PfMAffichageCorrige%
+ }%
+ }{}%
+ }{%
\ifboolKV[Boulot]{RecapBrevet}{%
\setKV[RecapBrevet]{#2}%
\TikzRecapBrevet%
\let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
+ %\let\Exercice\ExerciceRecapBrevet\let\endExercice\endExerciceRecapBrevet%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\TikzRecapBrevetCor{#2}%
@@ -1297,29 +1600,29 @@
\ifboolKV[Boulot]{ParcoursPerso}{%
\setKV[ParcoursPerso]{#2}%
\DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
- \let\exercice\exerciceParcoursPerso%
- \let\endexercice\endexerciceParcoursPerso%
+ \let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso%
+ %\let\Exercice\exerciceParcoursPerso\let\endExercice\endexerciceParcoursPerso%
\ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
\setcounter{PfMExo}{0}%
\AtEndDocument{%
\Recapitulatif{#2}%
- \ifnum\thePfMCorrigeParcoursPerso=1\relax%
- \RecapitulatifCorrection{#2}%
- \fi
}%
}{%
\ifboolKV[Boulot]{Parcours}{%
\setKV[Parcours]{#2}\TikzParcours%
- \let\exercice\exerciceParcours%
- \let\endexercice\endexerciceParcours%
+ \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
+ %\let\Exercice\exerciceParcours\let\endExercice\endexerciceParcours%
\ifboolKV[Boulot]{CorrigeFin}{%
- \PfMAffichageCorrige%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \TikzParcoursCor{#2}
+ \PfMAffichageCorrige%
+ }%
}{}%
}{%
\ifboolKV[Boulot]{PdT}{%
\setKV[PdT]{#2}\TikzPdT%
- \let\exercice\exercicePdT
- \let\endexercice\endexercicePdT%
+ \let\exercice\exercicePdT\let\endexercice\endexercicePdT%
+ %\let\Exercice\exercicePdT\let\endExercice\endexercicePdT%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\TikzPdTCor{#2}%
@@ -1329,8 +1632,8 @@
}{
\ifboolKV[Boulot]{DM}{%
\setKV[DM]{#2}\TikzDM%
- \let\exercice\exerciceDM
- \let\endexercice\endexerciceDM%
+ \let\exercice\exerciceDM\let\endexercice\endexerciceDM%
+ %\let\Exercice\exerciceDM\let\endExercice\endexerciceDM%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\TikzDMCor{#2}%
@@ -1339,20 +1642,50 @@
}{}%
}{%
\ifboolKV[Boulot]{Fiche}{%
- \setKV[Fiche]{#2}\TikzFiche%
- \let\exercice\exerciceFiche
- \let\endexercice\endexerciceFiche%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \TikzFicheCor{#2}%
- \PfMAffichageCorrige%
- }%
+ \setKV[Fiche]{#2}%
+ \TikzFiche
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
+ %\let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeAll}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \setKV[Boulot]{#1}%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \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]{%
+ \setKV[Boulot]{#1}%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzFicheCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+ }%
}{}%
}{%
\ifboolKV[Boulot]{DS}{%
\setKV[DS]{#2}\TikzDS%
- \let\exercice\exerciceDS
- \let\endexercice\endexerciceDS%
+ \let\exercice\exerciceDS\let\endexercice\endexerciceDS%
+% \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%
\ifboolKV[Boulot]{BaremeComplet}{%
\begin{center}
\TableauRecapitulatif
@@ -1368,6 +1701,7 @@
\ifboolKV[Boulot]{IE}{%
\setKV[IE]{#2}\TikzIE%
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
+ % \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%On garde exerciceDS
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\TikzIECor{#2}%
@@ -1397,12 +1731,13 @@
}%
}%
}%
+ }%
}%
}{}%
%\makeatother
%D'après JCC
-% pour gérer les nombres pseudo-aléatoires
+% Package pour gérer les nombres pseudo-aléatoires
\makeatletter
\input{random}
@@ -1488,7 +1823,7 @@
% Lancement de la lecture récursive de la liste
\expandafter\RL@extract#1,\@nil,%
% On met la valeur extraite dans la macro prévue
- \xdef#3{\RL@return}%cp a remplacé edef par xdef
+ \edef#3{\RL@return}%cp a remplacé edef par xdef
% La liste est celle sans l'élément extrait
\let#1\RL@temp
\fi