% 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{WriteOnGrid}[2023/08/09 v0.1.4 package to write on grid lines]
% 0.1.4		Suppression des options de xcolor (définition manuelle des couleurs)
% 0.1.3		Ajout de commandes simples pour des mini-quadrillages autonomes, sans texte
% 0.1.2		Modification locale des couleurs + raccourcis couleurs Seyes / Ruled
% 0.1.1		Ajout de la couleur + modifications mineures + grille "Ruled" + grilles pleine page !
% 0.1.0		Version initiale [fr] & [en]

%------Packages utiles
%\RequirePackage[table,svgnames]{xcolor}
\RequirePackage{tikz}
\RequirePackage{simplekv}
\RequirePackage{xstring}
%librairies tikz
\usetikzlibrary{calc,positioning}

%------Variables
\newcounter{lgquadri}%compteur des lignes, qui sera incrémenté

%-----Couleurs utiles
\definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24}
\definecolor{PapierRose}{HTML}{E6B8E6}
\definecolor{PapierGris}{HTML}{D7E2EE}
\def\CoulSeyes{PapierRose/PapierGris}
\def\CoulRuled{PapierGris/TyrianPurple}
\def\ColSeyes{PapierRose/PapierGris}
\def\ColRuled{PapierGris/TyrianPurple}

% \def\CoulSeyes{Plum!75/LightSteelBlue!50}
% \def\CoulRuled{LightSteelBlue!50/TyrianPurple}
% \def\ColSeyes{Plum!75/LightSteelBlue!50}
% \def\ColRuled{LightSteelBlue!50/TyrianPurple}

%------Commandes [fr]
\newcommand\PasseLigne{\addtocounter{lgquadri}{1}}%passer une ligne

\defKV[LigneQuadrill]{Echelle=\xdef\QuadEchelle{#1}}%déf des clés
\setKVdefault[LigneQuadrill]{DecalV=0pt,DecalH=0,Sep=0pt,Echelle=1}%valeurs par défaut

\NewDocumentCommand\EcrireLigne{ O{} D<>{left} m }{%écrire sur les lignes l'une après l'autre
	\addtocounter{lgquadri}{1}
	\useKVdefault[LigneQuadrill]
	\setKV[LigneQuadrill]{#1}
	\node[text width=\fpeval{\ValeurCarreau*\QuadNbCol/\QuadEchelle-\ValeurCarreau*\useKV[Quadrill]{Marge}/\QuadEchelle}cm,align=#2,scale=\QuadEchelle,anchor=base west,inner sep={\useKV[LigneQuadrill]{Sep}}] at ($({\ValeurCarreau*\useKV[Quadrill]{Marge}+\ValeurCarreau*\useKV[LigneQuadrill]{DecalH}},{-\ValeurCarreau*\thelgquadri})+(0.025,\useKV[LigneQuadrill]{DecalV})$) {\strut #3} ;
}

%déf des clés

\defKV[Quadrill]{%
	Grille=\xdef\QuadType{#1},%
	NbCarreaux=\xdef\QuadNbCar{#1},%
	Elargir=\xdef\QuadElar{#1},%
	CouleurBarreSeyes=\xdef\QuadCoulSeyes{#1}
}

\setKVdefault[Quadrill]{%
	NbCarreaux=17x5,%
	Unite=1,%
	Marge=0,%
	Elargir=0,%
	Cadre=false,%
	Grille=5x5,%
	AffBarre=true,%
	CouleurBarreSeyes={red!75}
}

\NewDocumentCommand\AffQuadrillage{ O{} D<>{lightgray!50/lightgray!25} }{%affichage simple du quadrillage
	\setcounter{lgquadri}{0}%on réinitialise les lignes
	\useKVdefault[Quadrill]%on met les clés par défaut
	\setKV[Quadrill]{#1}%on lit les clés
	\IfSubStr{#2}{/}%on récupère les couleurs
		{\StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}}
		{\def\QuadCoulA{#2}\def\QuadCoulB{#2}}%
	\StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
	\IfStrEq{\QuadType}{Seyes}%les types de quadrillages
		{\xdef\ValeurCarreau{0.8}}%
		{}%
	\IfStrEq{\QuadType}{5x5}%
		{\xdef\ValeurCarreau{0.5}}%
		{}%
	\IfStrEq{\QuadType}{Ruled}%
		{\xdef\ValeurCarreau{0.9}}%
		{}%
	\IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
		{\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
		{\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
	\begin{tikzpicture}[xscale={\useKV[Quadrill]{Unite}},yscale={\useKV[Quadrill]{Unite}}]
		\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
		\IfStrEq{\QuadType}{Seyes}%
			{%
				\draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\ifboolKV[Quadrill]{AffBarre}
					{
						\draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
					}{}
			}%
			{}%
		\IfStrEq{\QuadType}{5x5}%
			{%
				\draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
			}%
			{}%
		\IfStrEq{\QuadType}{Ruled}%
		{%
			\foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
			%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
			\ifboolKV[Quadrill]{AffBarre}
				{
					\draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
				}{}
		}%
		{}%
		\ifboolKV[Quadrill]{Cadre}%cadre pour visualiser la "marge" (officielle)
			{\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
			{}%
	\end{tikzpicture}%
}

\NewDocumentEnvironment{EnvQuadrillage}{ O{} D<>{lightgray!50/lightgray!25} }%créer le quadrillage, couleurs ?
{%
	\setcounter{lgquadri}{0}%on réinitialise les lignes
	\useKVdefault[Quadrill]%on met les clés par défaut
	\setKV[Quadrill]{#1}%on lit les clés
	\IfSubStr{#2}{/}%on récupère les couleurs
		{\StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}}
		{\def\QuadCoulA{#2}\def\QuadCoulB{#2}}%
	\StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
	\IfStrEq{\QuadType}{Seyes}%les types de quadrillages
		{\xdef\ValeurCarreau{0.8}}%
		{}%
	\IfStrEq{\QuadType}{5x5}%
		{\xdef\ValeurCarreau{0.5}}%
		{}%
	\IfStrEq{\QuadType}{Ruled}%
		{\xdef\ValeurCarreau{0.9}}%
		{}%
	\IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
		{\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
		{\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
	\begin{tikzpicture}[xscale={\useKV[Quadrill]{Unite}},yscale={\useKV[Quadrill]{Unite}}]
		\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
		\IfStrEq{\QuadType}{Seyes}%
			{%
				\draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\ifboolKV[Quadrill]{AffBarre}
					{
						\draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
					}{}
			}%
			{}%
		\IfStrEq{\QuadType}{5x5}%
			{%
				\draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
			}%
			{}%
		\IfStrEq{\QuadType}{Ruled}%
		{%
			\foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
			%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
			\ifboolKV[Quadrill]{AffBarre}
				{
					\draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadrill]{Marge}},0) -- ({\ValeurCarreau*\useKV[Quadrill]{Marge}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
				}{}
		}%
		{}%
		\ifboolKV[Quadrill]{Cadre}%cadre pour visualiser la "marge" (officielle)
			{\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
			{}%
	}%
	{%
	\end{tikzpicture}%
}%

%------Commandes [en]
\newcommand\PassLine{\addtocounter{lgquadri}{1}}%passer une ligne

\defKV[LineQuadril]{Scale=\xdef\QuadEchelle{#1}}%déf des clés
\setKVdefault[LineQuadril]{OffsetV=0pt,OffsetH=0,Sep=0pt,Scale=1}%valeurs par défaut

\NewDocumentCommand\WriteLine{ O{} D<>{left} m }{%écrire sur les lignes l'une après l'autre
	\addtocounter{lgquadri}{1}
	\useKVdefault[LineQuadril]
	\setKV[LineQuadril]{#1}
	\node[text width=\fpeval{\ValeurCarreau*\QuadNbCol/\QuadEchelle-\ValeurCarreau*\useKV[Quadrill]{Marge}/\QuadEchelle}cm,align=#2,scale=\QuadEchelle,anchor=base west,inner sep={\useKV[LineQuadril]{Sep}}] at ($({\ValeurCarreau*\useKV[Quadril]{Margin}+\ValeurCarreau*\useKV[LineQuadril]{OffsetH}},{-\ValeurCarreau*\thelgquadri})+(0.025,\useKV[LineQuadril]{OffsetV})$) {\strut #3} ;
}

\defKV[Quadril]{Grid=\xdef\QuadType{#1},NumSquares=\xdef\QuadNbCar{#1},Enlarge=\xdef\QuadElar{#1}}%déf des clés
\setKVdefault[Quadril]{Grid=5x5,NumSquares=17x5,Unit=1,Margin=0,Enlarge=0,Border=false,DispBar=true}%valeurs par défaut

\NewDocumentCommand\DispGrid{ O{} D<>{lightgray!50/lightgray!25} }{%créer le quadrillage
	\setcounter{lgquadri}{0}%on réinitialise les lignes
	\useKVdefault[Quadril]%on met les clés par défaut
	\setKV[Quadril]{#1}%on lit les clés
	\IfSubStr{#2}{/}%on récupère les couleurs
		{\StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}}
		{\def\QuadCoulA{#2}\def\QuadCoulB{#2}}%
	\StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
	\IfStrEq{\QuadType}{Seyes}%les types de quadrillages
		{\xdef\ValeurCarreau{0.8}}%
		{}%
	\IfStrEq{\QuadType}{5x5}%
		{\xdef\ValeurCarreau{0.5}}%
		{}%
	\IfStrEq{\QuadType}{Ruled}%
		{\xdef\ValeurCarreau{0.9}}%
		{}%
	\IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
		{\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
		{\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
	\begin{tikzpicture}[xscale={\useKV[Quadril]{Unit}},yscale={\useKV[Quadril]{Unit}}]
		\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
		\IfStrEq{\QuadType}{Seyes}%
			{%
				\draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\ifboolKV[Quadril]{DispBar}
					{
						\draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
					}{}
			}%
			{}%
		\IfStrEq{\QuadType}{5x5}%
			{%
				\draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
			}%
			{}%
		\IfStrEq{\QuadType}{Ruled}%
		{%
			\foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
			%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
			\ifboolKV[Quadril]{DispBar}
					{
						\draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
					}{}
		}%
		{}%
		\ifboolKV[Quadril]{Border}%cadre pour la "marge"
			{\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
			{}%
	\end{tikzpicture}%
}%

\NewDocumentEnvironment{EnvGrid}{ O{} D<>{lightgray!50/lightgray!25} }%créer le quadrillage
{%
	\setcounter{lgquadri}{0}%on réinitialise les lignes
	\useKVdefault[Quadril]%on met les clés par défaut
	\setKV[Quadril]{#1}%on lit les clés
	\IfSubStr{#2}{/}%on récupère les couleurs
		{\StrCut{#2}{/}{\QuadCoulA}{\QuadCoulB}}
		{\def\QuadCoulA{#2}\def\QuadCoulB{#2}}%
	\StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}%
	\IfStrEq{\QuadType}{Seyes}%les types de quadrillages
		{\xdef\ValeurCarreau{0.8}}%
		{}%
	\IfStrEq{\QuadType}{5x5}%
		{\xdef\ValeurCarreau{0.5}}%
		{}%
	\IfStrEq{\QuadType}{Ruled}%
		{\xdef\ValeurCarreau{0.9}}%
		{}%
	\IfSubStr{\QuadElar}{/}%on récupère les élargissements G et D
		{\StrCut{\QuadElar}{/}{\QuadElarG}{\QuadElarD}}%
		{\def\QuadElarG{\QuadElar}\def\QuadElarD{\QuadElar}}%
	\begin{tikzpicture}[xscale={\useKV[Quadril]{Unit}},yscale={\useKV[Quadril]{Unit}}]
		\useasboundingbox (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;%on fixe la grille de base, avant élargissement éventuel
		\IfStrEq{\QuadType}{Seyes}%
			{%
				\draw[xstep=0.8,ystep=0.2,thin,\QuadCoulB] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\draw[xstep=0.8,ystep=0.8,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes
				\ifboolKV[Quadril]{DispBar}
					{
						\draw[thick,\QuadCoulSeyes] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre Seyes
					}{}
			}%
			{}%
		\IfStrEq{\QuadType}{5x5}%
			{%
				\draw[xstep=0.5,ystep=0.5,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5
			}%
			{}%
		\IfStrEq{\QuadType}{Ruled}%
		{%
			\foreach \LLL in {0,1,...,\QuadNbLig} {\draw[,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},{-\LLL*\ValeurCarreau}) -- ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\LLL}) ; }
			%\draw[xstep={\ValeurCarreau*\QuadNbCol},ystep=0.9,thin,\QuadCoulA] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille college
			\ifboolKV[Quadril]{DispBar}
					{
						\draw[thick,\QuadCoulB] ({\ValeurCarreau*\useKV[Quadril]{Margin}},0) -- ({\ValeurCarreau*\useKV[Quadril]{Margin}},{-\ValeurCarreau*\QuadNbLig}) ;%barre college
					}{}
		}%
		{}%
		\ifboolKV[Quadril]{Border}%cadre pour la "marge"
			{\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}%
			{}%
	}%
	{%
	\end{tikzpicture}%
}%

%------page entière seyes
\defKV[SeyesFull]{%
	CouleurP=\xdef\SeyesFullCoulP{#1},%
	CouleurS=\xdef\SeyesFullCoulS{#1},%
	CouleurMarge=\xdef\SeyesFullCoulM{#1}
}
\setKVdefault[SeyesFull]{%
	CouleurP=PapierRose,%
	CouleurS=PapierGris,%
	CouleurMarge=red!75,
	NumLignes=false
}

\NewDocumentEnvironment{PleinePageSeyes}{ O{} }%semble OK ^^
{
	\useKVdefault[SeyesFull]
	\setKV[SeyesFull]{#1}
	\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
		%grille secondaire
		\foreach \L in {0,1,...,125} {\draw[\SeyesFullCoulS] ($(current page.north west)+(0,{-2.4-\L*0.2})$)--++({\paperwidth},0) ;}
		%grille principale
		\foreach \C in {1,2,...,21} {\draw[\SeyesFullCoulP] ($(current page.north west)+({4+0.8*\C},0)$)--($(current page.south west)+({4+0.8*\C},0)$) ;}
		\foreach \L in {0,1,...,30} {\draw[\SeyesFullCoulP] ($(current page.north west)+(0,{-3-\L*0.8})$)--++({\paperwidth},0) ;}
		%marge
		\draw[\SeyesFullCoulM,thick] ($(current page.north west)+(4,0)$)--($(current page.south west)+(4,0)$) ;
		\coordinate (SeyesOrigine) at ($(current page.north west)+(4,-3)$) ;
		\ifboolKV[SeyesFull]{NumLignes}%
			{%
				\foreach \lig in {1,2,...,31} {\node[gray,inner sep=0pt,anchor=base east] at ($(SeyesOrigine)+(-0.2,{-0.8*(\lig-1)})$) {\scriptsize\sffamily \lig};}
			}%
			{}
}
{
	\end{tikzpicture}%
}

\newcommand\CadreNoteSeyes[2][3]{%on précise la {ligne de début} + [hauteur]
	%cadre de note
	\draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.8})$) --++ ({\paperwidth-4cm},{0}) ;
	\draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.8})$) --++ ({0},{-#1*0.8}) ;
	\draw[thick] ($(SeyesOrigine)+(0,{(-#2+1-#1)*0.8})$) --++ ({\paperwidth-4cm},{0}) ;
	\draw[thick] ($(SeyesOrigine)+(0,{(-#2+1)*0.8})$) rectangle++ ({#1.*0.8},{-#1*0.8}) ;
	\draw[thick] ($(SeyesOrigine)+(0,{(-#2+1-#1)*0.8})$) --++ ({#1.*0.8},{#1*0.8}) ;
}

\defKV[SeyesLigne]{%
	Couleur=\xdef\SeyesLigneCouleur{#1},%
	Echelle=\xdef\SeyesLigneEchelle{#1},%
	Ligne=\xdef\SeyesLigne{#1},%
	Largeur=\xdef\SeyesLigneLarg{#1}
}
\setKVdefault[SeyesLigne]{%
	Couleur=black,%
	Ligne=1,%
	Echelle=1,%
	Largeur=16.5
}

\NewDocumentCommand\LignePapierSeyes{ O{} D<>{left} D(){0,0} m }{%
	\useKVdefault[SeyesLigne]
	\setKV[SeyesLigne]{#1}
	\node[\SeyesLigneCouleur,text width=\fpeval{\SeyesLigneLarg/\SeyesLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\SeyesLigneEchelle] at ($(SeyesOrigine)+(0.05,{-(\SeyesLigne-1)*0.8})+(#3)$) {#4} ;
	}

\defKV[SeyesPar]{%
	Couleur=\xdef\SeyesParCouleur{#1},%
	TaillePolice=\xdef\SeyesParEchelle{#1},%
	Espacement=\xdef\SeyesParBase{#1},%
	Ligne=\xdef\SeyesPar{#1},%
	Largeur=\xdef\SeyesParLarg{#1}
}
\setKVdefault[SeyesPar]{%
	Couleur=black,%
	Ligne=1,%
	TaillePolice=11,%
	Espacement=22.792,%
	Largeur=16.5
}

\NewDocumentCommand\ParagraphePapierSeyes{ O{} D<>{justify} D(){0,0} m }{%
	\useKVdefault[SeyesPar]
	\setKV[SeyesPar]{#1}
	\node[\SeyesParCouleur,text width=\SeyesParLarg cm,align=#2,inner sep=0pt,anchor=base west,font=\fontsize{\SeyesParEchelle}{\SeyesParBase}\selectfont] at ($(SeyesOrigine)+(0.05,{-(\SeyesPar-1)*0.8})+(#3)$) {#4} ;
}

%------page entière 5x5
\defKV[CxCFull]{%
	Couleur=\xdef\CCFullCoul{#1},%
	CouleurMarge=\xdef\CCFullCoulM{#1}
}
\setKVdefault[CxCFull]{%
	Couleur=lightgray!50,%
	CouleurMarge=gray,%
	NumLignes=false
}

\NewDocumentEnvironment{PleinePageCinqCinq}{ O{} }%semble OK ^^
{
	\useKVdefault[CxCFull]
	\setKV[CxCFull]{#1}
	\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
		%lignes horizontales
		\foreach \L in {0,1,...,58} {\draw[\CCFullCoul] ($(current page.north west)+(0,{-0.3-\L*0.5})$)--++({\paperwidth},0) ;}
		%lignes verticales
		\foreach \C in {0,1,...,41} {\draw[\CCFullCoul] ($(current page.north west)+({0.2+0.5*\C},0)$)--($(current page.south west)+({0.2+0.5*\C},0)$) ;}
		%marge
		\draw[\CCFullCoulM,thick] ($(current page.north west)+(1.7,0)$)--($(current page.south west)+(1.7,0)$) ;
		\coordinate (CinqCinqOrigine) at ($(current page.north west)+(1.7,-1.3)$) ;
		\ifboolKV[CxCFull]{NumLignes}%
		{%
			\foreach \lig in {1,2,...,57} {\node[gray,inner sep=0pt,anchor=base east] at ($(CinqCinqOrigine)+(-0.2,{-0.5*(\lig-1)})$) {\tiny\sffamily \lig};}
		}%
		{}
	}
	{
	\end{tikzpicture}%
}

\newcommand\CadreNoteCinqCinq[2][3]{%on précise la {ligne de début} + [hauteur]
	%cadre de note
	\draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) --++ ({\paperwidth-1.7cm},{0}) ;
	\draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) --++ ({0},{-#1*0.5}) ;
	\draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1-#1)*0.5})$) --++ ({\paperwidth-1.7cm},{0}) ;
	\draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1)*0.5})$) rectangle++ ({#1.*0.5},{-#1*0.5}) ;
	\draw[thick] ($(CinqCinqOrigine)+(0,{(-#2+1-#1)*0.5})$) --++ ({#1.*0.5},{#1*0.5}) ;
}

\defKV[CCLigne]{%
	Couleur=\xdef\CCLigneCouleur{#1},%
	Echelle=\xdef\CCLigneEchelle{#1},%
	Ligne=\xdef\CCLigne{#1},%
	Largeur=\xdef\CCLigneLarg{#1}
}
\setKVdefault[CCLigne]{%
	Couleur=black,%
	Ligne=1,%
	Echelle=1,%
	Largeur=18.7
}

\NewDocumentCommand\LignePapierCinqCinq{ O{} D<>{left} D(){0,0} m }{%
	\useKVdefault[CCLigne]
	\setKV[CCLigne]{#1}
	\node[\CCLigneCouleur,text width=\fpeval{\CCLigneLarg/\CCLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\CCLigneEchelle] at ($(CinqCinqOrigine)+(0.05,{-(\CCLigne-1)*0.5})+(#3)$) {#4} ;
}

\defKV[CCPar]{%
	Couleur=\xdef\CCParCouleur{#1},%
	TaillePolice=\xdef\CCParEchelle{#1},%
	Espacement=\xdef\CCParBase{#1},%
	Ligne=\xdef\CCPar{#1},%
	Largeur=\xdef\CCParLarg{#1}
}
\setKVdefault[CCPar]{%
	Couleur=black,%
	Ligne=1,%
	TaillePolice=11,%
	Espacement=28.5,%
	Largeur=18.75
}

\NewDocumentCommand\ParagraphePapierCinqCinq{ O{} D<>{justify} D(){0,0} m }{%
	\useKVdefault[CCPar]
	\setKV[CCPar]{#1}
	\node[\CCParCouleur,text width=\CCParLarg cm,align=#2,inner sep=0pt,anchor=base west,font=\fontsize{\CCParEchelle}{\CCParBase}\selectfont] at ($(CinqCinqOrigine)+(0.05,{-(\CCPar-1)*0.5})+(#3)$) {#4} ;
}

%------page entière ruled
\defKV[RuledFull]{%
	Couleur=\xdef\RuledFullCoul{#1},%
	CouleurMarge=\xdef\RuledFullCoulMarge{#1}
}
\setKVdefault[RuledFull]{%
	Couleur=PapierGris,%
	CouleurMarge=TyrianPurple,%
	NumLignes=false
}

\NewDocumentEnvironment{PleinePageRuled}{ O{} }%semble OK ^^
{
	\useKVdefault[RuledFull]
	\setKV[RuledFull]{#1}
	\begin{tikzpicture}[remember picture,overlay,x=1cm,y=1cm]
		%lignes horizontales
		\foreach \L in {1.5,2.4,...,27.6} {\draw[\RuledFullCoul] ($(current page.north west)+(0,{-\L})$)--++({\paperwidth},0) ;}
		%lignes verticales
		\draw[thick,\RuledFullCoulMarge] ($(current page.north west)+(3,0)$)--($(current page.south west)+(3,0)$) ;
		\draw[thick,\RuledFullCoulMarge] ($(current page.north east)+(-3,0)$)--($(current page.south east)+(-3,0)$) ;
		%\foreach \C in {3} {\draw[thick,\RuledFullCoulMarge] ($(current page.north west)+({\C},0)$)--($(current page.south west)+({\C},0)$) ;}
		%origine
		\coordinate (RuledOrigine) at ($(current page.north west)+(3,-1.5)$) ;
		\ifboolKV[RuledFull]{NumLignes}%
		{%
			\foreach \lig in {1,2,...,30} {\node[gray,inner sep=0pt,anchor=base east] at ($(RuledOrigine)+(-0.2,{-0.9*(\lig-1)})$) {\tiny\sffamily \lig};}
		}%
		{}
	}
	{
	\end{tikzpicture}%
}

\newcommand\CadreNoteRuled[2][3]{%on précise la {ligne de début} + [hauteur]
	%cadre de note
	\draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) --++ ({\paperwidth-6cm},{0}) ;
	\draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) --++ ({0},{-#1*0.9}) ;
	\draw[thick] ($(RuledOrigine)+({\paperwidth-6},{(-#2+1)*0.9})$) --++ ({0},{-#1*0.9}) ;
	\draw[thick] ($(RuledOrigine)+(0,{(-#2+1-#1)*0.9})$) --++ ({\paperwidth-6cm},{0}) ;
	\draw[thick] ($(RuledOrigine)+(0,{(-#2+1)*0.9})$) rectangle++ ({#1.*0.9},{-#1*0.9}) ;
	\draw[thick] ($(RuledOrigine)+(0,{(-#2+1-#1)*0.9})$) --++ ({#1.*0.9},{#1*0.9}) ;
}

\defKV[RuledLigne]{%
	Couleur=\xdef\RuledLigneCouleur{#1},%
	Echelle=\xdef\RuledLigneEchelle{#1},%
	Ligne=\xdef\RuledLigne{#1},%
	Largeur=\xdef\RuledLigneLarg{#1}
}
\setKVdefault[RuledLigne]{%
	Couleur=black,%
	Ligne=1,%
	Echelle=1,%
	Largeur=14.75
}

\NewDocumentCommand\LignePapierRuled{ O{} D<>{left} D(){0,0} m }{%
	\useKVdefault[RuledLigne]
	\setKV[RuledLigne]{#1}
	\node[\RuledLigneCouleur,text width=\fpeval{\RuledLigneLarg/\RuledLigneEchelle}cm,align=#2,inner sep=0pt,anchor=base west,scale=\RuledLigneEchelle] at ($(RuledOrigine)+(0.05,{-(\RuledLigne-1)*0.9})+(#3)$) {#4} ;
}

\defKV[RuledPar]{%
	Couleur=\xdef\RuledParCouleur{#1},%
	TaillePolice=\xdef\RuledParEchelle{#1},%
	Espacement=\xdef\RuledParBase{#1},%
	Ligne=\xdef\RuledPar{#1},%
	Largeur=\xdef\RuledParLarg{#1}
}
\setKVdefault[RuledPar]{%
	Couleur=black,%
	Ligne=1,%
	TaillePolice=11,%
	Espacement=25.641,%
	Largeur=14.75
}

\NewDocumentCommand\ParagraphePapierRuled{ O{} D<>{justify} D(){0,0} m }{%
	\useKVdefault[RuledPar]
	\setKV[RuledPar]{#1}
	\node[\RuledParCouleur,text width=\RuledParLarg cm,align=#2,inner sep=0pt,anchor=base west,font=\fontsize{\RuledParEchelle}{\RuledParBase}\selectfont] at ($(RuledOrigine)+(0.05,{-(\RuledPar-1)*0.9})+(#3)$) {#4} ;
}

\endinput