## Solution
On peut créer un nouveau type de personnage pour chaque maillot différent.
Et même mettre des écussons à partir d'images ! (Ils ne sont pas très bien placés dans mon exemple, mais c'est possible.)
Pour les écussons il suffit de remplacer `example-image-a` et `example-image-b` par les noms des fichiers images souhaités.
\begin{filecontents*}{tikzpeople.shape.footballeurOM.sty}
\newcommand{\tikzpeople@footballeurOM@paint}{
\tikzpeople@person@paintshirt
\tikzpeople@footballeurOM@paintmaillot
\tikzpeople@person@paintrighthorn
\tikzpeople@person@painthead
\tikzpeople@bob@painthair
\tikzpeople@person@paintgoatee
\tikzpeople@person@paintlefthorn
\tikzpeople@person@painthalo
}
\newcommand{\tikzpeople@footballeurOM@paintmaillot}{
% fond du maillot
\draw[gray,fill=black!5]
(-4.0pt,-8.0pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
( 5.0pt,-7.0pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
(-4.0pt,-8.0pt) -- cycle;
% col du maillot
\begin{scope}
\clip
(-4.0pt,-8.0pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
( 5.0pt,-7.0pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
(-4.0pt,-8.0pt) -- cycle;
\fill[cyan] (0pt,-.5pt) circle (3pt);
\end{scope}
% logo du club (d'après businessman)
{
\pgftransformrotate{20}
\pgf@xa=1.2pt*\scalingfactor
\if@tikzpeople@mirrored
\pgftransformxscale{-1}
\pgftext[at=\pgfpoint{2pt}{-5pt}]{\resizebox{\pgf@xa}{!}{\includegraphics{example-image-a}}}
\else
\pgftext[at=\pgfpoint{1pt}{-5pt}]{\resizebox{\pgf@xa}{!}{\includegraphics{example-image-a}}}
\fi
}
}
\end{filecontents*}
\begin{filecontents*}{tikzpeople.shape.footballeurPSG.sty}
\newcommand{\tikzpeople@footballeurPSG@paint}{
\tikzpeople@person@paintshirt
\tikzpeople@footballeurPSG@paintmaillot
\tikzpeople@person@paintrighthorn
\tikzpeople@person@painthead
\tikzpeople@bob@painthair
\tikzpeople@person@paintgoatee
\tikzpeople@person@paintlefthorn
\tikzpeople@person@painthalo
}
\newcommand{\tikzpeople@footballeurPSG@paintmaillot}{
% fond du maillot
\draw[black,fill=blue!40!black]
(-4.0pt,-8.0pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
( 5.0pt,-7.0pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
(-4.0pt,-8.0pt) -- cycle;
% rayures (d'après pilot)
\begin{scope}
\clip
(-4.0pt,-8.0pt) .. controls (-2pt,-10pt) and (3pt,-9pt) .. (5.0pt,-7.0pt)
.. controls ( 5pt, 0pt) and (-5pt, 0pt) .. (-4.0pt,-8.0pt);
\fill[red]
([xshift=0.55pt]230:3pt) .. controls +(2pt,-3pt) and +(0,2.5pt) .. ++(2.25pt,-7pt) --
([shift={(2.7pt,-7pt)}]300:2pt) .. controls +(0,2.5pt) and +(2pt,-3pt) ..
+(-2.25pt,7pt) -- cycle;
\fill[white]
([xshift=0.5pt]230:3pt) .. controls +(2pt,-3pt) and +(0,2.5pt) .. ++(2.25pt,-7pt) --
++(0.5pt,0) .. controls +(0,2.5pt) and +(2pt,-3pt) .. +(-2.25pt,7pt) --cycle;
\fill[white]
(300:2pt) .. controls +(2pt,-3pt) and +(0,2.5pt) .. ++(2.25pt,-7pt) --
++(0.5pt,0) .. controls +(0,2.5pt) and +(2pt,-3pt) .. +(-2.25pt,7pt) --cycle;
\end{scope}
% logo du club (d'après businessman)
{
\pgftransformrotate{20}
\pgf@xa=1.2pt*\scalingfactor
\if@tikzpeople@mirrored
\pgftransformxscale{-1}
\pgftext[at=\pgfpoint{2pt}{-5pt}]{\resizebox{\pgf@xa}{!}{\includegraphics{example-image-b}}}
\else
\pgftext[at=\pgfpoint{1pt}{-5pt}]{\resizebox{\pgf@xa}{!}{\includegraphics{example-image-b}}}
\fi
}
}
\end{filecontents*}
\documentclass{article}
\usepackage{mwe}
\usepackage{tikzpeople}
\makeatletter
\tikzpeople@declareshape{footballeurOM}
\tikzpeople@declareshape{footballeurPSG}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [footballeurOM,minimum width=4cm] {};
\node [footballeurPSG,mirrored,minimum width=4cm,xshift=4.5cm] {};
\end{tikzpicture}
\begin{tikzpicture}
\node [footballeurPSG,minimum width=4cm] {};
\node [footballeurOM,mirrored,minimum width=4cm,xshift=4.5cm] {};
\end{tikzpicture}
\end{document}
## Explications
Pour créer le personnage `⟨perso⟩`, on commence par créer un fichier `tikzpeople.shape.⟨perso⟩.sty` (ici pour que l'exemple compile j'ai utilisé l'environnement `filecontents`, mais bien entendu ce n'est pas obligatoire).
Dans ce fichier, on définit la commande `\tikzpeople@⟨perso⟩@paint` qui permettra de dessiner notre personnage.
Dans cette commande on peut soit utiliser des commandes déjà définies par le *package tikzpeople*, soit utiliser des commandes que l'on définit après.
L'ordre d'appel (pas de définition) de ces commandes est important car les différentes couches de dessin vont se superposer.
Une fois le fichier `\tikzpeople@⟨perso⟩@paint` écrit, il faut ajouter dans le préambule de notre document, après avoir chargé le package *tikzpeople*, *package tikzpeople*, `\tikzpeople@declareshape{⟨perso⟩}` (comme il y a un `@` dans le nom de la commande, on doit mettre `\makeatletter` avant, et `\makeatother` après). Maintenant, on peut utiliser notre personnage `⟨perso⟩` comme les autres personnages de *tikzpeople*.
## Pour aller plus loin sur les dessins
Comme dit plus haut le *package tikzpeople* définit des commandes de dessins que l'on pourra utiliser pour notre personnage (ici la coupe de cheveux de `bob` par exemple). Pour connaître les noms de ces commandes on pourra consulter les fichiers sources du *package* [ici](https://www.ctan.org/tex-archive/graphics/pgf/contrib/tikzpeople).
Pour faire des dessins avec *tikzpeople* on utilise Ti*k*Z et PGF, on pourra se référer, entre autres, à la documentation officielle [ici](https://ctan.tetaneutral.net/graphics/pgf/base/doc/pgfmanual.pdf), en anglais, ou à *TikZ pour l'impatient* de Gérard Tisseau et Jacques Duma [ici](http://math.et.info.free.fr/TikZ/bdd/TikZ-Impatient.pdf), en français.