diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex b/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex new file mode 100644 index 0000000000..fd1a46d6e3 --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCProgrammeCalcul.tex @@ -0,0 +1,170 @@ +%%%% +% Prog de calculs "simples" +%%%% +\setKVdefault[ClesProg]{% + Ecart=2em,% + Direct,% + SansCalcul=false,% + Application=false, + Details=false, + Enonce=false, + Nom={}, + CouleurCadre=black,% + CouleurFond=gray!10,% + Largeur={.95\linewidth},% + Epaisseur=.75pt,% + Pointilles=0, + ThemePerso=false, +} + +\newcounter{NBprog}% +\setcounter{NBprog}{0}% + +\newlength{\PointillesClesProg}% + +\newcommand\ProgCalcul[2][]{% + % #1 : cl\'es + % #2 : \'etapes + \useKVdefault[ClesProg]% + \setKV[ClesProg]{#1}% + \ifboolKV[ClesProg]{ThemePerso}{}{% + \tcbset{ProgCalcul/.style={% + boxsep=1mm, + bottom=.75mm, + middle=2mm, + boxrule={\useKV[ClesProg]{Epaisseur}}, + text width={\useKV[ClesProg]{Largeur}}, + colframe={\useKV[ClesProg]{CouleurCadre}}, + colback={\useKV[ClesProg]{CouleurFond}}, + halign upper=center + }% + }% + }% + \ifboolKV[ClesProg]{Application}{% + % % by Thomas Dehon and cp + \setsepchar[*]{ยง*,} + % \setsepchar[*]{,* }% + \ignoreemptyitems% + \readlist*\ListeTotale{#2}% + \xdef\PfCPCfoo{\ListeTotale[1]}% + \xdef\PfCPCfaa{\ListeTotale[2]}% + %% + \setsepchar{,}% \ignoreemptyitems% + \readlist*\ListeEtapes{\PfCPCfoo}% + \setsepchar[*]{,* }\ignoreemptyitems% + \readlist*\ListeProg{\PfCPCfaa}% + \begin{tcolorbox}[% + ProgCalcul,% + ] + \ifthenelse{\equal{\useKV[ClesProg]{Nom}}{}}% + {}% + {% + {\color{\useKV[ClesProg]{CouleurCadre}}{\bfseries\useKV[ClesProg]{Nom}}}% + \tcblower + }% + \ifboolKV[ClesProg]{SansCalcul}{% + \begin{enumerate} + \item Choisir un nombre~\pointilles~$\ListeProg[1]$% + \foreachitem\etape\in\ListeEtapes{% + \item \etape~\pointilles~$\ListeProg[3,\etapecnt]$ + }% + \end{enumerate} + }{\begin{enumerate} + \item Choisir un nombre~\pointilles~\xdef\NbDepart{\ListeProg[1]}\num{\NbDepart} + \foreachitem\etape\in\ListeEtapes{% + \item \etape~\pointilles~\edef\Test{\ListeProg[2,\etapecnt]}% + \expandarg% + \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\times}[\tempac]% + \StrSubstitute{\tempac}{/}{\div}[\tempad]% + $\ifboolKV[ClesProg]{Details}{\xintifboolexpr{\NbDepart<0}{(\num{\NbDepart})}{\num{\NbDepart}}\tempad=}{}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\etapecnt]}}\num{\NbDepart}$% + }% + \end{enumerate} + } + \end{tcolorbox} + }{% + \ifboolKV[ClesProg]{Enonce}{% + % by Thomas Dehon + \setsepchar[*]{,* }% + \ignoreemptyitems% + \readlist*\ListeEtapes{#2}% + \begin{tcolorbox}[% + ProgCalcul,% + ] + \ifthenelse{\equal{\useKV[ClesProg]{Nom}}{}}% + {}% + {% + {\color{\useKV[ClesProg]{CouleurCadre}}{\bfseries\useKV[ClesProg]{Nom}}}% + \tcblower + }% + \begin{enumerate} + \foreachitem\etape\in\ListeEtapes{% + \item \etape + \ifthenelse{\equal{\useKV[ClesProg]{Pointilles}}{0}}% + {}% + {% + \setlength{\PointillesClesProg}{\useKV[ClesProg]{Pointilles}} + \hfill \pointilles[\PointillesClesProg]% + }% + } + \end{enumerate} + \end{tcolorbox} + }{% + \setsepchar[*]{,* }\ignoreemptyitems% + \readlist*\ListeProg{#2}% + \stepcounter{NBprog}% + \xdef\NbDepart{\ListeProg[1]}% + \ifboolKV[ClesProg]{SansCalcul}{% + $\NbDepart$\foreachitem\compteur\in\ListeProg[2]{% + \hspace{0.2em}\tikzmark{A-\theNBprog-\compteurcnt}\hspace{\useKV[ClesProg]{Ecart}}\tikzmark{B-\theNBprog-\compteurcnt}\hspace{0.2em}$\ListeProg[3,\compteurcnt]$% + }% + \begin{tikzpicture}[remember picture, overlay] + \foreachitem\compteur\in\ListeProg[2]{% + \edef\Test{\ListeProg[2,\compteurcnt]} + \expandarg% + \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\times}[\tempac]% + \StrSubstitute{\tempac}{/}{\div}[\tempad]% + \draw[-stealth,transform canvas={yshift=0.25em}] (pic cs:A-\theNBprog-\compteurcnt) -- + node[above]{\scriptsize$\tempad$}(pic cs:B-\theNBprog-\compteurcnt); + } + \end{tikzpicture} + }{% + \num{\NbDepart}\foreachitem\compteur\in\ListeProg[2]{% + \hspace{0.2em}\tikzmark{A-\theNBprog-\compteurcnt}\hspace{\useKV[ClesProg]{Ecart}}\tikzmark{B-\theNBprog-\compteurcnt}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\compteurcnt]}}\hspace{0.2em}\num{\NbDepart}% + }% + \ifboolKV[ClesProg]{Direct}{% + \begin{tikzpicture}[remember picture, overlay] + \foreachitem\compteur\in\ListeProg[2]{% + \edef\Test{\ListeProg[2,\compteurcnt]} + \expandarg% + \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\times}[\tempac]% + \StrSubstitute{\tempac}{/}{\div}[\tempad]% + \draw[-stealth,transform canvas={yshift=0.25em}] (pic cs:A-\theNBprog-\compteurcnt) -- + node[above]{\scriptsize$\tempad$}(pic + cs:B-\theNBprog-\compteurcnt); + } + \end{tikzpicture} + }{% + \begin{tikzpicture}[remember picture, overlay] + \foreachitem\compteur\in\ListeProg[2]{% + \edef\Test{\ListeProg[2,\compteurcnt]} + \expandarg% + \StrSubstitute{\Test}{^2}{\empty\sqrt{\dots{}}}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\div}[\tempac]% + \StrSubstitute{\tempac}{/}{\times}[\tempad]% + \StrSubstitute{\tempad}{-}{+}[\tempae]% + \StrSubstitute{\tempae}{++}{-}[\tempaf]% + \draw[-stealth,transform canvas={yshift=0.25em}] (pic cs:B-\theNBprog-\compteurcnt) -- node[above]{\scriptsize$\tempaf$}(pic cs:A-\theNBprog-\compteurcnt); + } + \end{tikzpicture} + }% + }% + }% + }% +}%
\ No newline at end of file |