% Author : C. Pierquet % licence : Released under the LaTeX Project Public License v1.3c % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PapierGurvan}[2023/09/11 0.1.0 Travailler avec des papiers type Gurvan] %0.1.0 Version initiale %------Packages utiles \RequirePackage{tikz} \RequirePackage{simplekv} \RequirePackage{xstring} \RequirePackage{setspace} %librairies tikz \usetikzlibrary{calc,positioning} %------variables utiles \newcounter{lggurvan}%compteur des lignes, qui sera incrémenté \definecolor{GurvanBleuFonce}{HTML}{B5CAF9} \definecolor{GurvanBleuCiel}{HTML}{DBF1F7} \def\ColGgurvan{gray!75/GurvanBleuFonce/GurvanBleuCiel}%réglure+fondfonce+fondclair \defKV[Gurvan]{% NbCarreaux=\xdef\GurvanNbCar{#1},% Elargir=\xdef\GurvanElar{#1},% CouleurBarre=\xdef\GurvanCoulBarre{#1},% Interligne=\xdef\GurvanInterligne{#1} } \setKVdefault[Gurvan]{% NbCarreaux=17x5,% Unite=1,% Marge=4,% Elargir=0,% Cadre=false,% AffBarres=true,% CouleurBarre={red!75},% Interligne=3 } \NewDocumentCommand\PapierGurvan{ O{} D<>{gray!75/GurvanBleuFonce/GurvanBleuCiel} }{%affichage simple du quadrillage \setcounter{lggurvan}{0}%on réinitialise les lignes \useKVdefault[Gurvan]%on met les clés par défaut \setKV[Gurvan]{#1}%on lit les clés \IfSubStr{#2}{/}%on récupère les 3 couleurs {% \StrBefore[1]{#2}{/}[\GurvanCoulA]% \StrBetween[1,2]{#2}{/}{/}[\GurvanCoulB]% \StrBehind[2]{#2}{/}[\GurvanCoulC]% }% {\def\GurvanCoulA{#2!75}\def\GurvanCoulB{#2!40}\def\GurvanCoulC{#2!20}}%si nonocouleur \StrCut{\GurvanNbCar}{x}{\GurvanNbCol}{\GurvanNbLig}% \IfSubStr{\GurvanElar}{/}%on récupère les élargissements G et D {\StrCut{\GurvanElar}{/}{\GurvanElarG}{\GurvanElarD}}% {\def\GurvanElarG{\GurvanElar}\def\GurvanElarD{\GurvanElar}}% \xdef\ValeurCarreauH{0.8}% \xdef\ValeurCarreauV{\fpeval{0.8*\GurvanInterligne}}% %tikzpicture \begin{tikzpicture}[xscale={\useKV[Gurvan]{Unite}},yscale={\useKV[Gurvan]{Unite}}] \useasboundingbox (0,0) rectangle ({\ValeurCarreauH*\GurvanNbCol},{-\ValeurCarreauV*\GurvanNbLig}) ;%on fixe la grille de base, avant élargissement éventuel %coloriage \def\GurvanNbLigMU{\fpeval{\GurvanNbLig-1}}% \foreach \nblig in {0,1,...,\GurvanNbLigMU}{% %2 lignes bleu ciel du haut \filldraw[draw=none,fill=\GurvanCoulC] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1*2}) ; %2 lignes bleu ciel du bas \filldraw[draw=none,fill=\GurvanCoulC] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8-0.5*\GurvanInterligne}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1*2}) ; %ligne bleu foncé du bas \filldraw[draw=none,fill=\GurvanCoulB] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8-0.7*\GurvanInterligne}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1}) ; } %grilles \draw[xstep=\ValeurCarreauH,ystep={\GurvanInterligne*0.1},\GurvanCoulA] ({-\ValeurCarreauH*\GurvanElarG},0) grid ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\ValeurCarreauV*\GurvanNbLig}) ;%grille gurvan principale \foreach \nblig in {0,1,...,\GurvanNbLig}{% \draw[thick,gray] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*8*\GurvanInterligne*0.1}) -- ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\nblig*8*\GurvanInterligne*0.1}) ; }%lignes principales \ifboolKV[Gurvan]{AffBarres}% {% \draw[very thick,\GurvanCoulBarre] ({\ValeurCarreauH*\useKV[Gurvan]{Marge}},0) -- ({\ValeurCarreauH*\useKV[Gurvan]{Marge}},{-\ValeurCarreauV*\GurvanNbLig}) ;%barre verticale gauche \draw[very thick,gray,densely dashed] ({\ValeurCarreauH*(\GurvanNbCol-2)},0) -- ({\ValeurCarreauH*(\GurvanNbCol-2)},{-\ValeurCarreauV*\GurvanNbLig}) ;%barre verticale froite }{} \end{tikzpicture}% } \NewDocumentEnvironment{EnvGurvan}{ O{} D<>{gray!75/GurvanBleuFonce/GurvanBleuCiel} }%créer le quadrillage, couleurs ? {% \setcounter{lggurvan}{0}%on réinitialise les lignes \useKVdefault[Gurvan]%on met les clés par défaut \setKV[Gurvan]{#1}%on lit les clés \IfSubStr{#2}{/}%on récupère les 3 couleurs {% \StrBefore[1]{#2}{/}[\GurvanCoulA]% \StrBetween[1,2]{#2}{/}{/}[\GurvanCoulB]% \StrBehind[2]{#2}{/}[\GurvanCoulC]% }% {\def\GurvanCoulA{#2!75}\def\GurvanCoulB{#2!40}\def\GurvanCoulC{#2!20}}%si monocouleur \StrCut{\GurvanNbCar}{x}{\GurvanNbCol}{\GurvanNbLig}% \IfSubStr{\GurvanElar}{/}%on récupère les élargissements G et D {\StrCut{\GurvanElar}{/}{\GurvanElarG}{\GurvanElarD}}% {\def\GurvanElarG{\GurvanElar}\def\GurvanElarD{\GurvanElar}}% \xdef\ValeurCarreauH{0.8}% \xdef\ValeurCarreauV{\fpeval{0.8*\GurvanInterligne}}% %tikzpicture \begin{tikzpicture}[xscale={\useKV[Gurvan]{Unite}},yscale={\useKV[Gurvan]{Unite}}] \useasboundingbox (0,0) rectangle ({\ValeurCarreauH*\GurvanNbCol},{-\ValeurCarreauV*\GurvanNbLig}) ;%on fixe la grille de base, avant élargissement éventuel %coloriage \def\GurvanNbLigMU{\fpeval{\GurvanNbLig-1}}% \foreach \nblig in {0,1,...,\GurvanNbLigMU}{% %2 lignes bleu ciel du haut \filldraw[draw=none,fill=\GurvanCoulC] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1*2}) ; %2 lignes bleu ciel du bas \filldraw[draw=none,fill=\GurvanCoulC] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8-0.5*\GurvanInterligne}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1*2}) ; %ligne bleu foncé du bas \filldraw[draw=none,fill=\GurvanCoulB] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*\GurvanInterligne*0.1*8-0.7*\GurvanInterligne}) rectangle++ ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\GurvanInterligne*0.1}) ; } %grilles \draw[xstep=\ValeurCarreauH,ystep={\GurvanInterligne*0.1},\GurvanCoulA] ({-\ValeurCarreauH*\GurvanElarG},0) grid ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\ValeurCarreauV*\GurvanNbLig}) ;%grille gurvan principale \foreach \nblig in {0,1,...,\GurvanNbLig}{% \draw[thick,gray] ({-\ValeurCarreauH*\GurvanElarG},{-\nblig*8*\GurvanInterligne*0.1}) -- ({\ValeurCarreauH*\GurvanNbCol+\ValeurCarreauH*\GurvanElarG},{-\nblig*8*\GurvanInterligne*0.1}) ; }%lignes principales \ifboolKV[Gurvan]{AffBarres}% {% \draw[very thick,\GurvanCoulBarre] ({\ValeurCarreauH*\useKV[Gurvan]{Marge}},0) -- ({\ValeurCarreauH*\useKV[Gurvan]{Marge}},{-\ValeurCarreauV*\GurvanNbLig}) ;%barre verticale gauche \draw[very thick,darkgray,densely dashed] ({\ValeurCarreauH*(\GurvanNbCol-2)},0) -- ({\ValeurCarreauH*(\GurvanNbCol-2)},{-\ValeurCarreauV*\GurvanNbLig}) ;%barre verticale froite }{}% }% {% \end{tikzpicture}% } \newcommand\PasseLigneGurvan{\addtocounter{lggurvan}{1}}%passer une ligne \defKV[LigneGurvan]{Echelle=\xdef\GurvanEchelle{#1}}%déf des clés \setKVdefault[LigneGurvan]{DecalV=0pt,DecalH=0,Sep=0pt,Echelle=1}%valeurs par défaut \NewDocumentCommand\EcrireLigneGurvan{ O{} D<>{left} m }{%écrire sur les lignes l'une après l'autre \addtocounter{lggurvan}{1}% \useKVdefault[LigneGurvan]% \setKV[LigneGurvan]{#1} \node[text width=\fpeval{\ValeurCarreauH*(\GurvanNbCol-2)/\GurvanEchelle-\ValeurCarreauH*\useKV[Gurvan]{Marge}/\GurvanEchelle}cm,align=#2,scale=\GurvanEchelle,anchor=base west,inner sep={\useKV[LigneGurvan]{Sep}}] at ($({\ValeurCarreauH*\useKV[Gurvan]{Marge}+\ValeurCarreauH*\useKV[LigneGurvan]{DecalH}},{-\ValeurCarreauV*\thelggurvan})+(0.025,\useKV[LigneGurvan]{DecalV})$) {\strut #3} ; } %------page entière Gurvan \defKV[GurvanFull]{% Interligne=\xdef\GurvanFullInter{#1},% Papier=\xdef\GurvanFullPapier{#1},% CoulLignes=\xdef\GurvanFullCoulLgn{#1},% CoulFondClair=\xdef\GurvanFullFondClair{#1},% CoulFondFonce=\xdef\GurvanFullFondFonce{#1},% Marges=\xdef\GurvanFullMarges{#1} } \setKVdefault[GurvanFull]{% Interligne=3,% Papier=A4,% CoulLignes=gray!75,% CoulFondClair=GurvanBleuCiel,% CoulFondFonce=GurvanBleuFonce,% Marges={5/2},% NumLignes=false } \NewDocumentEnvironment{PleinePageGurvan}{ O{} }%semble OK ^^ { \useKVdefault[GurvanFull]% \setKV[GurvanFull]{#1}% %variables utiles \def\GurvanHautPapier{297}% \def\GurvanLargPapier{210}% \def\GurvanNbCarreauxIM{\fpeval{26-\GurvanFullMargeG-\GurvanFullMargeD}}% \StrCut{\GurvanFullMarges}{/}{\GurvanFullMargeG}{\GurvanFullMargeD}% \IfStrEq{\GurvanFullPapier}{A5} {% \def\GurvanHautPapier{210}\def\GurvanLargPapier{148}\def\GurvanNbCarreauxIM{\fpeval{18-\GurvanFullMargeG-\GurvanFullMargeD}}% }{}% \def\GurvanNbTotInterLignes{\fpeval{ceil(\GurvanHautPapier/(\GurvanFullInter))}}% \def\GurvanNbTotLignes{\fpeval{ceil(\GurvanHautPapier/(8*\GurvanFullInter))}}% \def\GurvanNbTotColonnes{\fpeval{ceil(\GurvanLargPapier/(8))}}% \begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm] %les fonds \def\GurvanNbTotLignesMU{\fpeval{\GurvanNbTotLignes-1}}% \foreach \nblig in {0,1,...,\GurvanNbTotLignesMU}{% %2 lignes bleu ciel du haut \filldraw[draw=none,fill=\GurvanFullFondClair] ($(current page.north west)+(0,{-\nblig*0.8*\GurvanFullInter})$) rectangle++ ({\paperwidth},{-0.2*\GurvanFullInter}) ; %2 lignes bleu ciel du bas \filldraw[draw=none,fill=\GurvanFullFondClair] ($(current page.north west)+(0,{-\nblig*0.8*\GurvanFullInter-0.5*\GurvanFullInter})$) rectangle++ ({\paperwidth},{-0.2*\GurvanFullInter}) ; %ligne bleu foncé du bas \filldraw[draw=none,fill=\GurvanFullFondFonce] ($(current page.north west)+(0,{-\nblig*0.8*\GurvanFullInter-0.7*\GurvanFullInter})$) rectangle++ ({\paperwidth},{-0.1*\GurvanFullInter}) ; } %grille secondaire \foreach \L in {0,1,...,\GurvanNbTotInterLignes} {\draw[\GurvanFullCoulLgn] ($(current page.north west)+(0,{-\L*0.1*\GurvanFullInter})$)--++({\paperwidth},0) ;} \foreach \C in {0,1,...,\GurvanNbTotColonnes} {\draw[\GurvanFullCoulLgn] ($(current page.north west)+({\C*0.8},0)$)--++(0,{-\paperheight}) ;} %grille principale \foreach \L in {0,1,...,\GurvanNbTotLignes} {\draw[thick,gray] ($(current page.north west)+(0,{-\L*0.8*\GurvanFullInter})$)--++({\paperwidth},0) ;} %marge gauche \draw[red!75,very thick] ($(current page.north west)+({\GurvanFullMargeG*0.8},0)$)--($(current page.south west)+({\GurvanFullMargeG*0.8},0)$) ; %marge droite \draw[gray,densely dashed,very thick] ($(current page.north west)+({(\GurvanFullMargeG+\GurvanNbCarreauxIM)*0.8},0)$)--($(current page.south west)+({(\GurvanFullMargeG+\GurvanNbCarreauxIM)*0.8},0)$) ; %point initial \coordinate (GurvanOrigine) at ($(current page.north west)+({\GurvanFullMargeG*0.8},{-0.8*\GurvanFullInter})$) ; \ifboolKV[GurvanFull]{NumLignes}% {% \foreach \lig in {1,2,...,31} {\node[gray,inner sep=0pt,anchor=base east] at ($(GurvanOrigine)+(-0.2,{-0.8*\GurvanFullInter*(\lig-1)})$) {\scriptsize\sffamily \lig};} }% {}% }% {% \end{tikzpicture}% } \defKV[GurvanLigne]{% Couleur=\xdef\GurvanLigneCouleur{#1},% Echelle=\xdef\GurvanLigneEchelle{#1},% Ligne=\xdef\GurvanLigne{#1},% DecalBord=\xdef\GurvanLigneDecalBord{#1},% TaillePolice=\xdef\GurvanLigneFonte{#1} } \setKVdefault[GurvanLigne]{% Couleur=black,% Ligne=1,% Echelle=1,% DecalBord=0 } \NewDocumentCommand\LigneGurvan{ O{} D<>{left} D(){0,0} m }{% \def\GurvanNbCarreauxLarg{\fpeval{26-\GurvanFullMargeG-\GurvanFullMargeD}}% \IfStrEq{\GurvanFullPapier}{A5}% {% \def\GurvanNbCarreauxLarg{\fpeval{18-\GurvanFullMargeG-\GurvanFullMargeD}}% }{}% \useKVdefault[GurvanLigne]% \setKV[GurvanLigne]{#1}% \node[\GurvanLigneCouleur,text width=\fpeval{0.8*\GurvanNbCarreauxLarg/\GurvanLigneEchelle-0.2*\GurvanLigneDecalBord/\GurvanLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\GurvanLigneEchelle] at ($(GurvanOrigine)+({0.1*\GurvanLigneDecalBord},{-(\GurvanLigne-1)*0.8*\GurvanFullInter})+(#3)$) {#4} ; } \defKV[GurvanPar]{% Couleur=\xdef\GurvanParCouleur{#1},% Echelle=\xdef\GurvanParEchelle{#1},% Espacement=\xdef\GurvanParBaseline{#1},% Ligne=\xdef\GurvanParLgn{#1},% DecalBord=\xdef\GurvanParDecalBord{#1} } \setKVdefault[GurvanPar]{% Couleur=black,% Ligne=1,% Echelle=1,% Espacement=auto,% DecalBord=0 } \NewDocumentCommand\ParagrapheGurvan{ O{} D<>{justify} D(){0,0} m }{% \xdef\GurvanNbCarreauxLarg{\fpeval{26-\GurvanFullMargeG-\GurvanFullMargeD}}% \IfStrEq{\GurvanFullPapier}{A5}% {% \def\GurvanNbCarreauxLarg{\fpeval{18-\GurvanFullMargeG-\GurvanFullMargeD}}% }{}% \IfStrEq{\GurvanParBaseline}{auto}% {% \def\GurvanParStretchPar{\fpeval{8*\GurvanFullInter/\GurvanParEchelle}}% }% {% \def\GurvanParStretchPar{\GurvanParBaseline}% } \useKVdefault[GurvanPar]% \setKV[GurvanPar]{#1}% \node[\GurvanParCouleur,text width=\fpeval{0.8*\GurvanNbCarreauxLarg/\GurvanParEchelle-0.2*\GurvanParDecalBord/\GurvanParEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\GurvanParEchelle,execute at begin node=\setlength{\baselineskip}{\GurvanParStretchPar mm}] at ($(GurvanOrigine)+({0.1*\GurvanParDecalBord},{-(\GurvanParLgn-1)*0.8*\GurvanFullInter})+(#3)$) {#4} ; } \endinput