% 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/01/30 v0.1.2 package to write on grid lines] % 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} \RequirePackage{xparse} %librairies tikz \usetikzlibrary{calc,positioning} %------Variables \newcounter{lgquadri}%compteur des lignes, qui sera incrémenté \definecolor{TyrianPurple}{rgb}{0.4,0.01,0.24} \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} ; } \defKV[Quadrill]{% Grille=\xdef\QuadType{#1},% NbCarreaux=\xdef\QuadNbCar{#1},% Elargir=\xdef\QuadElar{#1},% CouleurBarreSeyes=\xdef\QuadCoulSeyes{#1} }%déf des clés \setKVdefault[Quadrill]{% NbCarreaux=17x5,% Unite=1,% Marge=0,% Elargir=0,% Cadre=false,% Grille=5x5,% CouleurBarreSeyes={red!75} } \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 \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 \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}%valeurs par défaut \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 \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 \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=Plum!66,% CouleurS=LightSteelBlue!33,% 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=LightSteelBlue!50,% 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