diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCLego.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCLego.tex | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCLego.tex b/macros/latex/contrib/profcollege/latex/PfCLego.tex index fb18636d62..f4b0fbd65c 100644 --- a/macros/latex/contrib/profcollege/latex/PfCLego.tex +++ b/macros/latex/contrib/profcollege/latex/PfCLego.tex @@ -1,7 +1,7 @@ %%% % Lego %%% -\setKVdefault[Lego]{Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false}% +\setKVdefault[Lego]{Echelle=1,Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false,Largeura=2,Largeurb=2,Unique=false}% \defKV[Lego]{ListePerso=\setKV[Lego]{Perso}\xdef\PfCFooLegoListePerso{#1}}% \NewDocumentCommand\ChoixCouleur{m}{% @@ -21,7 +21,11 @@ \NewDocumentCommand\Lego{o}{% \useKVdefault[Lego]% \setKV[Lego]{#1}% - \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}% + \xintifboolexpr{\useKV[Lego]{Unite}==1}{% + \xdef\PfCNbCouleurs{1}% + }{% + \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}% + }% \ChoixCouleur{\PfCNbCouleurs}% \ifboolKV[Lego]{Perso}{% \BuildBarreLego{\FooCouleur}{\PfCFooLegoListePerso}% @@ -34,8 +38,11 @@ \ifluatex% \mplibforcehmode% \begin{mplibcode} - boolean Plaque; + boolean Plaque,Unique; Plaque=\useKV[Lego]{Plaque}; + Unique=\useKV[Lego]{Unique}; + + Echelle=\useKV[Lego]{Echelle}; input PfCLego; % @@ -59,7 +66,8 @@ ChoixCouleur(#1); % Longueur=\useKV[Lego]{Unite}; - Largeur=2; + Largeura=\useKV[Lego]{Largeura}; + Largeurb=\useKV[Lego]{Largeurb}; Diviseur=\useKV[Lego]{Diviseur}; color BriqueUnite; BriqueUnite=\useKV[Lego]{Couleur}; @@ -71,25 +79,31 @@ lego_height_old:=lego_height; lego_height:=lego_thickness; TR:=(0,1,0); - Lego_box(2*Longueur,4*Largeur,Gold); + Lego_box(2*Longueur,4*Largeura,Gold); TR:=(0,0,0); lego_height:=lego_height_old; fi; - Lego_box(Longueur,Largeur,BriqueUnite); + Lego_box(Longueur,Largeura,BriqueUnite); + if Unique=false: if Perso: Somme=0; ListePerso(#2); for k=0 upto (nbperso-1): - TR:=(0.5*(Longueur-Diviseurs[k]-Somme),2,0); - Lego_box(Diviseurs[k],2,Brique[k]); + TR:=(0.5*(Longueur-Diviseurs[k]-Somme),Largeura+0.5*(Largeurb-Largeura),0); + Lego_box(Diviseurs[k],Largeurb,Brique[k]); Somme:=Somme+2*Diviseurs[k]; endfor; else: for k=0 upto ((Longueur div Diviseur)-1): - TR:=(0.5*(Longueur-Diviseur)-k*Diviseur,2,0); - Lego_box(Diviseur,2,Brique[k]); + TR:=(0.5*(Longueur-Diviseur)-k*Diviseur,Largeura+0.5*(Largeurb-Largeura),0); + Lego_box(Diviseur,Largeurb,Brique[k]); endfor; fi; + fi; + picture RetiensLego; + RetiensLego=currentpicture; + currentpicture:=nullpicture; + draw RetiensLego scaled Echelle; \end{mplibcode} \else \begin{mpost} |