diff options
author | Norbert Preining <norbert@preining.info> | 2023-03-06 03:05:29 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-03-06 03:05:29 +0000 |
commit | 75cd005305bd2c2a0ec383f30ee5b1749ed15183 (patch) | |
tree | 65b5e6b912547ab4610badf5a7f61ce70e5aad02 /macros/latex/contrib/profcollege/metapost | |
parent | a2d17a09f7ecd91acd8826216349bb14cc5602cd (diff) |
CTAN sync 202303060305
Diffstat (limited to 'macros/latex/contrib/profcollege/metapost')
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; |