% !TeX TXS-program:compile = txs:///arara % arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} % arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{amsmath,amssymb} \usepackage{PixelArtTikz} \usepackage{couleurs-fr} \usepackage{fontawesome5} \usepackage{enumitem} \usepackage{tabularray} \usepackage{multicol} \usepackage{fancyvrb} \usepackage{fancyhdr} \fancyhf{} \renewcommand{\headrulewidth}{0pt} \lfoot{\sffamily\small [PixelArtTikz]} \cfoot{\sffamily\small - \thepage{} -} \rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} %\usepackage{hvlogos} \usepackage{hologo} \usepackage{xspace} \providecommand\tikzlogo{Ti\textit{k}Z} \providecommand\TeXLive{\TeX{}Live\xspace} \providecommand\PSTricks{\textsf{PSTricks}\xspace} \let\pstricks\PSTricks \let\TikZ\tikzlogo \newcommand\TableauDocumentation{% \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}} {\huge \LaTeX} & & & & &\\ & {\huge \hologo{pdfLaTeX}} & & & & \\ & & {\huge \hologo{LuaLaTeX}} & & & \\ & & & {\huge \TikZ} & & \\ & & & & {\huge \TeXLive} & \\ & & & & & {\huge \hologo{MiKTeX}} \\ \end{tblr} } \usepackage{hyperref} \urlstyle{same} \hypersetup{pdfborder=0 0 0} \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} \def\TPversion{0.1.5} \def\TPdate{31/10/2024} \usepackage{minted2} \usepackage[most]{tcolorbox} \tcbuselibrary{minted} \NewTCBListing{PresentationCode}{ O{blue} m }{% sharp corners=downhill,enhanced,arc=12pt,skin=bicolor,% colback=#1!1!white,colframe=#1!75!black,colbacklower=white,% attach boxed title to top right={yshift=-\tcboxedtitleheight},title=Code \LaTeX,% boxed title style={% colframe=#1!75!black,colback=#1!15!white,% ,sharp corners=downhill,arc=12pt,% },% fonttitle=\color{#1!90!black}\itshape\ttfamily\footnotesize,% listing engine=minted,minted style=colorful, minted language=tex,minted options={tabsize=4,fontsize=\footnotesize,autogobble}, #2 } \usepackage[english]{babel} \newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}} \begin{document} \pagestyle{fancy} \thispagestyle{empty} \vspace{2cm} \begin{center} \begin{minipage}{0.75\linewidth} \begin{tcolorbox}[colframe=yellow,colback=yellow!15] \begin{center} \begin{tabular}{c} {\Huge \texttt{PixelArtTikz [en]}}\\ \\ {\LARGE PixelArts, with Ti\textit{k}Z}, \\ \\ {\LARGE with solution and colors.} \\ \end{tabular} \medskip {\small \texttt{Version \TPversion{} -- \TPdate}} \end{center} \end{tcolorbox} \end{minipage} \end{center} \vspace{0.5cm} \begin{center} \begin{tabular}{c} \texttt{Cédric Pierquet}\\ {\ttfamily c pierquet -- at -- outlook . fr}\\ \texttt{\url{https://github.com/cpierquet/PixelArtTikz}} \end{tabular} \end{center} \vspace{0.25cm} {$\blacktriangleright$~~Commands to display PixelArts.} \smallskip {$\blacktriangleright$~~Environment to complete the PixelArt.} \smallskip \vspace{1cm} \begin{center} \begin{filecontents*}[overwrite]{test1.csv} -,-,-,-,-,-,4,4,4,4,-,-,-,-,-,- -,-,-,-,4,4,1,1,1,1,4,4,-,-,-,- -,-,-,4,1,1,1,1,1,1,1,1,4,-,-,- -,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- -,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- -,4,1,9,9,1,1,1,1,1,1,9,9,1,4,- -,4,9,9,9,9,4,4,4,4,9,9,9,9,4,- -,4,9,4,9,9,4,4,4,4,9,4,9,9,4,- -,4,1,9,9,9,4,4,4,4,9,9,9,1,4,- -,-,4,1,1,9,4,4,4,4,9,1,1,4,-,- -,-,4,1,1,1,4,4,4,4,1,1,1,4,-,- -,-,-,4,1,1,1,4,4,1,1,1,4,-,-,- -,-,4,3,1,1,1,1,1,1,1,1,3,4,-,- -,4,6,3,1,1,1,1,1,1,1,1,3,6,4,- -,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- -,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- -,4,6,4,1,1,1,4,4,1,1,1,4,6,4,- 2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -,-,-,-,-,4,1,1,1,1,4,-,-,-,-,- -,-,-,-,-,-,4,1,1,4,-,-,-,-,-,- -,-,-,-,-,-,-,4,4,-,-,-,-,-,-,- \end{filecontents*} \PixlArtTikz[Codes=123469,Style=\ttfamily,Unit=0.35]{test1.csv} ~~ \PixlArtTikz[Codes=123469,Symbols={A,B,C,D,E,F},Symb,Style=\ttfamily,Unit=0.35]{test1.csv} ~~ \PixlArtTikz[Codes=123469,Colors={red,brown,yellow,black,blue,white},Correction,Unit=0.35]{test1.csv} \end{center} \vspace{0.5cm} %\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !} %\hfill{}\textit{Merci à Denis Bitouzé et à Patrick Bideault pour leurs retours et idées !} \vfill \hrule \medskip \TableauDocumentation \medskip \hrule \medskip \newpage \phantomsection \hypertarget{matoc}{} \tableofcontents \newpage \part{Introduction} \section{The package PixelArtTikz} \subsection{Introduction} The idea is to \textit{propose}, within a Ti\textit{k}Z environment, a macro to generate PixelArt. The data is \textit{read} from a \textsf{csv} file, already existing in the folder of the \textsf{tex} file, or created on-the-fly by \textsf{filecontents}. \medskip Some advices about the \textsf{cvs} file : \begin{itemize} \item the \textsf{csv} file must use "," as separator; \item empty cells are coded by "\texttt{-}". \end{itemize} \begin{PresentationCode}{listing only} \begin{filecontents*}{filename.csv} A,B,C,D A,B,D,C B,A,C,D B,A,D,C \end{filecontents*} \end{PresentationCode} While compiling, the file \textsf{filename.csv} will be created, and the option \Cle{[overwrite]} will propagate the modifications! \subsection{Loading of the package, and option} The package \textsf{csvsimple} is necessary in order to read the \textsf{csv} file. The package is available in two versions, one written in \hologo{LaTeX2e} and the other in \hologo{LaTeX3}. By default, \textsf{PixelArtTikz} loads the \hologo{LaTeX3} version, but an \textit{option} is available to work with the \hologo{LaTeX2e} version. \smallskip The option \Cle{[csvii]} forces the usage of the \hologo{LaTeX2e} version. \begin{PresentationCode}{listing only} \usepackage{PixelArtTikz} %package latex3 %which loads %\RequirePackage{expl3} %\RequirePackage[l3]{csvsimple} \usepackage[csvii]{PixelArtTikz} %package latex2 %which loads %\RequirePackage[legacy]{csvsimple} \end{PresentationCode} \subsection{Used packages} It's fully compatible with usual \hologo{LaTeX} engines, such as \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} or \textsf{xelatex}. \medskip It loads the following packages and libraries: \begin{itemize} \item \texttt{tikz}, \texttt{xintexpr} et \texttt{xinttools}; \item \texttt{xstring}, \texttt{xparse}, \texttt{simplekv} and \texttt{listofitems}. \end{itemize} \pagebreak \subsection{Macros and environment} There are two ways to create PixelArt: \begin{itemize} \item with an independent macro; \item with a Ti\textit{k}Z environment in order to add code afterwards. \end{itemize} \begin{PresentationCode}{listing only} %Independent macro \PixlArtTikz[keys]{file.csv} %Semi-independent macro, in a tiks environment \PixlArtTikz*[keys]{file.csv} %environment \begin{EnvPixlArtTikz}[keys]{file.csv} %tikz code \end{EnvPixlArtTikz} \end{PresentationCode} \section{Colors} Concerning colors: the user can use all colors provided by loaded packages! \smallskip Without extra packages, the available colors are: \smallskip \begin{tblr}{width=\linewidth,colspec={*{10}{X[m,c]}},cells={font=\small\ttfamily}} \SetCell{bg=magenta} magenta & \SetCell{bg=cyan} cyan & \SetCell{bg=blue,fg=white} blue & \SetCell{bg=green} green & \SetCell{bg=red} red & \SetCell{bg=darkgray,fg=white} darkgray & \SetCell{bg=olive,fg=white} olive & \SetCell{bg=lime} lime & \SetCell{bg=brown} brown & \SetCell{bg=lightgray} lightgray \\ \SetCell{bg=white} white & \SetCell{bg=gray,fg=white} gray & \SetCell{bg=black,fg=white} black & \SetCell{bg=yellow} yellow & \SetCell{bg=violet,fg=white} violet & \SetCell{bg=teal,fg=white} teal & \SetCell{bg=purple,fg=white} purple & \SetCell{bg=pink} pink & \SetCell{bg=orange} orange & \\ \end{tblr} \pagebreak \part{Macros and environment} \section{Main macro} \subsection{Example} The macro \texttt{\textbackslash PixlArtTikz} needs : \begin{itemize} \item the file \textsf{csv}; \item the list (by a string) of codes used in the file \textsf{csv} (e.g.\ \texttt{234679} or \texttt{ABCDJK}\ldots); \item the list of symbols (if needed) to print in the cells, e.g.\ \texttt{25,44,12} or \texttt{AA,AB,AC}; \item the list of colors (for the correction), same order as the codes. \end{itemize} We can begin by creating the file \textsf{csv}, directly within the \textsf{tex} code, or with a external file. \begin{PresentationCode}{} %creation of the csv \begin{filecontents*}[overwrite]{base.csv} A,B,C,D A,B,D,C B,A,D,C C,A,B,D \end{filecontents*} \end{PresentationCode} \begin{PresentationCode}{} %instructions and pixelarts \begin{center} \begin{tblr}{colspec={*{4}{Q[1.25cm,c,m]}},hlines,vlines,rows={1.15em}} \SetCell[c=4]{c} Instructions & & & \\ A & B & C & D \\ 45 & 22 & 1 & 7 \\ Black & Green & Yellow & Red \\ \end{tblr} \end{center} \PixlArtTikz[Codes=ABCD,Style=\large\sffamily,Unit=0.85]{base.csv} ~~ \PixlArtTikz[Codes=ABCD,Symbols={45,22,1,7},Symb,Style=\large\sffamily,Unit=0.85]{base.csv} ~~ \PixlArtTikz[Codes=ABCD,Colors={black,green,yellow,red},Correction,Unit=0.85]{base.csv} ~~ \PixlArtTikz[Codes=ABCD,Colors={black,green,yellow,red},Correction,Border=false,Unit=0.85]{base.csv} \end{PresentationCode} \pagebreak \subsection{Options and keys} \begin{PresentationCode}{listing only} \PixlArtTikz[keys]{file.csv} \end{PresentationCode} The first argument, \textit{optional} and between \texttt{[...]} proposes the \textsf{keys}: \begin{itemize} \item the key \Cle{Codes} with the \textit{string} of \textit{simple} codes of the \textsf{csv} file; \item the key \Cle{Colors} with the \textit{list} of colors; \item the key \Cle{Symbols} with the \textit{optional list} of alt.\ symbols for the cells; \item the boolean \Cle{Correction} to color the PixelArt;\hfill{}default \textsf{false} \item the boolean \Cle{Symb} to print the symbols;\hfill{}default \textsf{false} \item the boolean \Cle{Border} to print borders of the cells;\hfill{}default \textsf{true} \item the key \Cle{Style} to specifythe style of the text. \hfill{}default \textsf{\textbackslash scriptsize} \end{itemize} The second argument, \textit{optional} and between \texttt{<...>}, are Ti\textit{k}Z options to pass on to the environment which creates the PixelArt. \medskip The third argument, \textit{mandatory}, is the filename of the \textsf{csv}. \begin{PresentationCode}{} %creation of the csv \begin{filecontents*}[overwrite]{test1.csv} -,-,-,-,-,-,4,4,4,4,-,-,-,-,-,- -,-,-,-,4,4,1,1,1,1,4,4,-,-,-,- -,-,-,4,1,1,1,1,1,1,1,1,4,-,-,- -,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- -,-,4,1,1,1,1,1,1,1,1,1,1,4,-,- -,4,1,9,9,1,1,1,1,1,1,9,9,1,4,- -,4,9,9,9,9,4,4,4,4,9,9,9,9,4,- -,4,9,4,9,9,4,4,4,4,9,4,9,9,4,- -,4,1,9,9,9,4,4,4,4,9,9,9,1,4,- -,-,4,1,1,9,4,4,4,4,9,1,1,4,-,- -,-,4,1,1,1,4,4,4,4,1,1,1,4,-,- -,-,-,4,1,1,1,4,4,1,1,1,4,-,-,- -,-,4,3,1,1,1,1,1,1,1,1,3,4,-,- -,4,6,3,1,1,1,1,1,1,1,1,3,6,4,- -,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- -,4,6,6,1,1,1,1,1,1,1,1,6,6,4,- -,4,6,4,1,1,1,4,4,1,1,1,4,6,4,- 2,2,4,2,4,4,4,2,2,4,4,4,2,4,2,2 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -,-,-,-,-,4,1,1,1,1,4,-,-,-,-,- -,-,-,-,-,-,4,1,1,4,-,-,-,-,-,- -,-,-,-,-,-,-,4,4,-,-,-,-,-,-,- \end{filecontents*} \end{PresentationCode} \begin{PresentationCode}{} %simple codes %empty case with - \PixlArtTikz[Codes=123469,Style=\ttfamily,Unit=0.35]{test1.csv} ~~ \PixlArtTikz[Codes=123469,Colors={red,brown,yellow,black,blue,white},Correction,Unit=0.35]{test1.csv} ~~ \PixlArtTikz[Codes=123469,Colors={red,brown,yellow,black,blue,white},Correction,Unit=0.35,Border=false]{test1.csv} \end{PresentationCode} \pagebreak In the following example, the \textit{symbols} to print can't be used for the \textit{codes}, so we can use the keys \Cle{Symbols} and \Cle{Symb} to bypass this limitation. \begin{PresentationCode}{} %symbols associated to codes \begin{filecontents*}[overwrite]{cap.csv} -,-,-,-,-,-,-,-,D,-,D,-,D,-,-,-,-,-,-,-,-,- -,D,D,-,-,-,-,D,D,D,D,D,D,-,-,D,D,D,D,-,-,- D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,- -,D,-,-,D,F,F,F,-,-,F,F,F,F,F,D,-,D,D,-,-,- -,-,D,D,F,F,F,-,F,F,-,F,F,F,F,F,D,D,-,-,-,- -,-,-,D,F,F,F,F,F,F,F,F,F,F,F,F,D,-,-,-,-,- -,-,-,D,F,J,J,J,J,J,J,J,F,F,F,F,D,-,-,-,-,- -,-,-,D,J,-,-,-,J,-,-,-,J,J,F,F,D,-,-,-,-,- -,-,-,D,J,-,D,-,J,-,D,-,J,J,B,B,D,-,-,-,-,- -,-,-,D,J,-,-,-,J,-,-,-,J,J,B,B,D,-,-,-,-,- -,-,-,D,C,J,J,J,J,J,J,J,J,C,C,C,D,-,-,-,-,- -,-,-,D,C,C,C,C,C,C,C,C,C,C,C,D,D,D,-,-,-,- -,-,-,D,C,C,C,D,D,D,D,D,D,C,D,A,A,A,D,-,-,- -,-,-,D,F,C,C,C,C,C,C,C,C,D,A,-,-,-,A,D,-,- -,-,-,D,F,C,F,C,C,C,C,F,D,A,-,A,A,A,-,A,D,- -,-,D,C,F,F,F,F,C,C,F,D,A,-,A,F,F,F,A,-,A,D -,-,D,C,F,F,F,F,F,F,F,D,A,-,A,F,-,F,A,-,A,D -,-,D,A,D,-,A,-,A,-,A,D,A,-,A,F,F,F,A,-,A,D -,-,-,D,D,-,A,-,A,-,A,-,D,A,-,A,A,A,-,A,D,- -,-,-,-,-,D,D,F,D,D,D,D,F,D,A,-,-,-,A,D,-,- -,-,-,-,-,-,D,A,D,-,-,D,-,-,D,A,A,A,D,-,-,- -,-,-,-,-,-,D,D,D,-,-,D,D,D,D,D,D,D,-,-,-,- \end{filecontents*} \PixlArtTikz[Codes=ABCDFJ,Symbols={1,2,3,4,6,10},Symb,Style=\tiny\sffamily,Unit=0.35]{cap.csv} ~~ \PixlArtTikz[Codes=ABCDFJ,Colors={red,brown,yellow,black,blue,gray},Correction,Unit=0.35]{cap.csv} \end{PresentationCode} \pagebreak \subsection{Symbols within list(s)} List of symbols can be given within list(s), picked randomly. \begin{PresentationCode}{} \begin{filecontents*}[overwrite]{testlist.csv} A,B,C,A A,B,B,C B,A,C,B C,A,B,C \end{filecontents*} \textbf{Notice : } Multiples of 5 : red\\ Multiples of 3 : green\\ Multiples of 2 : blue \PixlArtTikz[Codes=ABC,Symbols={5§25§35,3§9§21§27,2§4§8§14§16},Symb,Style=\large\sffamily,Unit=0.85]{testlist.csv} \hspace{5mm} \PixlArtTikz[Codes=ABC,Symbols={5§25§35,3§9§21§27,2§4§8§14§16},Symb,Style=\large\sffamily,Unit=0.85]{testlist.csv} \hspace{5mm} \PixlArtTikz[Codes=ABC,Colors={red,green,blue},Correction,Style=\large\sffamily,Unit=0.85]{testlist.csv} \end{PresentationCode} \pagebreak \subsection{Starred macro} The starred macro \texttt{\textbackslash PixlArtTikz*} is to be used within an already created environment. It can be useful for adding code after the PixelArt. \smallskip In this case: \begin{itemize} \item the \textit{optional} argument between \texttt{<...>} is discarded; \item the key \Cle{Unit} is discarded too (units can be configured in the environment!) \end{itemize} \begin{PresentationCode}{} \begin{center} \begin{tikzpicture}[scale=0.5] %grid to show positionning \draw[very thin,gray,xstep=1,ystep=1] (0,0) grid (17,-24) ; \foreach \x in {0,1,...,17} \draw[very thin,gray] (\x,-3pt)--(\x,3pt)% node[above,font=\scriptsize\sffamily] {\x} ; \foreach \y in {0,-1,...,-24} \draw[very thin,gray] (3pt,\y)--(-3pt,\y)% node[left,font=\scriptsize\sffamily] {\y} ; %le PixelArt \PixlArtTikz*[Codes=123469,Colors={red,brown,yellow,black,blue,white},Correction]{test1.csv} %added code \filldraw[blue] (14,-1) circle[radius=1] ; \filldraw[yellow] (14,-1) circle[radius=0.8] ; \draw[green,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)% node[right,font=\scriptsize\sffamily] {Code Ti\textit{k}Z} ; \end{tikzpicture} \end{center} \end{PresentationCode} \pagebreak \section{PixelArt environment} \subsection{Usage} The package \textsf{PixelArtTikz} provides an environment to create a PixelArt and add code afterwards. \begin{itemize} \item The environment is created within Ti\textit{k}Z and additional code is passed on to the Ti\textit{k}Z environment! \item The additional code will be printed on top of the PixelArt! \end{itemize} \begin{PresentationCode}{listing only} \begin{EnvPixlArtTikz}[keys]{filename.csv} %tikz code(s) \end{EnvPixlArtTikz} \end{PresentationCode} The first argument, \textit{optional} and between \texttt{[...]}, proposes the \textsf{keys}: \begin{itemize} \item the key \Cle{Codes} with the \textit{string} of \textit{simple} codes of the \textsf{csv} file; \item the key \Cle{Colors} with the \textit{list} of colors; \item the key \Cle{Symbols} with the \textit{optional list} of alt.\ symbols for the cells; \item the boolean \Cle{Correction} to color the PixelArt;\hfill{}default \textsf{false} \item the boolean \Cle{Symb} to print the symbols;\hfill{}default \textsf{false} \item the boolean \Cle{Border} to print borders of the cells;\hfill{}default \textsf{true} \item the key \Cle{Style} to specifythe style of the text. \hfill{}default \textsf{\textbackslash scriptsize} \end{itemize} The second argument, \textit{optional} and between \texttt{<...>}, is for Ti\textit{k}Z options to be passed on to the environment which creates the PixelArt. \medskip The third argument, \textit{mandatory}, is the filename of the \textsf{csv}. \subsection{Example} The symbols are at the nodes $(c\,;\,-l)$ where $l$ and $c$ are the row and column of the data in the \textsf{csv} file. \begin{PresentationCode}{} \begin{center} \begin{EnvPixlArtTikz}% [Codes=123469,Colors={red,brown,yellow,black,blue,white},Correction,Unit=0.25] {test1.csv} \filldraw[blue] (14,-1) circle[radius=1] ; \filldraw[yellow] (14,-1) circle[radius=0.8] ; \draw[green,very thick,<-,>=latex] (15,-1) to[bend left=30] (18,-2)% node[right,font=\scriptsize\sffamily] {Ti\textit{k}Z code} ; \end{EnvPixlArtTikz} \end{center} \end{PresentationCode} \newpage \section{Macro for \textit{mini-}PixelArt} \subsection{Idea} The idea is tu propose a macro to insert, without \textsf{csv} file, a small PixelArt with small colors list. \begin{PresentationCode}{listing only} \MiniPixlArt[keys]{list of colors} \end{PresentationCode} The first argument, \textit{optional} and between \texttt{[...]} proposes the \textsf{keys }: \begin{itemize} \item the key \Cle{Unit} for dimension of the cells ;\hfill{}default \textsf{0.25em}, \item the boolean \Cle{Border} to print a small border for the cells.\hfill{}default \textsf{false} \end{itemize} The second argument, \textit{mandatory} and between \texttt{\{...\}}, is the colors of the cells : \begin{itemize} \item each color is \textit{coded} by a letter : \begin{multicols}{5} \begin{itemize} \item \texttt{R : \textcolor{red}{red}} \item \texttt{G : \textcolor{green}{green}} \item \texttt{C : \textcolor{cyan}{blue}} \item \texttt{Y : \textcolor{yellow}{yellow}} \item \texttt{B : \textcolor{black}{black}} \item \texttt{L : \textcolor{lightgray}{gray}} \item \texttt{. : \colorbox{lightgray}{\textcolor{white}{white}}} \item \texttt{M : \textcolor{brown}{maroon}} \item \texttt{O : \textcolor{orange}{orange}} \item \texttt{P : \textcolor{violet}{purple}} \end{itemize} \end{multicols} \item each linebreak is done by \texttt{,} ; \item the thickness of the borders are 10\,\% of the unit. \end{itemize} The last argument, \textit{optional} and between \texttt{<...>}, proposes options for the \textsf{tikz} environment. \subsection{Examples} \begin{PresentationCode}{} \MiniPixlArt{% ..RR..RR.., .RRRRRRRR., RRRRRRRRRR, RRRRRRRRRR, RRRRRRRRRR, .RRRRRRRR., ..RRRRRR.., ...RRRR..., ....RR.... } \end{PresentationCode} \begin{PresentationCode}{} Inline, we can give \MiniPixlArt[Unit=5mm,Border]{BCGOYG,YLP.BR} this miniPA. \end{PresentationCode} \newpage \section{Macro for cutting PixelArt} \subsection{Idea} The idea is to offer commands to create \textit{collaborative} PixelArts, to form a \textit{large} image from several small ones (of the same size). \smallskip {\footnotesize\faBomb} For practical reasons (related to the use of \texttt{filecontents}) the file \textsf{csv} must end with an empty line (it is created automatically via \texttt{filecontents}, and the code uses this specificity). \smallskip The available \Cle{keys} are exactly the same as those in classic displays. \subsection{Global usage} The argument \texttt{cutting} can be given in the form : % \begin{itemize} \item \Cle{x} to specify the size of the blocks; \item \Cle{+} to specify the number of blocks. \end{itemize} \begin{PresentationCode}{listing only} \CutPixlArtTikz(*)[keys]{file.csv}{cutting} %(*) := change layout formatting (A1 or 1.1) %1 := keys %2 := tikz options %3 := csv file %4 := block size (LxC) or block number (L+C) \HelpGridPixelArtTikz(*)[scale]{file.csv}{cutting} %(*) := change layout formatting (A1 or 1.1) %1 := scale of notice %2 := csv file %4 := block size (LxC) or block number (L+C) \end{PresentationCode} \begin{filecontents*}[overwrite]{PAkoala.csv} A,A,A,A,A,A,A,H,H,H,A,A,A,A,A,H,H,H,A,A,A,A,A,A,A,A,A,H,H,H,H,A,A,H,A,A,A,A,A,A A,A,A,A,A,A,A,A,H,A,A,A,A,A,A,H,H,A,A,A,A,A,A,A,A,A,A,H,A,A,A,A,A,H,A,A,A,A,A,A A,A,A,H,A,A,A,A,A,A,A,A,A,A,A,H,H,A,A,A,A,A,A,A,A,H,H,H,A,A,A,A,A,A,A,A,A,A,A,A A,A,A,A,A,A,A,B,E,E,E,E,A,A,A,A,A,A,A,A,A,A,A,H,H,H,A,B,B,E,E,E,E,B,A,A,A,A,A,H A,A,H,A,A,A,A,B,E,E,E,E,E,A,A,A,A,A,A,A,A,A,A,H,H,H,B,E,E,E,E,E,E,B,B,A,A,A,A,H A,A,H,A,A,B,B,E,C,C,C,C,C,E,B,B,B,E,E,E,E,E,E,B,B,B,E,C,C,C,C,C,C,E,B,B,H,H,A,A A,A,H,A,B,E,D,D,D,D,B,D,C,C,E,E,E,E,C,C,C,C,E,E,E,E,E,C,D,B,B,D,D,D,E,B,H,A,A,A A,A,A,A,B,E,D,D,F,F,D,B,D,C,C,E,C,C,C,C,C,C,C,C,E,C,C,D,B,D,D,F,F,D,E,B,A,A,A,H A,A,A,B,C,D,D,F,F,F,D,D,B,B,C,C,C,C,C,C,C,C,C,C,C,C,C,B,D,D,D,F,F,D,D,C,B,A,H,H A,A,A,B,C,D,F,F,F,F,F,D,D,D,C,C,C,C,C,C,C,C,C,C,C,C,C,D,D,F,F,F,F,F,D,C,B,A,H,H A,A,A,B,D,D,F,F,F,F,F,D,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,D,F,F,F,F,F,D,D,B,A,A,H A,A,A,B,D,D,G,F,F,F,F,D,C,C,B,B,B,C,C,B,B,C,C,B,B,B,C,C,D,F,F,F,F,G,D,D,B,A,A,A A,A,A,A,B,G,G,F,F,F,F,D,C,C,B,F,B,C,B,D,D,B,C,B,F,B,C,C,D,G,F,F,F,G,G,B,H,A,A,A A,A,A,A,A,B,G,G,G,F,G,D,C,C,C,B,B,C,B,D,D,B,C,B,B,C,C,C,D,G,G,F,G,G,B,H,H,H,A,A A,A,A,A,A,A,B,G,G,G,G,B,C,C,C,C,C,C,B,B,B,B,C,C,C,C,C,C,D,B,G,G,G,G,B,H,H,H,A,A A,A,A,A,A,A,A,B,B,B,B,B,C,C,C,C,C,C,B,B,B,B,C,C,C,C,C,C,D,B,B,B,B,B,A,A,H,H,A,A A,A,A,A,A,A,A,A,A,A,A,D,D,C,C,C,C,F,B,B,B,B,F,C,C,C,C,D,D,A,A,A,A,A,A,A,A,A,A,A A,A,A,A,A,A,A,A,A,A,A,B,D,D,C,C,C,F,F,B,B,F,F,C,C,C,D,D,B,A,A,A,A,A,A,A,A,A,A,A A,A,A,A,A,H,H,H,A,A,A,A,B,B,D,C,C,F,F,F,F,F,F,C,C,D,B,B,A,A,A,A,A,A,H,H,H,A,A,A A,A,A,A,H,H,H,H,A,A,A,A,B,B,D,D,D,G,G,G,G,G,G,D,D,D,D,B,A,A,A,A,A,A,A,H,H,H,A,A A,A,A,A,H,H,H,A,A,A,A,B,D,D,D,D,D,G,G,G,G,G,G,D,D,D,D,D,B,A,A,A,A,A,A,A,H,H,A,A A,A,A,H,A,A,A,A,A,A,B,C,D,D,D,G,G,G,D,D,D,D,G,G,G,D,D,D,C,B,A,H,H,A,A,A,A,H,A,A A,A,A,H,H,A,A,A,A,A,D,C,C,C,D,G,G,F,G,D,D,G,F,G,G,D,D,C,C,C,B,A,H,H,A,A,A,A,A,A A,A,A,A,A,H,H,H,H,B,D,D,C,C,D,G,G,F,F,F,F,F,F,G,G,D,D,C,C,D,B,A,A,H,H,A,A,A,A,A A,A,A,A,A,A,A,A,A,B,D,D,C,C,C,C,C,B,F,F,F,F,F,B,C,C,C,C,D,D,B,A,A,H,H,H,H,A,A,A A,A,A,H,H,A,A,A,A,B,D,D,C,C,C,C,C,C,B,F,F,F,B,C,C,C,C,C,D,D,B,A,A,A,A,H,H,A,A,A A,A,A,A,A,A,A,A,A,A,B,B,D,D,C,C,C,C,C,B,F,B,C,C,C,C,D,D,B,B,A,A,A,H,H,A,A,A,A,A A,A,A,A,A,A,A,A,A,A,B,B,B,D,D,C,C,C,C,B,F,B,C,C,C,C,D,B,B,B,A,A,A,H,H,A,A,A,A,A A,A,A,A,A,A,A,A,A,B,C,C,C,B,B,D,D,D,D,B,F,B,D,D,D,B,B,D,C,C,B,A,A,A,H,A,A,A,A,A A,A,A,A,A,A,A,A,B,C,C,C,C,C,D,B,B,B,F,F,F,F,B,B,B,D,D,C,C,C,C,B,A,A,A,A,A,A,H,H A,A,A,A,A,A,A,A,B,C,C,C,C,C,D,D,D,G,G,F,F,G,G,D,D,D,D,C,C,C,C,B,A,A,A,A,A,A,H,H A,A,A,A,A,A,A,I,B,D,C,C,C,C,C,C,C,G,G,F,F,G,G,C,C,C,C,C,C,C,D,B,I,A,A,A,A,A,A,A A,A,A,A,A,A,A,I,B,D,D,D,C,C,C,B,B,B,G,G,G,G,B,B,B,C,C,C,D,D,D,B,I,A,A,A,A,A,A,A A,A,A,A,A,H,A,I,I,B,D,D,D,D,D,C,C,C,B,D,D,B,C,C,C,C,D,D,D,B,B,I,I,A,A,A,A,A,A,A A,A,A,A,A,H,H,H,I,B,B,D,D,D,D,D,C,C,B,D,D,B,C,C,C,D,D,D,D,B,I,I,A,A,A,A,A,A,A,A A,A,H,H,H,A,A,A,I,I,I,B,B,B,D,B,B,B,B,B,B,B,B,B,B,D,B,B,B,I,I,I,A,A,A,A,A,A,H,A A,A,H,H,H,A,A,A,A,I,I,I,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,I,I,I,A,A,A,A,A,A,A,H,A H,H,A,H,H,A,A,A,A,A,A,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,A,A,A,A,A,A,A,A,A,A A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,I,I,I,I,I,I,I,I,I,A,A,A,A,A,A,A,A,A,A,A,H,A,A,A,A A,A,A,A,A,A,A,A,A,A,A,A,H,H,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,H,H,A,A,A,A \end{filecontents*} \subsection{Example} \def\listcoulkoala% {VertForet,Noir,GrisClair,GrisFonce,Beige,Blanc,BleuClair,VertClair,Marron} \begin{PresentationCode}{listing only} \def\listcoulkoala% {VertForet,Noir,GrisClair,GrisFonce,Beige,Blanc,BleuClair,VertClair,Marron} \end{PresentationCode} \begin{PresentationCode}{} %block with 8x8 size \HelpGridPixelArtTikz{PAkoala.csv}{8x8} ~~ \PixlArtTikz[Correction,Unit=0.125,Codes=ABCDEFGHI,Colors={\listcoulkoala},Grid=8x8]{PAkoala.csv} \end{PresentationCode} \begin{PresentationCode}{} %16 blocks (4L 4C) \HelpGridPixelArtTikz*[2]{PAkoala.csv}{4+4} ~~ \PixlArtTikz[Correction,Unit=0.2,Codes=ABCDEFGHI,Colors={\listcoulkoala},Grid=4+4]{PAkoala.csv} \end{PresentationCode} \newpage \begin{PresentationCode}{} %block with 8x8 size \CutPixlArtTikz[Unit=0.3,Codes=ABCDEFGHI]{PAkoala.csv}{8x8} \end{PresentationCode} \pagebreak \begin{PresentationCode}{} %16 blocks (4L 4C) \CutPixlArtTikz*[Unit=0.3,Codes=ABCDEFGHI,Correction,Colors={\listcoulkoala}]{PAkoala.csv}{4+4} \end{PresentationCode} \pagebreak \section{Anamorphic cylinder PixelArt} \subsection{Idea} The idea is to provide something to create PixelArt with the aim of using a cylindrical anamorphosis. On \url{https://www.youtube.com/watch?v=PT8KUozBg3I}, there is a video \textit{demonstration}, proposed by Jean-Yves Labouche. The overall operation is similar to that of the \textit{main} command, however there are some adjustments: \begin{itemize} \item the possibility of giving the file \textsf{csv} in \textit{normal} or \textit{inverted} mode; \item the dimensions (width \& middle) must be specified to produce the PixelArt; \item the command is standalone (for the moment) so no addition(s) later. \end{itemize} \begin{PresentationCode}{listing only} \PixlArtTikzCylindric[keys]{file.csv} \end{PresentationCode} The files illustrating this paragraph are given below. \begin{PresentationCode}{} %version with inverted data \begin{filecontents*}[overwrite]{PAyoda.csv} E,E,E,A,A,E,A,A,E,D E,E,E,F,F,F,F,F,E,D E,E,E,F,F,C,F,F,E,D E,A,F,F,C,C,C,F,F,A E,A,F,F,C,C,C,F,F,A E,E,E,A,A,A,A,A,E,E E,E,E,A,A,A,A,A,E,E E,E,A,E,B,A,B,E,A,E E,A,A,A,A,A,A,A,A,A E,E,E,A,A,A,A,A,E,E \end{filecontents*} \PixlArtTikz[% Codes=ABCDEF, Colors={green,black,brown,white,brown!75!black,lightgray}, Correction,Unit=0.35]% {PAyoda.csv} \end{PresentationCode} \begin{PresentationCode}{} %version with normal data \begin{filecontents*}{PAsorciere.csv} V,V,V,V,N,N,N,V,V,V V,V,V,N,N,N,N,N,V,V N,N,N,N,N,N,N,N,N,N V,V,V,G,G,G,O,O,V,V V,V,V,J,J,G,O,O,O,V V,V,G,N,J,G,O,O,O,V V,G,G,G,G,G,O,O,O,O V,V,N,N,N,G,O,O,O,O V,V,G,G,G,G,O,O,O,O V,V,V,V,N,N,O,O,O,O \end{filecontents*} \PixlArtTikz[% Codes=VNGOJ, Colors={purple!50,black,green,orange,yellow}, Correction,Unit=0.35]% {PAsorciere.csv} \end{PresentationCode} \subsection{Keys and options} The first argument, \textit{optional} and between \texttt{[...]} offers \textsf{Keys} necessary for the command to function properly: \begin{itemize} \item the key \Cle{Width} which defines the width (radius in cm) of the rendering;\hfill{}default \textsf{6} \item the key \Cle{Center} which defines the width (radius in cm) of the \textit{middle};\hfill{}default \textsf{1.25} \item the key \Cle{Codes} contains the \textit{string} of the \textit{simple} codes of the file \textsf{csv}; \item the key \Cle{Colors} which contains the \textit{list} of associated colors; \item the key \Cle{Symbols} which contains the \textit{possible list} of alternative characters to display in the boxes; \item the key \Cle{Style} which allows you to specify the style of characters. \hfill{}default \textsf{normalsize} \item the Boolean key \Cle{Correction} which allows you to color the PixelArt;\hfill{}default \textsf{false} \item the Boolean key \Cle{Symb} which allows you to display the \textit{alternative} characters;\hfill{}default \textsf{false} \item the Boolean key \Cle{Solution} which displays the solution (with \textit{mirror} effect);\hfill{}default \textsf{false} \item the Boolean key \Cle{Swap} which allows you to specify the data type (\Cle{true} := normal; \Cle{false} := inverted). \hfill{}default \textsf{false} \end{itemize} The second argument, \textit{mandatory}, is the name of the \textsf{csv} file to use. \pagebreak \subsection{Example with inverted data (Yoda)} In this paragraph, we use the data \texttt{PAyoda}, which corresponds to the \textit{inverted} layout, so the key \Cle{Swap} is not necessary. \begin{PresentationCode}{} %classic version \PixlArtTikzCylindric[Codes=ABCDEF,Style=\small\ttfamily]{PAyoda.csv} %version with 'symbols' \PixlArtTikzCylindric[Codes=ABCDEF,Symbols={1,2,3,4,5,6},Symb,Style=\small\ttfamily]{PAyoda.csv} \end{PresentationCode} \begin{PresentationCode}{} %Fix and solution \begin{tabular}{c} \PixlArtTikzCylindric[% Codes=ABCDEF, Colors={green,black,brown,white,brown!75!black,lightgray}, Solution]% {PAyoda.csv} \\ \PixlArtTikzCylindric[% Codes=ABCDEF, Colors={green,black,brown,white,brown!75!black,lightgray}, Correction]% {PAyoda.csv} \end{tabular} \end{PresentationCode} \pagebreak \subsection{Example with classic data (Witch)} In this paragraph, we use the data \texttt{PAsorciere}, which corresponds to the \textit{normal} layout, so the key \Cle{Swap} is necessary. \begin{PresentationCode}{} %classic version \PixlArtTikzCylindric[% Width=4,Center=1,Codes=VNGOJ, Colors={purple!50,black,green,orange,yellow}, Swap,Style=\ttfamily\scriptsize]% {PAsorciere.csv} \end{PresentationCode} \begin{PresentationCode}{} %Correction and solution \begin{tabular}{c} \PixlArtTikzCylindric[% Width=4,Center=0.75,Codes=VNGOJ, Colors={purple!50,black,green,orange,yellow}, Swap,Solution]% {PAsorciere.csv} \\ \PixlArtTikzCylindric[% Width=4,Center=0.75,Codes=VNGOJ, Colors={purple!50,black,green,orange,yellow}, Swap,Correction]% {PAsorciere.csv} \end{tabular} \end{PresentationCode} \newpage \part{History} \verb|v0.1.5|~:~~~~Symbols can be given with list(s) + Enhancements of internal code \verb|v0.1.4|~:~~~~Anamorphic cylinder PixelArts \verb|v0.1.3|~:~~~~Cut PixelArts within several PixelArts \verb|v0.1.2|~:~~~~\textit{mini-}PixelArts \verb|v0.1.1|~:~~~~Bugfix with color \verb|v0.1.0|~:~~~~Initial version \end{document}