summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/metapost
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-03-06 03:05:29 +0000
committerNorbert Preining <norbert@preining.info>2023-03-06 03:05:29 +0000
commit75cd005305bd2c2a0ec383f30ee5b1749ed15183 (patch)
tree65b5e6b912547ab4610badf5a7f61ce70e5aad02 /macros/latex/contrib/profcollege/metapost
parenta2d17a09f7ecd91acd8826216349bb14cc5602cd (diff)
CTAN sync 202303060305
Diffstat (limited to 'macros/latex/contrib/profcollege/metapost')
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp426
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCScratch.mp2
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp2
3 files changed, 428 insertions, 2 deletions
diff --git a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
index 3c5ed4be0d..dd49ba8c3b 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
@@ -1534,4 +1534,430 @@ vardef compas(expr centre,extre,n)=
piccompas
enddef;
+%Grilles
+boolean orig,uni;
+orig=false;
+uni=false;
+
+vardef origine(expr p)=
+ x.origine:=x.so+xpart(p)*quad.u;
+ y.origine:=y.so+ypart(p)*quad.u;
+ orig:=true;
+enddef;
+
+vardef unites(expr g,h)=
+ x.u:=g*cm;
+ y.u:=h*cm;
+ uni:=true;
+enddef;
+
+vardef axes=
+ path axehor,axever;
+ axehor=(x.so*cm,y.origine)--(x.ne*cm,y.origine);
+ axever=(x.origine,y.so*cm)--(x.origine,y.ne*cm);
+ picture axx;
+ axx=image(
+ drawarrow (x.so*cm,y.origine)--(x.ne*cm,y.origine);
+ drawarrow (x.origine,y.so*cm)--(x.origine,y.ne*cm);
+ label.llft(btex $O$ etex,z.origine);
+ );
+ axx
+enddef;
+
+vardef axesvide=
+ path axehor,axever;
+ axehor=(x.so*cm,y.origine)--(x.ne*cm,y.origine);
+ axever=(x.origine,y.so*cm)--(x.origine,y.ne*cm);
+ picture axxx;
+ axxx=image(
+ drawarrow (x.so*cm,y.origine)--(x.ne*cm,y.origine);
+ drawarrow (x.origine,y.so*cm)--(x.origine,y.ne*cm);
+ );
+ axxx
+enddef;
+
+vardef axesvideorigine=
+ path axehor,axever;
+ axehor=(x.origine,y.origine)--(x.ne*cm,y.origine);
+ axever=(x.origine,y.origine)--(x.origine,y.ne*cm);
+ picture axxx;
+ axxx=image(
+ drawarrow (x.origine,y.origine)--(x.ne*cm,y.origine);
+ drawarrow (x.origine,y.origine)--(x.origine,y.ne*cm);
+ );
+ axxx
+enddef;
+
+def enplace=
+ if orig:
+ xscaled x.u yscaled y.u shifted (z.origine)
+ else:
+ xscaled x.u yscaled y.u shifted (z.so)
+ fi
+enddef;
+
+vardef placepoint(expr q,r)=
+ (q,r) enplace
+enddef;
+
+vardef pp(expr qq,rr)=placepoint(qq,rr)
+enddef;
+
+def replace=
+ xscaled (1/x.u) yscaled (1/y.u) shifted (-z.origine)
+enddef;
+
+def retrouvecoord(expr p)=%trasnforme les coordonées du point d'affixe p dans le repère absolu de metapost en les coordonnées du point dans le repère défini par l'utilisateur
+ p replace
+enddef;
+
+vardef placepointtri(expr q,r)=
+ save $;
+ pair $;
+ if orig:
+ $=z.origine shifted (q*(x.u,0)+r*(x.u/2,y.u));
+ else:
+ $=z.so*cm shifted (q*(x.u,0)+r*(x.u/2,y.u));
+ fi;
+ $
+enddef;
+
+vardef pptri(expr qq,rr)=placepointtri(qq,rr)
+enddef;
+
+vardef placepointiso(expr q,r)=
+ save $;
+ pair $;
+ $=if orig: z.origine else: (z.so+((sqrt(3)/2),0.5))*cm fi shifted (q*(sqrt(3)*cm,0)+0.5*r*cm*(sqrt(3),1));
+ $
+enddef;
+
+vardef ppiso(expr qq,rr)=placepointiso(qq,rr)
+enddef;
+
+vardef reperehexa(expr colo,lign)=
+ save $;
+ path $;
+ if (colo mod 2)=1:
+ $=(hexa shifted(0.5cm,0)) shifted((colo-1)*1.5*cm,(lign-1)*2*((sqrt 3)/2)*cm);
+ else:
+ $=(hexa shifted(0.5cm,0)) shifted((colo-1)*1.5*cm,((lign-1)*2+1)*((sqrt 3)/2)*cm);
+ fi;
+ $
+enddef;
+
+vardef Centrehexa(expr colo,lign)=
+ save $;
+ pair $;
+ if (colo mod 2)=1:
+ $=(centrehexa shifted(0.5cm,0)) shifted((colo-1)*1.5*cm,(lign-1)*2*((sqrt 3)/2)*cm);
+ else:
+ $=(centrehexa shifted(0.5cm,0)) shifted((colo-1)*1.5*cm,((lign-1)*2+1)*((sqrt 3)/2)*cm);
+ fi;
+ $
+enddef;
+
+%%Les grilles
+
+vardef grille(expr t)=
+ save gri;
+ picture gri;
+ orig:=false;
+ x.u:=t*cm;
+ y.u:=t*cm;
+ quad.u:=t*cm;
+ gri=image(
+ path p[];
+ %horizontale
+ p1:=(x.so*cm,0)--(x.ne*cm,0);
+ %verticale
+ p2:=(0,y.so*cm)--(0,y.ne*cm);
+ %options
+ %horizontales
+ for i:=0 step t until (y.ne-y.so):
+ draw p1 shifted (0,i*cm);
+ endfor;
+ %verticales
+ for i:=0 step t until (x.ne-x.so) :
+ draw p2 shifted (i*cm,0);
+ endfor;
+ );
+ gri
+enddef;
+
+vardef papiermillimetre=
+ save $;
+ picture $;
+ orig:=false;
+ x.u:=1cm;
+ y.u:=1cm;
+ quad.u:=1cm;
+ $=image(
+ path p[];
+ %horizontale
+ p1:=(x.so*cm,0)--(x.ne*cm,0);
+ %verticale
+ p2:=(0,y.so*cm)--(0,y.ne*cm);
+ %grille millimétrique
+ pickup pencircle scaled 0.2;
+ %horizontales
+ for j:=y.so step 0.1 until y.ne:
+ draw p1 shifted (0,j*cm);
+ endfor;
+ %verticales
+ for j:=x.so step 0.1 until x.ne :
+ draw p2 shifted (j*cm,0);
+ endfor;
+ %grille demi-centimétrique
+ pickup pencircle scaled 0.5;
+ %horizontales
+ for j:=y.so step 0.5 until y.ne:
+ draw p1 shifted (0,j*cm);
+ endfor;
+ %verticales
+ for j:=x.so step 0.5 until x.ne :
+ draw p2 shifted (j*cm,0);
+ endfor;
+ %grille centimétrique
+ pickup pencircle scaled 0.7;
+ %horizontales
+ for j:=y.so step 1 until y.ne:
+ draw p1 shifted (0,j*cm);
+ endfor;
+ %verticales
+ for j:=x.so step 1 until x.ne :
+ draw p2 shifted (j*cm,0);
+ endfor;
+ %grille penta-centimétrique
+ pickup pencircle scaled 1;
+ %horizontales
+ for j:=y.so step 5 until y.ne:
+ draw p1 shifted (0,j*cm);
+ endfor;
+ %verticales
+ for j:=x.so step 5 until x.ne :
+ draw p2 shifted (j*cm,0);
+ endfor;
+ );
+ $
+enddef;
+
+vardef Pointe(text t)=
+ for p_=t: if pair p_:
+ fill fullcircle scaled 1mm shifted p_;
+ fi;
+ endfor;
+enddef;
+
+vardef papiercahier=
+ save $;
+ orig:=false;
+ picture $;
+ x.u:=8mm;
+ y.u:=8mm;
+ quad.u:=8mm;
+ $=image(
+ path p[];
+ %horizontale
+p1:=(x.so*cm,0)--(x.ne*cm,0);
+ %verticale
+p2:=(0,y.so*cm)--(0,y.ne*cm);
+ %grille 2-millimétrique
+ pickup pencircle scaled 0.5;
+ %lignes horizontales
+ for i:=y.ne step -0.2 until y.so:
+ draw p1 shifted (0,i*cm);
+ endfor;
+ %grille 8-millimétrique
+ pickup pencircle scaled 1bp;
+ %lignes horizontales
+ for i:=y.ne step -0.8 until y.so:
+ draw p1 shifted (0,i*cm);
+ endfor;
+ %lignes verticales
+ for i:=x.so step 0.8 until (x.ne+1):
+ draw p2 shifted (i*cm,0);
+ endfor;
+ );
+ $
+enddef;
+
+vardef papierdeuxlignes=
+ save $;
+ orig:=false;
+ picture $;
+ x.u:=8mm;
+ y.u:=6mm;
+ $=image(
+ path p[];
+ %horizontale
+ p1:=(x.so*cm,0)--(x.ne*cm,0);
+ %grille 2-millimétrique
+ pickup pencircle scaled 0.5;
+ %lignes horizontales
+ for i:=y.so+0.2 step 0.6 until y.ne:
+ draw p1 shifted (0,i*cm);
+ endfor;
+ %grille 8-millimétrique
+ pickup pencircle scaled 1;
+ %lignes horizontales
+ for i:=y.so step 0.6 until y.ne:
+ draw p1 shifted (0,i*cm);
+ endfor;
+ );
+ $
+enddef;
+
+vardef papierpointe=
+ save $;
+ picture $;
+ orig:=false;
+ x.u:=5mm;
+ y.u:=5mm;
+ quadu:=5mm;
+ $=image(
+ for i:=0 upto 2*(xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ for j:=0 upto 2*(ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm))):
+ fill ((fullcircle scaled 1bp shifted(z.so*cm)) shifted ((i/2,j/2)*cm));
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
+vardef papiertriangle=
+ save $;
+ orig:=false;
+ if uni=false:
+ x.u:=1cm;
+ y.u:=(sqrt(3)/2)*cm;
+ fi;
+ picture $;
+ $=image(
+ path p[];
+ %triangle haut
+ %p1:=(x.so*cm,0)--(x.so*cm+1cm,0)--((x.so*cm,0) rotatedabout((x.so*cm+1cm,0),-60))--cycle;
+ p1:=(x.so*cm,0)--(x.so*cm+x.u,0)--((x.so*cm,0) rotatedabout((x.so*cm+x.u,0),-60))--cycle;
+ %triangle bas
+ %p2:=((x.so*cm,0)--(x.so*cm+1cm,0)--((x.so*cm,0) rotatedabout((x.so*cm+1cm,0),60))--cycle) shifted (-0.5cm,((sqrt3)/2)*cm);
+ p2:=((x.so*cm,0)--(x.so*cm+x.u,0)--((x.so*cm,0) rotatedabout((x.so*cm+x.u,0),60))--cycle) shifted (-x.u/2,y.u);
+ %grille horizontale1
+ pickup pencircle scaled 0.5;
+ numeric etag;
+ etag=floor(2*cm*(ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm)))/(y.u))+1;
+ for i:=0 step 2 until etag:
+ for j:=0 upto (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ draw p1 shifted (j*x.u,i*y.u);
+ draw p2 shifted (j*x.u,i*y.u);
+ endfor
+ endfor;
+ %grille horizontale 2
+ pickup pencircle scaled 0.5;
+ for i:=1 step 2 until etag:
+ for j:=0 upto (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ draw p1 shifted ((j-1/2)*x.u,i*y.u);
+ draw p2 shifted ((j+1/2)*x.u,i*y.u);
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
+vardef papiertrianglepointe=
+ save $;
+ orig:=false;
+ if uni=false:
+ x.u:=1cm;
+ y.u:=(sqrt(3)/2)*cm;
+ fi;
+ picture $;
+ $=image(
+ pickup pencircle scaled 0.5;
+ numeric etag;
+ etag=floor(2*cm*(ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm)))/(y.u))+1;
+ for i:=0 step 2 until etag:
+ for j:=0 upto (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ fill (fullcircle scaled 1bp shifted(z.so*cm)) shifted (j*x.u,i*y.u);
+ endfor
+ endfor;
+ for i:=1 step 2 until etag:
+ for j:=0 upto (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ fill (fullcircle scaled 1bp shifted(z.so*cm)) shifted ((j-1/2)*x.u,i*y.u);
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
+vardef papierisometriquepointe=
+ save $;
+ orig:=false;
+ y.u:=1cm;
+ x.u:=(sqrt(3)/2)*cm;
+ picture $;
+ $=image(
+ %grille horizontale1
+ pickup pencircle scaled 0.5;
+ for i:=0 step 1 until (ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm))):
+ for j:=0 step 2 until (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))+2):
+ fill (fullcircle scaled 1bp shifted (z.so*cm)) shifted (j*((sqrt3)/2)*cm,i*cm);
+ endfor
+ endfor;
+ %grille horizontale 2
+ for i:=0 step 1 until (ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm))-1):
+ for j:=1 step 2 until (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))+1):
+ fill (fullcircle scaled 1bp shifted (z.so*cm)) shifted (j*((sqrt3)/2)*cm,(i+0.5)*cm);
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
+vardef papierisometrique=
+ save $;
+ orig:=false;
+ x.u:=(sqrt(3)/2)*cm;
+ y.u:=1cm;
+ picture $;
+ $=image(
+ path p[];
+ %triangle haut
+ p1:=(x.so*cm,1cm)--((x.so*cm,0) rotatedabout((x.so*cm,1cm),60))--(x.so*cm,0);
+ %triangle bas
+ p2:=((x.so*cm,1cm)--((x.so*cm,0) rotatedabout((x.so*cm,1cm),-60))--(x.so*cm,0)) shifted (((sqrt3)/2)*cm,0);
+ %grille horizontale1
+ pickup pencircle scaled 0.5;
+ for i:=0 step 2 until (xpart(retrouvecoord(z.ne*cm))-xpart(retrouvecoord(z.so*cm))):
+ for j:=0 upto (ypart(retrouvecoord(z.ne*cm))-ypart(retrouvecoord(z.so*cm))-1):
+ draw p1 shifted (i*((sqrt3)/2)*cm,j*cm);
+ draw p2 shifted ((i+1)*((sqrt3)/2)*cm,j*cm);
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
+vardef papierhexagonal=
+ save $;
+ picture $;
+ orig:=false;
+ path hexa;
+ %hexagone de départ
+ hexa:=z.so*cm--(x.so*cm+1cm,y.so*cm)--(z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120))--((x.so*cm+1cm,y.so*cm) rotatedabout((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)),-120))--((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)) rotatedabout(((x.so*cm+1cm,y.so*cm) rotatedabout((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)),-120)),-120))--(((x.so*cm+1cm,y.so*cm) rotatedabout((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)),-120)) rotatedabout(((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)) rotatedabout(((x.so*cm+1cm,y.so*cm) rotatedabout((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)),-120)),-120)),-120))--cycle;
+ $=image(
+ pair centrehexa;
+ centrehexa=1/2[z.so*cm,((x.so*cm+1cm,y.so*cm) rotatedabout((z.so*cm rotatedabout((x.so*cm+1cm,y.so*cm),-120)),-120))];
+ pickup pencircle scaled 0.5;
+ numeric etag;
+ etag=floor((abs(y.ne*cm-y.so*cm))/((sqrt(3)/2)*cm));
+ for i:=0 step 3 until (abs(x.ne*cm-x.so*cm)/1cm):
+ for j:=0 step 2 until etag:
+ draw hexa shifted ((i+0.5)*cm,j*((sqrt 3)/2)*cm);
+ draw hexa shifted ((i+2)*cm,(j+1)*((sqrt 3)/2)*cm);
+ endfor
+ endfor;
+ );
+ $
+enddef;
+
endinput;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
index 10a8972ef8..3c6826777a 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCScratch.mp
@@ -1858,7 +1858,7 @@ vardef Sinon=
drawoptions();
texto=image(
labeloffset:=0;
- label.lrt(TEX("\barre\,\hbox to"&decimal(LongRep[numblocrep])&"pt{}"),if unknown _coinprec: (0,0) else:_coinprec fi) if print=false : withcolor blanc fi;
+ label.lrt(TEX("\longbarre\,\hbox to"&decimal(LongRep[numblocrep])&"pt{}"),if unknown _coinprec: (0,0) else:_coinprec fi) if print=false : withcolor blanc fi;
labeloffset:=3;
);
path cadre;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp b/macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp
index f3acd75d3d..f0ef36f1e0 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCScratchpdf.mp
@@ -1885,7 +1885,7 @@ vardef Sinon=
drawoptions();
texto=image(
labeloffset:=0;
- label.lrt(LATEXSCRATCH("\, \hbox to"&decimal(LongRep[numblocrep])&"pt{\bfseries\barre sinon}"),if unknown _coinprec: (0,0) else:_coinprec fi) if print=false : withcolor blanc fi;
+ label.lrt(LATEXSCRATCH("\, \hbox to"&decimal(LongRep[numblocrep])&"pt{\bfseries\longbarre sinon}"),if unknown _coinprec: (0,0) else:_coinprec fi) if print=false : withcolor blanc fi;
labeloffset:=3;
);
path cadre;