diff options
author | Karl Berry <karl@freefriends.org> | 2024-10-18 21:19:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-10-18 21:19:51 +0000 |
commit | 2bb3d9cd14aac51ed69e63c84f1cbb0f457317a2 (patch) | |
tree | 39b9ef64de29097b7d260cb8cac4188e144db132 /Master/texmf-dist/tex/latex/profmaquette | |
parent | 111991647a3eee979eb2eef5d46872a77f5ec410 (diff) |
profmaquette (18oct24)
git-svn-id: svn://tug.org/texlive/trunk@72585 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/profmaquette')
-rw-r--r-- | Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty | 186 |
1 files changed, 156 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty index de1b727de62..8321d58787d 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/10/16}% +\def\filedate{2024/10/17}% \let\PfMfiledate\filedate% -\def\fileversion{0.99-g}% +\def\fileversion{0.99-h}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -70,7 +70,7 @@ \setKVdefault[FdR]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% \setKVdefault[Parcours]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice,Vertical=false,Plan=false,Court=false}% \setKVdefault[Contrat]{Theme=Les nombres d\'ecimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}% -\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres d\'ecimaux}% +\setKVdefault[OlympiadesAPMEP]{Theme=Les nombres d\'ecimaux,Bandeau=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}}% @@ -1222,7 +1222,7 @@ %\stepcounter{PfMExoSolAlea}% \label{pagesol-\thePfMMaquette-\thePfMExoSol}% \setcounter{PfMAlea}{0}% - \def\PfMTexteDuCorrige{\csname PfMTNomSol\Roman{PfMExoSol}\endcsname} + \def\PfMTexteDuCorrige{\csname PfMTNomSol\Roman{PfMExoSol}\endcsname}% \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.rep}\par\goodbreak}{% \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-\thePfMMaquette-##1}}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}% }% @@ -2859,7 +2859,21 @@ }% }% -%\makeatletter +% \makeatletter +\NewDocumentCommand\TikzOlympiadesAPMEP{m}{% + \ifPfMRectoVerso% + \cleardoublepage% + \else% + \clearpage% + \fi% + \setKV[OlympiadesAPMEP]{#1}% + \begin{tcolorbox}[colback=colLogo] + \begin{Dispo}*{\normalsize\logoapmep{\scale@logo}} + \Large\sffamily \useKV[OlympiadesAPMEP]{Theme} + \end{Dispo} + \end{tcolorbox}% +}% + \NewDocumentCommand\TikzOlympiadesAPMEPCor{m}{% \ifPfMRectoVerso% \cleardoublepage% @@ -2896,8 +2910,7 @@ }{}% \colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}% \PfMAvantLesExercices% - \refstepcounter{PfMSection}% - \PfMChoixCorrection% +% \refstepcounter{PfMSection}% \ifboolKV[Boulot]{CorrigeSeul}{}{% \PfMChoixTitreSolution% \PfMChoixHideItemSolution% @@ -2911,11 +2924,12 @@ }% }{% \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{% - \PfMJusteAvantLaFinDesExercices% - \end{tcolorbox}% - %\ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}% - \PfMApresLesExercices% - }% + \ifboolKV[Boulot]{CorrigeSeul}{}{% + \PfMJusteAvantLaFinDesExercices% + \end{tcolorbox}% + \PfMApresLesExercices% + }% + }% }% \NewDocumentEnvironment{exerciceDS}{so}{% @@ -3595,7 +3609,7 @@ fill=ColExoFiche, anchor=west, xshift=\kvtcb@leftlower, - ] at (frame.north west){\color{colLogo}\resizebox{1em}{!}{\carreEntoure{}}~\thePfMExo\Large\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{.~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{.~}}\useKV[ClesExercices]{Titre}}{}}; + ] at (frame.north west){\color{colLogo}\resizebox{1em}{!}{\carreEntoure{}}~\Large\bfseries\sffamily\useKV[Fiche]{NomExercice}\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{\ifboolKV[ClesExercices]{Numerote}{.~}{\xdef\PfMTitiLgNE{\useKV[Fiche]{NomExercice}}\IfStrEq{\PfMTitiLgNE}{}{}{.~}}\useKV[ClesExercices]{Titre}}{}}; %% \useKV[ClesExercices]{Ajout}% %% @@ -4070,36 +4084,140 @@ \par\bigskip% }% -\NewDocumentCommand\ListeReponses{sm}{% +\newlength\PfMAMCBarreFraction +\makeatletter + + +\setKVdefault[ListeReponses]{Lettre=x,Unites=false} +\defKV[ListeReponses]{Unite=\setKV[ListeReponses]{Unites}\DeclareSIUnit{\TempoAMC}{#1}} + +\NewDocumentCommand\ListeReponses{som}{% \ifboolKV[Boulot]{AMC}{% + \useKVdefault[ListeReponses]% + \setKV[ListeReponses]{#2}% \setsepchar{,}\ignoreemptyitems% - \readlist*\ListeAMCRep{#2}% + \readlist*\ListeAMCRep{#3}% \reademptyitems% +% \showitems\ListeAMCRep[] \setcounter{PfMAMCOpen}{1}% \stepcounter{PfMNbListeReponsesAMC}% \par \ifnum\fpeval{\ListeAMCReplen}=1\relax% - \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}} - \IfInteger{\ListeAMCRep[1]}{% + % On teste la présence de ! pour les fractions, de : pour l'écriture ax+b, de ! pour une écriture du style $a^p$ et de | pour les écritures scientifiques. + \StrCount{\ListeAMCRep[1]}{/}[\PfMAMCPresenceFraction]% + \StrCount{\ListeAMCRep[1]}{:}[\PfMAMCPresenceLitteral]% + \StrCount{\ListeAMCRep[1]}{!}[\PfMAMCPresencePuissances]% + \StrCount{\ListeAMCRep[1]}{|}[\PfMAMCPresencePuissancesDix]% + \ifnum\fpeval{\PfMAMCPresenceFraction+\PfMAMCPresenceLitteral+\PfMAMCPresencePuissances+\PfMAMCPresencePuissancesDix}=0\relax + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}} + \IfInteger{\ListeAMCRep[1]}{% + \itemtomacro\ListeAMCRep[1]\Toto% + \StrLen{\fpeval{abs(\Toto)}}[\PfMLongueurCaseAMC]% + \IfBooleanTF{#1}{% + \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + }{% + \begin{minipage}{\PfMAMCBarreFraction} + \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex} + \end{minipage}\ifboolKV[ListeReponses]{Unites}{~~~\si[per-mode=symbol]{\TempoAMC}}{}% + }% + }{% + \itemtomacro\ListeAMCRep[1]\Toto% + \StrCut{\Toto}{.}{\TotoAv}{\TotoAp}% + \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCAv]% + \StrLen{\TotoAp}[\PfMLongueurCaseAMCAp]% + \IfBooleanTF{#1}{% + \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + }{% + \begin{minipage}{\PfMAMCBarreFraction} + \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign=false,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + \end{minipage}\ifboolKV[ListeReponses]{Unites}{~~~\si[per-mode=symbol]{\TempoAMC}}{}% + }% + }% + \end{questionmultx} + \else + %Fraction + \ifnum\PfMAMCPresenceFraction=1\relax% + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}} \itemtomacro\ListeAMCRep[1]\Toto% - \StrLen{\fpeval{abs(\Toto)}}[\PfMLongueurCaseAMC]% + \StrCut{\Toto}{/}{\TotoAv}{\TotoAp}% + \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCNum]% + \StrLen{\TotoAp}[\PfMLongueurCaseAMCDeno]% \IfBooleanTF{#1}{% - \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + \AMCnumericChoices{\TotoAv.\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCNum+\PfMLongueurCaseAMCDeno},decimals=\PfMLongueurCaseAMCDeno,sign,Tpoint={\raisebox{0.25\AMC@boxedheight}{\rule{\PfMAMCBarreFraction}{1pt}}},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% }{% - \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\PfMLongueurCaseAMC,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + \AMCnumericChoices{\TotoAv.\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCNum+\PfMLongueurCaseAMCDeno},decimals=\PfMLongueurCaseAMCDeno,sign=false,Tpoint={\raisebox{0.25\AMC@boxedheight}{\rule{\PfMAMCBarreFraction}{1pt}}},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% }% - }{% + \end{questionmultx} + \fi + % Puissances + \ifnum\PfMAMCPresencePuissances=1\relax% \itemtomacro\ListeAMCRep[1]\Toto% - \StrCut{\Toto}{.}{\TotoAv}{\TotoAp}% - \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCAv]% - \StrLen{\TotoAp}[\PfMLongueurCaseAMCAp]% + \StrCut{\Toto}{!}{\TotoAv}{\TotoAp}% + \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMant]% + \StrLen{\TotoAp}[\PfMLongueurCaseAMCPuis]% \IfBooleanTF{#1}{% - \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + $\begin{minipage}{\PfMAMCBarreFraction} + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMant},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}^{~\begin{minipage}{\PfMAMCBarreFraction} + \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCPuis},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}}$ }{% - \AMCnumericChoices{\fpeval{\ListeAMCRep[1]}}{digits=\fpeval{\PfMLongueurCaseAMCAv+\PfMLongueurCaseAMCAp},decimals=\PfMLongueurCaseAMCAp,sign=false,Tpoint={,},borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + $\begin{minipage}{\PfMAMCBarreFraction} + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMant},sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}^{~\begin{minipage}{\PfMAMCBarreFraction} + \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCPuis},sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}}$ }% - }% - \end{questionmultx} + \fi + % PuissancesDix + \ifnum\PfMAMCPresencePuissancesDix=1\relax% + \itemtomacro\ListeAMCRep[1]\Toto% + \StrCut{\Toto}{|}{\TotoAv}{\TotoAp}% + \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMant]% + \StrLen{\TotoAp}[\PfMLongueurCaseAMCPuis]% + \StrCut{\TotoAv}{.}{\TotoAva}{\TotoApa}% + \StrLen{\fpeval{abs(\TotoAva)}}[\PfMLongueurCaseAMCManta]% + \StrLen{\fpeval{abs(\TotoApa)}}[\PfMLongueurCaseAMCMantb]% + \IfBooleanTF{#1}{% + $\begin{minipage}{\PfMAMCBarreFraction} + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCManta+\PfMLongueurCaseAMCMantb},Tpoint={,},decimals=\PfMLongueurCaseAMCMantb,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex} + \end{questionmultx} + \end{minipage}\quad\times10^{~\begin{minipage}{\PfMAMCBarreFraction} + \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\PfMLongueurCaseAMCPuis,sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}} + $ + }{% + $\begin{minipage}{\PfMAMCBarreFraction} + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCManta+\PfMLongueurCaseAMCMantb},Tpoint={,},decimals=\PfMLongueurCaseAMCMantb,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex} + \end{questionmultx} + \end{minipage}\quad\times10^{~\begin{minipage}{\PfMAMCBarreFraction} + \scriptsize\stepcounter{PfMNbListeReponsesAMC}\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}\AMCnumericChoices{\TotoAp}{digits=\PfMLongueurCaseAMCPuis,sign=false,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}\end{questionmultx} + \end{minipage}} + $ + }% + \fi + % Litteral + \ifnum\PfMAMCPresenceLitteral=1 + \itemtomacro\ListeAMCRep[1]\Toto% + \StrCut{\Toto}{:}{\TotoAv}{\TotoAp}% + \StrLen{\fpeval{abs(\TotoAv)}}[\PfMLongueurCaseAMCMono]% + \StrLen{\fpeval{abs(\TotoAp)}}[\PfMLongueurCaseAMCConst]% + $ + \begin{minipage}{\PfMAMCBarreFraction} + \footnotesize% + \begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}% + \AMCnumericChoices{\TotoAv}{digits=\fpeval{\PfMLongueurCaseAMCMono},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + \end{questionmultx}% + \end{minipage} + \qquad\useKV[ListeReponses]{Lettre}\quad + \begin{minipage}{\PfMAMCBarreFraction}% + \stepcounter{PfMNbListeReponsesAMC}\footnotesize\begin{questionmultx}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}}% + \AMCnumericChoices{\TotoAp}{digits=\fpeval{\PfMLongueurCaseAMCConst},sign,borderwidth=0pt,backgroundcol=gray!20,scoreexact=1,hspace=0.25em,vspace=0ex}% + \end{questionmultx}% + \end{minipage} + $ + \fi + \fi \else% \begin{question}{\Roman{PfMExo}\roman{PfMNbListeReponsesAMC}} \ifPfMDeuxColonnes @@ -4121,6 +4239,7 @@ \fi }{}% }% +\makeatother \makeatletter \tcbset{% @@ -4366,10 +4485,10 @@ vardef LCDSeul(text nt)= \ifboolKV[Boulot]{PixelArt}{% \stepcounter{PfMLettresPixelArt}% \ifboolKV[PixelArt]{Aleatoire}{% - \hfill\textbf{Lettre \ListePourLesItems[\fpeval{\thePfMLettresPixelArt+1}]}% + \hfill\textbf{Lettre~\ListePourLesItems[\fpeval{\thePfMLettresPixelArt+1}]}% %Num Lettre = \thePfMLettresPixelArt }{% - \hfill\textbf{Lettre \Alph{PfMLettresPixelArt}}% + \hfill\textbf{Lettre~\Alph{PfMLettresPixelArt}}% }% \ifdef{\ListeSolAv}{% \xdef\ListeSolAv{\ListeSolAv,#1}% @@ -4495,6 +4614,13 @@ vardef LCDSeul(text nt)= \ifboolKV[Boulot]{OlympiadesAPMEP}{% \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP% \let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP% + \ifboolKV[OlympiadesAPMEP]{Bandeau}{% + \TikzOlympiadesAPMEP{#2}% + \bigskip + }{% + \xdef\PfMTitreAPMEP{\useKV[OlympiadesAPMEP]{Theme}} + \chapter{\PfMTitreAPMEP} + } \ifboolKV[Boulot]{CorrigeFin}{% \AddToHook{env/Maquette/after}[Correction]{% \PfMPrepareCorrection{#1}% |