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.