texlive[76039] Master: tikzbrickfigurines (12aug25)

commits+karl at tug.org commits+karl at tug.org
Tue Aug 12 22:21:16 CEST 2025


Revision: 76039
          https://tug.org/svn/texlive?view=revision&revision=76039
Author:   karl
Date:     2025-08-12 22:21:16 +0200 (Tue, 12 Aug 2025)
Log Message:
-----------
tikzbrickfigurines (12aug25)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/libexec/ctan2tds
    trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/
    trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/README.md
    trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf
    trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.tex
    trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/
    trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/tikzbrickfigurines.sty
    trunk/Master/tlpkg/tlpsrc/tikzbrickfigurines.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/README.md	2025-08-12 20:21:16 UTC (rev 76039)
@@ -0,0 +1,11 @@
+The package allows to draw brick-figurines with TikZ.
+
+The user can modify their colour, shape and elements.
+
+-----------------------------------------------------
+
+Author..: Cédric Pierquet
+
+email...: cpierquet at outlook.fr
+
+Licence.: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf	2025-08-12 20:20:19 UTC (rev 76038)
+++ trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf	2025-08-12 20:21:16 UTC (rev 76039)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.tex	2025-08-12 20:21:16 UTC (rev 76039)
@@ -0,0 +1,615 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode}
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage{bera}
+\usepackage{inconsolata}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[scale=0.875]{cabin}
+\usepackage{tikzbrickfigurines}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{tabularray}
+\usepackage{fontawesome5}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [tikzbrickfigurines]}
+\cfoot{%
+	\raisebox{-1.75em}{\minitikzbrickfigurine[color sweat=white,display logo,logo={\bfseries\sffamily\color{black}{\thepage}}]{3.5em}{*}}
+}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+\usepackage{hologo}
+\usepackage{xspace}
+\providecommand*{\CTAN}{\textsc{CTAN}\xspace}
+\providecommand*{\TikZ}{Ti\emph{k}Z\xspace}
+\providecommand*{\miktex}{MiK\TeX\xspace}
+\providecommand*{\texlive}{\TeX{}Live\xspace}
+\providecommand*{\tikzbrick}{Ti\emph{k}Zbricks\xspace}
+\providecommand*{\tikzbrickfigurines}{Ti\emph{k}Zbrickfigurines\xspace}
+
+\usepackage{openmoji}
+\definecolor{brickskin}{HTML}{FFDFC4}
+\definecolor{brickjean}{HTML}{24496B}
+\definecolor{brickblondhair}{HTML}{E2BC74}
+\newlength\brickfigfigurineheight
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm,includefoot]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{12/08/2025}
+\usepackage{enumitem}
+\usepackage{openmoji}
+\usepackage{tcolorbox}
+\usepackage{pgffor}
+\tcbuselibrary{breakable,skins,hooks,listingsutf8}
+
+\lstdefinestyle{packagestyle}
+{
+	language=[LaTeX]TeX,%
+	columns=fullflexible,%
+	extendedchars=true,%
+	basicstyle=\small\ttfamily,%
+	keywordstyle={\color{black}},%
+	classoffset=0,%
+	keywords={\includegraphics},%
+	alsoletter={-},%
+	keywordstyle={\color{blue}},%
+	classoffset=1,%
+	alsoletter={-},%
+	morekeywords={tikzbrickfigurines},%
+	keywordstyle={\color{violet}},%
+	classoffset=2,%
+	alsoletter={-},%
+	morekeywords={\tikzbrickfigurine,\minitikzbrickfigurine,\tikzbrickfigurinepiece},%
+	keywordstyle={\color{green!50!black}},%
+	classoffset=3,%
+	morekeywords={},%
+	keywordstyle={\color{orange}},%
+	inputencoding=utf8/latin1
+}
+
+\lstset{
+	basicstyle=\small\ttfamily,%
+	keywordstyle={},%
+}
+
+\newtcblisting{DemoCode}[1]{%
+	enhanced,width=\linewidth,%
+	bicolor,size=title,%
+	colback=cyan!10!white,%
+	colbacklower=cyan!5!white,%
+	colframe=cyan!75!black,%
+	listing options={%
+		breaklines=true,%
+		breakatwhitespace=true,%
+		style=packagestyle,%
+		basicstyle=\footnotesize\ttfamily,%
+		tabsize=4,%
+		commentstyle={\itshape\color{gray}},
+		keywordstyle={\color{blue}},%
+		classoffset=0,%
+		keywords={},%
+		alsoletter={-},%
+		keywordstyle={\color{blue}},%
+		classoffset=1,%
+		alsoletter={-},%
+		morekeywords={},%
+		keywordstyle={\color{violet}},%
+		classoffset=2,%
+		alsoletter={-},%
+		morekeywords={},%
+		keywordstyle={\color{green!50!black}},%
+		classoffset=3,%
+		morekeywords={},%
+		keywordstyle={\color{orange}}
+	},%
+	#1
+}
+
+\newtcbinputlisting\DemoCodeFile[1]{%
+	enhanced,width=\linewidth,%
+	bicolor,size=title,%
+	colback=lightgray!10!white,%
+	colbacklower=lightgray!5!white,%
+	colframe=lightgray!75!black,%
+	listing options={%
+		breaklines=true,%
+		breakatwhitespace=true,%
+		style=tcblatex,
+		extendedchars=true,%
+		basicstyle=\tiny\ttfamily,%
+		keywordstyle={},%
+		tabsize=2,%
+		commentstyle={\itshape\color{gray}},%
+		inputencoding=utf8/latin1
+	},%
+	breakable,
+	listing only,%
+	listing file={#1}
+}
+
+\setlength\fboxsep{1.5pt}
+
+\NewDocumentCommand\ShowCode{ O{lightgray!50} m }{%
+	\colorbox{#1}{\lstinline+#2+}%
+}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\begin{center}
+	\begin{minipage}{0.88\linewidth}
+		\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+			\begin{center}
+				\renewcommand{\arraystretch}{1.25}%
+				\begin{tabular}{c}
+					{\Huge \texttt{tikzbrickfigurines}}\\
+					\\
+					{\LARGE Drawing brick-figurines} \\
+					{\LARGE with \TikZ.} \\
+					\\
+					{\small \texttt{Version \TPversion\ -- \TPdate}}
+				\end{tabular}
+			\end{center}
+		\end{tcolorbox}
+	\end{minipage}
+\end{center}
+
+\begin{center}
+	\begin{tabular}{c}
+		\texttt{Cédric Pierquet}\\
+		{\ttfamily cpierquet -- at -- outlook . fr}\\
+		\texttt{\url{https://github.com/cpierquet/latex-packages/tikzbrickfigurines}} \\
+	\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\hfill%
+\tikzbrickfigurine%
+[%
+mouthstyle=7,%
+eyestyle=1,%
+eyebrowstyle=7,
+hairstyle=10,
+color skin=brickskin,
+color hair=brown,
+color sweat=white,
+color pant=brickjean,
+color foot=brickjean!50!black,
+custom logo,
+%logo={\openmoji{rhinoceros}}
+logo={\huge\bfseries\sffamily\rotatebox{30}{\begin{tabular}{c} {\Huge\openmoji{snake}} \\ {\LARGE \faHandPointRight} made with \\ \LaTeX/\TikZ\ {\LARGE \faHandPointLeft}  \\ {\Huge\openmoji{infinity}} \end{tabular}}}
+]%
+{3in}%
+\hfill\null
+
+\vfill
+
+\section{Introduction}
+
+The package allows to draw \textit{brick}-figurines with \TikZ.
+
+The user can modify their colour, shape and elements.
+
+\medskip
+
+The package is included in both \texlive and \miktex and available from \CTAN\  (\url{https://ctan.org/pkg/tikzbrickfigurines}).
+
+\medskip
+
+The development version of this package is located on github at \url{https://github.com/cpierquet/latex-packages/tikzbrickfigurines}. If you have any problems, ideas or other feedback, please make constructive use of its bug tracker.
+
+\medskip
+
+The style of this documentation is inspired by \texttt{samcarter}'s doc for their great \tikzbrick\ package (\url{https://ctan.org/pkg/tikzbricks}).
+
+\medskip
+
+Copyright \raisebox{0.2em}{\tiny\fontfamily{cmr}\selectfont\textcopyright} \texttt{Cédric Pierquet}.
+
+\textbullet~~Inspired by LEGO\texttrademark, but all graphics are made from scratch.
+
+\textbullet~~Permission is granted to copy, distribute and\slash or modify this software under the terms of the
+
+\hfill\href{https://www.latex-project.org/lppl.txt}{LaTeX project public licence, version 1.3c or later}.\hfill\null
+
+\vfill\null
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\vfill
+
+\section{History}
+
+\texttt{0.1.0: Initial version}
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Loading, developments}
+
+\subsection{Loading, useful packages}
+
+To use \texttt{tikzbrickfigurines}, simply use \ShowCode{\\usepackage\{tikzbrickfigurines\}}.
+
+\begin{DemoCode}{listing only}
+\usepackage{tikzbrickfigurines}
+\end{DemoCode}
+
+Loaded packages are \ShowCode{tikz}, \ShowCode{simplekv}, \ShowCode{xstring}, \ShowCode{ifthen}, \ShowCode{listofitems}, \ShowCode{graphicx} and \ShowCode{calc}.
+
+Loaded libraries are \ShowCode{shapes.geometric,bbox,decorations,decorations.pathmorphing,calc}.
+
+\subsection{Developments}
+
+For the moment, the package uses internal macros for creating/manipulating pieces and elements, but eventually, the future plan is:
+
+\begin{itemize}
+	\item to manipulate these elements with a \ShowCode{pic} code;
+	\item to improve the code for the logo.
+\end{itemize}
+
+
+\section{Global usage}
+
+\subsection{Version 1}
+
+An individual \tikzbrickfigurines can be drawn with:
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurine%
+  [keys]%
+  <tikz options>%
+  {height}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+%default output
+\tikzbrickfigurine{1.5in}
+\end{DemoCode}
+
+\subsection{Version 2}
+
+An individual \tikzbrickfigurines can be drawn with:
+
+\begin{DemoCode}{listing only}
+\minitikzbrickfigurine%
+  [keys]%
+  <tikz options>%
+  {height}%
+  {list of styles, within M/E/Eb/H}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\minitikzbrickfigurine{1.5in}{1/1/1/0}%default style
+\minitikzbrickfigurine{1.5in}{4/7/1/2}%with choosen styles
+\minitikzbrickfigurine{1.5in}{3/*/9/*}%with choosen and random styles
+\minitikzbrickfigurine{1.5in}{*}%with full random styles
+\minitikzbrickfigurine{1.5in}{*}%with other full random styles
+\end{DemoCode}
+
+\subsection{Individual part}
+
+An individual \tikzbrickfigurines piece can be drawn with:
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece%
+  [keys]%
+  <tikz options>%
+  {piece / style}%
+  {height}
+\end{DemoCode}
+
+\begin{DemoCode}{}
+\tikzbrickfigurinepiece[head=true]{hair=3}{1in}%
+\tikzbrickfigurinepiece[head=true]{eyes=7}{1in}%
+\tikzbrickfigurinepiece[head=true]{mouth=2}{1in}%
+\tikzbrickfigurinepiece{head=2/3/*/5}{1in}%
+\end{DemoCode}
+
+\section{Keys and styles}
+
+\subsection{Keys}
+
+Available \texttt{\textbf{keys}} are:
+
+\begin{itemize}[leftmargin=*,itemsep=1pt]
+	\item \ShowCode{color lines}: eventual color for borders
+	\item \ShowCode{color skin}: global color for skin (override individual colors if given)
+	\item \ShowCode{color sweat}: global color for body and arms (override individual colors if given)
+	\item \ShowCode{color pant}: global color for pant (override individual colors if given)
+	\item \ShowCode{color belt}: color for the belt (\ShowCode[orange!15]{darkgray})
+	\item \ShowCode{color bottom belt}: color for the belt (\ShowCode[orange!15]{blue!75})
+	\item \ShowCode{color body}: simple color for the body (\ShowCode[orange!15]{red})
+	\item \ShowCode{color arm}: simple color for the arms (\ShowCode[orange!15]{red})
+	\item \ShowCode{color arm shadow}: simple color for the arms shadow (\ShowCode[orange!15]{red!85!black})
+	\item \ShowCode{color hand}: simple color for the hand (\ShowCode[orange!15]{yellow})
+	\item \ShowCode{color hand shadow}: simple color for the hand shadow (\ShowCode[orange!15]{yellow!85!black})
+	\item \ShowCode{color neck}: simple color for the neck (\ShowCode[orange!15]{yellow})
+	\item \ShowCode{color head}: simple color for the head (\ShowCode[orange!15]{yellow})
+	\item \ShowCode{color hair}: color for the hair (\ShowCode[orange!15]{brown})
+	\item \ShowCode{color top pant}: simple color for top pant (\ShowCode[orange!15]{blue!75})
+	\item \ShowCode{color middle pant}: simple color for mid pant (\ShowCode[orange!15]{blue!75})
+	\item \ShowCode{color foot}: simple color for shoes (\ShowCode[orange!15]{darkgray!50!black})
+	\item \ShowCode{display logo}: boolean for logo (\ShowCode[orange!15]{false})
+	\item \ShowCode{custom logo}: boolean for custom logo (\ShowCode[orange!15]{false})
+	\item \ShowCode{logo}: code for the optional logo
+	\item \ShowCode{scale logo}: custom scale for \ShowCode{display logo} (\ShowCode[orange!15]{0.667})
+	\item \ShowCode{empty}: boolean for empty figurine (\ShowCode[orange!15]{false})
+	\item \ShowCode{hairstyle}: style of hair, from 0 to 10 (\ShowCode[orange!15]{0})
+	\item \ShowCode{eyestyle}: style of eyes, from 1 to 10(\ShowCode[orange!15]{1})
+	\item \ShowCode{eyebrowstyle}: style of eyebrows, from 1 to 10(\ShowCode[orange!15]{1})
+	\item \ShowCode{mouthstyle}: style of mouth, from 1 to 10(\ShowCode[orange!15]{1})
+	\item \ShowCode{seed}: random seed for some hair code (\ShowCode[orange!15]{365479})
+	\item \ShowCode{bbox} boolean for using \ShowCode{bbox} library (\ShowCode[orange!15]{false})
+	\item \ShowCode{vcenter} boolean for centering vertically, with \texttt{tikz baseline} (\ShowCode[orange!15]{false})
+	\item \ShowCode{head}: boolean for showing head with individual element (\ShowCode[orange!15]{false})
+\end{itemize}
+
+\subsection{Elements}
+
+\subsubsection{Body / legs / head / arms / hands / heads}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys]<tizk options>{piece}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{9}{Q[m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{piece}}} & body & legs & head & {left\\arm} & {right\\arm} &{left arm\\wo hand} & {right arm\\wo hand} & {left\\hand} & {righ\\hand} \\
+	&\tikzbrickfigurinepiece[vcenter]{body}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{legs}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{head}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{left arm}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{right arm}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{left arm wo hand}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{right arm wo hand}{0.75in} & 
+	\tikzbrickfigurinepiece[vcenter]{left hand}{0.75in} &
+	\tikzbrickfigurinepiece[vcenter]{right hand}{0.75in} \\
+\end{tblr}
+
+\subsubsection{Mouth}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys]<tizk options>{mouth=...}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{10}{Q[0.8cm,m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{mouth=}}} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\
+	&\tikzbrickfigurinepiece[head=true]{mouth=1}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=2}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=3}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=4}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=5}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=6}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=7}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=8}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=9}{1in} &
+	\tikzbrickfigurinepiece[head=true]{mouth=10}{1in}
+\end{tblr}
+
+\subsubsection{Eyes}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys,head=true]<tizk options>{eyes=...}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{10}{Q[0.8cm,m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{eyes=}}} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\
+	&\tikzbrickfigurinepiece[head=true]{eyes=1}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=2}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=3}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=4}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=5}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=6}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=7}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=8}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=9}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyes=10}{1in}
+\end{tblr}
+
+\subsubsection{Eyebrows}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys,head=true]<tizk options>{eyebrows=...}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{10}{Q[0.8cm,m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{eyebrows=}}} & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\
+	&\tikzbrickfigurinepiece[head=true]{eyebrows=1}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=2}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=3}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=4}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=5}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=6}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=7}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=8}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=9}{1in} &
+	\tikzbrickfigurinepiece[head=true]{eyebrows=10}{1in}
+\end{tblr}
+
+\subsubsection{Hair}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys,head=true]<tizk options>{hair=...}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{11}{Q[0.8cm,m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{hair=}}} & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\
+	&\tikzbrickfigurinepiece[head=true]{hair=0}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=1}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=2}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=3}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=4}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=5}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=6}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=7}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=8}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=9}{1in} &
+	\tikzbrickfigurinepiece[head=true]{hair=10}{1in}
+\end{tblr}
+
+\subsubsection{Head(s)}
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurinepiece[keys]<tizk options>{head=...}{height}
+\end{DemoCode}
+
+\begin{tblr}{hlines,vlines,colspec={Q[1.25cm,m,c]*{5}{Q[1.6cm,m,c]}},row{1}={font=\footnotesize\ttfamily}}
+	\SetCell[r=2,c=1]{c}{\rotatebox{45}{\textbf{head=}}} & * & 4/8/1/6 & 2/*/*/9 & 3/3/3/3 & 10/10/10/2 \\
+	&\tikzbrickfigurinepiece{head=*}{2in} &
+	\tikzbrickfigurinepiece{head=4/8/1/6}{2in} &
+	\tikzbrickfigurinepiece{head=2/*/*/9}{2in} &
+	\tikzbrickfigurinepiece{head=3/3/3/3}{2in} &
+	\tikzbrickfigurinepiece{head=10/10/10/2}{2in}
+\end{tblr}
+
+\pagebreak
+
+\section{Samples}
+
+\subsection{Influence of options}
+
+\begin{DemoCode}{}
+\definecolor{brickskin}{HTML}{FFDFC4}
+
+\tikzbrickfigurine%
+  [%
+    color lines=darkgray,
+    color belt=lightgray,
+    color bottom belt=blue!75,
+    color body=red,
+    color arm=violet,
+    color arm shadow=lime,
+    color hand=yellow,
+    color hand shadow=orange,
+    color neck=teal,
+    color head=brickskin,
+    color hair=cyan,
+    color top pant=pink,
+    color middle pant=pink!50!black,
+    color foot=white,
+    display logo,scale logo=0.8,
+    logo={\openmoji{unicorn}},
+    hairstyle=6,%
+    eyestyle=5,%
+    eyebrowstyle=10,%
+    mouthstyle=2
+  ]%
+  <rotate=15>
+  {2.75in}%
+\end{DemoCode}
+
+\pagebreak
+
+\subsection{Random usage}
+
+\begin{DemoCode}{}
+\newcommand\randomcolor[1]{%
+  \pgfmathsetmacro{\R}{random(0,10000)/10000}%
+  \pgfmathsetmacro{\G}{random(0,10000)/10000}%
+  \pgfmathsetmacro{\B}{random(0,10000)/10000}%
+  \definecolor{#1}{rgb}{\R,\G,\B}%
+}
+
+\pgfmathdeclarerandomlist{listsksintones}%
+  {{brickskin}{yellow}{pink}{brown}{brown!50!white}}
+\pgfmathdeclarerandomlist{listhairtones}%
+  {{lightgray!15}{yellow}{orange}{brown}{gray}{black}}
+\pgfmathdeclarerandomlist{listlogos}%
+  {{unicorn}{alien}{snake}{adhesive bandage}{desert island}{videocassette}{alien monster}}
+
+%five 'random' clothes + face + skin + hair + logo brickfigurines
+\foreach \i in {1,...,5}{%
+  \randomcolor{randomsweatcolor}%
+  \randomcolor{randompantcolor}%
+  \randomcolor{randomshoecolor}%
+  \pgfmathrandomitem{\skinrandom}{listsksintones}%
+  \pgfmathrandomitem{\hairrandom}{listhairtones}%
+  \pgfmathrandomitem{\logorandom}{listlogos}%
+  \minitikzbrickfigurine%
+    [%
+      color skin=\skinrandom,%
+      color hair=\hairrandom,%
+      color sweat=randomsweatcolor,%
+      color pant=randompantcolor,%
+      color foot=randomshoecolor,%
+      display logo,scale logo=0.8,%
+      logo={\openmoji{\logorandom}},%
+      vcenter
+    ]%
+    <rotate=\fpeval{randint(-20,20)}>%
+    {1.75in}{*}
+}
+\end{DemoCode}
+
+\pagebreak
+
+\subsection{Overlay usage}
+
+Several nodes a created within internal code, and with \TikZ\ options, overlays elements can be added.
+
+\begin{DemoCode}{listing only}
+\tikzbrickfigurine%
+  [figure name=myfigurine]%
+  <remember picture>
+  {4.5in}%
+
+\end{DemoCode}
+
+\tikzbrickfigurine%
+[figure name=myfigurine]%
+<remember picture>
+{4.5in}%
+
+\begin{tikzpicture}[remember picture,overlay]
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-MOUTH) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-MOUTH)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-EYES) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-EYES)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-LOGO) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-LOGO)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-HAIR) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-HAIR)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-EYEBROWS) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-EYEBROWS)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-BELT) circle[radius=3pt] --++ (5cm,0cm) node[right,font=\small\sffamily] {node (myfigurine-BELT)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-LEFTHAND) circle[radius=3pt] --++ (2.5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-LEFTHAND)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-RIGHTHAND) circle[radius=3pt] --++ (8.5cm,-2cm) node[right,font=\small\sffamily] {node (myfigurine-RIGHTHAND)} ;
+	%feet
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-LEFTFOOT) circle[radius=3pt] --++ (3cm,0cm) node[right,font=\small\sffamily] {node (myfigurine-LEFTFOOT)} ;
+	\draw[very thick,gray,fill=white,->,>=latex] (myfigurine-RIGHTFOOT) circle[radius=3pt] --++ (5cm,-1cm) node[right,font=\small\sffamily] {node (myfigurine-RIGHTFOOT)} ;
+	%shoulders
+	\draw[very thick,violet,fill=white] (myfigurine-RIGHTSHOULDER) circle[radius=3pt] (myfigurine-LEFTSHOULDER) circle[radius=3pt];
+	\draw[very thick,violet] ([shift={(135:3pt)}]myfigurine-RIGHTSHOULDER) --++ (-45:6pt) ;
+	\draw[very thick,violet] ([shift={(-135:3pt)}]myfigurine-RIGHTSHOULDER) --++ (45:6pt) ;
+	\draw[very thick,violet] ([shift={(135:3pt)}]myfigurine-LEFTSHOULDER) --++ (-45:6pt) ;
+	\draw[very thick,violet] ([shift={(-135:3pt)}]myfigurine-LEFTSHOULDER) --++ (45:6pt) ;
+	%neck
+	\draw[very thick,teal,fill=white] (myfigurine-NECK) circle[radius=3pt];
+	\draw[very thick,teal] ([shift={(-135:3pt)}]myfigurine-NECK) --++ (45:6pt) ;
+	\draw[very thick,teal] ([shift={(135:3pt)}]myfigurine-NECK) --++ (-45:6pt) ;
+\end{tikzpicture}
+
+\vspace*{1cm}
+
+Other available nodes are:
+
+\begin{itemize}
+	\item \ShowCode[violet!50]{(<mynode>-RIGHTSHOULDER)}, \ShowCode[violet!50]{(<mynode>-LEFTSHOULDER)};
+	\item \ShowCode[teal!50]{(<mynode>-NECK)}.
+\end{itemize}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/tikzbrickfigurines/tikzbrickfigurines-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/tikzbrickfigurines.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/tikzbrickfigurines.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/tikzbrickfigurines.sty	2025-08-12 20:21:16 UTC (rev 76039)
@@ -0,0 +1,832 @@
+% Author..........: C. Pierquet
+% licence.........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikzbrickfigurines}[2025/08/12 0.1.0 Small brickfigurines, made with tikz]
+
+%====HISTORY
+% v 0.1.0  Initial version
+
+%====PACKAGES
+\RequirePackage{simplekv}
+\RequirePackage{xstring}
+\RequirePackage{ifthen}
+\RequirePackage{listofitems}
+\RequirePackage{graphicx}
+\RequirePackage{calc}
+\RequirePackage{tikz}
+\usetikzlibrary{shapes.geometric,bbox,decorations,decorations.pathmorphing,calc}
+
+%https://tex.stackexchange.com/questions/719042/tikz-how-clip-to-complement-of-a-region
+\usetikzlibrary{spath3}
+\tikzset{
+  invclip/.style={clip even odd rule,overlay,insert path={[reset cm](-16383.99999pt,-16383.99999pt) rectangle (16383.99999pt,16383.99999pt)},},
+  clip even odd rule/.code={\pgfseteorule}
+}
+\tikzset{use path now/.code={\pgfsyssoftpath at setcurrentpath#1}}
+
+%----lengths
+\newlength\tkzbrickfigheight
+\newlength\tkzbrickfigheightlogo
+\newlength\tkzbrickfigwidthlogo
+
+%----keys
+\defKV[tkzshapebrickfig]{%
+  color lines=\def\tkzshapebrickfiglinescolor{#1},%
+  color skin=\def\tkzshapebrickfigskincolor{#1},%
+  color sweat=\def\tkzshapebrickfigsweatcolor{#1},%
+  color pant=\def\tkzshapebrickfigpantcolor{#1},%
+  color belt=\tikzset{brickfig shape belt/.style={fill=#1}},
+  color bottom belt=\tikzset{brickfig shape bottom belt/.style={fill=#1}},
+  color body=\tikzset{brickfig shape body/.style={fill=#1}},
+  color arm=\tikzset{brickfig shape arm/.style={fill=#1}},
+  color arm shadow=\tikzset{brickfig shape arm shadow/.style={fill=#1}},
+  color hand=\tikzset{brickfig shape hand/.style={fill=#1}},
+  color hand shadow=\tikzset{brickfig shape hand shadow/.style={fill=#1}},
+  color neck=\tikzset{brickfig shape neck/.style={fill=#1}},
+  color head=\tikzset{brickfig shape head/.style={fill=#1}},
+  color hair=\tikzset{brickfig shape hair/.style={fill=#1}},
+  color top pant=\tikzset{brickfig shape top pant/.style={fill=#1}},
+  color middle pant=\tikzset{brickfig shape middle pant/.style={fill=#1}},
+  color foot=\tikzset{brickfig shape foot/.style={fill=#1}},%
+  logo=\def\tkzshapebrickfiglogo{#1},%
+  scale logo=\def\tkzshapebrickfigscalelogo{#1},%
+  figure name=\def\tkzshapebrickfigname{#1}
+}
+\setKVdefault[tkzshapebrickfig]{%
+  color lines={},%
+  color skin={},
+  color sweat={},%
+  color pant={},
+  color belt=darkgray,
+  color bottom belt=blue!75,
+  color body=red,
+  color arm=red,
+  color arm shadow=red!85!black,
+  color hand=yellow,
+  color hand shadow=yellow!85!black,
+  color neck=yellow,
+  color head=yellow,
+  color hair=brown,
+  color top pant=blue!75,
+  color middle pant=blue!75,
+  color foot=darkgray!50!black,%
+  display logo=false,%
+  custom logo=false,%
+  logo={ },%
+  scale logo=0.667,
+  man=false,%
+  woman=false,%
+  empty=false,%
+  hairstyle=0,%
+  eyestyle=1,%
+  eyebrowstyle=1,%
+  mouthstyle=1,%
+  seed=365479,%
+  angry=false,%
+  scary=false,%
+  surprised=false,%
+  bbox=false,%
+  head=false,%
+  vcenter=false,%
+  figure name=MYBRICKFIG
+}
+
+%----init styles
+\tikzset{brickfig shape belt/.style={fill=gray}}
+\tikzset{brickfig shape bottom belt/.style={fill=blue!75!black}}
+\tikzset{brickfig shape body/.style={fill=red}}
+\tikzset{brickfig shape arm/.style={fill=red}}
+\tikzset{brickfig shape arm shadow/.style={fill=red!85!black}}
+\tikzset{brickfig shape hand/.style={fill=yellow}}
+\tikzset{brickfig shape hand shadow/.style={fill=yellow!85!black}}
+\tikzset{brickfig shape neck/.style={fill=yellow}}
+\tikzset{brickfig shape head/.style={fill=yellow}}
+\tikzset{brickfig shape hair/.style={fill=brown}}
+\tikzset{brickfig shape top pant/.style={fill=blue!75!black}}
+\tikzset{brickfig shape middle pant/.style={fill=blue!75!black}}
+\tikzset{brickfig shape foot/.style={fill=white}}
+
+%----int eye
+\newcommand\inttkzshapebrickfigeye[1]{%gen eye macro 1/2/3/4
+  \ifcase#1\relax%
+  \or\inttkzshapebrickfigeyeA{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOW}{\tkzshapebrickfigname-EYELEFTSHADOW}%=1
+  \or\inttkzshapebrickfigeyeA{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOWBOTTOM}{\tkzshapebrickfigname-EYELEFTSHADOWBOTTOM}%=2
+  \or\inttkzshapebrickfigeyeB{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOWBOTTOM}{\tkzshapebrickfigname-EYELEFTSHADOWBOTTOM}%=3
+  \or\inttkzshapebrickfigeyeB{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}%=4
+  \or\inttkzshapebrickfigeyeC{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOW}{\tkzshapebrickfigname-EYELEFTSHADOW}%=5
+  \or\inttkzshapebrickfigeyeD{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOWBOTTOM}{\tkzshapebrickfigname-EYELEFTSHADOWBOTTOM}%=6
+  \or\inttkzshapebrickfigeyeE{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOW}{\tkzshapebrickfigname-EYELEFT}%=7
+  \or\inttkzshapebrickfigeyeE[-1]{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHT}%=8
+  \or\inttkzshapebrickfigeyeC{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOWBOTTOM}{\tkzshapebrickfigname-EYELEFTSHADOWBOTTOM}%=9
+  \or\inttkzshapebrickfigeyeD{\tkzshapebrickfigname-EYERIGHT}{\tkzshapebrickfigname-EYELEFT}{\tkzshapebrickfigname-EYERIGHTSHADOW}{\tkzshapebrickfigname-EYELEFTSHADOW}%=10
+  \fi%
+}
+
+\newcommand\inttkzshapebrickfigeyeA[4]{%normal eye
+  \fill[] (#1) circle[x radius=0.3,y radius=0.35] ;
+  \fill[] (#2) circle[x radius=0.3,y radius=0.35] ;
+  \fill[white] (#3) circle[x radius=0.1,y radius=0.125] ;
+  \fill[white] (#4) circle[x radius=0.1,y radius=0.125] ;
+}
+
+\newcommand\inttkzshapebrickfigeyeB[4]{%sad eye
+  \fill[] (#1) circle[x radius=0.3,y radius=0.35] ;
+  \fill[] (#2) circle[x radius=0.3,y radius=0.35] ;
+  \fill[white] (#3) circle[x radius=0.125,y radius=0.15] ;
+  \fill[white] (#4) circle[x radius=0.125,y radius=0.15] ;
+}
+
+\newcommand\inttkzshapebrickfigeyeC[4]{%
+  \fill[] (#1) circle[x radius=0.3,y radius=0.35] ;
+  \fill[] (#2) circle[x radius=0.3,y radius=0.35] ;
+  \fill[white] (#3) circle[x radius=0.1,y radius=0.125] ;
+  \fill[white] (#4) circle[x radius=0.1,y radius=0.125] ;
+  \draw[line cap=rect] ([shift={(0.575,-0.05)}]#1) to[bend left=15]++ (0.35,0) to[bend right=10] cycle ;
+  \draw[line cap=rect] ([shift={(0.575,-0.05)}]#1) to[bend left=15]++ (0.3,-0.3) to[bend right=10] cycle ;
+  \draw[line cap=rect] ([shift={(-0.575,-0.05)}]#2) to[bend right=15]++ (-0.35,0) to[bend left=10] cycle ;
+  \draw[line cap=rect] ([shift={(-0.575,-0.05)}]#2) to[bend right=15]++ (-0.3,-0.3) to[bend left=10] cycle ;
+}
+
+\newcommand\inttkzshapebrickfigeyeD[4]{%
+  \fill[] (#1) circle[x radius=0.3,y radius=0.35] ;
+  \fill[] (#2) circle[x radius=0.3,y radius=0.35] ;
+  \fill[white] (#3) circle[x radius=0.1,y radius=0.125] ;
+  \fill[white] (#4) circle[x radius=0.1,y radius=0.125] ;
+  \draw[line cap=round,line width=\fpeval{\tkzbrickfigscale*0.9}mm] ([shift={(-0.2,0.41)}]#1) to[bend right=10]++ (0.5,-0.15) ;
+  \draw[line cap=round,line width=\fpeval{\tkzbrickfigscale*0.9}mm] ([shift={(0.2,0.41)}]#2) to[bend left=10]++ (-0.5,-0.15) ;
+}
+
+\newcommand\inttkzshapebrickfigeyeE[5][1]{%
+  \begin{scope}[xscale=#1]
+    \filldraw[] ([shift={(-0.21,-0.2)}]#3) to[bend left=10]++ ({0.37},0) to[bend right=12.5]++ (0,0.4) to[bend right=10]++ (-0.37,0) to[bend right=12.5] cycle ;
+    \filldraw[] ([shift={(0.24,0.2)}]#3) to[bend right=10]++ (-0.56,0) -- cycle ;
+    \begin{scope}
+      \draw[,line width=\fpeval{\tkzbrickfigscale*0.9}mm] ([shift={(-0.30,-0.05)}]#2) to[out=35,in=155,looseness=1.5]++ (0.3,0) to[out=-25,in=-155,looseness=1]++ (0.3,0) ;
+    \end{scope}
+    \fill[white] (#5) circle[x radius=0.1,y radius=0.125] ;
+  \end{scope}
+}
+
+%----int eyebrow
+\newcommand\inttkzshapebrickfigeyebrow[1]{%gen eyebrow macro 1/2/3/4/5/6/7/8
+  \ifcase#1\relax%
+  \or%=1
+    \inttkzshapebrickfigeyebrowB{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowB[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=2
+    \inttkzshapebrickfigeyebrowA{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowA[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=3
+    \inttkzshapebrickfigeyebrowC{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowC[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=4
+    \inttkzshapebrickfigeyebrowD{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowD[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=5
+    \inttkzshapebrickfigeyebrowE{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowE[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=6
+    \inttkzshapebrickfigeyebrowF{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowF[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=7
+    \inttkzshapebrickfigeyebrowG{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowG[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=8
+    \inttkzshapebrickfigeyebrowH{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowH[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=9
+    \inttkzshapebrickfigeyebrowI{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowI[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \or%=10
+    \inttkzshapebrickfigeyebrowJ{\tkzshapebrickfigname-EYEBROWRIGHT}{\tkzshapebrickfigname-EYERIGHT}%
+    \inttkzshapebrickfigeyebrowJ[-1]{\tkzshapebrickfigname-EYEBROWLEFT}{\tkzshapebrickfigname-EYELEFT}%
+  \fi%
+}
+
+\newcommand\inttkzshapebrickfigeyebrowA[3][1]{%woman eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[,line width=\fpeval{\tkzbrickfigscale*0.3}mm] (-0.3,-0.2) to[bend left=45] (0.6,-0.05) to[bend right=25] cycle ;
+  \end{scope}
+  \begin{scope}[shift={(#3)},xscale=#1]
+    \draw[line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(-0.3,0.25) (0,0.35) (0.25,0.35) (0.6,0.45)} ;
+    \foreach \i in {0,2,4}{%
+      \draw[line width=\fpeval{\tkzbrickfigscale*0.6}mm] ({0.25+\i*(0.35)/4},{0.35+\i*(0.1)/4}) --++ (70:0.15) ;
+    }%
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowB[2][1]{%man normal eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[] (-0.3,-0.15) to[bend left=50] (0.5,-0.15) to[bend right=10] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowC[2][1]{%man angry eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates {(-0.3,-0.3) (0.3,0.15) (0.3,0.05)} -- cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowD[2][1]{%man scary eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[] (-0.3,-0.05) to[bend left=50] (0.5,-0.3) to[bend right=10] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowE[3][1]{%woman angry eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates {(-0.3,-0.3) (0.4,0.1) (0.4,0.025)} -- cycle ;
+  \end{scope}
+  \begin{scope}[shift={(#3)},xscale=#1]%girly
+    \draw[line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(-0.3,0.25) (0,0.35) (0.25,0.35) (0.6,0.17)} ;
+    \foreach \i in {0,2,4}{%
+      \draw[line width=\fpeval{\tkzbrickfigscale*0.6}mm] ({0.25+\i*(0.35)/4},{0.35+\i*(0.17-0.35)/4}) --++ (70:0.15) ;
+    }%
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowF[3][1]{%woman scary eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates {(-0.3,-0.025) (0.5,-0.2) (0.4,-0.1)} -- cycle ;
+  \end{scope}
+  \begin{scope}[shift={(#3)},xscale=#1]%girly
+    \draw[,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(-0.3,0.25) (0,0.35) (0.25,0.35) (0.6,0.17)} ;
+    \foreach \i in {0,2,4}{%
+      \draw[,line width=\fpeval{\tkzbrickfigscale*0.6}mm] ({0.25+\i*(0.35)/4},{0.35+\i*(0.17-0.35)/4}) --++ (70:0.15) ;
+    }%
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowG[2][1]{%man surprised eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[] (-0.3,-0.25) to[bend left=80,looseness=1.25] (0.5,-0.355) to[bend right=35,looseness=1.15] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowH[3][1]{%woman surprised eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[] (-0.3,-0.15) to[bend left=60,looseness=1.25] (0.6,-0.175) to[bend right=40,looseness=1.15] cycle ;
+  \end{scope}
+  \begin{scope}[shift={(#3)},xscale=#1]%girly
+    \draw[line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(-0.3,0.25) (0,0.35) (0.25,0.35) (0.6,0.325)} ;
+    \foreach \i in {0,2,4}{%
+      \draw[line width=\fpeval{\tkzbrickfigscale*0.6}mm] ({0.25+\i*(0.35)/4},{0.35+\i*(0.325-0.35)/4}) --++ (70:0.15) ;
+    }%
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowI[2][1]{%man surprised eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \draw[line width=\fpeval{\tkzbrickfigscale*1.1}mm,] (-0.3,0) to[out=-45,in=180] (0.35,-0.25) to[out=0,in=100] (0.55,-0.4) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigeyebrowJ[2][1]{%man surprised eyebrow
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[line width=\fpeval{\tkzbrickfigscale*1.1}mm,] (-0.3,-0.2) to[out=10,in=180]++ (0.65,0.2) to[out=0,in=100]++ (0.2,-0.175) to[out=100,in=0]++ (-0.2,0.15) to[out=180,in=5] cycle;
+  \end{scope}
+}
+
+%----int hair
+\newcommand\inttikzshapehair[1]{%gen hair macro 1/2/3/4/5/6/7
+  \ifcase#1\relax{\draw[brickfig shape head] (-1,{5.45+3.385}) {[rounded corners=\fpeval{\tkzbrickfigscale*2}mm] --++ (0,0.7) --++ (2,0)} --++ (0,-0.7) -- cycle ;}%=0
+  \or{\draw[brickfig shape hair] (-1,{5.45+3.385}) {[rounded corners=\fpeval{\tkzbrickfigscale*2}mm] --++ (0,0.7) --++ (2,0)} --++ (0,-0.7) -- cycle ;}%=1
+  \or\inttkzshapebrickfighairstyleA{\tkzshapebrickfigname-HAIRCENTER}%=2
+  \or\inttkzshapebrickfighairstyleB{\tkzshapebrickfigname-HAIRCENTER}%=3
+  \or\inttkzshapebrickfighairstyleC{\tkzshapebrickfigname-HAIRCENTER}%=4
+  \or\inttkzshapebrickfighairstyleD{\tkzshapebrickfigname-HAIRCENTER}%=5
+  \or\inttkzshapebrickfighairstyleE{\tkzshapebrickfigname-HAIRCENTER}%=6
+  \or\inttkzshapebrickfighairstyleF{\tkzshapebrickfigname-HAIRCENTER}%=7
+  \or\inttkzshapebrickfighairstyleG{\tkzshapebrickfigname-HAIRCENTER}%=8
+  \or\inttkzshapebrickfighairstyleH{\tkzshapebrickfigname-HAIRCENTER}%=9
+  \or\inttkzshapebrickfighairstyleI{\tkzshapebrickfigname-HAIRCENTER}%=10
+  \fi%
+}
+
+\newcommand\inttkzshapebrickfighairstyleA[1]{%woman normal hair
+  \begin{scope}[shift={(#1)}]
+    \pgfmathsetseed{\useKV[tkzshapebrickfig]{seed}}%
+    \draw[brickfig shape hair,decoration={random steps,segment length=\fpeval{\tkzbrickfigscale*6}mm,amplitude=\fpeval{\tkzbrickfigscale*1.5}mm}] (-2.15,-1) to[out=-90,in=10,looseness=0.5] (-2.5,-2.75) to[out=0,in=-95] (-1.7,-1) decorate { -- (1.7,-1)} to[out=-85,in=180] (2.5,-2.75) to[out=170,in=-90,looseness=0.5] (2.15,-1.075) to[bend right=85,looseness=1.3] cycle ;
+    \draw[brickfig shape hair] (-0.2,0.2) to[bend right=5] (-0.4,-0.6) (0.2,0.2) to[bend left=5] (0.4,-0.6) ;
+    \draw[brickfig shape hair] (-0.6,0.15) to[bend right=5] (-1,-0.6) (0.6,0.15) to[bend left=5] (1,-0.6) ;
+    \draw[brickfig shape hair] (-1.2,0.05) to[bend right=5] (-1.7,-0.6) (1.2,0.05) to[bend left=5] (1.7,-0.6) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleB[1]{%man normal hair
+  \begin{scope}[shift={(#1)}]
+    \pgfmathsetseed{\useKV[tkzshapebrickfig]{seed}}%
+    \draw[brickfig shape hair,decoration={random steps,segment length=\fpeval{\tkzbrickfigscale*6}mm,amplitude=\fpeval{\tkzbrickfigscale*1.5}mm}] (-2.15,-1) -- (-2.15,-2) -- (-1.8,-1) decorate {-- (1.8,-1)} -- (2.15,-2) -- (2.15,-1.125) to[bend right=85,looseness=1.3] cycle ;
+    \draw[brickfig shape hair] (-0.2,0.2) to[bend right=5] (-0.4,-0.6) (0.2,0.2) to[bend left=5] (0.4,-0.6) ;
+    \draw[brickfig shape hair] (-0.6,0.15) to[bend right=5] (-1,-0.6) (0.6,0.15) to[bend left=5] (1,-0.6) ;
+    \draw[brickfig shape hair] (-1.2,0.05) to[bend right=5] (-1.7,-0.6) (1.2,0.05) to[bend left=5] (1.7,-0.6) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleC[1]{%man 'brosse' hair
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair] (-2.025,-1.65) {[rounded corners=\fpeval{\tkzbrickfigscale*0.5}mm] -- (-1.7,-0.8) to[out=-15,in=165,looseness=0.5] (1.7,-0.8) -- (2.025,-1.685) to[bend right=10] (2.025,0.5) -- (1.75,0.05) -- (1.4,0.55) -- (1.05,0) -- (0.7,0.45) -- (0.35,-0.025) -- (0,0.475) -- (-0.35,0.1) -- (-0.7,0.525) -- (-1.05,-0.1) -- (-1.4,0.475) -- (-1.75,0) -- (-2.025,0.515)} to[bend right=10] cycle ;
+    \draw[brickfig shape hair] (0,-0.5) -- (0,-0.1)
+                               (0.5,-0.5) -- (0.51,-0.1)
+                               (1,-0.5) -- (1.1,-0.1)
+                               (1.5,-0.5) -- (1.6,-0.1)
+                               (1.9,-0.5) -- (2,-0.1)
+                               (-0.5,-0.5) -- (-0.51,-0.1)
+                               (-1,-0.5) -- (-1.1,-0.15)
+                               (-1.5,-0.5) -- (-1.6,-0.1)
+                               (-1.9,-0.5) -- (-2,-0.1) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleD[1]{%woman alt hair
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair] (-0.25,0) to[bend left=75,looseness=1.5] (2.15,0) to[bend right=15,looseness=1.5] (2.6,-0.25) to[bend left=20,looseness=1.2] ++(-0.45,0) to[bend right=10] ++(0.5,-0.85) to[bend left=5] ++(-0.35,0.15) to[bend right=30] ++(0.55,-1.25) to[bend left=15] (2,-1.5) to[bend right=70,looseness=1.25] (0,0.15) -- cycle ;
+    \draw[brickfig shape hair] (0,-0.5) to[bend left=70,looseness=0.75] (2,-1.5) to[bend right=70,looseness=1.25] (0,0.15) to[bend right=70,looseness=1.25] (-2,-1.5) to[bend left=70,looseness=0.75] cycle ;
+    \draw[brickfig shape hair] (0,-0.315) -- (0,0)
+                               (0.85,-0.3) -- (1,-0.05)
+                               (1.65,-0.7) -- (1.8,-0.3)
+                               (-0.85,-0.3) -- (-1,-0.05)
+                               (-1.65,-0.7) -- (-1.8,-0.3) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleE[1]{%man brushing hair
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair,smooth] (0.66,0.44) to[out=30,in=120] (2.2,-0.3) to[bend left] (2,-2) -- (2,-1.35) to[bend left=5] (0.66,-0.4) to[bend left=7.5] (-2,-1.4) -- (-2,-2.15) to[bend left=70,looseness=1.4] (0.66,0.44) -- (0.66,-0.4);
+    \draw[brickfig shape hair] (1.1,0) to[bend right=5] (1.87,-0.9)
+                               (0,0) to[bend left=10] (-1.8,-0.85)
+                               (-0.5,0.4) to[bend right=7.5] (-1.56,-0.3) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleF[1]{%woman 'natte' brushing hair
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair,smooth] (0.66,0.44) to[out=30,in=120] (2.2,-0.3) to[bend left] (2,-2) -- (2,-1.35) to[bend left=5] (0.66,-0.4) to[bend left=7.5] (-2,-1.4) -- (-2,-2.15) to[bend left=70,looseness=1.4] (0.66,0.44) -- (0.66,-0.4);
+    \draw[brickfig shape hair] (1.1,0) to[bend right=5] (1.87,-0.9)
+    (0,0) to[bend left=10] (-1.8,-0.85)
+    (-0.5,0.4) to[bend right=7.5] (-1.56,-0.3) ;
+    \draw[brickfig shape hair] (-2,-2.15) to[bend right=30] (-2.44,-2.65) to[bend right=30] (-2.88,-3.2) to[bend right=40] (-3.12,-3.6) -- (-2.85,-3.8) to[bend right=40] (-2.58,-3.4) to[bend right=30] (-2.14,-2.85) to[bend right=30] (-2,-2.5) -- cycle  ;
+    \draw[brickfig shape hair] (-2.88,-3.2) -- (-2.58,-3.4) (-2.44,-2.65) to[out=-75,in=92.5] (-2.58,-3.4) (-2.14,-2.85) to[out=-170,in=62.5] (-2.88,-3.2) (-2.44,-2.65) -- (-2.14,-2.85) (-2,-2.15) to[out=-140,in=92.5] (-2.14,-2.85) (-2.44,-2.65) to[out=30,in=-160] (-2,-2.35) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleG[1]{%woman long hair
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair] (1.35,-3.96) -- (2.3,-3.96) -- (2.3,-1) to[out=100,in=25] (0,0.3) to [out=155,in=80] (-2.3,-1) -- (-2.3,-3.96) -- (-1.35,-3.96) -- (-1.35,-3.735) {[rounded corners=\fpeval{\tkzbrickfigscale*8}mm] -- (-2,-3.735)} -- (-2,-1) to[out=5,in=-175] (2,-1) {[rounded corners=\fpeval{\tkzbrickfigscale*8}mm] -- (2,-3.735)} -- (1.35,-3.735) -- (1.35,-3.96);
+    %franges
+    \draw[brickfig shape hair] (-2,-1) to[bend left=10] ++ (60:1) (2,-1) to[bend right=10] ++ (120:1)
+                               (-1.4,-0.9) to[bend left=10] ++ (70:0.9) (1.4,-0.9) to[bend right=10] ++ (110:0.9)
+                               (-0.7,-0.9) to[bend left=10] ++ (80:0.9) (0.7,-0.9) to[bend right=10] ++ (100:0.9)
+                               (0,-0.9) --++ (0,0.8) ;
+    \draw[brickfig shape hair] (-1.9,-3.96) --++ (0,0.3) (1.9,-3.96) --++ (0,0.3)
+                               (-2.1,-3.96) --++ (0,0.5) (2.1,-3.96) --++ (0,0.5)
+                               (-2.3,-3.96) --++ (0,0.7) (2.3,-3.96) --++ (0,0.7) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleH[1]{%neutral hair %%[out=15,in=80] (2.1,-1) to[bend left=5] 
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair] (0,0.3) to[bend left=60,looseness=1.25] (2.05,-1.85) to[bend left=5] (1.05,-0.65) -- (1.05,-1.1) to[bend left=5] (0.1,-0.68) -- (0.3,-1.175) to[bend left=25] (-0.75,-0.6) to[bend left=5] (-2.05,-1.85) to[bend left=60,looseness=1.25] cycle ;
+    \draw[brickfig shape hair] (1.05,-0.65) to[bend left=5]++ (-0.35,0.6) 
+                               (0.1,-0.68) to[bend left=5] (-0.1,0.1) 
+                               (-0.75,-0.6) to[bend left=10] (-0.5,0.125) 
+                               (-1.75,-0.75) to[bend left=15]++ (0.75,0.675) ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfighairstyleI[1]{%neutral hair %%[out=15,in=80] (2.1,-1) to[bend left=5] 
+  \begin{scope}[shift={(#1)}]
+    \draw[brickfig shape hair] (0,0.3) to[bend left=40,looseness=1.5] (0.45,0.3) to[bend left=50,looseness=1.35]  (2.05,-1.85) to[bend left=10] (0.85,-0.6) to[bend right=10]++ (0.05,-0.5) to[bend left=10]++ (-0.75,0.5) to[bend right=10]++ (-0.35,-0.5) to[bend left=10]++ (-0.875,0.5) to[bend left=10] (-2.05,-1.85) to[bend left=50,looseness=1.35] (-0.45,0.3) to[bend left=40,looseness=1.5] cycle;%
+    \draw[brickfig shape hair] (1.2,0) to[bend left=10]++ (0.45,-0.5) 
+                               (0.1,0.05) to[bend right=7.5] (0.3,-0.4) 
+                               (-0.52,0.04) to[bend right=10]++ (0.4,-0.425) 
+                               (-1.75,-0.75) to[bend left=15]++ (0.75,0.675) ;
+  \end{scope}
+}
+
+%----int mouth
+\newcommand\inttkzshapebrickfigmouth[1]{%gen mouth macro 1/2/3/4
+  \ifcase#1\relax%
+  \or\inttkzshapebrickfigmouthA{\tkzshapebrickfigname-MOUTH}%=1
+  \or\inttkzshapebrickfigmouthB{\tkzshapebrickfigname-MOUTH}%=2
+  \or\inttkzshapebrickfigmouthC{\tkzshapebrickfigname-MOUTH}%=3
+  \or\inttkzshapebrickfigmouthD{\tkzshapebrickfigname-MOUTH}%=4
+  \or\inttkzshapebrickfigmouthE{\tkzshapebrickfigname-MOUTH}%=5
+  \or\inttkzshapebrickfigmouthF{\tkzshapebrickfigname-MOUTH}%=6
+  \or\inttkzshapebrickfigmouthG{\tkzshapebrickfigname-MOUTH}%=7
+  \or\inttkzshapebrickfigmouthH{\tkzshapebrickfigname-MOUTH}%=8
+  \or\inttkzshapebrickfigmouthE[-1]{\tkzshapebrickfigname-MOUTH}%=9
+  \or\inttkzshapebrickfigmouthG[-1]{\tkzshapebrickfigname-MOUTH}%=10
+  \fi%
+}
+
+\newcommand\inttkzshapebrickfigmouthA[1]{%happy mouth
+  \begin{scope}[shift={(#1)}]
+    \filldraw[] (-0.625,0.15) to[bend right=70] (0.625,0.15) to[bend left=20] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthB[1]{%angry mouth
+  \begin{scope}[shift={(#1)}]
+    \draw[fill=white,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(-0.625,-0.1) (0.625,-0.1) (0.625,0.25) (-0.625,0.05)} {[rounded corners=\fpeval{\tkzbrickfigscale*0.2}mm]-- cycle} ;
+    \clip plot[smooth] coordinates{(-0.625,-0.1) (0.625,-0.1) (0.625,0.25) (-0.625,0.05)} {[rounded corners=\fpeval{\tkzbrickfigscale*0.2}mm]-- cycle} ;
+    \filldraw[line width=\fpeval{\tkzbrickfigscale*0.5}mm] (0.45,0.045) -- (0.75,0.1) -- (0.75,0.075) --cycle;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthC[1]{%scary mouth
+  \begin{scope}[shift={(#1)}]
+    \draw[fill=white,line width=\fpeval{\tkzbrickfigscale*0.8}mm] plot[smooth] coordinates{(0,0.15) (0.625,0.225) (0.625,-0.275) (0,-0.15) (-0.6,-0.275) (-0.6,0.225) (0,0.15)} ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthD[1]{%surprised mouth
+  \begin{scope}[shift={(#1)}]
+    \draw[fill=white,line width=\fpeval{\tkzbrickfigscale*1.2}mm] circle[x radius=0.325,y radius=0.375] ; ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthE[2][1]{%enjoyed mouth
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \filldraw[] (-0.8,0.45) to[bend right=20] (0.8,0.075) to[bend left=80,looseness=1.375] cycle ;
+    \begin{scope}[rotate=-20]
+      \filldraw[red!75!black,rounded corners=\fpeval{\tkzbrickfigscale*0.2}mm] (-0.15,-0.2) circle[x radius=0.375,y radius=0.115] ;
+    \end{scope}
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthF[1]{%girly mouth
+  \begin{scope}[shift={(#1)}]
+    \fill[red!75!black,opacity=0.66] (-0.5,0.175) to[bend left=30] (0,0.075) to[bend left=30] (0.5,0.175) to[bend left=40] cycle ;
+    \fill[red!75!black,opacity=0.66] (-0.5,0) to[bend right=50] (0.5,0.0) -- cycle ;
+    \filldraw[] (-0.65,0.25) to[bend right=70] (0.65,0.25) to[bend left=45] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthG[2][1]{%angry mouth
+  \begin{scope}[shift={(#2)},xscale=#1]
+    \draw[fill=white,line width=\fpeval{\tkzbrickfigscale*0.8}mm] (-0.66,0.2) to[out=-45,in=-170] (0.66,0) to[bend left=80,looseness=1.5] cycle ;
+    \draw[line width=\fpeval{\tkzbrickfigscale*0.8}mm] (-0.66,0.2) to[bend left=5] ++ (0.1,0.15)  ;
+    \draw[line width=\fpeval{\tkzbrickfigscale*0.8}mm] (-0.66,0.2) to[bend right=5] ++ (-0.1,-0.2)  ;
+    \clip (-0.66,0.2) to[out=-45,in=-170] (0.66,0) to[bend left=80,looseness=1.5] cycle ;
+    \draw[line join=rect] (-0.66,-0.1) -- (-0.325,-0.2) to[bend left=15] cycle ;
+  \end{scope}
+}
+
+\newcommand\inttkzshapebrickfigmouthH[1]{%happy mouth
+  \begin{scope}[shift={(#1)}]
+    \filldraw[] (-0.625,-0.15) to[bend left=70] (0.625,-0.15) to[bend right=20] cycle ;
+  \end{scope}
+}
+
+%----individual part
+\newcommand\inttkzshapebrickfigbody{%
+  \draw[brickfig shape body] (-3,0) -- (3,0) -- (3,0.6) {[rounded corners=\fpeval{\tkzbrickfigscale*4}mm] -- (2.25,5) -- (-2.25,5)} -- (-3,0.6) -- (-3,0) -- cycle ;
+}
+\newcommand\inttkzshapebrickfigneck{%
+  \draw[brickfig shape neck] (-1.35,5) rectangle (1.35,5.45) ;
+}
+\newcommand\inttkzshapebrickfighead{%
+  \draw[brickfig shape head,rounded corners=\fpeval{\tkzbrickfigscale*8}mm] (-2,5.45) rectangle (2,{5.45+3.385}) ;
+}
+\newcommand\inttkzshapebrickfigleftarmscratch{%
+  \draw[brickfig shape arm] (2.35,4.4) --++ (-170:0.3) --++ (100:0.075) to[bend right=95,looseness=1.5] ++ (-80:1.1) --++ (100:0.075) --++ (10:0.3) -- cycle ;
+}
+\newcommand\inttkzshapebrickfigleftarm{%
+  \draw[brickfig shape arm] (2.3175,4.6) {[rounded corners=\fpeval{\tkzbrickfigscale*6}mm] -- (3,4.6) -- (4.2,2.6)} -- (4.6,0.75) to[bend right=30] (3,0.5) -- cycle ;
+    \begin{scope}
+      \path[save path=\pathbrickfigtikzarm] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+      \clip[use path now=\pathbrickfigtikzarm,invclip];
+      \draw[brickfig shape arm,brickfig shape arm shadow] (4.6,0.75) to[bend right=30] (3,0.5) to[bend right=30] (4.6,0.75) ;
+    \end{scope}
+    \draw[brickfig shape hand shadow] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375)  ;
+    \draw[brickfig shape hand] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+}
+\newcommand\inttkzshapebrickfigleftarmwohand{%
+  \draw[brickfig shape arm] (2.35,4.4) --++ (-170:0.3) --++ (100:0.075) to[bend right=95,looseness=1.5] ++ (-80:1.1) --++ (100:0.075) --++ (10:0.3) -- cycle ;
+  \draw[brickfig shape arm] (2.3175,4.6) {[rounded corners=\fpeval{\tkzbrickfigscale*6}mm] -- (3,4.6) -- (4.2,2.6)} -- (4.6,0.75) to[bend right=30] (3,0.5) -- cycle ;
+  \draw[brickfig shape arm,brickfig shape arm shadow] (4.6,0.75) to[bend right=30] (3,0.5) to[bend right=30] (4.6,0.75) ;
+}
+\newcommand\inttkzshapebrickfiglefthand{%
+  \begin{scope}
+    \path (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) coordinate[at end] (tmpzzzzzzzz);
+    \draw[brickfig shape hand] ($(3.34,0.5375)!0.2!(tmpzzzzzzzz)$) --++ (100:1.65) to[bend left=20]++ (8:0.6) --++ (-81:1.65) -- cycle ;
+    \draw[brickfig shape hand shadow] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+    \draw[brickfig shape hand] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfigrighthand{%
+  \begin{scope}[xscale=-1]
+    \path (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) coordinate[at end] (tmpzzzzzzzz);
+    \draw[brickfig shape hand] ($(3.34,0.5375)!0.2!(tmpzzzzzzzz)$) --++ (100:1.65) to[bend left=20]++ (8:0.6) --++ (-81:1.65) -- cycle ;
+    \draw[brickfig shape hand shadow] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375)  ;
+    \draw[brickfig shape hand] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfigrightarmwohand{%
+  \begin{scope}[xscale=-1]
+    \draw[brickfig shape arm] (2.35,4.4) --++ (-170:0.3) --++ (100:0.075) to[bend right=95,looseness=1.5] ++ (-80:1.1) --++ (100:0.075) --++ (10:0.3) -- cycle ;
+    \draw[brickfig shape arm] (2.3175,4.6) {[rounded corners=\fpeval{\tkzbrickfigscale*6}mm] -- (3,4.6) -- (4.2,2.6)} -- (4.6,0.75) to[bend right=30] (3,0.5) -- cycle ;
+    \draw[brickfig shape arm,brickfig shape arm shadow] (4.6,0.75) to[bend right=30] (3,0.5) to[bend right=30] (4.6,0.75) ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfigrightarmscratch{%
+  \begin{scope}[xscale=-1]
+    \draw[brickfig shape arm] (2.35,4.4) --++ (-170:0.3) --++ (100:0.075) to[bend right=95,looseness=1.5] ++ (-80:1.1) --++ (100:0.075) --++ (10:0.3) -- cycle ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfigrightarm{%
+  \begin{scope}[xscale=-1]
+    \draw[brickfig shape arm] (2.3175,4.6) {[rounded corners=\fpeval{\tkzbrickfigscale*6}mm] -- (3,4.6) -- (4.2,2.6)} -- (4.6,0.75) to[bend right=30] (3,0.5) -- cycle ;
+      \begin{scope}
+        \path[save path=\pathbrickfigtikzarm] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+        \clip[use path now=\pathbrickfigtikzarm,invclip];
+        \draw[brickfig shape arm,brickfig shape arm shadow] (4.6,0.75) to[bend right=30] (3,0.5) to[bend right=30] (4.6,0.75) ;
+      \end{scope}
+    \draw[brickfig shape hand shadow] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=90,looseness=2] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375)  ;
+    \draw[brickfig shape hand] (3.34,0.5375) --++(-80:0.5) to[bend right=60] ++ (-80:1.8) --++ (100:0.5) to[bend left=110,looseness=3] ++ (10:1) --++ (-80:0.5) to[bend right=60] ++ (100:1.8) --++ (100:0.45) to[bend right=20] (3.34,0.5375) ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfigarms{%
+  \inttkzshapebrickfigleftarm
+  \inttkzshapebrickfigrightarm
+}
+\newcommand\inttkzshapebrickfigpant{%
+  %belt
+  \draw[brickfig shape belt] (-2.75,0) rectangle (2.75,-0.8) ;
+  \draw[brickfig shape bottom belt] (-0.25,-0.8) -- (-0.25,-3.1) -- (-0.1,-3.3) -- (0.1,-3.3) -- (0.25,-3.1) -- (0.25,-0.8) -- cycle ;
+  %leg 1
+  \draw[brickfig shape middle pant] (-2.75,-3) --++ (0,-3.3) --++ (2.65,0) --++ (0,3) -- (-0.25,-3.1) --++ (0,0.15) |- (-2.75,-0.8) -- cycle ;
+  \draw[brickfig shape top pant] (-2.75,-0.8) rectangle (-0.25,-3) ;
+  \draw[brickfig shape foot] (-2.75,-5.1) rectangle (-0.1,-6.3) ;
+  %leg 2
+  \begin{scope}[xscale=-1]
+    \draw[brickfig shape middle pant] (-2.75,-3) --++ (0,-3.3) --++ (2.65,0) --++ (0,3) -- (-0.25,-3.1) --++ (0,0.15) |- (-2.75,-0.8) -- cycle ;
+    \draw[brickfig shape top pant] (-2.75,-0.8) rectangle (-0.25,-3) ;
+    \draw[brickfig shape foot] (-2.75,-5.1) rectangle (-0.1,-6.3) ;
+  \end{scope}
+}
+\newcommand\inttkzshapebrickfignodes{%
+  \coordinate (\tkzshapebrickfigname-EYERIGHT) at (0.6,7.38) ;
+  \coordinate (\tkzshapebrickfigname-EYERIGHTSHADOW) at (0.6,7.5) ;
+  \coordinate (\tkzshapebrickfigname-EYERIGHTSHADOWBOTTOM) at (0.6,7.26) ;
+  \coordinate (\tkzshapebrickfigname-EYELEFT) at (-0.6,7.38) ;
+  \coordinate (\tkzshapebrickfigname-EYES) at (0,7.38) ;
+  \coordinate (\tkzshapebrickfigname-EYELEFTSHADOW) at (-0.6,7.5) ;
+  \coordinate (\tkzshapebrickfigname-EYELEFTSHADOWBOTTOM) at (-0.6,7.26) ;
+  \coordinate (\tkzshapebrickfigname-MOUTH) at (0,6.4) ;
+  \coordinate (\tkzshapebrickfigname-EYEBROWRIGHT) at (0.6,8.1) ;
+  \coordinate (\tkzshapebrickfigname-EYEBROWS) at (0,8.1) ;
+  \coordinate (\tkzshapebrickfigname-EYEBROWLEFT) at (-0.6,8.1) ;
+  \coordinate (\tkzshapebrickfigname-LOGO) at (0,2.5) ;
+  \coordinate (\tkzshapebrickfigname-HAIRCENTER) at (0,{5.45+3.385+0.5*0.7}) ;
+  \coordinate (\tkzshapebrickfigname-HAIR) at (0,{5.45+3.385+0.5*0.7}) ;
+  \coordinate (\tkzshapebrickfigname-LEFTHAND) at (4.15,-1.25) ;
+  \coordinate (\tkzshapebrickfigname-RIGHTHAND) at (-4.15,-1.25) ;
+  \coordinate (\tkzshapebrickfigname-RIGHTFOOT) at (-1.425,-5.7) ;
+  \coordinate (\tkzshapebrickfigname-LEFTFOOT) at (1.425,-5.7) ;
+  \coordinate (\tkzshapebrickfigname-BELT) at (0,-0.4) ;
+  \coordinate (\tkzshapebrickfigname-RIGHTSHOULDER) at (-2.75,4.5) ;
+  \coordinate (\tkzshapebrickfigname-LEFTSHOULDER) at (2.75,4.5) ;
+	\coordinate (\tkzshapebrickfigname-NECK) at (0,5.225) ;
+}
+
+%----main macro
+\NewDocumentCommand\tikzbrickfigurine{O{}D<>{}m}{%
+  \restoreKV[tkzshapebrickfig]%
+  \setKV[tkzshapebrickfig]{#1}%
+  %----bbox if needed (compil increase time...)
+  \ifboolKV[tkzshapebrickfig]{bbox}%
+    {\tikzset{brickfig shape bbox/.style={bezier bounding box=true}}}%
+    {\tikzset{brickfig shape bbox/.style={bezier bounding box=false}}}%
+  \ifboolKV[tkzshapebrickfig]{vcenter}%
+    {\tikzset{brickfig shape vcenter/.style={baseline=(current bounding box.center)}}}%
+    {\tikzset{brickfig shape vcenter/.style={}}}%
+  %----colors shortcuts if necessary
+  \IfStrEq{\tkzshapebrickfigskincolor}{}{}%
+    {%
+      \tikzset{brickfig shape hand/.style={fill=\tkzshapebrickfigskincolor}}%
+      \tikzset{brickfig shape hand shadow/.style={fill=\tkzshapebrickfigskincolor!85!black}}%
+      \tikzset{brickfig shape neck/.style={fill=\tkzshapebrickfigskincolor}}%
+      \tikzset{brickfig shape head/.style={fill=\tkzshapebrickfigskincolor}}%
+    }%
+  \IfStrEq{\tkzshapebrickfigsweatcolor}{}{}%
+    {%
+      \tikzset{brickfig shape body/.style={fill=\tkzshapebrickfigsweatcolor}}%
+      \tikzset{brickfig shape arm/.style={fill=\tkzshapebrickfigsweatcolor}}%
+      \tikzset{brickfig shape arm shadow/.style={fill=\tkzshapebrickfigsweatcolor!85!black}}%
+    }%
+  \IfStrEq{\tkzshapebrickfigpantcolor}{}{}%
+    {%
+      \tikzset{brickfig shape belt/.style={fill=\tkzshapebrickfigpantcolor}}%
+      \tikzset{brickfig shape bottom belt/.style={fill=\tkzshapebrickfigpantcolor}}%
+      \tikzset{brickfig shape top pant/.style={fill=\tkzshapebrickfigpantcolor}}%
+      \tikzset{brickfig shape middle pant/.style={fill=\tkzshapebrickfigpantcolor}}%
+    }%
+  \ifboolKV[tkzshapebrickfig]{empty}%
+    {%
+      \tikzset{brickfig shape belt/.style={}}%
+      \tikzset{brickfig shape bottom belt/.style={}}%
+      \tikzset{brickfig shape body/.style={}}%
+      \tikzset{brickfig shape arm/.style={}}%
+      \tikzset{brickfig shape arm shadow/.style={}}%
+      \tikzset{brickfig shape hand/.style={}}%
+      \tikzset{brickfig shape hand shadow/.style={}}%
+      \tikzset{brickfig shape neck/.style={}}%
+      \tikzset{brickfig shape head/.style={}}%
+      \tikzset{brickfig shape hair/.style={}}%
+      \tikzset{brickfig shape top pant/.style={}}%
+      \tikzset{brickfig shape middle pant/.style={}}%
+      \tikzset{brickfig shape foot/.style={}}%
+    }%
+    {}%
+  %----prefefined styles (??)
+  \ifboolKV[tkzshapebrickfig]{man}%
+    {%
+      \setKV[tkzshapebrickfig]{eyebrowstyle=1}%default man
+      \ifboolKV[tkzshapebrickfig]{angry}{\setKV[tkzshapebrickfig]{mouthstyle=2,eyebrowstyle=3}}{}%
+      \ifboolKV[tkzshapebrickfig]{scary}{\setKV[tkzshapebrickfig]{mouthstyle=3,eyestyle=2,eyebrowstyle=4}}{}%
+      \ifboolKV[tkzshapebrickfig]{surprised}{\setKV[tkzshapebrickfig]{mouthstyle=4,eyestyle=3,eyebrowstyle=7}}{}%
+    }%
+    {}%
+  \ifboolKV[tkzshapebrickfig]{woman}%
+    {%
+      \setKV[tkzshapebrickfig]{eyebrowstyle=2}%default woman%
+      \ifboolKV[tkzshapebrickfig]{angry}{\setKV[tkzshapebrickfig]{mouthstyle=2,eyebrowstyle=5}}{}%
+      \ifboolKV[tkzshapebrickfig]{scary}{\setKV[tkzshapebrickfig]{mouthstyle=3,eyestyle=2,eyebrowstyle=6}}{}%
+      \ifboolKV[tkzshapebrickfig]{surprised}{\setKV[tkzshapebrickfig]{mouthstyle=4,eyestyle=3,eyebrowstyle=8}}{}%
+    }%
+    {}%
+  %----lengths
+  \setlength\tkzbrickfigheight{#3}%
+  \xdef\tkzbrickfigscale{\fpeval{\tkzbrickfigheight/16cm}}%
+  \setlength\tkzbrickfigheightlogo{\fpeval{\tkzshapebrickfigscalelogo*4/16}\tkzbrickfigheight}%
+  \setlength\tkzbrickfigwidthlogo{\fpeval{\tkzshapebrickfigscalelogo*4/16}\tkzbrickfigheight}%
+  %----picture
+  \begin{tikzpicture}[\tkzshapebrickfiglinescolor,scale=\tkzbrickfigscale,line width=\fpeval{\tkzbrickfigscale*0.8}mm,line join=round,line cap=round,#2,brickfig shape bbox,brickfig shape vcenter,transform shape]
+    %----body / neck / head / legs / arms
+    \inttkzshapebrickfigbody
+    \inttkzshapebrickfigneck
+    \inttkzshapebrickfighead
+    \inttkzshapebrickfigpant
+    \inttkzshapebrickfigarms
+    %----nodes
+    \inttkzshapebrickfignodes
+    %-----decorations
+    \ifboolKV[tkzshapebrickfig]{empty}{}%
+      {%
+        %----simple eye + simple mouth + eyebrow + hairstyle
+        \inttkzshapebrickfigeye{\useKV[tkzshapebrickfig]{eyestyle}}
+        \inttkzshapebrickfigmouth{\useKV[tkzshapebrickfig]{mouthstyle}}
+        \inttkzshapebrickfigeyebrow{\useKV[tkzshapebrickfig]{eyebrowstyle}}
+        \inttikzshapehair{\useKV[tkzshapebrickfig]{hairstyle}}
+      }%
+    %logo (auto or custom)
+    \begin{scope}
+      \clip (-2.25,0) rectangle (2.25,5) ;
+      \ifboolKV[tkzshapebrickfig]{display logo}%
+        {\node[inner sep=0pt,scale=\fpeval{1/(\tkzbrickfigscale)}] at (\tkzshapebrickfigname-LOGO) {\resizebox{!}{\tkzbrickfigheightlogo}{\tkzshapebrickfiglogo}};}%
+        {}%
+      \ifboolKV[tkzshapebrickfig]{custom logo}%
+        {\node[inner sep=0pt] at (\tkzshapebrickfigname-LOGO) {\tkzshapebrickfiglogo} ;}%
+        %{\node[inner sep=0pt,scale=\fpeval{1/(\tkzbrickfigscale)}] at (\tkzshapebrickfigname-LOGO) {\tkzshapebrickfiglogo} ;}%
+        {}%
+    \end{scope}
+  \end{tikzpicture}%
+}
+
+\NewDocumentCommand\minitikzbrickfigurine{O{}D<>{}mm}{%gestion des 10...
+  \IfStrEq{#4}{*}%
+    {%full random
+      \xdef\tmpNUMmouth{\fpeval{randint(1,10)}}%
+      \xdef\tmpNUMeye{\fpeval{randint(1,10)}}%
+      \xdef\tmpNUMeyebrow{\fpeval{randint(1,10)}}%
+      \xdef\tmpNUMhair{\fpeval{randint(1,10)}}%
+    }%
+    {%partial random
+      \setsepchar[.]{/}%
+      \readlist*\tmpNUMlist{#4}%
+      \itemtomacro\tmpNUMlist[1]\tmpNUMmouth%
+      %\StrChar{#3}{1}[\tmpNUMmouth]%
+      \IfStrEq{\tmpNUMmouth}{*}{\xdef\tmpNUMmouth{\fpeval{randint(1,10)}}}{}%
+      \itemtomacro\tmpNUMlist[2]\tmpNUMeye%
+      %\StrChar{#3}{2}[\tmpNUMeye]%
+      \IfStrEq{\tmpNUMeye}{*}{\xdef\tmpNUMeye{\fpeval{randint(1,10)}}}{}%
+      \itemtomacro\tmpNUMlist[3]\tmpNUMeyebrow%
+      %\StrChar{#3}{3}[\tmpNUMeyebrow]%
+      \IfStrEq{\tmpNUMeyebrow}{*}{\xdef\tmpNUMeyebrow{\fpeval{randint(1,10)}}}{}%
+      \itemtomacro\tmpNUMlist[4]\tmpNUMhair%
+      %\StrChar{#3}{4}[\tmpNUMhair]%
+      \IfStrEq{\tmpNUMhair}{*}{\xdef\tmpNUMhair{\fpeval{randint(0,10)}}}{}%
+    }%
+  \tikzbrickfigurine[#1,mouthstyle=\tmpNUMmouth,hairstyle=\tmpNUMhair,eyestyle=\tmpNUMeye,eyebrowstyle=\tmpNUMeyebrow]<#2>{#3}%
+}
+
+\NewDocumentCommand\tikzbrickfigurinepiece{O{}D<>{}mm}{%
+  \restoreKV[tkzshapebrickfig]%
+  \setKV[tkzshapebrickfig]{#1}%
+  \ifboolKV[tkzshapebrickfig]{vcenter}%
+    {\tikzset{brickfig shape vcenter/.style={baseline=(current bounding box.center)}}}%
+    {\tikzset{brickfig shape vcenter/.style={}}}%
+  \setlength\tkzbrickfigheight{#4}%
+  \xdef\tkzbrickfigscale{\fpeval{\tkzbrickfigheight/16cm}}%
+  \begin{tikzpicture}[\tkzshapebrickfiglinescolor,scale=\tkzbrickfigscale,line width=\fpeval{\tkzbrickfigscale*0.8}mm,line join=round,line cap=round,#2,brickfig shape vcenter,transform shape]
+    \IfStrEq{#3}{head}{\setKV[tkzshapebrickfig]{head=true}}{}%
+    \IfStrEq{#3}{legs}{\setKV[tkzshapebrickfig]{head=false}}{}%
+    \IfStrEq{#3}{body}{\setKV[tkzshapebrickfig]{head=false}}{}%
+    \ifboolKV[tkzshapebrickfig]{head}%
+      {%
+        \IfSubStr{#3}{hair=}{}{\draw[brickfig shape head] (-1,{5.45+3.385}) {[rounded corners=\fpeval{\tkzbrickfigscale*2}mm] --++ (0,0.7) --++ (2,0)} --++ (0,-0.7) -- cycle ;}%
+        \inttkzshapebrickfighead
+        \inttkzshapebrickfigneck
+      }%
+      {}%
+    \inttkzshapebrickfignodes
+    %individual element ?
+    \IfSubStr{#3}{head=}%
+      {%
+        \inttkzshapebrickfighead
+        \inttkzshapebrickfigneck
+        \StrBehind{#3}{head=}[\tmpnbheadlist]%
+        \IfStrEq{\tmpnbheadlist}{*}%
+          {%
+            \xdef\tmpNUMmouth{\fpeval{randint(1,10)}}%
+            \xdef\tmpNUMeye{\fpeval{randint(1,10)}}%
+            \xdef\tmpNUMeyebrow{\fpeval{randint(1,10)}}%
+            \xdef\tmpNUMhair{\fpeval{randint(1,10)}}%
+          }%
+          {%
+            \setsepchar[.]{/}%
+            \readlist*\tmpNUMlist{\tmpnbheadlist}%
+            \itemtomacro\tmpNUMlist[1]\tmpNUMmouth%
+            \IfStrEq{\tmpNUMmouth}{*}{\xdef\tmpNUMmouth{\fpeval{randint(1,10)}}}{}%
+            \itemtomacro\tmpNUMlist[2]\tmpNUMeye%
+            \IfStrEq{\tmpNUMeye}{*}{\xdef\tmpNUMeye{\fpeval{randint(1,10)}}}{}%
+            \itemtomacro\tmpNUMlist[3]\tmpNUMeyebrow%
+            \IfStrEq{\tmpNUMeyebrow}{*}{\xdef\tmpNUMeyebrow{\fpeval{randint(1,10)}}}{}%
+            \itemtomacro\tmpNUMlist[4]\tmpNUMhair%
+            \IfStrEq{\tmpNUMhair}{*}{\xdef\tmpNUMhair{\fpeval{randint(0,10)}}}{}%
+          }%
+        %parts
+        \inttkzshapebrickfigmouth{\tmpNUMmouth}
+        \inttkzshapebrickfigeye{\tmpNUMeye}
+        \inttkzshapebrickfigeyebrow{\tmpNUMeyebrow}
+        \inttikzshapehair{\tmpNUMhair}
+      }%
+      {}%
+    \IfSubStr{#3}{mouth=}%
+      {%
+        \StrBehind{#3}{mouth=}[\tmpnbmouth]%
+        \inttkzshapebrickfigmouth{\tmpnbmouth}
+      }%
+      {}%
+    \IfSubStr{#3}{eyes=}%
+      {%
+        \StrBehind{#3}{eyes=}[\tmpnbeye]%
+        \inttkzshapebrickfigeye{\tmpnbeye}
+      }%
+      {}%
+    \IfSubStr{#3}{eyebrows=}%
+      {%
+        \StrBehind{#3}{eyebrows=}[\tmpnbeyebrow]%
+        \inttkzshapebrickfigeyebrow{\tmpnbeyebrow}
+      }%
+      {}%
+    \IfSubStr{#3}{hair=}%
+      {%
+        \StrBehind{#3}{hair=}[\tmpnbhair]%
+        \inttikzshapehair{\tmpnbhair}
+      }%
+      {}%
+    \IfStrEq{#3}{body}%
+      {%
+        \draw[brickfig shape body] (-0.85,5) rectangle++ ({2*0.85},1.95) ;%scratch
+        \inttkzshapebrickfigbody
+        \inttkzshapebrickfigarms
+      }%
+      {}%
+    \IfStrEq{#3}{legs}%
+      {%
+        \inttkzshapebrickfigpant
+        %scratchs
+        \draw[brickfig shape belt] (-2.35,0) -- (-2.35,0.65) -- (-2.2,1.75) -- (-0.675,1.75) |- cycle ;
+        \draw[brickfig shape belt] (2.35,0) -- (2.35,0.65) -- (2.2,1.75) -- (0.675,1.75) |- cycle ;
+      }%
+      {}%
+    \IfStrEq{#3}{left arm}{%
+      \inttkzshapebrickfigleftarm
+      \inttkzshapebrickfigleftarmscratch
+      }{}%
+    \IfStrEq{#3}{left arm wo hand}{\inttkzshapebrickfigleftarmwohand}{}%
+    \IfStrEq{#3}{right arm}{%
+      \inttkzshapebrickfigrightarm
+      \inttkzshapebrickfigrightarmscratch
+      }{}%
+    \IfStrEq{#3}{right arm wo hand}{\inttkzshapebrickfigrightarmwohand}{}%
+    \IfStrEq{#3}{left hand}{\inttkzshapebrickfiglefthand}{}%
+    \IfStrEq{#3}{right hand}{\inttkzshapebrickfigrighthand}{}%
+  \end{tikzpicture}%
+}
+
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzbrickfigurines/tikzbrickfigurines.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2025-08-12 20:20:19 UTC (rev 76038)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2025-08-12 20:21:16 UTC (rev 76039)
@@ -894,7 +894,8 @@
     tikz-osci tikz-page tikz-palattice tikz-planets tikz-qtree
     tikz-relay tikz-sfc tikz-shields tikz-swigs
     tikz-timing tikz-trackschematic tikz-triminos tikz-truchet
-    tikzbricks tikzcalendarnotes tikzcodeblocks tikzdotncross tikzducks
+    tikzbrickfigurines tikzbricks tikzcalendarnotes tikzcodeblocks
+    tikzdotncross tikzducks
     tikzfill tikzfxgraph tikzinclude tikzlings
     tikzmark tikzmarmots tikzorbital
     tikzpackets tikzpagenodes tikzpeople tikzpfeile tikzpingus tikzposter

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2025-08-12 20:20:19 UTC (rev 76038)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2025-08-12 20:21:16 UTC (rev 76039)
@@ -1963,6 +1963,7 @@
  'tikz-triminos'	=> '&POST_onelevel',
  'tikz2d-fr'		=> '&POST_onelevel',
  'tikz3d-fr'		=> '&POST_onelevel',
+ 'tikzbrickfigurines'	=> '&POST_onelevel',
  'tikzcalendarnotes'	=> '&POST_onelevel',
  'tikzdotncross'	=> '&POST_onelevel',
  'tikzfxgraph'		=> '&POST_onelevel',

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2025-08-12 20:20:19 UTC (rev 76038)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2025-08-12 20:21:16 UTC (rev 76039)
@@ -225,6 +225,7 @@
 depend tikz-truchet
 depend tikz2d-fr
 depend tikz3d-fr
+depend tikzbrickfigurines
 depend tikzbricks
 depend tikzcalendarnotes
 depend tikzcodeblocks

Added: trunk/Master/tlpkg/tlpsrc/tikzbrickfigurines.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.