diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex index 86d323139eb..df5743e4399 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex @@ -4,9 +4,11 @@ \newtoks\tokPfCEngrenages% \def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}% -\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm} +\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={LightSteelBlue}} \NewDocumentCommand\Engrenages{o m}{% + \newtoks\toklistecouleur% + \toklistecouleur{}% \tokPfCEngrenages{} \useKVdefault[Engrenages]% \setKV[Engrenages]{#1}% @@ -18,12 +20,28 @@ \foreachitem\compteur\in\ListePfCEngrenages{% \xdef\PfCFooEngrenages{\PfCFooEngrenages \ListePfCEngrenages[\compteurcnt,1],\ListePfCEngrenages[\compteurcnt,2],}% }% - \BuildEngrenages{\PfCFooEngrenages}% + \xdef\ListeAvantCouleurs{\useKV[Engrenages]{ListeCouleurs}}% + \readlist*\ListeCouleur{\ListeAvantCouleurs}% + \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% + \BuildEngrenages{\PfCFooEngrenages}{\the\toklistecouleur}% }% -\def\BuildEngrenagesCode#1{% +\def\BuildEngrenagesCode#1#2{% u:=\useKV[Engrenages]{Unite}; CouleurEngrenage=\useKV[Engrenages]{Couleur}; +% + vardef RecuperationCouleurs(text t)= + color Col[]; + n:=0; + for p_=t: + n:=n+1; + if color p_: + Col[n]=p_; + else: + Col[n]=CouleurEngrenage; + fi; + endfor; + enddef; % vardef LectureDonnees(text t)= n:=0;k=0;l=0; @@ -39,17 +57,26 @@ endfor; enddef; % + RecuperationCouleurs(#2); LectureDonnees(#1); % pair K; K=(0,0); picture EngrenageFinal; EngrenageFinal=image( + if unknown Col[1]: + else: + CouleurEngrenage:=Col[1]; + fi; trace Engrenage(Mm[1],Zz[1],(0,0)); % Signe=1; % for w=2 upto (n div 2): + if unknown Col[w]: + else: + CouleurEngrenage:=Col[w]; + fi; K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0); AngleRot[w]:=360/(2*Zz[w]); if w=2: @@ -77,16 +104,16 @@ ); } -\NewDocumentCommand\BuildEngrenages{m}{% +\NewDocumentCommand\BuildEngrenages{mm}{% \ifluatex \mplibforcehmode \begin{mplibcode} input PfCEngrenages; - \BuildEngrenagesCode{#1} + \BuildEngrenagesCode{#1}{#2} trace EngrenageFinal; \end{mplibcode} \else - \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}}] + \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}{#2}}] trace EngrenageFinal; \end{mpost} \fi |