summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCCartographie.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCCartographie.tex211
1 files changed, 211 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCCartographie.tex b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
new file mode 100644
index 0000000000..9156779cd7
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCCartographie.tex
@@ -0,0 +1,211 @@
+%%%
+% Cartographie
+%%%
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2022/texmf-dist/metapost/profcollege/datastest/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2}
+\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
+\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
+\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
+
+\newcommand\Cartographie[3][]{%
+ \ifluatex
+ \useKVdefault[Cartographie]
+ \setKV[Cartographie]{#1}
+ \ifboolKV[Cartographie]{Projection}{%
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCMonde;
+ string arborescence;
+ arborescence:=\useKV[Cartographie]{Arborescence};
+ boolean Impression,VillesSup;
+ VillesSup=\useKV[Cartographie]{VillesSup};
+ Impression=\useKV[Cartographie]{Impression};
+
+ maillage:=true;
+ fleuves:=false;
+ lacs:=false;
+ capitales:=false;
+
+ if Impression:
+ noncolore:=true;
+ payscolor:=white;
+ else:
+ noncolore:=true;
+ payscolor:=\useKV[Cartographie]{CouleurPays};
+ fi;
+
+ projection:=\useKV[Cartographie]{TypeProjection};
+ feuillet:=u*(-20,-20)--u*(20,-20)--u*(20,20)--u*(-20,20)--cycle;
+ drawoptions(withpen pencircle scaled 0.5 withcolor 0.5white);
+ Projection(3,48,\useKV[Cartographie]{Echelle});
+ drawoptions();
+
+ if projection="mercator":
+ clip currentpicture to (mercatorc(-85,-180)--mercatorc(-85,180)--mercatorc(85,180)--mercatorc(85,-180)--cycle);
+ draw mercatorc(0,-180)--mercatorc(0,180);
+ draw mercatorc(-85,0)--mercatorc(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),mercatorc(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(0,k*10));
+ endfor;
+ elseif projection="cylindrique":
+ clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
+ draw cylindriquec(0,-180)--cylindriquec(0,180);
+ draw cylindriquec(-85,0)--cylindriquec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
+ endfor;
+ elseif projection="winkel":
+ clip currentpicture to (winkelc(-85,-180)--winkelc(-85,180) for k=-80 step 5 until 85:--winkelc(k,180) endfor --winkelc(85,-180) for k=80 step -5 until -85:--winkelc(k,-180) endfor --cycle);
+ draw winkelc(0,-180)--winkelc(0,180);
+ draw winkelc(-85,0)--winkelc(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),winkelc(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,k*10));
+ endfor;
+ elseif projection="cylindrique":
+ clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
+ draw cylindriquec(0,-180)--cylindriquec(0,180);
+ draw cylindriquec(-85,0)--cylindriquec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
+ endfor;
+ elseif projection="simple":
+ clip currentpicture to (simplec(-85,-180)--simplec(-85,180)--simplec(85,180)--simplec(85,-180)--cycle);
+ draw simplec(0,-180)--simplec(0,180);
+ draw simplec(-85,0)--simplec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),simplec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,k*10));
+ endfor;
+ fi;
+ if VillesSup:
+ nomfichiermul:=\useKV[Cartographie]{Villes};
+ nblec:=scantokens readfrom nomfichiermul;
+ drawoptions(withcolor (0.15,0.15,0.15));
+ for p=1 upto nblec:
+ pair Coord[],latlon;string p_;
+ latlon=scantokens readfrom nomfichiermul;
+ p_=scantokens readfrom nomfichiermul;
+ if projection="mercator":
+ Coord[p]=mercatorc(ypart(latlon),xpart(latlon));
+ elseif projection="winkel":
+ Coord[p]=winkelc(ypart(latlon),xpart(latlon));
+ elseif projection="cylindrique":
+ Coord[p]=cylindriquec(ypart(latlon),xpart(latlon));
+ elseif projection="simple":
+ Coord[p]=simplec(ypart(latlon),xpart(latlon));
+ fi;
+ marque_p:="croix";
+ pointe(Coord[p]);
+ label.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
+ endfor;
+ drawoptions();
+ closefrom nomfichiermul;
+ fi;
+ \end{mplibcode}
+ }{%
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCMonde;
+ string arborescence;
+ arborescence:=\useKV[Cartographie]{Arborescence};
+ LargeurCadre=\useKV[Cartographie]{Largeur};
+ HauteurCadre=\useKV[Cartographie]{Hauteur};
+ distanceecran=100*\useKV[Cartographie]{Echelle};
+ fleuves:=\useKV[Cartographie]{Fleuves};
+ boolean Carte,Impression,VillesSup;
+ Carte=\useKV[Cartographie]{Carte};
+ Impression=\useKV[Cartographie]{Impression};
+ VillesSup=\useKV[Cartographie]{VillesSup};
+ couleurfond:=\useKV[Cartographie]{CouleurFond};
+ if Impression:
+ noncolore:=true;
+ payscolor:=0.85white;
+ couleurfond:=white;
+ couleurfleuve:=couleurfond;
+ fi;
+ capitales:=\useKV[Cartographie]{Capitales};
+ All:=\useKV[Cartographie]{All};
+ Europe:=\useKV[Cartographie]{Europe};
+ Asie:=\useKV[Cartographie]{Asie};
+ Amsud:=\useKV[Cartographie]{Amsud};
+ Amnord:=\useKV[Cartographie]{Amnord};
+ Amcentrale:=\useKV[Cartographie]{Amcentre};
+ Caraibes:=\useKV[Cartographie]{Caraibes};
+ Afrique:=\useKV[Cartographie]{Afrique};
+ if Carte:
+ Echelle:=\useKV[Cartographie]{AfficheEchelle};
+ figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
+ if \useKV[Cartographie]{PaysSeul}:
+ projection:="bonne";
+ theta:=#2;
+ phi:=#3;
+ zoom(echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
+ fill (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle withcolor couleurfond;
+ lecturep(arborescence&\useKV[Cartographie]{Pays}&".dat",couleurfond);%
+ trace feuillet withpen pencircle scaled 2;
+ if Echelle=true:
+ draw ((Xa,Ya)+u*(1,1))--((Xa,Ya)+u*(2,1));
+ labeloffset:=labeloffset*1.5;
+ label.top(btex 0 etex,(Xa,Ya)+u*(1,1));
+ label.top(TEX(""&decimal(Long)&"~km"),(Xa,Ya)+u*(2,1));
+ labeloffset:=labeloffset/1.5;
+ draw ((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9));
+ draw (((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9))) shifted(u*(1,0));
+ fi;
+ else:
+ projection:="bonne";
+ Projection(#2,#3,echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
+ trace feuillet withpen pencircle scaled 2;
+ fi;
+ if VillesSup:
+ nomfichiermul:=\useKV[Cartographie]{Villes};
+ nblec:=scantokens readfrom nomfichiermul;
+ drawoptions(withcolor (0.15,0.15,0.15));
+ projection:="bonne";
+ for p=1 upto nblec:
+ pair Coord[],latlon;string p_;
+ latlon=scantokens readfrom nomfichiermul;
+ p_=scantokens readfrom nomfichiermul;
+ Coord[p]=bonnec(ypart(latlon),xpart(latlon));
+ dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
+ endfor;
+ drawoptions();
+ closefrom nomfichiermul;
+ fi;
+ else:
+ mappemonde(#2,#3);
+ fi;
+ \end{mplibcode}
+ }
+ \else
+ \PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."}
+ \fi
+}% \ No newline at end of file