\clearpage
\section{Pixel Art}\label{DocPixelArt}
\index{Pixel Art}\index[cle]{PixelArt@\lstinline+\PixelArt+}
\begin{tcolorbox}[tikzRemarque]
  L'utilisation de \hologo{pdfLaTeX} est possible mais fortement gourmande en temps de compilation. Aussi, une création du pixel art en PDF avec \hologo{LuaLaTeX} sera possible avec un code tel que :
  \begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em,gobble=4,classoffset=1,deletekeywords={Math},classoffset=0,deleteemph={ProfCollege},classoffset=0]
    \documentclass[french,a4paper]{article}
    \usepackage{ProfCollege}
    \usepackage{unicode-math}
    \setmainfont{TeX Gyre Schola}
    \setmathfont{TeX Gyre Schola Math}
    
    \begin{document}
    \PixelArt[...]{...}
    \end{document}
  \end{lstlisting}
  Une fois obtenue, on inclut cette figure classiquement dans le fichier source.
\end{tcolorbox}

La commande \lstinline!\PixelArt! permet, à partir d'un fichier \lstinline!csv! de créer un pixel art\footnote{D'après un fichier \lstinline!csv! fourni par Maryline {\sc Vignal}.} et sa solution :

\begin{center}
  \PixelArt[Unite=3.5mm,Lettres=ABCDEFGHIJK,Largeur=12,Hauteur=16,ListeCouleurs={red,black,Maroon,PeachPuff,red,Maroon,PeachPuff,blue,blue,Yellow,white}]{mario1.csv}\qquad
\PixelArt[Unite=3.5mm,Lettres=ABCDEFGHIJK,Largeur=12,Hauteur=16,ListeCouleurs={red,black,Maroon,PeachPuff,red,Maroon,PeachPuff,blue,blue,Yellow,white},Solution]{mario1.csv}
\end{center}
Elle a la forme suivante :
\begin{lstlisting}[escapechar=!,aboveskip=1em,belowskip=0.5em]
  \PixelArt[!\sffamily\textlangle clés\textrangle!]{!\sffamily\textlangle fichier\textrangle!.csv}
\end{lstlisting}
où
\begin{itemize}
\item\textlangle\lstinline!clés!\textrangle{} constituent un ensemble
  d'options pour paramétrer la commande (paramètres optionnels);
\item\textlangle\lstinline!fichier!\textrangle{} est le nom du fichier \lstinline!csv!.
\end{itemize}
\begin{tcolorbox}[tikzcle]
%  \index[cle]{PixelArt@\lstinline+\PixelArt+!Largeur|mygobble}
%  \index[cle]{PixelArt@\lstinline+\PixelArt+!Hauteur|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Unite|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Lettres|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!ListeCouleurs|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Solution|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!ListeNombres|mygobble}
%\begin{comment}
%  \begin{Key}{Largeur}{29}
%  modifie la largeur (en carreaux) du pixel art.
%\end{Key}
%\begin{Key}{Hauteur}{29}
%  modifie la hauteur (en carreaux) du pixel art.
%\end{Key}
%\end{comment}
%  \begin{KEYS}{Largeur/Hauteur}{29}
%  modifie la largeur/la hauteur du pixel art. Elles sont données en carreaux.
%\end{KEYS}
\begin{Key}{Unite}{\Lg[mm]{5}}
  modifie la longueur d'un côté d'un carreau.
\end{Key}
\begin{Key}{Lettres}{ABCDEFGHIJK}
  modifie les lettres utilisées dans le pixel art.
\end{Key}
\begin{Key}{ListeCouleurs}{}
  modifie la liste des couleurs utilisées. Elles doivent être données dans le même ordre que les lettres.
\end{Key}
\begin{Key}{Solution}{false}
  affiche la solution du pixel art.
\end{Key}
\begin{Key}{ListeNombres}{\{\}}
  remplace l'affichage des lettres par des nombres. Ils doivent être donnés dans le même ordre que les lettres.
\end{Key}
\end{tcolorbox}
\begin{tcolorbox}[tikzRemarque]
  \PfCMAJ{0.99-A-l} Les clés \Cle{Hauteur} et \Cle{Largeur} ne sont plus utiles avec la version {\ttfamily 0.99-A-l}.
\end{tcolorbox}
\begin{Codes}[]{0.4}{}
% Fichier csv fourni par Maryline Vignal.
\PixelArt[Lettres=LNMBJRG,Largeur=19,Hauteur=24,Unite=4mm,ListeCouleurs={white,black,Maroon,PeachPuff,Yellow,red,Gray}]{TestHarry.csv}
\PixelArt[Lettres=LNMBJRG,Largeur=19,Hauteur=24,Unite=4mm,ListeCouleurs={white,black,Maroon,PeachPuff,Yellow,red,Gray},Solution]{TestHarry.csv}
\end{Codes}
%\clearpage
\begin{Codes}[]{0.4}{}
% Fichier csv fourni par Maryline Vignal.
\PixelArt[Lettres=ABCEFIJ,Largeur=17,Hauteur=15,Unite=4.5mm,ListeCouleurs={LightGray,white,Maroon,black,PeachPuff,LightGreen,DarkGreen},ListeNombres={0,1,2,4,5,8,9}]{TestYoda.csv}
\PixelArt[Lettres=ABCEFIJ,Largeur=17,Hauteur=15,Unite=4.5mm,ListeCouleurs={LightGray,white,Maroon,black,PeachPuff,LightGreen,DarkGreen},ListeNombres={0,1,2,4,5,8,9},Solution]{TestYoda.csv}
\end{Codes}
\clearpage
On peut présenter également des pixels arts avec des \og cases vides\fg.

\begin{center}
  \PixelArt[Lettres=ABCDEF,Largeur=22,Hauteur=22,Unite=4mm,ListeCouleurs={black,blue,Gray,Maroon,Yellow,red}]{Testminion.csv}
\end{center}
Pour cela, on utilisera le \og tiret du 6\fg{} \lstinline!-! pour indiquer une case vide. Voici le fichier \lstinline!Testminion.csv! :

\begin{minipage}{0.6\linewidth}
\begin{Codes}[listing only,listing options={frame=,classoffset=1,deletekeywords={E},classoffset=0}]{0.4}{}
-;-;-;-;-;-;-;-;A;-;A;-;A;-;-;-;-;-;-;-;-;-
-;A;A;-;-;-;-;A;A;A;A;A;A;-;-;A;A;A;A;-;-;-
A;-;-;A;-;A;A;B;B;B;B;B;B;A;A;-;-;-;-;A;-;-
-;A;-;-;A;B;B;B;-;-;B;B;B;B;B;A;-;A;A;-;-;-
-;-;A;A;B;B;B;-;B;B;-;B;B;B;B;B;A;A;-;-;-;-
-;-;-;A;B;B;B;B;B;B;B;B;B;B;B;B;A;-;-;-;-;-
-;-;-;A;B;C;C;C;C;C;C;C;B;B;B;B;A;-;-;-;-;-
-;-;-;A;C;-;-;-;C;-;-;-;C;C;B;B;A;-;-;-;-;-
-;-;-;A;C;-;A;-;C;-;A;-;C;C;D;D;A;-;-;-;-;-
-;-;-;A;C;-;-;-;C;-;-;-;C;C;D;D;A;-;-;-;-;-
-;-;-;A;E;C;C;C;C;C;C;C;C;E;E;E;A;-;-;-;-;-
-;-;-;A;E;E;E;E;E;E;E;E;E;E;E;A;A;A;-;-;-;-
-;-;-;A;E;E;E;A;A;A;A;A;A;E;A;F;F;F;A;-;-;-
-;-;-;A;B;E;E;E;E;E;E;E;E;A;F;-;-;-;F;A;-;-
-;-;-;A;B;E;B;E;E;E;E;B;A;F;-;F;F;F;-;F;A;-
-;-;A;E;B;B;B;B;E;E;B;A;F;-;F;B;B;B;F;-;F;A
-;-;A;E;B;B;B;B;B;B;B;A;F;-;F;B;-;B;F;-;F;A
-;-;A;F;A;-;F;-;F;-;F;A;F;-;F;B;B;B;F;-;F;A
-;-;-;A;A;-;F;-;F;-;F;-;A;F;-;F;F;F;-;F;A;-
-;-;-;-;-;A;A;B;A;A;A;A;B;A;F;-;-;-;F;A;-;-
-;-;-;-;-;-;A;F;A;-;-;A;-;-;A;F;F;F;A;-;-;-
-;-;-;-;-;-;A;A;A;-;-;A;A;A;A;A;A;A;-;-;-;-
\end{Codes}
\end{minipage}
\begin{minipage}{0.35\linewidth}
\begin{center}
\PixelArt[Lettres=ABCDEF,Largeur=22,Hauteur=22,Unite=3mm,ListeCouleurs={black,blue,Gray,Maroon,Yellow,red},Solution]{Testminion.csv}
\end{center}
\end{minipage}
\clearpage
\subsection*{Pixel Art géant}\PfCMAJ{0.99-A-c}
Lorsque le pixel art est très grand, on peut vouloir le découper afin de promouvoir un travail collaboratif.
\begin{tcolorbox}[tikzcle]
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Geant|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Geant!Numero|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Geant!HauteurD|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Geant!LargeurD|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Geant!Separations|mygobble}
  \begin{Key}{Geant}{false}
    permet de travailler avec des pixel art géant.
    \begin{SousDescription}
    \item[Les clés \Cle{LargeurD}/\Cle{HauteurD}]\DefautR{1/1}
  modifient la largeur/la hauteur du rectangle de découpage du pixel art. Elles sont données en carreaux.
\item[La clé \Cle{Numero}]\DefautR{1}
  affiche le rectangle associé au numéro choisi. Les numéros sont définis en partant du haut supérieur gauche du pixel art et en allant vers la droite.
\item[La clé \Cle{Separations}]\DefautR{false}
  affiche, lorsqu'elle est positionnée à \lstinline!true!, les traits de découpage du pixel art.
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Codes}[]{0.4}{}
% Pixel art fourni par Cyril Iaconelli.
% https://lmdbt.forge.apps.education.fr/latexiotheque/
\definecolor{mygreen}{RGB}{0, 128, 0}
\definecolor{myred}{RGB}{255, 0, 0}
\definecolor{darkbrown}{RGB}{83, 42, 22}
\definecolor{darkorange}{rgb}{0.9, 0.4, 0.0}
\extractcolorspecs{mygreen}\modelcmd\mygreen
\extractcolorspecs{darkorange}\modelcmd\mydarkorange
\extractcolorspecs{orange}\modelcmd\myorange
\extractcolorspecs{brown!75}\modelcmd\mylightmaroon
\extractcolorspecs{red!50}\modelcmd\myrose

\PixelArt[Solution,LargeurD=6,HauteurD=8,Lettres=ABCDEFGH,Unite=3.2mm,Largeur=30,Hauteur=32,ListeCouleurs={white,black,(\myorange),red+green,(\myrose),(\mygreen),(\mydarkorange),(\mylightmaroon)},Separations]{tigre.csv}
\end{Codes}
\definecolor{mygreen}{RGB}{0, 128, 0}%
\definecolor{myred}{RGB}{255, 0, 0}%
\definecolor{darkbrown}{RGB}{83, 42, 22}%
\definecolor{darkorange}{rgb}{0.9, 0.4, 0.0}%
\extractcolorspecs{mygreen}\modelcmd\mygreen%
\extractcolorspecs{darkorange}\modelcmd\mydarkorange%
\extractcolorspecs{orange}\modelcmd\myorange%
\extractcolorspecs{brown!75}\modelcmd\mylightmaroon%
\extractcolorspecs{red!50}\modelcmd\myrose%
\begin{Codes}[]{}{}%
\xintFor* #1 in{\xintSeq{0}{3}}\do{%
  \xintFor* #2 in{\xintSeq{1}{5}}\do{%
    \PixelArt[Geant,Numero=\fpeval{#1*5+#2},Solution,LargeurD=6,HauteurD=8,Lettres=ABCDEFGH,Unite=3.2mm,Largeur=30,Hauteur=32,ListeCouleurs={white,black,(\myorange),red+green,(\myrose),(\mygreen),(\mydarkorange),(\mylightmaroon)},Separations]{tigre.csv}%
  }%
}%
\end{Codes}
\clearpage
\subsection*{Un peu de déformation\dots\footnotemark}\PfCMAJ{0.99-A-h}
\footnotetext{D'après une idée de Cyril {\sc Laconelli}.}
\begin{tcolorbox}[tikzcle]
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Deforme|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Deforme!Coefx|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Deforme!Coefy|mygobble}
  \index[cle]{PixelArt@\lstinline+\PixelArt+!Deforme!Borne|mygobble}
  \begin{Key}{Deforme}{false}
    utilise des quadrilatères aléatoires pour \og cases\fg{} du pixel art.
    \begin{SousDescription}
    \item[La clé \Cle{Coefx}]\DefautR{0.25} modifie le coefficient de déformation horizonale servant à définir les sommets des polygones.
    \item[La clé \Cle{Coefy}]\DefautR{0.25} modifie le coefficient de déformation verticale servant à définir les sommets des polygones.
    \item[La clé \Cle{Borne}]\DefautR{false} permet de \og borner\fg{} le pixel-art déformé par un rectangle.
    \item[La clé \Cle{Graine}]\DefautR{-} permet d'associer correctement la grille initiale et celle de la solution.
    \end{SousDescription}
  \end{Key}
  Cette clé est incompatible avec la clé \Cle{Geant}.
\end{tcolorbox}
\begin{Codes}[]{0.4}{}
\PixelArt[Deforme,Graine=1,Lettres=ABCEFIJ,Largeur=17,Hauteur=15,Unite=4.5mm,ListeCouleurs={LightGray,white,Maroon,black,PeachPuff,LightGreen,DarkGreen},ListeNombres={0,1,2,4,5,8,9}]{TestYoda.csv}
\PixelArt[Deforme,Graine=1,Lettres=ABCEFIJ,Largeur=17,Hauteur=15,Unite=4.5mm,ListeCouleurs={LightGray,white,Maroon,black,PeachPuff,LightGreen,DarkGreen},ListeNombres={0,1,2,4,5,8,9},Solution]{TestYoda.csv}
\end{Codes}
%\PixelArt[Deforme,Borne,Lettres=LNMBJRG,Largeur=19,Hauteur=24,Unite=6mm,ListeCouleurs={white,black,Maroon,PeachPuff,Yellow,red,Gray}]{TestHarry.csv}\hfill\PixelArt[Deforme,Borne,Lettres=LNMBJRG,Largeur=19,Hauteur=24,Unite=6mm,ListeCouleurs={white,black,Maroon,PeachPuff,Yellow,red,Gray},Solution]{TestHarry.csv}
%\definecolor{lightgray}{gray}{0.95}
%\definecolor{darkgray}{gray}{0.75}
%\definecolor{darkblue}{rgb}{0, 0, 0.5}
%\definecolor{myblue}{RGB}{0,128,255}