%%% % Papiers %%% \setKVdefault[Papiers]{Cinq=true,Seyes=false,Echelle=8,Isometrique=false,IsometriquePointe=false,Millimetre=false,Triangle=false,Largeur=5,Hauteur=4,Couleur=black,Grille=-1,GrillePointe=-1,PageEntiere=false,ZoneTexte=false,Baseline=false,CodeAfter=false}% \defKV[Papiers]{Traces=\setKV[Papiers]{CodeAfter}} %\def\MPBaseLineSkip#1#2#3{%à retravailler : ne fonctionne pas :( % % % \ifluatex % \mplibforcehmode % \begin{mplibcode} % path horizon,verticon; % horizon=(0,0)--(#1*cm,0); % %verticon=(0,0)--(0,#2*cm); % drawoptions(withcolor #3); % %for k=0 step 0.5 until #1: % %draw verticon shifted((k*cm,0)); % %endfor; % for k=(#2-(\mpdim{1.6ex}/1cm)) step (-\mpdim{\baselineskip}/1cm) until 0: % draw horizon shifted((0,k*cm)); % endfor; % drawoptions(withcolor blue); % for k=#2 step (-\mpdim{\baselineskip}/1cm) until 0: % draw horizon shifted((0,k*cm)); % endfor; % \end{mplibcode} % \fi %} \def\MPGrilleCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; PapierGrille=\PapierGrille; PapierGrillePointe=\PapierGrillePointe; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; % path horizon,verticon; horizon=(0,0)--(PapierLargeur*cm,0); verticon=(0,0)--(0,PapierHauteur*cm); vardef Papier= picture Papiers; Papiers=image( drawoptions(withcolor PapierCouleur); if PapierGrillePointe>0: for k=0 step (PapierGrillePointe*100) until (PapierLargeur*100): for l=0 step (PapierGrillePointe*100) until (PapierHauteur*100): fill (cercles((0,0),1pt) shifted(((k/100)*cm,(l/100)*cm))); endfor; endfor; else: for k=0 step (PapierGrille*100) until (PapierLargeur*100): draw verticon shifted(((k/100)*cm,0)); endfor; for k=0 step (PapierGrille*100) until (PapierHauteur*100): draw horizon shifted((0,(k/100)*cm)); endfor; fi; ); Papiers enddef; }% \def\MPGrille{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPGrilleCode trace Papier; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPGrilleCode}] trace Papier; \end{mpost}% \fi% }% \def\MPCinq{% \xdef\PapierGrille{0.5}% \MPGrille }% \def\MPSeyesCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; u:=\useKV[Papiers]{Echelle}; path horizon,verticon; horizon=(0,0)--(PapierLargeur*cm,0); verticon=(0,0)--(0,PapierHauteur*cm); vardef Seyes= picture PapierSeyes; PapierSeyes=image( drawoptions(withcolor PapierCouleur); for k=0 step u until (PapierLargeur*10): draw verticon shifted(((k/10)*cm,0)); endfor; for k=0 step (u/4) until (PapierHauteur*10): draw horizon shifted((0,(k/10)*cm)) withpen pencircle scaled 0.5; endfor; for k=0 step u until (PapierHauteur*10): draw horizon shifted((0,(k/10)*cm)) withpen pencircle scaled 1.25; endfor; ); PapierSeyes enddef; } \def\MPSeyes{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPSeyesCode trace Seyes; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPSeyesCode}]% trace Seyes; \end{mpost} \fi% }% \def\MPMillimetreCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; path horizon,verticon; horizon=(0,0)--(PapierLargeur*cm,0); verticon=(0,0)--(0,PapierHauteur*cm); vardef MPMilli= picture MPMillimetre; MPMillimetre=image( drawoptions(withcolor PapierCouleur); for k=0 step 1 until (PapierLargeur*10): draw verticon shifted(((k/10)*cm,0)) withpen pencircle scaled 0.2; endfor; for k=0 step 5 until (PapierLargeur*10): draw verticon shifted(((k/10)*cm,0)) withpen pencircle scaled 0.5; endfor; for k=0 step 1 until (PapierLargeur): draw verticon shifted((k*cm,0)) withpen pencircle scaled 1.25; endfor; for k=0 step 1 until (PapierHauteur*10): draw horizon shifted((0,(k/10)*cm)) withpen pencircle scaled 0.2; endfor; for k=0 step 5 until (PapierHauteur*10): draw horizon shifted((0,(k/10)*cm)) withpen pencircle scaled 0.5; endfor; for k=0 step 1 until (PapierHauteur): draw horizon shifted((0,k*cm)) withpen pencircle scaled 1.25; endfor; ); MPMillimetre enddef; } \def\MPMillimetre{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPMillimetreCode trace MPMilli; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPMillimetreCode}] trace MPMilli; \end{mpost}% \fi% }% \def\MPIsometriqueCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; path diagon,antidiagon; diagon=(0,0)--PapierHauteur*cm*(sqrt(3),1); antidiagon=(0,0)--PapierHauteur*cm*(-sqrt(3),1); vardef MPIso= picture MPIsom; MPIsom=image( drawoptions(withcolor PapierCouleur); for k=0 upto 2*(PapierLargeur+PapierHauteur): draw antidiagon shifted((k*cm,0)); endfor; for k=-(2*ceiling(PapierLargeur+PapierHauteur)) upto (2*ceiling(PapierLargeur+PapierHauteur)): draw diagon shifted((k*cm,0)); endfor; clip currentpicture to polygone((0,0),(PapierLargeur*cm,0),(PapierLargeur*cm,PapierHauteur*cm),(0,PapierHauteur*cm)); ); MPIsom enddef; } \def\MPIsometrique{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPIsometriqueCode trace MPIso; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPIsometriqueCode}] trace MPIso; \end{mpost}% \fi% }% \def\MPIsometriquePointeCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; pair diagon,antidiagon; diagon=(1pt,1pt); antidiagon=(1pt+0.5cm,1pt+0.5*(sqrt(3)*1cm/3)); vardef TraceIsoPointe= picture PapierIsoPointe; PapierIsoPointe=image( drawoptions(withcolor PapierCouleur); for k=0 step (sqrt(3)/3) until (PapierHauteur): for l=0 step 1 until (PapierLargeur): fill (cercles(diagon,1pt) shifted((l*cm,k*cm))); fill (cercles(antidiagon,1pt) shifted((l*cm,k*cm))); endfor; endfor; clip currentpicture to polygone((0,0),(PapierLargeur*cm+2pt,0),(PapierLargeur*cm+2pt,PapierHauteur*cm+1pt),(0,PapierHauteur*cm+1pt)); ); PapierIsoPointe enddef; } \def\MPIsometriquePointe{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPIsometriquePointeCode trace TraceIsoPointe; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPIsometriquePointeCode}] trace TraceIsoPointe; \end{mpost}% \fi% }% \def\MPTriangulaireCode{% PapierLargeur=\PapierLargeur; PapierHauteur=\PapierHauteur; color PapierCouleur; PapierCouleur=\useKV[Papiers]{Couleur}; path horizon,diagon,antidiagon; horizon=(0,0)--(PapierLargeur*cm,0); diagon=(0,0)--PapierHauteur*cm*(sqrt(3)/3,1); antidiagon=(0,0)--PapierHauteur*cm*(-sqrt(3)/3,1); vardef PapierTri= picture PapierTriangle; PapierTriangle=image( drawoptions(withcolor PapierCouleur); for k=0 upto 2*ceiling(PapierLargeur): draw diagon shifted((k*cm,0)); draw antidiagon shifted((k*cm,0)); endfor; for k=sqrt(3) step (sqrt(3)) until (PapierHauteur): draw diagon shifted((0,k*cm)); endfor; for k=0 step (sqrt(3)/2) until (PapierHauteur): draw horizon shifted((0,k*cm)); endfor; clip currentpicture to polygone((0,0),(PapierLargeur*cm,0),(PapierLargeur*cm,PapierHauteur*cm),(0,PapierHauteur*cm)); ); PapierTriangle enddef; } \def\MPTriangulaire{% \ifluatex% \mplibforcehmode% \begin{mplibcode}% \MPTriangulaireCode trace PapierTri; \end{mplibcode}% \else% \begin{mpost}[mpsettings={\MPTriangulaireCode}] trace PapierTri; \end{mpost}% \fi% }% \RequirePackage{ifoddpage} \newlength{\PapierLeftCurrent} \def\PfCPapierTest{% \xintifboolexpr{\useKV[Papiers]{GrillePointe}>0 || \useKV[Papiers]{Grille}>0}{% \MPGrille% }{\ifboolKV[Papiers]{Baseline}{% \MPBaseLineSkip{\PapierLargeur}{\PapierHauteur}{\PapierCouleur}% }{% \ifboolKV[Papiers]{IsometriquePointe}{% \MPIsometriquePointe% }{% \ifboolKV[Papiers]{Triangle}{% \MPTriangulaire% }{\ifboolKV[Papiers]{Millimetre}{% \MPMillimetre% }{\ifboolKV[Papiers]{Isometrique}{% \MPIsometrique% }{\ifboolKV[Papiers]{Seyes}{% \MPSeyes% }{\MPCinq% }% }% }% }% }% }% }% }% \newcommand\Papiers[1][]{% \useKVdefault[Papiers]% \setKV[Papiers]{#1}% \xdef\PapierLargeur{\useKV[Papiers]{Largeur}}% \xdef\PapierHauteur{\useKV[Papiers]{Hauteur}}% \xdef\PapierCouleur{\useKV[Papiers]{Couleur}}% \xdef\PapierGrille{\useKV[Papiers]{Grille}}% \xdef\PapierGrillePointe{\useKV[Papiers]{GrillePointe}}% \ifboolKV[Papiers]{ZoneTexte}{% \checkoddpage\ifoddpage% \setlength{\PapierLeftCurrent}{\oddsidemargin}% \else% \setlength{\PapierLeftCurrent}{\evensidemargin}% \fi% \xdef\PapierLeft{\the\dimexpr1in+\PapierLeftCurrent}% \xdef\PapierBottom{\fpeval{\paperheight-\textheight-\voffset-\headheight-\topmargin-\headsep-1in}}% \xdef\PapierHauteur{\fpeval{\textheight/1cm}}% \xdef\PapierLargeur{\fpeval{\textwidth/1cm}}% \begin{tikzpicture}[remember picture,overlay]% \node[anchor=south west,inner sep=0pt,transform canvas={xshift=\PapierLeft,yshift=\PapierBottom}] at (current page.south west) {% \PfCPapierTest% };% \end{tikzpicture}% }{% \ifboolKV[Papiers]{PageEntiere}{% \checkoddpage\ifoddpage% \setlength{\PapierLeftCurrent}{\oddsidemargin}% \else% \setlength{\PapierLeftCurrent}{\evensidemargin}% \fi% \xdef\PapierLeft{\the\dimexpr1in+\PapierLeftCurrent}% \xdef\PapierBottom{\fpeval{\paperheight-\textheight-\voffset-\headheight-\topmargin-\headsep-1in}}% \xdef\PapierHauteur{\fpeval{\paperheight/1cm}}% \xdef\PapierLargeur{\fpeval{\paperwidth/1cm}}% \begin{tikzpicture}[remember picture,overlay]% \node[anchor=south west,inner sep=0pt] at (current page.south west) {% \PfCPapierTest% };% \end{tikzpicture}% }{% \PfCPapierTest }% }% }%