summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCLego.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCLego.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCLego.tex34
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}