diff options
author | Norbert Preining <norbert@preining.info> | 2022-05-27 03:01:31 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-05-27 03:01:31 +0000 |
commit | 84a5593d3fb9d03aac5677678bcc4c92e8c9a9c4 (patch) | |
tree | 0212ba38147bcfe80e5c1a853071a6e6a45b87d7 /macros/latex | |
parent | 02d941fa9c9895bb08a84ac9afe3559abd1ba8ad (diff) |
CTAN sync 202205270301
Diffstat (limited to 'macros/latex')
-rw-r--r-- | macros/latex/contrib/fancyvrb/Changes | 1 | ||||
-rw-r--r-- | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf | bin | 141127 -> 141454 bytes | |||
-rw-r--r-- | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex | 10 | ||||
-rw-r--r-- | macros/latex/contrib/fancyvrb/latex/fancyvrb.sty | 4 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf | bin | 7679593 -> 8451374 bytes | |||
-rw-r--r-- | macros/latex/contrib/profcollege/latex/ProfCollege.sty | 2218 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp | 195 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp | 55 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp | 1 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/PfCMonde.mp | 150 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/datastest/Casia.dat | 5 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/datastest/russie3.dat | 8819 | ||||
-rw-r--r-- | macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat | 465 |
13 files changed, 11153 insertions, 770 deletions
diff --git a/macros/latex/contrib/fancyvrb/Changes b/macros/latex/contrib/fancyvrb/Changes index 8053f8e8d7..a90f370d89 100644 --- a/macros/latex/contrib/fancyvrb/Changes +++ b/macros/latex/contrib/fancyvrb/Changes @@ -1,4 +1,5 @@ --- fancyvrb.sty +4.2a 2022/05/26 - updated documentation (hv) 4.2 2022/04/12 - change option file_ext to fileext (hv) 4.1b 2021/12/21 - fix for ~ in message (hv) 4.1a 2021/11/24 - updated filedate (hv) diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf Binary files differindex a797fa6253..2850067b7a 100644 --- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf +++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex index 66b211391f..ec5cc930ce 100644 --- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex +++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex @@ -831,6 +831,15 @@ interpreted (using tabs is in fact a rather old-fashioned style of coding): \end{Verbatim} \end{SideBySideExample} + +Escaping of ] is needed to prevent ]] at the end which is not allowed. ALternatively +you can write \verb|commandchars={+[]}| or \verb|commandchars=+{[}{]}|. Escaping is needed +for all active characters. Pay attention that you do not use characters which are used +in the code of \texttt{fancyvrb} itself, e.g. \verb|<>| + + + + \ifChangeBar\begin{changebar}\fi Using this way, it is also possible to put labels to be able, later, to make reference to some lines of the verbatim environments: @@ -848,6 +857,7 @@ make reference to some lines of the verbatim environments: \end{SideBySideExample} \ifChangeBar\end{changebar}\fi + \subsubsection{Margins} \begin{optlist} diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty index cd7a2478a1..a8d4922c3d 100644 --- a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty +++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty @@ -13,8 +13,8 @@ %% verbatim environments and commands and extensive documentation. %% \NeedsTeXFormat{LaTeX2e} -\def\fileversion{4.2} -\def\filedate{2022/04/12} +\def\fileversion{4.2a} +\def\filedate{2022/05/26} \ProvidesPackage{fancyvrb}[\filedate\space \fileversion\space verbatim text (tvz,hv)] %\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)} \csname fancyvrb@loaded\endcsname diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf Binary files differindex 77976e2bf7..09b8ebd0b5 100644 --- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf +++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty index 5e1c717793..ac3760389a 100644 --- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty +++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty @@ -3,7 +3,7 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfCollege}[2022/03/10 v0.99-m Aide pour l'utilisation de LaTeX au collège] +\ProvidesPackage{ProfCollege}[2022/06/01 v0.99-o Aide pour l'utilisation de LaTeX au college] \RequirePackage{verbatim} @@ -129,6 +129,12 @@ } \makeatother +% Pb ProfCollege<->Chinois soulev\'e par Denis +% Solution by egreg :) +\newcommand\getstrut[1]{% + \the\expandafter#1\expanded{\strutbox}% +} + % Colorer uniquement la barre de soulignement % https://tex.stackexchange.com/questions/9466/color-underline-a-formula/153884 \def\mathunderline#1#2{\color{#1}\underline{{\color{black}#2}}\color{black}} @@ -158,7 +164,7 @@ } \newcommand\LogoTW[2]{% -\setbox1=\hbox{\includegraphics[scale=#2]{#1}} +\setbox1=\hbox{\includegraphics[scale=#2]{#1}}% \begin{tikzpicture}% \clip (0,0) circle (4mm); \draw (0,0) circle (4mm); @@ -168,12 +174,12 @@ \end{tikzpicture}% }% -\makeatletter +\makeatletter% \def\Dotfill{% -\leavevmode -\cleaders \hb@xt@ .44em{\hss\xleaders\hrule width0.33em\hss}\hfill -\kern\z@} -\makeatother +\leavevmode% +\cleaders \hb@xt@ .44em{\hss\xleaders\hrule width0.33em\hss}\hfill% +\kern\z@}% +\makeatother% \newcommand\pointilles[1][]{% \ifx\bla#1\bla% @@ -331,6 +337,68 @@ } %%% +% Geometrie +%%% +\setKVdefault[Geometrie]{CoinBG={(0,0)},CoinHD={(10u,10u)},TypeTrace="Instruments"}% + +\ifluatex +\NewDocumentEnvironment{Geometrie}{o +b}{% + \useKVdefault[Geometrie]% + \setKV[Geometrie]{#1}% + \mplibforcehmode + \begin{mplibcode} + % input PfCMPFr; + pair Coinbg,Coinhd; + Coinbg=\useKV[Geometrie]{CoinBG}; + Coinhd=\useKV[Geometrie]{CoinHD}; + if \useKV[Geometrie]{TypeTrace}="Instruments": + typetrace:="normal"; + elseif \useKV[Geometrie]{TypeTrace}="MainLevee": + typetrace:="mainlevee"; + elseif \useKV[Geometrie]{TypeTrace}="Espace": + typetrace:="3D"; + typerepre:="persp"; + fi; + xa=xpart(Coinbg); + xb=xpart(Coinhd); + ya=ypart(Coinbg); + yb=ypart(Coinhd); + feuille(xa,ya,xb,yb); + _tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi; + _tfig:=2*_tfig; + #2% + \end{mplibcode} +}{} +\else +\NewDocumentEnvironment{Geometrie}{o +b}{% + \useKVdefault[Geometrie]% + \setKV[Geometrie]{#1}% + \begin{mpost}[mpsettings={ + pair Coinbg,Coinhd; + Coinbg=\useKV[Geometrie]{CoinBG}; + Coinhd=\useKV[Geometrie]{CoinHD}; + if \useKV[Geometrie]{TypeTrace}="Instruments": + typetrace:="normal"; + elseif \useKV[Geometrie]{TypeTrace}="MainLevee": + typetrace:="mainlevee"; + elseif \useKV[Geometrie]{TypeTrace}="Espace": + typetrace:="3D"; + typerepre:="persp"; + fi;} + ]% + xa=xpart(Coinbg); + xb=xpart(Coinhd);; + ya=ypart(Coinbg); + yb=ypart(Coinhd); + feuille(xa,ya,xb,yb); + _tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi; + _tfig:=2*_tfig; + #2% + \end{mpost} +}{} +\fi% + +%%% % Smiley %%% %%https://tex.stackexchange.com/questions/3695/smileys-in-latex/227226 @@ -518,11 +586,140 @@ }%\raisebox } +%%%%% +% Enquête +%%%%% +\setKVdefault[ClesEnquete]{Perso=Qui ?,Objet=Quoi ?,Lieu=Où ?,Largeur=4.5cm} + +\newcommand\Enquete[1][]{% + \useKVdefault[ClesEnquete]% + \setKV[ClesEnquete]{#1}% +} + +\newcommand\ListePersonnages[1]{% + \setsepchar{§}% + \readlist*\RetiensListePersonnages{#1} +} + +\newcommand\ListeObjets[1]{% + \setsepchar{§}% + \readlist*\RetiensListeObjets{#1} +} + +\newcommand\ListeLieux[1]{% + \setsepchar{§}% + \readlist*\RetiensListeLieux{#1} +} + +\newcommand\MelangeListe[2]{% + % #1 Liste à mélanger + % #2 Nombre d'éléments à conserver + \setsepchar{,}\ignoreemptyitems + \readlist*\ListeInter{#1} + \xdef\faa{}% Liste construite + \xdef\fii{}% Liste détruite + % on crée les #2 premieres solutions. + \xintFor* ##1 in {\xintSeq{1}{#2}}\do{% + \xintifboolexpr{\ListeInterlen>1}{% + \xdef\Alea{\fpeval{randint(\ListeInterlen)}}% + \xdef\faa{\faa \ListeInter[\Alea],}% + \xdef\fii{}% + \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{% + \xintifboolexpr{##2 == \Alea}{% + }{% + \xdef\fii{\fii \ListeInter[##2],}% + }% + }% + }{% + \xdef\faa{\faa \ListeInter[1]}% + }% + \readlist*\ListeInter{\fii}% + }% +}% + +\newcommand\ListeQuestions[1]{% + \setsepchar[*]{§*/}% + \readlist*\RetiensListeQuestions{#1} + % On crée la liste des numéros des questions + \xdef\foo{}% + \xintFor* ##1 in {\xintSeq{1}{\RetiensListeQuestionslen}}\do{% + \xdef\foo{\foo ##1,}% + }% + % Mélange des questions + % on crée les 6 premieres solutions. + \MelangeListe{\foo}{\fpeval{\RetiensListePersonnageslen}}% + \readlist*\ListeMelangeePersonnages{\faa}% + \readlist*\ListeRestante{\fii}%\ListeRestante[] + \MelangeListe{\faa}{\fpeval{\RetiensListePersonnageslen-1}}% + \readlist*\ListefuuPerso{\faa}% + % on crée les 6 solutions suivantes. + \xdef\fuuu{}% + \foreachitem\compteur\in\ListeRestante{\xdef\fuuu{\fuuu,\ListeRestante[\compteurcnt]}}% + \MelangeListe{\fuuu}{\fpeval{\RetiensListeObjetslen}}% + \readlist*\ListeMelangeeObjets{\faa}% + \readlist*\ListeRestante{\fii}% + \MelangeListe{\faa}{\fpeval{\RetiensListeObjetslen-1}}% + \readlist*\ListefuuObjets{\faa}% + % on crée les dernieres solutions. + \xdef\fuuu{}% + \foreachitem\compteur\in\ListeRestante{\xdef\fuuu{\fuuu,\ListeRestante[\compteurcnt]}}% + \MelangeListe{\fuuu}{\fpeval{\RetiensListeLieuxlen}} + \readlist*\ListeMelangeeLieux{\faa}% + %% \readlist*\ListeRestante{\fii}% + \MelangeListe{\faa}{\fpeval{\RetiensListeLieuxlen-1}}% + \readlist*\ListefuuLieux{\faa}% + % -------------- + % Liste des questions sauvegardees + \xdef\fuu{}% + \foreachitem\compteur\in\ListefuuPerso{\xdef\fuu{\fuu,\ListefuuPerso[\compteurcnt]}}% + \foreachitem\compteur\in\ListefuuObjets{\xdef\fuu{\fuu,\ListefuuObjets[\compteurcnt]}}% + \foreachitem\compteur\in\ListefuuLieux{\xdef\fuu{\fuu,\ListefuuLieux[\compteurcnt]}}% + \ignoreemptyitems\setsepchar{,}% + \MelangeListe{\fuu}{\fpeval{\RetiensListePersonnageslen+\RetiensListeObjetslen+\RetiensListeLieuxlen-3}}% + \readlist*\ListeMelangeeQuestions{\faa}% +} + +\newcommand\AffichageQuestions{% + \begin{enumerate} + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\RetiensListePersonnageslen+\RetiensListeObjetslen+\RetiensListeLieuxlen-3}}}\do{% + \item\xdef\Compteur{\ListeMelangeeQuestions[##1]}\RetiensListeQuestions[\Compteur,1] + } + \end{enumerate} +} + +\newcommand\AffichageTableau{% + \begin{tabular}{|>{\PfCTBstrut$\square$~}m{\useKV[ClesEnquete]{Largeur}}|} + \hline + \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Perso}}\\ + \hline + \xintFor* ##1 in {\xintSeq{1}{\RetiensListePersonnageslen}}\do{% + \RetiensListePersonnages[##1]\xdef\PfCCompteurMelange{\ListeMelangeePersonnages[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2]\\ + } + % + \hline + \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Objet}}\\ + \hline + \xintFor* ##1 in {\xintSeq{1}{\RetiensListeObjetslen}}\do{% + \RetiensListeObjets[##1]\xdef\PfCCompteurMelange{\ListeMelangeeObjets[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2]\\ + } + % + \hline + \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Lieu}}\\ + \hline + \xintFor* ##1 in {\xintSeq{1}{\RetiensListeLieuxlen}}\do{% + \RetiensListeLieux[##1]\xdef\PfCCompteurMelange{\ListeMelangeeLieux[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2] + \\ + } + \hline + \end{tabular} +}% + + %%% % Modele en barre %%% \setKVdefault[ClesModeleBarre]{Hauteur=0.5cm,Largeur=1cm,Separation=0,Homogene=false}%Separation pour conserver le lien avec les équations. -\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}} +\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}}% \newtoks\toklistemodelbarresup% \toklistemodelbarresup{}% @@ -560,7 +757,7 @@ }% \newcommand\PfCMPDessineModelBarre[2]{% - \begin{mplibcode} + \begin{mplibcode}% Longueur:=\useKV[ClesModeleBarre]{Longueur}; Hauteur:=\useKV[ClesModeleBarre]{Hauteur}; @@ -674,7 +871,7 @@ endfor; endfor; \end{mplibcode} -} +}% \newcommand\PfCMPDessineModelBarreNonHomogene[2]{% \ifluatex% @@ -777,10 +974,10 @@ MBnbdepla:=0; for k=1 upto MBnbcolinf: for l=1 upto MBnbinfoinf[k]: - trace Brique(MBColInf[k],MBnbcasesinf[k][l])(MBTextcasesinf[k][l]) shifted(MBnbdepla*VecteurDepla+u*(0,-0.5)); + trace Brique(MBColInf[k],MBnbcasesinf[k][l])(MBTextcasesinf[k][l]) shifted(MBnbdepla*VecteurDepla+(0,-Hauteur)); if MBnbcasesinf[k][l]<0: for j=1 upto (abs(MBnbcasesinf[k][l])-1): - trace ((0,0)--(0,Hauteur)) shifted((MBnbdepla+j)*VecteurDepla+u*(0,-0.5)) withcolor black; + trace ((0,0)--(0,Hauteur)) shifted((MBnbdepla+j)*VecteurDepla+(0,-Hauteur)) withcolor black; endfor; fi; MBnbdepla:=MBnbdepla+abs(MBnbcasesinf[k][l]); @@ -788,10 +985,10 @@ endfor; if Separation>0: - draw u*(Separation,-0.75)--u*(Separation,0.75) withpen pencircle scaled 1.5 dashed evenly withcolor red; + draw (u*Separation,-1.5Hauteur)--(u*Separation,1.5Hauteur) withpen pencircle scaled 1.5 dashed evenly withcolor red; fi; - \end{mplibcode} + \end{mplibcode}% \else \begin{mpost}[mpsettings={Longueur:=\useKV[ClesModeleBarre]{Largeur};Hauteur:=\useKV[ClesModeleBarre]{Hauteur};Separation:=\useKV[ClesModeleBarre]{Separation};}] vardef Brique(expr col,nbfois)(text t)= @@ -903,7 +1100,7 @@ \end{mpost} \fi -} +}% %%% % Fiche m\'emorisation active @@ -996,6 +1193,17 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, }% }% +\newcommand\DivisionD[3][]{% + \useKVdefault[ClesOperations]% + \setKV[ClesOperations]{#1}% + \setcounter{divxlop}{0}% + \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% + \opdiv[decimalsepsymbol={,},lineheight=1.5em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% + \foreach \i in {1,...,\thedivxlop}{% + \PfCentoure{A\i}{A\i}% + }% +}% + \newcommand\Multiplication[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% @@ -1032,7 +1240,7 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, %%% % 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/2021/texmf-dist/metapost/profcollege/datastest/"} +\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}} @@ -1041,43 +1249,164 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, \ifluatex \useKVdefault[Cartographie] \setKV[Cartographie]{#1} - \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})); + \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; @@ -1090,30 +1419,31 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, 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: + 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; + 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: + mappemonde(#2,#3); + fi; + \end{mplibcode} + } \else \PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."} \fi @@ -3580,7 +3910,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \node[anchor=west,xshift=2em,text width=0.8*0.25\paperwidth] (Test\i) at (S\i) {\ListeAutoQ[\i,2]};% \node[anchor=north,yshift=-1em,text width=0.85*0.25\paperwidth] (TestEn\i) - at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi} :} \ListeAutoEn[\i,1]};% + at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi}} \ListeAutoEn[\i,1]};% \ifboolKV[Autonomie]{Enigme}{% \node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i) at (U\i) {% @@ -6298,14 +6628,14 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \end{tikzpicture} } -\newcommand{\DrawArrowSimple}[1]{% +\newcommand\DrawArrowSimple[1]{% \begin{tikzpicture}[overlay,remember picture] \draw[-stealth,out=50,in=140,DCFlechesh,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-2.north); \draw[-stealth,out=50,in=140,DCFlechesh!50,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-3.north); \end{tikzpicture} } -\newcommand{\DrawArrowSimpleRenverse}[1]{% +\newcommand\DrawArrowSimpleRenverse[1]{% \begin{tikzpicture}[overlay,remember picture] \draw[-stealth,out=140,in=50,DCFlechesh,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-0.north); \draw[-stealth,out=140,in=50,DCFlechesh!50,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-1.north); @@ -6319,7 +6649,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. % y a dans un "seul calcul". \setcounter{NbCalculDistri}{0} -\setKVdefault[ClesDistributivite]{Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false}%,AideAdd=false:inutile ? +\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false}%,AideAdd=false:inutile ? \newcommand\Tuile[4]{% \ifluatex @@ -6696,186 +7026,241 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \colorlet{DCReduction}{\useKV[ClesDistributivite]{CouleurReduction}}% \colorlet{DCFlechesh}{\useKV[ClesDistributivite]{CouleurFH}}% \colorlet{DCFlechesb}{\useKV[ClesDistributivite]{CouleurFB}}% - \ifboolKV[ClesDistributivite]{Tuile}{% - \Tuile{#2}{#3}{#4}{#5}% - }{% + \ifboolKV[ClesDistributivite]{Cours}{% \ensuremath{% - \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{% - \DistriEchange[#1]{#2}{#3}{#4}{#5}% - }{% - \ifboolKV[ClesDistributivite]{Remarquable}{% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{% - \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi% - }{} - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{} - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{% - \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}% - \stepcounter{NbCalculDistri}% - \ifx\bla#4\bla% - \xdef\Multi{\fpeval{#2*#2}}% - \xdef\Multij{\fpeval{#2*#3}}% - \xdef\Multik{\fpeval{#3*#2}}% - \xdef\Multil{\fpeval{#3*#3}}% - %% ils sont red\'efinis pour pouvoir envisager la somme de deux - %% expressions \`a d\'evelopper - \xdef\Multim{\fpeval{#2*#3+#3*#2}}% - \ifboolKV[ClesDistributivite]{Oppose}{% - \xdef\Multi{\fpeval{-\Multi}}% - \xdef\Multim{\fpeval{-\Multim}}% - \xdef\Multil{\fpeval{-\Multil}}% - \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% - \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% - \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% - }{% - \Affichage{\Multi}{\Multim}{\Multil}% - } - \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}% - \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}% - \else% - \xdef\Multi{\fpeval{#2*#4}}% - \xdef\Multij{\fpeval{#2*#5}}% - \xdef\Multik{\fpeval{#3*#4}}% - \xdef\Multil{\fpeval{#3*#5}}% + \xintifboolexpr{#2==0}{% + }{\xintifboolexpr{#3==0}{}{(}}\xintifboolexpr{#2==0}{\Tikzmark{}}{\Tikzmark{a}} + \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}% + \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{b}% + \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}% + \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}% + % + \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double + \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk + % + \xintifboolexpr{\Multi==0}{\times% + \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}% + \Tikzmark{c}% + \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}% + \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{d}% + \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}% + \xintifboolexpr{\Multi==0}{% + \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}% + % + = + % + \xdef\Multi{\fpeval{#2*#4}}% + \xintifboolexpr{\Multi==0}{}{% + \xintifboolexpr{#2<0}{(-}{}a\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(-}{}c\xintifboolexpr{#4<0}{)}{}% + } + \xdef\Multij{\fpeval{#2*#5}}% + \xintifboolexpr{\Multij==0}{}{% + \xintifboolexpr{\Multi==0}{}{+}% + \xintifboolexpr{#2<0}{(-}{}a\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(-}{}d\xintifboolexpr{#5<0}{)}{}% + }% + \xdef\Multik{\fpeval{#3*#4}}% + \xintifboolexpr{\Multik==0}{}{% + \xintifboolexpr{\Multi==0}{}{+}% + \xintifboolexpr{#3<0}{(-}{}b\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(-}{}c\xintifboolexpr{#4<0}{)}{}% + }% + \xdef\Multil{\fpeval{#3*#5}}% + \xintifboolexpr{\Multil==0}{}{+% + \xintifboolexpr{#3<0}{(-}{}b\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(-}{}d\xintifboolexpr{#5<0}{)}{}% + }% + % Fleches + \ifboolKV[ClesDistributivite]{Fleches}{% + \xdef\Multi{\fpeval{#2*#3*#4*#5}}% + \xintifboolexpr{\Multi==0}{% + \xdef\Multij{\fpeval{#2*#3}}%\relax + \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1} + }{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}% + }{% + \DrawArrow% + }% + }{}\setcounter{NbDistri}{0}% + }% + }{% + \ifboolKV[ClesDistributivite]{Tuile}{% + \Tuile{#2}{#3}{#4}{#5}% + }{% + \ensuremath{% + \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{% + \DistriEchange[#1]{#2}{#3}{#4}{#5}% + }{% + \ifboolKV[ClesDistributivite]{Remarquable}{% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{% + \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi% + }{} + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{} + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{% + \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}% + \stepcounter{NbCalculDistri}% + \ifx\bla#4\bla% + \xdef\Multi{\fpeval{#2*#2}}% + \xdef\Multij{\fpeval{#2*#3}}% + \xdef\Multik{\fpeval{#3*#2}}% + \xdef\Multil{\fpeval{#3*#3}}% + %% ils sont red\'efinis pour pouvoir envisager la somme de deux + %% expressions \`a d\'evelopper + \xdef\Multim{\fpeval{#2*#3+#3*#2}}% + \ifboolKV[ClesDistributivite]{Oppose}{% + \xdef\Multi{\fpeval{-\Multi}}% + \xdef\Multim{\fpeval{-\Multim}}% + \xdef\Multil{\fpeval{-\Multil}}% + \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% + \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% + \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% + }{% + \Affichage{\Multi}{\Multim}{\Multil}% + } + \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}% + \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}% + \else% + \xdef\Multi{\fpeval{#2*#4}}% + \xdef\Multij{\fpeval{#2*#5}}% + \xdef\Multik{\fpeval{#3*#4}}% + \xdef\Multil{\fpeval{#3*#5}}% %% ils sont red\'efinis pour pouvoir envisager la somme de deux %% expressions \`a d\'evelopper - \xdef\Multim{\fpeval{#2*#5+#3*#4}}% - \ifboolKV[ClesDistributivite]{Oppose}{% - \xdef\Multi{\fpeval{-\Multi}}% - \xdef\Multim{\fpeval{-\Multim}}% - \xdef\Multil{\fpeval{-\Multil}}% - \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% - \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% - \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% - }{% - \Affichage{\Multi}{\Multim}{\Multil}% - } - \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}% - \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}% - \fi% - }{}% - }{% - \ifboolKV[ClesDistributivite]{Numerique}{% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{% - \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}% - }{% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{% - \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}% + \xdef\Multim{\fpeval{#2*#5+#3*#4}}% + \ifboolKV[ClesDistributivite]{Oppose}{% + \xdef\Multi{\fpeval{-\Multi}}% + \xdef\Multim{\fpeval{-\Multim}}% + \xdef\Multil{\fpeval{-\Multil}}% + \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% + \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% + \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% }{% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}% - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}% - }% - }% + \Affichage{\Multi}{\Multim}{\Multil}% + } + \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}% + \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}% + \fi% + }{}% }{% - \ifboolKV[ClesDistributivite]{All}{% - \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}% - \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}% - \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}% - \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do - {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}% - \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}% + \ifboolKV[ClesDistributivite]{Numerique}{% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{% + \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}% + }{% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{% + \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}% + }{% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}% + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}% + }% + }% }{% - % Etape 1 - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{% - \xintifboolexpr{#2==0}{% - }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}% - \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}% - \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}% - \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}% - \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}% - % - \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double - \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk - % - \xintifboolexpr{\Multi==0}{\times% - \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}% - \Tikzmark{\Affichage[#1]{0}{#4}{0}}% - \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}% - \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}% - \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}% - \xintifboolexpr{\Multi==0}{% - \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}% - \ifboolKV[ClesDistributivite]{Fleches}{% - \xdef\Multi{\fpeval{#2*#3*#4*#5}}% + \ifboolKV[ClesDistributivite]{All}{% + \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}% + \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}% + \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}% + \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do + {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}% + \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}% + }{% + % Etape 1 + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{% + \xintifboolexpr{#2==0}{% + }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}% + \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}% + \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}% + \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}% + \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}% + % + \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double + \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk + % + \xintifboolexpr{\Multi==0}{\times% + \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}% + \Tikzmark{\Affichage[#1]{0}{#4}{0}}% + \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}% + \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}% + \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}% \xintifboolexpr{\Multi==0}{% - \xdef\Multij{\fpeval{#2*#3}}%\relax - \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}% - }{% - \DrawArrow% + \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}% + \ifboolKV[ClesDistributivite]{Fleches}{% + \xdef\Multi{\fpeval{#2*#3*#4*#5}}% + \xintifboolexpr{\Multi==0}{% + \xdef\Multij{\fpeval{#2*#3}}%\relax + \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}% + }{% + \DrawArrow% + }% + }{}\setcounter{NbDistri}{0}% + }{} + % Etape 2 + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{% + \xdef\Multi{\fpeval{#2*#4}}% + \xintifboolexpr{\Multi==0}{}{% + \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}% + } + \xdef\Multij{\fpeval{#2*#5}}% + \xintifboolexpr{\Multij==0}{}{% + \xintifboolexpr{\Multi==0}{}{+}% + \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}% }% - }{}\setcounter{NbDistri}{0}% - }{} - % Etape 2 - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{% - \xdef\Multi{\fpeval{#2*#4}}% - \xintifboolexpr{\Multi==0}{}{% - \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}% - } - \xdef\Multij{\fpeval{#2*#5}}% - \xintifboolexpr{\Multij==0}{}{% - \xintifboolexpr{\Multi==0}{}{+}% - \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}% - }% - \xdef\Multik{\fpeval{#3*#4}}% - \xintifboolexpr{\Multik==0}{}{% - \xintifboolexpr{\Multi==0}{}{+}% - \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}% - }% - \xdef\Multil{\fpeval{#3*#5}}% - \xintifboolexpr{\Multil==0}{}{+% - \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}% - }% - }{}% - % Etape 3 - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{% - \stepcounter{NbCalculDistri}% - \xdef\Multi{\fpeval{#2*#4}}% - \xdef\Multij{\fpeval{#2*#5}}% - \xdef\Multik{\fpeval{#3*#4}}% - \xdef\Multil{\fpeval{#3*#5}}% - %% ils sont red\'efinis pour pouvoir envisager la somme de deux - %% expressions \`a d\'evelopper - \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}% - \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{% - \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}% - \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}% + \xdef\Multik{\fpeval{#3*#4}}% + \xintifboolexpr{\Multik==0}{}{% + \xintifboolexpr{\Multi==0}{}{+}% + \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}% }% - }{% - \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}% - \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}% - }% - \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}% - }{}% - % Etape 4 - \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{% - \xdef\Multi{\fpeval{#2*#4}}% - \xdef\Multij{\fpeval{#2*#5}}% - \xdef\Multik{\fpeval{#3*#4}}% - \xdef\Multil{\fpeval{#3*#5}}% - %% ils sont red\'efinis pour pouvoir envisager la somme de deux - %% expressions \`a d\'evelopper - \xdef\Multim{\fpeval{#2*#5+#3*#4}}% - \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}% - \stepcounter{NbCalculDistri}% - \ifboolKV[ClesDistributivite]{Oppose}{% - \xdef\Multi{\fpeval{-\Multi}}% - \xdef\Multim{\fpeval{-\Multim}}% - \xdef\Multil{\fpeval{-\Multil}}% - \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% - \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% - \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% - }{% + \xdef\Multil{\fpeval{#3*#5}}% + \xintifboolexpr{\Multil==0}{}{+% + \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}% + }% + }{}% + % Etape 3 + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{% + \stepcounter{NbCalculDistri}% + \xdef\Multi{\fpeval{#2*#4}}% + \xdef\Multij{\fpeval{#2*#5}}% + \xdef\Multik{\fpeval{#3*#4}}% + \xdef\Multil{\fpeval{#3*#5}}% + %% ils sont red\'efinis pour pouvoir envisager la somme de deux + %% expressions \`a d\'evelopper \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}% - \xintifboolexpr{\Multim==0}{}{% - \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}% + \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{% + \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}% + \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}% + }% + }{% + \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}% + \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}% }% - \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}% - } - \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}% - \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}% - }{}% + \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}% + }{}% + % Etape 4 + \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{% + \xdef\Multi{\fpeval{#2*#4}}% + \xdef\Multij{\fpeval{#2*#5}}% + \xdef\Multik{\fpeval{#3*#4}}% + \xdef\Multil{\fpeval{#3*#5}}% + %% ils sont red\'efinis pour pouvoir envisager la somme de deux + %% expressions \`a d\'evelopper + \xdef\Multim{\fpeval{#2*#5+#3*#4}}% + \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}% + \stepcounter{NbCalculDistri}% + \ifboolKV[ClesDistributivite]{Oppose}{% + \xdef\Multi{\fpeval{-\Multi}}% + \xdef\Multim{\fpeval{-\Multim}}% + \xdef\Multil{\fpeval{-\Multil}}% + \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}% + \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}% + \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}% + }{% + \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}% + \xintifboolexpr{\Multim==0}{}{% + \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}% + }% + \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}% + } + \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}% + \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}% + }{}% + }% }% }% }% @@ -7223,7 +7608,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. %%% % Nombre Premier %%% -\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white}% +\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVide=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white}% \defKV[ClesNombrePremier]{Nombre=\ifboolKV[ClesNombrePremier]{ArbreDessine}{}{\ifboolKV[ClesNombrePremier]{ArbreDessineVide}{}{\setKV[ClesNombrePremier]{Impose}}}}% \defKV[ClesNombrePremier]{AllNombre=\setKV[ClesNombrePremier]{ImposeAll}}% \defKV[ClesNombrePremier]{Impression=\setKV[ClesNombrePremier]{CouleurFeuillage=white,CouleurTronc=white,CouleurFruits=gris,CouleurTexte=black}} @@ -7234,6 +7619,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \ifboolKV[ClesNombrePremier]{Impose}{\NombrePremierImpose{#2}{\useKV[ClesNombrePremier]{Nombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{Nombre}}}}{}% \ifboolKV[ClesNombrePremier]{ImposeAll}{\NombrePremierImposeAll{#2}{\useKV[ClesNombrePremier]{AllNombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{AllNombre}}}}{}% \ifboolKV[ClesNombrePremier]{Tableau}{\NombrePremier{#2}}{}% + \ifboolKV[ClesNombrePremier]{TableauVide}{\NombrePremierVide{#2}}{}% \ifboolKV[ClesNombrePremier]{Potence}{\NombrePremierPotence{#2}}{}% \ifboolKV[ClesNombrePremier]{TableauVertical}{\NombrePremierVertical{#2}}{}% \ifboolKV[ClesNombrePremier]{TableauVerticalVide}{\NombrePremierVerticalVide{#2}}{}% @@ -7594,6 +7980,32 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \fi } +\newcommand\NombrePremierVide[1]{%\'ecrire la d\'ecomposition compl\`ete + % #1 le nombre premier \`a tester + \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f% + \anp=#1\relax + \bnp=2\relax + \premier=-1\relax + % Pour d\'eterminer le nombre d'\'etapes + \whiledo{\anp > 1}{% + \modulo{\the\anp}{\the\bnp} + \ifnum\remainder=0\relax + \global\premier=\numexpr\premier+1\relax + \cnp=\numexpr\anp/\bnp\relax + \anp=\cnp\relax + \else% + \bnp=\numexpr\bnp+1\relax% + \fi% + } + \ifnum\premier=0 + Le nombre \num{#1} est un nombre premier. + \else + \begin{align*} + \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\phantom{\PremierEtape{#1}{##1}}\xintifboolexpr{##1<\premier}{\\}{}}% + \end{align*} + \fi +} + \newcount\premierun \newcount\premierdeux @@ -8275,7 +8687,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. % #5 point sur le segment #1#3 % #6 angle de rotation \ifluatex - \mplibcodeinherit{enable} +% \mplibcodeinherit{enable} \mplibforcehmode \begin{mplibcode} u:=\useKV[ClesThales]{Echelle}; @@ -8324,7 +8736,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. label(btex $//$ etex ,K); drawoptions(); \end{mplibcode} - \mplibcodeinherit{disable} +% \mplibcodeinherit{disable} \else \begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}] pair A,B,C,M,N,O;% @@ -9832,7 +10244,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \fi } -\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm}% +\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,ValeurExacte=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm}% \newcommand\RedactionTrigo{}% @@ -9863,15 +10275,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \ifboolKV[ClesTrigo]{Propor}{% \begin{align*} \NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\ - \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\ - \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB% + \num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\ + \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB} \end{align*}% }{% \begin{align*} \cos(\widehat{\NomB\NomA\NomC})&=\frac{\NomA\NomB}{\NomA\NomC}\\ \cos(\ang{#5})&=\frac{\NomA\NomB}{\num{#4}}\\ - \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\ - \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB + \num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}% \end{align*} }% \else% @@ -9881,15 +10295,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \begin{align*} \NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\ \NomA\NomC\times\cos(\ang{#5})&=\num{#3}\\ - \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}\\ - \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*} }{% \begin{align*} \cos(\widehat{\NomB\NomA\NomC})&=\frac{\NomA\NomB}{\NomA\NomC}\\ \cos(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\ - \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}\\ - \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*}% }% \else%on calcule l'angle @@ -9919,15 +10335,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \ifboolKV[ClesTrigo]{Propor}{% \begin{align*} \NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\ - \num{#4}\times\sin(\ang{#5})&=\NomB\NomC\\ - \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC% + \num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}% \end{align*}% }{% \begin{align*} \sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\ \sin(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\ - \num{#4}\times\sin(\ang{#5})&=\NomB\NomC\\ - \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC% + \num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}% \end{align*}% }% \else @@ -9937,15 +10355,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \begin{align*} \NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\ \NomA\NomC\times\sin(\ang{#5})&=\num{#3}\\ - \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\ - \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*}% }{% \begin{align*} \sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\ \sin(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\ - \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\ - \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*}% }% \else%on calcule l'angle @@ -9975,15 +10395,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \ifboolKV[ClesTrigo]{Propor}{% \begin{align*} \NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\% - \num{#4}\times\tan(\ang{#5})&=\NomB\NomC\\% - \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC% + \num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\% + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}% \end{align*}% }{% \begin{align*} \tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\ \tan(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\ - \num{#4}\times\tan(\ang{#5})&=\NomB\NomC\\ - \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC% + \num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}% \end{align*}% }% \else @@ -9993,15 +10415,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \begin{align*} \NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\ \NomA\NomB\times\tan(\ang{#5})&=\num{#3}\\ - \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\ - \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*}% }{% \begin{align*} \tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\ \tan(\ang{#5})&=\frac{\num{#3}}{\NomA\NomB}\\ - \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\ - \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}% + \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\ + \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\% + \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}% \end{align*}% }% \else%on calcule l'angle @@ -10151,98 +10575,121 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \newcommand\DonneeMin{}% \newcommand\EffectifMax{}% -\setKVdefault[ClesStat]{ColVide=0,EffVide=false,% -FreqVide=false,AngVide=false,ECCVide=false,TotalVide=false,Sondage=false,% +\setKVdefault[ClesStat]{ColVide=0,CaseVide=false,EffVide=false,% +FreqVide=false,AngVide=false,ECCVide=false,TotalVide=false,Sondage=false,Liste=false,% Tableau=false,Stretch=1,Frequence=false,EffectifTotal=false,% -Etendue=false,Moyenne=false,SET=false,Mediane=false,QuartileUn=false,QuartileTrois=false,Total=false,Concret=false,% -Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,Graphique=false,Batons=true,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,Rayon=3cm,AffichageAngle=false,Liste=false,ECC=false,Coupure=10,CouleurTab=gray!15,ListeCouleurs={white},Hachures=false,Inverse=false,AbscisseRotation=false,Representation=false,EcartHachures=0.25,EpaisseurHachures=1,Longueur=10cm,Hauteur=5mm,Barre=false} - +Etendue=false,Moyenne=false,SET=false,ValeurExacte=false,Mediane=false,QuartileUn=false,QuartileTrois=false,Total=false,Concret=false,% +Unite={},Largeur=1cm,Precision=2,PrecisionF=0,Donnee=Valeurs,Effectif=Effectif,Grille=false,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,ECC=false,Coupure=10,CouleurTab=gray!15,Graphique=false,Batons=true,% +% Pour les diags batons +EpaisseurBatons=1,ListeCouleursB={black},Lecture=false,LectureFine=false,AideLecture=false,Reponses=false,DonneesSup=false,AbscisseRotation=false,Tiret=false,AngleRotationAbscisse=0,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,% +% Pour les diags circulaires +Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachures=false,LectureInverse=false,EcartHachures=0.25,EpaisseurHachures=1,Legende,LegendeVide=false,% +%Pour les représentations +Representation=false,% +%Pour les barres horizontales +Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false% +} +%compl\'ements +\defKV[ClesStat]{AngleRotationAbscisse=\setKV[ClesStat]{AbscisseRotation}}% +\defKV[ClesStat]{AffichageDonnees=\setKV[ClesStat]{AffichageAngle=false}\setKV[ClesStat]{AffichageDonnee}}% +\defKV[ClesStat]{CasesVides=\setKV[ClesStat]{CaseVide}}% +\defKV[ClesStat]{LegendesVides=\setKV[ClesStat]{LegendeVide}}% % La construction du tableau \def\addtotok#1#2{#1\expandafter{\the#1#2}} \newtoks\tabtoksa\newtoks\tabtoksb\newtoks\tabtoksc -\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&\cellcolor{\useKV[ClesStat]{CouleurTab}}#1}{&\cellcolor{\useKV[ClesStat]{CouleurTab}}\num{#1}}}\addtotok\tabtoksb{&\num{#2}}} -\def\buildtab{% %%Tableau sans total +\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{}{&\num{#1}}}\addtotok\tabtoksb{&\num{#2}}} +% +\newcounter{PfCCompteLignes}% +% +\def\BuildtabStat{% %%Tableau sans total + \setcounter{PfCCompteLignes}{0}% \tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}% \foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}% - \[% + \ifboolKV[ClesStat]{Total}{% \renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}% - \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\fpeval{\ListeCompletelen}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}% - \hline% - \the\tabtoksa\\\hline% - \xintifboolexpr{\useKV[ClesStat]{ColVide}<1 || \useKV[ClesStat]{ColVide}>\ListeCompletelen}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}% - }{% - \xintifboolexpr{\useKV[ClesStat]{ColVide}==1}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}% - }{% - \xintifboolexpr{\useKV[ClesStat]{ColVide}==\ListeCompletelen}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}}&\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\\\hline}{}% - }{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}% - }% + \begin{NiceTabular}{c*{\fpeval{\ListeCompletelen+1}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}}}% + \CodeBefore% + \rowcolor{\useKV[ClesStat]{CouleurTab}}{1}% + \columncolor{\useKV[ClesStat]{CouleurTab}}{1}% + \Body% + \the\tabtoksa&Total\\% + \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb&\num{\EffectifTotal}}\\% + \ifboolKV[ClesStat]{Frequence}{\stepcounter{PfCCompteLignes}Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\num{\CalculFrequence{##1}}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}\\}{}% + \ifboolKV[ClesStat]{Angle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}\\}{}% + \ifboolKV[ClesStat]{SemiAngle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}\\}{}% + \ifboolKV[ClesStat]{ECC}{\stepcounter{PfCCompteLignes}E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}\\}{}% + \CodeAfter% + % On crée la liste des colonnes à vider + \xintifboolexpr{\useKV[ClesStat]{ColVide}>0}{% + \xdef\FooStat{\useKV[ClesStat]{ColVide}}% + \setsepchar{,}% + \readlist*\ListeColonnesAVider{\FooStat}% + \foreachitem\compteur\in\ListeColonnesAVider{% + \tikz\fill[white] (row-2-|col-\fpeval{\compteur+1}) rectangle (last-|col-\fpeval{\compteur+2});% + }% + }{}% + % On crée la liste des cases à vider + \ifboolKV[ClesStat]{CaseVide}{% + \xdef\FooStatCases{\useKV[ClesStat]{CasesVides}}% + \setsepchar[*]{,*/}% + \readlist*\ListeCasesAVider{\FooStatCases}% + \foreachitem\compteur\in\ListeCasesAVider{% + \tikz\fill[white] (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+1}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+1}) rectangle (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+2}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+2});% + }% + }{}% + % On retrace le tableau + %Les colonnes + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeCompletelen+3}}}\do{% + \tikz\draw (row-1-|col-##1) -- (last-|col-##1);% }% + % Les lignes + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\thePfCCompteLignes+3}}}\do{% + \tikz\draw (row-##1-|col-1) -- (row-##1-|last);% }% - \end{tabular} - \renewcommand{\arraystretch}{1}% - \]% -}% - -\def\buildtabt{% %%Tableau avec total - \tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}% - \foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}% - \[% + \end{NiceTabular}% + }{% \renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}% - \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\fpeval{\ListeCompletelen+1}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}% - \hline% - \the\tabtoksa&\cellcolor{\useKV[ClesStat]{CouleurTab}}Total\\\hline% - \xintifboolexpr{\useKV[ClesStat]{ColVide}<1 || \useKV[ClesStat]{ColVide}>\ListeCompletelen}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}&}{\the\tabtoksb&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}% - }{% - \xintifboolexpr{\useKV[ClesStat]{ColVide}==1}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}% - }{% - \xintifboolexpr{\useKV[ClesStat]{ColVide}==\ListeCompletelen}{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}&&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}% - }{% - \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline% - \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}% - \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}% - \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}% - \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}% - }% + \begin{NiceTabular}{c*{\fpeval{\ListeCompletelen}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}}}% + \CodeBefore% + \rowcolor{\useKV[ClesStat]{CouleurTab}}{1}% + \columncolor{\useKV[ClesStat]{CouleurTab}}{1}% + \Body% + \the\tabtoksa\\% + \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\% + \ifboolKV[ClesStat]{Frequence}{\stepcounter{PfCCompteLignes}Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\num{\CalculFrequence{##1}}}}}\\}{}% + \ifboolKV[ClesStat]{Angle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\}{}% + \ifboolKV[ClesStat]{SemiAngle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\}{}% + \ifboolKV[ClesStat]{ECC}{\stepcounter{PfCCompteLignes}E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\}{}% + \CodeAfter% + % On crée la liste des colonnes à vider + \xintifboolexpr{\useKV[ClesStat]{ColVide}>0}{% + \xdef\FooStat{\useKV[ClesStat]{ColVide}}% + \setsepchar{,}% + \readlist*\ListeColonnesAVider{\FooStat}% + \foreachitem\compteur\in\ListeColonnesAVider{% + \tikz\fill[white] (row-2-|col-\fpeval{\compteur+1}) rectangle (last-|col-\fpeval{\compteur+2});% + }% + }{}% + % On crée la liste des cases à vider + \ifboolKV[ClesStat]{CaseVide}{% + \xdef\FooStatCases{\useKV[ClesStat]{CasesVides}}% + \setsepchar[*]{,*/}% + \readlist*\ListeCasesAVider{\FooStatCases}% + \foreachitem\compteur\in\ListeCasesAVider{% + \tikz\fill[white] (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+1}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+1}) rectangle (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+2}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+2});% + }% + }{}% + % On retrace le tableau + %Les colonnes + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeCompletelen+2}}}\do{% + \tikz\draw (row-1-|col-##1) -- (last-|col-##1);% }% + % Les lignes + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\thePfCCompteLignes+3}}}\do{% + \tikz\draw (row-##1-|col-1) -- (row-##1-|last);% }% - \end{tabular} - \renewcommand{\arraystretch}{1}% - \]% + \end{NiceTabular}% + }% }% % Pour construire le diagramme en barres horizontales @@ -10269,7 +10716,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleurs}}% \readlist*\ListeCouleur{\ListeAvantCouleurs}% \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% - \[\MPDiagBarreHor{\the\toklistenomhor}{\the\toklistedonhor}{\the\toklisteaffhor}{\the\toklistecouleur}\]% + \[\NewMPDiagBarreHor{\the\toklistenomhor}{\the\toklistedonhor}{\the\toklisteaffhor}{\the\toklistecouleur}\]% }% % Pour construire le diagramme en bâtons @@ -10277,7 +10724,11 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \newcommand\buildgraph[1][]{% \newtoks\toklistepoint% \foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoks\compteur\nil}% - \[\MPStat[#1]{\useKV[ClesStat]{Unitex}}{\useKV[ClesStat]{Unitey}}{\the\toklistepoint}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]% + \newtoks\toklistecouleur% + \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleursB}}% + \readlist*\ListeCouleur{\ListeAvantCouleurs}% + \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% + \[\MPStatNew{\the\toklistepoint}{\the\toklistecouleur}\]% }% % Pour construire le diagramme en bâtons qualitatif @@ -10285,56 +10736,38 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \newcommand\buildgraphq[1][]{% \newtoks\toklistepointq% \foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}% - \[\MPStatQ[#1]{2*\useKV[ClesStat]{Unitex}}{0.5*\useKV[ClesStat]{Unitey}}{\the\toklistepointq}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]% + \newtoks\toklistecouleur% + \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleursB}}% + \readlist*\ListeCouleur{\ListeAvantCouleurs}% + \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% + \[\MPStatNew{\the\toklistepointq}{\the\toklistecouleur}\]% }% \def\UpdateCoul#1\nil{\addtotok\toklistecouleur{#1,}}% +\def\UpdateLegende#1\nil{\addtotok\toklistelegende{#1,}}% % Pour construire le diagramme circulaire qualitatif \def\buildgraphcq#1{% - \newtoks\toklistepointq% - \toklistepointq{}% - \newtoks\toklistecouleur% - \toklistecouleur{}% + \newtoks\toklistepointq\toklistepointq{}% + \newtoks\toklistecouleur\toklistecouleur{}% + \newtoks\toklistelegende\toklistelegende{}% + \ifboolKV[ClesStat]{LegendeVide}{% + \xdef\foo{\useKV[ClesStat]{LegendesVides}}% + \readlist*\ListeLegendesAEffacer{\foo}% + }{\xdef\foo{0}\readlist*\ListeLegendesAEffacer{\foo}% + }% + \foreachitem\compteur\in\ListeLegendesAEffacer{\expandafter\UpdateLegende\compteur\nil}% % \foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}% \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleurs}}% \readlist*\ListeCouleur{\ListeAvantCouleurs}% \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% - \ifboolKV[ClesStat]{AffichageAngle}{% - \ifboolKV[ClesStat]{Hachures}{% - \ifboolKV[ClesStat]{Inverse}{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{1}\]% - }{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{0}\]% - }% - }{% - \ifboolKV[ClesStat]{Inverse}{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{1}\]% - }{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{0}\]% - }% - }% - }{% - \ifboolKV[ClesStat]{Hachures}{% - \ifboolKV[ClesStat]{Inverse}{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{1}\]% - }{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{0}\]% - }% - }{% - \ifboolKV[ClesStat]{Inverse}{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{1}\]% - }{% - \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{0}\]% - }% - }% - }% + \NewMPStatCirculaireQ{\the\toklistepointq}{#1}{\the\toklistecouleur}{\the\toklistelegende}% }% %% calcul des fr\'equences \newcommand\CalculFrequence[1]{% - \fpeval{round(\ListeComplete[#1,2]*100/\EffectifTotal,0)} + \fpeval{round(\ListeComplete[#1,2]*100/\EffectifTotal,\useKV[ClesStat]{PrecisionF})} } %% calcul des angles @@ -10361,10 +10794,11 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O } % Construction d'un diagramme en barres horizontal -\newcommand\MPDiagBarreHor[4]{% +\newcommand\NewMPDiagBarreHor[4]{% % #1 Liste des noms % #2 Liste des valeurs associées % #3 Liste des valeurs à afficher (si pb calcul MP) + % #4 Liste des couleurs \ifluatex \mplibforcehmode% \begin{mplibcode}% @@ -10374,6 +10808,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures}; boolean Hachures; Hachures=\useKV[ClesStat]{Hachures}; + boolean Bicolore; + Bicolore=\useKV[ClesStat]{Bicolore}; vardef CalculNombreDonneesEtDonneeMax(text t)= nbdon:=0;%nombre de données DonneeMax:=0;%donnée DonneeMaximale @@ -10408,7 +10844,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O (k mod 2)=0: +90 fi,ecarthachures,if (k mod 2)=0 : 0 else: 1 fi) withpen pencircle scaled epaisseurhachures; else: - remplis RectangleDonnee withcolor if unknown Col[k+1]: white else:Col[k+1] fi; + remplis RectangleDonnee withcolor if unknown Col[k+1]: if Bicolore:Col[(k mod 2)+1] else: white fi; else:if Bicolore:Col[(k mod 2)+1] else: Col[k+1] fi; fi; fi; trace RectangleDonnee; endfor; @@ -10435,11 +10871,16 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O AffichageDonnees(#3); \end{mplibcode} \else - \mpxcommands{% - \xdef\Nom{\expand#1} - } - \begin{mpost}[mpsettings={Longueur:=\useKV[ClesStat]{Longueur};Hauteur:=\useKV[ClesStat]{Hauteur};ecarthachures=\useKV[ClesStat]{EcartHachures};epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};boolean Hachures;Hachures=\useKV[ClesStat]{Hachures};}] - % Pb avec les noms accentués : pas de solution (27/02/2022) + \begin{mpost}[mpsettings={% + Longueur:=\useKV[ClesStat]{Longueur}; + Hauteur:=\useKV[ClesStat]{Hauteur}; + ecarthachures=\useKV[ClesStat]{EcartHachures}; + epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures}; + boolean Hachures; + Hachures=\useKV[ClesStat]{Hachures}; + boolean Bicolore; + Bicolore=\useKV[ClesStat]{Bicolore}; + }] vardef CalculNombreDonneesEtDonneeMax(text t)= nbdon:=0;%nombre de données DonneeMax:=0;%donnée DonneeMaximale @@ -10474,7 +10915,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O (k mod 2)=0: +90 fi,ecarthachures,if (k mod 2)=0 : 0 else: 1 fi) withpen pencircle scaled epaisseurhachures; else: - remplis RectangleDonnee withcolor if unknown Col[k+1]: white else:Col[k+1] fi; + remplis RectangleDonnee withcolor if unknown Col[k+1]: if Bicolore:Col[(k mod 2)+1] else: white fi; else:if Bicolore:Col[(k mod 2)+1] else: Col[k+1] fi; fi; fi; trace RectangleDonnee; endfor; @@ -10500,43 +10941,142 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O AffichageNom(#1); AffichageDonnees(#3); \end{mpost} - \fi + \fi }% % la construction du graphique en bâtons pour quantitatif -\newcommand\MPStat[8][]{% +\newcommand\MPStatNew[2]{% \ifluatex - \mplibforcehmode + \mplibforcehmode \begin{mplibcode} maxx:=0; maxy:=0; - unitex:=#2*cm; - unitey:=#3*cm; + unitex:=\useKV[ClesStat]{Unitex}*cm; + unitey:=\useKV[ClesStat]{Unitey}*cm; + xpartorigine:=\useKV[ClesStat]{Origine}; + AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse}; + boolean Rotation; + Rotation=\useKV[ClesStat]{AbscisseRotation}; + boolean Lecture; + Lecture:=\useKV[ClesStat]{Lecture}; + boolean LectureFine; + LectureFine:=\useKV[ClesStat]{LectureFine}; + boolean AideLecture; + AideLecture:=\useKV[ClesStat]{AideLecture}; + boolean DonneesSup; + DonneesSup:=\useKV[ClesStat]{DonneesSup}; + boolean Reponses; + Reponses:=\useKV[ClesStat]{Reponses}; + epaisseurbatons=\useKV[ClesStat]{EpaisseurBatons}; + boolean Qualitatif; + Qualitatif=\useKV[ClesStat]{Qualitatif}; + boolean Tiret; + Tiret=\useKV[ClesStat]{Tiret}; + % on r\'ecup\`ere les couleurs + color Col[]; + n:=0; + for p_=#2: + n:=n+1; + if color p_: + Col[n]=p_; + else: + Col[n]=black; + fi; + endfor; + % pair A[],B[],P[]; + vardef toto(text t)=%points quantitatif n:=0; - vardef toto(text t)= for p_=t: if pair p_: n:=n+1; - P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey); + P[n]=((xpart(p_)-(xpartorigine))*unitex,ypart(p_)*unitey); if xpart(p_)>maxx: - maxx:=xpart(p_)-(#7); + maxx:=xpart(p_)-(xpartorigine); fi; if ypart(p_)>maxy: maxy:=ypart(p_); fi; - A[n]=unitex*(xpart(p_)-(#7),0); + A[n]=unitex*(xpart(p_)-(xpartorigine),0); B[n]=unitey*(0,ypart(p_)); - if (#8): - label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]); + fi; + endfor; + enddef; + vardef tata(text t)=%affichage quantitatif + l=0; + for p_=t: + if pair p_: + l:=l+1; + if Rotation: + label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated AngleRotation,A[l]); else : - label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[n]); + label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[l]); + fi; + if Reponses: + if DonneesSup: + label.top(TEX("\num{"&decimal(ypart(p_))&"}"),P[l]); + else: + if Tiret: + trace (B[l]+(-1pt,0))--(B[l]+(1pt,0)); + label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); + else: + dotlabel.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[l]); + fi; fi; - label.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[n]); fi; endfor; enddef; - toto(#4); + vardef tutu(text t)=%points qualitatif + n:=0; + for p_=t: + if numeric p_: + P[n]=((n)*unitex,unitey*p_); + B[n]=(0,unitey*p_); + if p_>maxy: + maxy:=p_; + fi; + else: + n:=n+1; + A[n]=unitex*(n,0); + fi; + endfor; + maxx:=n; + enddef; + vardef titi(text t)=%affichage qualitatif + l:=0; + for p_=t: + if numeric p_: + if Reponses: + if DonneesSup: + label.top(TEX("\num{"&decimal(p_)&"}"),P[l]); + else: + if Tiret: + trace (B[l]+(-1pt,0))--(B[l]+(1pt,0)); + label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); + else: + dotlabel.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); + fi; + fi; + fi; + else: + l:=l+1; + if Rotation: + if AngleRotation<>0: + picture TEXTELABEL; + TEXTELABEL=image( + labeloffset:=labeloffset*2; + label.lft(TEX(p_),A[l]); + labeloffset:=labeloffset/2; + ); + trace rotation(TEXTELABEL,A[l],AngleRotation); + else : + label.bot(TEX(p_),A[l]); + fi; + fi; + fi; + endfor; + enddef; + if Qualitatif: tutu(#1); else: toto(#1); fi; boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; @@ -10544,192 +11084,249 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O if Grille: drawoptions(withcolor 0.75white); for k=0 step Pasx until ((maxx+1)): - trace (k*unitex,0)--(k*unitex,unitey*(maxy+1)); + trace (k*unitex,0)--(k*unitex,unitey*(maxy+2*Pasy)); endfor; - for k=0 step Pasy until ((maxy+1)): + for k=0 step Pasy until ((maxy+2*Pasy)): trace (0,k*unitey)--(unitex*(maxx+1),k*unitey); endfor; drawoptions(); fi; for k=1 upto n: - draw A[k]--P[k] withpen pencircle scaled 2bp; + fill polygone(A[k]-(epaisseurbatons*1pt,0),A[k]+(epaisseurbatons*1pt,0),P[k]+(epaisseurbatons*1pt,0),P[k]-(epaisseurbatons*1pt,0)) withcolor if unknown Col[k]: black else:Col[k] fi; + if AideLecture: draw B[k]--P[k] dashed evenly; + fi; + endfor; + if LectureFine: + for k=0 step Pasy until ((maxy+1*Pasy)): + if Tiret: + trace (1pt,k*unitey)--(-1pt,k*unitey); + label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + else: + dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + fi; endfor; + fi; + if Lecture: + for k=0 step Pasy until Pasy: + if Tiret: + trace (1pt,k*unitey)--(-1pt,k*unitey); + label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + else: + dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + fi; + endfor; + fi; drawarrow (0,0)--unitex*(maxx+1,0); - drawarrow (0,0)--unitey*(0,maxy+1); - label.lrt(btex #5 etex,unitex*(maxx+1,0)); - label.urt(btex #6 etex,unitey*(0,maxy+1)); + drawarrow (0,0)--unitey*(0,maxy+2*Pasy); + label.lrt(btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0)); + label.urt(btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+2*Pasy)); + if Qualitatif: titi(#1); else:tata(#1); fi; \end{mplibcode} \else - \mpxcommands{% - \setKV[ClesStat]{#1}% - } - \begin{mpost}[mpsettings={boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; Pasy:=\useKV[ClesStat]{Pasy};}] - maxx:=0; - maxy:=0; - unitex:=#2*cm; - unitey:=#3*cm; + \begin{mpost}[mpsettings={% + unitex:=\useKV[ClesStat]{Unitex}*cm; + unitey:=\useKV[ClesStat]{Unitey}*cm; + xpartorigine:=\useKV[ClesStat]{Origine}; + AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse}; + boolean Rotation; + Rotation=\useKV[ClesStat]{AbscisseRotation}; + boolean Lecture; + Lecture:=\useKV[ClesStat]{Lecture}; + boolean LectureFine; + LectureFine:=\useKV[ClesStat]{LectureFine}; + boolean AideLecture; + AideLecture:=\useKV[ClesStat]{AideLecture}; + boolean DonneesSup; + DonneesSup:=\useKV[ClesStat]{DonneesSup}; + boolean Reponses; + Reponses:=\useKV[ClesStat]{Reponses}; + epaisseurbatons=\useKV[ClesStat]{EpaisseurBatons}; + boolean Qualitatif; + Qualitatif=\useKV[ClesStat]{Qualitatif}; + boolean Tiret; + Tiret=\useKV[ClesStat]{Tiret};} + ] + % on r\'ecup\`ere les couleurs + color Col[]; + n:=0; + for p_=#2: + n:=n+1; + if color p_: + Col[n]=p_; + else: + Col[n]=black; + fi; + endfor; + % pair A[],B[],P[]; + vardef toto(text t)=%points quantitatif n:=0; - vardef toto(text t)= for p_=t: if pair p_: n:=n+1; - P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey); + P[n]=((xpart(p_)-(xpartorigine))*unitex,ypart(p_)*unitey); if xpart(p_)>maxx: - maxx:=xpart(p_)-(#7); + maxx:=xpart(p_)-(xpartorigine); fi; if ypart(p_)>maxy: maxy:=ypart(p_); fi; - A[n]=unitex*(xpart(p_)-(#7),0); + A[n]=unitex*(xpart(p_)-(xpartorigine),0); B[n]=unitey*(0,ypart(p_)); - if (#8): - label.bot(LATEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]); - else : - label.bot(LATEX("\num{"&decimal(xpart(p_))&"}"),A[n]); - fi; - label.lft(LATEX("\num{"&decimal(ypart(p_))&"}"),B[n]); fi; endfor; enddef; - toto(#4); - if Grille: - drawoptions(withcolor 0.75white); - for k=0 step Pasx until ((maxx+1)): - trace (k*unitex,0)--(k*unitex,unitey*(maxy+1)); - endfor; - for k=0 step Pasy until ((maxy+1)): - trace (0,k*unitey)--(unitex*(maxx+1),k*unitey); - endfor; - drawoptions(); + vardef tata(text t)=%affichage quantitatif + l=0; + for p_=t: + if pair p_: + l:=l+1; + if Rotation: + label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated AngleRotation,A[l]); + else : + label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[l]); + fi; + if Reponses: + if DonneesSup: + label.top(TEX("\num{"&decimal(ypart(p_))&"}"),P[l]); + else: + if Tiret: + trace (B[l]+(-1pt,0))--(B[l]+(1pt,0)); + label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); + else: + dotlabel.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[l]); + fi; + fi; fi; - for k=1 upto n: - draw A[k]--P[k] withpen pencircle scaled 2bp; - draw B[k]--P[k] dashed evenly; endfor; - drawarrow (0,0)--unitex*(maxx+1,0); - drawarrow (0,0)--unitey*(0,maxy+1); - label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0)); - label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1)); - \end{mpost} - \fi -} - -% la construction du graphique en bâtons pour qualitatif -\newcommand\MPStatQ[8][]{% - \ifluatex - \mplibforcehmode - \begin{mplibcode} - maxy:=0; - unitex:=#2*cm; - unitey:=#3*cm; - pair A[],B[],P[]; + enddef; + vardef tutu(text t)=%points qualitatif n:=0; - vardef toto(text t)= for p_=t: if numeric p_: - P[n]=((n+1)*unitex,unitey*p_); + P[n]=((n)*unitex,unitey*p_); B[n]=(0,unitey*p_); - label.lft(TEX("\num{"&decimal(p_)&"}"),B[n]); if p_>maxy: maxy:=p_; fi; + else: n:=n+1; + A[n]=unitex*(n,0); + fi; + endfor; + maxx:=n; + enddef; + vardef titi(text t)=%affichage qualitatif + l:=0; + for p_=t: + if numeric p_: + if Reponses: + if DonneesSup: + label.top(TEX("\num{"&decimal(p_)&"}"),P[l]); + else: + if Tiret: + trace (B[l]+(-1pt,0))--(B[l]+(1pt,0)); + label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); else: - A[n]=unitex*(n+1,0); - if (#8): - label.bot(TEX(p_) rotated 90,A[n]); + dotlabel.lft(TEX("\num{"&decimal(p_)&"}"),B[l]); + fi; + fi; + fi; + else: + l:=l+1; + if Rotation: + if AngleRotation<>0: + picture TEXTELABEL; + TEXTELABEL=image( + labeloffset:=labeloffset*2; + label.lft(TEX(p_),A[l]); + labeloffset:=labeloffset/2; + ); + trace rotation(TEXTELABEL,A[l],AngleRotation); else : - label.bot(TEX(p_),A[n]); + label.bot(TEX(p_),A[l]); + fi; fi; fi; endfor; enddef; - toto(#4); + if Qualitatif: tutu(#1); else: toto(#1); fi; boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; Pasy:=\useKV[ClesStat]{Pasy}; if Grille: drawoptions(withcolor 0.75white); - for k=0 step Pasx until ((n+1)): - trace (k*unitex,0)--(k*unitex,unitey*(maxy+1)); + for k=0 step Pasx until ((maxx+1)): + trace (k*unitex,0)--(k*unitex,unitey*(maxy+2*Pasy)); endfor; - for k=0 step Pasy until ((maxy+1)): - trace (0,k*unitey)--(unitex*(n+1),k*unitey); + for k=0 step Pasy until ((maxy+2*Pasy)): + trace (0,k*unitey)--(unitex*(maxx+1),k*unitey); endfor; drawoptions(); fi; - for k=0 upto n-1: - draw A[k]--P[k] withpen pencircle scaled 2bp; + for k=1 upto n: + fill polygone(A[k]-(epaisseurbatons*1pt,0),A[k]+(epaisseurbatons*1pt,0),P[k]+(epaisseurbatons*1pt,0),P[k]-(epaisseurbatons*1pt,0)) withcolor if unknown Col[k]: black else:Col[k] fi; + if AideLecture: draw B[k]--P[k] dashed evenly; - endfor; - drawarrow (0,0)--unitex*(n+1,0); - drawarrow (0,0)--unitey*(0,maxy+1); - label.lrt(btex #5 etex,unitex*(n+1,0)); - label.urt(btex #6 etex,unitey*(0,maxy+1)); - \end{mplibcode} - \else - \mpxcommands{% - \setKV[ClesStat]{#1}% - } - \begin{mpost}[mpsettings={boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; Pasy:=\useKV[ClesStat]{Pasy};}] - maxy:=0; - unitex:=#2*cm; - unitey:=#3*cm; - pair A[],B[],P[]; - n:=0; - vardef toto(text t)= - for p_=t: - if numeric p_: - P[n]=((n+1)*unitex,unitey*p_); - B[n]=(0,unitey*p_); - label.lft(LATEX("\num{"&decimal(p_)&"}"),B[n]); - if p_>maxy: - maxy:=p_; fi; - n:=n+1; + endfor; + if LectureFine: + for k=0 step Pasy until ((maxy+1*Pasy)): + if Tiret: + trace (1pt,k*unitey)--(-1pt,k*unitey); + label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); else: - A[n]=unitex*(n+1,0); - if (#8): - label.bot(LATEX(p_) rotated 90,A[n]); - else : - label.bot(LATEX(p_),A[n]); + dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); fi; - fi; - endfor; - enddef; - toto(#4); - if Grille: - drawoptions(withcolor 0.75white); - for k=0 step Pasx until ((n+1)): - trace (k*unitex,0)--(k*unitex,unitey*(maxy+1)); endfor; - for k=0 step Pasy until ((maxy+1)): - trace (0,k*unitey)--(unitex*(n+1),k*unitey); - endfor; - drawoptions(); fi; - for k=0 upto n-1: - draw A[k]--P[k] withpen pencircle scaled 2bp; - draw B[k]--P[k] dashed evenly; + if Lecture: + for k=0 step Pasy until Pasy: + if Tiret: + trace (1pt,k*unitey)--(-1pt,k*unitey); + label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + else: + dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey)); + fi; endfor; - drawarrow (0,0)--unitex*(n+1,0); - drawarrow (0,0)--unitey*(0,maxy+1); - label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(n+1,0)); - label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1)); + fi; + drawarrow (0,0)--unitex*(maxx+1,0); + drawarrow (0,0)--unitey*(0,maxy+2*Pasy); + label.lrt(btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0)); + label.urt(btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+2*Pasy)); + if Qualitatif: titi(#1); else:tata(#1); fi; \end{mpost} \fi } % la construction du graphique qualitatif -\def\MPStatCirculaireQ#1#2#3#4#5#6#7{% +\def\NewMPStatCirculaireQ#1#2#3#4{% + %#1 : la liste des données + %#2 : 360 ou 180 + %#3 : liste des couleurs + %#4 : liste des légendes à effacer. \ifluatex \mplibforcehmode \begin{mplibcode} + Rayon:=\useKV[ClesStat]{Rayon}; ecarthachures=\useKV[ClesStat]{EcartHachures}; epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures}; + boolean AffichageAngle; + AffichageAngle=\useKV[ClesStat]{AffichageAngle}; + boolean AffichageDonnee; + AffichageDonnee=\useKV[ClesStat]{AffichageDonnee}; + boolean Hachures; + Hachures=\useKV[ClesStat]{Hachures}; + boolean Inverse; + Inverse=\useKV[ClesStat]{LectureInverse}; + boolean Legende; + Legende=\useKV[ClesStat]{Legende}; + boolean LegendeVide; + LegendeVide=\useKV[ClesStat]{LegendeVide}; + boolean Retour; + Retour=false; pair A[],O,B[],C[],D[]; O=(0,0); n:=0; @@ -10737,15 +11334,15 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O total[0]=0; ang[0]:=0; path cc; - cc=(fullcircle scaled (2*#1)); + cc=(fullcircle scaled (2*Rayon)); % on r\'ecup\`ere les couleurs color Col[]; n:=0; - for p_=#5: + for p_=#3: n:=n+1; Col[n]=p_; endfor; - if #7=0: + if Inverse=false: A[0]=point(0) of cc; else: A[0]=point(180) of cc; @@ -10760,101 +11357,159 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O endfor; N=n; for k=1 upto N: - ang[k]=(#3/total[N])*total[k]; + ang[k]=(#2/total[N])*total[k]; endfor; n:=0; for p_=t: if numeric p_: n:=n+1; - if #7=0: - A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N])); + if Inverse=false: + A[n]=A[n-1] rotatedabout(O,p_*(#2/total[N])); else: - A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N])); + A[n]=A[n-1] rotatedabout(O,-p_*(#2/total[N])); fi; %hachure ou pas ? - if #6=0: - fill (O--if #7=0:arccercle(A[n-1],A[n],O) else: + if Hachures=false: + fill (O--if Inverse=false:arccercle(A[n-1],A[n],O) else: arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi; else: draw - Hachurage((O--if #7=0:arccercle(A[n-1],A[n],O) - else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if + Hachurage((O--if Inverse=false:arccercle(A[n-1],A[n],O) + else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#2/total[N]) if (n mod 2)=0: +90 else: -90 fi,ecarthachures,if (n mod 2)=0 : 0 else: 1 fi) - withpen pencircle scaled epaisseurhachures if #4=1: withcolor 0.5white fi; + withpen pencircle scaled epaisseurhachures if AffichageAngle: withcolor 0.5white fi; fi; - draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi; + draw A[n-1]--O--A[n] if Hachures: withpen pencircle scaled2 fi; % Affichage des angles associ\'es - if #4=1: - if round(p_*(#3/total[N]))>15: + if AffichageAngle: + if round(p_*(#2/total[N]))>15: if (n mod 2)=0: - marque_a:=20*0.75*#1/cm; + marque_a:=20*0.75*Rayon/cm; else: - marque_a:=20*0.5*#1/cm; + marque_a:=20*0.5*Rayon/cm; fi; - if #6=1: - if #7=0: + if Hachures: + if Inverse=false: undraw - Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); else: undraw - Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); fi; fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor blanc; fi; - if #7=0: + if Inverse=false: draw - Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); else: draw - Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); + fi; + fi; + elseif AffichageDonnee: + if round(p_*(#2/total[N]))>15: + if (n mod 2)=0: + marque_a:=20*0.75*Rayon/cm; + else: + marque_a:=20*0.5*Rayon/cm; + fi; + if Hachures: + if Inverse=false: + undraw + Codeangle(A[n-1],O,A[n],0,TEX(""&decimal(p_)&"")); + else: + undraw + Codeangle(A[n],O,A[n-1],0,(((TEX(""&decimal(p_)&""))))); + fi; + fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor + blanc; + fi; + if Inverse=false: + draw + Codeangle(A[n-1],O,A[n],0,(((TEX(""&decimal(p_)&""))))); + else: + draw + Codeangle(A[n],O,A[n-1],0,(((TEX(""&decimal(p_)&""))))); fi; fi; fi; % fi; endfor; - if #3=360: - draw cc if #6=1: withpen pencircle scaled2 fi; + if #2=360: + draw cc if Hachures: withpen pencircle scaled2 fi; else: - draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;; + draw (subpath(0,length cc/2) of cc)--cycle if Hachures: withpen pencircle scaled2 fi;; fi; n:=0; - path cd[]; + if Legende: for p_=t: if string p_: n:=n+1; - C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2); + C[n]=A[n-1] rotatedabout(O,if Inverse:-1* fi(ang[n]-ang[n-1])/2); draw 0.95[O,C[n]]--1.05[O,C[n]]; C[n]:=1.05[O,C[n]]; + Test(n); if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)): D[n]=C[n]+(0.5cm,0); draw C[n]--D[n]; - label.urt(TEX(p_),D[n]); + if Retour=false:label.urt(TEX(p_),D[n]);fi; fi; if (xpart(C[n])<xpart(O)) and (ypart(C[n])>ypart(O)): D[n]=C[n]-(0.5cm,0); draw C[n]--D[n]; - label.ulft(TEX(p_),D[n]); + if Retour=false:label.ulft(TEX(p_),D[n]);fi; fi; if (xpart(C[n])<xpart(O)) and (ypart(C[n])<ypart(O)): D[n]=C[n]-(0.5cm,0); draw C[n]--D[n]; - label.llft(TEX(p_),D[n]); + if Retour=false:label.llft(TEX(p_),D[n]);fi; fi; if (xpart(C[n])>xpart(O)) and (ypart(C[n])<ypart(O)): D[n]=C[n]+(0.5cm,0); draw C[n]--D[n]; - label.lrt(TEX(p_),D[n]); + if Retour=false:label.lrt(TEX(p_),D[n]);fi; fi; fi; endfor; + fi; enddef; + vardef Test(expr nb)= + Retour:=false; + op:=0; + for l_=#4: + if l_=nb: + op:=op+1; + fi; + endfor; + if op>0: + Retour:=true; + fi; + enddef; Figure(-10u,-10u,10u,10u); - toto(#2); + toto(#1); \end{mplibcode} \else - \begin{mpost}[mpsettings={ecarthachures=\useKV[ClesStat]{EcartHachures};epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};}] + \begin{mpost}[mpsettings={% + Rayon:=\useKV[ClesStat]{Rayon}; + ecarthachures=\useKV[ClesStat]{EcartHachures}; + epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures}; + boolean AffichageAngle; + AffichageAngle=\useKV[ClesStat]{AffichageAngle}; + boolean AffichageDonnee; + AffichageDonnee=\useKV[ClesStat]{AffichageDonnee}; + boolean Hachures; + Hachures=\useKV[ClesStat]{Hachures}; + boolean Inverse; + Inverse=\useKV[ClesStat]{LectureInverse}; + boolean Legende; + Legende=\useKV[ClesStat]{Legende}; + boolean LegendeVide; + LegendeVide=\useKV[ClesStat]{LegendeVide}; + }] + boolean Retour; + Retour=false; pair A[],O,B[],C[],D[]; O=(0,0); n:=0; @@ -10862,15 +11517,15 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O total[0]=0; ang[0]:=0; path cc; - cc=(fullcircle scaled (2*#1)); + cc=(fullcircle scaled (2*Rayon)); % on r\'ecup\`ere les couleurs color Col[]; n:=0; - for p_=#5: + for p_=#3: n:=n+1; Col[n]=p_; endfor; - if #7=0: + if Inverse=false: A[0]=point(0) of cc; else: A[0]=point(180) of cc; @@ -10885,73 +11540,101 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O endfor; N=n; for k=1 upto N: - ang[k]=(#3/total[N])*total[k]; + ang[k]=(#2/total[N])*total[k]; endfor; n:=0; for p_=t: if numeric p_: n:=n+1; - if #7=0: - A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N])); + if Inverse=false: + A[n]=A[n-1] rotatedabout(O,p_*(#2/total[N])); else: - A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N])); + A[n]=A[n-1] rotatedabout(O,-p_*(#2/total[N])); fi; %hachure ou pas ? - if #6=0: - fill (O--if #7=0:arccercle(A[n-1],A[n],O) else: + if Hachures=false: + fill (O--if Inverse=false:arccercle(A[n-1],A[n],O) else: arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi; else: draw - Hachurage((O--if #7=0:arccercle(A[n-1],A[n],O) - else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if + Hachurage((O--if Inverse=false:arccercle(A[n-1],A[n],O) + else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#2/total[N]) if (n mod 2)=0: +90 else: -90 fi,ecarthachures,if (n mod 2)=0 : 0 else: 1 fi) - withpen pencircle epaisseurhachures if #4=1: withcolor 0.5white fi; + withpen pencircle scaled epaisseurhachures if AffichageAngle: withcolor 0.5white fi; fi; - draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi; + draw A[n-1]--O--A[n] if Hachures: withpen pencircle scaled2 fi; % Affichage des angles associ\'es - if #4=1: - if round(p_*(#3/total[N]))>15: + if AffichageAngle: + if round(p_*(#2/total[N]))>15: if (n mod 2)=0: - marque_a:=20*0.75*#1/cm; + marque_a:=20*0.75*Rayon/cm; else: - marque_a:=20*0.5*#1/cm; + marque_a:=20*0.5*Rayon/cm; fi; - if #6=1: - if #7=0: + if Hachures: + if Inverse=false: undraw - Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); else: undraw - Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); fi; fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor blanc; fi; - if #7=0: + if Inverse=false: draw - Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); else: draw - Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}"))))); + Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}"))))); + fi; + fi; + elseif AffichageDonnee: + if round(p_*(#2/total[N]))>15: + if (n mod 2)=0: + marque_a:=20*0.75*Rayon/cm; + else: + marque_a:=20*0.5*Rayon/cm; + fi; + if Hachures: + if Inverse=false: + undraw + Codeangle(A[n-1],O,A[n],0,LATEX(""&decimal(p_)&"")); + else: + undraw + Codeangle(A[n],O,A[n-1],0,(((LATEX(""&decimal(p_)&""))))); + fi; + fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor + blanc; + fi; + if Inverse=false: + draw + Codeangle(A[n-1],O,A[n],0,(((LATEX(""&decimal(p_)&""))))); + else: + draw + Codeangle(A[n],O,A[n-1],0,(((LATEX(""&decimal(p_)&""))))); fi; fi; fi; % fi; endfor; - if #3=360: - draw cc if #6=1: withpen pencircle scaled2 fi; + if #2=360: + draw cc if Hachures: withpen pencircle scaled2 fi; else: - draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;; + draw (subpath(0,length cc/2) of cc)--cycle if Hachures: withpen pencircle scaled2 fi;; fi; n:=0; - path cd[]; + if Legende: for p_=t: if string p_: n:=n+1; - C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2); + C[n]=A[n-1] rotatedabout(O,if Inverse:-1* fi(ang[n]-ang[n-1])/2); draw 0.95[O,C[n]]--1.05[O,C[n]]; C[n]:=1.05[O,C[n]]; + Test(n); + if Retour=false: if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)): D[n]=C[n]+(0.5cm,0); draw C[n]--D[n]; @@ -10973,13 +11656,27 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O label.lrt(LATEX(p_),D[n]); fi; fi; + fi; endfor; + fi; enddef; + vardef Test(expr nb)= + Retour:=false; + op:=0; + for l_=#4: + if l_=nb: + op:=op+1; + fi; + endfor; + if op>0: + Retour:=true; + fi; + enddef; Figure(-10u,-10u,10u,10u); - toto(#2); + toto(#1); \end{mpost} \fi -} +}% %Pour la m\'ediane. \DTLgnewdb{mtdb}% @@ -11154,10 +11851,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \ifboolKV[ClesStat]{SET}{}{Le nombre de donn\'ees de la s\'erie est \num{\ListeCompletelen}.\\}% Donc la moyenne de la s\'erie est \'egale \`a :% \[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\ListeCompletelen}}%\IfInteger{\fpeval{round(\fpeval{\SommeDonnees/\ListeCompletelen},\useKV[ClesStat]{Precision})}}{=}{\approx} - \opdiv*{\SommeDonnees}{\ListeCompletelen}{resultatmoy}{restemoy}% - \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}% - \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi% - \num{\fpeval{round(\SommeDonnees/\ListeCompletelen,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}.}{.}% + \ifboolKV[ClesStat]{ValeurExacte}{}{% + \opdiv*{\SommeDonnees}{\ListeCompletelen}{resultatmoy}{restemoy}% + \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}% + \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi% + \num{\fpeval{round(\SommeDonnees/\ListeCompletelen,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}% + }% \]% }{Pas de moyenne possible pour une s\'erie de donn\'ees \`a caract\`ere qualitatif.}}{}% % % %% celui de l'\'etendue @@ -11275,9 +11974,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O }% % Construction du tableau \ifboolKV[ClesStat]{Tableau}{% - \ifboolKV[ClesStat]{Liste}{Pas de tableau possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un tableau avec cette liste.}{% - \ifboolKV[ClesStat]{Total}{\buildtabt}{\buildtab}}}% - {}% + \ifboolKV[ClesStat]{Liste}{Pas de tableau possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un tableau avec cette liste.}{\BuildtabStat}}{}% % Construction du graphique \ifboolKV[ClesStat]{Graphique}{% \ifboolKV[ClesStat]{Liste}{Pas de graphique possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un graphique avec cette liste.}{% @@ -11336,10 +12033,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O }% Donc la moyenne de la s\'erie est \'egale \`a :% \[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\EffectifTotal}}% - \opdiv*{\SommeDonnees}{\EffectifTotal}{resultatmoy}{restemoy}% - \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}% - \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi% - \num{\fpeval{round(\SommeDonnees/\EffectifTotal,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}.}{.}% + \ifboolKV[ClesStat]{ValeurExacte}{}{% + \opdiv*{\SommeDonnees}{\EffectifTotal}{resultatmoy}{restemoy}% + \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}% + \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi% + \num{\fpeval{round(\SommeDonnees/\EffectifTotal,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}% + }% \]% }{}% % % Affichage des r\'eponses. @@ -11440,10 +12139,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O }% }% % Construction de tableau - \ifboolKV[ClesStat]{Tableau}{\ifboolKV[ClesStat]{Total}{\buildtabt}{% - \buildtab% - } - }{}% + \ifboolKV[ClesStat]{Tableau}{\BuildtabStat}{}% % Construction du graphique ?? \ifboolKV[ClesStat]{Graphique}{% \ifboolKV[ClesStat]{Angle}{\buildgraphcq{360}}{\ifboolKV[ClesStat]{SemiAngle}{\buildgraphcq{180}}{\buildgraph[#1]}} @@ -11964,82 +12660,105 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O %%% % Proportionnalit\'e %%% -\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15}% +\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15,Vertical=false}% \def\Updatetoksmath#1/#2\nil{\addtotok\tabtoksa{}\addtotok\tabtoksb{}}% - -\def\buildtabpropor{% - \tabtoksa{}\tabtoksb{}% - \tabtoksa{\useKV[ClesPropor]{GrandeurA}}\tabtoksb{\useKV[ClesPropor]{GrandeurB}}% - \ifboolKV[ClesPropor]{Math}{% - \foreachitem\compteur\in\ListeValeur{\expandafter\Updatetoksmath\compteur\nil}% - }{\foreachitem\compteur\in\ListeValeur{\expandafter\updatetoks\compteur\nil}% - }% - \xdef\LongListe{\ListeValeurlen}% +\def\updatetokspropor#1/#2\nil{\addtotok\tabtoksa{&\num{#1}}\addtotok\tabtoksb{&\num{#2}}} +\def\Buildtabpropor{% + \setcounter{NbProporG}{0}% + \setcounter{NbProporD}{0}% \renewcommand{\arraystretch}{\useKV[ClesPropor]{Stretch}}% - \begin{tabular}{|>{\columncolor{\useKV[ClesPropor]{CouleurTab}}}c|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}}% - \multicolumn{1}{c}{\TikzPHD\setcounter{NbPropor}{1}}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPH}}\\% - \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}% - \the\tabtoksa\\% - \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}% - \the\tabtoksb\\% - \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}% - \multicolumn{1}{c}{\TikzPBD\setcounter{NbPropor}{1}}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPB}}\\% - \end{tabular}% + \ifboolKV[ClesPropor]{Vertical}{% + \begin{tabular}{c|*{2}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}c}% + \multicolumn{1}{c}{}&\multicolumn{1}{c}{\setcounter{NbPropor}{1}\TikzPH}&\multicolumn{1}{c}{\TikzPH}&\\ + \hhline{~--~}% + &\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurA}&\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurB}&\\ + \hhline{~--~}% + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeValeurlen}}}\do{% + \stepcounter{NbProporG}\TikzPG&\ifboolKV[ClesPropor]{Math}{\ListeValeur[##1,1]}{\num{\ListeValeur[##1,1]}}&\ifboolKV[ClesPropor]{Math}{\ListeValeur[##1,2]}{\num{\ListeValeur[##1,2]}}&\stepcounter{NbProporD}\TikzPD\\ + \hhline{~--~}% + }% + \multicolumn{1}{c}{}&\multicolumn{1}{c}{\setcounter{NbPropor}{1}\TikzPB}&\multicolumn{1}{c}{\TikzPB}&\\ + \end{tabular}% + }{% + \tabtoksa{}\tabtoksb{}% + \tabtoksa{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurA}}\tabtoksb{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurB}}% + \ifboolKV[ClesPropor]{Math}{% + \foreachitem\compteur\in\ListeValeur{\expandafter\Updatetoksmath\compteur\nil}% + }{\foreachitem\compteur\in\ListeValeur{\expandafter\updatetokspropor\compteur\nil}% + }% + \xdef\LongListe{\ListeValeurlen}% + \begin{tabular}{rc|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}l}% + \multicolumn{1}{c}{}&\multicolumn{1}{c}{}\setcounter{NbPropor}{1}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPH}}&\multicolumn{1}{c}{}\\% + \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}% + \multicolumn{1}{c|}{\stepcounter{NbProporG}\TikzPG}&\the\tabtoksa&\multicolumn{1}{c}{\stepcounter{NbProporD}\TikzPD}\\% + \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}% + \multicolumn{1}{c|}{\stepcounter{NbProporG}\TikzPG}&\the\tabtoksb&\multicolumn{1}{c}{\stepcounter{NbProporD}\TikzPD}\\% + \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}% + \multicolumn{1}{c}{\stepcounter{NbProporG}\TikzPG}&\multicolumn{1}{c}{}\setcounter{NbPropor}{1}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPB}}&\multicolumn{1}{c}{}\\% + \end{tabular}% + }% \renewcommand{\arraystretch}{1}% }% -\newcounter{NbPropor} +\newcounter{NbPropor}% -\newcommand{\TikzPH}{% - \tikz[remember picture,overlay]{% - \coordinate[name=ProporH-\theNbPropor,yshift=-\the\dp\strutbox*\arraystretch];}% - \stepcounter{NbPropor}% - }% +\newcommand\TikzPH{% + \tikz[remember picture,overlay]{% + \coordinate[name=ProporH-\theNbPropor,yshift=-\getstrut\dp*\arraystretch];}% + \stepcounter{NbPropor}% +}% - \newcommand{\TikzPHD}{% - \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}% - \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}% - \xintifboolexpr{\wd1>\wd2}{% - \tikz[remember picture,overlay]{% - \coordinate[name=ProporHD,xshift=-0.5\wd1,yshift=-\the\dp\strutbox*\arraystretch];}% - }{% - \tikz[remember picture,overlay]{% - \coordinate[name=ProporHD,xshift=-0.5\wd2,yshift=-\the\dp\strutbox*\arraystretch];}% - } - }% +\newcommand\TikzPB{% + \tikz[remember picture, overlay]{% + \coordinate[name=ProporB-\theNbPropor,yshift=\getstrut\ht*\arraystretch];}% + \stepcounter{NbPropor}% +}% - \newcommand{\TikzPB}{% - \tikz[remember picture, overlay]{% - \coordinate[name=ProporB-\theNbPropor,yshift=\the\ht\strutbox*\arraystretch];}% - \stepcounter{NbPropor}% - }% +\newcommand\TikzPG{% + \tikz[remember picture,overlay]{% + \coordinate[name=ProporG-\theNbProporG,xshift=\tabcolsep+\arrayrulewidth,yshift=\getstrut\dp];}% +}% +\newcommand\TikzPD{% + \tikz[remember picture,overlay]{% + \coordinate[name=ProporD-\theNbProporD,xshift=-\tabcolsep-\arrayrulewidth,yshift=\getstrut\dp];}% +}% - \newcommand{\TikzPBD}{% - \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}% - \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}% - \xintifboolexpr{\wd1>\wd2}{% - \tikz[remember picture, overlay]{% - \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\the\ht\strutbox*\arraystretch];}% - }{% - \tikz[remember picture, overlay]{% - \coordinate[name=ProporBD,xshift=-0.5*\the\wd2,yshift=\the\ht\strutbox*\arraystretch];}% - } - \stepcounter{NbPropor}% - }% - - \newcommand\FlechesPH[3]{% - \ifnum#1<#2\relax% +\newcommand\TikzPHD{% + \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}% + \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}% + \xintifboolexpr{\wd1>\wd2}{% + \tikz[remember picture,overlay]{% + \coordinate[name=ProporHD,xshift=-0.5\wd1,yshift=-\getstrut\dp*\arraystretch];}% + }{% + \tikz[remember picture,overlay]{% + \coordinate[name=ProporHD,xshift=-0.5\wd2,yshift=-\getstrut\dp*\arraystretch];}% + } +}% + +\newcommand\TikzPBD{% + \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}% + \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}% + \xintifboolexpr{\wd1>\wd2}{% + \tikz[remember picture, overlay]{% + \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\getstrut\ht*\arraystretch];}% + }{% + \tikz[remember picture, overlay]{% + \coordinate[name=ProporBD,xshift=-0.5*\the\wd2,yshift=\getstrut\ht*\arraystretch];}% + } + \stepcounter{NbPropor}% +}% +% +\newcommand\FlechesPH[3]{% \begin{tikzpicture}[remember picture,overlay]% + \ifnum#1<#2\relax% \draw[-stealth,out=50,in=130] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);% - \end{tikzpicture}% \else% -\begin{tikzpicture}[remember picture,overlay]% \draw[-stealth,out=130,in=50] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);% + \fi% \end{tikzpicture}% - \fi% }% - +% \newcommand\FlechesPB[3]{% \ifnum\number#1<\number#2\relax% \begin{tikzpicture}[remember picture,overlay]% @@ -12050,18 +12769,63 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \draw[-stealth,out=-130,in=-50] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporB-#2);% \end{tikzpicture}% \fi% -} +}% +% +\newcommand\FlechesPG[3]{% + \begin{tikzpicture}[remember picture,overlay]% + \ifnum#1<#2\relax% + \draw[-stealth,out=-150,in=150] (ProporG-#1) to node[transform canvas={xshift=-1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,left]{#3}(ProporG-#2);% + \else% + \draw[-stealth,out=150,in=-150] (ProporG-#1) to node[transform canvas={xshift=-1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, left]{#3}(ProporG-#2);% + \fi% + \end{tikzpicture}% +}% + +\newcommand\FlechesPD[3]{% + \begin{tikzpicture}[remember picture,overlay]% + \ifnum#1<#2\relax% + \draw[-stealth,out=-30,in=30] (ProporD-#1) to node[transform canvas={xshift=1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,right]{#3}(ProporD-#2);% + \else% + \draw[-stealth,out=30,in=-30] (ProporD-#1) to node[transform canvas={xshift=1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,right]{#3}(ProporD-#2);% + \fi% + \end{tikzpicture}% +}% + +\newcommand\FlecheLineaireG[4]{% + \begin{tikzpicture}[remember picture,overlay,node distance=1em]% + \node[inner sep=0pt] (MilieuH) at ($(ProporG-#1)!0.5!(ProporG-#2)$) {};% + \node[circle,draw,inner sep=0pt] [left of=MilieuH] (aux) {#4} ;% + \coordinate[left of=aux] (aux1);% + \draw[-stealth] (ProporG-#1) -| (aux);% + \draw[-stealth] (ProporG-#2) -| (aux);% + \draw[-stealth] (aux) -- (aux1) |- (ProporG-#3);% + \end{tikzpicture}% +}% + +\newcommand\FlecheLineaireD[4]{% + \begin{tikzpicture}[remember picture,overlay,node distance=1em]% + \node[inner sep=0pt] (MilieuH) at ($(ProporD-#1)!0.5!(ProporD-#2)$) {};% + \node[circle,draw,inner sep=0pt] [right of=MilieuH] (aux) {#4} ;% + \coordinate[right of=aux] (aux1);% + \draw[-stealth] (ProporD-#1) -| (aux);% + \draw[-stealth] (ProporD-#2) -| (aux);% + \draw[-stealth] (aux) -- (aux1) |- (ProporD-#3);% + \end{tikzpicture}% +}% + +\newcounter{NbProporG}% +\newcounter{NbProporD}% \newcommand\Propor[2][]{% \useKVdefault[ClesPropor]% \setKV[ClesPropor]{#1}% \xdef\colorfill{\useKV[ClesPropor]{ColorFill}}% \xdef\EcartLargeur{\useKV[ClesPropor]{Largeur}}% -% %on lit la liste \'ecrite sous la forme valeur/effectif + % % on lit la liste \'ecrite sous la forme valeur/effectif \setsepchar[*]{,*/}\ignoreemptyitems% \readlist*\ListeValeur{#2}% - \buildtabpropor% -} + \Buildtabpropor% +}% \newcommand\FlecheCoef[2][\EcartLargeur]{% \begin{tikzpicture}[remember picture, overlay]% @@ -12070,7 +12834,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \coordinate[right of=Point1,node distance=0.5*#1+\tabcolsep] (point1);% \coordinate[right of=Point2,node distance=0.5*#1+\tabcolsep] (point2);% \draw[-stealth,out=-20,in=20] (point1) to node[midway,right,inner sep=1pt]{#2}(point2);% -\end{tikzpicture}% + \end{tikzpicture}% }% \newcommand\FlecheCoefDebut[2][\tabcolsep+\arrayrulewidth]{% @@ -12080,7 +12844,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \coordinate[left of=Noeud1,node distance=#1] (noeud1);% \coordinate[left of=Noeud2,node distance=#1] (noeud2);% \draw[-stealth,out=160,in=-160] (noeud2) to node[midway,left,inner sep=1pt]{#2}(noeud1);% -\end{tikzpicture}% + \end{tikzpicture}% }% \newcommand\FlecheCoefInv[2][1cm]{% @@ -12090,30 +12854,30 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \coordinate[right of=Point1,node distance=0.5*#1+\tabcolsep] (point1);% \coordinate[right of=Point2,node distance=0.5*#1+\tabcolsep] (point2);% \draw[-stealth,out=20,in=-20] (point2) to node[midway,right,inner sep=1pt]{#2}(point1);% -\end{tikzpicture}% + \end{tikzpicture}% }% \newcommand\FlecheLineaireH[4]{% - \begin{tikzpicture}[remember picture,overlay,node distance=\ht\strutbox] - \node[inner sep=0pt] (MilieuH) at ($(ProporH-#1)!0.5!(ProporH-#2)$) {}; - \node[circle,draw,inner sep=0pt] [above of=MilieuH] (aux) {#4} ; - \coordinate[above of=aux] (aux1); - \draw[-stealth] (ProporH-#1) |- (aux); - \draw[-stealth] (ProporH-#2) |- (aux); - \draw[-stealth] (aux) -- (aux1) -| (ProporH-#3); -\end{tikzpicture} -} + \begin{tikzpicture}[remember picture,overlay,node distance=\getstrut\ht]% + \node[inner sep=0pt] (MilieuH) at ($(ProporH-#1)!0.5!(ProporH-#2)$) {};% + \node[circle,draw,inner sep=0pt] [above of=MilieuH] (aux) {#4} ;% + \coordinate[above of=aux] (aux1);% + \draw[-stealth] (ProporH-#1) |- (aux);% + \draw[-stealth] (ProporH-#2) |- (aux);% + \draw[-stealth] (aux) -- (aux1) -| (ProporH-#3);% + \end{tikzpicture}% +}% \newcommand\FlecheLineaireB[4]{% - \begin{tikzpicture}[remember picture,overlay,node distance=3mm] - \node[inner sep=0pt] (MilieuB) at ($(ProporB-#1)!0.5!(ProporB-#2)$) {}; - \node[circle,draw,inner sep=0pt] [below of=MilieuB] (aux) {#4} ; - \coordinate[below of=aux,node distance=3mm] (aux1); - \draw[-stealth] (ProporB-#1) |- (aux); - \draw[-stealth] (ProporB-#2) |- (aux); - \draw[-stealth] (aux) -- (aux1) -| (ProporB-#3); -\end{tikzpicture} -} + \begin{tikzpicture}[remember picture,overlay,node distance=3mm]% + \node[inner sep=0pt] (MilieuB) at ($(ProporB-#1)!0.5!(ProporB-#2)$) {};% + \node[circle,draw,inner sep=0pt] [below of=MilieuB] (aux) {#4};% + \coordinate[below of=aux,node distance=3mm] (aux1);% + \draw[-stealth] (ProporB-#1) |- (aux);% + \draw[-stealth] (ProporB-#2) |- (aux);% + \draw[-stealth] (aux) -- (aux1) -| (ProporB-#3);% + \end{tikzpicture}% +}% %%% % Application : pourcentage @@ -12496,13 +13260,13 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \newcommand{\TikzRH}{% \tikz[remember picture,overlay]{% - \coordinate[name=ProporH-\theNbPropor,yshift=\the\ht\strutbox*\arraystretch];}% + \coordinate[name=ProporH-\theNbPropor,yshift=\getstrut\ht*\arraystretch];}% \stepcounter{NbPropor}% }% \newcommand{\TikzRB}{% \tikz[remember picture, overlay]{% - \coordinate[name=ProporB-\theNbPropor,yshift=-\the\dp\strutbox*\arraystretch];}% + \coordinate[name=ProporB-\theNbPropor,yshift=-\getstrut\dp*\arraystretch];}% \stepcounter{NbPropor}% }% @@ -17449,7 +18213,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O %%% % Ecritures d'unit\'es %%% -\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false} +\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false} %D'apres https://tex.stackexchange.com/questions/38905/time-of-the-day-or-time-period-using-the-package-siunitx \ExplSyntaxOn @@ -17698,16 +18462,20 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \newcommand\Vitesse[2][]{% \useKVdefault[Unites]% \setKV[Unites]{#1}% - \ifboolKV[Unites]{mh}{% - \SI[per-mode=symbol]{#2}{\meter\per\hour}% + \ifboolKV[Unites]{mmin}{% + \SI[per-mode=symbol]{#2}{\meter\per\minute}% }{% - \ifboolKV[Unites]{ms}{% - \SI[per-mode=symbol]{#2}{\meter\per\second}% + \ifboolKV[Unites]{mh}{% + \SI[per-mode=symbol]{#2}{\meter\per\hour}% }{% - \ifboolKV[Unites]{kms}{% - \SI[per-mode=symbol]{#2}{\kilo\meter\per\second}% + \ifboolKV[Unites]{ms}{% + \SI[per-mode=symbol]{#2}{\meter\per\second}% }{% - \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}% + \ifboolKV[Unites]{kms}{% + \SI[per-mode=symbol]{#2}{\kilo\meter\per\second}% + }{% + \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}% + }% }% }% }% @@ -17729,6 +18497,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false} \newcommand\PfCTBstrut{\rule[-1.2ex]{0pt}{3.8ex}} % Top and Bottom strut +\newcommand\PfCTstrut{\rule{0pt}{3.8ex}} % Top strut +\newcommand\PfCBstrut{\rule[-1.2ex]{0pt}{0ex}} % Bottom strut \newcommand\Tableau[2][]{% \useKVdefault[ClesTableaux]% @@ -17931,11 +18701,13 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-2}$}% &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-3}$}% \ifboolKV[ClesTableaux]{Micro}{&% - \Block[borders={right}]{}{}&% - &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}}{% + \Block[borders={right}]{}{}&% + \Block[borders={right}]{}{}& + \Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}}{% \ifboolKV[ClesTableaux]{Nano}{&% + \Block[borders={right}]{}{}&% \Block[borders={right}]{}{}&% - &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}% + \Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}% &\Block[borders={right}]{}{}% &\Block[borders={right}]{}{}% &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-9}$}}{}% @@ -19460,7 +20232,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \StrSubstitute{\tempa}{**}{^}[\tempab]% \StrSubstitute{\tempab}{*}{\times}[\tempac]% \StrSubstitute{\tempac}{/}{\div}[\tempad]% - $\ifboolKV[ClesProg]{Details}{\num{\NbDepart}\tempad=}{}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\etapecnt]}}\num{\NbDepart}$% + $\ifboolKV[ClesProg]{Details}{\xintifboolexpr{\NbDepart<0}{(\num{\NbDepart})}{\num{\NbDepart}}\tempad=}{}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\etapecnt]}}\num{\NbDepart}$% }% \end{enumerate} } @@ -19951,10 +20723,10 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O \def\barre{\vrule height2.1ex depth.9ex width0pt}% \def\demibarre{\vrule height1.4ex depth.6ex width0pt}% -\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1} +\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1}% \ifluatex -\NewEnviron{Scratch}[1][]{% +\NewDocumentEnvironment{Scratch}{o +b}{% \useKVdefault[Scratch]% \setKV[Scratch]{#1}% \mplibforcehmode% @@ -19963,22 +20735,22 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O input PfCScratch;% print:=\useKV[Scratch]{Impression};% NumeroteLignes:=\useKV[Scratch]{Numerotation};% - \BODY + #2% picture recap;% recap:=currentpicture scaled \useKV[Scratch]{Echelle};% - currentpicture:=nullpicture; - draw recap; - \end{mplibcode} -}% -\else -\NewEnviron{Scratch}[1][]{% + currentpicture:=nullpicture;% + draw recap;% + \end{mplibcode}% + }{} +\else% +\NewDocumentEnvironment{Scratch}{o +b}{% \setKV[Scratch]{#1}% \begin{mpost}[mpsettings={input PfCScratchpdf;print:=\useKV[Scratch]{Impression};NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]% - \BODY + #2% picture recap;% recap:=currentpicture scaled Echelle;% - currentpicture:=nullpicture; - draw recap; + currentpicture:=nullpicture;% + draw recap;% \end{mpost} -}% -\fi
\ No newline at end of file +}{}% +\fi%
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp b/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp new file mode 100644 index 0000000000..0140e24b4d --- /dev/null +++ b/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp @@ -0,0 +1,195 @@ +prologues:=3; + +path carre[]; + +u:=0.5mm; + +vardef BlocAffichage= + for k=0 upto 34: + carre[k]:=(unitsquare scaled u) shifted(u*(k mod 5,5-(k div 5))); + endfor; +enddef; + +vardef Affichage(expr decomp)= + save $; + picture $; + drawoptions(withpen pensquare scaled0.1); + $=image(% + for k=0 upto 34: + if (substring(k,k+1) of decomp)="1": + fill carre[k]; + fi; + endfor; + ); + drawoptions(); + $ +enddef; + +nblignes:=0; + +boolean print; +print:=false; + +color CouleurEcran; +CouleurEcran=(107/255,148/255,107/255); + +boolean Math; +Math=true; + +decahoriz:=0; + +vardef Test(expr cptk,cptnt)= + pair decalage; + if nblignes mod 2=0: + decalage:=u*((20-length(cptnt)+cptk)*6,-8*(nblignes-1)); + else: + decalage:=u*(decahoriz,-8*(nblignes-1)); + decahoriz:=decahoriz+6; + fi; + if substring(cptk,cptk+1) of cptnt="A":draw Affichage("01110100011000110001111111000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="B":draw Affichage("11110100011000111110100011000111110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="C":draw Affichage("01110100011000010000100001000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="D":draw Affichage("11100100101000110001100011001011100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="E":draw Affichage("11111100001000011111100001000011111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="F":draw Affichage("11111100001000011111100001000010000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="G":draw Affichage("01110100011000010111100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="H":draw Affichage("10001100011000111111100011000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="I":draw Affichage("01110001000010000100001000010001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="J":draw Affichage("00111000100001000010000101001001100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="K":draw Affichage("10001100101010011000101001001010001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="L":draw Affichage("10000100001000010000100001000011111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="M":draw Affichage("10001110111010110101100011000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="N":draw Affichage("10001100011100110101100111000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="O":draw Affichage("01110100011000110001100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="P":draw Affichage("11110100011000111110100001000010000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="Q":draw Affichage("01110100011000110001101011001001101") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="R":draw Affichage("11110100011000111110101001001010001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="S":draw Affichage("01111100001000001110000010000111110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="T":draw Affichage("11111001000010000100001000010000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="U":draw Affichage("10001100011000110001100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="V":draw Affichage("10001100011000110001100010101000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="W":draw Affichage("10101101011010110101101011010101010") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="X":draw Affichage("10001100010101000100010101000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="Y":draw Affichage("10001100011000101010001000010000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="Z":draw Affichage("11111000010001000100010001000011111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="a":draw Affichage("00000000000111100001011111000101111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="b":draw Affichage("10000100001011011001100011000111110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="c":draw Affichage("00000000000111010000100001000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="d":draw Affichage("00001000010110110011100011000101111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="e":if Math: + draw Affichage("00000000000000000001101000100010100") shifted(decalage); + decalage:=u*(decahoriz-1,-8*(nblignes-1)); + draw Affichage("00000000001001010101101011010110010") shifted(decalage); + decahoriz:=decahoriz+6; + else: + draw Affichage("00000000000111010001111111000001110") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="@":draw Affichage("00010001000111010001111111000001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="f":draw Affichage("00110010010100011100010000100001000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="g":draw Affichage("00000011111000110001011110000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="h":draw Affichage("10000100001011011001100011000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="i":draw Affichage("00100000000110000100001000010001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="j":if Math=true: + draw Affichage("00011000011110100001000000000000000") shifted(decalage); + else: + draw Affichage("00010000000011000010000101001001100") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="k":if Math=true: + draw Affichage("11100001000100011100000000000000000") shifted(decalage); + else: + draw Affichage("10000100001001010100110001010010010") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="l":if Math=true: + draw Affichage("11100010000010011100000000000000000") shifted(decalage); + else: + draw Affichage("01100001000010000100001000010001110") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="m":draw Affichage("00000000001101010101101011000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="n":draw Affichage("00000000001011011001100011000110001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="o":draw Affichage("00000000000111010001100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="p":draw Affichage("00000000001111010001111101000010000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="q":if Math=true: + draw Affichage("00000000001111101010010100101010001") shifted(decalage); + else: + draw Affichage("00000000000110110011011110000100001") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="r":draw Affichage("00000000001011011001100001000010000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="s":draw Affichage("00000000000111010000011100000111110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="t":draw Affichage("01000010001110001000010000100100110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="u":draw Affichage("00000000001000110001100011001101101") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="v":if Math=true: + draw Affichage("00111001000010000100101000110000100") shifted(decalage); + else: + draw Affichage("00000000001000110001100010111000100") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="w":draw Affichage("00000000001010110101101011010101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="x":draw Affichage("00000000001000101010001000101010001") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="y":draw Affichage("00000000001000110001011110000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="z":draw Affichage("00000000001111100010001000100011111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="0":draw Affichage("01110100011001110101110011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="1":draw Affichage("00100011000010000100001000010001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="2":draw Affichage("01110100010000100010001000100011111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="3":draw Affichage("11111000100010000010000011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="4":draw Affichage("00010001100101010010111110001000010") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="5":draw Affichage("11111100001111000001000011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="6":draw Affichage("00110010001000011110100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="7":draw Affichage("11111000010001000100010000100001000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="8":draw Affichage("01110100011000101110100011000101110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="9":draw Affichage("01110100011000101111000010001001100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="!":draw Affichage("00100001000010000100000000000000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="'":draw Affichage("01100001000100000000000000000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="(":draw Affichage("00010001000100001000010000010000010") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=")":draw Affichage("01000001000001000010000100010001000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="*":draw Affichage("00000001001010101110101010010000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="+":draw Affichage("00000001000010011111001000010000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=",":draw Affichage("00000000000000000000011000010001000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="-":draw Affichage("00000000000000011111000000000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=".":draw Affichage("00000000000000000000000000110001100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="/":draw Affichage("00000000010001000100010001000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=":":if Math=true: + draw Affichage("00000000000000000000000000000000000") shifted(decalage); + else: + draw Affichage("00000011000110000000011000110000000") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt=";":if Math=true: + draw Affichage("00000001000000011111000000010000000") shifted(decalage); + else: + draw Affichage("00000011000110000000011000010001000") shifted(decalage); + fi; + elseif substring(cptk,cptk+1) of cptnt="<":draw Affichage("00010001000100010000010000010000010") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="=":draw Affichage("00000000001111100000111110000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=">":draw Affichage("10000010000010000010001000100010000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="?":draw Affichage("01110100010000100010001000000000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="[":draw Affichage("01110010000100001000010000100001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="]":draw Affichage("01110000100001000010000100001001110") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="`":draw Affichage("01000001000001000000000000000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="|":draw Affichage("00100001000010000100001000010000100") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt=" ":draw Affichage("00000100010101000100010101000100000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="&":draw Affichage("00000100001100011100110001000000000") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="$":draw Affichage("00000000000000100001000010000111111") shifted(decalage); + elseif substring(cptk,cptk+1) of cptnt="^":draw Affichage("00100010101000100000000000000000000") shifted(decalage); + fi; +enddef; + +vardef LCD(text nt)(text rep)= + decahoriz:=0; + nblignes:=nblignes+1; + path Ecran; + Ecran:=(u*(0,-1)--u*(120,-1)--u*(120,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1))); + fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi; + draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi; + for k=0 upto length(nt)-1: + BlocAffichage; + Test(k,nt); + endfor; + nblignes:=nblignes+1; + Ecran:=(u*(0,-1)--u*(120,-1)--u*(120,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1))); + fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi; + draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi; + for k=0 upto length(rep)-1: + BlocAffichage; + Test(k,rep); + endfor; +enddef; + +endinput; diff --git a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp index 604373e716..3386a78680 100644 --- a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp +++ b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp @@ -574,7 +574,7 @@ vardef demidroite(expr AA,BB)= save Dem; path Dem; if typetrace="mainlevee": - Dem=segment(AA,BB)..(_tfig/abs(AA-BB))[AA,BB]{dir(angle(BB-AA)+10)} + Dem=segment(AA,BB)..(_tfig/abs(AA-BB))[AA,BB] elseif typetrace="3D": Dem=Projette(AA)--(_tfig/abs(Projette(AA)-Projette(BB)))[Projette(AA),Projette(BB)] else: @@ -667,6 +667,30 @@ vardef chemin(text t)= $ enddef; +vardef Triangleqcq(text t)= + save PfCTqc; + pair pointchoisi[]; + pointchoisi1:=iso(coinbg,1/4[coinbg,coinbd],iso(coinbg,iso(coinhg,coinhd)),iso(coinhg,coinbg)); + pointchoisi2:=iso(coinbd,3/4[coinbg,coinbd],iso(coinbd,iso(coinhg,coinhd)),iso(coinhd,coinbd)); + test:=uniformdeviate(1); + choix:=43+uniformdeviate(4); + ecart:=abs(45-choix); + relation:=60-(ecart/2)+uniformdeviate(ecart); + if test<0.5 : + pointchoisi3:=droite(pointchoisi1,rotation(pointchoisi2,pointchoisi1,choix)) intersectionpoint droite(pointchoisi2,rotation(pointchoisi1,pointchoisi2,-relation)); + else : + pointchoisi3:=droite(pointchoisi2,rotation(pointchoisi1,pointchoisi2,-choix)) intersectionpoint droite(pointchoisi1,rotation(pointchoisi2,pointchoisi1,relation)); + fi + j:=1; + for p_=t: + p_=pointchoisi[j]; + j:=j+1; + endfor; + path PfCTqc; + PfCTqc=polygone(pointchoisi1,pointchoisi2,pointchoisi3); + PfCTqc +enddef; + %------------------------------------------------ %Sucres %------------------------------------------------ @@ -674,7 +698,7 @@ vardef hachurage(expr chemin, angle, ecart, trace)= save $; picture $; path support; - support=((u*(-37,0))--(u*(37,0))) rotated angle; + support=((u*(-50,0))--(u*(50,0))) rotated angle; if trace=1: drawoptions(dashed evenly); elseif trace=2: @@ -693,6 +717,33 @@ vardef hachurage(expr chemin, angle, ecart, trace)= drawoptions(); $ enddef; + +vardef Hachurage(expr Chemin, Angle, Ecart, Trace)= + %Avec écart constant quel que soit l'angle d'inclinaison. + save $; + picture $; + if Trace=0: + drawoptions(); + elseif Trace=1: + drawoptions(dashed evenly); + elseif Trace=2: + drawoptions(dashed dashpattern(on12bp off6bp on3bp off6bp)); + elseif Trace=3: + drawoptions(dashed withdots); + fi; + path support; + support=(u*(-50,0)--u*(50,0)) rotated Angle; + $ = image( + for j=-200 upto 200: + if (support shifted (Ecart*j*u*(cosd(90-Angle),-sind(90-Angle)))) intersectiontimes Chemin<>(-1,-1): + draw support shifted (Ecart*j*u*(cosd(90-Angle),-sind(90-Angle)));%));%(cosd(Angle),sind(Angle))); + fi + endfor; + ); + clip $ to Chemin; + drawoptions(); + $ +enddef; %fleche pour coter un segment [AB] (Jacques Marot) vardef cotation(expr aa,bb,ecart,decalage,cote)= pair m[] ; diff --git a/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp b/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp index 33d9848b63..abfe21bc10 100644 --- a/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp +++ b/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp @@ -8,6 +8,7 @@ vardef LATEX primary s = write "\usepackage{fourier}" to "mptextmp.mp"; write "\usepackage[french]{babel}" to "mptextmp.mp"; write "\begin{document}" to "mptextmp.mp"; + write "\UseRawInputEncoding" to "mptextmp.mp"; write "etex" to "mptextmp.mp"; write "btex "&s&" etex" to "mptextmp.mp"; write EOF to "mptextmp.mp"; diff --git a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp index 10906952da..c69de29ac0 100644 --- a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp +++ b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp @@ -47,6 +47,16 @@ def MarquePoint(expr p)= fill fullcircle scaled (marque_r/5) shifted (p) withcolor white; draw fullcircle scaled (marque_r/5) shifted (p); fi; + elseif marque_p = "croix": + drawoptions(withpen pencircle scaled 1.25); + if color p: + draw (Projgeo(p) shifted (-marque_r/20,marque_r/20))--(Projgeo(p) shifted (marque_r/20,-marque_r/20)); + draw (Projgeo(p) shifted (-marque_r/20,-marque_r/20))--(Projgeo(p) shifted (marque_r/20,marque_r/20)); + else: + draw ((p) shifted (-marque_r/20,marque_r/20))--((p) shifted (marque_r/20,-marque_r/20)); + draw ((p) shifted (-marque_r/20,-marque_r/20))--((p) shifted (marque_r/20,marque_r/20)); + fi; + drawoptions(); fi; enddef; @@ -113,12 +123,18 @@ vardef arcsind(expr x)=%en degré ici :) angle((sqrt(1-x**2),x)) enddef; +vardef arccosd(expr x)=%en degré ici :) + angle((x,sqrt(1-x**2))) +enddef; + vardef tand(expr x)=sind(x)/cosd(x)% enddef; vardef cotand(expr x)=cosd(x)/sind(x)% enddef; +vardef sinc(expr x)=if abs(x)<0.001:1 else:sind(x)*c/x fi enddef; + vardef ln(expr t)=mlog(t)/256% enddef; @@ -188,25 +204,10 @@ vardef MaillageS= for l=Vdebut step pasV until (Vfin): Maillage[100*k+l]=Projgeo((FX(k,l),FY(k,l),FZ(k,l)))--Projgeo((FX(k,l+pasV),FY(k,l+pasV),FZ(k,l+pasV)))--Projgeo((FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV)))--Projgeo((FX(k+pasU,l),FY(k+pasU,l),FZ(k+pasU,l)))--cycle; if ProduitScalaire(1/2[(FX(k,l),FY(k,l),FZ(k,l)),(FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV))]-pte3,Oeil-pte3)>0: - %total:=total+1; - %if total=1: - % Vmin:=l; - %fi; draw Maillage[100*k+l]; fi; endfor; endfor; - %drawoptions(); - %for k=(Udebut+pasU) step pasU until (Ufin-pasU): - % if abs(round(k*c))<100: - % label.urt(TEX(""&decimal(round(k*c))&""),Projgeo(rayon*(cosd(round(k*c))*cosd(Theta),cosd(round(k*c))*sind(Theta),sind(round(k*c))))) - % fi; - %endfor; - %Vmax:=0; - %Vmax:=Vmin+2*((Theta/c)-Vmin); - %label.top(TEX(""&decimal(round(Vmin*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmin*c)),cosd(phim+10)*sind(round(Vmin*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim)))); - %label.top(TEX(""&decimal(round(Theta))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Theta)),cosd(phim+10)*sind(round(Theta)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim)))); - %label.top(TEX(""&decimal(round(Vmax*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmax*c)),cosd(phim+10)*sind(round(Vmax*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim)))); enddef; vardef InitialiseMaillage(expr ud,uf,up,vd,vf,vp)= @@ -569,6 +570,9 @@ vardef zoom(expr nbzoom)= elseif projection="cylindrique": xunit:=2.5*nbzoom; yunit:=nbzoom*10*cm; + elseif projection="winkel": + xunit:=nbzoom*0.5*mm; + yunit:=nbzoom; elseif projection="simple": xunit:=nbzoom*0.5*mm; yunit:=nbzoom*0.5*mm; @@ -600,12 +604,26 @@ vardef bonnec(expr aaa,bbb)= save tt; pair tt; rho:=cotand(phi)+(phi-aaa)/c; - %E:=(((bbb-theta)/c)*cosd(aaa))/rho; E:=(((bbb-theta)/c)/rho)*cosd(aaa); tt=xunit*(rho*sind(E*c),cotand(phi)-rho*cosd(E*c)); tt enddef; +vardef winkelc(expr aaa,bbb)= + save ttw; + pair ttw; + alphawinkel:=arccosd(cosd(aaa)*cosd(0.5*bbb)); + if alphawinkel=0: + xwinkel:=0; + ywinkel:=0; + else: + xwinkel:=xunit*0.5*(bbb*cosd(arccosd(2/pi))+(2*cosd(aaa)*sind(0.5*bbb)/sinc(alphawinkel))); + ywinkel:=yunit*0.5*(aaa+sind(aaa)/sinc(alphawinkel)); + fi; + ttw=(xwinkel,ywinkel); + ttw +enddef; + vardef lecturep(expr nomfichier,fond)= pair Coord[]; nbpts:=scantokens readfrom nomfichier; @@ -616,6 +634,8 @@ vardef lecturep(expr nomfichier,fond)= latlon=scantokens readfrom nomfichier; if projection="mercator": Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)) + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60)) elseif projection="cylindrique": Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60)); elseif projection="simple": @@ -636,12 +656,12 @@ vardef lecturep(expr nomfichier,fond)= endfor; closefrom nomfichier; path pays; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or(projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts fi; if ll>0: pays=Coord[1] - for l=2 upto ll: + for l=4 step 3 until ll:%upto ll: --Coord[l] endfor; if noncolore=true: @@ -651,11 +671,10 @@ vardef lecturep(expr nomfichier,fond)= fi; draw pays; fi; - %label.top(decimal(nbpts),(0,0)); enddef; vardef Lectureilesp= - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): nomfichiermul:=arborescence&"Ile.dat"; else: nomfichiermul:=arborescence&"iles.dat"; @@ -674,7 +693,9 @@ vardef Lectureilesp= pair latlon; latlon=scantokens readfrom nomfichiermul; if projection="mercator": - Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)) + Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60)); elseif projection="simple": Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); elseif projection="cylindrique": @@ -694,7 +715,7 @@ vardef Lectureilesp= fi; endfor; path pays; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts fi; if ll>0: @@ -711,7 +732,7 @@ vardef Lectureilesp= fi; endfor; closefrom nomfichiermul; - if (projection="mercator") or (projection="cylindrique") or (projection="simple"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple"): clip currentpicture to feuillet; fi; if projection="bonne": @@ -735,6 +756,8 @@ vardef Lecturevillesp(expr nompays)= p_=scantokens readfrom nomfichiermul; if projection="mercator": Coord[p]=mercatorc(ypart(latlon),xpart(latlon)); + elseif projection="winkel": + Coord[p]=winkelcc(ypart(latlon),xpart(latlon)); elseif projection="simple": Coord[p]=simplec(ypart(latlon),xpart(latlon)); elseif projection="cylindrique": @@ -742,7 +765,7 @@ vardef Lecturevillesp(expr nompays)= elseif projection="bonne": Coord[p]=bonnec(ypart(latlon),xpart(latlon)); fi; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): if ecriturevilles=true: dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]); else: @@ -797,6 +820,8 @@ vardef Lecturelacsp= latlon=scantokens readfrom nomfichiermul; if projection="mercator": Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60)); elseif projection="simple": Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); elseif projection="cylindrique": @@ -816,7 +841,7 @@ vardef Lecturelacsp= fi; endfor; path lac; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkelc") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts fi; if ll>0: @@ -844,6 +869,8 @@ vardef Lecturelacspsup= latlon=scantokens readfrom nomfichiermul; if projection="mercator": Coord[k]=mercatorc(xpart(latlon),ypart(latlon)); + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon),ypart(latlon)); elseif projection="simple": Coord[k]=simplec(xpart(latlon),ypart(latlon)); elseif projection="cylindrique": @@ -863,7 +890,7 @@ vardef Lecturelacspsup= fi; endfor; path lac; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts fi; if ll>0: @@ -891,6 +918,8 @@ vardef Lecturerivieresp= latlon=scantokens readfrom nomfichiermul; if projection="mercator": Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60)); + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60)); elseif projection="simple": Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60)); elseif projection="cylindrique": @@ -910,7 +939,7 @@ vardef Lecturerivieresp= fi; endfor; path riv; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts; fi; if ll>0: @@ -937,6 +966,8 @@ vardef Lecturerivierespsup= latlon=scantokens readfrom nomfichiermul; if projection="mercator": Coord[k]=mercatorc(xpart(latlon),ypart(latlon)); + elseif projection="winkel": + Coord[k]=winkelc(xpart(latlon),ypart(latlon)); elseif projection="simple": Coord[k]=simplec(xpart(latlon),ypart(latlon)); elseif projection="cylindrique": @@ -956,7 +987,7 @@ vardef Lecturerivierespsup= fi; endfor; path riv; - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): ll:=nbpts; fi; if ll>0: @@ -983,6 +1014,9 @@ vardef Lecturecapitalesp= if projection="mercator": Coord[p]=mercatorc(xpart(latlon/60),ypart(latlon/60)); ll:=1; + elseif projection="winkel": + Coord[p]=winkelc(xpart(latlon/60),ypart(latlon/60)); + ll:=1; elseif projection="simple": Coord[p]=simplec(xpart(latlon/60),ypart(latlon/60)); ll:=1; @@ -1007,7 +1041,7 @@ vardef Lecturecapitalesp= drawoptions(withcolor rouge); pointe(Coord[p]); drawoptions(); - if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"): label.top(TEX(""&p_&""),Coord[p]); fi; fi; @@ -1017,40 +1051,44 @@ vardef Lecturecapitalesp= enddef; vardef MeridienParallele= - if (projection="mercator") or (projection="cylindrique") or (projection="simple"): + if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple"): pair Coord[]; - for k=-80 step 10 until 80: - for j=-180 step 10 until 180: + for k=-85 step 5 until 85: + for j=-180 step 10 until 180: if projection="mercator": Coord[100*k+j]=mercatorc(k,j); + elseif projection="winkel": + Coord[100*k+j] = winkelc(k,j); elseif projection="simple": - Coord[k]=simplec(k,j); + Coord[100*k+j]=simplec(k,j); elseif projection="cylindrique": Coord[100*k+j]=cylindriquec(k,j); fi; endfor; endfor; - for k=-80 step 10 until 80: + for k=-85 step 5 until 85: draw Coord[100*k-180] - for j=-170 step 10 until 180: + for j=-170 step 10 until 180: --Coord[100*k+j] - endfor; + endfor; endfor; pair Coord[]; for k=-180 step 10 until 180: - for j=-80 step 10 until 80: + for j=-85 step 5 until 85: if projection="mercator": Coord[0.001*k+10*j]=mercatorc(j,k); + elseif projection="winkel": + Coord[0.001*k+10*j]=winkelc(j,k); elseif projection="simple": - Coord[k]=simplec(j,k); + Coord[0.001*k+10*j]=simplec(j,k); elseif projection="cylindrique": Coord[0.001*k+10*j]=cylindriquec(j,k); fi; endfor; endfor; for k=-180 step 10 until 180: - draw Coord[0.001*k-10*80] - for j=-70 step 10 until 80: + draw Coord[0.001*k-10*85] + for j=-80 step 5 until 85: --Coord[0.001*k+10*j] endfor; endfor; @@ -1154,6 +1192,8 @@ vardef echelle(expr Th,Ph,long)=%long en km. $=(cm*pi*cosd(Ph)/36)/(long*abs(bonnec(Ph,Th)-bonnec(Ph,Th+5)))*6340; elseif projection="mercator": $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(mercatorc(Ph,Th)-mercatorc(Ph,Th+5))); + elseif projection="winkel": + $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(winkelc(Ph,Th)-winkelc(Ph,Th+5))); elseif projection="simple": $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(simplec(Ph,Th)-simplec(Ph,Th+5))); elseif projection="cylindrique": @@ -1229,7 +1269,7 @@ vardef Projection(expr TH,PH,Zoom)= fi; if maillage=true: drawoptions(withcolor gris); - MeridienParallele + MeridienParallele; drawoptions(); fi; if Echelle=true: @@ -1299,6 +1339,34 @@ vardef Mercator(expr TH,PH,Zoom)= fi; enddef; +vardef Winkel(expr TH,PH,Zoom)= + projection:="winkel"; + theta:=TH; + phi:=PH; + zoom(Zoom); + Lecture("Cameriquesud.dat"); + Lecture("Ccaraibes.dat"); + Lecture("Cameriquecentrale.dat"); + Lecture("Cameriquenord.dat"); + Lecture("Casia.dat"); + Lecture("Ceurope.dat"); + Lecture("Cafrique.dat"); + if lacs=true: + Lecturelacsp; + Lecturelacspsup; + fi; + Lectureilesp; + if capitales=true: + Lecturecapitalesp; + fi; + if fleuves=true: + Lecturerivieresp; + fi; + if maillage=true: + MeridienParallele; + fi; +enddef; + vardef Cylindrique(expr TH,PH,Zoom)= projection:="cylindrique"; theta:=TH; diff --git a/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat b/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat index c9da4fc717..a74dc0e4a4 100644 --- a/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat +++ b/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat @@ -1,5 +1,6 @@ -47 -arborescence&"russie1bis.dat",rouge +48 +arborescence&"russie3.dat",rouge +arborescence&"russie3bis.dat",rouge arborescence&"coreesud.dat",jaune arborescence&"coreenord.dat",rose arborescence&"chine.dat",vert diff --git a/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat b/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat new file mode 100644 index 0000000000..ffdeb3882a --- /dev/null +++ b/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat @@ -0,0 +1,8819 @@ +8818%9282 +(2603,2401) +(2604,2395) +(2610,2392) +(2614,2383) +(2617,2381) +(2619,2377) +(2635,2358) +(2642,2346) +(2649,2338) +(2650,2332) +(2656,2325) +(2660,2316) +(2661,2300) +(2663,2297) +(2663,2292) +(2665,2289) +(2669,2287) +(2671,2283) +(2673,2284) +(2674,2282) +(2673,2280) +(2676,2276) +(2678,2276) +(2680,2273) +(2682,2272) +(2684,2267) +(2680,2269) +(2678,2269) +(2678,2265) +(2680,2258) +(2679,2254) +(2680,2249) +(2683,2246) +(2684,2243) +(2691,2239) +(2692,2238) +(2694,2239) +(2699,2232) +(2706,2211) +(2706,2202) +(2708,2197) +(2711,2195) +(2712,2195) +(2712,2202) +(2713,2205) +(2714,2206) +(2714,2210) +(2716,2218) +(2719,2218) +(2718,2207) +(2720,2206) +(2721,2205) +(2721,2206) +(2721,2207) +(2719,2208) +(2720,2209) +(2722,2211) +(2722,2209) +(2723,2206) +(2720,2202) +(2720,2200) +(2725,2205) +(2726,2210) +(2720,2228) +(2718,2226) +(2716,2227) +(2716,2224) +(2715,2224) +(2714,2225) +(2714,2227) +(2715,2234) +(2716,2235) +(2717,2239) +(2718,2230) +(2719,2229) +(2720,2230) +(2720,2242) +(2718,2243) +(2722,2251) +(2720,2250) +(2721,2253) +(2720,2256) +(2718,2256) +(2718,2254) +(2718,2257) +(2720,2258) +(2718,2259) +(2719,2260) +(2718,2264) +(2720,2262) +(2722,2264) +(2724,2266) +(2723,2263) +(2725,2264) +(2727,2262) +(2727,2265) +(2729,2261) +(2734,2262) +(2735,2259) +(2736,2258) +(2734,2257) +(2733,2260) +(2733,2258) +(2731,2259) +(2730,2258) +(2727,2259) +(2726,2258) +(2725,2257) +(2726,2255) +(2738,2255) +(2740,2257) +(2739,2258) +(2738,2257) +(2737,2262) +(2740,2260) +(2744,2268) +(2746,2270) +(2750,2273) +(2759,2275) +(2762,2276) +(2763,2281) +(2764,2284) +(2763,2286) +(2761,2282) +(2762,2284) +(2758,2282) +(2757,2284) +(2756,2285) +(2754,2284) +(2750,2280) +(2749,2283) +(2751,2283) +(2753,2285) +(2762,2288) +(2763,2290) +(2767,2290) +(2768,2294) +(2762,2306) +(2761,2308) +(2762,2314) +(2766,2314) +(2773,2298) +(2776,2296) +(2781,2290) +(2784,2285) +(2784,2280) +(2783,2278) +(2782,2281) +(2781,2280) +(2784,2274) +(2789,2269) +(2800,2264) +(2797,2271) +(2797,2281) +(2801,2287) +(2801,2292) +(2804,2296) +(2801,2298) +(2799,2303) +(2798,2308) +(2799,2315) +(2801,2316) +(2802,2314) +(2804,2310) +(2805,2305) +(2804,2303) +(2803,2303) +(2805,2302) +(2806,2304) +(2810,2305) +(2812,2309) +(2810,2313) +(2813,2327) +(2817,2332) +(2817,2336) +(2820,2342) +(2822,2345) +(2820,2346) +(2821,2350) +(2820,2356) +(2825,2358) +(2827,2363) +(2828,2360) +(2825,2356) +(2828,2356) +(2829,2355) +(2831,2355) +(2832,2357) +(2835,2356) +(2837,2345) +(2835,2342) +(2835,2337) +(2833,2336) +(2831,2336) +(2831,2333) +(2830,2331) +(2829,2325) +(2828,2317) +(2828,2313) +(2827,2313) +(2828,2309) +(2833,2313) +(2835,2327) +(2837,2329) +(2835,2327) +(2834,2314) +(2830,2308) +(2828,2307) +(2828,2298) +(2827,2294) +(2828,2294) +(2831,2294) +(2834,2296) +(2835,2300) +(2838,2299) +(2838,2294) +(2839,2294) +(2842,2296) +(2843,2298) +(2845,2299) +(2848,2298) +(2852,2298) +(2854,2300) +(2857,2303) +(2857,2308) +(2858,2307) +(2858,2312) +(2859,2318) +(2862,2321) +(2861,2326) +(2862,2327) +(2865,2327) +(2869,2328) +(2869,2330) +(2872,2330) +(2872,2332) +(2872,2337) +(2872,2342) +(2870,2347) +(2871,2352) +(2872,2357) +(2873,2362) +(2871,2366) +(2872,2368) +(2870,2372) +(2870,2374) +(2870,2379) +(2870,2385) +(2873,2387) +(2876,2388) +(2880,2389) +(2883,2389) +(2885,2393) +(2888,2394) +(2891,2397) +(2893,2397) +(2894,2401) +(2896,2401) +(2899,2399) +(2898,2396) +(2899,2391) +(2901,2395) +(2903,2395) +(2906,2394) +(2908,2391) +(2910,2391) +(2911,2392) +(2915,2390) +(2915,2386) +(2916,2381) +(2918,2381) +(2921,2383) +(2924,2383) +(2927,2386) +(2930,2388) +(2934,2390) +(2936,2387) +(2940,2383) +(2943,2380) +(2944,2382) +(2943,2387) +(2944,2392) +(2944,2396) +(2945,2397) +(2947,2399) +(2951,2402) +(2951,2405) +(2954,2408) +(2955,2412) +(2959,2411) +(2964,2410) +(2967,2410) +(2970,2413) +(2974,2413) +(2977,2409) +(2977,2403) +(2976,2398) +(2974,2394) +(2974,2388) +(2977,2381) +(2980,2378) +(2984,2377) +(2985,2375) +(2986,2368) +(2985,2361) +(2986,2356) +(2991,2353) +(2993,2350) +(2990,2346) +(2989,2342) +(2989,2337) +(2992,2336) +(2992,2331) +(2994,2327) +(2996,2322) +(2999,2322) +(2999,2321) +(2998,2319) +(2999,2317) +(2998,2312) +(3000,2308) +(3000,2302) +(3002,2302) +(3005,2300) +(3005,2298) +(3005,2297) +(3004,2292) +(3003,2292) +(2998,2293) +(2996,2289) +(2996,2287) +(2995,2283) +(2997,2281) +(2998,2281) +(3000,2277) +(3003,2275) +(3003,2272) +(3005,2268) +(3008,2263) +(3011,2259) +(3015,2258) +(3018,2258) +(3018,2257) +(3020,2252) +(3023,2248) +(3026,2248) +(3026,2246) +(3026,2241) +(3023,2237) +(3021,2230) +(3021,2226) +(3021,2220) +(3021,2216) +(3019,2208) +(3016,2201) +(3014,2197) +(3017,2194) +(3018,2196) +(3018,2191) +(3020,2186) +(3018,2179) +(3021,2178) +(3022,2176) +(3025,2173) +(3026,2171) +(3027,2164) +(3027,2159) +(3026,2149) +(3024,2148) +(3022,2142) +(3023,2137) +(3027,2136) +(3029,2132) +(3031,2128) +(3036,2125) +(3036,2126) +(3039,2125) +(3040,2130) +(3043,2129) +(3047,2129) +(3049,2125) +(3053,2123) +(3056,2124) +(3057,2121) +(3061,2120) +(3062,2125) +(3064,2125) +(3064,2118) +(3063,2117) +(3063,2113) +(3066,2111) +(3069,2108) +(3073,2108) +(3073,2103) +(3074,2098) +(3072,2094) +(3071,2089) +(3071,2085) +(3072,2081) +(3075,2079) +(3075,2078) +(3075,2073) +(3074,2067) +(3076,2063) +(3075,2058) +(3075,2056) +(3079,2059) +(3083,2059) +(3082,2057) +(3084,2053) +(3087,2056) +(3091,2058) +(3094,2056) +(3096,2052) +(3098,2048) +(3101,2048) +(3102,2055) +(3103,2060) +(3104,2067) +(3106,2067) +(3110,2066) +(3111,2063) +(3111,2056) +(3115,2055) +(3115,2053) +(3118,2048) +(3121,2046) +(3125,2045) +(3125,2047) +(3128,2048) +(3129,2045) +(3131,2044) +(3133,2040) +(3135,2036) +(3138,2035) +(3138,2032) +(3142,2029) +(3141,2022) +(3140,2017) +(3138,2013) +(3141,2011) +(3141,2010) +(3141,2007) +(3142,2003) +(3141,1998) +(3143,1992) +(3140,1988) +(3138,1983) +(3136,1979) +(3135,1974) +(3137,1970) +(3135,1968) +(3135,1962) +(3136,1961) +(3139,1955) +(3139,1948) +(3140,1942) +(3138,1942) +(3135,1943) +(3131,1941) +(3128,1942) +(3126,1938) +(3125,1934) +(3123,1928) +(3123,1923) +(3122,1918) +(3122,1917) +(3125,1916) +(3126,1914) +(3126,1908) +(3127,1908) +(3131,1907) +(3132,1903) +(3133,1903) +(3136,1902) +(3136,1901) +(3138,1897) +(3142,1898) +(3145,1897) +(3148,1897) +(3151,1896) +(3152,1898) +(3152,1900) +(3154,1900) +(3155,1895) +(3158,1894) +(3162,1892) +(3164,1897) +(3168,1895) +(3171,1893) +(3172,1888) +(3177,1883) +(3180,1879) +(3182,1875) +(3182,1878) +(3182,1879) +(3185,1881) +(3186,1883) +(3189,1883) +(3192,1886) +(3192,1888) +(3192,1890) +(3191,1895) +(3193,1898) +(3193,1901) +(3190,1907) +(3187,1911) +(3187,1914) +(3185,1918) +(3185,1924) +(3185,1929) +(3186,1931) +(3186,1934) +(3188,1938) +(3191,1942) +(3191,1945) +(3194,1949) +(3197,1952) +(3198,1954) +(3200,1959) +(3200,1964) +(3201,1964) +(3204,1966) +(3208,1966) +(3208,1959) +(3210,1958) +(3209,1956) +(3211,1956) +(3213,1951) +(3215,1947) +(3219,1947) +(3219,1945) +(3221,1950) +(3224,1948) +(3224,1942) +(3226,1938) +(3227,1933) +(3228,1929) +(3228,1923) +(3228,1918) +(3227,1912) +(3228,1908) +(3228,1906) +(3229,1907) +(3230,1907) +(3233,1909) +(3236,1911) +(3239,1912) +(3242,1914) +(3244,1909) +(3247,1907) +(3247,1901) +(3248,1900) +(3248,1894) +(3250,1890) +(3252,1889) +(3254,1884) +(3255,1879) +(3259,1879) +(3262,1878) +(3265,1877) +(3268,1874) +(3269,1872) +(3270,1866) +(3273,1868) +(3275,1871) +(3280,1872) +(3280,1871) +(3280,1865) +(3281,1860) +(3282,1861) +(3284,1856) +(3287,1851) +(3288,1846) +(3290,1846) +(3293,1850) +(3297,1852) +(3298,1857) +(3300,1858) +(3302,1856) +(3302,1861) +(3306,1860) +(3309,1861) +(3310,1859) +(3311,1859) +(3312,1857) +(3315,1855) +(3317,1851) +(3320,1850) +(3321,1853) +(3324,1856) +(3327,1854) +(3330,1857) +(3334,1858) +(3337,1856) +(3338,1851) +(3336,1846) +(3339,1843) +(3339,1841) +(3342,1839) +(3344,1837) +(3346,1831) +(3349,1828) +(3349,1822) +(3351,1817) +(3352,1812) +(3350,1806) +(3351,1800) +(3351,1794) +(3349,1790) +(3347,1787) +(3347,1786) +(3348,1785) +(3348,1783) +(3347,1777) +(3343,1774) +(3342,1769) +(3344,1767) +(3345,1762) +(3347,1762) +(3350,1764) +(3353,1765) +(3356,1768) +(3358,1763) +(3359,1756) +(3361,1750) +(3363,1746) +(3362,1740) +(3360,1735) +(3357,1731) +(3358,1728) +(3359,1723) +(3362,1722) +(3366,1720) +(3367,1713) +(3365,1707) +(3363,1702) +(3363,1699) +(3365,1697) +(3368,1694) +(3370,1689) +(3370,1691) +(3374,1692) +(3379,1693) +(3383,1690) +(3384,1691) +(3388,1689) +(3391,1686) +(3395,1688) +(3397,1682) +(3400,1681) +(3403,1678) +(3406,1676) +(3409,1679) +(3410,1677) +(3410,1675) +(3412,1671) +(3412,1666) +(3411,1660) +(3412,1661) +(3415,1661) +(3415,1663) +(3419,1664) +(3422,1664) +(3425,1665) +(3426,1663) +(3427,1665) +(3430,1669) +(3433,1671) +(3436,1672) +(3439,1670) +(3441,1666) +(3443,1661) +(3445,1657) +(3446,1651) +(3448,1651) +(3449,1653) +(3452,1652) +(3452,1645) +(3453,1639) +(3456,1642) +(3459,1643) +(3462,1645) +(3463,1652) +(3465,1652) +(3468,1650) +(3469,1653) +(3470,1659) +(3470,1665) +(3472,1670) +(3475,1668) +(3475,1665) +(3477,1661) +(3480,1662) +(3480,1659) +(3481,1660) +(3482,1659) +(3482,1664) +(3481,1667) +(3479,1668) +(3477,1674) +(3476,1674) +(3475,1671) +(3474,1675) +(3471,1677) +(3472,1685) +(3471,1688) +(3475,1691) +(3478,1688) +(3480,1689) +(3484,1683) +(3487,1682) +(3489,1678) +(3490,1677) +(3490,1671) +(3491,1668) +(3490,1665) +(3489,1659) +(3488,1657) +(3490,1656) +(3490,1655) +(3491,1656) +(3494,1655) +(3494,1651) +(3499,1652) +(3498,1659) +(3501,1658) +(3508,1667) +(3506,1666) +(3506,1668) +(3509,1671) +(3514,1670) +(3520,1666) +(3531,1668) +(3534,1663) +(3537,1663) +(3539,1664) +(3542,1666) +(3546,1667) +(3549,1670) +(3551,1673) +(3554,1674) +(3556,1678) +(3557,1684) +(3559,1691) +(3560,1691) +(3564,1693) +(3566,1688) +(3568,1683) +(3573,1684) +(3576,1684) +(3582,1680) +(3586,1681) +(3588,1685) +(3585,1691) +(3581,1693) +(3580,1702) +(3582,1705) +(3589,1706) +(3591,1710) +(3592,1712) +(3590,1715) +(3589,1720) +(3587,1722) +(3587,1724) +(3588,1727) +(3587,1730) +(3589,1733) +(3590,1739) +(3594,1742) +(3596,1739) +(3596,1742) +(3598,1743) +(3599,1746) +(3600,1752) +(3596,1786) +(3592,1802) +(3592,1809) +(3593,1813) +(3597,1812) +(3598,1815) +(3599,1813) +(3601,1797) +(3605,1794) +(3608,1793) +(3611,1786) +(3612,1773) +(3610,1765) +(3610,1750) +(3611,1741) +(3615,1738) +(3619,1730) +(3622,1729) +(3620,1727) +(3623,1716) +(3626,1715) +(3634,1706) +(3633,1710) +(3631,1712) +(3627,1721) +(3628,1723) +(3634,1720) +(3635,1719) +(3636,1717) +(3634,1716) +(3636,1713) +(3638,1715) +(3637,1718) +(3637,1721) +(3640,1719) +(3640,1724) +(3643,1724) +(3644,1720) +(3641,1715) +(3640,1704) +(3637,1703) +(3637,1699) +(3636,1700) +(3636,1697) +(3634,1694) +(3632,1693) +(3633,1689) +(3632,1689) +(3632,1684) +(3631,1683) +(3632,1675) +(3631,1674) +(3634,1671) +(3643,1686) +(3646,1689) +(3648,1696) +(3652,1701) +(3657,1711) +(3658,1718) +(3662,1722) +(3666,1729) +(3675,1753) +(3682,1762) +(3686,1769) +(3689,1772) +(3691,1779) +(3696,1789) +(3699,1790) +(3704,1799) +(3719,1820) +(3730,1838) +(3732,1839) +(3738,1856) +(3742,1859) +(3747,1869) +(3748,1870) +(3750,1876) +(3757,1879) +(3759,1883) +(3768,1888) +(3775,1895) +(3776,1892) +(3779,1891) +(3787,1877) +(3793,1873) +(3799,1858) +(3801,1855) +(3804,1847) +(3809,1829) +(3813,1824) +(3816,1815) +(3824,1800) +(3825,1801) +(3829,1816) +(3835,1821) +(3841,1833) +(3845,1837) +(3851,1833) +(3853,1835) +(3855,1834) +(3855,1827) +(3859,1823) +(3861,1809) +(3864,1803) +(3868,1805) +(3871,1803) +(3875,1804) +(3878,1811) +(3880,1813) +(3884,1807) +(3886,1808) +(3888,1803) +(3888,1788) +(3895,1779) +(3900,1776) +(3904,1778) +(3907,1792) +(3909,1789) +(3911,1792) +(3913,1791) +(3913,1778) +(3915,1776) +(3921,1785) +(3931,1785) +(3934,1792) +(3938,1783) +(3941,1801) +(3940,1807) +(3943,1808) +(3950,1806) +(3959,1799) +(3968,1795) +(3979,1778) +(3990,1773) +(3995,1766) +(4002,1760) +(4010,1746) +(4015,1745) +(4021,1748) +(4038,1772) +(4051,1796) +(4054,1799) +(4060,1799) +(4062,1802) +(4069,1782) +(4085,1761) +(4092,1722) +(4112,1707) +(4124,1725) +(4131,1729) +(4133,1724) +(4132,1709) +(4134,1706) +(4135,1707) +(4142,1731) +(4143,1737) +(4142,1740) +(4142,1747) +(4147,1755) +(4155,1759) +(4159,1759) +(4163,1781) +(4166,1789) +(4166,1797) +(4170,1806) +(4173,1808) +(4175,1811) +(4178,1809) +(4178,1804) +(4179,1804) +(4180,1809) +(4178,1818) +(4173,1831) +(4172,1848) +(4173,1855) +(4175,1857) +(4181,1857) +(4182,1854) +(4187,1848) +(4188,1853) +(4185,1876) +(4183,1884) +(4181,1884) +(4177,1878) +(4181,1886) +(4182,1887) +(4181,1892) +(4182,1892) +(4181,1908) +(4182,1908) +(4184,1901) +(4188,1903) +(4190,1904) +(4191,1909) +(4188,1921) +(4186,1923) +(4187,1924) +(4187,1926) +(4194,1919) +(4195,1915) +(4198,1916) +(4197,1925) +(4193,1935) +(4193,1941) +(4191,1950) +(4188,1950) +(4187,1955) +(4187,1959) +(4188,1962) +(4185,1986) +(4184,1988) +(4179,1987) +(4177,1983) +(4175,1972) +(4178,1949) +(4179,1946) +(4178,1942) +(4179,1930) +(4183,1931) +(4185,1927) +(4180,1926) +(4179,1918) +(4178,1924) +(4174,1921) +(4176,1928) +(4174,1937) +(4175,1943) +(4174,1946) +(4172,1944) +(4170,1950) +(4170,1945) +(4166,1937) +(4166,1931) +(4166,1937) +(4168,1945) +(4169,1947) +(4169,1952) +(4170,1953) +(4169,1955) +(4169,1957) +(4170,1960) +(4169,1972) +(4168,1974) +(4167,1968) +(4165,1967) +(4168,1974) +(4168,1985) +(4161,1970) +(4158,1969) +(4159,1972) +(4158,1974) +(4163,1978) +(4164,1985) +(4167,1999) +(4166,2001) +(4167,2007) +(4165,2011) +(4164,2010) +(4162,2005) +(4162,2010) +(4161,2009) +(4158,2002) +(4158,1997) +(4156,1994) +(4156,1995) +(4157,2004) +(4156,2008) +(4155,2006) +(4154,1998) +(4154,2004) +(4153,2004) +(4152,2005) +(4153,2012) +(4151,2011) +(4149,2004) +(4146,1996) +(4145,1987) +(4144,1982) +(4137,1981) +(4143,1984) +(4146,2006) +(4148,2007) +(4149,2010) +(4152,2014) +(4159,2015) +(4160,2023) +(4159,2025) +(4158,2023) +(4159,2027) +(4158,2032) +(4160,2031) +(4160,2037) +(4159,2045) +(4159,2061) +(4158,2065) +(4157,2065) +(4156,2076) +(4155,2080) +(4154,2099) +(4151,2098) +(4153,2102) +(4153,2106) +(4151,2111) +(4153,2116) +(4156,2109) +(4156,2120) +(4150,2159) +(4147,2164) +(4148,2165) +(4146,2175) +(4144,2176) +(4143,2180) +(4141,2196) +(4137,2205) +(4130,2234) +(4128,2234) +(4127,2242) +(4124,2247) +(4124,2255) +(4119,2269) +(4113,2282) +(4110,2284) +(4109,2292) +(4108,2293) +(4106,2300) +(4104,2304) +(4100,2304) +(4101,2307) +(4097,2326) +(4102,2310) +(4102,2311) +(4101,2316) +(4103,2316) +(4103,2317) +(4099,2327) +(4098,2336) +(4097,2337) +(4096,2336) +(4088,2362) +(4084,2371) +(4082,2391) +(4087,2387) +(4090,2382) +(4090,2384) +(4090,2387) +(4086,2396) +(4082,2399) +(4080,2405) +(4077,2408) +(4076,2416) +(4074,2417) +(4074,2422) +(4071,2425) +(4070,2419) +(4065,2429) +(4065,2433) +(4068,2434) +(4069,2440) +(4067,2441) +(4063,2449) +(4064,2455) +(4063,2460) +(4058,2463) +(4053,2459) +(4052,2461) +(4048,2460) +(4048,2465) +(4045,2469) +(4035,2467) +(4034,2468) +(4033,2475) +(4034,2479) +(4032,2482) +(4029,2480) +(4027,2483) +(4025,2480) +(4021,2482) +(4020,2480) +(4020,2476) +(4017,2478) +(4010,2473) +(4007,2468) +(3995,2444) +(3992,2443) +(3990,2436) +(3987,2434) +(3984,2427) +(3980,2411) +(3977,2404) +(3974,2391) +(3972,2384) +(3971,2372) +(3968,2361) +(3967,2355) +(3966,2336) +(3965,2330) +(3963,2313) +(3965,2278) +(3968,2256) +(3972,2244) +(3975,2229) +(3976,2218) +(3978,2183) +(3983,2141) +(3983,2131) +(3985,2123) +(3987,2120) +(3988,2112) +(3992,2102) +(3996,2093) +(3996,2087) +(3992,2073) +(3992,2068) +(3997,2061) +(3998,2062) +(3998,2071) +(3999,2071) +(3999,2069) +(4000,2059) +(4000,2052) +(4001,2050) +(4000,2049) +(4000,2045) +(4003,2049) +(4006,2049) +(4002,2046) +(4001,2043) +(4002,2042) +(4001,2041) +(4001,2036) +(4003,2033) +(4002,2032) +(4002,2030) +(4006,2026) +(4008,2020) +(4008,2018) +(4010,2015) +(4007,2015) +(4009,2011) +(4007,2012) +(4005,2018) +(4007,2011) +(4004,2013) +(4006,2009) +(4004,2013) +(4003,2012) +(4009,1991) +(4019,1969) +(4023,1968) +(4025,1978) +(4025,1966) +(4028,1956) +(4028,1947) +(4030,1942) +(4028,1924) +(4030,1913) +(4029,1911) +(4029,1915) +(4027,1915) +(4027,1926) +(4027,1935) +(4025,1941) +(4024,1937) +(4022,1950) +(4018,1954) +(4017,1952) +(4017,1943) +(4016,1950) +(4014,1949) +(4013,1945) +(4013,1953) +(4010,1961) +(4008,1961) +(4006,1975) +(4004,1976) +(4004,1972) +(4004,1971) +(4004,1966) +(4003,1968) +(4001,1978) +(4001,1991) +(3999,1999) +(3997,1999) +(3999,1988) +(3996,1984) +(3996,1973) +(3995,1972) +(3994,1986) +(3996,1987) +(3995,1993) +(3997,1993) +(3997,1995) +(3995,2005) +(3993,2007) +(3992,2012) +(3991,2012) +(3991,2009) +(3994,1990) +(3993,1990) +(3993,1984) +(3992,1977) +(3991,1977) +(3990,1987) +(3992,1993) +(3991,1998) +(3989,1999) +(3988,2012) +(3989,2016) +(3989,2018) +(3987,2015) +(3986,2024) +(3985,2023) +(3984,2011) +(3982,2019) +(3981,2020) +(3981,2006) +(3979,1999) +(3979,2010) +(3980,2017) +(3979,2019) +(3978,2017) +(3976,2033) +(3973,2034) +(3975,2038) +(3975,2046) +(3972,2050) +(3971,2049) +(3969,2061) +(3965,2073) +(3964,2074) +(3963,2077) +(3959,2083) +(3957,2080) +(3956,2083) +(3954,2082) +(3955,2086) +(3954,2091) +(3953,2092) +(3949,2090) +(3950,2094) +(3946,2092) +(3945,2094) +(3943,2098) +(3942,2095) +(3948,2081) +(3943,2081) +(3943,2085) +(3940,2082) +(3940,2084) +(3936,2087) +(3935,2084) +(3931,2083) +(3929,2078) +(3927,2081) +(3927,2070) +(3924,2070) +(3925,2062) +(3923,2063) +(3923,2059) +(3923,2058) +(3923,2064) +(3921,2068) +(3917,2068) +(3917,2072) +(3915,2072) +(3915,2078) +(3914,2076) +(3911,2081) +(3910,2078) +(3909,2080) +(3907,2080) +(3906,2087) +(3903,2085) +(3903,2088) +(3902,2089) +(3899,2082) +(3898,2086) +(3891,2097) +(3888,2092) +(3886,2085) +(3885,2088) +(3886,2090) +(3887,2094) +(3886,2101) +(3883,2089) +(3882,2090) +(3878,2098) +(3875,2090) +(3873,2089) +(3873,2085) +(3871,2091) +(3871,2097) +(3867,2097) +(3866,2106) +(3863,2108) +(3862,2119) +(3860,2126) +(3860,2135) +(3864,2134) +(3859,2152) +(3855,2154) +(3851,2160) +(3854,2162) +(3855,2165) +(3849,2173) +(3849,2177) +(3846,2173) +(3844,2177) +(3841,2177) +(3840,2187) +(3838,2189) +(3838,2196) +(3835,2201) +(3836,2206) +(3834,2211) +(3836,2216) +(3834,2219) +(3833,2230) +(3829,2237) +(3828,2244) +(3829,2252) +(3831,2255) +(3833,2255) +(3835,2259) +(3834,2269) +(3836,2280) +(3841,2285) +(3849,2283) +(3854,2274) +(3858,2281) +(3860,2274) +(3861,2277) +(3862,2271) +(3863,2268) +(3867,2268) +(3867,2266) +(3866,2262) +(3864,2260) +(3862,2258) +(3863,2255) +(3863,2250) +(3861,2241) +(3863,2231) +(3870,2220) +(3883,2203) +(3885,2193) +(3890,2190) +(3890,2194) +(3892,2188) +(3897,2186) +(3897,2191) +(3896,2195) +(3895,2199) +(3899,2210) +(3901,2209) +(3905,2212) +(3910,2210) +(3911,2211) +(3912,2222) +(3909,2238) +(3908,2246) +(3903,2263) +(3901,2265) +(3898,2265) +(3893,2279) +(3891,2284) +(3891,2293) +(3892,2305) +(3888,2302) +(3886,2304) +(3888,2299) +(3887,2295) +(3887,2290) +(3886,2283) +(3884,2282) +(3882,2288) +(3879,2282) +(3878,2283) +(3880,2290) +(3883,2291) +(3885,2298) +(3885,2301) +(3885,2309) +(3886,2309) +(3888,2305) +(3889,2308) +(3887,2319) +(3885,2336) +(3874,2373) +(3873,2385) +(3875,2385) +(3876,2395) +(3877,2393) +(3876,2387) +(3880,2390) +(3877,2403) +(3873,2411) +(3874,2421) +(3872,2430) +(3874,2432) +(3884,2425) +(3885,2425) +(3886,2428) +(3885,2431) +(3886,2431) +(3888,2427) +(3896,2422) +(3901,2417) +(3903,2408) +(3913,2397) +(3923,2383) +(3931,2383) +(3934,2386) +(3937,2391) +(3941,2407) +(3947,2425) +(3958,2442) +(3960,2460) +(3964,2481) +(3969,2492) +(3970,2499) +(3971,2499) +(3980,2515) +(3990,2528) +(3992,2533) +(3988,2555) +(3987,2559) +(3985,2560) +(3984,2555) +(3983,2553) +(3985,2580) +(3985,2598) +(3980,2603) +(3979,2614) +(3976,2620) +(3974,2622) +(3972,2618) +(3969,2607) +(3966,2602) +(3966,2598) +(3962,2601) +(3962,2607) +(3958,2611) +(3962,2611) +(3964,2603) +(3965,2603) +(3968,2610) +(3969,2618) +(3971,2622) +(3971,2631) +(3965,2643) +(3961,2641) +(3952,2651) +(3956,2651) +(3960,2647) +(3965,2650) +(3971,2645) +(3979,2647) +(3988,2655) +(3990,2662) +(3997,2664) +(4000,2674) +(4000,2669) +(4007,2662) +(4008,2662) +(4010,2669) +(4014,2668) +(4015,2671) +(4016,2669) +(4021,2664) +(4023,2658) +(4026,2663) +(4025,2656) +(4030,2650) +(4031,2642) +(4030,2634) +(4032,2627) +(4033,2625) +(4040,2625) +(4046,2629) +(4060,2642) +(4061,2645) +(4059,2647) +(4061,2649) +(4062,2649) +(4062,2644) +(4067,2648) +(4073,2645) +(4073,2646) +(4073,2652) +(4075,2656) +(4076,2653) +(4075,2648) +(4077,2648) +(4078,2648) +(4079,2653) +(4079,2649) +(4080,2649) +(4083,2660) +(4084,2665) +(4083,2657) +(4082,2651) +(4097,2654) +(4104,2640) +(4108,2624) +(4117,2599) +(4120,2596) +(4121,2602) +(4121,2610) +(4118,2618) +(4118,2625) +(4115,2631) +(4112,2644) +(4112,2652) +(4114,2688) +(4114,2716) +(4108,2760) +(4107,2761) +(4107,2757) +(4106,2756) +(4099,2762) +(4099,2766) +(4093,2777) +(4092,2780) +(4093,2781) +(4088,2792) +(4087,2791) +(4086,2788) +(4086,2793) +(4080,2794) +(4076,2799) +(4075,2803) +(4069,2803) +(4068,2800) +(4070,2780) +(4068,2769) +(4066,2749) +(4066,2737) +(4064,2723) +(4062,2718) +(4061,2721) +(4056,2720) +(4055,2718) +(4055,2709) +(4049,2697) +(4041,2695) +(4037,2708) +(4030,2736) +(4025,2739) +(4018,2747) +(4014,2749) +(4011,2759) +(4009,2762) +(4012,2794) +(4010,2796) +(4009,2792) +(4007,2789) +(4004,2783) +(4006,2790) +(4009,2795) +(4010,2815) +(4011,2817) +(4011,2823) +(4015,2844) +(4014,2854) +(4012,2854) +(4013,2856) +(4016,2855) +(4019,2862) +(4022,2865) +(4027,2865) +(4031,2861) +(4034,2867) +(4040,2866) +(4046,2877) +(4048,2876) +(4054,2869) +(4055,2870) +(4059,2880) +(4058,2886) +(4056,2884) +(4055,2886) +(4061,2895) +(4061,2901) +(4060,2906) +(4060,2912) +(4062,2918) +(4063,2921) +(4062,2924) +(4061,2923) +(4061,2929) +(4062,2931) +(4060,2939) +(4059,2938) +(4058,2940) +(4058,2946) +(4059,2943) +(4060,2943) +(4063,2933) +(4064,2926) +(4066,2928) +(4070,2928) +(4076,2915) +(4076,2920) +(4072,2928) +(4071,2937) +(4072,2954) +(4079,2979) +(4085,3001) +(4083,2999) +(4081,2991) +(4082,2998) +(4084,3002) +(4087,3004) +(4096,3035) +(4102,3047) +(4101,3050) +(4100,3053) +(4101,3065) +(4103,3068) +(4103,3077) +(4106,3086) +(4105,3090) +(4106,3094) +(4107,3095) +(4107,3092) +(4109,3095) +(4109,3107) +(4112,3123) +(4115,3132) +(4112,3131) +(4110,3123) +(4109,3123) +(4110,3131) +(4109,3141) +(4108,3141) +(4108,3137) +(4105,3137) +(4103,3128) +(4098,3136) +(4100,3139) +(4101,3147) +(4104,3154) +(4105,3160) +(4108,3164) +(4109,3163) +(4112,3155) +(4115,3149) +(4117,3150) +(4117,3157) +(4119,3158) +(4118,3151) +(4117,3147) +(4115,3144) +(4116,3137) +(4132,3193) +(4135,3208) +(4138,3230) +(4141,3266) +(4140,3274) +(4138,3271) +(4139,3267) +(4137,3260) +(4136,3238) +(4136,3225) +(4134,3216) +(4133,3216) +(4131,3221) +(4131,3224) +(4133,3221) +(4133,3223) +(4131,3241) +(4129,3239) +(4128,3231) +(4125,3229) +(4122,3230) +(4119,3223) +(4116,3225) +(4110,3234) +(4104,3237) +(4103,3231) +(4101,3229) +(4100,3228) +(4104,3221) +(4104,3217) +(4104,3215) +(4101,3221) +(4100,3220) +(4101,3215) +(4102,3206) +(4101,3203) +(4100,3202) +(4101,3200) +(4096,3192) +(4095,3195) +(4094,3200) +(4095,3208) +(4095,3222) +(4094,3230) +(4093,3232) +(4093,3240) +(4095,3246) +(4099,3252) +(4095,3250) +(4092,3252) +(4092,3254) +(4098,3268) +(4098,3271) +(4098,3273) +(4091,3279) +(4090,3289) +(4095,3296) +(4097,3295) +(4099,3291) +(4100,3295) +(4104,3296) +(4106,3300) +(4106,3304) +(4108,3306) +(4110,3312) +(4111,3314) +(4113,3319) +(4114,3328) +(4114,3335) +(4114,3341) +(4116,3350) +(4120,3358) +(4118,3368) +(4116,3380) +(4118,3391) +(4117,3392) +(4115,3390) +(4118,3394) +(4118,3398) +(4114,3412) +(4112,3425) +(4113,3437) +(4115,3444) +(4119,3447) +(4121,3452) +(4124,3455) +(4125,3475) +(4127,3479) +(4129,3477) +(4131,3478) +(4133,3494) +(4132,3495) +(4130,3492) +(4127,3495) +(4125,3502) +(4124,3500) +(4124,3505) +(4126,3506) +(4127,3497) +(4130,3495) +(4134,3497) +(4137,3511) +(4140,3536) +(4140,3554) +(4139,3554) +(4138,3541) +(4136,3533) +(4134,3546) +(4126,3565) +(4125,3566) +(4122,3564) +(4123,3556) +(4122,3551) +(4118,3547) +(4117,3544) +(4114,3544) +(4112,3547) +(4109,3545) +(4105,3544) +(4104,3548) +(4103,3562) +(4100,3579) +(4102,3590) +(4108,3598) +(4116,3592) +(4118,3586) +(4121,3589) +(4123,3594) +(4123,3597) +(4122,3600) +(4121,3605) +(4123,3628) +(4125,3636) +(4134,3650) +(4134,3658) +(4135,3655) +(4140,3657) +(4145,3656) +(4148,3653) +(4150,3644) +(4147,3644) +(4147,3638) +(4148,3635) +(4153,3636) +(4159,3633) +(4168,3618) +(4171,3613) +(4173,3613) +(4174,3608) +(4178,3609) +(4180,3617) +(4180,3630) +(4180,3640) +(4183,3638) +(4184,3643) +(4189,3642) +(4191,3646) +(4192,3652) +(4191,3663) +(4192,3666) +(4190,3669) +(4190,3676) +(4188,3684) +(4186,3695) +(4187,3704) +(4185,3721) +(4185,3750) +(4182,3785) +(4180,3805) +(4171,3857) +(4159,3899) +(4157,3900) +(4157,3896) +(4158,3892) +(4155,3887) +(4153,3888) +(4150,3886) +(4149,3888) +(4152,3897) +(4155,3895) +(4156,3903) +(4151,3923) +(4148,3952) +(4146,3954) +(4146,3946) +(4147,3944) +(4148,3939) +(4145,3941) +(4142,3966) +(4140,3975) +(4137,3981) +(4134,3995) +(4133,4013) +(4131,4027) +(4128,4022) +(4125,4029) +(4122,4032) +(4121,4040) +(4115,4058) +(4110,4068) +(4111,4062) +(4109,4067) +(4108,4074) +(4105,4090) +(4100,4095) +(4098,4094) +(4094,4091) +(4094,4096) +(4091,4097) +(4093,4103) +(4093,4106) +(4099,4114) +(4099,4119) +(4100,4114) +(4102,4114) +(4116,4134) +(4128,4141) +(4130,4146) +(4132,4147) +(4132,4139) +(4134,4137) +(4135,4147) +(4135,4148) +(4136,4144) +(4137,4153) +(4136,4142) +(4138,4141) +(4135,4127) +(4135,4119) +(4139,4108) +(4145,4101) +(4157,4083) +(4161,4082) +(4163,4087) +(4173,4086) +(4173,4084) +(4171,4080) +(4169,4082) +(4169,4077) +(4171,4067) +(4175,4058) +(4177,4050) +(4177,4041) +(4181,4025) +(4182,4019) +(4179,4020) +(4179,4019) +(4178,4011) +(4174,4015) +(4171,4016) +(4174,4008) +(4185,4006) +(4200,4012) +(4202,4015) +(4203,4019) +(4201,4020) +(4199,4018) +(4197,4021) +(4199,4031) +(4201,4035) +(4206,4040) +(4206,4037) +(4209,4038) +(4211,4035) +(4208,4034) +(4213,4025) +(4223,4032) +(4225,4036) +(4227,4035) +(4228,4038) +(4232,4033) +(4245,4040) +(4249,4036) +(4250,4026) +(4248,4020) +(4247,4007) +(4246,4001) +(4253,3997) +(4257,4006) +(4260,4010) +(4263,4010) +(4265,4014) +(4266,4009) +(4264,4009) +(4263,4005) +(4261,4006) +(4260,4001) +(4261,3997) +(4263,3997) +(4270,4009) +(4278,4015) +(4278,4025) +(4285,4055) +(4286,4055) +(4290,4071) +(4291,4077) +(4300,4093) +(4301,4097) +(4300,4101) +(4303,4098) +(4309,4108) +(4315,4113) +(4319,4114) +(4322,4119) +(4334,4124) +(4339,4127) +(4339,4129) +(4347,4131) +(4349,4135) +(4352,4132) +(4359,4138) +(4359,4143) +(4360,4139) +(4363,4141) +(4368,4154) +(4376,4159) +(4378,4162) +(4378,4172) +(4378,4185) +(4377,4188) +(4376,4187) +(4375,4174) +(4373,4173) +(4373,4176) +(4374,4218) +(4373,4245) +(4374,4259) +(4374,4274) +(4375,4292) +(4372,4306) +(4370,4320) +(4369,4317) +(4369,4310) +(4368,4313) +(4370,4326) +(4362,4370) +(4362,4363) +(4360,4364) +(4359,4369) +(4356,4363) +(4353,4366) +(4351,4371) +(4349,4368) +(4344,4368) +(4337,4373) +(4332,4364) +(4327,4363) +(4322,4354) +(4315,4351) +(4311,4340) +(4309,4339) +(4303,4342) +(4301,4334) +(4296,4332) +(4294,4324) +(4294,4321) +(4295,4317) +(4291,4309) +(4288,4308) +(4278,4323) +(4272,4341) +(4269,4355) +(4268,4358) +(4265,4361) +(4261,4357) +(4252,4370) +(4242,4366) +(4237,4361) +(4232,4366) +(4225,4367) +(4224,4361) +(4221,4352) +(4216,4345) +(4211,4357) +(4205,4354) +(4203,4349) +(4199,4352) +(4194,4359) +(4191,4361) +(4185,4359) +(4181,4353) +(4180,4354) +(4179,4350) +(4171,4357) +(4166,4358) +(4165,4355) +(4165,4349) +(4163,4354) +(4157,4359) +(4153,4351) +(4151,4349) +(4139,4353) +(4133,4358) +(4131,4363) +(4115,4411) +(4109,4419) +(4107,4419) +(4106,4416) +(4109,4416) +(4107,4408) +(4102,4405) +(4093,4386) +(4090,4388) +(4085,4384) +(4077,4392) +(4071,4392) +(4069,4384) +(4063,4389) +(4061,4387) +(4063,4383) +(4061,4377) +(4061,4373) +(4059,4373) +(4058,4371) +(4057,4357) +(4056,4353) +(4051,4353) +(4048,4344) +(4044,4347) +(4039,4344) +(4038,4336) +(4040,4331) +(4038,4328) +(4038,4322) +(4036,4322) +(4034,4332) +(4030,4334) +(4029,4330) +(4032,4327) +(4029,4328) +(4028,4315) +(4027,4321) +(4025,4319) +(4024,4321) +(4022,4316) +(4019,4312) +(4018,4308) +(4015,4305) +(4015,4303) +(4017,4298) +(4016,4295) +(4015,4292) +(4017,4286) +(4018,4282) +(4017,4279) +(4016,4280) +(4015,4287) +(4014,4283) +(4012,4291) +(4010,4289) +(4007,4293) +(4006,4291) +(4003,4296) +(3999,4294) +(3998,4282) +(4001,4282) +(3999,4280) +(3998,4276) +(3999,4270) +(3997,4274) +(3998,4264) +(3996,4263) +(3995,4267) +(3994,4262) +(3995,4257) +(3993,4259) +(3992,4259) +(3990,4243) +(3995,4220) +(3997,4217) +(3999,4219) +(3999,4224) +(4001,4228) +(4001,4236) +(4003,4238) +(4003,4241) +(4004,4244) +(4005,4244) +(4005,4234) +(4004,4232) +(4004,4237) +(4003,4228) +(4002,4233) +(4001,4219) +(4003,4209) +(4004,4211) +(4005,4205) +(4008,4199) +(4011,4197) +(4012,4194) +(4011,4193) +(4010,4194) +(4009,4187) +(4009,4182) +(4010,4175) +(4009,4174) +(4008,4178) +(4007,4176) +(4010,4164) +(4009,4159) +(4010,4150) +(4008,4138) +(4007,4140) +(4007,4145) +(4006,4147) +(3996,4147) +(3990,4163) +(3988,4185) +(3985,4194) +(3980,4223) +(3982,4253) +(3982,4279) +(3979,4301) +(3978,4305) +(3974,4309) +(3974,4311) +(3975,4316) +(3973,4320) +(3974,4322) +(3974,4324) +(3977,4334) +(3978,4341) +(3983,4344) +(3988,4342) +(3990,4345) +(3991,4343) +(3990,4337) +(3993,4347) +(3996,4348) +(3999,4377) +(4004,4380) +(4005,4386) +(4007,4392) +(4010,4411) +(4016,4418) +(4019,4431) +(4023,4432) +(4024,4435) +(4027,4434) +(4033,4437) +(4038,4435) +(4045,4445) +(4061,4484) +(4076,4489) +(4089,4484) +(4094,4477) +(4102,4460) +(4110,4468) +(4117,4465) +(4123,4469) +(4127,4480) +(4134,4528) +(4134,4537) +(4136,4550) +(4138,4567) +(4139,4580) +(4139,4593) +(4138,4596) +(4132,4602) +(4128,4597) +(4126,4598) +(4119,4621) +(4114,4626) +(4115,4629) +(4116,4626) +(4116,4630) +(4111,4639) +(4107,4635) +(4103,4638) +(4098,4630) +(4096,4631) +(4094,4642) +(4089,4638) +(4086,4633) +(4083,4635) +(4079,4631) +(4074,4638) +(4070,4634) +(4069,4630) +(4071,4629) +(4070,4625) +(4067,4626) +(4057,4660) +(4054,4661) +(4053,4661) +(4054,4671) +(4053,4674) +(4054,4677) +(4053,4679) +(4052,4683) +(4055,4695) +(4053,4700) +(4053,4709) +(4055,4715) +(4055,4720) +(4055,4723) +(4054,4732) +(4053,4737) +(4054,4743) +(4056,4738) +(4057,4730) +(4058,4728) +(4059,4732) +(4059,4727) +(4059,4723) +(4057,4720) +(4056,4715) +(4057,4710) +(4058,4708) +(4058,4715) +(4060,4717) +(4060,4712) +(4059,4710) +(4062,4706) +(4058,4704) +(4060,4699) +(4059,4694) +(4060,4691) +(4059,4688) +(4061,4683) +(4062,4679) +(4061,4672) +(4062,4672) +(4063,4677) +(4064,4670) +(4066,4668) +(4067,4666) +(4064,4665) +(4063,4659) +(4064,4652) +(4066,4648) +(4074,4648) +(4075,4649) +(4076,4655) +(4076,4651) +(4079,4648) +(4082,4651) +(4085,4650) +(4089,4654) +(4093,4664) +(4095,4689) +(4096,4690) +(4099,4685) +(4101,4685) +(4103,4678) +(4107,4674) +(4109,4677) +(4111,4676) +(4112,4673) +(4111,4668) +(4111,4666) +(4114,4666) +(4117,4663) +(4121,4665) +(4132,4662) +(4134,4658) +(4136,4644) +(4139,4633) +(4141,4615) +(4146,4607) +(4149,4598) +(4148,4592) +(4149,4582) +(4154,4562) +(4154,4546) +(4156,4534) +(4155,4529) +(4151,4513) +(4148,4506) +(4146,4509) +(4145,4485) +(4148,4470) +(4148,4451) +(4144,4437) +(4148,4428) +(4150,4425) +(4152,4425) +(4161,4433) +(4166,4434) +(4173,4426) +(4182,4413) +(4185,4411) +(4189,4418) +(4197,4422) +(4201,4422) +(4205,4426) +(4209,4421) +(4218,4440) +(4222,4444) +(4225,4450) +(4232,4460) +(4241,4458) +(4251,4436) +(4258,4434) +(4263,4424) +(4276,4412) +(4280,4400) +(4285,4381) +(4300,4410) +(4303,4412) +(4306,4408) +(4309,4412) +(4314,4432) +(4316,4447) +(4317,4455) +(4318,4459) +(4317,4461) +(4327,4497) +(4335,4506) +(4343,4507) +(4355,4504) +(4362,4497) +(4369,4484) +(4373,4500) +(4372,4505) +(4370,4512) +(4369,4520) +(4365,4531) +(4364,4532) +(4362,4527) +(4363,4524) +(4361,4520) +(4361,4525) +(4358,4530) +(4353,4543) +(4352,4541) +(4352,4534) +(4349,4533) +(4340,4541) +(4339,4540) +(4338,4546) +(4336,4545) +(4333,4536) +(4329,4531) +(4325,4532) +(4322,4525) +(4319,4526) +(4317,4516) +(4314,4517) +(4310,4513) +(4307,4513) +(4304,4516) +(4300,4530) +(4298,4530) +(4297,4523) +(4294,4530) +(4292,4532) +(4290,4525) +(4287,4526) +(4288,4517) +(4287,4514) +(4282,4516) +(4278,4527) +(4274,4562) +(4271,4567) +(4274,4569) +(4272,4583) +(4273,4598) +(4271,4614) +(4269,4613) +(4264,4615) +(4267,4618) +(4269,4616) +(4271,4622) +(4269,4661) +(4266,4672) +(4261,4673) +(4258,4677) +(4257,4683) +(4256,4696) +(4253,4704) +(4253,4707) +(4255,4713) +(4255,4732) +(4256,4734) +(4256,4737) +(4255,4737) +(4256,4742) +(4257,4744) +(4258,4741) +(4259,4745) +(4261,4746) +(4261,4742) +(4259,4738) +(4260,4730) +(4259,4727) +(4259,4734) +(4256,4728) +(4256,4723) +(4258,4715) +(4255,4706) +(4260,4709) +(4261,4708) +(4263,4713) +(4264,4710) +(4266,4711) +(4267,4707) +(4266,4701) +(4263,4710) +(4262,4707) +(4266,4695) +(4267,4694) +(4273,4699) +(4275,4697) +(4277,4682) +(4275,4676) +(4279,4674) +(4281,4680) +(4282,4680) +(4281,4672) +(4280,4672) +(4279,4664) +(4277,4665) +(4277,4663) +(4280,4647) +(4278,4651) +(4282,4632) +(4285,4627) +(4285,4620) +(4288,4604) +(4292,4593) +(4294,4579) +(4295,4575) +(4298,4576) +(4315,4560) +(4320,4583) +(4323,4614) +(4315,4642) +(4312,4646) +(4310,4651) +(4309,4662) +(4313,4686) +(4314,4690) +(4318,4694) +(4326,4681) +(4327,4677) +(4327,4668) +(4324,4649) +(4325,4643) +(4327,4643) +(4330,4649) +(4333,4648) +(4333,4651) +(4331,4660) +(4333,4665) +(4339,4674) +(4340,4684) +(4343,4688) +(4342,4696) +(4343,4699) +(4344,4706) +(4343,4710) +(4344,4711) +(4342,4731) +(4343,4758) +(4342,4769) +(4335,4788) +(4331,4807) +(4325,4850) +(4322,4851) +(4321,4849) +(4322,4844) +(4325,4847) +(4324,4840) +(4322,4838) +(4311,4875) +(4306,4878) +(4303,4898) +(4302,4900) +(4302,4928) +(4307,4969) +(4306,4975) +(4304,4979) +(4304,4992) +(4303,4996) +(4301,4999) +(4299,4998) +(4294,4990) +(4293,4981) +(4287,4979) +(4284,4982) +(4282,4962) +(4278,4942) +(4276,4935) +(4265,4941) +(4260,4932) +(4255,4938) +(4250,4939) +(4246,4945) +(4241,4933) +(4237,4932) +(4234,4925) +(4230,4929) +(4217,4934) +(4212,4941) +(4224,4935) +(4230,4934) +(4235,4930) +(4236,4948) +(4241,4946) +(4242,4949) +(4245,4950) +(4246,4954) +(4248,4949) +(4251,4955) +(4254,4955) +(4257,4961) +(4258,4965) +(4257,4966) +(4257,4971) +(4255,4972) +(4260,4973) +(4260,4974) +(4255,4980) +(4254,4986) +(4252,4989) +(4246,4988) +(4240,4983) +(4236,4984) +(4234,4980) +(4230,4983) +(4225,4980) +(4223,4974) +(4215,4959) +(4212,4960) +(4210,4958) +(4208,4969) +(4205,4973) +(4204,4984) +(4205,4990) +(4207,4992) +(4212,4988) +(4214,4983) +(4219,4977) +(4220,4981) +(4219,4991) +(4219,5000) +(4220,5011) +(4228,5026) +(4230,5024) +(4233,5026) +(4242,5016) +(4246,5016) +(4248,5012) +(4255,5009) +(4258,5003) +(4261,5004) +(4263,5000) +(4264,4990) +(4267,4987) +(4266,4994) +(4267,4996) +(4275,4989) +(4277,4997) +(4281,5002) +(4288,5003) +(4289,5011) +(4291,5015) +(4294,5018) +(4297,5018) +(4305,5005) +(4308,5005) +(4310,5003) +(4312,4991) +(4314,4968) +(4312,4960) +(4317,4957) +(4320,4950) +(4325,4931) +(4328,4938) +(4334,4937) +(4337,4932) +(4336,4927) +(4340,4903) +(4341,4870) +(4348,4851) +(4352,4843) +(4353,4843) +(4354,4847) +(4357,4850) +(4359,4841) +(4364,4838) +(4367,4845) +(4371,4848) +(4378,4849) +(4384,4841) +(4386,4826) +(4387,4835) +(4388,4834) +(4390,4820) +(4390,4814) +(4392,4819) +(4392,4829) +(4393,4834) +(4396,4833) +(4397,4827) +(4397,4820) +(4399,4815) +(4403,4821) +(4403,4823) +(4402,4825) +(4405,4829) +(4406,4835) +(4410,4841) +(4411,4838) +(4409,4831) +(4414,4831) +(4415,4843) +(4414,4851) +(4415,4855) +(4416,4875) +(4417,4879) +(4419,4891) +(4419,4930) +(4420,4949) +(4419,5004) +(4422,5025) +(4422,5061) +(4425,5075) +(4426,5087) +(4424,5094) +(4423,5101) +(4422,5100) +(4423,5106) +(4422,5113) +(4423,5129) +(4426,5128) +(4429,5135) +(4429,5152) +(4432,5161) +(4431,5175) +(4433,5184) +(4433,5200) +(4434,5207) +(4431,5226) +(4427,5222) +(4425,5211) +(4423,5205) +(4420,5197) +(4420,5191) +(4417,5181) +(4415,5167) +(4412,5159) +(4410,5150) +(4408,5147) +(4400,5150) +(4396,5173) +(4391,5179) +(4389,5191) +(4387,5200) +(4379,5207) +(4384,5206) +(4390,5198) +(4391,5187) +(4395,5180) +(4399,5158) +(4400,5153) +(4408,5151) +(4414,5173) +(4414,5199) +(4416,5212) +(4416,5226) +(4417,5231) +(4422,5241) +(4421,5235) +(4424,5238) +(4430,5258) +(4434,5260) +(4435,5252) +(4430,5250) +(4429,5246) +(4430,5239) +(4432,5232) +(4436,5228) +(4442,5216) +(4443,5218) +(4443,5232) +(4440,5244) +(4441,5245) +(4443,5242) +(4444,5211) +(4446,5212) +(4448,5203) +(4451,5208) +(4452,5206) +(4455,5194) +(4456,5164) +(4457,5157) +(4459,5158) +(4461,5154) +(4462,5158) +(4462,5167) +(4459,5175) +(4459,5178) +(4463,5176) +(4464,5164) +(4465,5164) +(4465,5173) +(4465,5175) +(4467,5179) +(4466,5183) +(4467,5189) +(4466,5195) +(4464,5198) +(4463,5196) +(4463,5204) +(4462,5208) +(4463,5209) +(4463,5217) +(4461,5214) +(4459,5202) +(4458,5211) +(4460,5214) +(4460,5218) +(4457,5218) +(4456,5220) +(4458,5223) +(4461,5220) +(4462,5221) +(4461,5236) +(4464,5224) +(4466,5225) +(4465,5207) +(4468,5201) +(4470,5193) +(4472,5196) +(4473,5207) +(4474,5190) +(4476,5179) +(4477,5167) +(4476,5157) +(4478,5151) +(4478,5145) +(4480,5152) +(4482,5150) +(4483,5152) +(4483,5164) +(4486,5167) +(4489,5162) +(4489,5166) +(4488,5169) +(4489,5172) +(4486,5183) +(4485,5180) +(4486,5173) +(4482,5180) +(4483,5191) +(4482,5193) +(4482,5198) +(4480,5196) +(4479,5201) +(4477,5202) +(4477,5211) +(4476,5218) +(4479,5214) +(4481,5217) +(4481,5206) +(4482,5206) +(4485,5212) +(4485,5219) +(4483,5221) +(4483,5224) +(4491,5224) +(4496,5243) +(4497,5242) +(4497,5235) +(4499,5231) +(4500,5246) +(4498,5249) +(4497,5246) +(4496,5253) +(4496,5256) +(4498,5254) +(4499,5261) +(4500,5261) +(4501,5267) +(4502,5266) +(4502,5243) +(4504,5235) +(4505,5224) +(4504,5215) +(4507,5215) +(4509,5220) +(4510,5237) +(4506,5279) +(4508,5284) +(4508,5288) +(4510,5298) +(4514,5299) +(4515,5304) +(4517,5311) +(4516,5318) +(4519,5313) +(4520,5316) +(4521,5327) +(4522,5329) +(4522,5326) +(4524,5332) +(4524,5345) +(4526,5339) +(4524,5324) +(4527,5348) +(4530,5355) +(4528,5359) +(4528,5364) +(4526,5363) +(4526,5383) +(4528,5377) +(4529,5377) +(4531,5393) +(4531,5403) +(4532,5402) +(4533,5395) +(4535,5403) +(4537,5438) +(4538,5441) +(4540,5454) +(4538,5455) +(4537,5459) +(4540,5470) +(4538,5471) +(4538,5474) +(4538,5497) +(4542,5498) +(4544,5503) +(4543,5507) +(4543,5523) +(4545,5531) +(4545,5544) +(4546,5550) +(4550,5601) +(4555,5644) +(4557,5650) +(4557,5648) +(4556,5644) +(4554,5620) +(4557,5613) +(4555,5606) +(4553,5609) +(4552,5605) +(4557,5596) +(4558,5599) +(4559,5597) +(4556,5578) +(4554,5586) +(4554,5585) +(4554,5573) +(4555,5574) +(4558,5570) +(4559,5575) +(4563,5575) +(4564,5581) +(4562,5586) +(4561,5587) +(4562,5592) +(4564,5593) +(4565,5587) +(4566,5589) +(4565,5595) +(4566,5606) +(4564,5600) +(4562,5605) +(4561,5605) +(4563,5613) +(4562,5618) +(4563,5622) +(4562,5625) +(4563,5640) +(4564,5637) +(4566,5620) +(4567,5620) +(4567,5638) +(4567,5646) +(4566,5652) +(4567,5663) +(4563,5668) +(4564,5676) +(4566,5676) +(4567,5684) +(4569,5680) +(4569,5674) +(4569,5673) +(4569,5686) +(4567,5694) +(4566,5703) +(4567,5705) +(4567,5716) +(4568,5719) +(4569,5725) +(4568,5749) +(4566,5769) +(4565,5772) +(4564,5760) +(4563,5765) +(4562,5759) +(4559,5760) +(4559,5753) +(4554,5743) +(4553,5734) +(4551,5745) +(4555,5749) +(4557,5756) +(4557,5778) +(4558,5780) +(4559,5776) +(4561,5791) +(4560,5793) +(4559,5790) +(4559,5797) +(4558,5800) +(4552,5787) +(4553,5796) +(4554,5800) +(4553,5810) +(4555,5810) +(4556,5816) +(4559,5823) +(4562,5833) +(4563,5842) +(4559,5831) +(4557,5835) +(4556,5831) +(4556,5840) +(4558,5838) +(4559,5841) +(4560,5853) +(4559,5869) +(4560,5870) +(4563,5863) +(4563,5853) +(4565,5860) +(4566,5866) +(4563,5874) +(4565,5889) +(4566,5893) +(4566,5881) +(4567,5876) +(4569,5881) +(4569,5884) +(4568,5886) +(4570,5889) +(4570,5902) +(4576,5928) +(4572,5923) +(4572,5931) +(4573,5935) +(4573,5942) +(4572,5949) +(4573,5957) +(4572,5958) +(4570,5952) +(4570,5954) +(4570,5945) +(4568,5949) +(4568,5954) +(4569,5974) +(4567,5976) +(4566,5968) +(4565,5975) +(4564,5974) +(4565,5978) +(4563,5986) +(4558,5981) +(4551,5980) +(4549,5972) +(4546,5954) +(4543,5956) +(4540,5949) +(4533,5946) +(4528,5975) +(4528,5985) +(4525,5982) +(4522,5986) +(4518,6001) +(4514,6002) +(4511,6010) +(4510,6011) +(4512,6012) +(4514,6005) +(4517,6005) +(4522,5988) +(4528,5989) +(4529,5976) +(4532,5963) +(4533,5954) +(4534,5951) +(4541,5955) +(4542,5961) +(4545,5957) +(4546,5961) +(4546,5975) +(4551,5982) +(4554,5993) +(4557,5995) +(4561,5989) +(4565,5993) +(4569,5988) +(4572,5978) +(4576,5976) +(4577,5964) +(4581,5956) +(4581,5942) +(4584,5941) +(4588,5930) +(4590,5929) +(4591,5935) +(4588,5966) +(4589,6014) +(4588,6018) +(4590,6039) +(4592,6051) +(4589,6063) +(4587,6061) +(4588,6075) +(4589,6079) +(4587,6089) +(4587,6102) +(4584,6113) +(4583,6135) +(4584,6131) +(4585,6119) +(4588,6107) +(4588,6094) +(4590,6085) +(4591,6062) +(4593,6053) +(4595,6064) +(4604,6068) +(4605,6074) +(4606,6071) +(4607,6060) +(4610,6052) +(4618,6055) +(4619,6057) +(4619,6073) +(4623,6074) +(4624,6070) +(4626,6072) +(4630,6087) +(4634,6097) +(4637,6111) +(4643,6124) +(4644,6129) +(4643,6133) +(4643,6137) +(4650,6153) +(4653,6175) +(4655,6174) +(4658,6183) +(4659,6196) +(4657,6201) +(4658,6219) +(4664,6244) +(4664,6258) +(4663,6260) +(4662,6256) +(4661,6256) +(4660,6262) +(4662,6277) +(4662,6285) +(4658,6288) +(4655,6295) +(4654,6314) +(4652,6323) +(4654,6339) +(4654,6352) +(4652,6350) +(4651,6354) +(4648,6355) +(4645,6360) +(4644,6367) +(4642,6378) +(4641,6371) +(4642,6363) +(4642,6344) +(4640,6344) +(4638,6337) +(4637,6327) +(4635,6331) +(4634,6318) +(4632,6316) +(4630,6297) +(4630,6292) +(4630,6283) +(4628,6271) +(4628,6262) +(4625,6247) +(4625,6262) +(4626,6282) +(4627,6286) +(4625,6295) +(4625,6304) +(4626,6309) +(4625,6321) +(4627,6336) +(4627,6351) +(4628,6355) +(4625,6353) +(4623,6344) +(4622,6347) +(4621,6327) +(4618,6327) +(4619,6332) +(4618,6340) +(4619,6346) +(4619,6355) +(4624,6372) +(4622,6389) +(4621,6390) +(4621,6394) +(4620,6399) +(4620,6404) +(4620,6406) +(4622,6399) +(4622,6406) +(4623,6409) +(4622,6421) +(4621,6419) +(4620,6420) +(4621,6436) +(4620,6434) +(4617,6440) +(4616,6450) +(4614,6449) +(4613,6436) +(4612,6441) +(4611,6432) +(4610,6437) +(4608,6433) +(4608,6424) +(4605,6423) +(4604,6418) +(4603,6418) +(4602,6414) +(4603,6405) +(4603,6403) +(4600,6408) +(4595,6401) +(4593,6395) +(4596,6392) +(4596,6387) +(4596,6383) +(4591,6384) +(4590,6402) +(4588,6409) +(4590,6413) +(4590,6421) +(4592,6441) +(4590,6458) +(4592,6473) +(4598,6480) +(4600,6474) +(4604,6477) +(4604,6497) +(4602,6498) +(4603,6507) +(4603,6528) +(4604,6544) +(4603,6549) +(4605,6562) +(4604,6565) +(4604,6576) +(4603,6581) +(4603,6591) +(4602,6593) +(4602,6598) +(4601,6602) +(4604,6618) +(4605,6627) +(4606,6636) +(4604,6638) +(4603,6644) +(4604,6655) +(4605,6654) +(4605,6666) +(4605,6668) +(4603,6664) +(4601,6666) +(4602,6674) +(4601,6693) +(4600,6689) +(4599,6693) +(4597,6687) +(4597,6688) +(4597,6699) +(4596,6706) +(4589,6732) +(4580,6710) +(4583,6721) +(4587,6734) +(4582,6759) +(4580,6765) +(4579,6759) +(4576,6764) +(4574,6761) +(4573,6759) +(4574,6750) +(4572,6756) +(4572,6767) +(4568,6771) +(4565,6768) +(4563,6754) +(4563,6776) +(4564,6781) +(4567,6782) +(4568,6779) +(4569,6786) +(4569,6793) +(4567,6798) +(4568,6795) +(4570,6797) +(4573,6780) +(4575,6776) +(4575,6796) +(4574,6798) +(4573,6794) +(4572,6794) +(4572,6801) +(4571,6804) +(4568,6808) +(4562,6807) +(4561,6813) +(4559,6810) +(4557,6813) +(4556,6806) +(4556,6811) +(4553,6814) +(4552,6813) +(4551,6809) +(4552,6818) +(4555,6817) +(4555,6823) +(4555,6825) +(4556,6827) +(4555,6831) +(4553,6829) +(4551,6834) +(4543,6825) +(4536,6823) +(4532,6811) +(4532,6805) +(4537,6815) +(4539,6816) +(4540,6806) +(4541,6798) +(4540,6782) +(4542,6788) +(4544,6783) +(4550,6756) +(4551,6740) +(4550,6747) +(4546,6751) +(4546,6761) +(4542,6772) +(4541,6769) +(4542,6765) +(4539,6773) +(4535,6767) +(4533,6770) +(4533,6781) +(4537,6780) +(4539,6797) +(4533,6796) +(4531,6803) +(4530,6813) +(4531,6818) +(4524,6823) +(4524,6812) +(4523,6813) +(4523,6818) +(4522,6820) +(4517,6816) +(4505,6786) +(4504,6781) +(4499,6773) +(4495,6754) +(4493,6728) +(4491,6725) +(4487,6723) +(4486,6717) +(4484,6714) +(4483,6717) +(4480,6708) +(4480,6704) +(4481,6696) +(4481,6684) +(4476,6667) +(4476,6660) +(4474,6663) +(4473,6657) +(4472,6649) +(4469,6636) +(4468,6630) +(4469,6621) +(4469,6617) +(4466,6623) +(4462,6612) +(4462,6602) +(4459,6594) +(4459,6588) +(4459,6587) +(4459,6578) +(4458,6573) +(4458,6577) +(4457,6583) +(4458,6599) +(4454,6597) +(4451,6591) +(4445,6570) +(4444,6554) +(4442,6545) +(4438,6535) +(4436,6526) +(4429,6514) +(4428,6510) +(4429,6506) +(4426,6509) +(4418,6484) +(4419,6486) +(4420,6482) +(4420,6478) +(4417,6467) +(4416,6465) +(4418,6460) +(4417,6446) +(4418,6441) +(4417,6439) +(4417,6429) +(4414,6426) +(4413,6430) +(4412,6430) +(4406,6413) +(4400,6408) +(4398,6399) +(4399,6393) +(4399,6377) +(4397,6364) +(4389,6361) +(4386,6351) +(4380,6350) +(4377,6342) +(4374,6340) +(4370,6321) +(4368,6318) +(4367,6304) +(4366,6304) +(4366,6327) +(4369,6340) +(4372,6346) +(4373,6357) +(4377,6360) +(4378,6377) +(4379,6373) +(4386,6370) +(4388,6372) +(4389,6376) +(4391,6381) +(4388,6408) +(4389,6415) +(4391,6422) +(4390,6464) +(4391,6470) +(4393,6477) +(4395,6486) +(4393,6493) +(4393,6501) +(4396,6503) +(4396,6492) +(4398,6494) +(4399,6515) +(4400,6523) +(4401,6536) +(4403,6549) +(4405,6556) +(4407,6552) +(4408,6553) +(4405,6565) +(4407,6566) +(4409,6559) +(4411,6551) +(4413,6550) +(4413,6553) +(4407,6570) +(4407,6576) +(4408,6589) +(4410,6601) +(4410,6606) +(4413,6609) +(4413,6605) +(4415,6607) +(4416,6625) +(4418,6624) +(4419,6628) +(4419,6637) +(4420,6640) +(4421,6653) +(4422,6655) +(4424,6653) +(4426,6655) +(4427,6639) +(4425,6636) +(4425,6629) +(4422,6616) +(4422,6588) +(4421,6585) +(4420,6585) +(4421,6579) +(4425,6572) +(4429,6571) +(4430,6574) +(4433,6590) +(4438,6593) +(4441,6604) +(4441,6612) +(4440,6634) +(4437,6643) +(4437,6647) +(4435,6654) +(4434,6660) +(4437,6666) +(4439,6664) +(4441,6666) +(4442,6672) +(4443,6687) +(4442,6694) +(4440,6692) +(4440,6687) +(4439,6683) +(4440,6676) +(4439,6672) +(4432,6678) +(4426,6699) +(4423,6721) +(4422,6735) +(4423,6749) +(4424,6767) +(4428,6777) +(4433,6776) +(4437,6769) +(4440,6769) +(4435,6779) +(4433,6788) +(4421,6804) +(4416,6806) +(4415,6804) +(4414,6797) +(4407,6788) +(4405,6793) +(4402,6796) +(4400,6810) +(4390,6809) +(4386,6811) +(4380,6807) +(4377,6809) +(4373,6798) +(4372,6788) +(4370,6785) +(4363,6792) +(4361,6798) +(4357,6817) +(4356,6845) +(4357,6838) +(4358,6823) +(4361,6801) +(4364,6793) +(4371,6789) +(4373,6802) +(4378,6812) +(4381,6811) +(4386,6816) +(4390,6812) +(4395,6814) +(4397,6819) +(4399,6822) +(4399,6831) +(4400,6842) +(4401,6838) +(4401,6831) +(4401,6826) +(4406,6812) +(4410,6809) +(4412,6831) +(4415,6846) +(4415,6872) +(4416,6892) +(4421,6910) +(4422,6926) +(4422,6949) +(4420,6968) +(4420,6995) +(4415,7035) +(4415,7063) +(4415,7077) +(4414,7118) +(4413,7130) +(4409,7140) +(4407,7135) +(4408,7124) +(4407,7121) +(4409,7115) +(4409,7109) +(4405,7101) +(4403,7102) +(4402,7106) +(4400,7102) +(4397,7101) +(4394,7104) +(4392,7109) +(4386,7139) +(4384,7155) +(4384,7172) +(4380,7175) +(4380,7180) +(4376,7189) +(4374,7216) +(4372,7233) +(4373,7234) +(4374,7226) +(4376,7210) +(4377,7194) +(4378,7189) +(4380,7185) +(4381,7189) +(4379,7235) +(4378,7242) +(4376,7262) +(4378,7283) +(4378,7301) +(4377,7305) +(4378,7307) +(4378,7312) +(4377,7318) +(4375,7315) +(4373,7323) +(4372,7345) +(4369,7359) +(4367,7383) +(4364,7401) +(4363,7408) +(4365,7420) +(4365,7427) +(4363,7447) +(4358,7461) +(4358,7484) +(4355,7488) +(4352,7508) +(4347,7515) +(4345,7527) +(4341,7537) +(4340,7542) +(4340,7553) +(4336,7567) +(4337,7575) +(4341,7582) +(4334,7595) +(4331,7595) +(4328,7605) +(4321,7608) +(4311,7628) +(4306,7625) +(4295,7632) +(4284,7633) +(4283,7637) +(4289,7639) +(4305,7631) +(4310,7634) +(4314,7640) +(4318,7633) +(4320,7623) +(4324,7618) +(4337,7614) +(4343,7603) +(4344,7603) +(4344,7617) +(4344,7631) +(4341,7647) +(4341,7660) +(4335,7671) +(4335,7665) +(4334,7665) +(4334,7672) +(4331,7684) +(4321,7706) +(4318,7706) +(4314,7712) +(4313,7717) +(4307,7719) +(4304,7737) +(4308,7751) +(4320,7741) +(4321,7744) +(4312,7758) +(4308,7758) +(4303,7772) +(4303,7771) +(4304,7766) +(4306,7758) +(4303,7747) +(4302,7734) +(4299,7729) +(4296,7731) +(4296,7734) +(4296,7746) +(4295,7751) +(4292,7755) +(4290,7754) +(4288,7759) +(4280,7763) +(4277,7771) +(4276,7779) +(4273,7782) +(4268,7785) +(4267,7784) +(4265,7778) +(4266,7793) +(4265,7796) +(4263,7796) +(4265,7804) +(4259,7813) +(4258,7810) +(4256,7819) +(4256,7828) +(4253,7830) +(4252,7838) +(4253,7842) +(4257,7843) +(4258,7848) +(4250,7854) +(4246,7853) +(4245,7855) +(4244,7861) +(4245,7873) +(4253,7892) +(4266,7906) +(4268,7905) +(4269,7912) +(4270,7912) +(4271,7909) +(4272,7911) +(4274,7920) +(4273,7931) +(4274,7927) +(4275,7917) +(4278,7917) +(4301,7936) +(4313,7952) +(4317,7964) +(4310,7966) +(4306,7963) +(4304,7975) +(4294,7990) +(4288,8012) +(4283,8044) +(4282,8067) +(4284,8077) +(4282,8085) +(4278,8079) +(4276,8080) +(4281,8086) +(4285,8082) +(4285,8086) +(4289,8089) +(4292,8101) +(4292,8104) +(4290,8107) +(4292,8110) +(4293,8114) +(4292,8119) +(4292,8125) +(4294,8120) +(4294,8122) +(4297,8135) +(4298,8152) +(4297,8168) +(4295,8175) +(4294,8189) +(4291,8191) +(4290,8194) +(4288,8193) +(4291,8197) +(4292,8203) +(4290,8209) +(4288,8213) +(4287,8218) +(4285,8224) +(4284,8234) +(4282,8236) +(4282,8234) +(4281,8237) +(4282,8244) +(4282,8241) +(4281,8243) +(4281,8249) +(4279,8247) +(4277,8249) +(4277,8245) +(4276,8250) +(4274,8253) +(4277,8262) +(4275,8260) +(4275,8264) +(4273,8260) +(4273,8254) +(4272,8252) +(4271,8263) +(4267,8268) +(4267,8271) +(4269,8275) +(4268,8278) +(4267,8277) +(4266,8279) +(4268,8284) +(4271,8281) +(4272,8274) +(4271,8271) +(4272,8271) +(4273,8265) +(4274,8265) +(4275,8270) +(4273,8276) +(4273,8283) +(4274,8285) +(4274,8290) +(4276,8294) +(4278,8280) +(4279,8285) +(4279,8302) +(4280,8299) +(4281,8283) +(4280,8280) +(4282,8276) +(4283,8277) +(4282,8273) +(4283,8270) +(4284,8273) +(4287,8279) +(4294,8284) +(4297,8309) +(4295,8304) +(4294,8304) +(4293,8306) +(4292,8308) +(4293,8315) +(4295,8316) +(4296,8313) +(4299,8323) +(4295,8335) +(4294,8343) +(4288,8347) +(4287,8349) +(4286,8347) +(4285,8353) +(4285,8361) +(4288,8363) +(4290,8367) +(4289,8378) +(4288,8381) +(4287,8383) +(4289,8391) +(4288,8402) +(4290,8399) +(4292,8400) +(4295,8390) +(4300,8384) +(4307,8381) +(4311,8385) +(4311,8388) +(4312,8382) +(4315,8377) +(4317,8360) +(4317,8378) +(4320,8383) +(4324,8383) +(4330,8392) +(4330,8397) +(4328,8404) +(4330,8412) +(4332,8412) +(4334,8402) +(4334,8374) +(4331,8366) +(4330,8373) +(4330,8362) +(4331,8355) +(4329,8356) +(4328,8361) +(4328,8360) +(4330,8351) +(4334,8345) +(4340,8350) +(4345,8360) +(4345,8363) +(4350,8372) +(4350,8387) +(4349,8399) +(4348,8406) +(4349,8424) +(4350,8440) +(4352,8446) +(4352,8452) +(4354,8456) +(4355,8466) +(4355,8457) +(4361,8461) +(4367,8445) +(4368,8440) +(4372,8435) +(4374,8439) +(4371,8481) +(4366,8494) +(4364,8512) +(4362,8545) +(4362,8556) +(4361,8583) +(4361,8613) +(4359,8629) +(4359,8648) +(4358,8664) +(4356,8680) +(4354,8722) +(4350,8749) +(4347,8772) +(4344,8791) +(4341,8811) +(4340,8805) +(4341,8788) +(4340,8779) +(4341,8727) +(4340,8721) +(4344,8715) +(4345,8710) +(4344,8705) +(4346,8698) +(4344,8686) +(4336,8675) +(4333,8671) +(4337,8664) +(4338,8657) +(4336,8654) +(4336,8652) +(4336,8646) +(4333,8651) +(4330,8664) +(4330,8672) +(4331,8678) +(4334,8685) +(4334,8694) +(4336,8705) +(4338,8763) +(4339,8816) +(4335,8812) +(4322,8786) +(4312,8761) +(4311,8757) +(4316,8760) +(4322,8759) +(4322,8766) +(4328,8780) +(4329,8774) +(4330,8775) +(4330,8772) +(4330,8764) +(4327,8764) +(4324,8759) +(4326,8756) +(4329,8757) +(4329,8751) +(4331,8750) +(4332,8754) +(4334,8746) +(4335,8737) +(4333,8741) +(4333,8745) +(4325,8737) +(4321,8741) +(4322,8745) +(4321,8748) +(4316,8748) +(4315,8745) +(4315,8735) +(4312,8721) +(4315,8712) +(4316,8705) +(4318,8699) +(4315,8698) +(4313,8703) +(4311,8713) +(4310,8713) +(4307,8704) +(4307,8693) +(4304,8695) +(4300,8693) +(4302,8698) +(4300,8701) +(4302,8705) +(4301,8715) +(4299,8719) +(4304,8733) +(4303,8745) +(4306,8756) +(4307,8764) +(4312,8775) +(4314,8781) +(4325,8798) +(4339,8828) +(4340,8849) +(4339,8896) +(4338,8910) +(4336,8923) +(4333,8951) +(4330,8972) +(4327,8983) +(4317,9001) +(4313,9004) +(4310,8999) +(4309,8992) +(4306,8983) +(4306,8978) +(4309,8974) +(4314,8962) +(4313,8957) +(4312,8959) +(4311,8958) +(4309,8952) +(4306,8949) +(4306,8946) +(4309,8930) +(4306,8933) +(4305,8942) +(4302,8939) +(4302,8931) +(4300,8929) +(4300,8940) +(4302,8946) +(4300,8966) +(4299,8981) +(4300,8998) +(4295,9006) +(4294,9000) +(4296,9001) +(4296,8998) +(4294,8996) +(4292,8998) +(4290,8993) +(4288,8992) +(4290,9003) +(4291,9016) +(4290,9019) +(4291,9026) +(4290,9028) +(4291,9033) +(4290,9039) +(4287,9039) +(4284,9033) +(4280,9031) +(4279,9020) +(4277,9018) +(4276,9011) +(4273,9001) +(4272,9001) +(4273,9009) +(4276,9017) +(4276,9023) +(4280,9034) +(4283,9038) +(4283,9044) +(4282,9040) +(4276,9036) +(4280,9047) +(4282,9052) +(4284,9062) +(4282,9070) +(4281,9087) +(4278,9098) +(4275,9104) +(4271,9106) +(4260,9128) +(4259,9128) +(4259,9124) +(4258,9115) +(4259,9099) +(4259,9100) +(4256,9122) +(4253,9133) +(4251,9152) +(4247,9152) +(4250,9155) +(4250,9165) +(4250,9185) +(4251,9187) +(4251,9199) +(4252,9200) +(4253,9207) +(4252,9208) +(4253,9217) +(4251,9219) +(4256,9250) +(4258,9254) +(4258,9265) +(4262,9300) +(4263,9330) +(4260,9330) +(4258,9332) +(4264,9336) +(4266,9356) +(4265,9393) +(4266,9409) +(4263,9478) +(4257,9515) +(4249,9555) +(4240,9580) +(4237,9587) +(4225,9602) +(4217,9606) +(4214,9605) +(4212,9600) +(4208,9597) +(4207,9596) +(4208,9581) +(4206,9590) +(4206,9595) +(4202,9591) +(4200,9592) +(4197,9585) +(4194,9581) +(4190,9586) +(4190,9584) +(4188,9588) +(4184,9584) +(4188,9592) +(4182,9611) +(4183,9608) +(4184,9610) +(4182,9618) +(4179,9619) +(4181,9623) +(4181,9634) +(4179,9648) +(4178,9652) +(4178,9655) +(4175,9660) +(4168,9655) +(4158,9661) +(4154,9660) +(4150,9663) +(4146,9658) +(4144,9662) +(4143,9675) +(4139,9685) +(4135,9683) +(4127,9673) +(4121,9673) +(4114,9664) +(4113,9660) +(4114,9645) +(4112,9648) +(4111,9657) +(4112,9663) +(4113,9668) +(4121,9677) +(4122,9680) +(4124,9678) +(4128,9679) +(4135,9695) +(4141,9694) +(4144,9690) +(4150,9688) +(4153,9683) +(4157,9688) +(4160,9685) +(4160,9688) +(4161,9689) +(4163,9686) +(4165,9696) +(4169,9701) +(4170,9706) +(4172,9709) +(4171,9715) +(4172,9720) +(4175,9721) +(4177,9732) +(4178,9730) +(4179,9732) +(4179,9738) +(4182,9740) +(4180,9746) +(4181,9756) +(4179,9763) +(4179,9770) +(4183,9793) +(4181,9816) +(4182,9825) +(4186,9841) +(4185,9846) +(4183,9849) +(4178,9863) +(4176,9872) +(4175,9885) +(4175,9938) +(4174,9950) +(4171,9968) +(4171,9999) +(4171,10002) +(4170,10001) +(4169,10012) +(4174,10030) +(4185,10059) +(4187,10067) +(4183,10075) +(4183,10084) +(4179,10075) +(4173,10095) +(4163,10092) +(4157,10094) +(4154,10097) +(4153,10105) +(4152,10124) +(4146,10148) +(4146,10155) +(4145,10162) +(4139,10166) +(4130,10167) +(4127,10175) +(4127,10187) +(4129,10221) +(4128,10230) +(4125,10237) +(4128,10232) +(4129,10234) +(4130,10226) +(4132,10227) +(4135,10240) +(4128,10242) +(4130,10244) +(4136,10241) +(4139,10254) +(4142,10257) +(4143,10259) +(4141,10263) +(4142,10270) +(4143,10262) +(4149,10258) +(4150,10253) +(4154,10256) +(4158,10255) +(4163,10245) +(4167,10244) +(4168,10241) +(4172,10240) +(4176,10235) +(4176,10228) +(4175,10215) +(4176,10210) +(4177,10207) +(4180,10209) +(4184,10217) +(4185,10230) +(4187,10234) +(4188,10233) +(4193,10234) +(4196,10231) +(4204,10234) +(4206,10232) +(4207,10224) +(4208,10228) +(4206,10248) +(4204,10283) +(4200,10316) +(4199,10329) +(4198,10350) +(4199,10364) +(4194,10370) +(4192,10382) +(4191,10390) +(4189,10393) +(4187,10390) +(4187,10393) +(4187,10402) +(4189,10408) +(4191,10408) +(4192,10404) +(4195,10396) +(4194,10392) +(4193,10390) +(4194,10390) +(4196,10393) +(4197,10408) +(4193,10422) +(4192,10421) +(4190,10425) +(4193,10426) +(4191,10434) +(4193,10442) +(4193,10459) +(4192,10467) +(4191,10503) +(4193,10523) +(4192,10509) +(4191,10509) +(4191,10518) +(4191,10526) +(4193,10531) +(4194,10543) +(4193,10550) +(4193,10567) +(4188,10577) +(4187,10574) +(4185,10590) +(4180,10604) +(4178,10622) +(4176,10647) +(4173,10661) +(4173,10656) +(4172,10659) +(4172,10664) +(4170,10674) +(4168,10685) +(4166,10694) +(4168,10698) +(4168,10695) +(4169,10700) +(4168,10709) +(4161,10740) +(4159,10744) +(4159,10733) +(4161,10731) +(4162,10721) +(4163,10720) +(4158,10720) +(4157,10723) +(4158,10733) +(4157,10740) +(4158,10744) +(4156,10757) +(4153,10761) +(4140,10797) +(4140,10790) +(4147,10774) +(4145,10775) +(4144,10779) +(4141,10780) +(4139,10785) +(4139,10800) +(3904,10800) +(3901,10788) +(3896,10781) +(3889,10769) +(3889,10767) +(3889,10765) +(3888,10755) +(3887,10749) +(3876,10717) +(3875,10710) +(3877,10710) +(3878,10722) +(3880,10725) +(3882,10724) +(3879,10695) +(3879,10696) +(3881,10695) +(3881,10685) +(3880,10680) +(3882,10675) +(3882,10667) +(3883,10657) +(3885,10658) +(3887,10653) +(3887,10649) +(3889,10650) +(3889,10645) +(3890,10643) +(3891,10649) +(3895,10646) +(3896,10635) +(3901,10630) +(3905,10614) +(3901,10595) +(3905,10585) +(3905,10583) +(3903,10583) +(3903,10578) +(3902,10580) +(3902,10586) +(3900,10590) +(3900,10594) +(3900,10602) +(3902,10609) +(3903,10613) +(3902,10618) +(3900,10620) +(3899,10624) +(3895,10633) +(3893,10635) +(3891,10633) +(3890,10638) +(3889,10637) +(3887,10631) +(3886,10622) +(3887,10620) +(3888,10616) +(3891,10613) +(3891,10607) +(3892,10605) +(3892,10598) +(3889,10592) +(3888,10586) +(3891,10584) +(3895,10571) +(3895,10565) +(3897,10564) +(3894,10556) +(3892,10556) +(3890,10552) +(3887,10543) +(3887,10533) +(3886,10523) +(3885,10519) +(3886,10514) +(3885,10509) +(3886,10503) +(3881,10486) +(3881,10482) +(3881,10466) +(3880,10471) +(3880,10479) +(3880,10486) +(3884,10503) +(3884,10517) +(3885,10529) +(3885,10542) +(3887,10550) +(3894,10562) +(3892,10572) +(3890,10574) +(3889,10577) +(3886,10578) +(3883,10585) +(3879,10579) +(3878,10569) +(3872,10567) +(3874,10568) +(3877,10573) +(3877,10580) +(3881,10587) +(3881,10590) +(3877,10602) +(3874,10604) +(3876,10610) +(3878,10611) +(3882,10619) +(3883,10629) +(3887,10640) +(3885,10649) +(3879,10647) +(3873,10642) +(3866,10645) +(3858,10660) +(3855,10669) +(3853,10677) +(3852,10686) +(3852,10691) +(3854,10686) +(3855,10685) +(3857,10692) +(3861,10697) +(3865,10694) +(3866,10692) +(3864,10691) +(3867,10691) +(3856,10702) +(3850,10706) +(3842,10715) +(3844,10711) +(3844,10708) +(3842,10704) +(3840,10703) +(3839,10709) +(3838,10703) +(3838,10705) +(3838,10712) +(3837,10715) +(3837,10719) +(3840,10718) +(3834,10722) +(3818,10726) +(3819,10723) +(3820,10716) +(3817,10719) +(3817,10723) +(3816,10723) +(3815,10718) +(3817,10717) +(3818,10711) +(3817,10712) +(3815,10710) +(3816,10708) +(3817,10708) +(3818,10701) +(3815,10696) +(3814,10696) +(3811,10702) +(3811,10704) +(3814,10708) +(3815,10711) +(3814,10720) +(3814,10723) +(3809,10723) +(3807,10719) +(3806,10718) +(3805,10715) +(3803,10721) +(3804,10726) +(3806,10730) +(3812,10725) +(3815,10725) +(3815,10727) +(3810,10728) +(3799,10740) +(3804,10730) +(3803,10728) +(3801,10729) +(3800,10730) +(3800,10734) +(3798,10736) +(3797,10743) +(3794,10748) +(3794,10752) +(3793,10756) +(3789,10765) +(3783,10764) +(3784,10762) +(3783,10758) +(3781,10755) +(3780,10754) +(3774,10759) +(3772,10770) +(3765,10776) +(3762,10776) +(3760,10773) +(3757,10774) +(3757,10766) +(3752,10764) +(3750,10761) +(3750,10751) +(3748,10746) +(3745,10749) +(3740,10749) +(3737,10746) +(3737,10744) +(3741,10738) +(3749,10697) +(3753,10682) +(3754,10663) +(3755,10638) +(3755,10640) +(3757,10636) +(3761,10640) +(3764,10639) +(3766,10640) +(3766,10644) +(3766,10646) +(3767,10645) +(3769,10647) +(3768,10640) +(3764,10635) +(3763,10636) +(3762,10632) +(3763,10628) +(3767,10629) +(3770,10622) +(3771,10622) +(3772,10619) +(3767,10620) +(3766,10623) +(3763,10618) +(3762,10616) +(3760,10616) +(3757,10621) +(3755,10623) +(3755,10630) +(3754,10636) +(3752,10611) +(3750,10601) +(3751,10601) +(3752,10603) +(3752,10601) +(3749,10596) +(3748,10596) +(3748,10598) +(3744,10585) +(3739,10577) +(3734,10548) +(3730,10532) +(3724,10518) +(3727,10524) +(3726,10518) +(3730,10516) +(3723,10515) +(3721,10510) +(3716,10489) +(3715,10486) +(3716,10488) +(3717,10487) +(3717,10482) +(3719,10476) +(3717,10477) +(3713,10484) +(3712,10482) +(3710,10476) +(3708,10467) +(3709,10462) +(3710,10463) +(3711,10461) +(3708,10457) +(3709,10451) +(3708,10449) +(3709,10452) +(3709,10451) +(3710,10444) +(3710,10445) +(3709,10440) +(3707,10442) +(3707,10446) +(3705,10441) +(3703,10439) +(3702,10435) +(3699,10428) +(3701,10429) +(3702,10422) +(3705,10417) +(3705,10414) +(3699,10408) +(3693,10409) +(3693,10401) +(3691,10397) +(3688,10398) +(3686,10393) +(3683,10385) +(3685,10379) +(3687,10377) +(3687,10375) +(3688,10373) +(3686,10363) +(3682,10374) +(3678,10377) +(3677,10371) +(3680,10360) +(3676,10366) +(3674,10360) +(3672,10359) +(3671,10353) +(3674,10341) +(3670,10342) +(3668,10346) +(3667,10339) +(3668,10335) +(3666,10338) +(3666,10343) +(3665,10345) +(3664,10346) +(3665,10349) +(3663,10349) +(3661,10343) +(3661,10337) +(3661,10333) +(3664,10329) +(3666,10321) +(3662,10327) +(3661,10330) +(3658,10332) +(3657,10331) +(3656,10327) +(3652,10324) +(3651,10321) +(3653,10319) +(3655,10320) +(3657,10317) +(3651,10317) +(3650,10311) +(3651,10304) +(3649,10300) +(3648,10292) +(3646,10297) +(3645,10298) +(3643,10289) +(3641,10285) +(3644,10288) +(3647,10284) +(3643,10284) +(3641,10282) +(3638,10282) +(3633,10271) +(3634,10265) +(3632,10260) +(3630,10251) +(3632,10245) +(3630,10245) +(3630,10248) +(3627,10247) +(3625,10239) +(3626,10237) +(3627,10236) +(3627,10231) +(3626,10231) +(3626,10235) +(3623,10237) +(3622,10236) +(3621,10239) +(3620,10240) +(3616,10230) +(3613,10228) +(3598,10224) +(3595,10215) +(3599,10206) +(3601,10207) +(3602,10205) +(3604,10196) +(3611,10190) +(3613,10191) +(3614,10198) +(3615,10193) +(3614,10189) +(3617,10185) +(3625,10182) +(3626,10176) +(3628,10174) +(3628,10172) +(3633,10155) +(3634,10156) +(3633,10160) +(3634,10162) +(3637,10157) +(3637,10153) +(3635,10152) +(3635,10148) +(3634,10149) +(3634,10142) +(3633,10135) +(3634,10126) +(3633,10120) +(3636,10109) +(3636,10100) +(3635,10091) +(3632,10078) +(3631,10069) +(3633,10066) +(3632,10065) +(3629,10066) +(3628,10061) +(3627,10057) +(3626,10052) +(3628,10049) +(3626,10048) +(3625,10047) +(3628,10040) +(3624,10042) +(3625,10037) +(3623,10038) +(3622,10038) +(3621,10031) +(3623,10027) +(3625,10024) +(3626,10021) +(3619,10023) +(3618,10014) +(3617,10016) +(3615,10016) +(3613,10010) +(3600,9993) +(3591,9978) +(3589,9967) +(3590,9966) +(3595,9966) +(3598,9969) +(3601,9968) +(3607,9970) +(3610,9975) +(3612,9977) +(3615,9976) +(3620,9976) +(3624,9974) +(3623,9976) +(3624,9980) +(3627,9981) +(3629,9984) +(3630,9983) +(3628,9979) +(3629,9978) +(3629,9973) +(3626,9960) +(3623,9955) +(3622,9957) +(3625,9963) +(3627,9972) +(3626,9963) +(3623,9959) +(3620,9951) +(3617,9946) +(3615,9939) +(3613,9931) +(3613,9927) +(3615,9926) +(3611,9926) +(3608,9917) +(3606,9915) +(3605,9912) +(3608,9909) +(3609,9911) +(3610,9911) +(3608,9907) +(3607,9903) +(3608,9900) +(3605,9900) +(3604,9903) +(3605,9904) +(3605,9907) +(3602,9909) +(3599,9913) +(3598,9909) +(3590,9900) +(3589,9895) +(3587,9889) +(3589,9886) +(3591,9887) +(3596,9884) +(3602,9876) +(3605,9872) +(3607,9867) +(3604,9861) +(3605,9859) +(3603,9859) +(3601,9862) +(3600,9861) +(3599,9858) +(3598,9850) +(3595,9846) +(3591,9851) +(3592,9843) +(3594,9842) +(3595,9846) +(3600,9852) +(3599,9847) +(3602,9842) +(3602,9834) +(3601,9831) +(3602,9832) +(3603,9830) +(3603,9829) +(3603,9824) +(3602,9818) +(3601,9817) +(3599,9819) +(3598,9821) +(3598,9823) +(3599,9828) +(3593,9821) +(3594,9810) +(3591,9807) +(3589,9802) +(3577,9803) +(3575,9800) +(3575,9796) +(3574,9790) +(3573,9792) +(3570,9790) +(3566,9798) +(3563,9800) +(3555,9797) +(3555,9794) +(3558,9797) +(3557,9792) +(3558,9790) +(3556,9785) +(3554,9784) +(3552,9785) +(3552,9784) +(3551,9787) +(3549,9791) +(3543,9792) +(3542,9789) +(3545,9790) +(3547,9784) +(3548,9784) +(3550,9781) +(3549,9779) +(3550,9777) +(3548,9776) +(3548,9773) +(3542,9780) +(3542,9783) +(3539,9782) +(3537,9779) +(3536,9771) +(3537,9775) +(3539,9773) +(3534,9768) +(3532,9760) +(3530,9763) +(3532,9763) +(3531,9766) +(3532,9767) +(3530,9766) +(3525,9751) +(3520,9744) +(3507,9728) +(3484,9716) +(3482,9716) +(3474,9722) +(3471,9726) +(3468,9735) +(3467,9746) +(3464,9744) +(3463,9740) +(3461,9740) +(3461,9742) +(3466,9749) +(3472,9748) +(3475,9750) +(3477,9753) +(3477,9759) +(3478,9762) +(3476,9766) +(3475,9771) +(3471,9780) +(3471,9792) +(3466,9796) +(3465,9797) +(3460,9792) +(3458,9793) +(3456,9792) +(3455,9787) +(3449,9783) +(3446,9771) +(3441,9764) +(3441,9766) +(3433,9765) +(3423,9770) +(3413,9767) +(3407,9767) +(3404,9771) +(3402,9775) +(3404,9780) +(3405,9785) +(3404,9787) +(3404,9793) +(3402,9795) +(3398,9793) +(3394,9795) +(3393,9794) +(3389,9796) +(3387,9794) +(3383,9799) +(3379,9800) +(3378,9799) +(3375,9800) +(3372,9801) +(3367,9788) +(3362,9783) +(3361,9782) +(3362,9773) +(3366,9765) +(3369,9762) +(3373,9755) +(3373,9751) +(3374,9756) +(3376,9760) +(3381,9763) +(3382,9771) +(3384,9775) +(3386,9776) +(3388,9784) +(3391,9786) +(3393,9779) +(3391,9776) +(3387,9776) +(3386,9774) +(3389,9765) +(3389,9762) +(3389,9758) +(3385,9754) +(3386,9751) +(3384,9748) +(3384,9744) +(3383,9744) +(3380,9749) +(3376,9754) +(3374,9751) +(3374,9749) +(3372,9746) +(3370,9733) +(3366,9726) +(3364,9722) +(3361,9723) +(3357,9721) +(3352,9716) +(3348,9715) +(3343,9709) +(3338,9705) +(3329,9703) +(3322,9703) +(3308,9709) +(3307,9710) +(3304,9713) +(3301,9718) +(3294,9724) +(3292,9729) +(3290,9729) +(3289,9726) +(3286,9727) +(3282,9720) +(3279,9719) +(3275,9709) +(3270,9704) +(3271,9697) +(3270,9691) +(3271,9688) +(3269,9678) +(3271,9674) +(3273,9673) +(3275,9671) +(3275,9667) +(3273,9651) +(3272,9643) +(3271,9643) +(3262,9624) +(3255,9615) +(3252,9606) +(3247,9599) +(3244,9599) +(3239,9594) +(3231,9591) +(3225,9590) +(3221,9592) +(3219,9589) +(3215,9595) +(3220,9592) +(3220,9594) +(3214,9598) +(3211,9598) +(3208,9596) +(3211,9591) +(3212,9589) +(3211,9588) +(3210,9589) +(3209,9588) +(3209,9591) +(3204,9593) +(3203,9596) +(3200,9595) +(3200,9598) +(3198,9598) +(3196,9595) +(3192,9598) +(3196,9598) +(3196,9601) +(3186,9603) +(3186,9598) +(3189,9596) +(3193,9586) +(3195,9587) +(3197,9589) +(3196,9586) +(3194,9583) +(3196,9577) +(3194,9569) +(3189,9563) +(3190,9557) +(3185,9542) +(3181,9535) +(3173,9523) +(3177,9520) +(3179,9521) +(3181,9518) +(3183,9516) +(3184,9512) +(3182,9510) +(3181,9506) +(3180,9505) +(3178,9507) +(3177,9505) +(3174,9507) +(3175,9509) +(3174,9512) +(3176,9509) +(3177,9511) +(3176,9518) +(3174,9519) +(3172,9516) +(3171,9518) +(3169,9515) +(3170,9513) +(3167,9514) +(3167,9510) +(3165,9509) +(3165,9510) +(3164,9514) +(3163,9516) +(3159,9514) +(3157,9512) +(3159,9505) +(3157,9507) +(3156,9506) +(3154,9511) +(3151,9511) +(3150,9510) +(3149,9512) +(3148,9508) +(3146,9508) +(3145,9505) +(3146,9512) +(3143,9514) +(3141,9510) +(3140,9513) +(3138,9513) +(3136,9511) +(3136,9505) +(3134,9506) +(3133,9503) +(3131,9506) +(3127,9502) +(3128,9500) +(3127,9499) +(3124,9500) +(3122,9497) +(3116,9497) +(3114,9491) +(3108,9487) +(3106,9481) +(3103,9479) +(3100,9475) +(3098,9475) +(3098,9473) +(3094,9466) +(3093,9461) +(3089,9452) +(3086,9449) +(3084,9451) +(3083,9448) +(3081,9448) +(3080,9441) +(3074,9435) +(3072,9433) +(3072,9429) +(3064,9417) +(3061,9409) +(3057,9407) +(3053,9402) +(3053,9399) +(3059,9405) +(3064,9405) +(3066,9402) +(3071,9402) +(3074,9400) +(3075,9398) +(3076,9394) +(3079,9391) +(3085,9391) +(3088,9389) +(3091,9388) +(3105,9390) +(3116,9390) +(3137,9384) +(3151,9377) +(3150,9382) +(3147,9382) +(3149,9386) +(3151,9386) +(3151,9381) +(3153,9378) +(3154,9376) +(3171,9366) +(3175,9366) +(3178,9366) +(3181,9366) +(3184,9365) +(3186,9365) +(3190,9364) +(3194,9363) +(3197,9363) +(3200,9362) +(3203,9361) +(3207,9360) +(3210,9360) +(3213,9359) +(3217,9358) +(3220,9358) +(3223,9357) +(3226,9357) +(3230,9355) +(3231,9356) +(3235,9354) +(3238,9353) +(3242,9353) +(3245,9352) +(3248,9351) +(3251,9348) +(3254,9347) +(3258,9346) +(3261,9345) +(3264,9344) +(3267,9343) +(3271,9342) +(3274,9341) +(3277,9340) +(3281,9340) +(3284,9339) +(3287,9338) +(3289,9339) +(3295,9336) +(3308,9334) +(3320,9333) +(3334,9335) +(3337,9337) +(3355,9339) +(3363,9341) +(3366,9343) +(3366,9346) +(3368,9344) +(3396,9356) +(3400,9357) +(3409,9367) +(3411,9370) +(3410,9370) +(3406,9364) +(3403,9364) +(3407,9368) +(3409,9372) +(3411,9372) +(3417,9387) +(3421,9391) +(3425,9392) +(3426,9393) +(3424,9399) +(3422,9400) +(3425,9403) +(3427,9402) +(3446,9419) +(3452,9419) +(3459,9416) +(3464,9411) +(3464,9405) +(3468,9412) +(3469,9414) +(3471,9419) +(3468,9424) +(3466,9430) +(3466,9440) +(3467,9446) +(3469,9450) +(3473,9454) +(3477,9455) +(3479,9458) +(3481,9459) +(3481,9463) +(3479,9468) +(3479,9475) +(3479,9483) +(3481,9493) +(3480,9496) +(3477,9500) +(3478,9501) +(3480,9498) +(3482,9497) +(3482,9494) +(3496,9520) +(3505,9542) +(3507,9546) +(3511,9549) +(3508,9554) +(3512,9551) +(3520,9564) +(3521,9569) +(3523,9570) +(3528,9577) +(3530,9577) +(3532,9583) +(3537,9585) +(3541,9584) +(3543,9587) +(3545,9587) +(3550,9594) +(3554,9603) +(3559,9612) +(3561,9620) +(3567,9627) +(3573,9629) +(3577,9652) +(3583,9658) +(3586,9666) +(3591,9675) +(3603,9688) +(3604,9690) +(3604,9695) +(3606,9698) +(3607,9703) +(3610,9709) +(3615,9716) +(3619,9715) +(3620,9715) +(3619,9712) +(3625,9715) +(3629,9727) +(3632,9732) +(3633,9744) +(3637,9750) +(3636,9757) +(3639,9766) +(3646,9773) +(3647,9781) +(3646,9785) +(3647,9787) +(3648,9786) +(3649,9791) +(3649,9798) +(3648,9798) +(3645,9796) +(3643,9799) +(3645,9798) +(3650,9804) +(3652,9814) +(3652,9822) +(3656,9825) +(3660,9811) +(3660,9808) +(3661,9808) +(3663,9811) +(3664,9816) +(3667,9816) +(3669,9818) +(3674,9836) +(3678,9837) +(3680,9841) +(3682,9841) +(3686,9838) +(3687,9831) +(3685,9827) +(3687,9825) +(3694,9830) +(3698,9831) +(3701,9841) +(3707,9844) +(3710,9842) +(3713,9844) +(3719,9843) +(3722,9846) +(3726,9844) +(3729,9846) +(3732,9845) +(3736,9847) +(3740,9854) +(3742,9864) +(3745,9866) +(3747,9871) +(3748,9875) +(3748,9883) +(3745,9895) +(3745,9905) +(3743,9914) +(3739,9917) +(3739,9920) +(3744,9914) +(3747,9905) +(3748,9908) +(3749,9921) +(3747,9928) +(3746,9937) +(3747,9939) +(3750,9919) +(3751,9902) +(3753,9895) +(3755,9882) +(3761,9875) +(3763,9862) +(3761,9856) +(3759,9837) +(3756,9835) +(3757,9824) +(3754,9809) +(3753,9796) +(3751,9793) +(3748,9793) +(3747,9790) +(3746,9793) +(3744,9794) +(3743,9799) +(3741,9801) +(3740,9794) +(3738,9793) +(3738,9790) +(3737,9787) +(3732,9785) +(3727,9788) +(3726,9785) +(3724,9790) +(3721,9786) +(3719,9786) +(3718,9782) +(3716,9780) +(3715,9783) +(3708,9777) +(3707,9779) +(3705,9794) +(3703,9798) +(3701,9799) +(3700,9797) +(3699,9792) +(3697,9793) +(3698,9788) +(3697,9786) +(3696,9784) +(3693,9785) +(3691,9780) +(3695,9777) +(3695,9773) +(3697,9774) +(3698,9771) +(3700,9776) +(3703,9771) +(3703,9768) +(3701,9759) +(3700,9758) +(3698,9762) +(3698,9765) +(3696,9765) +(3697,9760) +(3700,9752) +(3700,9744) +(3698,9741) +(3697,9737) +(3695,9737) +(3694,9733) +(3692,9733) +(3688,9725) +(3687,9723) +(3685,9722) +(3683,9716) +(3686,9713) +(3681,9712) +(3683,9708) +(3678,9705) +(3676,9699) +(3676,9694) +(3674,9697) +(3672,9694) +(3672,9688) +(3670,9685) +(3668,9686) +(3665,9678) +(3664,9673) +(3660,9670) +(3658,9662) +(3655,9657) +(3655,9654) +(3648,9649) +(3644,9648) +(3647,9640) +(3644,9637) +(3644,9635) +(3645,9634) +(3643,9627) +(3644,9624) +(3645,9625) +(3645,9623) +(3643,9620) +(3642,9621) +(3640,9617) +(3638,9616) +(3635,9608) +(3641,9607) +(3641,9611) +(3643,9611) +(3644,9613) +(3647,9613) +(3650,9610) +(3651,9614) +(3654,9614) +(3655,9618) +(3654,9619) +(3655,9621) +(3657,9620) +(3660,9624) +(3662,9623) +(3663,9626) +(3664,9621) +(3663,9610) +(3659,9596) +(3657,9595) +(3656,9587) +(3659,9588) +(3662,9594) +(3666,9596) +(3667,9599) +(3669,9596) +(3671,9597) +(3673,9594) +(3675,9595) +(3676,9591) +(3675,9585) +(3678,9590) +(3679,9591) +(3677,9596) +(3679,9600) +(3678,9595) +(3680,9593) +(3682,9597) +(3683,9597) +(3684,9598) +(3683,9602) +(3685,9602) +(3687,9605) +(3688,9601) +(3691,9605) +(3691,9610) +(3694,9614) +(3695,9613) +(3698,9614) +(3700,9617) +(3702,9614) +(3706,9622) +(3709,9621) +(3711,9622) +(3712,9621) +(3714,9622) +(3715,9620) +(3717,9621) +(3717,9620) +(3713,9609) +(3713,9606) +(3709,9598) +(3707,9595) +(3703,9590) +(3704,9585) +(3702,9583) +(3703,9580) +(3702,9580) +(3700,9572) +(3701,9569) +(3703,9569) +(3709,9572) +(3709,9570) +(3706,9567) +(3710,9560) +(3711,9563) +(3713,9562) +(3715,9552) +(3713,9533) +(3711,9530) +(3709,9531) +(3710,9518) +(3707,9511) +(3709,9507) +(3709,9499) +(3705,9487) +(3704,9482) +(3707,9474) +(3708,9449) +(3706,9442) +(3702,9442) +(3703,9437) +(3702,9429) +(3699,9421) +(3696,9419) +(3692,9412) +(3692,9402) +(3685,9398) +(3680,9400) +(3677,9398) +(3673,9400) +(3673,9395) +(3671,9385) +(3661,9366) +(3653,9355) +(3651,9354) +(3643,9354) +(3644,9349) +(3640,9342) +(3639,9339) +(3637,9333) +(3635,9331) +(3635,9329) +(3632,9329) +(3631,9327) +(3631,9325) +(3632,9323) +(3631,9320) +(3628,9311) +(3625,9308) +(3624,9305) +(3621,9296) +(3616,9288) +(3603,9272) +(3595,9268) +(3593,9269) +(3591,9264) +(3593,9266) +(3594,9264) +(3593,9254) +(3583,9254) +(3575,9262) +(3575,9258) +(3579,9253) +(3573,9248) +(3571,9244) +(3568,9246) +(3567,9248) +(3567,9257) +(3569,9261) +(3571,9261) +(3572,9263) +(3570,9264) +(3568,9263) +(3565,9266) +(3566,9270) +(3570,9265) +(3573,9265) +(3572,9274) +(3573,9278) +(3569,9285) +(3569,9290) +(3567,9291) +(3569,9294) +(3570,9298) +(3564,9304) +(3562,9311) +(3557,9308) +(3555,9311) +(3553,9308) +(3550,9311) +(3552,9304) +(3551,9300) +(3552,9286) +(3550,9284) +(3547,9286) +(3548,9282) +(3548,9279) +(3552,9271) +(3553,9267) +(3552,9260) +(3551,9259) +(3547,9261) +(3547,9258) +(3545,9256) +(3546,9249) +(3543,9242) +(3545,9234) +(3550,9228) +(3551,9220) +(3553,9224) +(3555,9224) +(3556,9225) +(3552,9215) +(3553,9211) +(3555,9202) +(3553,9199) +(3549,9199) +(3548,9196) +(3548,9199) +(3545,9198) +(3546,9189) +(3544,9179) +(3537,9173) +(3534,9174) +(3536,9169) +(3534,9163) +(3537,9158) +(3537,9153) +(3540,9148) +(3541,9144) +(3542,9144) +(3543,9141) +(3541,9141) +(3540,9132) +(3539,9127) +(3535,9127) +(3534,9125) +(3531,9094) +(3532,9087) +(3530,9079) +(3535,9077) +(3537,9073) +(3541,9071) +(3542,9068) +(3547,9064) +(3545,9070) +(3547,9080) +(3549,9082) +(3550,9084) +(3550,9097) +(3549,9100) +(3548,9103) +(3549,9108) +(3549,9112) +(3549,9123) +(3552,9130) +(3552,9137) +(3554,9137) +(3556,9130) +(3558,9128) +(3557,9125) +(3556,9119) +(3558,9112) +(3558,9102) +(3559,9100) +(3561,9103) +(3563,9100) +(3566,9100) +(3569,9096) +(3570,9089) +(3573,9087) +(3574,9084) +(3576,9082) +(3576,9080) +(3574,9078) +(3574,9074) +(3575,9066) +(3574,9054) +(3573,9052) +(3570,9056) +(3569,9055) +(3568,9056) +(3567,9052) +(3567,9041) +(3568,9041) +(3569,9044) +(3570,9043) +(3571,9040) +(3569,9026) +(3571,9030) +(3573,9044) +(3574,9044) +(3573,9031) +(3575,9026) +(3576,9027) +(3577,9025) +(3577,9021) +(3579,9016) +(3579,9008) +(3582,9002) +(3586,8977) +(3585,8962) +(3586,8961) +(3585,8959) +(3584,8961) +(3584,8960) +(3581,8951) +(3579,8946) +(3578,8942) +(3577,8942) +(3575,8946) +(3573,8945) +(3572,8951) +(3570,8953) +(3568,8953) +(3570,8947) +(3567,8938) +(3568,8937) +(3568,8934) +(3569,8931) +(3571,8930) +(3572,8933) +(3573,8931) +(3569,8925) +(3567,8922) +(3563,8922) +(3562,8927) +(3564,8932) +(3561,8932) +(3563,8935) +(3564,8935) +(3563,8938) +(3559,8935) +(3555,8937) +(3554,8934) +(3555,8932) +(3557,8928) +(3555,8926) +(3554,8923) +(3556,8921) +(3555,8913) +(3556,8905) +(3556,8904) +(3558,8904) +(3560,8902) +(3561,8904) +(3563,8902) +(3565,8893) +(3563,8870) +(3561,8867) +(3558,8870) +(3557,8869) +(3556,8862) +(3558,8860) +(3558,8856) +(3557,8853) +(3555,8853) +(3554,8849) +(3559,8838) +(3559,8830) +(3562,8820) +(3561,8812) +(3562,8804) +(3565,8800) +(3568,8792) +(3567,8788) +(3563,8779) +(3556,8779) +(3552,8781) +(3551,8779) +(3552,8771) +(3549,8762) +(3549,8757) +(3553,8756) +(3553,8751) +(3556,8748) +(3560,8752) +(3561,8755) +(3565,8755) +(3564,8750) +(3565,8749) +(3563,8746) +(3565,8740) +(3566,8740) +(3565,8737) +(3563,8719) +(3565,8717) +(3565,8715) +(3563,8704) +(3563,8696) +(3563,8686) +(3563,8688) +(3564,8686) +(3564,8677) +(3563,8678) +(3562,8681) +(3562,8665) +(3563,8667) +(3564,8663) +(3564,8659) +(3563,8657) +(3565,8643) +(3565,8634) +(3564,8627) +(3560,8612) +(3560,8606) +(3562,8600) +(3563,8592) +(3562,8588) +(3561,8589) +(3554,8555) +(3547,8535) +(3538,8519) +(3529,8510) +(3521,8502) +(3519,8497) +(3511,8480) +(3509,8473) +(3508,8465) +(3498,8447) +(3494,8441) +(3485,8437) +(3476,8431) +(3469,8430) +(3468,8425) +(3465,8421) +(3466,8417) +(3463,8403) +(3459,8396) +(3451,8390) +(3449,8382) +(3447,8376) +(3443,8374) +(3439,8369) +(3439,8364) +(3438,8362) +(3436,8350) +(3429,8344) +(3428,8344) +(3429,8338) +(3428,8337) +(3424,8338) +(3421,8334) +(3423,8329) +(3421,8329) +(3420,8325) +(3419,8318) +(3412,8315) +(3411,8309) +(3404,8304) +(3403,8298) +(3401,8298) +(3400,8296) +(3398,8296) +(3398,8293) +(3394,8287) +(3390,8289) +(3389,8295) +(3386,8294) +(3387,8290) +(3387,8285) +(3384,8284) +(3383,8281) +(3383,8275) +(3378,8273) +(3375,8271) +(3374,8266) +(3372,8266) +(3370,8264) +(3369,8264) +(3367,8254) +(3363,8247) +(3361,8247) +(3360,8246) +(3358,8246) +(3357,8244) +(3356,8245) +(3358,8242) +(3358,8240) +(3356,8238) +(3353,8230) +(3348,8224) +(3348,8219) +(3346,8214) +(3343,8209) +(3339,8207) +(3339,8205) +(3340,8201) +(3338,8196) +(3338,8193) +(3335,8191) +(3335,8186) +(3332,8181) +(3326,8178) +(3321,8171) +(3318,8168) +(3318,8164) +(3315,8157) +(3312,8152) +(3312,8148) +(3308,8143) +(3307,8133) +(3296,8113) +(3292,8109) +(3288,8110) +(3283,8116) +(3282,8114) +(3283,8120) +(3281,8128) +(3280,8140) +(3275,8142) +(3274,8144) +(3274,8160) +(3276,8166) +(3277,8173) +(3276,8177) +(3275,8192) +(3279,8197) +(3281,8200) +(3278,8199) +(3277,8202) +(3279,8206) +(3279,8209) +(3276,8209) +(3275,8213) +(3271,8209) +(3269,8210) +(3268,8209) +(3266,8210) +(3265,8209) +(3266,8206) +(3265,8204) +(3261,8206) +(3259,8209) +(3257,8205) +(3255,8209) +(3253,8205) +(3249,8209) +(3245,8206) +(3243,8206) +(3241,8202) +(3236,8199) +(3229,8201) +(3226,8207) +(3227,8209) +(3230,8211) +(3231,8217) +(3231,8222) +(3229,8225) +(3228,8227) +(3232,8232) +(3242,8237) +(3242,8230) +(3248,8224) +(3251,8230) +(3253,8231) +(3253,8235) +(3256,8237) +(3257,8242) +(3258,8243) +(3259,8249) +(3258,8252) +(3258,8257) +(3258,8259) +(3259,8261) +(3259,8264) +(3258,8264) +(3254,8257) +(3251,8255) +(3249,8251) +(3248,8251) +(3247,8249) +(3245,8249) +(3245,8247) +(3248,8247) +(3249,8245) +(3247,8238) +(3243,8238) +(3242,8246) +(3238,8254) +(3237,8256) +(3238,8260) +(3236,8265) +(3238,8272) +(3234,8267) +(3233,8262) +(3230,8256) +(3227,8256) +(3226,8253) +(3223,8254) +(3221,8250) +(3220,8249) +(3220,8241) +(3217,8237) +(3216,8233) +(3215,8232) +(3214,8233) +(3212,8239) +(3211,8243) +(3212,8249) +(3213,8261) +(3214,8274) +(3218,8281) +(3220,8288) +(3224,8297) +(3234,8301) +(3240,8315) +(3239,8315) +(3236,8314) +(3232,8315) +(3229,8314) +(3221,8302) +(3219,8301) +(3216,8301) +(3214,8294) +(3212,8295) +(3209,8293) +(3211,8295) +(3211,8297) +(3211,8307) +(3214,8313) +(3220,8317) +(3230,8322) +(3231,8321) +(3234,8321) +(3237,8325) +(3241,8327) +(3244,8327) +(3246,8326) +(3244,8320) +(3250,8324) +(3252,8323) +(3254,8325) +(3256,8323) +(3258,8319) +(3259,8324) +(3254,8340) +(3251,8360) +(3255,8378) +(3259,8385) +(3258,8389) +(3254,8387) +(3253,8389) +(3252,8395) +(3251,8394) +(3247,8401) +(3245,8409) +(3243,8415) +(3240,8414) +(3238,8420) +(3234,8415) +(3232,8415) +(3227,8422) +(3225,8427) +(3223,8432) +(3221,8431) +(3219,8433) +(3214,8446) +(3208,8466) +(3210,8458) +(3208,8456) +(3206,8456) +(3207,8460) +(3204,8462) +(3204,8467) +(3202,8467) +(3198,8474) +(3199,8478) +(3197,8485) +(3193,8481) +(3193,8485) +(3191,8485) +(3189,8486) +(3187,8483) +(3185,8482) +(3184,8482) +(3184,8481) +(3185,8475) +(3182,8471) +(3181,8475) +(3179,8473) +(3179,8469) +(3183,8458) +(3184,8454) +(3187,8452) +(3187,8448) +(3187,8442) +(3186,8446) +(3182,8451) +(3181,8457) +(3179,8456) +(3176,8458) +(3175,8463) +(3173,8465) +(3171,8471) +(3171,8476) +(3166,8472) +(3164,8476) +(3161,8477) +(3159,8479) +(3158,8477) +(3155,8477) +(3151,8473) +(3148,8468) +(3144,8468) +(3141,8470) +(3140,8474) +(3137,8477) +(3136,8480) +(3133,8484) +(3133,8492) +(3129,8493) +(3129,8492) +(3130,8490) +(3126,8481) +(3125,8482) +(3121,8478) +(3117,8486) +(3115,8485) +(3113,8477) +(3110,8473) +(3106,8471) +(3102,8467) +(3100,8467) +(3101,8465) +(3100,8461) +(3097,8455) +(3090,8454) +(3089,8450) +(3087,8447) +(3086,8449) +(3085,8449) +(3085,8454) +(3082,8452) +(3080,8448) +(3080,8446) +(3079,8441) +(3076,8442) +(3075,8443) +(3073,8439) +(3071,8441) +(3068,8440) +(3066,8442) +(3063,8443) +(3061,8442) +(3060,8440) +(3057,8441) +(3055,8436) +(3052,8432) +(3049,8433) +(3042,8428) +(3037,8431) +(3036,8429) +(3032,8426) +(3027,8430) +(3020,8433) +(3018,8431) +(3013,8432) +(3010,8431) +(3005,8435) +(3004,8435) +(3005,8437) +(3006,8441) +(3005,8442) +(3002,8438) +(2999,8429) +(2993,8426) +(2992,8424) +(2988,8428) +(2986,8432) +(2981,8431) +(2974,8433) +(2964,8427) +(2957,8426) +(2957,8420) +(2956,8420) +(2956,8424) +(2952,8420) +(2952,8422) +(2950,8421) +(2949,8422) +(2946,8421) +(2945,8421) +(2945,8418) +(2944,8420) +(2942,8421) +(2940,8413) +(2940,8417) +(2938,8415) +(2938,8417) +(2938,8418) +(2939,8418) +(2941,8421) +(2939,8422) +(2939,8424) +(2934,8421) +(2931,8415) +(2926,8413) +(2920,8411) +(2915,8412) +(2914,8410) +(2911,8412) +(2907,8411) +(2905,8405) +(2900,8402) +(2898,8396) +(2890,8384) +(2884,8379) +(2878,8371) +(2875,8364) +(2869,8357) +(2864,8353) +(2859,8352) +(2858,8350) +(2848,8343) +(2845,8343) +(2842,8339) +(2839,8338) +(2838,8333) +(2831,8326) +(2825,8317) +(2822,8314) +(2815,8310) +(2812,8310) +(2808,8305) +(2804,8303) +(2798,8301) +(2792,8300) +(2789,8294) +(2787,8292) +(2777,8287) +(2773,8286) +(2768,8281) +(2766,8277) +(2764,8276) +(2756,8267) +(2752,8262) +(2748,8260) +(2741,8251) +(2736,8242) +(2722,8228) +(2720,8223) +(2711,8209) +(2705,8206) +(2702,8201) +(2702,8199) +(2696,8193) +(2693,8193) +(2693,8192) +(2690,8189) +(2690,8187) +(2686,8186) +(2687,8182) +(2685,8180) +(2684,8178) +(2682,8180) +(2681,8176) +(2680,8175) +(2677,8173) +(2675,8174) +(2673,8172) +(2671,8171) +(2667,8164) +(2667,8160) +(2666,8159) +(2664,8153) +(2661,8150) +(2659,8150) +(2656,8148) +(2654,8143) +(2651,8141) +(2650,8139) +(2647,8140) +(2642,8138) +(2640,8133) +(2639,8132) +(2637,8132) +(2637,8131) +(2635,8131) +(2637,8129) +(2637,8127) +(2635,8128) +(2634,8128) +(2633,8131) +(2625,8125) +(2625,8123) +(2623,8121) +(2623,8119) +(2621,8116) +(2623,8115) +(2624,8115) +(2624,8114) +(2623,8113) +(2623,8111) +(2621,8114) +(2618,8113) +(2616,8110) +(2610,8108) +(2610,8104) +(2607,8098) +(2606,8097) +(2603,8090) +(2598,8086) +(2598,8082) +(2594,8076) +(2594,8073) +(2589,8065) +(2587,8061) +(2587,8059) +(2586,8058) +(2585,8051) +(2580,8047) +(2578,8042) +(2572,8034) +(2574,8032) +(2571,8024) +(2569,8023) +(2571,8021) +(2571,8016) +(2569,8014) +(2569,8012) +(2569,8011) +(2568,8009) +(2565,8002) +(2566,7999) +(2565,7994) +(2561,7990) +(2561,7982) +(2563,7980) +(2564,7982) +(2564,7985) +(2568,7980) +(2569,7980) +(2569,7976) +(2569,7974) +(2566,7973) +(2564,7971) +(2566,7968) +(2569,7968) +(2570,7966) +(2573,7966) +(2574,7966) +(2574,7964) +(2572,7961) +(2571,7961) +(2571,7956) +(2570,7955) +(2572,7950) +(2575,7950) +(2576,7948) +(2576,7944) +(2575,7943) +(2574,7941) +(2571,7941) +(2571,7939) +(2573,7937) +(2578,7937) +(2581,7938) +(2584,7937) +(2585,7938) +(2588,7940) +(2590,7939) +(2590,7941) +(2592,7943) +(2593,7942) +(2593,7939) +(2595,7938) +(2597,7941) +(2599,7938) +(2599,7937) +(2597,7937) +(2594,7934) +(2591,7926) +(2587,7922) +(2585,7919) +(2585,7914) +(2585,7913) +(2587,7915) +(2585,7910) +(2592,7915) +(2594,7920) +(2597,7923) +(2599,7923) +(2599,7921) +(2596,7919) +(2598,7918) +(2598,7910) +(2600,7910) +(2600,7909) +(2597,7906) +(2593,7905) +(2592,7903) +(2591,7906) +(2590,7905) +(2590,7904) +(2591,7902) +(2591,7900) +(2590,7900) +(2589,7899) +(2590,7902) +(2589,7901) +(2582,7894) +(2580,7894) +(2579,7893) +(2580,7891) +(2580,7890) +(2577,7890) +(2576,7886) +(2576,7883) +(2575,7883) +(2574,7885) +(2573,7884) +(2572,7888) +(2570,7882) +(2568,7881) +(2566,7882) +(2567,7879) +(2566,7877) +(2562,7875) +(2560,7875) +(2560,7873) +(2557,7873) +(2556,7874) +(2554,7874) +(2553,7872) +(2554,7870) +(2556,7872) +(2557,7868) +(2560,7867) +(2558,7866) +(2557,7866) +(2559,7861) +(2558,7858) +(2556,7856) +(2558,7849) +(2558,7852) +(2557,7856) +(2559,7857) +(2559,7853) +(2558,7848) +(2559,7847) +(2560,7850) +(2561,7850) +(2561,7845) +(2561,7843) +(2560,7841) +(2559,7840) +(2557,7844) +(2554,7844) +(2556,7846) +(2554,7847) +(2553,7851) +(2551,7852) +(2551,7850) +(2548,7850) +(2547,7847) +(2541,7845) +(2537,7841) +(2539,7839) +(2543,7839) +(2545,7836) +(2550,7834) +(2553,7834) +(2555,7837) +(2557,7836) +(2561,7832) +(2561,7828) +(2562,7825) +(2563,7824) +(2565,7826) +(2570,7838) +(2570,7846) +(2571,7847) +(2573,7849) +(2571,7852) +(2571,7861) +(2574,7863) +(2575,7867) +(2576,7868) +(2578,7866) +(2582,7866) +(2588,7873) +(2589,7873) +(2592,7871) +(2596,7876) +(2602,7876) +(2604,7879) +(2607,7878) +(2612,7872) +(2613,7871) +(2616,7873) +(2617,7872) +(2620,7873) +(2622,7872) +(2624,7873) +(2629,7872) +(2635,7875) +(2638,7874) +(2642,7875) +(2643,7878) +(2645,7877) +(2648,7876) +(2652,7875) +(2655,7874) +(2658,7873) +(2661,7872) +(2664,7871) +(2667,7870) +(2671,7869) +(2674,7868) +(2677,7867) +(2681,7866) +(2682,7864) +(2685,7863) +(2687,7860) +(2690,7857) +(2692,7863) +(2693,7864) +(2695,7864) +(2696,7868) +(2695,7873) +(2695,7876) +(2698,7880) +(2698,7888) +(2699,7889) +(2707,7899) +(2708,7899) +(2710,7898) +(2712,7899) +(2713,7900) +(2713,7905) +(2720,7910) +(2721,7912) +(2720,7914) +(2717,7916) +(2714,7921) +(2713,7926) +(2712,7930) +(2711,7935) +(2710,7939) +(2709,7944) +(2708,7948) +(2707,7952) +(2706,7957) +(2705,7961) +(2704,7966) +(2703,7970) +(2701,7976) +(2703,7982) +(2707,7987) +(2710,7988) +(2715,7986) +(2727,7989) +(2730,7991) +(2734,8002) +(2734,8005) +(2736,8005) +(2737,8008) +(2739,8007) +(2740,8009) +(2741,8009) +(2742,8007) +(2744,8009) +(2746,8009) +(2747,8010) +(2748,8008) +(2750,8009) +(2750,8010) +(2753,8011) +(2753,8013) +(2752,8015) +(2754,8016) +(2756,8017) +(2756,8020) +(2764,8023) +(2769,8021) +(2769,8025) +(2772,8027) +(2773,8028) +(2772,8030) +(2773,8031) +(2774,8031) +(2775,8034) +(2778,8033) +(2779,8035) +(2780,8032) +(2781,8033) +(2782,8035) +(2784,8036) +(2785,8034) +(2786,8031) +(2788,8031) +(2792,8034) +(2794,8034) +(2797,8039) +(2800,8041) +(2806,8043) +(2809,8041) +(2815,8044) +(2818,8044) +(2825,8048) +(2825,8052) +(2827,8053) +(2828,8053) +(2830,8051) +(2832,8052) +(2835,8049) +(2839,8051) +(2841,8054) +(2845,8059) +(2846,8069) +(2848,8073) +(2850,8074) +(2854,8080) +(2858,8081) +(2862,8086) +(2864,8086) +(2868,8081) +(2872,8080) +(2874,8076) +(2877,8076) +(2880,8073) +(2884,8075) +(2886,8080) +(2894,8081) +(2896,8084) +(2898,8077) +(2902,8074) +(2901,8069) +(2903,8065) +(2902,8055) +(2900,8051) +(2899,8043) +(2898,8041) +(2896,8039) +(2896,8033) +(2895,8025) +(2891,8022) +(2890,8016) +(2886,8012) +(2884,8011) +(2884,8009) +(2886,8004) +(2886,7999) +(2887,7993) +(2886,7985) +(2882,7981) +(2880,7973) +(2877,7970) +(2876,7966) +(2877,7965) +(2877,7960) +(2876,7959) +(2872,7960) +(2868,7955) +(2864,7955) +(2863,7952) +(2865,7941) +(2862,7930) +(2862,7920) +(2860,7915) +(2861,7912) +(2860,7909) +(2862,7901) +(2860,7897) +(2859,7895) +(2860,7893) +(2863,7892) +(2864,7885) +(2864,7876) +(2862,7870) +(2860,7866) +(2862,7859) +(2863,7856) +(2868,7857) +(2874,7853) +(2883,7841) +(2886,7840) +(2888,7840) +(2891,7845) +(2895,7846) +(2897,7850) +(2900,7849) +(2901,7846) +(2905,7844) +(2909,7846) +(2910,7844) +(2909,7838) +(2911,7837) +(2914,7837) +(2916,7831) +(2928,7838) +(2931,7840) +(2932,7840) +(2933,7837) +(2931,7831) +(2933,7828) +(2934,7825) +(2932,7817) +(2932,7813) +(2940,7799) +(2942,7794) +(2945,7795) +(2947,7790) +(2949,7791) +(2950,7786) +(2952,7784) +(2956,7783) +(2957,7781) +(2956,7776) +(2958,7773) +(2963,7772) +(2965,7769) +(2965,7763) +(2964,7762) +(2961,7762) +(2961,7759) +(2963,7755) +(2963,7752) +(2961,7746) +(2962,7743) +(2966,7740) +(2967,7735) +(2968,7734) +(2969,7731) +(2968,7725) +(2970,7725) +(2972,7728) +(2974,7727) +(2975,7723) +(2977,7720) +(2974,7717) +(2975,7710) +(2974,7702) +(2972,7700) +(2973,7696) +(2972,7693) +(2972,7686) +(2975,7680) +(2976,7677) +(2975,7674) +(2975,7669) +(2978,7666) +(2980,7661) +(2985,7660) +(2988,7652) +(2990,7650) +(2995,7652) +(2999,7649) +(3003,7649) +(3008,7654) +(3012,7655) +(3019,7640) +(3025,7641) +(3028,7637) +(3034,7642) +(3041,7637) +(3044,7638) +(3047,7633) +(3055,7628) +(3058,7622) +(3063,7616) +(3071,7614) +(3077,7618) +(3078,7619) +(3080,7617) +(3078,7612) +(3076,7613) +(3075,7614) +(3074,7613) +(3075,7611) +(3076,7609) +(3080,7609) +(3080,7614) +(3083,7615) +(3084,7614) +(3085,7607) +(3087,7607) +(3090,7609) +(3092,7608) +(3094,7600) +(3096,7600) +(3098,7604) +(3100,7602) +(3102,7603) +(3103,7602) +(3104,7600) +(3105,7598) +(3114,7591) +(3116,7588) +(3120,7586) +(3122,7588) +(3122,7591) +(3128,7593) +(3130,7588) +(3132,7579) +(3134,7580) +(3137,7586) +(3138,7579) +(3143,7580) +(3148,7576) +(3148,7572) +(3151,7573) +(3152,7571) +(3155,7564) +(3154,7563) +(3154,7561) +(3157,7559) +(3159,7559) +(3161,7564) +(3164,7562) +(3165,7566) +(3166,7566) +(3167,7563) +(3166,7558) +(3171,7552) +(3173,7552) +(3174,7550) +(3173,7539) +(3175,7539) +(3177,7543) +(3179,7544) +(3181,7539) +(3183,7537) +(3183,7534) +(3182,7530) +(3185,7528) +(3192,7510) +(3192,7504) +(3190,7493) +(3186,7494) +(3185,7491) +(3188,7488) +(3188,7482) +(3190,7482) +(3191,7479) +(3191,7470) +(3193,7464) +(3195,7460) +(3202,7455) +(3202,7451) +(3200,7447) +(3204,7441) +(3206,7439) +(3208,7433) +(3210,7422) +(3213,7417) +(3212,7415) +(3210,7412) +(3212,7413) +(3213,7410) +(3210,7409) +(3211,7407) +(3213,7396) +(3210,7389) +(3209,7378) +(3207,7369) +(3207,7357) +(3206,7345) +(3209,7339) +(3208,7335) +(3208,7330) +(3205,7326) +(3205,7321) +(3205,7318) +(3205,7309) +(3203,7304) +(3203,7300) +(3200,7290) +(3199,7280) +(3197,7274) +(3196,7268) +(3197,7264) +(3197,7262) +(3197,7252) +(3196,7250) +(3194,7250) +(3191,7243) +(3186,7238) +(3181,7229) +(3171,7216) +(3168,7210) +(3168,7207) +(3166,7202) +(3162,7203) +(3157,7202) +(3155,7204) +(3155,7211) +(3157,7217) +(3157,7223) +(3158,7226) +(3152,7243) +(3146,7241) +(3140,7237) +(3138,7239) +(3134,7246) +(3127,7247) +(3124,7245) +(3123,7242) +(3119,7243) +(3115,7239) +(3114,7234) +(3113,7233) +(3113,7229) +(3110,7228) +(3110,7224) +(3106,7219) +(3100,7211) +(3100,7206) +(3097,7203) +(3093,7203) +(3090,7199) +(3086,7199) +(3083,7197) +(3082,7193) +(3080,7195) +(3077,7192) +(3076,7189) +(3073,7189) +(3072,7185) +(3070,7187) +(3069,7186) +(3064,7185) +(3060,7180) +(3058,7175) +(3056,7174) +(3054,7171) +(3053,7172) +(3050,7170) +(3048,7171) +(3045,7170) +(3041,7167) +(3040,7163) +(3038,7162) +(3036,7157) +(3027,7155) +(3025,7152) +(3025,7150) +(3024,7148) +(3022,7148) +(3022,7151) +(3021,7151) +(3021,7161) +(3019,7162) +(3016,7160) +(3010,7161) +(3006,7160) +(3001,7154) +(2999,7144) +(2999,7135) +(2997,7123) +(2997,7118) +(2994,7112) +(2989,7108) +(2989,7103) +(2987,7102) +(2984,7094) +(2980,7090) +(2979,7087) +(2976,7082) +(2973,7074) +(2970,7072) +(2971,7067) +(2977,7050) +(2978,7037) +(2979,7030) +(2983,7018) +(2990,7003) +(2996,6997) +(2998,6986) +(3002,6973) +(3000,6964) +(2994,6948) +(2993,6944) +(2994,6938) +(2994,6924) +(3000,6912) +(3009,6901) +(3014,6891) +(3015,6887) +(3016,6880) +(3015,6873) +(3015,6867) +(3017,6859) +(3015,6851) +(3011,6844) +(3010,6840) +(3005,6832) +(3005,6827) +(3001,6814) +(2998,6809) +(2996,6807) +(2988,6792) +(2980,6786) +(2976,6785) +(2975,6779) +(2972,6774) +(2970,6766) +(2970,6762) +(2972,6758) +(2972,6749) +(2966,6728) +(2964,6718) +(2964,6710) +(2964,6701) +(2961,6692) +(2961,6689) +(2962,6682) +(2960,6678) +(2958,6671) +(2951,6657) +(2949,6647) +(2949,6642) +(2952,6628) +(2955,6624) +(2951,6618) +(2950,6612) +(2951,6605) +(2952,6594) +(2951,6591) +(2954,6585) +(2954,6573) +(2955,6570) +(2957,6569) +(2958,6566) +(2960,6561) +(2962,6552) +(2960,6544) +(2961,6537) +(2961,6533) +(2960,6513) +(2966,6502) +(2972,6496) +(2973,6489) +(2975,6484) +(2977,6482) +(2980,6482) +(2980,6478) +(2981,6477) +(2985,6479) +(2991,6477) +(2997,6479) +(2997,6474) +(2998,6471) +(2997,6469) +(2999,6465) +(2999,6445) +(3001,6439) +(3000,6436) +(3002,6431) +(3003,6429) +(3005,6425) +(3009,6422) +(3012,6420) +(3020,6404) +(3021,6393) +(3018,6375) +(3020,6370) +(3021,6364) +(3023,6364) +(3025,6359) +(3026,6351) +(3026,6348) +(3026,6338) +(3029,6321) +(3028,6317) +(3025,6311) +(3024,6307) +(3024,6301) +(3022,6294) +(3021,6290) +(3021,6283) +(3018,6278) +(3018,6265) +(3015,6261) +(3014,6258) +(3012,6256) +(3010,6255) +(3008,6244) +(3012,6229) +(3009,6224) +(3008,6220) +(3012,6208) +(3012,6199) +(3013,6197) +(3018,6195) +(3019,6191) +(3018,6180) +(3019,6175) +(3023,6167) +(3025,6157) +(3031,6152) +(3032,6149) +(3033,6142) +(3034,6140) +(3039,6138) +(3043,6141) +(3045,6140) +(3047,6136) +(3050,6134) +(3051,6134) +(3054,6136) +(3057,6134) +(3059,6135) +(3067,6130) +(3072,6131) +(3075,6129) +(3078,6134) +(3080,6133) +(3083,6125) +(3084,6120) +(3085,6116) +(3086,6109) +(3087,6106) +(3087,6100) +(3089,6095) +(3087,6083) +(3091,6076) +(3092,6069) +(3094,6066) +(3102,6042) +(3103,6036) +(3104,6033) +(3104,6015) +(3105,5997) +(3107,5993) +(3113,5984) +(3114,5974) +(3117,5959) +(3120,5955) +(3124,5942) +(3127,5940) +(3129,5936) +(3127,5933) +(3122,5932) +(3110,5922) +(3107,5917) +(3103,5900) +(3095,5895) +(3091,5896) +(3087,5894) +(3087,5892) +(3088,5887) +(3087,5883) +(3079,5876) +(3073,5878) +(3070,5875) +(3064,5873) +(3060,5870) +(3056,5873) +(3054,5877) +(3052,5878) +(3051,5881) +(3047,5878) +(3038,5884) +(3034,5890) +(3034,5896) +(3031,5899) +(3028,5900) +(3024,5897) +(3018,5897) +(3003,5886) +(2999,5877) +(2996,5872) +(2998,5867) +(2996,5856) +(2995,5855) +(2993,5856) +(2991,5855) +(2987,5849) +(2984,5840) +(2984,5837) +(2986,5830) +(2988,5829) +(2989,5825) +(2994,5820) +(2995,5803) +(2992,5797) +(2992,5796) +(2996,5793) +(2996,5790) +(2994,5783) +(2997,5778) +(3000,5764) +(2997,5758) +(3001,5754) +(3001,5750) +(2997,5745) +(2996,5736) +(2994,5732) +(2997,5725) +(2997,5705) +(3001,5701) +(3003,5699) +(3004,5690) +(3001,5678) +(3004,5676) +(3007,5672) +(3010,5671) +(3011,5665) +(3013,5663) +(3018,5662) +(3025,5661) +(3030,5658) +(3033,5658) +(3034,5657) +(3035,5613) +(3037,5606) +(3036,5601) +(3037,5593) +(3036,5586) +(3037,5581) +(3038,5581) +(3039,5578) +(3045,5580) +(3047,5579) +(3048,5568) +(3043,5566) +(3041,5562) +(3041,5560) +(3045,5554) +(3047,5548) +(3052,5545) +(3052,5543) +(3051,5540) +(3045,5538) +(3042,5533) +(3041,5527) +(3043,5515) +(3042,5507) +(3039,5500) +(3034,5496) +(3032,5488) +(3029,5487) +(3028,5486) +(3029,5478) +(3026,5470) +(3026,5462) +(3020,5452) +(3018,5445) +(3015,5444) +(3013,5442) +(3013,5439) +(3013,5431) +(3011,5427) +(3011,5421) +(3007,5415) +(3005,5403) +(3003,5401) +(3000,5401) +(2998,5399) +(2997,5394) +(2997,5387) +(2995,5380) +(2994,5378) +(2991,5378) +(2989,5380) +(2988,5379) +(2985,5384) +(2983,5384) +(2981,5378) +(2979,5368) +(2975,5363) +(2978,5356) +(2978,5354) +(2977,5352) +(2974,5354) +(2972,5354) +(2970,5351) +(2968,5341) +(2968,5339) +(2972,5337) +(2973,5335) +(2972,5333) +(2968,5333) +(2968,5334) +(2967,5334) +(2966,5331) +(2967,5324) +(2970,5319) +(2969,5314) +(2969,5301) +(2968,5293) +(2962,5288) +(2958,5290) +(2956,5290) +(2954,5283) +(2951,5279) +(2950,5270) +(2950,5263) +(2948,5256) +(2948,5252) +(2946,5250) +(2945,5246) +(2946,5239) +(2950,5238) +(2953,5236) +(2955,5231) +(2955,5226) +(2955,5223) +(2958,5220) +(2958,5218) +(2961,5214) +(2964,5215) +(2967,5209) +(2970,5209) +(2972,5207) +(2974,5203) +(2974,5200) +(2977,5197) +(2980,5199) +(2982,5205) +(2983,5207) +(2988,5208) +(2988,5203) +(2988,5199) +(2988,5197) +(2985,5196) +(2983,5192) +(2981,5188) +(2977,5183) +(2976,5178) +(2975,5175) +(2972,5174) +(2971,5172) +(2968,5170) +(2971,5167) +(2971,5162) +(2969,5159) +(2970,5157) +(2973,5156) +(2973,5151) +(2974,5146) +(2973,5142) +(2975,5137) +(2976,5133) +(2975,5127) +(2974,5126) +(2974,5122) +(2976,5120) +(2975,5117) +(2978,5113) +(2982,5112) +(2985,5111) +(2990,5107) +(2993,5106) +(2994,5101) +(2996,5099) +(3000,5099) +(3000,5101) +(3003,5101) +(3005,5096) +(3006,5091) +(3008,5088) +(3010,5082) +(3011,5077) +(3013,5071) +(3015,5070) +(3015,5068) +(3013,5062) +(3013,5060) +(3016,5056) +(3018,5054) +(3021,5055) +(3026,5053) +(3030,5054) +(3033,5052) +(3036,5047) +(3040,5043) +(3042,5040) +(3045,5038) +(3049,5035) +(3052,5030) +(3054,5023) +(3055,5019) +(3057,5015) +(3057,5009) +(3059,5005) +(3061,5006) +(3060,5001) +(3061,4995) +(3060,4992) +(3061,4987) +(3057,4985) +(3055,4981) +(3054,4976) +(3056,4969) +(3056,4964) +(3052,4963) +(3049,4962) +(3046,4954) +(3046,4949) +(3047,4943) +(3047,4937) +(3045,4933) +(3045,4927) +(3048,4922) +(3048,4917) +(3048,4910) +(3049,4908) +(3046,4906) +(3046,4901) +(3045,4896) +(3045,4889) +(3046,4887) +(3049,4888) +(3052,4888) +(3052,4886) +(3056,4886) +(3059,4884) +(3058,4878) +(3057,4873) +(3057,4867) +(3057,4864) +(3060,4865) +(3063,4866) +(3069,4869) +(3072,4868) +(3070,4864) +(3073,4856) +(3075,4856) +(3076,4851) +(3078,4845) +(3078,4839) +(3075,4838) +(3073,4838) +(3072,4837) +(3073,4829) +(3073,4827) +(3068,4826) +(3065,4829) +(3061,4828) +(3058,4828) +(3058,4826) +(3056,4823) +(3056,4816) +(3054,4812) +(3050,4812) +(3050,4806) +(3051,4804) +(3047,4804) +(3046,4805) +(3049,4802) +(3053,4799) +(3056,4796) +(3060,4794) +(3065,4789) +(3069,4787) +(3075,4782) +(3078,4780) +(3082,4777) +(3085,4774) +(3088,4772) +(3091,4770) +(3095,4767) +(3098,4764) +(3102,4762) +(3105,4759) +(3109,4756) +(3112,4753) +(3116,4750) +(3120,4747) +(3124,4743) +(3128,4740) +(3130,4737) +(3134,4734) +(3139,4731) +(3142,4728) +(3146,4724) +(3149,4721) +(3153,4717) +(3156,4715) +(3158,4712) +(3162,4709) +(3165,4707) +(3171,4701) +(3175,4697) +(3177,4695) +(3180,4692) +(3184,4687) +(3187,4684) +(3190,4681) +(3193,4679) +(3196,4676) +(3199,4672) +(3202,4666) +(3205,4662) +(3207,4657) +(3211,4651) +(3214,4644) +(3216,4640) +(3218,4635) +(3220,4631) +(3223,4624) +(3225,4620) +(3228,4614) +(3230,4610) +(3232,4606) +(3235,4600) +(3238,4595) +(3241,4592) +(3245,4590) +(3248,4586) +(3249,4585) +(3250,4586) +(3250,4591) +(3250,4597) +(3248,4598) +(3249,4603) +(3252,4606) +(3254,4611) +(3258,4612) +(3261,4612) +(3263,4607) +(3265,4613) +(3266,4616) +(3267,4616) +(3265,4607) +(3265,4605) +(3262,4601) +(3261,4595) +(3260,4590) +(3260,4584) +(3260,4578) +(3261,4575) +(3258,4572) +(3255,4569) +(3254,4564) +(3252,4558) +(3251,4553) +(3249,4548) +(3248,4542) +(3246,4537) +(3247,4532) +(3245,4525) +(3242,4527) +(3239,4528) +(3237,4523) +(3235,4519) +(3233,4514) +(3231,4510) +(3228,4504) +(3227,4502) +(3229,4496) +(3229,4491) +(3229,4489) +(3226,4487) +(3225,4481) +(3222,4480) +(3220,4479) +(3221,4473) +(3221,4468) +(3216,4466) +(3215,4469) +(3208,4465) +(3208,4464) +(3209,4457) +(3213,4456) +(3216,4455) +(3216,4451) +(3213,4449) +(3213,4444) +(3218,4444) +(3219,4437) +(3219,4434) +(3216,4431) +(3217,4425) +(3217,4420) +(3214,4419) +(3214,4416) +(3210,4413) +(3207,4407) +(3209,4403) +(3212,4404) +(3213,4400) +(3214,4395) +(3219,4397) +(3221,4396) +(3221,4399) +(3225,4401) +(3228,4401) +(3229,4407) +(3231,4406) +(3233,4407) +(3232,4415) +(3232,4421) +(3235,4423) +(3240,4424) +(3243,4425) +(3244,4418) +(3242,4416) +(3240,4411) +(3237,4412) +(3239,4407) +(3239,4405) +(3238,4405) +(3237,4399) +(3238,4393) +(3239,4385) +(3243,4383) +(3243,4379) +(3246,4379) +(3246,4370) +(3248,4365) +(3248,4356) +(3245,4352) +(3243,4351) +(3243,4357) +(3243,4359) +(3240,4363) +(3239,4363) +(3237,4363) +(3239,4353) +(3235,4350) +(3236,4344) +(3237,4343) +(3242,4345) +(3245,4342) +(3246,4342) +(3247,4347) +(3247,4349) +(3248,4350) +(3249,4344) +(3251,4338) +(3254,4339) +(3255,4337) +(3259,4336) +(3262,4331) +(3262,4324) +(3260,4324) +(3257,4328) +(3255,4325) +(3252,4330) +(3251,4332) +(3248,4330) +(3249,4326) +(3252,4324) +(3254,4314) +(3255,4306) +(3252,4304) +(3249,4305) +(3247,4301) +(3247,4295) +(3247,4291) +(3250,4289) +(3251,4284) +(3251,4279) +(3247,4273) +(3247,4270) +(3251,4268) +(3253,4264) +(3256,4266) +(3258,4261) +(3261,4261) +(3259,4269) +(3259,4271) +(3263,4274) +(3267,4272) +(3270,4272) +(3275,4272) +(3277,4278) +(3280,4278) +(3282,4272) +(3284,4266) +(3287,4263) +(3291,4262) +(3294,4260) +(3299,4261) +(3303,4261) +(3307,4259) +(3310,4256) +(3314,4251) +(3317,4250) +(3318,4244) +(3316,4239) +(3316,4232) +(3317,4229) +(3316,4227) +(3313,4225) +(3311,4219) +(3308,4214) +(3308,4208) +(3311,4203) +(3312,4200) +(3313,4195) +(3317,4193) +(3319,4188) +(3320,4181) +(3321,4176) +(3320,4169) +(3322,4164) +(3321,4156) +(3320,4152) +(3323,4148) +(3325,4143) +(3326,4137) +(3322,4135) +(3320,4140) +(3317,4140) +(3319,4134) +(3321,4129) +(3320,4123) +(3317,4122) +(3314,4118) +(3311,4117) +(3312,4111) +(3312,4104) +(3311,4101) +(3311,4095) +(3311,4093) +(3311,4091) +(3308,4092) +(3305,4096) +(3301,4093) +(3298,4093) +(3297,4086) +(3297,4081) +(3298,4076) +(3298,4071) +(3295,4067) +(3292,4063) +(3291,4058) +(3290,4053) +(3291,4046) +(3292,4041) +(3292,4039) +(3289,4036) +(3288,4030) +(3287,4024) +(3287,4017) +(3286,4011) +(3285,4005) +(3284,4004) +(3283,3996) +(3283,3991) +(3282,3984) +(3281,3978) +(3279,3971) +(3278,3963) +(3277,3958) +(3282,3958) +(3282,3952) +(3279,3949) +(3276,3946) +(3278,3940) +(3278,3935) +(3279,3930) +(3279,3928) +(3275,3929) +(3274,3929) +(3275,3923) +(3274,3917) +(3272,3913) +(3267,3911) +(3264,3914) +(3260,3913) +(3260,3907) +(3264,3902) +(3265,3897) +(3263,3891) +(3261,3885) +(3264,3885) +(3264,3879) +(3262,3874) +(3262,3869) +(3260,3867) +(3260,3861) +(3259,3856) +(3259,3850) +(3259,3845) +(3257,3841) +(3258,3841) +(3259,3840) +(3257,3839) +(3257,3833) +(3256,3828) +(3255,3823) +(3254,3818) +(3253,3813) +(3252,3807) +(3252,3800) +(3252,3795) +(3251,3790) +(3248,3790) +(3246,3785) +(3246,3779) +(3247,3773) +(3247,3770) +(3244,3766) +(3242,3762) +(3240,3758) +(3238,3755) +(3235,3754) +(3234,3752) +(3236,3747) +(3239,3745) +(3241,3749) +(3243,3745) +(3242,3740) +(3242,3735) +(3242,3728) +(3243,3726) +(3242,3721) +(3239,3722) +(3238,3723) +(3237,3717) +(3238,3712) +(3241,3714) +(3242,3711) +(3239,3708) +(3242,3704) +(3240,3698) +(3238,3698) +(3237,3697) +(3240,3694) +(3242,3690) +(3245,3688) +(3245,3682) +(3245,3680) +(3242,3675) +(3239,3677) +(3236,3675) +(3235,3675) +(3235,3672) +(3237,3670) +(3237,3664) +(3237,3662) +(3234,3659) +(3233,3664) +(3233,3667) +(3231,3671) +(3229,3673) +(3226,3671) +(3223,3667) +(3222,3663) +(3219,3663) +(3220,3656) +(3217,3655) +(3217,3661) +(3216,3666) +(3214,3670) +(3214,3676) +(3214,3681) +(3216,3686) +(3215,3691) +(3212,3695) +(3210,3695) +(3208,3691) +(3208,3685) +(3209,3683) +(3210,3678) +(3210,3676) +(3206,3674) +(3204,3670) +(3199,3670) +(3196,3675) +(3196,3680) +(3195,3686) +(3193,3691) +(3193,3697) +(3195,3700) +(3193,3704) +(3190,3708) +(3188,3714) +(3188,3719) +(3187,3725) +(3187,3727) +(3184,3728) +(3180,3728) +(3178,3724) +(3177,3719) +(3181,3714) +(3180,3708) +(3180,3703) +(3178,3699) +(3180,3695) +(3182,3690) +(3182,3688) +(3180,3684) +(3180,3679) +(3182,3674) +(3180,3669) +(3178,3667) +(3179,3662) +(3176,3664) +(3173,3661) +(3170,3657) +(3168,3653) +(3166,3650) +(3165,3644) +(3162,3643) +(3159,3645) +(3158,3650) +(3155,3651) +(3151,3651) +(3150,3656) +(3150,3658) +(3146,3660) +(3142,3663) +(3138,3660) +(3136,3656) +(3134,3651) +(3134,3648) +(3131,3645) +(3130,3640) +(3130,3633) +(3128,3628) +(3126,3624) +(3122,3620) +(3120,3614) +(3120,3609) +(3119,3604) +(3116,3603) +(3113,3606) +(3112,3611) +(3113,3611) +(3114,3610) +(3113,3615) +(3111,3620) +(3109,3624) +(3108,3631) +(3104,3627) +(3102,3624) +(3099,3629) +(3097,3636) +(3097,3642) +(3097,3647) +(3097,3654) +(3093,3656) +(3090,3658) +(3088,3662) +(3087,3667) +(3087,3668) +(3087,3671) +(3085,3677) +(3084,3683) +(3086,3687) +(3084,3691) +(3080,3693) +(3078,3698) +(3076,3701) +(3075,3695) +(3071,3694) +(3068,3693) +(3062,3691) +(3059,3690) +(3054,3689) +(3050,3688) +(3047,3683) +(3045,3675) +(3044,3671) +(3042,3662) +(3041,3656) +(3040,3650) +(3040,3641) +(3040,3635) +(3040,3629) +(3041,3623) +(3042,3619) +(3045,3614) +(3048,3611) +(3050,3611) +(3052,3605) +(3050,3600) +(3049,3600) +(3046,3598) +(3042,3596) +(3039,3594) +(3036,3590) +(3034,3583) +(3032,3577) +(3031,3572) +(3035,3571) +(3039,3569) +(3039,3563) +(3040,3558) +(3039,3557) +(3041,3551) +(3042,3542) +(3042,3537) +(3043,3532) +(3045,3531) +(3047,3527) +(3050,3527) +(3050,3522) +(3049,3517) +(3053,3514) +(3056,3514) +(3060,3516) +(3064,3514) +(3065,3509) +(3065,3504) +(3065,3502) +(3069,3500) +(3070,3498) +(3068,3493) +(3066,3493) +(3064,3491) +(3065,3486) +(3066,3486) +(3067,3486) +(3068,3485) +(3066,3481) +(3066,3476) +(3067,3471) +(3068,3470) +(3068,3468) +(3068,3467) +(3065,3465) +(3060,3465) +(3056,3464) +(3055,3463) +(3055,3461) +(3057,3459) +(3056,3454) +(3055,3452) +(3053,3452) +(3053,3446) +(3056,3441) +(3059,3439) +(3061,3436) +(3064,3432) +(3066,3431) +(3064,3425) +(3063,3420) +(3064,3419) +(3063,3414) +(3065,3409) +(3065,3404) +(3061,3404) +(3058,3404) +(3059,3399) +(3062,3395) +(3064,3392) +(3065,3391) +(3065,3390) +(3063,3388) +(3059,3389) +(3059,3388) +(3058,3384) +(3055,3383) +(3055,3378) +(3056,3373) +(3055,3370) +(3051,3369) +(3048,3368) +(3045,3367) +(3043,3362) +(3041,3357) +(3039,3352) +(3037,3346) +(3035,3343) +(3034,3342) +(3036,3337) +(3038,3332) +(3040,3329) +(3040,3324) +(3039,3323) +(3042,3318) +(3045,3313) +(3047,3309) +(3049,3304) +(3052,3306) +(3054,3306) +(3056,3303) +(3055,3301) +(3053,3300) +(3052,3295) +(3051,3294) +(3051,3291) +(3053,3290) +(3053,3284) +(3053,3283) +(3049,3280) +(3045,3280) +(3041,3283) +(3038,3284) +(3035,3279) +(3033,3278) +(3032,3272) +(3032,3270) +(3035,3268) +(3038,3265) +(3041,3267) +(3044,3267) +(3047,3268) +(3050,3271) +(3052,3267) +(3053,3259) +(3056,3255) +(3059,3252) +(3061,3250) +(3062,3252) +(3063,3249) +(3067,3248) +(3068,3244) +(3070,3242) +(3071,3237) +(3072,3232) +(3072,3227) +(3072,3225) +(3074,3221) +(3076,3219) +(3079,3217) +(3082,3218) +(3085,3215) +(3086,3210) +(3089,3207) +(3091,3203) +(3090,3198) +(3090,3193) +(3091,3191) +(3092,3192) +(3092,3189) +(3090,3190) +(3089,3187) +(3089,3186) +(3089,3183) +(3089,3178) +(3088,3178) +(3089,3177) +(3090,3176) +(3089,3175) +(3089,3173) +(3090,3173) +(3090,3168) +(3092,3167) +(3090,3165) +(3089,3161) +(3088,3162) +(3089,3160) +(3087,3158) +(3088,3156) +(3088,3154) +(3090,3151) +(3093,3150) +(3097,3147) +(3099,3143) +(3105,3142) +(3106,3141) +(3106,3140) +(3103,3137) +(3103,3131) +(3100,3128) +(3100,3123) +(3100,3118) +(3101,3111) +(3098,3108) +(3095,3105) +(3092,3108) +(3089,3103) +(3088,3098) +(3092,3098) +(3092,3095) +(3093,3094) +(3094,3093) +(3091,3091) +(3089,3086) +(3089,3079) +(3090,3077) +(3093,3075) +(3094,3081) +(3099,3082) +(3100,3078) +(3101,3077) +(3101,3071) +(3100,3064) +(3101,3058) +(3101,3053) +(3104,3052) +(3106,3046) +(3106,3045) +(3102,3044) +(3100,3048) +(3096,3047) +(3094,3041) +(3094,3040) +(3098,3043) +(3099,3037) +(3099,3036) +(3096,3033) +(3096,3031) +(3093,3030) +(3089,3031) +(3088,3028) +(3087,3028) +(3086,3022) +(3083,3020) +(3079,3018) +(3078,3013) +(3077,3007) +(3075,3000) +(3072,2992) +(3069,2988) +(3067,2984) +(3067,2978) +(3067,2973) +(3067,2968) +(3068,2965) +(3066,2962) +(3062,2961) +(3060,2959) +(3056,2964) +(3053,2965) +(3050,2960) +(3050,2955) +(3048,2949) +(3046,2944) +(3043,2941) +(3040,2937) +(3038,2932) +(3036,2929) +(3037,2923) +(3040,2918) +(3040,2916) +(3039,2913) +(3037,2914) +(3035,2918) +(3028,2920) +(3025,2920) +(3020,2921) +(3015,2923) +(3012,2926) +(3008,2926) +(3006,2926) +(3005,2931) +(3001,2933) +(2998,2928) +(2996,2924) +(2994,2919) +(2993,2914) +(2990,2906) +(2989,2906) +(2990,2903) +(2990,2901) +(2992,2898) +(2992,2897) +(2992,2895) +(2992,2893) +(2996,2891) +(3000,2888) +(3003,2887) +(3006,2885) +(3008,2881) +(3011,2878) +(3014,2875) +(3017,2871) +(3020,2868) +(3022,2864) +(3024,2860) +(3027,2855) +(3027,2851) +(3025,2847) +(3022,2844) +(3020,2844) +(3020,2839) +(3016,2838) +(3012,2836) +(3008,2840) +(3003,2838) +(3000,2836) +(2996,2830) +(2993,2820) +(2992,2815) +(2988,2813) +(2985,2812) +(2981,2812) +(2978,2812) +(2974,2810) +(2971,2809) +(2967,2808) +(2963,2807) +(2960,2807) +(2958,2812) +(2955,2818) +(2953,2821) +(2948,2823) +(2944,2820) +(2940,2816) +(2938,2811) +(2936,2807) +(2931,2803) +(2928,2802) +(2925,2800) +(2921,2798) +(2917,2795) +(2913,2793) +(2910,2791) +(2907,2790) +(2905,2795) +(2903,2801) +(2902,2805) +(2900,2813) +(2900,2815) +(2896,2820) +(2893,2824) +(2893,2826) +(2890,2827) +(2886,2826) +(2885,2831) +(2882,2828) +(2880,2821) +(2877,2824) +(2874,2827) +(2871,2829) +(2869,2827) +(2866,2830) +(2863,2836) +(2861,2841) +(2861,2842) +(2864,2844) +(2867,2845) +(2868,2844) +(2867,2850) +(2866,2855) +(2865,2860) +(2865,2867) +(2865,2875) +(2866,2880) +(2865,2885) +(2862,2890) +(2858,2893) +(2855,2896) +(2850,2899) +(2848,2902) +(2845,2906) +(2845,2912) +(2845,2915) +(2842,2917) +(2839,2918) +(2835,2919) +(2830,2921) +(2825,2924) +(2822,2926) +(2818,2930) +(2814,2934) +(2810,2938) +(2807,2940) +(2804,2938) +(2802,2935) +(2801,2930) +(2801,2925) +(2804,2922) +(2806,2919) +(2806,2915) +(2804,2911) +(2801,2909) +(2799,2909) +(2798,2913) +(2796,2914) +(2796,2918) +(2794,2920) +(2793,2925) +(2790,2928) +(2789,2929) +(2787,2934) +(2786,2938) +(2784,2942) +(2783,2946) +(2782,2950) +(2783,2953) +(2781,2953) +(2778,2954) +(2775,2958) +(2775,2957) +(2776,2955) +(2777,2949) +(2779,2949) +(2780,2950) +(2780,2948) +(2775,2943) +(2774,2947) +(2769,2947) +(2769,2946) +(2771,2944) +(2772,2942) +(2770,2941) +(2770,2939) +(2768,2936) +(2766,2937) +(2765,2937) +(2769,2933) +(2766,2933) +(2768,2932) +(2768,2930) +(2765,2933) +(2764,2931) +(2767,2930) +(2768,2927) +(2766,2929) +(2763,2929) +(2765,2927) +(2768,2922) +(2767,2922) +(2767,2920) +(2765,2920) +(2765,2918) +(2764,2922) +(2761,2924) +(2759,2923) +(2758,2919) +(2758,2924) +(2756,2926) +(2755,2924) +(2753,2925) +(2752,2927) +(2751,2927) +(2750,2927) +(2751,2926) +(2750,2923) +(2749,2923) +(2752,2921) +(2753,2922) +(2753,2920) +(2757,2916) +(2758,2914) +(2756,2910) +(2756,2907) +(2752,2904) +(2753,2902) +(2751,2902) +(2751,2904) +(2750,2904) +(2750,2897) +(2746,2895) +(2746,2893) +(2743,2895) +(2743,2894) +(2744,2892) +(2744,2889) +(2743,2888) +(2745,2884) +(2743,2882) +(2742,2880) +(2743,2879) +(2743,2876) +(2741,2874) +(2743,2873) +(2743,2871) +(2739,2870) +(2738,2871) +(2736,2869) +(2741,2866) +(2742,2860) +(2744,2859) +(2745,2857) +(2746,2853) +(2744,2853) +(2745,2855) +(2743,2855) +(2743,2858) +(2740,2858) +(2740,2856) +(2738,2856) +(2737,2859) +(2735,2858) +(2734,2859) +(2733,2858) +(2734,2857) +(2739,2853) +(2741,2846) +(2743,2847) +(2743,2850) +(2743,2849) +(2745,2843) +(2740,2845) +(2738,2853) +(2734,2854) +(2732,2853) +(2735,2850) +(2734,2849) +(2730,2853) +(2729,2850) +(2725,2849) +(2725,2843) +(2724,2844) +(2724,2847) +(2723,2848) +(2722,2845) +(2718,2843) +(2711,2843) +(2711,2838) +(2698,2832) +(2698,2830) +(2696,2829) +(2697,2826) +(2692,2827) +(2687,2825) +(2691,2821) +(2694,2821) +(2695,2820) +(2689,2821) +(2686,2818) +(2686,2816) +(2684,2812) +(2682,2810) +(2682,2807) +(2679,2805) +(2679,2803) +(2674,2802) +(2673,2803) +(2671,2801) +(2667,2802) +(2664,2806) +(2663,2808) +(2664,2810) +(2662,2821) +(2660,2823) +(2654,2826) +(2652,2831) +(2653,2832) +(2653,2834) +(2645,2837) +(2642,2841) +(2635,2845) +(2633,2846) +(2632,2848) +(2629,2846) +(2629,2849) +(2626,2850) +(2624,2846) +(2621,2847) +(2617,2844) +(2616,2843) +(2617,2842) +(2613,2843) +(2612,2844) +(2610,2844) +(2610,2846) +(2612,2848) +(2618,2848) +(2621,2850) +(2623,2850) +(2628,2852) +(2632,2852) +(2634,2858) +(2632,2862) +(2630,2859) +(2623,2855) +(2614,2852) +(2611,2852) +(2607,2849) +(2598,2849) +(2597,2850) +(2600,2854) +(2598,2855) +(2592,2849) +(2587,2849) +(2585,2847) +(2581,2848) +(2577,2853) +(2577,2855) +(2574,2857) +(2572,2862) +(2566,2863) +(2563,2862) +(2558,2864) +(2556,2872) +(2548,2877) +(2543,2881) +(2540,2887) +(2530,2894) +(2526,2898) +(2516,2903) +(2514,2906) +(2513,2912) +(2511,2910) +(2507,2908) +(2504,2907) +(2500,2906) +(2497,2904) +(2494,2899) +(2492,2896) +(2490,2892) +(2490,2887) +(2489,2883) +(2486,2882) +(2483,2879) +(2481,2876) +(2478,2875) +(2474,2874) +(2473,2873) +(2473,2868) +(2471,2865) +(2473,2862) +(2474,2858) +(2473,2854) +(2474,2850) +(2475,2850) +(2476,2846) +(2477,2842) +(2478,2838) +(2479,2836) +(2483,2835) +(2485,2833) +(2489,2831) +(2491,2830) +(2494,2827) +(2495,2827) +(2493,2824) +(2493,2821) +(2496,2819) +(2498,2820) +(2498,2818) +(2501,2815) +(2503,2815) +(2504,2811) +(2507,2807) +(2510,2806) +(2511,2806) +(2512,2805) +(2510,2802) +(2509,2797) +(2508,2795) +(2509,2793) +(2512,2792) +(2513,2788) +(2514,2785) +(2517,2783) +(2516,2779) +(2519,2776) +(2520,2775) +(2519,2771) +(2521,2767) +(2520,2767) +(2519,2766) +(2522,2764) +(2522,2763) +(2522,2758) +(2522,2757) +(2524,2754) +(2527,2752) +(2527,2748) +(2529,2744) +(2531,2740) +(2533,2737) +(2537,2738) +(2537,2743) +(2538,2744) +(2541,2744) +(2546,2746) +(2549,2746) +(2550,2740) +(2552,2735) +(2552,2731) +(2553,2727) +(2552,2722) +(2552,2721) +(2554,2718) +(2557,2716) +(2560,2712) +(2562,2709) +(2562,2705) +(2564,2700) +(2565,2696) +(2564,2692) +(2560,2689) +(2557,2687) +(2561,2684) +(2564,2683) +(2565,2679) +(2565,2671) +(2564,2667) +(2563,2664) +(2563,2659) +(2561,2655) +(2558,2653) +(2557,2650) +(2557,2645) +(2556,2641) +(2554,2638) +(2554,2634) +(2555,2629) +(2555,2627) +(2558,2624) +(2560,2626) +(2563,2628) +(2565,2628) +(2566,2623) +(2568,2619) +(2570,2616) +(2572,2613) +(2573,2609) +(2574,2604) +(2574,2600) +(2575,2596) +(2576,2592) +(2580,2587) +(2582,2583) +(2584,2582) +(2586,2582) +(2587,2578) +(2587,2576) +(2590,2574) +(2590,2570) +(2591,2565) +(2590,2561) +(2589,2561) +(2590,2557) +(2591,2553) +(2592,2549) +(2593,2548) +(2594,2548) +(2595,2547) +(2595,2543) +(2593,2539) +(2593,2537) +(2594,2533) +(2593,2529) +(2592,2525) +(2592,2523) +(2593,2519) +(2594,2513) +(2595,2513) +(2592,2510) +(2593,2506) +(2594,2504) +(2593,2503) +(2593,2498) +(2595,2494) +(2596,2491) +(2598,2486) +(2601,2485) +(2602,2482) +(2600,2479) +(2602,2474) +(2603,2470) +(2604,2468) +(2603,2466) +(2603,2464) +(2606,2460) +(2606,2456) +(2608,2454) +(2609,2450) +(2611,2446) +(2612,2442) +(2613,2441) +(2614,2439) +(2611,2435) +(2612,2431) +(2613,2427) +(2613,2422) +(2614,2418) +(2615,2414) +(2615,2410) +(2613,2406) +(2611,2404) +(2607,2402) +(2604,2401) +(2603,2401)
\ No newline at end of file diff --git a/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat b/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat new file mode 100644 index 0000000000..0d7eb74191 --- /dev/null +++ b/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat @@ -0,0 +1,465 @@ +464% +(4135,-10786) +(4134,-10775) +(4135,-10771) +(4137,-10773) +(4137,-10771) +(4134,-10766) +(4132,-10760) +(4131,-10761) +(4131,-10765) +(4129,-10764) +(4129,-10753) +(4127,-10750) +(4126,-10735) +(4115,-10709) +(4116,-10714) +(4120,-10725) +(4112,-10724) +(4110,-10706) +(4109,-10703) +(4109,-10695) +(4106,-10682) +(4100,-10677) +(4096,-10685) +(4095,-10684) +(4095,-10678) +(4097,-10677) +(4100,-10662) +(4112,-10701) +(4113,-10703) +(4104,-10670) +(4098,-10653) +(4097,-10648) +(4098,-10656) +(4097,-10658) +(4095,-10666) +(4093,-10661) +(4093,-10657) +(4091,-10658) +(4093,-10653) +(4095,-10642) +(4092,-10630) +(4092,-10636) +(4090,-10634) +(4089,-10635) +(4088,-10630) +(4090,-10624) +(4074,-10569) +(4070,-10554) +(4061,-10524) +(4060,-10518) +(4059,-10518) +(4059,-10522) +(4053,-10516) +(4052,-10510) +(4050,-10508) +(4051,-10516) +(4050,-10513) +(4047,-10513) +(4041,-10523) +(4041,-10512) +(4042,-10506) +(4047,-10503) +(4049,-10505) +(4045,-10496) +(4045,-10497) +(4044,-10496) +(4043,-10492) +(4043,-10490) +(4038,-10487) +(4037,-10488) +(4039,-10490) +(4037,-10494) +(4026,-10497) +(4019,-10495) +(4016,-10488) +(4016,-10484) +(4014,-10488) +(4012,-10486) +(4004,-10485) +(4005,-10486) +(4005,-10492) +(4003,-10493) +(4002,-10497) +(4001,-10497) +(4000,-10500) +(3997,-10494) +(3995,-10479) +(3992,-10469) +(3987,-10465) +(3988,-10469) +(3987,-10471) +(3983,-10470) +(3981,-10465) +(3980,-10470) +(3978,-10468) +(3978,-10466) +(3979,-10461) +(3981,-10464) +(3984,-10459) +(3985,-10453) +(3988,-10456) +(3988,-10452) +(3989,-10449) +(3989,-10441) +(3987,-10439) +(3984,-10443) +(3981,-10439) +(3979,-10444) +(3975,-10445) +(3973,-10441) +(3976,-10439) +(3979,-10431) +(3980,-10436) +(3981,-10430) +(3982,-10427) +(3987,-10425) +(3989,-10433) +(3991,-10435) +(3993,-10453) +(3995,-10458) +(4001,-10441) +(4000,-10439) +(4001,-10437) +(4002,-10440) +(4011,-10441) +(4014,-10445) +(4016,-10445) +(4019,-10447) +(4019,-10458) +(4020,-10459) +(4021,-10455) +(4023,-10457) +(4022,-10472) +(4023,-10474) +(4024,-10466) +(4025,-10465) +(4023,-10477) +(4024,-10479) +(4025,-10477) +(4026,-10463) +(4025,-10430) +(4026,-10425) +(4028,-10421) +(4026,-10411) +(4025,-10410) +(4023,-10412) +(4022,-10411) +(4022,-10408) +(4025,-10406) +(4023,-10388) +(4023,-10394) +(4024,-10398) +(4022,-10398) +(4021,-10391) +(4020,-10393) +(4020,-10398) +(4018,-10401) +(4017,-10401) +(4015,-10400) +(4015,-10402) +(4013,-10400) +(4012,-10402) +(4010,-10402) +(4010,-10393) +(4012,-10389) +(4013,-10393) +(4015,-10392) +(4015,-10397) +(4017,-10393) +(4019,-10393) +(4020,-10387) +(4017,-10385) +(4016,-10382) +(4014,-10367) +(4016,-10359) +(4015,-10355) +(4016,-10346) +(4018,-10353) +(4022,-10383) +(4023,-10384) +(4023,-10383) +(4021,-10357) +(4020,-10350) +(4021,-10367) +(4018,-10340) +(4017,-10323) +(4019,-10317) +(4017,-10315) +(4017,-10304) +(4016,-10301) +(4011,-10302) +(4008,-10296) +(4006,-10285) +(4005,-10284) +(4003,-10286) +(3999,-10280) +(3994,-10266) +(3991,-10253) +(3987,-10244) +(3981,-10235) +(3979,-10225) +(3978,-10234) +(3977,-10233) +(3974,-10239) +(3974,-10233) +(3978,-10227) +(3978,-10219) +(3972,-10208) +(3971,-10211) +(3972,-10218) +(3971,-10220) +(3969,-10214) +(3969,-10211) +(3970,-10209) +(3968,-10196) +(3970,-10195) +(3971,-10202) +(3968,-10183) +(3964,-10181) +(3960,-10187) +(3959,-10189) +(3961,-10196) +(3962,-10200) +(3961,-10207) +(3951,-10237) +(3951,-10233) +(3950,-10231) +(3946,-10234) +(3944,-10232) +(3940,-10232) +(3937,-10235) +(3936,-10241) +(3937,-10253) +(3939,-10254) +(3941,-10265) +(3942,-10272) +(3946,-10276) +(3949,-10285) +(3950,-10292) +(3949,-10289) +(3945,-10286) +(3944,-10279) +(3943,-10282) +(3940,-10277) +(3938,-10268) +(3936,-10264) +(3936,-10261) +(3929,-10263) +(3929,-10270) +(3932,-10284) +(3929,-10324) +(3930,-10316) +(3931,-10309) +(3932,-10310) +(3932,-10322) +(3933,-10324) +(3934,-10327) +(3932,-10334) +(3933,-10340) +(3935,-10337) +(3938,-10342) +(3940,-10341) +(3940,-10345) +(3941,-10354) +(3941,-10357) +(3942,-10359) +(3941,-10368) +(3942,-10371) +(3940,-10368) +(3940,-10360) +(3938,-10361) +(3937,-10360) +(3936,-10344) +(3932,-10346) +(3929,-10340) +(3928,-10348) +(3925,-10344) +(3926,-10337) +(3930,-10329) +(3921,-10335) +(3915,-10335) +(3914,-10335) +(3916,-10337) +(3916,-10343) +(3915,-10352) +(3914,-10355) +(3916,-10357) +(3916,-10360) +(3915,-10362) +(3914,-10361) +(3913,-10357) +(3913,-10338) +(3912,-10335) +(3908,-10331) +(3908,-10335) +(3905,-10332) +(3906,-10328) +(3905,-10328) +(3895,-10348) +(3895,-10350) +(3895,-10352) +(3894,-10356) +(3893,-10362) +(3892,-10365) +(3891,-10368) +(3893,-10377) +(3892,-10383) +(3891,-10385) +(3889,-10386) +(3887,-10392) +(3887,-10390) +(3891,-10378) +(3887,-10367) +(3886,-10367) +(3884,-10372) +(3883,-10372) +(3883,-10378) +(3880,-10385) +(3880,-10383) +(3881,-10374) +(3880,-10372) +(3877,-10377) +(3875,-10381) +(3875,-10377) +(3877,-10373) +(3878,-10367) +(3876,-10364) +(3875,-10360) +(3874,-10353) +(3873,-10348) +(3870,-10346) +(3866,-10337) +(3865,-10347) +(3864,-10350) +(3863,-10358) +(3865,-10364) +(3865,-10368) +(3868,-10366) +(3870,-10369) +(3871,-10370) +(3871,-10376) +(3870,-10377) +(3870,-10381) +(3868,-10384) +(3868,-10375) +(3867,-10373) +(3865,-10374) +(3860,-10374) +(3859,-10378) +(3857,-10380) +(3855,-10391) +(3859,-10406) +(3862,-10405) +(3867,-10396) +(3867,-10399) +(3871,-10397) +(3873,-10401) +(3875,-10400) +(3875,-10403) +(3877,-10405) +(3870,-10401) +(3868,-10402) +(3864,-10408) +(3861,-10415) +(3861,-10421) +(3865,-10443) +(3873,-10447) +(3878,-10461) +(3879,-10457) +(3880,-10457) +(3880,-10467) +(3887,-10491) +(3889,-10500) +(3891,-10499) +(3892,-10501) +(3887,-10501) +(3887,-10508) +(3887,-10524) +(3887,-10529) +(3889,-10531) +(3890,-10525) +(3891,-10525) +(3891,-10532) +(3893,-10534) +(3895,-10538) +(3897,-10549) +(3901,-10555) +(3904,-10549) +(3910,-10547) +(3917,-10555) +(3918,-10553) +(3921,-10556) +(3924,-10556) +(3929,-10566) +(3929,-10571) +(3929,-10580) +(3933,-10594) +(3937,-10624) +(3935,-10633) +(3930,-10644) +(3929,-10650) +(3929,-10662) +(3929,-10692) +(3929,-10702) +(3931,-10713) +(3933,-10714) +(3934,-10711) +(3937,-10712) +(3938,-10709) +(3944,-10708) +(3945,-10711) +(3945,-10717) +(3946,-10719) +(3947,-10718) +(3947,-10721) +(3951,-10727) +(3953,-10732) +(3955,-10734) +(3956,-10732) +(3963,-10739) +(3959,-10727) +(3961,-10722) +(3967,-10720) +(3967,-10716) +(3970,-10713) +(3971,-10714) +(3974,-10711) +(3976,-10712) +(3978,-10710) +(3984,-10710) +(3984,-10712) +(3982,-10714) +(3982,-10715) +(3982,-10718) +(3979,-10719) +(3972,-10727) +(3970,-10738) +(3972,-10744) +(3975,-10747) +(3978,-10745) +(3983,-10747) +(3985,-10751) +(3981,-10751) +(3977,-10751) +(3978,-10758) +(3979,-10760) +(3981,-10765) +(3971,-10755) +(3968,-10763) +(3967,-10778) +(3968,-10781) +(3968,-10775) +(3969,-10775) +(3971,-10782) +(3967,-10786) +(3957,-10789) +(3948,-10785) +(3938,-10760) +(3936,-10762) +(3932,-10759) +(3926,-10772) +(3916,-10774) +(3910,-10782) +(3909,-10789)
\ No newline at end of file |