diff options
author | Karl Berry <karl@freefriends.org> | 2023-01-17 21:05:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-01-17 21:05:55 +0000 |
commit | 6d6a43be1044f6d2a5de2480e960a8bd11bf6676 (patch) | |
tree | a8ba84b875bbe482fe0aeeec67394af0a0f58a4a /Master/texmf-dist/tex | |
parent | 9f1f2285cd9c7ae5e46b47e565a0bfc02364fbe5 (diff) |
writeongrid (17jan23)
git-svn-id: svn://tug.org/texlive/trunk@65571 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty new file mode 100644 index 00000000000..096ea98be14 --- /dev/null +++ b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty @@ -0,0 +1,116 @@ +% 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/16 v0.1.0 package to write on grid lines] +% 0.1.0 Version initiale [fr] & [en] + +%------Packages utiles +\RequirePackage{tikz} +\RequirePackage{simplekv} +\RequirePackage{xstring} +\RequirePackage{xparse} +%librairies tikz +\usetikzlibrary{calc,positioning} + +%------Variables +\newcounter{lgquadri}%compteur des lignes, qui sera incrémenté + +%------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-\ValeurCarreau*\useKV[Quadrill]{Marge}}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,\useKV[LigneQuadrill]{DecalV})$) {\strut #3} ; +} + +\defKV[Quadrill]{NbCarreaux=\xdef\QuadNbCar{#1},Elargir=\xdef\QuadElar{#1}}%déf des clés +\setKVdefault[Quadrill]{NbCarreaux=17x5,Unite=1,Marge=0,Elargir=0,Cadre=false,Seyes=false}%valeurs par défaut (nbc x nbl) + +\NewDocumentEnvironment{EnvQuadrillage}{ O{} D<>{gray} }%créer le 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 + \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}% + \ifboolKV[Quadrill]{Seyes}%seyes ou 5x5 + {\xdef\ValeurCarreau{0.8}}% + {\xdef\ValeurCarreau{0.5}}% + \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}},trim left={(0,0)},trim right={({\QuadNbCol},0)}] + \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 + \ifboolKV[Quadrill]{Seyes}%seyes ou 5x5 + {% + \draw[xstep=0.8,ystep=0.2,thin,#2!50] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes + \draw[xstep=0.8,ystep=0.8,#2!85] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes + + }% + {% + \draw[xstep=0.5,ystep=0.5,thin,#2!50] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5 + }% + + \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-\ValeurCarreau*\useKV[Quadril]{Margin}}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,\useKV[LineQuadril]{OffsetV})$) {\strut #3} ; +} + +\defKV[Quadril]{NumSquares=\xdef\QuadNbCar{#1},Enlarge=\xdef\QuadElar{#1}}%déf des clés +\setKVdefault[Quadril]{NumSquares=17x5,Unit=1,Margin=0,Enlarge=0,Border=false,Seyes=false}%valeurs par défaut + +\NewDocumentEnvironment{EnvGrid}{ O{} D<>{gray} }%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 + \StrCut{\QuadNbCar}{x}{\QuadNbCol}{\QuadNbLig}% + \ifboolKV[Quadril]{Seyes}%seyes ou 5x5 + {\xdef\ValeurCarreau{0.8}}% + {\xdef\ValeurCarreau{0.5}}% + \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}},trim left={(0,0)},trim right={({\QuadNbCol},0)}] + \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 + \ifboolKV[Quadril]{Seyes}%seyes ou 5x5 + {% + \draw[xstep=0.8,ystep=0.2,thin,#2!75] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes + \draw[xstep=0.8,ystep=0.8,#2] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille seyes + + }% + {% + \draw[xstep=0.5,ystep=0.5,thin,#2!75] ({-\ValeurCarreau*\QuadElarG},0) grid ({\ValeurCarreau*\QuadNbCol+\ValeurCarreau*\QuadElarD},{-\ValeurCarreau*\QuadNbLig}) ;%grille 5x5 + }% + + \ifboolKV[Quadril]{Border}%cadre pour la "marge" + {\draw[thick] (0,0) rectangle ({\ValeurCarreau*\QuadNbCol},{-\ValeurCarreau*\QuadNbLig}) ;}% + {}% + }% + {% + \end{tikzpicture}% +}% +\endinput
\ No newline at end of file |