texlive[73309] Master/texmf-dist: pixelarttikz (4jan25)
commits+karl at tug.org
commits+karl at tug.org
Sat Jan 4 21:49:48 CET 2025
Revision: 73309
https://tug.org/svn/texlive?view=revision&revision=73309
Author: karl
Date: 2025-01-04 21:49:48 +0100 (Sat, 04 Jan 2025)
Log Message:
-----------
pixelarttikz (4jan25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf
trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex
trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf
trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex
trunk/Master/texmf-dist/doc/latex/pixelarttikz/base.csv
trunk/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
Modified: trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex 2025-01-04 20:49:36 UTC (rev 73308)
+++ trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex 2025-01-04 20:49:48 UTC (rev 73309)
@@ -45,8 +45,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.5}
-\def\TPdate{31/10/2024}
+\def\TPversion{0.1.6}
+\def\TPdate{04/01/2025}
\usepackage{minted2}
\usepackage[most]{tcolorbox}
\tcbuselibrary{minted}
@@ -904,10 +904,41 @@
\end{tabular}
\end{PresentationCode}
+\pagebreak
+
+\section{With datatool}
+
+\subsection{Macros}
+
+\begin{PresentationCode}{listing only}
+%reading of csv
+\readdtcsv{file.csv}{readname}
+
+%full pixelart (french keys for the moment...)
+\dtpixlarttikz[keys]{readname}
+
+%cut pixelart (french keys for the moment...)
+\dtpixlarttikzblock[clés]{readname}{LxC or L+C}{numblock}
+\end{PresentationCode}
+
+\begin{PresentationCode}{}
+%reading of csv (koala)
+\readdtcsv{PAkoala.csv}{DTkoala}
+
+%full pixelart
+\dtpixlarttikz[Correction,Unite=0.125,Codes=ABCDEFGHI,Couleurs={\listcoulkoala},Decoupage=8x8]{DTkoala}
+
+%cut pixelart (french keys for the moment...)
+\dtpixlarttikzblock[Unite=0.125,Correction,Codes=ABCDEFGHI,Couleurs={\listcoulkoala}]%
+ {DTkoala}{8x8}{1/1}
+\end{PresentationCode}
+
\newpage
\part{History}
+\verb|v0.1.6|~:~~~~Styles for lines + \textsf{datatool} for alternative version
+
\verb|v0.1.5|~:~~~~Symbols can be given with list(s) + Enhancements of internal code
\verb|v0.1.4|~:~~~~Anamorphic cylinder PixelArts
Modified: trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex 2025-01-04 20:49:36 UTC (rev 73308)
+++ trunk/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex 2025-01-04 20:49:48 UTC (rev 73309)
@@ -44,8 +44,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.5}
-\def\TPdate{31 octobre 2024}
+\def\TPversion{0.1.6}
+\def\TPdate{4 janvier 2025}
\usepackage{minted2}
\usepackage[most]{tcolorbox}
@@ -207,12 +207,12 @@
Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \textsf{filecontents} (intégré en natif sur les dernières versions de \LaTeX) :
\begin{PresentationCode}{listing only}
- \begin{filecontents*}{nomfichier.csv}
- A,B,C,D
- A,B,D,C
- B,A,C,D
- B,A,D,C
- \end{filecontents*}
+\begin{filecontents*}{nomfichier.csv}
+ A,B,C,D
+ A,B,D,C
+ B,A,C,D
+ B,A,D,C
+\end{filecontents*}
\end{PresentationCode}
À la compilation, le fichier \textsf{nomfichier.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}.
@@ -238,6 +238,8 @@
%\RequirePackage[legacy]{csvsimple}
\end{PresentationCode}
+À noter qu'une version alternative \textit{simple}, avec le package \textsf{datatool}, est également disponible.
+
\subsection{Packages utilisés}
Le package est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
@@ -1140,8 +1142,47 @@
\pagebreak
+\section{Avec le package datatool}
+
+\subsection{Commandes}
+
+Le package \textsf{datatool}, chargé par \textsf{PixelArtTikz}, permet de représenter un PixelArt (sans environnement).
+
+Les clés sont les mêmes que pour la version \textsf{csvsimple}, mais il est nécessaire de \textit{traiter} le ficher \textsf{csv} en amont des tracés.
+
+\begin{PresentationCode}{listing only}
+%lecture du fichier csv
+\readdtcsv{fichier.csv}{nomlecture}
+
+%traitement du PixelArt complet
+\dtpixlarttikz[clés]{nomlecture}
+
+%traitement du PixelArt en mode découpage
+\dtpixlarttikzblock[clés]{nomlecture}{LxC ou L+C}{numbloc}
+\end{PresentationCode}
+
+À noter que la commande est autonome, ne permet pas d'ajouts éventuels, mais est compatible avec le traitement par découpage (mais sans création automatique des blocs de découpage avec présentation).
+
+\subsection{Exemple}
+
+\begin{PresentationCode}{}
+%lecture du fichier csv (koala)
+\readdtcsv{PAkoala.csv}{DTkoala}
+
+%traitement du PixelArt complet
+\dtpixlarttikz[Correction,Unite=0.125,Codes=ABCDEFGHI,Couleurs={\listcoulkoala},Decoupage=8x8]{DTkoala}
+
+%traitement du PixelArt en mode découpage
+\dtpixlarttikzblock[Unite=0.125,Correction,Codes=ABCDEFGHI,Couleurs={\listcoulkoala}]%
+ {DTkoala}{8x8}{1/1}
+\end{PresentationCode}
+
+\pagebreak
+
\part{Historique}
+\verb|v0.1.6|~:~~~~Ajout d'un style pour les traits + utilisation de \textsf{datatool} (plus rapide ?)
+
\verb|v0.1.5|~:~~~~Symboles sous forme de liste(s) (éléments tirés aléatoirement) + Amélioration du traitement
\verb|v0.1.4|~:~~~~PixelArts avec anamorphose cylindrique
Modified: trunk/Master/texmf-dist/doc/latex/pixelarttikz/base.csv
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pixelarttikz/base.csv 2025-01-04 20:49:36 UTC (rev 73308)
+++ trunk/Master/texmf-dist/doc/latex/pixelarttikz/base.csv 2025-01-04 20:49:48 UTC (rev 73309)
@@ -1,4 +1,4 @@
-A,B,C,D
-A,B,D,C
-B,A,D,C
-C,A,B,D
+ A,B,C,D
+ A,B,D,C
+ B,A,D,C
+ C,A,B,D
Modified: trunk/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty 2025-01-04 20:49:36 UTC (rev 73308)
+++ trunk/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty 2025-01-04 20:49:48 UTC (rev 73309)
@@ -1,8 +1,9 @@
% Author.........: C. Pierquet
-% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{PixelArtTikz}[2024/10/31 v0.1.5 PixelArts with csv and TikZ]
+\ProvidesPackage{PixelArtTikz}[2025/01/04 v0.1.6 PixelArts with csv and TikZ]
+% 0.1.6 Ajout d'un style pour les traits + utilisation de datatool (plus rapide ?)
% 0.1.5 Amélioration du code interne + possibilité de créer des grilles avec des symboles choisis dans une liste
% 0.1.4 Cylinder anamorphic pixelart
% 0.1.3 Split PA into grid
@@ -25,8 +26,6 @@
\RequirePackage{multicol}
\RequirePackage{listofitems}
\RequirePackage{ifthen}
-%librairies tikz
-%\usetikzlibrary{calc,shapes.geometric}
%cvs
\if at csvii
\RequirePackage[legacy]{csvsimple}
@@ -35,6 +34,11 @@
\RequirePackage[l3]{csvsimple}
\fi
+%------Styles tikz
+\tikzset{pixlarttrait/.style={}}
+\tikzset{pixlarttraitdecoup/.style={thick,purple}}
+\tikzset{pixlartnoticedecoup/.style={font=\large\sffamily}}
+
\NewDocumentCommand\TraiteListeSymbPixelArt{ m }{%
\IfSubStr{#1}{§}%
{%
@@ -79,8 +83,6 @@
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\ifnum\pixcnt>0%
\ifboolKV[pixelarttkz]{BordCases}%
@@ -87,14 +89,6 @@
{\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
{\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
\fi%
- %\xintifboolexpr{\pixcnt>0}%
- % {%
- % %\itemtomacro\LCPA[\pixcnt]\pixcol%
- % \ifboolKV[pixelarttkz]{BordCases}%
- % {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- % {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}%
- % }%
- % {}%
}%
}%
}%
@@ -105,8 +99,6 @@
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
@@ -142,8 +134,8 @@
\IfSubStr{\PATdecoup}{x}%
{%
\StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits
- \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
- \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
}%
{}%
\IfSubStr{\PATdecoup}{+}%
@@ -151,8 +143,8 @@
\StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}%
\def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}%
\def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}%
- \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
- \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}%
}%
{}%
}%
@@ -171,8 +163,6 @@
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -192,8 +182,6 @@
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
@@ -254,8 +242,6 @@
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -275,8 +261,6 @@
\csvloop{file=#4,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
@@ -341,8 +325,6 @@
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -362,8 +344,6 @@
\csvloop{file=#3,no head,command={%
\foreach \l [count=\n] in \csvline {%
\StrDel{\l}{ }[\l]%
- %\setsepchar{,}%
- %\readlist*\LCNA\PATchiffres%
\StrPosition{\PATlettres}{\l}[\pixpos]%
\xintifboolexpr{\pixpos>0}%
{%
@@ -500,6 +480,8 @@
\StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
\xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
\xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
%affichage du corrigé / display of correction
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkz]{Correction}%
@@ -507,7 +489,7 @@
\readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
@@ -532,7 +514,7 @@
\readlist*\LCNA\PATchiffres%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
@@ -553,7 +535,7 @@
{%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\IfSubStr{\PATlettres}{\l}%
@@ -623,7 +605,7 @@
\begin{tikzpicture}[scale=#2,transform shape]
\xintFor* ##1 in {\xintSeq{1}{\NbTotLig}}\do{%
\xintFor* ##2 in {\xintSeq{1}{\NbTotCol}}\do{%
- \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ;
+ \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway,pixlartnoticedecoup] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ;
}%
}%
\end{tikzpicture}%
@@ -655,6 +637,8 @@
\StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
\xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
\xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
%affichage du corrigé / display of correction
\begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
\ifboolKV[pixelarttkzen]{Correction}%
@@ -662,7 +646,7 @@
\readlist*\LCPA\PATcouleurs%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
@@ -687,7 +671,7 @@
\readlist*\LCNA\PATchiffres%
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
@@ -708,7 +692,7 @@
{%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
\csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={%
\foreach \l [count=\n] in \csvline {%
- \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}%
+ \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}%
{%
\StrDel{\l}{ }[\l]%
\IfSubStr{\PATlettres}{\l}%
@@ -1065,5 +1049,199 @@
}%
}
+%-----With datatool, faster ?
+\RequirePackage{datatool}
+\NewDocumentCommand\readdtcsv{ m m }{%
+ \DTLsetseparator{|}%
+ \DTLloaddb[noheader,keys={cvsline}]{#2}{#1}%
+}
+
+\NewDocumentCommand\dtpixlarttikz{ O{} D<>{} m }{%commande autonome
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#1}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \readlist*\LCPA\PATcouleurs%
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \StrPosition{\PATlettres}{\PAchar}[\pixcnt]%
+ \ifnum\pixcnt>0%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill={\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}%
+ {\filldraw[{\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}%
+ \fi%
+ }
+ % \foreach \l [count=\n] in \csvline {%old vesion, with foreach ?
+ % \StrPosition{\PATlettres}{\l}[\pixcnt]%
+ % \ifnum\pixcnt>0%
+ % \ifboolKV[pixelarttkz]{BordCases}%
+ % {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}%
+ % {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}%
+ % \fi%
+ % }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}%
+ {%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \StrPosition{\PATlettres}{\PAchar}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
+ }%
+ {}%
+ }
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \DTLforeach*{#3}{\csvline=cvsline}{%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \IfSubStr{\PATlettres}{\PAchar}%
+ {%
+ \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ %affichage des découpages éventuels
+ \IfStrEq{\PATdecoup}{}%
+ {}%
+ {%
+ \xdef\NbLigTot{\DTLrowcount{#3}}%
+ \DTLgetvalue{\myvalrowone}{#3}{1}{1}%
+ \StrCount{\myvalrowone}{,}[\NbColTot]%
+ \xdef\NbColTot{\inteval{\NbColTot+1}}%
+ \IfSubStr{\PATdecoup}{x}%
+ {%
+ \StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}%
+ }%
+ {}%
+ \IfSubStr{\PATdecoup}{+}%
+ {%
+ \StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}%
+ \def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}%
+ \def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}%
+ \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}%
+ \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}%
+ }%
+ {}%
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\dtpixlarttikzblock{ O{} D<>{} m m m }{%commande individuelle avec loi & datatool...
+ %3=fichier
+ %4=taille blocs (LxC) ou nombre de blocs (L+C)
+ %5=numbloc
+ \useKVdefault[pixelarttkz]%
+ \setKV[pixelarttkz]{#1}%
+ \xdef\NbLigTot{\DTLrowcount{#3}}%
+ \DTLgetvalue{\myvalrowone}{#3}{1}{1}%
+ \StrCount{\myvalrowone}{,}[\NbColTot]%
+ \xdef\NbColTot{\inteval{\NbColTot+1}}%
+ \IfSubStr{#4}{x}%
+ {%
+ \StrCut{#4}{x}{\NbLigBloc}{\NbColBloc}%
+ }%
+ {}%
+ \IfSubStr{#4}{+}%
+ {%
+ \StrCut{#4}{+}{\NbBlocLIG}{\NbBlocCOL}%
+ \xdef\NbLigBloc{\xinteval{(\NbLigTot-1)/\NbBlocLIG}}%
+ \xdef\NbColBloc{\xinteval{(\NbColTot)/\NbBlocCOL}}%
+ }%
+ {}%
+ \StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}%
+ \xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}%
+ \xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}%
+ \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}%
+ \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}%
+ %affichage du corrigé / display of correction
+ \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2]
+ \ifboolKV[pixelarttkz]{Correction}%
+ {%
+ \readlist*\LCPA\PATcouleurs%
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \StrPosition{\PATlettres}{\PAchar}[\pixcnt]%
+ \xintifboolexpr{\pixcnt>0}%
+ {%
+ \itemtomacro\LCPA[\pixcnt]\pixcol%
+ \ifboolKV[pixelarttkz]{BordCases}%
+ {\draw[fill=\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}%
+ {\filldraw[\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ {%
+ \ifboolKV[pixelarttkz]{Symb}%
+ {%affichage du pixelart versions chiffres si besoin
+ \readlist*\LCNA\PATchiffres%
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \StrPosition{\PATlettres}{\PAchar}[\pixpos]%
+ \xintifboolexpr{\pixpos>0}%
+ {%
+ \itemtomacro\LCNA[\pixpos]\pixchf%
+ \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt
+ \foreach \line in {\PAfirstline,...,\PAlastline}{%
+ \DTLgetvalue{\csvline}{#3}{\line}{1}%
+ \setsepchar{,}%
+ \readlist*\tmpcsvline\csvline%
+ \foreachitem\PAchar\in\tmpcsvline{%
+ \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}%
+ {%
+ \IfSubStr{\PATlettres}{\PAchar}%
+ {%
+ \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};%
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ }%
+ }%
+ \end{tikzpicture}%
+}
+
\endinput
\ No newline at end of file
More information about the tex-live-commits
mailing list.