summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex39
1 files changed, 33 insertions, 6 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex b/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
index 86d323139e..df5743e439 100644
--- a/macros/latex/contrib/profcollege/latex/PfCEngrenagesBase.tex
+++ b/macros/latex/contrib/profcollege/latex/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