diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-07 21:22:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-07 21:22:39 +0000 |
commit | cc77816bee5134b22e3a0f98ec91d326f1cc6008 (patch) | |
tree | cd272b9740fcb7ced0411b8e501c5cbaee5ff102 /Master/texmf-dist/tex | |
parent | 53959d4915c7c1171856b813716b4333d422b3b9 (diff) |
profmaquette (7mar24)
git-svn-id: svn://tug.org/texlive/trunk@70470 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty | 497 |
1 files changed, 407 insertions, 90 deletions
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty index e5c5e2ca36a..ffa3eb53ecf 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{2024/01/21}% +\def\filedate{2024/03/06}% \let\PfMfiledate\filedate% -\def\fileversion{0.87}% +\def\fileversion{0.88}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -45,7 +45,7 @@ \setKVdefault[PdT]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% \setKVdefault[FdR]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% \setKVdefault[Parcours]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false}% -\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false}% +\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% \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}}% @@ -134,6 +134,26 @@ \setcounter{PfMNbLogo}{0}% \newcount\Orientation%Pour le schéma des parcours \newcounter{PfMCNNumQ}% + +\newcounter{Nbcolonnes} + +\newif\ifPfMDeuxColonnes +\newif\ifPfMRectoVerso +\makeatletter +\if@twocolumn + \PfMDeuxColonnestrue + \setcounter{Nbcolonnes}{2} +\else + \PfMDeuxColonnesfalse + \setcounter{Nbcolonnes}{4} +\fi +\if@twoside + \PfMRectoVersotrue +\else + \PfMRectoVersofalse +\fi +\makeatother + % couleurs \colorlet{PfMColCpt}{gray!50}% \colorlet{PfMColSrc}{gray!50}% @@ -141,6 +161,7 @@ \colorlet{PfMCadreDM}{gray!85}% \colorlet{PfMCadreParcours}{gray!50}% \colorlet{PfMCadreContrat}{gray!50}% +\colorlet{PfMColbackFdR}{white}% \colorlet{PfMCadreFdR}{gray!50}% \colorlet{PfMFondEncart}{white}% % Définitions de commandes @@ -151,6 +172,10 @@ \newcommand\PfMCompECA{ECA}% \newcommand\PfMCompA{A}% +\NewDocumentCommand\TournerPage{O{\faShare}}{% + \par\vfill\par\hfill{\em Tourner la page #1}\clearpage +}% + \tcbset{% consignes/.style={ empty, @@ -174,6 +199,19 @@ }% }{}% +%% Option french pour les mathématiques +% By CT +\NewDocumentCommand\TypoMathFrance{}{% + \unless\ifdefined\countletters\newcount\countletters\fi + \countletters=`A + \loop + \unless\ifnum\countletters>`Z + \begingroup\lccode`!=\countletters + \lowercase{\endgroup\DeclareMathSymbol{!}{\mathalpha}{operators}{`!}}% + \advance\countletters 1 + \repeat +}% + %% Gestion de l'affichage ou pas des item (Pour élèves PAP) par exemple % Code by egreg : https://tex.stackexchange.com/questions/627250/hide-specific-item-in-a-list \ExplSyntaxOn @@ -263,7 +301,7 @@ }% % % On rectifie sur la dernière valeur :) \xdef\PfCCPEffectifs{\PfCCPEffectifs \fpeval{#1-\fpeval{\PfCRetiensRETSommeTotale}}}% - Les choix : \PfCCPEffectifs.\\ + %Les choix : \PfCCPEffectifs.\\ %% Somme totale : \fpeval{\PfCRetiensRETSommeTotale}\\ } @@ -397,8 +435,142 @@ \fi% }% -\NewDocumentCommand\ChoixAleaMulti{mmmm}{% +\NewDocumentCommand\ChoixAleaMultiMixListe{mmmm}{% % #1 nombre de valeurs à choisir + % #2 Liste à parcourir + % #3 valeur(s) exclue(s) + % #4 Nom de la liste qui récupère les données. + \ifx\bla#3\bla% + \PackageWarning{ProfMaquette}{Il faut définir au moins une valeur à exclure.}% + \else% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeValeursExclues{#3}% + \readlist*\ListeValeursRetenues{#2}% + \xintFor* ##1 in{\xintSeq{1}{\ListeValeursExclueslen}}\do{% + \xdef\PfMMixFoo{}% + \xintFor* ##2 in{\xintSeq{1}{\ListeValeursRetenueslen}}\do{% + \xintifboolexpr{\ListeValeursRetenues[##2]==\ListeValeursExclues[##1]}{}{% + \xdef\PfMMixFoo{\PfMMixFoo,\ListeValeursRetenues[##2]}% + }% + }% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeValeursRetenues{\PfMMixFoo}% + }% + \ifnum\ListeValeursRetenueslen>1\relax% + \MelangeListe{\PfMMixFoo}{#1}% + \xdef#4{\faa}% + \else% + \xdef#4{\PfMMixFoo}% + \fi% + \fi% +}% + +\NewDocumentCommand\ChoixAleaListe{ommmm}{% + % Il n'y a pas de répétitions des éléments. + % #1 précision des décimaux + % #2 nombre d'éléments + % #3 valeur entière minimale + % #4 valeur entière maximale + % #5 nom de la liste récupérant les nombres choisis. + % 1ere valeur + \IfNoValueTF{#1}{\xdef\ListeNombresAlea{\fpeval{randint(#3,#4)}}}{\xdef\ListeNombresAlea{\fpeval{round(randint(#3,#4-1)+rand(),#1)}}}% + \setsepchar{,}% + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \whiledo{\ListeARenvoyerlen<#2}{% + \IfNoValueTF{#1}{\xdef\SuivantNombreAlea{\fpeval{randint(#3,#4)}}}{\xdef\SuivantNombreAlea{\fpeval{round(randint(#3,#4-1)+rand(),#1)}}}% + \def\Unique{0}% + \xintFor* ##1 in{\xintSeq{1}{\ListeARenvoyerlen}}\do{% + \xintifboolexpr{\fpeval{\SuivantNombreAlea}==\fpeval{\ListeARenvoyer[##1]}}{% + \def\Unique{1}% + \xintBreakFor% + }{}% + }% + \ifnum\fpeval{\Unique}=0\relax% + \xdef\ListeNombresAlea{\ListeNombresAlea,\SuivantNombreAlea}% + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \fi% + }% + \xdef#5{\ListeNombresAlea}% +}% + +\NewDocumentCommand\ChoixAleaListeold{mmmm}{% + % Il n'y a pas de répétitions des éléments. + % #1 nombre d'éléments + % #2 valeur entière minimale + % #3 valeur entière maximale + % #4 nom de la liste récupérant les nombres choisis. + % 1ere valeur + \xdef\ListeNombresAlea{\fpeval{randint(#2,#3)}} + \setsepchar{,}\ignoreemptyitems + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \whiledo{\ListeARenvoyerlen<#1}{% + \xdef\SuivantNombreAlea{\fpeval{randint(#2,#3)}}% + \def\Unique{0}% + \xintFor* ##1 in{\xintSeq{1}{\ListeARenvoyerlen}}\do{% + \xintifboolexpr{\fpeval{\SuivantNombreAlea}==\fpeval{\ListeARenvoyer[##1]}}{% + \def\Unique{1}% + \xintBreakFor% + }{}% + }% + \ifnum\fpeval{\Unique}=0\relax% + \xdef\ListeNombresAlea{\ListeNombresAlea,\SuivantNombreAlea}% + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \fi% + }% + \xdef#4{\ListeNombresAlea}% +} + +\NewDocumentCommand\ChoixAleaListeMix{mmmmm}{% + % ideé by reddit : I need a randomly ordered list... + % Il n'y a pas de répétitions des éléments. + % #1 nombre d'éléments + % #2 valeur entière minimale + % #3 valeur entière maximale + % #4 Liste des valeurs à exclure + % #5 nom de la liste récupérant les nombres choisis. + \xdef\Toto{#4}% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeValeursExclues{\Toto}% + % 1ere valeur + \xdef\PfMNbCoups{0}% + \whiledo{\fpeval{\PfMNbCoups}<\ListeValeursExclueslen}{% + \xdef\ListeNombresAlea{\fpeval{randint(#2,#3)}}% + \xintFor* ##1 in {\xintSeq{1}{\ListeValeursExclueslen}}\do{% + \xintifboolexpr{\fpeval{\ListeNombresAlea}==\fpeval{\ListeValeursExclues[##1]}}{% + \xdef\PfMNbCoups{0}% + \xintBreakFor% + }{\xdef\PfMNbCoups{\fpeval{\PfMNbCoups+1}}}% + }% + }% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \whiledo{\ListeARenvoyerlen<#1}{% + \xdef\SuivantNombreAlea{\fpeval{randint(#2,#3)}}% + \def\Unique{0}% + \xintFor* ##1 in {\xintSeq{1}{\ListeValeursExclueslen}}\do{ + \xintifboolexpr{\fpeval{\SuivantNombreAlea}==\fpeval{\ListeValeursExclues[##1]}}{% + \def\Unique{1}% + \xintBreakFor% + }{}% + }% + \ifnum\fpeval{\Unique}=0\relax% + \xintFor* ##1 in{\xintSeq{1}{\ListeARenvoyerlen}}\do{% + \xintifboolexpr{\fpeval{\SuivantNombreAlea}==\fpeval{\ListeARenvoyer[##1]}}{% + \def\Unique{1}% + \xintBreakFor% + }{}% + }% + \fi% + \ifnum\fpeval{\Unique}=0\relax% + \xdef\ListeNombresAlea{\ListeNombresAlea,\SuivantNombreAlea}% + \readlist*\ListeARenvoyer{\ListeNombresAlea}% + \fi% + }% + \xdef#5{\ListeNombresAlea}% +} + +\NewDocumentCommand\ChoixAleaMulti{mmmm}{% + % #1 nombre de valeurs à choisir qui peut être supérieur au nombre de valeurs entières disponibles % #2 valeur minimale % #3 valeur maximale % #4 Nom de la liste qui récupère les données. @@ -409,6 +581,32 @@ \xdef#4{\PfMMixFoo}% }% +\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\MelangeNomFonction{mm}{% % #1 Nombre d'éléments à conserver % #2 Nom de la commande qui conserve @@ -471,32 +669,6 @@ \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 @@ -603,7 +775,7 @@ \end{enumerate} }{}% - \NewDocumentEnvironment{Enumelangesol}{b}{% +\NewDocumentEnvironment{Enumelangesol}{b}{% \setcounter{Melquestions}{0}% \setsepchar{\item}% \readlist*\ListeTest{#1}% @@ -840,6 +1012,8 @@ }% }% +\def\PfMTexteDuCorrige{Corrigé de l'exercice} + \NewDocumentCommand\PfMAffichageCorrige{}{% \ifboolKV[Boulot]{CAN}{%Toto \xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{% @@ -853,7 +1027,7 @@ \refstepcounter{PfMExoSol}%{##1}% \label{pagesol-\thePfMMaquette-\thePfMExoSol} \setcounter{PfMAlea}{0}% - \IfFileExists{\jobname-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{Corrigé de l'exercice\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{% + \IfFileExists{\jobname-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{% \IfFileExists{\jobname-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}% }% }% @@ -969,7 +1143,12 @@ \makeatother %%%%%%%% FIN BAREME %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% Commandes pour les affichages optionnels dans les cadre +%%% Commandes pour les affichages optionnels dans les cadres +\NewDocumentCommand{\PfMAffichageLogos}{}{% + \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}}{} + }% +% \NewDocumentCommand{\PfMAffichageCompetencesTravaillees}{}{% \ifboolKV[ClesExercices]{AffichageCompetence}{% \node[% @@ -981,7 +1160,8 @@ at (frame.north east) {\itshape\scriptsize\sffamily Compétence(s) dominante(s) : \useKV[ClesExercices]{Competence}}; }{}% -} + }% +% \NewDocumentCommand{\PfMLienVersSolution}{}{% \ifboolKV[Boulot]{VersSolution}{% \ifboolKV[ClesExercices]{PasCorrige}{}{% @@ -1083,6 +1263,11 @@ \setcounter{PfMAlea}{0}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#2}% + \ifboolKV[ClesExercices]{NonUtilise}{% + % Mettre la correction hors-jeu + \setKV[ClesExercices]{PasCorrige}% + \PfMChoixCorrection% + }{% \IfBooleanTF{#1}{% \setKV[ClesExercices]{Numerote=false}% }{}% @@ -1106,15 +1291,12 @@ #3 \end{tcolorbox}% \PfMApresLesExercices% + } }{}% %%Contrat %\makeatletter - -%\makeatother - -%\makeatletter \NewDocumentCommand\AfficheContrat{o}{% \useKVdefault[SchemaContrat]% \setKV[SchemaContrat]{#1}% @@ -1237,6 +1419,11 @@ \setcounter{PfMAlea}{0}% \setcounter{PfMNbLogo}{1}% \useKVdefault[ClesExercices]% + \ifboolKV[ClesExercices]{NonUtilise}{% + % Mettre la correction hors-jeu + \setKV[ClesExercices]{PasCorrige}% + \PfMChoixCorrection% + }{% \setKV[ClesExercices]{#2}% \IfBooleanTF{#1}{% \setKV[ClesExercices]{Numerote=false}% @@ -1267,6 +1454,7 @@ #3 \end{tcolorbox} \PfMApresLesExercices% + }% }{}% %%% Contrat %%% @@ -1290,6 +1478,11 @@ } \NewDocumentCommand\TikzContratCor{m}{% + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \clearpage \setKV[Contrat]{#1}% \begin{tcolorbox}[usercontratcor]% @@ -1313,8 +1506,7 @@ xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[Contrat]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; %% - \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}} - \ifboolKV[ClesExercices]{Oral}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{} + \PfMAffichageLogos% %% \PfMAffichageCompetencesTravaillees% %% @@ -1327,8 +1519,6 @@ %% Fin Contrat %%% %%FdR - -%\makeatletter \NewDocumentCommand\AfficheFdR{o}{% \useKVdefault[SchemaFdR]% \setKV[SchemaFdR]{#1}% @@ -1351,7 +1541,6 @@ \BuildRouteTikz{\FdRTotalExo}{\PfMListeExerciceFdR}{\PfMListeExerciceFdRStop}% }% }% -%\makeatother \NewDocumentCommand\BuildRouteTikz{mmm}{% \setsepchar{,}\ignoreemptyitems% @@ -1577,6 +1766,11 @@ \setcounter{PfMNbLogo}{1}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#2}% + \ifboolKV[ClesExercices]{NonUtilise}{% + % Mettre la correction hors-jeu + \setKV[ClesExercices]{PasCorrige}% + \PfMChoixCorrection% + }{% \IfBooleanTF{#1}{% \setKV[ClesExercices]{Numerote=false}% }{}% @@ -1588,6 +1782,7 @@ \immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-FdRTotalExo}}% % Creation des parcours \ifboolKV[ClesExercices]{Routes}{% + \colorlet{PfMCadreFdR}{black} % Remise à zéro de conteneurs des parcours \setsepchar{,}% % \ifboolKV[ClesExercices]{Stop}{\xdef\PfMFooListeFdR{\useKV[ClesExercices]{Route},0}}{ @@ -1597,7 +1792,7 @@ \foreachitem\compteur\in\ListeFdR{% \RemplisFdR{\ListeFdR[\compteurcnt]}% }% - }{} + }{\colorlet{PfMCadreFdR}{gray!15}} \ifboolKV[ClesExercices]{Stops}{% \setsepchar{,}% % \ifboolKV[ClesExercices]{Stop}{\xdef\PfMFooListeFdR{\useKV[ClesExercices]{Route},0}}{ @@ -1618,13 +1813,12 @@ #3 \end{tcolorbox} \PfMApresLesExercices% + }% }{}% -%\makeatother - %CAN \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*\ListeNoms{Aude/Elle/d'Aude/qu'Aude/elle,Bernard/Il/de Bernard/que Bernard/il,Céline/Elle/de Céline/que Céline/elle,Daniel/Il/de Daniel/que Daniel/il,\'Elise/Elle/d'\'Elise/qu'\'Elise/elle,Fabien/Il/de Fabien/que Fabien/il,Gérard/Il/de Gérard/que Gérard/il,Hélène/Elle/d'Hélène/qu'Hélène/elle,Ilies/Il/d'Ilies/qu'Ilies/il,Jasmine/Elle/de Jasmine/que Jasmine/elle,Kylian/Il/de Kylian/que Kylian/il,Laurent/Il/de Laurent/que Laurent/il,Mathilde/Elle/de Mathilde/que Mathilde/elle,Nina/Elle/de Nina/que Nina/elle,Octave/Il/d'Octave/qu'Octave/il,Philippe/Il/de Philippe/que Philippe/il,Joachim/Il/de Joachim/que Joachim/il,Thérèse/Elle/de Thérèse/que Thérèse/elle,Nawel/Elle/de Nawel/que Nawel/elle,Alexandre/Il/d'Alexandre/qu'Alexandre/il,Maxence/Il/de Maxence/que Maxence/il,Sophie/Elle/de Sophie/que Sophie/elle,Christophe/Il/de Christophe/que Christophe/il,Myriam/Elle/de Myriam/que Myriam/elle,Nathalie/Elle/de Nathalie/que Nathalie/elle,Sébastien/Il/de Sébastion/que Sébastien/il}% \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{,}% @@ -1706,18 +1900,22 @@ \end{center} \clearpage% }% -\makeatother +%\makeatother -\makeatletter +%\makeatletter \NewDocumentCommand\TikzCANCor{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[CAN]{#1}% \begin{tcolorbox}[usercancor]% \begin{center} \Large\sffamily Course aux nombres (Correction) \end{center} \hfill\useKV[CAN]{Niveau}% - %\par{\tiny\useKV[FdR]{Code}}\hfill{\scriptsize\useKV[FdR]{Date}}% + %\par{\tiny\useKV[CAN]{Code}}\hfill{\scriptsize\useKV[CAN]{Date}}% \end{tcolorbox}% } %%% FdR %%% @@ -1741,7 +1939,11 @@ } \NewDocumentCommand\TikzFdRCor{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[FdR]{#1}% \begin{tcolorbox}[userfdrcor]% \Large\sffamily \useKV[FdR]{Theme} (Correction) \hfill\useKV[FdR]{Niveau} \useKV[FdR]{Classe} @@ -1754,7 +1956,7 @@ before skip=1em, enhanced, breakable, - colback=white, + colback=PfMColbackFdR, colframe=PfMCadreFdR, overlay unbroken and first={% \node[% @@ -1764,8 +1966,7 @@ xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[FdR]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}}; %% - \ifboolKV[ClesExercices]{Calculatrice}{}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\cancel{\faCalculator}};\stepcounter{PfMNbLogo}} - \ifboolKV[ClesExercices]{Oral}{\node[fill=white,anchor=west,xshift=(\thePfMNbLogo*2.5+(\thePfMNbLogo-1)*20)*1pt] at (A.east) {\faBullhorn};\stepcounter{PfMNbLogo}}{} + \PfMAffichageLogos %% \PfMAffichageCompetencesTravaillees% %% @@ -1893,6 +2094,11 @@ \setcounter{PfMNbLogo}{1}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#2}% + \ifboolKV[ClesExercices]{NonUtilise}{% + % Mettre la correction hors-jeu + \setKV[ClesExercices]{PasCorrige}% + \PfMChoixCorrection% + }{% \IfBooleanTF{#1}{% \setKV[ClesExercices]{Numerote=false}% }{}% @@ -1922,6 +2128,7 @@ #3 \end{tcolorbox} \PfMApresLesExercices% + } }{}% %%%%%%%%%%%%%%%%%%%%%%% @@ -2040,9 +2247,15 @@ \setcounter{PfMAlea}{0}% \useKVdefault[ClesExercices]% \setKV[ClesExercices]{#2}% + \ifboolKV[ClesExercices]{NonUtilise}{% + % Mettre la correction hors-jeu + \setKV[ClesExercices]{PasCorrige}% + \PfMChoixCorrection% + }{% \IfBooleanTF{#1}{% \setKV[ClesExercices]{Numerote=false}% }{}% + \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}% \refstepcounter{PfMSection}% \PfMChoixCorrection% \refstepcounter{PfMExo}% @@ -2063,6 +2276,7 @@ #3 \end{tcolorbox}% \PfMApresLesExercices% + }% }{}% \NewDocumentEnvironment{ExerciceRecapBrevet}{so+b}{% @@ -2186,8 +2400,7 @@ ] at (frame.north west){\bfseries\sffamily \useKV[PdT]{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}}{}% + \PfMAffichageLogos% % \PfMAffichageCompetencesTravaillees% % @@ -2218,7 +2431,11 @@ } \NewDocumentCommand\TikzPdTCor{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[PdT]{#1}% \begin{tcolorbox}[userpdtcor]% \Large\sffamily \useKV[PdT]{Theme} (Correction) \hfill\useKV[PdT]{Niveau} \useKV[PdT]{Classe} @@ -2483,8 +2700,12 @@ }% \NewDocumentCommand\TikzDMCor{m}{% - \clearpage - \setKV[DM]{#1} + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% + \setKV[DM]{#1}% \begin{tcolorbox}[colback=white,height=\PfMHauteurAppreciation,title=APPR\'ECIATION,fonttitle=\color{black}\bfseries\sffamily,colbacktitle=white,enhanced,% overlay unbroken and first={% \node[% @@ -2572,7 +2793,11 @@ }% \NewDocumentCommand\TikzFicheCor{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[Fiche]{#1}% \begin{tcolorbox}[userfichecor]% \Large\sffamily \useKV[Fiche]{Theme} (Correction) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} @@ -2581,7 +2806,11 @@ } \NewDocumentCommand\TikzFicheCorRep{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[Fiche]{#1}% \begin{tcolorbox}[userfichecor]% \Large\sffamily \useKV[Fiche]{Theme} (Réponses) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} @@ -2590,7 +2819,11 @@ } \NewDocumentCommand\TikzFicheCorInd{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[Fiche]{#1}% \begin{tcolorbox}[userfichecor]% \Large\sffamily \useKV[Fiche]{Theme} (Indices) \hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe} @@ -2612,10 +2845,9 @@ fill=ColExoFiche, anchor=west, xshift=\kvtcb@leftlower, - ] at (frame.north west){\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\useKV[ClesExercices]{Titre}}{}}; + ] at (frame.north west){\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{~:~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{~:~}}\useKV[ClesExercices]{Titre}}{}}; %% - \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}}{} + \PfMAffichageLogos% % \PfMAffichageCompetencesTravaillees% % @@ -2647,7 +2879,11 @@ } \NewDocumentCommand\TikzParcoursCor{m}{% - \clearpage + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[Parcours]{#1}% \begin{tcolorbox}[userparcourscor]% \Large\sffamily \useKV[Parcours]{Theme} (Correction) \hfill\useKV[Parcours]{Niveau} \useKV[Parcours]{Classe} @@ -2670,8 +2906,7 @@ xshift=10pt, ] at (frame.north west){\bfseries\sffamily \useKV[Parcours]{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}}{} + \PfMAffichageLogos% %% \PfMAffichageCompetencesTravaillees% %% @@ -2709,8 +2944,12 @@ }% \newcommand\TikzDSCor[1]{% - \clearpage - \setKV[DS]{#1} + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% + \setKV[DS]{#1}% \begin{tcolorbox}[userdscor]% \sffamily Devoir surveillé \useKV[DS]{Numero} (Sujet \useKV[DS]{Sujet})\hfill\useKV[DS]{Niveau} \useKV[DS]{Classe}% \par Correction% @@ -2802,7 +3041,11 @@ }% \newcommand\TikzIECor[1]{% - \clearpage% + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% \setKV[IE]{#1}% \begin{tcolorbox}[useriecor]% \sffamily \useKV[IE]{Nom} \useKV[IE]{Numero} : \useKV[IE]{Theme} \ifboolKV[IE]{Sujets}{\scriptsize(Sujet \useKV[IE]{Sujet})}{}\hfill Correction% @@ -2883,7 +3126,6 @@ % Environnement englobant le tout. %\makeatletter \NewDocumentEnvironment{Maquette}{om}{% - % PfMFontSize vaut \PfMFontSize % on remet à zéro les compteurs de solutions : inutile ? \setcounter{RetiensSol}{0}% \setcounter{RetiensRep}{0}% @@ -2943,14 +3185,14 @@ \setKV[FdR]{#2}\TikzFdR% \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR% \ifboolKV[Boulot]{CorrigeFin}{% - \AddToHook{env/Maquette/after}[Correction]{% - \useKVdefault[Boulot]% + \AddToHook{env/Maquette/after}[Correction]{% + \useKVdefault[Boulot]% \setKV[Boulot]{#1}% \PfMBasculeDys% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% \TikzFdRCor{#2}% \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% - \PfMAffichageCorrige% + \PfMAffichageCorrige% \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% }% }{}% @@ -2959,14 +3201,14 @@ \setKV[Contrat]{#2}\TikzContrat% \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat% \ifboolKV[Boulot]{CorrigeFin}{% - \AddToHook{env/Maquette/after}[Correction]{% - \useKVdefault[Boulot]% + \AddToHook{env/Maquette/after}[Correction]{% + \useKVdefault[Boulot]% \setKV[Boulot]{#1}% \PfMBasculeDys% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% \TikzContratCor{#2} \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}% - \PfMAffichageCorrige% + \PfMAffichageCorrige% \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}% }% }{}% @@ -2975,7 +3217,6 @@ \setKV[Cours]{#2}% \TikzCours% \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche% - % \let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \useKVdefault[Boulot]% @@ -2993,7 +3234,6 @@ \setKV[RecapBrevet]{#2}% \TikzRecapBrevet% \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet% - %\let\Exercice\ExerciceRecapBrevet\let\endExercice\endExerciceRecapBrevet% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \useKVdefault[Boulot]% @@ -3011,7 +3251,6 @@ \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% \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}% \setcounter{PfMExo}{0}% \AtEndDocument{% @@ -3021,7 +3260,6 @@ \ifboolKV[Boulot]{Parcours}{% \setKV[Parcours]{#2}\TikzParcours% \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours% - %\let\Exercice\exerciceParcours\let\endExercice\endexerciceParcours% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \useKVdefault[Boulot]% @@ -3038,7 +3276,6 @@ \ifboolKV[Boulot]{PdT}{% \setKV[PdT]{#2}\TikzPdT% \let\exercice\exercicePdT\let\endexercice\endexercicePdT% - %\let\Exercice\exercicePdT\let\endExercice\endexercicePdT% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \useKVdefault[Boulot]% @@ -3055,7 +3292,6 @@ \ifboolKV[Boulot]{DM}{% \setKV[DM]{#2}\TikzDM{}% \let\exercice\exerciceDM\let\endexercice\endexerciceDM% - %\let\Exercice\exerciceDM\let\endExercice\endexerciceDM% \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \useKVdefault[Boulot]% @@ -3073,7 +3309,6 @@ \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]{% @@ -3138,7 +3373,6 @@ \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]{% \useKVdefault[Boulot]% @@ -3180,7 +3414,6 @@ }% }% }{}% -%\makeatother %D'après JCC % Package pour gérer les nombres pseudo-aléatoires @@ -3407,6 +3640,9 @@ \randomextract{\DeChoisi}{\NbDeChoisi}% } +\def\PfMListeNombresPremiers{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97} + + \newcommand\initpremiers{% \definelist{\listpremiers}{13,17,19,23,29,31,37,41,43,47}% } @@ -3660,6 +3896,8 @@ } % On met Christ7 à la fin :) + \newcommand{\vecteur}[1]{\overrightarrow{\strut #1}} + \newlength{\ltxt} \newcommand\compo[4]{% @@ -3808,4 +4046,83 @@ #2 \end{minipage} \BaremeEspaceMarge{-82pt} -}
\ No newline at end of file +} + +\AddToHook{env/multicols/begin}{\setcounter{Nbcolonnes}{2}}% +\AddToHook{env/multicols/after}{\setcounter{Nbcolonnes}{4}}% +\NewDocumentEnvironment{Dispo}{sm+b}{% + \ifPfMDeuxColonnes + \IfBooleanTF{#1}{% + #3 + \begin{center} + #2 + \end{center} + }{% + \begin{center} + #2 + \end{center} + #3 + }% + \else% + \IfBooleanTF{#1}{% + \dispog{1}{#2}{#3} + }{% + \dispo{1}{#2}{#3} + }% + \fi% +}% + +\NewDocumentEnvironment{CALign}{O{&=\dots&}O{&=\dots}mb}{% + % #1 séparateur généraliste + % #2 séparateur dernière colonne + % #3 nombre de colonnes souhaitées + % #4 environnement + \xdef\Foo{#4}% + \setsepchar{§}\ignoreemptyitems% + \readlist*\ListeTest{\Foo}% + \reademptyitems% + \quotient{\ListeTestlen}{#3}% + \modulo{\ListeTestlen}{#3}% + \begin{align*} + \ifnum\intquotient>0\relax + \xintFor* ##9 in{\xintSeq{0}{\fpeval{\the\intquotient-1}}}\do{% + \xintFor* ##8 in{\xintSeq{1}{#3}}\do{ + \ListeTest[\fpeval{##9*#3+##8}]\xintifForLast{#2}{#1} + }\ifnum##9<\fpeval{\the\intquotient-1}\relax\\\fi + } + \fi + \ifnum\remainder>0\relax + \ifnum\intquotient>0\relax\\\fi + \xintFor* ##8 in{\xintSeq{1}{\the\remainder}}\do{ + \ListeTest[\fpeval{\the\intquotient*#3+##8}]\xintifForLast{#2}{#1} + } + \fi + \end{align*} +}{}% + +\NewDocumentEnvironment{CALignAv}{O{A&=}mb}{% + % #1 séparateur généraliste + % #2 nombre de colonnes souhaitées + % #3 environnement + \xdef\Foo{#3}% + \setsepchar{§}\ignoreemptyitems% + \readlist*\ListeTest{\Foo}% + \reademptyitems% + \quotient{\ListeTestlen}{#2}% + \modulo{\ListeTestlen}{#2}% + \begin{align*} + \ifnum\intquotient>0\relax + \xintFor* ##9 in{\xintSeq{0}{\fpeval{\the\intquotient-1}}}\do{% + \xintFor* ##8 in{\xintSeq{1}{#2}}\do{% + #1\ListeTest[\fpeval{##9*#2+##8}]\ifnum##8<#2\relax\uppercase{&}\fi + }\ifnum##9<\fpeval{\the\intquotient-1}\relax{}\\\fi + }% + \fi% + \ifnum\remainder>0\relax% + \ifnum\intquotient>0\relax\\\fi + \xintFor* ##8 in{\xintSeq{1}{\the\remainder}}\do{% + #1\ListeTest[\fpeval{\the\intquotient*#2+##8}]\ifnum##8<\remainder\relax\uppercase{&}\fi + }% + \fi% + \end{align*} +}{}%
\ No newline at end of file |