summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tikzpeople
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pgf/contrib/tikzpeople
Initial commit
Diffstat (limited to 'graphics/pgf/contrib/tikzpeople')
-rw-r--r--graphics/pgf/contrib/tikzpeople/README.md27
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.pdfbin0 -> 501737 bytes
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.alice.sty73
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bob.sty92
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bride.sty117
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.builder.sty80
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.businessman.sty104
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.charlie.sty125
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.chef.sty74
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.conductor.sty141
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.cowboy.sty147
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.criminal.sty97
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.dave.sty125
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.devil.sty77
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.duck.sty104
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.graduate.sty103
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.groom.sty122
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.guard.sty97
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.jester.sty107
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.judge.sty116
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.maninblack.sty119
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.mexican.sty114
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nun.sty85
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nurse.sty89
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.physician.sty104
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.pilot.sty106
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.police.sty117
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.priest.sty87
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.sailor.sty118
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.santa.sty104
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.shape.surgeon.sty76
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.sty924
-rw-r--r--graphics/pgf/contrib/tikzpeople/tikzpeople.tex429
33 files changed, 4400 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikzpeople/README.md b/graphics/pgf/contrib/tikzpeople/README.md
new file mode 100644
index 0000000000..2212bd1a8c
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/README.md
@@ -0,0 +1,27 @@
+The tikzpeople package provides people shaped nodes to be used in tikz.
+The available node shapes are:
+
+alice, bob, bride, builder, businessman, charlie, chef, conductor, cowboy,
+criminal, dave, devil, duck, graduate, groom, guard, jester, judge, maninblack,
+mexican, nun, nurse, physician, pilot, police, priest, sailor, santa, surgeon
+
+The package has four options:
+- The "draft" option causes all tikzpeople to be rendered as a basic outline
+ of a person.
+- The "demo" option adds two commands.
+ The command \alltikzpeople{<width>}{<options>} produces a series of figures
+ of all available shapes with the given width and the provided options
+ applied. The command \tikzpeoplecolors{<shapename>} produces a figure
+ showing the available color keys for the shape.
+- The "nonbeards" option removes all beards.
+- The "saturated" option causes the tikzpeople to be drawn with saturated colors.
+
+The nodes have the following hopefully self explanatory options:
+
+evil, good, female, mirrored, monitor, saturated, shield, sword
+
+All options can be combined freely.
+
+The tikzpeople package is licensed under the LaTeX Project Public License
+
+ -- Nils Fleischhacker <mail@nilsfleischhacker.de> 22 Apr 2017
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.pdf b/graphics/pgf/contrib/tikzpeople/tikzpeople.pdf
new file mode 100644
index 0000000000..f942fc5ffa
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.alice.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.alice.sty
new file mode 100644
index 0000000000..a2aff75471
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.alice.sty
@@ -0,0 +1,73 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+
+\newcommand{\tikzpeople@alice@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@alice@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@alice@painthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@alice@painthair}{
+ \draw[hair]
+ (15:3pt) arc (15:160:3pt) arc (160:190:5pt)
+ to[out=280,in=190,in looseness=.5,out looseness=.7] (230:2.9pt)
+ to[out=120,in=120,looseness=2] (-1.7pt,-1pt)
+ to[out=60,in=170,out looseness=2,in looseness=.75] (-1pt,0.3pt)
+ to [out=350,in=200,out looseness=1.5,in looseness=.75] (15:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@alice@paintshirtdetails}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[shirt,shading angle=-45]
+ (2pt,-8.7pt) -- ++(-3.8pt,3.8pt) -- ++(2.5pt,1.5pt)--cycle;
+ \draw[shirt,shading angle=-45]
+ (2pt,-8.7pt) -- ++(1.2pt,4.7pt) -- ++(-2.4pt,.3pt)--cycle;
+ \end{scope}
+ \fill[color=\tikzpeople@shirt!40!black]
+ (230:3pt) ++(0pt,-2pt)
+ to[out=359,in=101, in looseness=1.5, out looseness=1.1] ++(3.8pt,-4pt) --
+ ++(-.8pt,4pt);
+ \draw[undershirt]
+ (230:3pt) to[out=230,in=100] ++(0pt,-2pt) to[out=0,in=110] ++(3.4pt,-2pt)
+ to[out=70,in=190] ++(1.7pt,2.7pt) to[out=100,in=340] (310:3pt);
+ \draw[skin]
+ (250:3pt) to[out=330,in=110] (1.4pt,-5.7pt)
+ to[out=80,in=269, out looseness=1.5] (305:3pt);
+}
+
+\newcommand{\tikzpeople@alice@definecolors}{
+ \definecolor{shirt}{RGB}{253,156,40}
+ \definecolor{undershirt}{RGB}{232,232,232}
+ \definecolor{skin}{RGB}{148,60,19}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+\newcommand{\tikzpeople@alice@definestyles}{
+}
+
+\newcommand{\tikzpeople@alice@colors}{
+ shirt/340/{1/-.75}, hair/160/{-.65/1}, skin/20/{.25/.6},
+ details/200/{-.45/-.2}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bob.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bob.sty
new file mode 100644
index 0000000000..e68e8016ce
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bob.sty
@@ -0,0 +1,92 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{pearls}
+
+\newcommand{\tikzpeople@bob@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@bob@paintundershirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@bob@painthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@bob@definecolors}{
+ \definecolor{shirt}{RGB}{98,98,98}
+ \definecolor{pearls}{RGB}{252,137,172}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.9}
+}
+
+\newcommand{\tikzpeople@bob@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ pearls/.style={top color=\tikzpeople@pearls!70,bottom color=\tikzpeople@pearls,shading angle=-45}
+ }
+ \else
+ \tikzset{
+ pearls/.style={top color=\tikzpeople@pearls!40,bottom color=\tikzpeople@pearls!80,shading angle=-45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@bob@painthair}{
+ \if@tikzpeople@female
+ \draw[hair,shading angle=\if@tikzpeople@mirrored45\else-45\fi]
+ (0:3.1pt) arc (0:120:3.1pt) -- (60:.8pt) to [out=30,in=130]
+ (0:3.1pt) -- cycle;
+ \draw[hair,line join=bevel,shading angle=\if@tikzpeople@mirrored-90\else90\fi]
+ (120:3.1pt) arc (120:210:3.1pt) to[out=300,in=155,looseness=1] (235:3pt)
+ to [out=120,in=160,looseness=1.5] (60:.80pt) -- (120:3.1pt) -- cycle;
+ \else
+ \draw[hair, shading angle=\if@tikzpeople@mirrored45\else-45\fi]
+ (25:3.1pt) arc (25:120:3.1pt) -- (60:.8pt) to [out=30,in=170]
+ (25:3.1pt) -- cycle;
+ \draw[hair,line join=bevel,shading angle=\if@tikzpeople@mirrored-90\else90\fi]
+ (120:3.1pt) arc (120:190:3.1pt) to[out=283,in=210,looseness=.5]
+ (220:3pt) arc (300:405:.1pt) to[out=135,in=150,looseness=2]
+ (-1.7pt,-.6pt) to [out=90,in=180,looseness=1.5] (60:.80pt) --
+ (120:3.1pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@bob@paintundershirt}{
+ \begin{scope}
+ \clip
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75]
+ (2pt,-7.8pt) to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \draw[undershirt]
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75]
+ (2pt,-7.8pt) to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \draw[skin]
+ (245:2.9pt) to[out=300,in=270,looseness=1.5] (311:3pt) -- cycle;
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75]
+ (2pt,-7.8pt) to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \if@tikzpeople@female
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.04 and 1 step 0.06 with {\pgftransformscale{\scalingfactor}\fill[pearls] (0pt,0pt) circle (.1pt);}}]
+ (245:2.9pt) to[out=300,in=270,looseness=1.8] (311:3pt);
+ \fi
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@bob@colors}{
+ shirt/200/{-1/-.6}, hair/160/{-.65/1}, skin/20/{.25/.4},
+ undershirt/340/{.15/-.4}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bride.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bride.sty
new file mode 100644
index 0000000000..9aa1e21d4f
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bride.sty
@@ -0,0 +1,117 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{pearls}
+\tikzpeople@addcolorkey{veil}
+
+\newcommand{\tikzpeople@bride@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@bride@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@bride@paintveilright
+ \tikzpeople@person@painthead
+ \tikzpeople@person@paintfemalehairstylethree
+ \tikzpeople@bride@paintveilleft
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@bride@paintshirtdetails}{
+ \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);
+ \draw[skin,color=\tikzpeople@shirt!80]
+ (240:3pt) .. controls +(315:4pt) and +(270:4pt) .. (316:3.1pt) -- cycle;
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.04 and 1 step 0.09 with {\pgftransformscale{\scalingfactor}\fill[pearls] (0pt,0pt) circle (.2pt);},
+ mark=at position 0.58 with {\pgftransformscale{\scalingfactor}\fill[pearls] (216:.5pt) circle (.2pt) ++(288:.5pt) circle (.2pt) ++(0:.5pt) circle (.2pt) ++(72:.5pt) circle (.2pt);}}]
+ (240:3.4pt) .. controls +(315:4pt) and +(270:4pt) .. (316:3.5pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@bride@paintveilright}{
+ \begin{scope}
+ \pgftransformshift{\pgfpointpolar{20}{3pt}}
+ \pgftransformrotate{25}
+ \fill[veil] (0,0) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \pgftransformshift{\pgfpoint{-.5pt}{0pt}}
+ \pgftransformrotate{-17}
+ \fill[veil] (0,0) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@bride@paintveilleft}{
+ \begin{scope}
+ \fill[veil]
+ (-1.3pt,.6pt) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc
+ (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \pgftransformshift{\pgfpoint{-.5pt}{-.4pt}}
+ \pgftransformrotate{-17}
+ \fill[veil]
+ (-1.3pt,.6pt) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc
+ (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \pgftransformshift{\pgfpoint{-.5pt}{-.4pt}}
+ \pgftransformrotate{-17}
+ \fill[veil]
+ (-1.3pt,.6pt) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc
+ (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \pgftransformshift{\pgfpoint{-.5pt}{-.4pt}}
+ \pgftransformrotate{-17}
+ \fill[veil]
+ (-1.3pt,.6pt) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc
+ (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \pgftransformshift{\pgfpoint{-.5pt}{-.4pt}}
+ \pgftransformrotate{-17}
+ \fill[veil]
+ (-1.3pt,.6pt) -- ++(.5pt,-2.5pt) arc (80:140:.7pt) arc (60:120:.7pt) arc
+ (40:100:.7pt) -- ++(.5pt,2.5pt) --cycle;
+ \end{scope}
+ \path[postaction={decorate},decoration={markings,
+ mark=between positions 0.1 and 1 step 0.27 with {\pgftransformscale{\scalingfactor}
+ \fill[pearls]
+ (0,.3pt) circle (.2pt) ++(216:.5pt) circle (.2pt) ++(288:.5pt) circle
+ (.2pt) ++(0:.5pt) circle (.2pt) ++(72:.5pt) circle (.2pt);
+ }}]
+ (150:3.3pt) to [out=330,in=210] (35:3pt);
+}
+
+\newcommand{\tikzpeople@bride@definecolors}{
+ \definecolor{shirt}{RGB}{236,240,255}
+ \definecolor{pearls}{rgb}{.96,.96,1}
+ \definecolor{undershirt}{rgb}{.8,.8,.8}
+ \definecolor{veil}{RGB}{179,196,228}
+}
+\newcommand{\tikzpeople@bride@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ veil/.style ={color=\tikzpeople@veil!80!white,opacity=0.3},
+ pearls/.style={top color=\tikzpeople@pearls!70,bottom color=\tikzpeople@pearls,shading angle=-45}
+ }
+ \else
+ \tikzset{
+ veil/.style ={color=\tikzpeople@veil!50!white,opacity=0.3},
+ pearls/.style={top color=\tikzpeople@pearls!40,bottom color=\tikzpeople@pearls!80,shading angle=-45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@bride@colors}{
+ shirt/200/{-1/-.75}, veil/170/{-1.2/.8}, hair/150/{-.4/1.6}, skin/30/{.6/.8},
+ pearls/340/{0/.97,.47/-.46}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.builder.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.builder.sty
new file mode 100644
index 0000000000..8ff6d9e789
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.builder.sty
@@ -0,0 +1,80 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{trousers}
+
+\newcommand{\tikzpeople@builder@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@builder@painttrousers
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthairstyletwo
+ \tikzpeople@builder@painthat
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@builder@painttrousers}{
+ \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);
+ \draw[skin] (200:3.5pt) arc (200:330:4pt);
+ \draw[trousers]
+ (225:6pt) .. controls +(310:2pt) and +(250:3pt) ..
+ (320:6pt) -- ++(2pt,-6pt) -- ++(-12pt,0) -- cycle;
+ \draw[trousers]
+ (225:3pt) to[out=320,in=100] ++(300:5.5pt) -- ++(-1pt,-1pt) --
+ ++(-.9pt,.4pt) to[out=100,in=320] ++(120:5.5pt) -- cycle;
+ \end{scope}
+ \draw[trousers]
+ (280:2pt) to[out=320,in=100] ++(295:5pt) -- ++(1pt,-.4pt) --
+ ++(.6pt,1pt) to[out=100,in=320] ++(118:5.5pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@builder@painthat}{
+ \draw[hat]
+ (160:3.5pt) to[out=320,in=170] (0,0) -- ++(1pt,-.5pt) arc(270:310:5pt) --
+ ++(-.9pt,.5pt) .. controls +(95:3pt) and +(80:4pt) .. (160:3.5pt);
+ \draw[color=\tikzpeople@hat] (0,0) arc(270:305:6pt);
+ \draw[color=\tikzpeople@hat] (1.2pt,0.2pt) arc (0:70:2.8pt) -- ++(160:1.2pt);
+ \draw[color=\tikzpeople@hat] (2.2pt,0.5pt) arc (0:70:2.8pt) -- ++(159:1.5pt);
+ \draw[color=\tikzpeople@hat] (3pt,.9pt) arc (0:70:2.8pt) -- ++(160:.5pt);
+}
+
+\newcommand{\tikzpeople@builder@definecolors}{
+ \definecolor{shirt}{RGB}{232,232,232}
+ \definecolor{hat}{RGB}{238,175,0}
+ \definecolor{trousers}{RGB}{33,81,171}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+\newcommand{\tikzpeople@builder@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ trousers/.style={color=\tikzpeople@trousers,top color=\tikzpeople@trousers!70, bottom color=\tikzpeople@trousers,shading angle=45}
+ }
+ \else
+ \tikzset{
+ trousers/.style={color=\tikzpeople@trousers!80,top color=\tikzpeople@trousers!60, bottom color=\tikzpeople@trousers!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@builder@colors}{
+ trousers/200/{-.8/-.95}, hat/160/{-.35/1.4}, skin/20/{.5/.6},
+ hair/180/{-.7/.8}, shirt/340/{.3/-.3}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.businessman.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.businessman.sty
new file mode 100644
index 0000000000..33e61374ad
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.businessman.sty
@@ -0,0 +1,104 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{tie}
+\tikzpeople@addcolorkey{monogram}
+\tikzpeople@addtextkey{monogramtext}{BP}
+
+\newcommand{\tikzpeople@businessman@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@businessman@paintundershirt
+ \tikzpeople@businessman@paintopenshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@businessman@definecolors}{
+ \definecolor{shirt}{rgb}{0.12,0.39,0.14}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.9}
+ \definecolor{tie}{rgb}{0.5,0.1,0.1}
+ \definecolor{monogram}{rgb}{0,0,0.5}
+}
+
+\newcommand{\tikzpeople@businessman@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ tie/.style={color=\tikzpeople@tie,top color=\tikzpeople@tie!70, bottom color=\tikzpeople@tie,shading angle=45}
+ }
+ \else
+ \tikzset{
+ tie/.style={color=\tikzpeople@tie!80,top color=\tikzpeople@tie!40, bottom color=\tikzpeople@tie!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@businessman@paintundershirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[undershirt]
+ (-2.2pt,-1pt) -- (2pt,-8.5pt) -- (2pt,-1pt);
+ \draw[tie]
+ (0 pt,-2.5pt) -- (0.8pt,-3.2pt) -- (1.1pt,-6 pt) -- (1.7pt,-8.7pt) --
+ (2pt,-8.7pt) -- (2 pt,-5.5pt) -- (1 pt,-3.1pt) -- (1.2pt,-2 pt) --
+ (0.3pt,-2 pt);
+ \draw[undershirt,shading angle=-45]
+ (0.5pt,-3pt) -- (0.1pt,-3.7pt) -- (-1pt,-3pt);
+ \draw[undershirt,shading angle=-45]
+ (0.9pt,-2.5pt) -- (1.8pt,-3.2pt) -- (2.2pt,-2.2pt);
+ \end{scope}
+ {
+ \pgftransformrotate{20}
+ \pgf@xa=0.5pt*\scalingfactor
+ \if@tikzpeople@mirrored
+ \pgftransformxscale{-1}
+ \pgftext[at=\pgfpoint{1pt}{-4pt}]{\resizebox{\pgf@xa}{!}{\color{\tikzpeople@monogram}{$\mathcal{\tikzpeople@monogramtext}$}}}
+ \else
+ \pgftext[at=\pgfpoint{0.3pt}{-4pt}]{\resizebox{\pgf@xa}{!}{\color{\tikzpeople@monogram}{$\mathcal{\tikzpeople@monogramtext}$}}}
+ \fi
+ }
+}
+
+\newcommand{\tikzpeople@businessman@paintopenshirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[shirt,shading angle=-45]
+ (-2pt,-2.6 pt) -- (-1.5pt,-5pt) -- (-0.5pt,-5pt) -- (-1.1pt,-5.2pt) --
+ (1.6pt,-8.75pt) -- (1.9pt,-8.75pt) .. controls (1.7pt,-7pt) and
+ (-0pt,-3.2pt) .. (-1.6pt,-2pt) -- cycle;
+ \draw[shirt,shading angle=-45]
+ (1.9pt,-2pt) .. controls (1.9pt,-1.8pt) and (1.9pt,-8.5pt) ..
+ (1.9pt,-8.75pt) -- (2.3pt,-8.5pt) -- (3.2pt,-5.2pt) --
+ (2.6pt,-5.2 pt) -- (3.2pt,-5 pt) -- (2.3pt,-2.3pt) -- cycle;
+ \end{scope}
+ \draw[color=\tikzpeople@shirt!80]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+}
+
+\newcommand{\tikzpeople@businessman@colors}{
+ shirt/200/{-1/-.75}, hair/150/{-.4/1.3}, skin/30/{.5/.8},
+ undershirt/180/{0/-.2}, tie/330/{.32/-.7}, monogram/0/{.3/-.17}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.charlie.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.charlie.sty
new file mode 100644
index 0000000000..b03281da10
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.charlie.sty
@@ -0,0 +1,125 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{buttons}
+
+\newcommand{\tikzpeople@charlie@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@charlie@paintundershirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@charlie@painthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@charlie@definecolors}{
+ \definecolor{hair}{RGB}{107,68,35}
+ \definecolor{shirt}{RGB}{0,100,105}
+ \definecolor{buttons}{RGB}{128,70,27}
+}
+
+\newcommand{\tikzpeople@charlie@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ collar/.style ={color=\tikzpeople@shirt!70,inner color=\tikzpeople@shirt!50, outer color=\tikzpeople@shirt!50},
+ buttons/.style={color=\tikzpeople@buttons,inner color=\tikzpeople@buttons!80, outer color=\tikzpeople@buttons}
+ }
+ \else
+ \tikzset{
+ collar/.style ={color=\tikzpeople@shirt!30,inner color=\tikzpeople@shirt!10, outer color=\tikzpeople@shirt!30},
+ buttons/.style={color=\tikzpeople@buttons!80,inner color=\tikzpeople@buttons!60, outer color=\tikzpeople@buttons!80}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@charlie@painthair}{
+ \if@tikzpeople@female
+ \draw[hair,shading angle=-45]
+ (340:3pt) arc (-20:120:3pt) -- (120:1.4pt) to [out=300,in=90,in looseness=2]
+ (340:3pt) -- cycle;
+ \draw[hair,line join=bevel]
+ (120:3pt) arc (120:230:3pt) to[out=110,in=300,out looseness=2]
+ (120:1.4pt) -- (120:3pt) -- cycle;
+ \else
+ \draw[hair,shading angle=-45]
+ (10:3pt) arc (10:120:3pt) -- (120:1.4pt) to [out=300,in=210,looseness=.5]
+ (10:3pt) -- cycle;
+ \draw[hair,line join=bevel]
+ (120:3pt) arc (120:210:3pt) to[out=90,in=300,looseness=1] (120:1.4pt) --
+ (120:3pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@charlie@paintundershirt}{
+ \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) (205:3.1pt) arc (205:335:3.1pt) to[out=200,in=340]
+ (205:3.1pt) --cycle;
+ \draw[color=\tikzpeople@shirt!80,line width=.05*\scalingfactor,cap=round]
+ (2pt,-8.7pt) to[out=90,in=290] (285:3.1pt);
+ {
+ \if@tikzpeople@female
+ \pgftransformshift{\pgfpoint{-.3pt}{0pt}}
+ \else
+ \pgftransformshift{\pgfpoint{.3pt}{0pt}}
+ \fi
+ \path[postaction={decoration={markings,
+ mark=between positions .12 and .8 step 0.16 with {
+ \draw[buttons] (0pt,0pt) circle (.15*\scalingfactor);
+ \path[fill=\tikzpeople@buttons]
+ (0:.02*\scalingfactor) circle (.01*\scalingfactor)
+ (180:.02*\scalingfactor) circle (.01*\scalingfactor);},
+ },decorate}] (2pt,-8.7pt) to[out=90,in=290] (285:3.1pt);
+ }
+ \if@tikzpeople@female
+ \draw[skin]
+ (245:2.9pt) to[out=310,in=160] (286:4pt) to[out=40,in=260]
+ (315:2.8pt) -- cycle;
+ \draw[collar]
+ (245:2.75pt) to[out=310,in=160] (286:3.9pt) to[out=40,in=260]
+ (315:2.7pt) -- (315:2.9pt) to[out=260,in=40]
+ (286:4.1pt) to[out=160,in=310] (245:3pt) --cycle;
+ \else
+ \draw[skin]
+ (245:2.9pt) to[out=300,in=280,looseness=1.3] (315:2.8pt) -- cycle;
+ \draw[collar]
+ (245:2.75pt) to[out=300,in=280,looseness=1.3] (315:2.7pt) --
+ (315:2.9pt) to[out=280,in=300,looseness=1.3] (245:3pt) -- cycle;
+ \fi
+ \begin{scope}
+ \if@tikzpeople@female
+ \clip
+ (245:2.75pt) to[out=310,in=160] (286:3.9pt) to[out=40,in=260]
+ (315:2.7pt) -- (315:2.9pt) to[out=260,in=40]
+ (286:4.1pt) to[out=160,in=310] (245:3pt) --cycle;
+ \else
+ \clip
+ (245:2.75pt) to[out=300,in=280,looseness=1.3] (315:2.7pt) --
+ (315:2.9pt) to[out=280,in=300,looseness=1.3] (245:3pt) -- cycle;
+ \fi
+ \draw[color=\tikzpeople@shirt!40,line width=.05*\scalingfactor,cap=round]
+ (2pt,-8.7pt) to[out=90,in=290] (285:3.1pt);
+ \end{scope}
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@charlie@colors}{
+ shirt/200/{-1/-.75}, hair/160/{-.75/1}, skin/20/{.5/.8},
+ buttons/340/{.39/-.59}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.chef.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.chef.sty
new file mode 100644
index 0000000000..ee4b592407
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.chef.sty
@@ -0,0 +1,74 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+
+\newcommand{\tikzpeople@chef@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@chef@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@chef@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@chef@paintshirtdetails}{
+ \draw[details]
+ (230:3pt) .. controls (0.24pt,-5pt) and (0.29pt,-8pt) .. (0.3pt,-9pt);
+ \draw[shirt,thick,shading angle=-45]
+ (230:3pt) .. controls +(-0.4pt,-1.5pt) .. ++(0pt,-3pt) .. controls
+ +(1.5pt,0.5pt) .. ++(3pt,0.2pt) .. controls +(0.5pt,0.4pt) ..
+ ++(2pt,0.7pt) .. controls +(0pt,0.5pt) .. (312:3pt);
+ \draw[skin] (231:3pt) -- (1pt,-4.85pt) -- (311:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@chef@painthat}{
+ \draw[hat]
+ (160:3pt) ++(0pt,2pt) -- (160:3pt) arc (-180:0:2.85pt and 1pt) --
+ ++(0pt,2pt);
+ \draw[hat,bottom color=\tikzpeople@hat!90!black]
+ (0pt,2.7pt) ellipse (3.2pt and 1.12pt);
+ \begin{scope}
+ \clip (0pt,2.7pt) ellipse (3.2pt and 1.12pt);
+ \draw[hat]
+ (-3.2pt,3.2pt) arc (-180:0:3.2pt and 1.12pt) -- ++(0pt,1.5pt) --
+ (-3.2pt,4.2pt) -- cycle;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@chef@definecolors}{
+ \definecolor{shirt}{RGB}{232,232,232}
+ \definecolor{hat}{RGB}{232,232,232}
+ \definecolor{details}{rgb}{0.3,0.3,0.3}
+}
+\newcommand{\tikzpeople@chef@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ details/.style={color=\tikzpeople@details}
+ }
+ \else
+ \tikzset{
+ details/.style={color=\tikzpeople@details!80}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@chef@colors}{
+ shirt/340/{.75/-.75}, hair/160/{-.75/.9}, hat/30/{.5/1.3}, skin/0/{.4/.6},
+ details/200/{-.1/-1}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.conductor.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.conductor.sty
new file mode 100644
index 0000000000..f3d9e6d15c
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.conductor.sty
@@ -0,0 +1,141 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{hatshield}
+\tikzpeople@addcolorkey{hatbadge}
+\tikzpeople@addcolorkey{badge}
+
+
+\newcommand{\tikzpeople@conductor@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@conductor@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthairstyletwo
+ \tikzpeople@conductor@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@conductor@paintundershirt}{
+ \draw[undershirt]
+ (-2.2pt,-1pt) -- (2pt,-8.5pt) -- (2pt,-1pt);
+ \draw[tie]
+ (0 pt,-2.5pt) -- (0.8pt,-3.2pt) -- (1.1pt,-6 pt) -- (1.7pt,-8.7pt) --
+ (1.9pt,-8.7pt) -- (2 pt,-5.5pt) -- (1 pt,-3.1pt) -- (1.2pt,-2 pt) --
+ (0.3pt,-2 pt);
+ \draw[undershirt,shading angle=-45]
+ (0.5pt,-3pt) -- (0.1pt,-3.7pt) -- (-1pt,-3pt);
+ \draw[undershirt,shading angle=-45]
+ (0.9pt,-2.5pt) -- (1.8pt,-3.2pt) -- (2.2pt,-2.2pt);
+}
+
+\newcommand{\tikzpeople@conductor@paintopenshirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) .. ( 5pt,-7pt) ..
+ controls ( 5pt, 0pt) and (-5pt,0pt) .. (-4pt,-8pt);
+ \draw[shirt,shading angle=-45]
+ (-2 pt,-2.6 pt) -- (-1.5pt,-5 pt) -- (-0.5pt,-5pt) --
+ (-1.1pt,-5.2 pt) -- ( 1.6pt,-8.75pt) -- ( 1.9pt,-8.75pt) .. controls
+ (1.7pt,-7pt) and (-0pt,-3.2pt) .. (-1.6pt,-2pt) -- cycle;
+ \draw[shirt,shading angle=-45]
+ (2pt,-2pt) .. controls (2.2pt,-1.8pt) and (1.9pt,-8.5pt) ..
+ (1.9pt,-8.75pt) -- (2.3pt,-8.5pt) -- (3.2pt,-5.2pt) -- (2.6pt,-5.2 pt) --
+ (3.2pt,-5 pt) -- (2.3pt,-2.3pt) -- cycle;
+ \end{scope}
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) .. ( 5pt,-7pt) ..
+ controls ( 5pt, 0pt) and (-5pt, 0pt) .. (-4pt,-8pt);
+}
+
+\newcommand{\tikzpeople@conductor@paintshirtdetails}{
+ \tikzpeople@conductor@paintundershirt
+ \tikzpeople@conductor@paintopenshirt
+ \draw[badge]
+ (264:7pt) to[out=354 ,in=186] ++(0:0.5pt) -- ++(270:0.15pt)
+ to[in=354 ,out=186] ++(180:0.5pt) -- (264:7pt);
+ \draw[badge]
+ (261:7.5pt) to[out=354 ,in=186] ++(0:1.5pt) -- ++(270:0.25pt)
+ to[in=354 ,out=186] ++(180:1.5pt) -- (261:7.5pt);
+}
+
+\newcommand{\tikzpeople@conductor@painthat}{
+ \path
+ (160:3pt) arc (-180:-120:2.85pt and 1pt) coordinate (tikzpeople@tmp);
+ \draw[hatbottom,rounded corners=.75pt]
+ (tikzpeople@tmp) -- ++(340:1.5pt) .. controls ++(340:1pt) ..
+ ++(10:3.8pt) .. controls ++(45:.2pt) .. (20:3pt);
+ \draw[hatbottom]
+ (160:3pt) ++(0pt,1pt) -- (160:3pt) arc (-180:0:2.85pt and 1pt) --
+ ++(0pt,1pt);
+ \draw[hattop,rounded corners=.75pt]
+ (160:3pt) ++(0pt,0.5pt) arc (-180:-22:3pt and 1.05pt) -- ++(1pt,1.5pt) --
+ ++(0pt,.4pt) .. controls +(-4pt,.5pt) .. (142:4.8pt) -- ++(0pt,-0.5pt) --
+ cycle;
+ \begin{scope}
+ \clip[rounded corners=.75pt]
+ (160:3pt) ++(0pt,0.5pt) arc (-180:-22:3pt and 1.05pt) -- ++(1pt,1.5pt) --
+ ++(0pt,.4pt) .. controls +(-4pt,.5pt) .. (142:4.8pt) -- ++(0pt,-0.5pt) --
+ cycle;
+ \draw[hatbottom,nearly opaque]
+ (153:3.5pt) ++(0pt,-2pt) -- (153:3.5pt) .. controls ++(350:1.5pt) ..
+ ++(10:2.5pt) .. controls ++(335:1.2pt) .. ++(2:2.5pt) coordinate
+ (hatbadge) .. controls ++(335:1.2pt) .. ++(10:2.5pt) -- ++(0pt,-2pt);
+ \end{scope}
+ \draw[hatbadge]
+ (hatbadge) ++(0.2pt,-0.2pt) coordinate (tikzpeople@tmp) .. controls ++(190:.5pt) ..
+ ++(200:.75pt) .. controls ++(270:.75pt) .. ++(300:1pt) .. controls
+ ++(70:.5pt) .. ++(55:1.1pt) .. controls ++(135:.3pt) .. (tikzpeople@tmp);
+}
+
+\newcommand{\tikzpeople@conductor@definecolors}{
+ \definecolor{shirt}{rgb}{0.18,0.38,0.80}
+ \definecolor{hat}{rgb}{0.18,0.38,0.80}
+ \definecolor{hair}{rgb}{0,0,0}
+ \definecolor{badge}{rgb}{0.96,0.55,0.1}
+ \definecolor{hatbadge}{rgb}{0.96,0.55,0.1}
+ \definecolor{hatshield}{rgb}{0.031,0.09,0.19}
+ \definecolor{undershirt}{RGB}{232,232,232}
+ \definecolor{tie}{rgb}{0.04,0.15,0.37}
+}
+\newcommand{\tikzpeople@conductor@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ shirt/.style ={color=\tikzpeople@shirt!90,top color=\tikzpeople@shirt!90, bottom color=\tikzpeople@shirt,shading angle=45},
+ hattop/.style ={color=\tikzpeople@hat!90,top color=\tikzpeople@hat!90, bottom color=\tikzpeople@hat,shading angle=45},
+ hatbottom/.style={color=\tikzpeople@hatshield,top color=\tikzpeople@hatshield!80, bottom color=\tikzpeople@hatshield,shading angle=45},
+ badge/.style ={color=\tikzpeople@badge,top color=\tikzpeople@badge!70, bottom color=\tikzpeople@badge,shading angle=45},
+ hatbadge/.style ={color=\tikzpeople@hatbadge,top color=\tikzpeople@hatbadge!70, bottom color=\tikzpeople@hatbadge,shading angle=45},
+ tie/.style ={color=\tikzpeople@tie,top color=\tikzpeople@tie!70, bottom color=\tikzpeople@tie,shading angle=45}
+ }
+ \else
+ \tikzset{
+ shirt/.style ={color=\tikzpeople@shirt!80,top color=\tikzpeople@shirt!80, bottom color=\tikzpeople@shirt,shading angle=45},
+ hattop/.style ={color=\tikzpeople@hat!80,top color=\tikzpeople@hat!80, bottom color=\tikzpeople@hat,shading angle=45},
+ hatbottom/.style={color=\tikzpeople@hatshield!80,top color=\tikzpeople@hatshield!60, bottom color=\tikzpeople@hatshield!90,shading angle=45},
+ badge/.style ={color=\tikzpeople@badge!80,top color=\tikzpeople@badge!40, bottom color=\tikzpeople@badge!80,shading angle=45},
+ hatbadge/.style ={color=\tikzpeople@hatbadge!80,top color=\tikzpeople@hatbadge!40, bottom color=\tikzpeople@hatbadge!80,shading angle=45},
+ tie/.style ={color=\tikzpeople@tie!80,top color=\tikzpeople@tie!40, bottom color=\tikzpeople@tie!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@conductor@colors}{
+ shirt/190/{-.8/-.5}, hat/140/{-.6/1.5}, hair/175/{-.75/.8}, skin/10/{.5/.6},
+ badge/210/{-.25/-1.25}, hatshield/155/{.15/.85}, hatbadge/30/{.4/1.3},
+ undershirt/350/{.3/-.15}, tie/330/{.35/-.8}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.cowboy.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.cowboy.sty
new file mode 100644
index 0000000000..d6cab61496
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.cowboy.sty
@@ -0,0 +1,147 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{vest}
+\tikzpeople@addcolorkey{patches}
+\tikzpeople@addcolorkey{stitching}
+\tikzpeople@addcolorkey{tie}
+
+\newcommand{\tikzpeople@cowboy@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@cowboy@paintshirtdetails
+ {
+ \pgftransformshift{\pgfpoint{0}{.8pt}}
+ \tikzpeople@person@paintrighthorn
+ }
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@cowboy@painthat
+ {
+ \pgftransformshift{\pgfpoint{0}{1.2pt}}
+ \tikzpeople@person@paintlefthorn
+ }
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@cowboy@paintshirtdetails}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[vest,postaction={
+ decoration={
+ markings,
+ mark=at position 0.16 with {\coordinate (tikzpeople@tmp1) at (-.1pt*\scalingfactor,-.1pt*\scalingfactor);},
+ mark=at position 0.28 with {\coordinate (tikzpeople@tmp2) at (-.1pt*\scalingfactor,-.1pt*\scalingfactor);},
+ mark=at position 0.6 with {\coordinate (tikzpeople@tmp3) at (-.1pt*\scalingfactor,-.1pt*\scalingfactor);},
+ mark=at position 0.72 with {\coordinate (tikzpeople@tmp4) at (-.1pt*\scalingfactor,-.1pt*\scalingfactor);};
+ },decorate
+ }]
+ (232:3pt) to[out=315,in=90] ++(2.5pt,-5.5pt) --
+ ++(-2.5pt,0) to[out=90,in=315] ++(-2pt,4pt)--cycle;
+ \draw[patches,postaction={
+ decoration={
+ markings,
+ mark=between positions 0.22 and 0.48 step 0.045 with {\draw[stitching] (.2pt*\scalingfactor,-.1pt*\scalingfactor) -- (0,.1pt*\scalingfactor);},
+ mark=between positions 0.73 and 1 step 0.045 with {\draw[stitching] (.2pt*\scalingfactor,-.1pt*\scalingfactor) -- (0,.1pt*\scalingfactor);}
+ },decorate
+ }]
+ (tikzpeople@tmp1) to[out=300,in=105] (tikzpeople@tmp2) to[out=190,in=45] (tikzpeople@tmp3) to[out=100,in=300]
+ (tikzpeople@tmp4) to[out=40,in=190] (tikzpeople@tmp1);
+ \draw[vest,postaction={
+ decoration={
+ markings,
+ mark=at position 0.14 with {\coordinate (tikzpeople@tmp1) at (.1pt*\scalingfactor,.1pt*\scalingfactor);},
+ mark=at position 0.25 with {\coordinate (tikzpeople@tmp2) at (.1pt*\scalingfactor,.1pt*\scalingfactor);},
+ mark=at position 0.615 with {\coordinate (tikzpeople@tmp3) at (.1pt*\scalingfactor,.1pt*\scalingfactor);},
+ mark=at position 0.715 with {\coordinate (tikzpeople@tmp4) at (.1pt*\scalingfactor,.1pt*\scalingfactor);};
+ },decorate
+ }]
+ (314:3pt) to[out=245,in=100] ++(-.5pt,-5.5pt) --
+ ++(1.8pt,.8pt) to[out=95,in=250] ++(.5pt,4.5pt)--cycle;
+ \draw[patches,postaction={
+ decoration={
+ markings,
+ mark=between positions 0.28 and 0.52 step 0.055 with {\draw[stitching] (-.2pt*\scalingfactor,-.1pt*\scalingfactor) -- (0,.1pt*\scalingfactor);},
+ mark=between positions 0.76 and 1 step 0.055 with {\draw[stitching] (-.2pt*\scalingfactor,-.1pt*\scalingfactor) -- (0,.1pt*\scalingfactor);}
+ },decorate
+ }]
+ (tikzpeople@tmp1) to[out=255,in=92] (tikzpeople@tmp2) to[out=357,in=178] (tikzpeople@tmp3) to[out=98,in=268]
+ (tikzpeople@tmp4) to[out=170,in=0] (tikzpeople@tmp1);
+ \draw[tie,shading angle=-45]
+ (.2pt,-3.7pt) to[out=280,in=80] ++(-.2pt,-1.5pt) .. controls +(-.2pt,1pt)
+ and +(-1.3pt,-.1pt) .. (.2pt,-3.7pt);
+ \draw[tie]
+ (234:3pt) to[out=316,in=120] (.4pt,-4.4pt) to[out=40,in=250] (312:3pt);
+ \draw[tie,shading angle=-45]
+ (1pt,-3.8pt) to[out=300,in=80] ++(.5pt,-1pt) to[out=260,in=85]
+ ++(-.3pt,-1.4pt) arc (85:92:.3pt) to[out=92,in=268]
+ ++(-1.2pt,2.2pt) to[out=88,in=135] (1pt,-3.8pt) -- cycle;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@cowboy@painthat}{
+ \pgftransformrotate{5}
+ \path[hat]
+ (15:3pt) ++(-.7pt,3pt) coordinate (tikzpeople@tmp) (165:3pt) --
+ ++(.7pt,3pt) to[out=10,in=170] (tikzpeople@tmp) -- (15:3pt) --cycle;
+ \begin{scope}
+ \pgftransformshift{\pgfpoint{0}{.2pt}}
+ \path[hatrim]
+ (203:3pt) ++(-2.5pt,3.3pt) coordinate (tikzpeople@tmp) arc (250:282:19pt) arc
+ (102:-78:.3pt) arc (282:248.5:19pt) to[out=150, in= 160] (tikzpeople@tmp);
+ \end{scope}
+ \path[hat]
+ (357:3pt) to[out=160,in=20] (183:3pt) arc (183:203:3pt) to[out=180,in=175]
+ ++(-2.5pt,3.3pt) arc (250:282:19pt) to[out=10,in=10] (335:3pt) arc
+ (335:357:3pt) --cycle;
+}
+
+\newcommand{\tikzpeople@cowboy@definecolors}{
+ \definecolor{shirt}{RGB}{56,52,182}
+ \definecolor{hat}{RGB}{105,49,0}
+ \definecolor{hair}{RGB}{28,26,25}
+ \definecolor{vest}{RGB}{204,100,0}
+ \definecolor{patches}{RGB}{254,145,42}
+ \definecolor{stitching}{RGB}{184,90,0}
+ \definecolor{tie}{RGB}{205,0,20}
+}
+\newcommand{\tikzpeople@cowboy@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ hatrim/.style={color=\tikzpeople@hat!70,top color=\tikzpeople@hat!20, bottom color=\tikzpeople@hat!70,shading angle=90},
+ vest/.style={color=\tikzpeople@vest,top color=\tikzpeople@vest!70,bottom color=\tikzpeople@vest,shading angle=45},
+ patches/.style={color=\tikzpeople@patches,top color=\tikzpeople@patches!70,bottom color=\tikzpeople@patches,shading angle=45},
+ stitching/.style={line cap=round,line width=.09pt*\scalingfactor,color=\tikzpeople@stitching},
+ tie/.style={color=\tikzpeople@tie,top color=\tikzpeople@tie!70, bottom color=\tikzpeople@tie,shading angle=45}
+ }
+ \else
+ \tikzset{
+ hatrim/.style={color=\tikzpeople@hat!40,top color=\tikzpeople@hat!10, bottom color=\tikzpeople@hat!40,shading angle=90},
+ vest/.style={color=\tikzpeople@vest!80,top color=\tikzpeople@vest!40, bottom color=\tikzpeople@vest!80,shading angle=45},
+ patches/.style={color=\tikzpeople@patches!80,top color=\tikzpeople@patches!40, bottom color=\tikzpeople@patches!80,shading angle=45},
+ stitching/.style={line cap=round,line width=.09pt*\scalingfactor,color=\tikzpeople@stitching},
+ tie/.style={color=\tikzpeople@tie!80,top color=\tikzpeople@tie!50, bottom color=\tikzpeople@tie!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@cowboy@colors}{
+ shirt/350/{1/-.5}, hair/180/{-.7/.7}, hat/160/{-1/1}, tie/10/{.1/-.25},
+ skin/30/{.5/.8}, vest/195/{-.7/-.3}, patches/210/{-.5/-.7},
+ stitching/330/{-.18/-.85,.53/-.71}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.criminal.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.criminal.sty
new file mode 100644
index 0000000000..1ed601e3a4
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.criminal.sty
@@ -0,0 +1,97 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+
+\newcommand{\tikzpeople@criminal@paint}{
+ {
+ \pgftransformyshift{-1.2pt}
+ \tikzpeople@person@paintrighthorn
+ }
+ \tikzpeople@person@painthead
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintshirt
+ \tikzpeople@criminal@paintshirtdetails
+ \if@tikzpeople@female
+ \tikzpeople@person@painthair
+ \fi
+ \tikzpeople@criminal@painthat
+ {
+ \pgftransformyshift{-1.2pt}
+ \tikzpeople@person@paintlefthorn
+ }
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@criminal@paintshirtdetails}{
+ \draw[shirt,shading angle=-45]
+ (205:3.1pt) arc (205:335:3.1pt) to[out=200,in=340] (205:3.1pt) --cycle;
+ \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) (205:3.1pt) arc (205:335:3.1pt) to[out=200,in=340]
+ (205:3.1pt) --cycle;
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi,line width=.4*\scalingfactor,cap=round]
+ (2pt,-8.7pt) to[out=90,in=290] (290:3.1pt) to[out=45,in=270] (310:2.25pt);
+ \draw[color=\tikzpeople@details,line width=.17*\scalingfactor,cap=round]
+ (2pt,-8.7pt) to[out=90,in=290] (290:3.1pt) to[out=45,in=270] (310:2.25pt);
+ \draw[details]
+ (310:2.25pt) ++(-.05pt,0) -- ++(-.1pt,-.5pt) -- ++(.3pt,0) --
+ ++(-.1pt,.5pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@criminal@painthat}{
+ \begin{scope}
+ \pgftransformrotate{20}
+ \draw[hat] (180:3.1pt) ++(0,.2pt) arc (180:0:3.1pt and 3.5pt);
+ \if@tikzpeople@mirrored
+ \draw[hat, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (0:3.2pt) ++(0,-.2pt) to[out=170,in=10] ++(180:6.4pt) to[out=110,in=250]
+ ++(0,1.2pt) to[out=10,in=170] ++(0:6.4pt) to[out=290,in=70]
+ ++(0,-1.22pt) --cycle;
+ \else
+ \draw[hat, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (0:3.2pt) ++(0,-.2pt) to[out=170,in=10] ++(180:6.4pt)
+ to[out=110,in=250] ++(0,1.2pt) to[out=10,in=170] ++(0:6.4pt)
+ to[out=290,in=70] ++(0,-1.22pt)--cycle;
+ \fi
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@criminal@definecolors}{
+ \definecolor{shirt}{RGB}{5,48,167}
+ \definecolor{hat}{RGB}{4,4,20}
+ \definecolor{details}{RGB}{230,232,234}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+\newcommand{\tikzpeople@criminal@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ details/.style={color=\tikzpeople@details,top color=\tikzpeople@details!70, bottom color=\tikzpeople@details,shading angle=45}
+ }
+ \else
+ \tikzset{
+ shirt/.style ={color=\tikzpeople@shirt!80,top color=\tikzpeople@shirt!50, bottom color=\tikzpeople@shirt!80,shading angle=45},
+ details/.style={color=\tikzpeople@details,top color=\tikzpeople@details!40, bottom color=\tikzpeople@details!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@criminal@colors}{
+ shirt/340/{1/-.75}, hat/160/{-.5/1.5}, skin/20/{.5/.75},
+ details/200/{.27/-.25}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.dave.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.dave.sty
new file mode 100644
index 0000000000..ec8520d47f
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.dave.sty
@@ -0,0 +1,125 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{tie}
+
+\newcommand{\tikzpeople@dave@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@dave@paintundershirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@dave@painthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@dave@definecolors}{
+ \definecolor{shirt}{RGB}{136,190,226}
+ \definecolor{tie}{RGB}{173,36,47}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.9}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+
+\newcommand{\tikzpeople@dave@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ tie/.style={color=\tikzpeople@tie,top color=\tikzpeople@tie!70, bottom color=\tikzpeople@tie,shading angle=45}
+ }
+ \else
+ \tikzset{
+ tie/.style={color=\tikzpeople@tie!80,top color=\tikzpeople@tie!40, bottom color=\tikzpeople@tie!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@dave@painthair}{
+ \if@tikzpeople@female
+ \draw[hair,shading angle=-45]
+ (10:3.1pt) arc (10:175:3.1pt) to[out=265,in=170,looseness=1] (250:4pt)
+ to [out=120,in=150,out looseness=1.5] (-.5pt,.5pt) to [out=330,in=200]
+ (10:3.1pt) -- cycle;
+ \else
+ \draw[hair,line join=bevel]
+ (20:3.1pt) arc (20:190:3.1pt) to[out=283,in=210,looseness=.5]
+ (220:3pt) arc (300:405:.1pt) to[out=120,in=110,out looseness=4,in looseness=2]
+ (-1.7pt,-.7pt) -- (-1.5pt,-.7pt) to [out=90,in=160,looseness=1]
+ (-.5pt,1.2pt) to [out=340,in=200,out looseness=1.5,in looseness=.2]
+ (30:2.5pt) to [out=20,in=90,looseness=1]
+ (355:3pt) to [out=80,in=290,looseness=1] (20:3.1pt);
+ \fi
+}
+
+\newcommand{\tikzpeople@dave@paintundershirt}{
+ \begin{scope}
+ \clip
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75] (2pt,-7.8pt)
+ to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \draw[undershirt]
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75] (2pt,-7.8pt)
+ to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \if@tikzpeople@female
+ \draw[skin]
+ (250:2.9pt) to[out=300,in=280,looseness=2] (310:2.8pt) -- cycle;
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.04 and 1 step 0.04 with {\pgftransformscale{\scalingfactor}
+ \fill[tie] (0pt,0pt) circle (.1pt);}
+ }]
+ (245:2.9pt) to[out=300,in=270,looseness=3] (311:3pt);
+ \else
+ \draw[tie]
+ (270:3pt) -- ++(.7pt,-.1pt) -- ++(.05pt,-.3pt) to[out=275,in=95]
+ ++(-.1pt,-.8pt) -- ++(1pt,-4pt) -- ++(.9pt,.25pt) -- ++(-1pt,3.8pt)
+ to[in=280,out=95] ++(-.4pt,.9pt) -- ++(-.1pt,.25pt) -- (295:3pt);
+ \draw[tie]
+ (270:3pt) ++(.7pt,-.1pt) to[out=30,in=175] ++(.35pt,.1pt)
+ to[out=300,in=90] ++(.1pt,-.35pt) to[out=210,in=350] ++(-.4pt,-.1pt)
+ to[out=110,in=270] ++(-0.05pt,.35pt)--cycle;
+ \fi
+ \end{scope}
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \if@tikzpeople@mirrored
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.11 and .54 step 0.02 with {\pgftransformscale{\scalingfactor}
+ \draw[shirt] (0pt,0pt) -- (0pt,.3pt) arc (360:180:.15pt) -- (-.3pt,0pt);},
+ mark=between positions 0.54 and .91 step 0.02 with {\pgftransformscale{\scalingfactor}
+ \draw[shirt] (0pt,0pt) -- (0pt,.3pt) arc (180:360:.15pt) -- (.3pt,0pt);}
+ }]
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75] (2pt,-7.8pt)
+ to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \else
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.11 and .54 step 0.02 with {\pgftransformscale{\scalingfactor}
+ \draw[shirt] (0pt,0pt) -- (0pt,-.3pt) arc (0:180:.15pt) -- (-.3pt,0pt);},
+ mark=between positions 0.54 and .91 step 0.02 with {\pgftransformscale{\scalingfactor}
+ \draw[shirt] (0pt,0pt) -- (0pt,-.3pt) arc (180:0:.15pt) -- (.3pt,0pt);}
+ }]
+ (-1.9pt,-1pt) to[out=290,in=130,looseness=.75] (2pt,-7.8pt)
+ to[out=80,in=280,looseness=.75] (1.9pt,-1pt);
+ \fi
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@dave@colors}{
+ shirt/340/{1/-.9}, hair/160/{-.8/1}, skin/20/{.4/.6}, tie/360/{.2/-.25},
+ undershirt/200/{-.1/-.2}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.devil.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.devil.sty
new file mode 100644
index 0000000000..56f792f422
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.devil.sty
@@ -0,0 +1,77 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\newcommand{\tikzpeople@devil@paint}{
+ \@tikzpeople@eviltrue
+ \tikzpeople@devil@painttail
+ \tikzpeople@person@paintshirt
+ \tikzpeople@devil@painttorso
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthairstyletwo
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@devil@definecolors}{
+ \definecolor{skin}{RGB}{216,52,38}
+ \definecolor{hair}{named}{black}
+ \definecolor{shirt}{named}{black}
+}
+
+\newcommand{\tikzpeople@devil@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ tail/.style ={color=\tikzpeople@skin,double=\tikzpeople@skin!90,double distance=.4pt*\scalingfactor},
+ horns/.style={skin}
+ }
+ \else
+ \tikzset{
+ skin/.style ={color=\tikzpeople@skin!80,top color=\tikzpeople@skin!50,bottom color=\tikzpeople@skin!80},
+ tail/.style ={color=\tikzpeople@skin!80,double=\tikzpeople@skin!70,double distance=.4pt*\scalingfactor},
+ horns/.style={skin}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@devil@painttail}{
+ \draw[tail]
+ (250:7pt) to[out=80,in=10] ++(130:3.5pt) to[out=190,in=190,looseness=3] ++(95:2.5pt) to[out=10,in=300,looseness=2] ++(100:3pt) coordinate (tikzpeople@tmp);
+ {
+ \pgftransformrotate{30}
+ \draw[skin] (tikzpeople@tmp) ++(-.1pt,0) to[out=200,in=80] ++(-.8pt,-.7pt) to[out=90,in=220] ++(.9pt,2pt) to[out=320,in=90] ++(.9pt,-2pt) to[out=80,in=340] ++(-.8pt,.7pt);
+ }
+}
+
+\newcommand{\tikzpeople@devil@painttorso}{
+ \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;
+ \draw[skin]
+ (-1.9pt,-1pt) to[out=290,in=80]
+ (-1.2pt,-9.2pt) -- (4.5pt,-9pt) to[out=120,in=280] (1.6pt,-1pt);
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-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;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@devil@colors}{
+ shirt/200/{-1/-.6}, hair/160/{-.75/.7}, skin/20/{.6/.7,.15/-.4}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.duck.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.duck.sty
new file mode 100644
index 0000000000..e50f54fd06
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.duck.sty
@@ -0,0 +1,104 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{bill}
+\tikzpeople@addcolorkey{tongue}
+
+\newcommand{\tikzpeople@duck@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@duck@painttorso
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@duck@paintbill
+ \tikzpeople@person@painthair
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@duck@definecolors}{
+ \definecolor{skin}{RGB}{252,167,0}
+ \definecolor{bill}{RGB}{247, 78, 19}
+ \definecolor{hair}{named}{black}
+ \definecolor{tongue}{RGB}{246,38,10}
+}
+
+\newcommand{\tikzpeople@duck@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ shirt/.style ={skin},
+ bill/.style ={color=\tikzpeople@bill,top color=\tikzpeople@bill!70,bottom color=\tikzpeople@bill,shading angle=45},
+ tongue/.style ={color=\tikzpeople@tongue,top color=\tikzpeople@tongue!30!\tikzpeople@bill,bottom color=\tikzpeople@tongue},
+ feathers/.style={color=\tikzpeople@skin,decoration={zigzag,segment length=\scalingfactor*.8pt,amplitude=\scalingfactor*.25pt},decorate,line width=\scalingfactor*.05pt}
+ }
+ \else
+ \tikzset{
+ shirt/.style ={skin},
+ bill/.style ={color=\tikzpeople@bill!80,top color=\tikzpeople@bill!50,bottom color=\tikzpeople@bill!80,shading angle=45},
+ tongue/.style ={color=\tikzpeople@tongue!80,outer color=\tikzpeople@tongue!20!\tikzpeople@bill!80,inner color=\tikzpeople@tongue!80},
+ feathers/.style={color=\tikzpeople@skin!80,decoration={zigzag,segment length=\scalingfactor*.8pt,amplitude=\scalingfactor*.25pt},decorate,line width=\scalingfactor*.05pt}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@duck@painttorso}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[feathers]
+ (-3.5 pt,-4.2pt) .. controls (-2pt,-6.2pt) and (3pt,-5.2pt) ..
+ ( 4.3pt,-3.7pt);
+ \draw[feathers]
+ (-4.2pt,-5.7pt) .. controls (-2pt,-7.7pt) and (3pt,-6.7pt) ..
+ (4.7pt, -4.9pt);
+ \draw[feathers]
+ (-4.3pt,-7.2pt) .. controls (-2pt,-9.2pt) and (3pt,-8.2pt) ..
+ (5pt, -6.2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@duck@paintbill}{
+ \path
+ (263:1.6pt) coordinate (tikzpeople@bill1) +(0,.12pt) coordinate
+ (tikzpeople@bill2) +(0,-.12pt) coordinate (tikzpeople@bill3) (340:3pt)
+ ++(350:1.5pt) coordinate (tikzpeople@bill4) +(0,.12pt) coordinate
+ (tikzpeople@bill5) +(0,-.12pt) coordinate (tikzpeople@bill6) ++(200:1.8pt)
+ coordinate (tikzpeople@bill7) +(0,.12pt) coordinate (tikzpeople@bill8)
+ +(0,-.15pt) coordinate (tikzpeople@bill9)--cycle;
+ \draw[bill]
+ (tikzpeople@bill3) to[out=320,in=190] (tikzpeople@bill6);
+ \draw[tongue]
+ (tikzpeople@bill7) to[out=5,in=215] (tikzpeople@bill4) to[out=170,in=10]
+ (tikzpeople@bill7)--cycle;
+ \draw[bill]
+ (tikzpeople@bill1) to[out=340,in=190] (tikzpeople@bill7) to[out=5,in=215]
+ (tikzpeople@bill4) to[out=0,in=0] (tikzpeople@bill6) to[out=220,in=0]
+ (tikzpeople@bill9) to[out=190,in=340] (tikzpeople@bill3) to[out=160,in=160]
+ (tikzpeople@bill1)--cycle;
+ \draw[bill]
+ (tikzpeople@bill1) to[out=340,in=190] (tikzpeople@bill7) to[out=0,in=180]
+ (tikzpeople@bill4) to[out=0,in=0] (tikzpeople@bill5) to[out=170,in=10]
+ (tikzpeople@bill8) to[out=190,in=340] (tikzpeople@bill2) to[out=160,in=160]
+ (tikzpeople@bill1)--cycle;
+ \draw[bill,line join=bevel]
+ (tikzpeople@bill2) to[out=340,in=190] (tikzpeople@bill8) to[out=10,in=170]
+ (tikzpeople@bill5) to[out=160,in=330] (340:3pt) to[out=180,in=0] (337:1.7pt)
+ to[out=180,in=0,in looseness=1.2] (tikzpeople@bill2)--cycle;
+}
+
+\newcommand{\tikzpeople@duck@colors}{
+ skin/200/{-1/-.6}, hair/160/{-.75/.8}, bill/20/{.6/.5}, tongue/0/{.9/.42}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.graduate.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.graduate.sty
new file mode 100644
index 0000000000..127fd850fc
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.graduate.sty
@@ -0,0 +1,103 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{stripes}
+
+\newcommand{\tikzpeople@graduate@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@graduate@paintundershirt
+ \tikzpeople@graduate@paintstripes
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@graduate@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@graduate@paintstripes}{
+ \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);
+ \draw[stripes]
+ (1.5pt,-9.5pt) .. controls (0.7pt,-6pt) and (-1pt,-4pt) ..
+ (-2.5pt,-2pt) -- (-3.8pt,-2pt) .. controls (-3.2pt,-4pt) and
+ (-0.7pt,-6pt) .. (0pt,-9.5pt) -- cycle;
+ \draw[stripes]
+ (2.3 pt,-2pt) .. controls (3pt,-5pt) and (3pt,-6.5pt) ..
+ (2.9 pt,-9.5pt) -- (3.9 pt,-9.5pt) .. controls (4pt,-6.5pt) and
+ (4pt,-5pt) .. (3.3pt,-2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@graduate@paintundershirt}{
+ \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);
+ \draw[undershirt]
+ (-3 pt,-2 pt) .. controls (-0.1pt,-3 pt) and ( 1.2pt,-6 pt) ..
+ ( 2.2pt,-8 pt) .. controls ( 2.3pt,-6 pt) and ( 2.2pt,-4 pt) ..
+ ( 2 pt,-2 pt) -- cycle;
+ \end{scope}
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-4.0pt,-8.0pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5.0pt,-7.0pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4.0pt,-8.0pt);
+}
+
+\newcommand{\tikzpeople@graduate@painthat}{
+ \draw[hat]
+ (175:3pt) .. controls ++(0.5pt,0.5pt) and (1pt,0.5pt) ..
+ (1.5pt,0pt) .. controls (1.7pt,0.5pt) and (25:2.8pt) ..
+ (20:3pt) -- +(0pt,2pt) -- (175:3pt |- 0,3pt) -- cycle;
+ \draw[hat]
+ (4.4pt,3.6pt) -- (-1.5pt,4pt) -- (-4.3pt,2.5pt) -- (2pt,2pt);
+ \draw[color=\tikzpeople@hat\if@tikzpeople@saturated\else!80\fi,line width=0.15*\scalingfactor,cap=round]
+ (0pt,3.2pt) -- (-3.4pt,2.5pt) arc (90:180:0.2pt) -- (-3.5pt,-0.5pt);
+ \draw[hat]
+ (-3.6pt,-0.5pt) -- (-3.7pt,-1.5pt) .. controls (-3.5pt,-1.6pt) ..
+ (-3.3pt,-1.5pt) --
+ (-3.4pt,-0.5pt);
+ \draw[hat]
+ (-3.5pt,-0.5pt) circle (0.25pt);
+}
+
+\newcommand{\tikzpeople@graduate@definecolors}{
+ \definecolor{shirt}{rgb}{0,0,0}
+ \definecolor{hat}{rgb}{0,0,0}
+ \definecolor{undershirt}{RGB}{232,232,232}
+ \definecolor{stripes}{rgb}{0.16,0.55,0.31}
+}
+\newcommand{\tikzpeople@graduate@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ stripes/.style={color=\tikzpeople@stripes,top color=\tikzpeople@stripes!70, bottom color=\tikzpeople@stripes,shading angle=45}
+ }
+ \else
+ \tikzset{
+ stripes/.style={color=\tikzpeople@stripes!80,top color=\tikzpeople@stripes!40, bottom color=\tikzpeople@stripes!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@graduate@colors}{
+ shirt/200/{-1/-.9}, hair/180/{-.75/.9}, hat/160/{-.75/1.3}, skin/20/{.5/.75},
+ undershirt/0/{.4/-.1}, stripes/340/{.8/-.7,0/-1.3}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.groom.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.groom.sty
new file mode 100644
index 0000000000..2bcc815842
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.groom.sty
@@ -0,0 +1,122 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{tie}
+
+\newcommand{\tikzpeople@groom@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@groom@paintshirtdetails
+ {
+ \pgftransformshift{\pgfpoint{0}{-.8pt}}
+ \tikzpeople@person@paintrighthorn
+ }
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@groom@painthat
+ \tikzpeople@person@paintgoatee
+ {
+ \pgftransformshift{\pgfpoint{0}{-1.3pt}}
+ \tikzpeople@person@paintlefthorn
+ }
+ {
+ \pgftransformshift{\pgfpoint{0}{.5pt}}
+ \tikzpeople@person@painthalo
+ }
+}
+
+\newcommand{\tikzpeople@groom@paintshirtdetails}{
+ \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);
+ \draw[shirt,shading angle=-45]
+ (200:4.5pt) .. controls +(300:4pt) .. (-.2pt,-7.8pt) .. controls
+ +(320:.5pt) .. (2pt,-8.5pt) .. controls +(30:.7pt) .. (3.5pt,-7pt) ..
+ controls +(89:2pt) .. (330:3.3pt);
+ \draw[undershirt]
+ (200:3pt) .. controls +(300:4pt) .. (2pt,-8.5pt) .. controls +(85:4pt) ..
+ (310:3pt);
+ \draw[skin] (240:3pt) -- (.4pt,-3.7pt) -- (311:3pt) -- cycle;
+ \draw[tie]
+ (.4pt,-3.8pt) .. controls +(165:1pt) .. ++(-1.4pt,.2pt) .. controls
+ +(310:.5pt) .. ++(.3pt,-.8pt) .. controls +(20:.75pt) .. (.4pt,-3.8pt) ..
+ controls +(32:1.2pt) .. ++(1.3pt,.7pt) .. controls +(270:.5pt) ..
+ ++(.2pt,-.8pt) .. controls +(180:1pt) .. (.4pt,-3.8pt);
+ \draw[tie] (.4pt,-3.8pt) circle (.2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@groom@painthat}{
+ \begin{scope}
+ \pgftransformrotate{10}
+ \path[hat]
+ (30:3pt) ++(0pt,3pt) coordinate (tikzpeople@tmp)
+ (150:3pt) to[out=85,in=275] ++(0pt,3pt) to[out=10,in=170] (tikzpeople@tmp)
+ to[out=265,in=95] (30:3pt) --cycle;
+ \begin{scope}
+ \clip
+ (30:3pt) ++(0pt,3pt) coordinate (tikzpeople@tmp) (150:3pt) to[out=85,in=275]
+ ++(0pt,3pt) to[out=10,in=170] (tikzpeople@tmp) to[out=265,in=95] (30:3pt) --cycle;
+ \path[hatwrap]
+ (30:3pt) ++(0pt,1.3pt) coordinate (tikzpeople@tmp) (150:3pt) ++(0pt,.7pt)
+ coordinate (tikzpeople@tmp2) (150:3pt) ++(0pt,1.5pt) to[out=355,in=185] (tikzpeople@tmp) --
+ ++(0pt,-.7pt) to[out=185,in=355] (tikzpeople@tmp2) --cycle;
+ \end{scope}
+ \end{scope}
+ \begin{scope}
+ \pgftransformrotate{4}
+ \begin{scope}
+ \pgftransformshift{\pgfpoint{-.05pt}{.075pt}}
+ \path[hatrim]
+ (170:3pt) ++(-.5pt,1.75pt) coordinate (tikzpeople@tmp) arc (255:291:11pt) arc
+ (111:-69:.1pt) arc (291:253:11pt) to[out=163, in= 163,in looseness=3]
+ (tikzpeople@tmp);
+ \end{scope}
+ \path[hat]
+ (25:3pt) to[out=170,in=10] (160:3pt) arc (160:170:3pt)
+ to[out=180,in=160,looseness=2] ++(-.5pt,1.75pt) arc (255:291:11pt)
+ to[out=10,in=10] (25:3pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@groom@definecolors}{
+ \definecolor{shirt}{rgb}{0,0,0}
+ \definecolor{hat}{rgb}{0,0,0}
+ \definecolor{undershirt}{RGB}{232,232,232}
+ \definecolor{tie}{RGB}{194,0,0}
+}
+
+\newcommand{\tikzpeople@groom@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ hatrim/.style ={color=\tikzpeople@hat!60,top color=\tikzpeople@hat!30, bottom color=\tikzpeople@hat!60,shading angle=90},
+ hatwrap/.style={color=\tikzpeople@hat!80,top color=\tikzpeople@hat!60, bottom color=\tikzpeople@hat!80,shading angle=45},
+ tie/.style ={color=\tikzpeople@tie,inner color=\tikzpeople@tie!80, outer color=\tikzpeople@tie}
+ }
+ \else
+ \tikzset{
+ hatrim/.style ={color=\tikzpeople@hat!40,top color=\tikzpeople@hat!10, bottom color=\tikzpeople@hat!40,shading angle=90},
+ hatwrap/.style={color=\tikzpeople@hat!60,top color=\tikzpeople@hat!40, bottom color=\tikzpeople@hat!60,shading angle=45},
+ shirt/.style ={color=\tikzpeople@shirt!80,top color=\tikzpeople@shirt!50, bottom color=\tikzpeople@shirt!80,shading angle=45},
+ tie/.style ={color=\tikzpeople@tie!80,inner color=\tikzpeople@tie!60, outer color=\tikzpeople@tie!80}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@groom@colors}{
+ shirt/200/{-.75/-.8}, hair/160/{-.7/.9}, hat/20/{.3/2}, skin/0/{.5/.7},
+ undershirt/340/{.25/-.5},tie/180/{-.15/-.25}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.guard.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.guard.sty
new file mode 100644
index 0000000000..d90baca43a
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.guard.sty
@@ -0,0 +1,97 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+\tikzpeople@addcolorkey{collar}
+\tikzpeople@addcolorkey{lining}
+
+\newcommand{\tikzpeople@guard@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@person@painthead
+ \tikzpeople@guard@paintcollar
+ \tikzpeople@guard@paintshirtdetails
+ \tikzpeople@guard@painthat
+}
+
+\newcommand{\tikzpeople@guard@paintshirtdetails}{
+ \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) (205:3.1pt) arc (205:335:3.1pt) to[out=200,in=340] (205:3.1pt) --cycle;
+ \draw[lining,postaction={
+ decoration={
+ markings,
+ mark=at position 0.1 with {\coordinate (tikzpeople@tmp1) at (0,\if@tikzpeople@mirrored\else-\fi.4pt*\scalingfactor);},
+ mark=at position 0.23 with {\coordinate (tikzpeople@tmp2) at (0,\if@tikzpeople@mirrored\else-\fi.4pt*\scalingfactor);},
+ mark=at position 0.50 with {\coordinate (tikzpeople@tmp3) at (0,\if@tikzpeople@mirrored\else-\fi.4pt*\scalingfactor);},
+ mark=at position 0.62 with {\coordinate (tikzpeople@tmp4) at (0,\if@tikzpeople@mirrored\else-\fi.4pt*\scalingfactor);},
+ mark=at position 0.75 with {\coordinate (tikzpeople@tmp5) at (0,\if@tikzpeople@mirrored\else-\fi.4pt*\scalingfactor);};
+ },decorate
+ }] (2pt,-8.7pt) to[out=90,in=290] (290:3.6pt) -- (300:3.4pt) -- ++(102:0.6pt);
+ \draw[details] (tikzpeople@tmp1) circle (0.2pt);
+ \draw[details] (tikzpeople@tmp2) circle (0.2pt);
+ \draw[details] (tikzpeople@tmp3) circle (0.2pt);
+ \draw[details] (tikzpeople@tmp4) circle (0.2pt);
+ \draw[details] (tikzpeople@tmp5) circle (0.2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@guard@paintcollar}{
+ \draw[collar] (225:3pt) ++(-0.06pt,-0.5pt) arc (225:320:3.1pt and 2.5pt) -- ++(-0.06pt,0.6pt) arc (320:225:3pt and 2.5pt) -- cycle;
+ \draw[lining] (225:3pt) ++(-0.06pt,-0.5pt) arc (225:320:3.1pt and 2.5pt);
+}
+
+\newcommand{\tikzpeople@guard@painthat}{
+ \begin{scope}
+ \pgftransformrotate{10}
+ \draw[hat] (215:3pt) arc (200:0:2.75pt and 2.4pt) .. controls (3.5pt,0pt) ..
+ (3.2pt,4pt) .. controls (3.2pt,8pt) and (-3.2pt,8pt) .. (-3.2pt,4pt) ..
+ controls (-3.5pt,0pt) and (-3.5pt,-1pt) .. (215:3pt);
+ \begin{scope}
+ \clip (0pt,0pt) circle (3pt);
+ \draw[color=\tikzpeople@details, line width=0.2*\scalingfactor,cap=round, dash pattern=on 0.4*\scalingfactor off 0.23*\scalingfactor]
+ (205:2.8pt) to[out=-40,in=230] (-30:3pt);
+ \end{scope}
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@guard@definecolors}{
+ \definecolor{shirt}{rgb}{0.62,0.1,0}
+ \definecolor{hat}{rgb}{0,0,0}
+ \definecolor{collar}{rgb}{0.29,0.29,0.29}
+ \definecolor{details}{rgb}{1,0.82,0}
+ \definecolor{lining}{rgb}{0.9,0.9,0.9}
+}
+\newcommand{\tikzpeople@guard@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ collar/.style ={color=\tikzpeople@collar,top color=\tikzpeople@collar!70, bottom color=\tikzpeople@collar,shading angle=45},
+ details/.style={color=\tikzpeople@details, top color=\tikzpeople@details!70, bottom color=\tikzpeople@details, shading angle=45},
+ lining/.style ={color=\tikzpeople@lining}
+ }
+ \else
+ \tikzset{
+ collar/.style ={color=\tikzpeople@collar!80,top color=\tikzpeople@collar!40, bottom color=\tikzpeople@collar!80,shading angle=45},
+ details/.style={color=\tikzpeople@details!80, top color=\tikzpeople@details!40, bottom color=\tikzpeople@details!80, shading angle=45},
+ lining/.style ={color=\tikzpeople@lining}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@guard@colors}{
+ shirt/200/{-.75/-1}, hat/160/{-.75/1.3}, skin/20/{.5/.7}, collar/0/{.2/.1},
+ details/180/{.45/-.4,-.5/.3}, lining/340/{.4/-.8}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.jester.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.jester.sty
new file mode 100644
index 0000000000..1210554417
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.jester.sty
@@ -0,0 +1,107 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+\tikzpeople@addcolorkey{pattern}
+
+\newcommand{\tikzpeople@jester@paint}{
+ {
+ \tikzpeople@person@paintrighthorn
+ }
+ \tikzpeople@person@paintshirt
+ \tikzpeople@jester@paintshirtdetails
+ \tikzpeople@person@painthead
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@painthair
+ \tikzpeople@jester@painthat
+ {
+ \tikzpeople@person@paintlefthorn
+ }
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@jester@paintshirtdetails}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \coordinate (tikzpeople@tmp) at (2pt,.4pt);
+ \path (-10.5pt,-4pt)coordinate (tikzpeople@tmp1)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp2) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp3) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp4)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp5) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp6) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp7)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp8) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp9) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp10)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp11);
+ \path (-7pt,-12pt) coordinate (tikzpeople@tmp12)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp13) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp14) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp15)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp16) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp17) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp18)
+ ++(tikzpeople@tmp) coordinate (tikzpeople@tmp19) ++(tikzpeople@tmp) coordinate (tikzpeople@tmp20);
+ \fill[pattern] (tikzpeople@tmp2)
+ to[in=100,out=300] (tikzpeople@tmp13) to[in=260,out=50] (tikzpeople@tmp6) to[in=100,out=300] (tikzpeople@tmp17)
+ to[in=260,out=50] (tikzpeople@tmp10) -- (tikzpeople@tmp11) to[in=50,out=260] (tikzpeople@tmp18)
+ to[in=300,out=100] (tikzpeople@tmp7) to[in=50,out=260] (tikzpeople@tmp14) to[in=300,out=100] (tikzpeople@tmp3) --
+ (tikzpeople@tmp4) to[in=100,out=300] (tikzpeople@tmp15) to[in=260,out=50] (tikzpeople@tmp8)
+ to[in=100,out=300] (tikzpeople@tmp19) -- (tikzpeople@tmp20) to[in=300,out=100] (tikzpeople@tmp9)
+ to[in=50,out=260] (tikzpeople@tmp16) to[in=300,out=100] (tikzpeople@tmp5) to[in=50,out=260](tikzpeople@tmp12)
+ to[in=300,out=100](tikzpeople@tmp1) --cycle;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@jester@painthat}{
+ \begin{scope}
+ \pgftransformrotate{10}
+ \draw[hat]
+ (180:3.2pt) to[out=60,in=60] ++(91:3pt) to[out=240,in=90] ++(271:.9pt)
+ to[out=270,in=85] ++(268:.9pt) coordinate (tikzpeople@tmp1) to[out=130,in=170]
+ ++(73:4pt) to[out=350,in=180] (.5pt,3.3pt) to[out=0,in=200] ++(45:2.5pt)
+ to[out=20,in=80] ++(290:4pt) coordinate (tikzpeople@tmp2) to[out=100,in=75]
+ ++(120:2.1pt) to[out=255,in=100] (0:3.1pt) to[out=170,in=10] (180:3.1pt);
+ \path[pattern]
+ (0:3.2pt) ++(0,-.2pt) to[out=170,in=10] ++(180:6.4pt) to[out=110,in=250]
+ ++(0,1.2pt) to[out=10,in=170] ++(0:6.4pt) to[out=290,in=70] ++(0,-1.22pt)
+ --cycle;
+ \begin{scope}
+ \clip (tikzpeople@tmp1) circle (.4pt) (tikzpeople@tmp2) circle (.4pt);
+ \path[details] (tikzpeople@tmp1) ++(-.15pt,.15pt) circle (.7pt);
+ \path[details] (tikzpeople@tmp2) ++(-.15pt,.15pt) circle (.7pt);
+ \end{scope}
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@jester@definecolors}{
+ \definecolor{shirt}{RGB}{100,187,41}
+ \definecolor{pattern}{RGB}{208,48,0}
+ \definecolor{hat}{RGB}{100,187,41}
+ \definecolor{details}{RGB}{225,87,0}
+}
+\newcommand{\tikzpeople@jester@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ pattern/.style={color=\tikzpeople@pattern,top color=\tikzpeople@pattern!70, bottom color=\tikzpeople@pattern,shading angle=45},
+ details/.style={color=\tikzpeople@details,inner color=\tikzpeople@details!50, outer color=\tikzpeople@details}
+ }
+ \else
+ \tikzset{
+ pattern/.style={color=\tikzpeople@pattern!80,top color=\tikzpeople@pattern!40, bottom color=\tikzpeople@pattern!80,shading angle=45},
+ details/.style={color=\tikzpeople@details,inner color=\tikzpeople@details!30, outer color=\tikzpeople@details!90}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@jester@colors}{
+ shirt/200/{-1/-1}, hat/40/{.7/1.9}, skin/20/{.6/.9},
+ details/150/{.85/1.45,-1.05/1.1}, pattern/0/{-.4/1.1,.9/-.2},
+ hair/180/{-.6/.75}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.judge.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.judge.sty
new file mode 100644
index 0000000000..c1539ee9dd
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.judge.sty
@@ -0,0 +1,116 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{hairshadow}
+
+\newcommand{\tikzpeople@judge@paint}{
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@judge@paintlefthair
+ \tikzpeople@person@paintshirt
+ \tikzpeople@judge@paintundershirt
+ \tikzpeople@person@painthead
+ \tikzpeople@judge@paintrighthair
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@judge@definecolors}{
+ \definecolor{shirt}{RGB}{0,0,0}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.9}
+ \definecolor{hair}{RGB}{204,161,107}
+ \definecolor{hairshadow}{RGB}{186, 137, 55}
+}
+
+\newcommand{\tikzpeople@judge@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ hairshadow/.style={color=\tikzpeople@hairshadow}
+ }
+ \else
+ \tikzset{
+ hairshadow/.style={color=\tikzpeople@hairshadow}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@judge@paintlefthair}{
+ \draw[hair,join=bevel, shading angle=45]
+ (25:2.7pt) to[out=330,in=80,out looseness=.5] (3.3pt,-3pt) -- (2pt,-3pt);
+ \path[postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.03 and 1 step .76pt*\scalingfactor with {\pgftransformscale{\scalingfactor}
+ \if@tikzpeople@mirrored
+ \pgftransformyscale{-1}
+ \fi
+ \path[fill=\tikzpeople@hairshadow]
+ (.39pt,-.06pt) ellipse
+ (.39pt and .27pt + 0.02*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number});
+ \path[fill=\tikzpeople@hair\if@tikzpeople@saturated!80\else!50\fi,draw=\tikzpeople@hairshadow]
+ (.39pt,0pt) ellipse
+ (.39pt and .27pt +0.02*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number});
+ }
+ }] (25:2.7pt) to[out=320,in=80,out looseness=.5] (3.3pt,-3pt);
+}
+
+\newcommand{\tikzpeople@judge@paintrighthair}{
+ \fill[hairshadow]
+ (10:3.05pt) arc (10:135:3.05pt) -- (-1pt,.4pt)
+ to[out=60,in=160,out looseness=1.4] (.9pt,1pt)
+ to[out=40,in=95,out looseness=1.4] (10:3.05pt);
+ \path[decorate, decoration={markings,
+ mark=at position .165 with {\coordinate (tikzpeople@tmp1) at (0,\if@tikzpeople@mirrored -1*\fi\scalingfactor*.2pt);},
+ mark=at position .330 with {\coordinate (tikzpeople@tmp2) at (0,\if@tikzpeople@mirrored -1*\fi\scalingfactor*.2pt);},
+ mark=at position .495 with {\coordinate (tikzpeople@tmp3) at (0,\if@tikzpeople@mirrored -1*\fi\scalingfactor*.2pt);},
+ mark=at position .660 with {\coordinate (tikzpeople@tmp4) at (0,\if@tikzpeople@mirrored -1*\fi\scalingfactor*.2pt);},
+ mark=at position .825 with {\coordinate (tikzpeople@tmp5) at (0,\if@tikzpeople@mirrored -1*\fi\scalingfactor*.2pt);},
+ }] (150:3.1pt) to[out=240,in=120,in looseness=.3] (220:4.8pt);
+ \draw[hair,join=bevel, shading angle=-45, postaction={decorate},decoration={
+ markings,
+ mark=between positions 0.614 and 0.82 step .84pt*\scalingfactor with {
+ \pgftransformscale{\scalingfactor}
+ \if@tikzpeople@mirrored
+ \pgftransformyscale{-1}
+ \fi
+ \fill[\tikzpeople@hairshadow]
+ (-.06pt,0) to[out=70,in=190+2*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number},out looseness=.8]
+ ++(46.5+2*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number}:3.7pt-.27pt*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number})
+ to[out=190+2*\pgfkeysvalueof{/pgf/decoration/mark info/sequence number},in=70,in looseness=.8] (.05pt,0);
+ \path[fill=\tikzpeople@hairshadow] (.33pt,0pt) circle (.43pt);
+ \path[fill=\tikzpeople@hair\if@tikzpeople@saturated!80\else!50\fi,draw=\tikzpeople@hairshadow]
+ (.31pt,-.025pt) circle (.37pt);
+ }
+ }] (10:3pt) to[out=90,in=300] (30:3.1pt) arc (30:150:3.1pt) to[out=190,in=140] (tikzpeople@tmp1)
+ to[out=150,in=135] (tikzpeople@tmp2) to[out=155,in=140] (tikzpeople@tmp3) to[out=160,in=145] (tikzpeople@tmp4)
+ to[out=165,in=150] (tikzpeople@tmp5) to[out=170,in=120] (220:4.8pt) to [out=300,in=160,out looseness=1] (260:4.8pt)
+ to [out=100,in=260,out looseness=1] (-1pt,.6pt) to [out=80,in=160,out looseness=1.4] (.9pt,1.4pt)
+ to [out=40,in=92,in looseness=1.1,out looseness=1.6] (10:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@judge@paintundershirt}{
+ \begin{scope}
+ \draw[undershirt] (320:3pt) to[out=320,in=0, out looseness=1.5] (295:6.8pt)
+ to[out=290,in=310,looseness=1.3] ++(-1.1pt,-.7pt)
+ to[out=250,in=300,looseness=1.4] ++(-1.2pt,-.2pt)
+ to[out=220,in=280,looseness=1.4] ++(-1.2pt,.3pt)
+ to[out=220,in=260,looseness=1.4] ++(-1.1pt,.5pt)
+ to[out=190,in=230, in looseness=1.3] (235:3pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@judge@colors}{
+ shirt/200/{-1/-1},hair/160/{-.5/1.4},hairshadow/20/{.25/1.3}, skin/0/{.25/.4},
+ undershirt/180/{-.6/-.6}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.maninblack.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.maninblack.sty
new file mode 100644
index 0000000000..d9e5136f9b
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.maninblack.sty
@@ -0,0 +1,119 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{tie}
+\tikzpeople@addcolorkey{glasses}
+\tikzpeople@addcolorkey{earpiece}
+
+\newcommand{\tikzpeople@maninblack@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@maninblack@paintundershirt
+ \tikzpeople@maninblack@paintopenshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@maninblack@paintglasses
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@maninblack@definecolors}{
+ \definecolor{shirt}{rgb}{0,0,0}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.9}
+ \definecolor{tie}{rgb}{0,0,0}
+ \definecolor{hair}{rgb}{0,0,0}
+ \definecolor{earpiece}{rgb}{0.9,0.9,0.9}
+ \definecolor{glasses}{rgb}{0,0,.1}
+}
+
+\newcommand{\tikzpeople@maninblack@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ tie/.style ={color=\tikzpeople@tie,top color=\tikzpeople@tie!70, bottom color=\tikzpeople@tie,shading angle=45},
+ glasses/.style ={color=\tikzpeople@glasses,top color=\tikzpeople@glasses!70, bottom color=\tikzpeople@glasses,shading angle=45},
+ earpiece/.style ={color=\tikzpeople@earpiece,top color=\tikzpeople@earpiece!70, bottom color=\tikzpeople@earpiece,shading angle=45},
+ earpiececable/.style={color=\tikzpeople@earpiece,decoration={coil,segment length=\scalingfactor*.12pt,amplitude=\scalingfactor*.1pt, pre length=\scalingfactor*.1pt},decorate,line width=\scalingfactor*.05pt}
+ }
+ \else
+ \tikzset{
+ tie/.style ={color=\tikzpeople@tie!80,top color=\tikzpeople@tie!40, bottom color=\tikzpeople@tie!80,shading angle=45},
+ glasses/.style ={color=\tikzpeople@glasses!90,top color=\tikzpeople@glasses!50, bottom color=\tikzpeople@glasses!90,shading angle=45},
+ earpiece/.style ={color=\tikzpeople@earpiece!80,top color=\tikzpeople@earpiece!40, bottom color=\tikzpeople@earpiece!80,shading angle=45},
+ earpiececable/.style={color=\tikzpeople@earpiece!80,decoration={coil,segment length=\scalingfactor*.12pt,amplitude=\scalingfactor*.1pt, pre length=\scalingfactor*.1pt},decorate,line width=\scalingfactor*.05pt}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@maninblack@paintglasses}{
+ \draw[glasses]
+ (170:1.1pt) -- ++(173:1.8pt) -- ++(270:.1pt) to[out=340, in=140] (210:1pt);
+ \draw[glasses]
+ (15:3pt) to[out=200,in=355] (170:1.1pt) to[out=280,in=180] ++(290:1.05pt)
+ to[out=350,in=180,out looseness=3] (1.3pt,.1pt)
+ to[out=0,in=180,in looseness=2] ++(310:1pt) to[out=0,in=230,in looseness=.5]
+ (357:3pt) arc (-3:15:3pt);
+ \begin{scope}
+ \clip (0pt,0pt) circle (3pt);
+ \draw[earpiececable]
+ (190:2.1pt) ++(0,-.2pt) to[out=270,in=120] (240:3.2pt);
+ \draw[earpiece] (190:2.1pt) ellipse (.1pt and .2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@maninblack@paintundershirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[undershirt]
+ (-2.2pt,-1pt) -- (2pt,-8.5pt) -- (2pt,-1pt);
+ \draw[tie]
+ (0pt,-2.5pt) -- (0.8pt,-3.2pt) -- (1.1pt,-6 pt) -- (1.7pt,-8.7pt) --
+ (2pt,-8.7pt) -- (2 pt,-5.5pt) -- (1 pt,-3.1pt) -- (1.2pt,-2 pt) --
+ (0.3pt,-2 pt);
+ \draw[undershirt,shading angle=-45]
+ (0.5pt,-3pt) -- (0.1pt,-3.7pt) -- (-1pt,-3pt);
+ \draw[undershirt,shading angle=-45]
+ (0.9pt,-2.5pt) -- (1.8pt,-3.2pt) -- (2.2pt,-2.2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@maninblack@paintopenshirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[shirt,shading angle=-45]
+ (-2pt,-2.6 pt) -- (-1.5pt,-5pt) -- (-0.5pt,-5pt) -- (-1.1pt,-5.2pt) --
+ (1.6pt,-8.75pt) -- (1.9pt,-8.75pt) .. controls (1.7pt,-7pt) and
+ (-0pt,-3.2pt) .. (-1.6pt,-2pt) -- cycle;
+ \draw[shirt,shading angle=-45]
+ (1.9pt,-2pt) .. controls (1.9pt,-1.8pt) and (1.9pt,-8.5pt) ..
+ (1.9pt,-8.75pt) -- (2.3pt,-8.5pt) -- (3.2pt,-5.2pt) --
+ (2.6pt,-5.2 pt) -- (3.2pt,-5 pt) -- (2.3pt,-2.3pt) -- cycle;
+ \end{scope}
+ \draw[color=\tikzpeople@shirt!80]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+}
+
+\newcommand{\tikzpeople@maninblack@colors}{
+ shirt/210/{-1/-.75},hair/150/{-.4/1.3},skin/0/{.4/.5},earpiece/170/{-.68/.74},
+ undershirt/190/{0/-.2}, tie/330/{.32/-.7}, glasses/30/{.6/.9}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.mexican.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.mexican.sty
new file mode 100644
index 0000000000..590635cec4
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.mexican.sty
@@ -0,0 +1,114 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{ringtop}
+\tikzpeople@addcolorkey{ringmid}
+\tikzpeople@addcolorkey{ringbot}
+
+\newcommand{\tikzpeople@mexican@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@mexican@paintrings
+ \tikzpeople@person@painthead
+ \tikzpeople@mexican@painthair
+ \tikzpeople@mexican@painthat
+ \tikzpeople@person@paintgoatee
+}
+
+\newcommand{\tikzpeople@mexican@definecolors}{
+ \definecolor{hair}{rgb}{0,0,0}
+ \definecolor{shirt}{rgb}{0,0.3,0}
+ \definecolor{ringtop}{rgb}{1,1,0}
+ \definecolor{ringmid}{rgb}{0,0.8,1}
+ \definecolor{ringbot}{rgb}{1,0,0}
+ \definecolor{hat}{rgb}{0.7,0,0}
+}
+
+\newcommand{\tikzpeople@mexican@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ ringtop/.style ={top color=\tikzpeople@ringtop!80, bottom color=\tikzpeople@ringtop,shading angle=45},
+ ringmid/.style ={top color=\tikzpeople@ringmid!80, bottom color=\tikzpeople@ringmid,shading angle=45},
+ ringbot/.style ={top color=\tikzpeople@ringbot!80, bottom color=\tikzpeople@ringbot,shading angle=45},
+ innerhat/.style={color=\tikzpeople@hat,top color=\tikzpeople@hat!80, bottom color=\tikzpeople@hat,shading angle=45}
+ }
+ \else
+ \tikzset{
+ ringtop/.style ={top color=\tikzpeople@ringtop!80, bottom color=\tikzpeople@ringtop,shading angle=45},
+ ringmid/.style ={top color=\tikzpeople@ringmid!80, bottom color=\tikzpeople@ringmid,shading angle=45},
+ ringbot/.style ={top color=\tikzpeople@ringbot!80, bottom color=\tikzpeople@ringbot,shading angle=45},
+ innerhat/.style={color=\tikzpeople@hat!80,top color=\tikzpeople@hat!60, bottom color=\tikzpeople@hat,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@mexican@painthair}{
+ \draw[hair]
+ (-3.5pt, 1 pt) .. controls (-3.3pt, 0pt) and (-4.3pt,-1.1pt) ..
+ (-4.5pt,-1.3pt) .. controls (-3.8pt,-2pt) and (-2 pt,-2.9pt) ..
+ (-1.2pt,-3.3pt) .. controls (-1.6pt,-2pt) and (-1.6pt, 0 pt) ..
+ (-1.3pt, 1 pt);
+}
+
+\newcommand{\tikzpeople@mexican@painthat}{
+ {
+ \pgftransformrotate{4}
+ \draw[hat] (-0.3pt,2pt) ellipse (6.4pt and 2.2pt);
+ \draw[innerhat] (-0.3pt,2.5pt) ellipse (5.4pt and 1.3pt);
+ }{
+ \pgftransformrotate{1}
+ \draw[hat]
+ (-3 pt,2.3pt) .. controls (-3 pt,4.5pt) and (-1.4pt,6.7pt) ..
+ (-0.7pt,6.7pt) .. controls ( 0.2pt,6.7pt) and ( 2.3pt,3.5pt) ..
+ ( 1.9pt,2.7pt) .. controls ( 1.2pt,2 pt) and (-2.3pt,1.8pt) ..
+ (-3 pt,2.3pt);
+ }
+}
+
+\newcommand{\tikzpeople@mexican@paintrings}{
+ \begin{scope}
+ \clip (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+ \shade[ringtop]
+ (-3.4 pt,-4pt) .. controls (-2.0pt,-6.0pt) and ( 3pt,-5 pt) ..
+ ( 3.85pt,-3.5pt) .. controls ( 3.6pt,-3.1pt) ..
+ ( 3.4 pt,-3 pt) .. controls ( 3 pt,-4.2pt) and (-2pt,-5.3pt) .. (-3pt,-3.4pt);
+ \draw[color=\tikzpeople@ringtop,dash pattern=on 0 off 0.2*\scalingfactor,line width=0.08*\scalingfactor,line cap=round]
+ (-3.4 pt,-4.2pt) .. controls (-2pt,-6.2pt) and (3pt,-5.2pt) ..
+ ( 3.85pt,-3.7pt);
+
+ \shade[ringmid]
+ (-4pt,-5.4pt) .. controls (-2pt,-7.5pt) and (3pt,-6.5pt) ..
+ (4.6pt,-4.65pt) -- (4.25 pt,-3.95pt) .. controls (3pt,-5.7pt) and
+ (-2pt,-6.7pt) .. (-3.8pt,-4.7pt);
+ \draw [color=\tikzpeople@ringmid,dash pattern=on 0 off 0.2*\scalingfactor,line width=0.08*\scalingfactor,line cap=round]
+ (-4pt,-5.6pt) .. controls (-2pt,-7.7pt) and (3pt,-6.7pt) .. (4.6pt, -4.8pt);
+
+ \shade [ringbot]
+ (-4.1pt,-6.9pt) .. controls (-2pt,-9pt) and (3pt,-8pt) .. (5pt, -5.9pt) --
+ (4.8pt,-5.15pt) .. controls (3pt,-7.2pt) and (-2pt,-8.2pt) .. (-4.1pt,-6.1pt);
+ \draw [color=\tikzpeople@ringbot,dash pattern=on 0 off 0.2*\scalingfactor,line width=0.08*\scalingfactor,line cap=round]
+ (-4.1pt,-7.1pt) .. controls (-2pt,-9.2pt) and (3pt,-8.2pt) .. (5pt, -6.1pt);
+ \end{scope}
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+}
+
+\newcommand{\tikzpeople@mexican@colors}{
+ shirt/350/{.5/0}, hat/30/{1/1.25}, hair/150/{-1.1/.5}, skin/10/{.35/.5},
+ ringtop/170/{-.9/-.25}, ringmid/190/{-1/-.7}, ringbot/210/{-1.1/-1.1}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nun.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nun.sty
new file mode 100644
index 0000000000..7898f81642
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nun.sty
@@ -0,0 +1,85 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{plaid}
+
+\newcommand{\tikzpeople@nun@paint}{
+ \tikzpeople@nun@paintshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@nun@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@nun@definecolors}{
+ \definecolor{shirt}{rgb}{0,0,0}
+ \definecolor{hat}{rgb}{0,0,0}
+ \definecolor{plaid}{RGB}{232,232,232}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+
+\newcommand{\tikzpeople@nun@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ plaid/.style={top color=\tikzpeople@plaid!70, bottom color=\tikzpeople@plaid,shading angle=45}
+ }
+ \else
+ \tikzset{
+ plaid/.style={top color=\tikzpeople@plaid!30, bottom color=\tikzpeople@plaid!90,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@nun@painthat}{
+ \begin{scope}
+ \clip(0,0) circle (3.05pt);
+ \path[plaid,draw=none]
+ ( -1.3pt, -0.1pt) .. controls (0pt,-0.1pt) and (2pt,0.2pt) ..
+ (10:3.2pt) arc (10:180:3.2pt) -- cycle;
+ \end{scope}
+ \draw[hat]
+ (15:3.05pt) arc (15:170:3.05pt) --
+ (-3.05pt, 0.2pt) .. controls (-3.3pt,-1.0pt) and (-3.3pt,-2.3pt) ..
+ (-3.2pt,-3.6pt) .. controls (-2.7pt,-4.0pt) and (-1.7pt,-4.3pt) ..
+ (-1.2pt,-4.5pt) .. controls (-1.6pt,-2.0pt) and (-1.6pt, 0.0pt) ..
+ (-1.3pt, 0.2pt) .. controls ( 0.0pt, 0.1pt) and ( 2.0pt, 0.5pt) ..
+ (15:3.05pt);
+}
+
+\newcommand{\tikzpeople@nun@paintshirt}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+ \path[shirt]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt, 0pt) ..
+ (-4pt,-8pt);
+ \path[plaid]
+ (-3.9 pt, 0.0pt) -- (-3.9pt,-5.5pt) .. controls (-2pt,-7.5pt) and
+ (3pt,-6.5pt) .. ( 4.55pt,-4.7pt) .. controls (4.45pt,-4.3pt) ..
+ ( 4.2 pt,-4.0pt) -- (4.2pt,0pt);
+ \end{scope}
+ \draw[color=\tikzpeople@shirt\if@tikzpeople@saturated\else!80\fi]
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and ( 3pt,-9pt) .. ( 5pt,-7pt) ..
+ controls ( 5pt, 0pt) and (-5pt, 0pt) .. (-4pt,-8pt);
+}
+
+\newcommand{\tikzpeople@nun@colors}{
+ shirt/190/{-1/-1.2}, hat/170/{-.65/.7}, skin/20/{.6/.9}, plaid/340/{.9/-.4,.1/.9}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nurse.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nurse.sty
new file mode 100644
index 0000000000..4d0fff06a6
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nurse.sty
@@ -0,0 +1,89 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{badge}
+\tikzpeople@addcolorkey{badgeclip}
+\tikzpeople@addcolorkey{badgename}
+\tikzpeople@addcolorkey{redcross}
+\tikzpeople@addtextkey{badgetext}{Nurse}
+
+\newcommand{\tikzpeople@nurse@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@nurse@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthairstyletwo
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@nurse@paintshirtdetails}{
+ \begin{scope}
+ \clip
+ (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[skin]
+ (245:3pt) .. controls (1pt,-4.85pt) .. (1.3pt,-4.85pt) .. controls
+ (1.7pt,-4.6pt) .. (311:3pt) -- cycle;
+ \draw[shirt,shading angle=-45]
+ (-.1pt,-7.2pt) to[out=204,in=348] (-2.5pt,-7.2pt) -- ++(270:1.3pt) arc
+ (180:360:1.2pt) --cycle;
+ \draw[color=\tikzpeople@shirt!90!black,thick]
+ (-.1pt,-7.2pt) to[out=204,in=348] (-2.5pt,-7.2pt);
+ \draw[badge]
+ (-.4pt,-7.6pt) to[out=185,in=355] (-2.1pt,-7.6pt) -- ++(270:.7pt)
+ to[out=355,in=185] (-.4pt,-8.3pt) --cycle;
+ \draw[badgeclip]
+ (-1.1pt,-7.3pt) rectangle ++(-.2pt,-.4pt);
+ \draw[draw=\tikzpeople@redcross,fill=\tikzpeople@redcross]
+ (-1.8pt,-7.8pt) -- ++(0pt,-.1pt) -- ++(-.1pt,0pt) -- ++(0pt,-.1pt) --
+ ++(.1pt,0pt) -- ++(0pt,-.1pt) -- ++(.1pt,0pt) -- ++(0pt,.1pt) --
+ ++(.1pt,0pt) -- ++(0pt,.1pt) -- ++(-.1pt,0pt) -- ++(0pt,.1pt) --cycle;
+ {
+ \pgf@xa=0.6pt*\scalingfactor
+ \pgftext[at=\pgfpoint{-1pt}{-7.95pt}]{\resizebox{\pgf@xa}{!}{\color{\tikzpeople@badgename}\if@tikzpeople@mirrored\reflectbox{\tikzpeople@badgetext}\else{\tikzpeople@badgetext}\fi}}
+ }
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@nurse@definecolors}{
+ \definecolor{shirt}{RGB}{237,113,102}
+ \definecolor{badgename}{rgb}{0,0,0}
+ \definecolor{badge}{rgb}{1,1,1}
+ \definecolor{badgeclip}{rgb}{0.4,0.4,0.4}
+ \definecolor{redcross}{rgb}{1,0,0}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+\newcommand{\tikzpeople@nurse@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ badge/.style={fill=\tikzpeople@badge,draw=\tikzpeople@badge!30!black},
+ badgeclip/.style={top color=\tikzpeople@badgeclip!70, bottom color=\tikzpeople@badgeclip,shading angle=45,rounded corners=.08*\scalingfactor}
+ }
+ \else
+ \tikzset{
+ badge/.style={fill=\tikzpeople@badge,draw=\tikzpeople@badge!30!black},
+ badgeclip/.style={top color=\tikzpeople@badgeclip!30, bottom color=\tikzpeople@badgeclip,shading angle=45,rounded corners=.08*\scalingfactor}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@nurse@colors}{
+ shirt/0/{.9/-.35}, hair/150/{-.75/.9}, badgeclip/170/{-.45/-1.2},
+ redcross/190/{-.6/-1.35}, badge/210/{-.5/-1.4}, badgename/340/{-.4/-1.35},
+ skin/20/{.6/.6}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.physician.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.physician.sty
new file mode 100644
index 0000000000..dbcbc50030
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.physician.sty
@@ -0,0 +1,104 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{stethoscope}
+\tikzpeople@addcolorkey{tube}
+
+\newcommand{\tikzpeople@physician@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@physician@paintshirtdetails
+ \tikzpeople@physician@stethoscope
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@physician@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@physician@paintshirtdetails}{
+ \begin{scope}
+ \clip (-4pt,-8pt) .. controls (-2pt,-10pt) and (3pt,-9pt) ..
+ ( 5pt,-7pt) .. controls ( 5pt, 0pt) and (-5pt,0pt) ..
+ (-4pt,-8pt);
+ \draw[skin]
+ (245:3pt) .. controls (1pt,-4.85pt) .. (1.3pt,-4.85pt) .. controls (1.7pt,-4.6pt) .. (311:3pt) -- cycle;
+ \draw[shirt,shading angle=-45] (-.1pt,-7.2pt) to[out=204,in=348] (-2.5pt,-7.2pt) -- ++(270:1.3pt) arc (180:360:1.2pt) --cycle;
+ \draw[color=\tikzpeople@shirt!90!black,thick] (-.1pt,-7.2pt) to[out=204,in=348] (-2.5pt,-7.2pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@physician@painthat}{
+ \draw[hat] (160:3pt) ++(.3pt,1.6pt) -- (160:3pt) arc (-180:0:2.85pt and 1pt) -- ++(-.3pt,1.6pt) arc (0:180:2.55pt and 1pt) arc (-180:0:2.55pt and 1pt);
+}
+
+\newcommand{\tikzpeople@physician@stethoscope}{
+ \draw[tube]
+ (234:2.9pt) ++(295:1.3pt) ++(323:1.8pt) to[out=318,in=135] ++(321:1.4pt)
+ to[in=225,out=315] ++(10:.5pt) to[out=55,in=260] ++(84:1.3pt) --
+ ++(350:.3pt) to[out=260,in=55] ++(264:1.7pt) to[out=235,in=90] ++(210:.3pt)
+ -- ++(270:3.2pt) .. controls +(270:1pt) and +(285:1pt) .. ++(-1.9pt,-.2pt)
+ to[out=105, in=292] (-.7pt,-7.4pt) -- ++(-.4pt,0) arc (180:18:.39pt)
+ to[out=288, in=105] ++(288:2pt) .. controls +(285:.7pt) and +(270:.7pt) ..
+ ++(7:1.2pt) -- ++(90:3pt) to[out=100,in=325] ++(140:.6pt) to[out=145,in=315]
+ ++(135:1pt);
+ \draw[stethoscope]
+ (234:2.9pt) ++(295:1.3pt) ++(321:2.2pt) .. controls +(323:.6pt) and
+ +(260:.6pt) .. ++(17:1.55pt) -- +(.15pt,0) .. controls +(260:.8pt) and
+ +(323:.8pt) .. ++(197:1.7pt);
+ \draw[stethoscope]
+ (234:2.9pt) to[out=270,in=135] ++(295:1.3pt) to[out=315,in=143]
+ ++(323:1.8pt) coordinate (tikzpeople@tmp) -- ++(233:.3pt) to[in=315,out=143]
+ ++(143:1.9pt) to[in=270,out=135] ++(110:2pt);
+ \draw[stethoscope]
+ (tikzpeople@tmp) ++(0,.06pt) coordinate (tikzpeople@tmp2) to[out=225,in=61] ++(233:.4pt) --
+ ++(323:.5pt) coordinate (tikzpeople@tmp) to[in=241,out=45] ++(53:.4pt) (tikzpeople@tmp)
+ to[in=225,out=61] ++(53:.4pt) --(tikzpeople@tmp2);
+ \draw[stethoscope]
+ (314:2.9pt) to[out=308,in=87] ++(307:.4pt) to[out=273,in=80] ++(263:1.6pt)
+ coordinate (tikzpeople@tmp) -- ++(353:.3pt) to[in=273,out=80] ++(83:1.7pt)
+ to[in=270,out=93] ++(120:.7pt);
+ \draw[stethoscope]
+ (tikzpeople@tmp) ++(-.04pt,.06pt) coordinate (tikzpeople@tmp2) to[out=358,in=162] ++(350:.4pt) --
+ ++(260:.5pt) coordinate (tikzpeople@tmp) to[in=358,out=162] ++(170:.4pt) --(tikzpeople@tmp2);
+}
+
+\newcommand{\tikzpeople@physician@definecolors}{
+ \definecolor{shirt}{RGB}{150,176,228}
+ \definecolor{hat}{RGB}{150,176,228}
+ \definecolor{stethoscope}{RGB}{149,153,164}
+ \definecolor{tube}{RGB}{193,75,26}
+ \definecolor{hair}{rgb}{0,0,0}
+}
+
+\newcommand{\tikzpeople@physician@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ tube/.style={color=\tikzpeople@tube,top color=\tikzpeople@tube!70, bottom color=\tikzpeople@tube,shading angle=45},
+ stethoscope/.style={color=\tikzpeople@stethoscope,top color=\tikzpeople@stethoscope!70, bottom color=\tikzpeople@stethoscope,shading angle=45}
+ }
+ \else
+ \tikzset{
+ tube/.style={color=\tikzpeople@tube!80,top color=\tikzpeople@tube!40, bottom color=\tikzpeople@tube!80,shading angle=45},
+ stethoscope/.style={color=\tikzpeople@stethoscope!80,top color=\tikzpeople@stethoscope!40, bottom color=\tikzpeople@stethoscope!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@physician@colors}{
+ shirt/340/{1/-.75}, hair/160/{-.75/.9}, hat/20/{.5/1.3},
+ stethoscope/180/{-.48/-.15}, tube/200/{-.25/-1.2}, skin/0/{.3/.6}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.pilot.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.pilot.sty
new file mode 100644
index 0000000000..80213e9c29
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.pilot.sty
@@ -0,0 +1,106 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+\tikzpeople@addcolorkey{visor}
+\tikzpeople@addcolorkey{straps}
+
+\newcommand{\tikzpeople@pilot@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@pilot@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@pilot@painthat
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@pilot@paintvisor
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@pilot@paintshirtdetails}{
+ \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);
+ \draw[details,thick]
+ (220:3pt)++(4pt,-3.5pt) .. controls +(290:1pt) and +(90:1pt) ..
+ ++(280:4pt);
+ \draw[straps,shading angle=-45]
+ (278:7pt) -- ++(16:3pt) -- ++(0,-0.8pt) -- ++(197:3pt) -- cycle;
+ \draw[straps]
+ (230:3pt) .. controls +(2pt,-3pt) and +(0,2.5pt) .. ++(2.25pt,-7pt) --
+ ++(1pt,0) .. controls +(0,2.5pt) and +(2pt,-3pt) .. +(-2.25pt,7pt) --cycle;
+ \draw[straps]
+ (300:2pt) .. controls +(2pt,-3pt) and +(0,2.5pt) .. ++(2.25pt,-7pt) --
+ ++(1pt,0) .. controls +(0,2.5pt) and +(2pt,-3pt) .. +(-2.25pt,7pt) --cycle;
+ \end{scope}
+ \draw[shirt,shading angle=-45]
+ (220:3pt) .. controls +(-0.4pt,-1.5pt) .. ++(0.5pt,-3pt) .. controls
+ +(1pt,0.5pt) .. ++(3.5pt,-0.5pt) .. controls +(1pt,1.5pt) .. ++(2.3pt,2.2pt)
+ .. controls +(135:1.5pt) .. (320:3pt);
+ \draw[details,thick]
+ (220:3pt)++(0.5pt,-3pt) .. controls +(1pt,0.5pt) .. ++(3.5pt,-0.5pt) ..
+ controls +(1pt,1.5pt) .. ++(2.3pt,2.2pt);
+ \draw[undershirt]
+ (225:3pt) -- ++(3.7pt,-2.9pt) --(311:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@pilot@paintvisor}{
+ \draw[visor,rounded corners=.4pt*\scalingfactor]
+ (155:2.5pt) to [out=40,in=170] (45:3.2pt) to [out=310,in=90] (2:3.2pt) --
+ (348:2pt) -- (40:1.3pt) -- (300:.5pt) -- (200:1.5pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@pilot@painthat}{
+ \draw[hat]
+ (5:3pt) arc (5:255:3pt) to [out=120,in=250] ++(-0.1pt,2.7pt)
+ to[out=350,in=210] (5:3pt);
+}
+
+\newcommand{\tikzpeople@pilot@definecolors}{
+ \definecolor{shirt}{rgb}{.51,0.18,0.02}
+ \definecolor{hat}{RGB}{232,232,232}
+ \definecolor{visor}{RGB}{122,150,165}
+ \definecolor{undershirt}{RGB}{99,97,96}
+ \definecolor{straps}{rgb}{0,0,0}
+ \definecolor{details}{rgb}{0.3,0.3,0.3}
+}
+
+\newcommand{\tikzpeople@pilot@definestyles}{
+ \if@tikzpeople@saturated
+ \pgfdeclareradialshading{visor}{\pgfqpoint{-15pt}{10pt}}{%
+ color(0pt)=(\tikzpeople@visor!30);
+ color(40pt)=(\tikzpeople@visor)}
+ \tikzset{
+ visor/.style ={shading=visor,color=\tikzpeople@visor},
+ details/.style={color=\tikzpeople@details},
+ straps/.style ={color=\tikzpeople@straps,top color=\tikzpeople@straps!20, bottom color=\tikzpeople@straps!50,shading angle=45}
+ }
+ \else
+ \pgfdeclareradialshading{visor}{\pgfqpoint{-15pt}{10pt}}{%
+ color(0pt)=(\tikzpeople@visor!20);
+ color(40pt)=(\tikzpeople@visor!80)}
+ \tikzset{
+ visor/.style ={shading=visor,color=\tikzpeople@visor!80},
+ details/.style={color=\tikzpeople@details!80},
+ straps/.style ={color=\tikzpeople@straps!60,top color=\tikzpeople@straps!5, bottom color=\tikzpeople@straps!20,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@pilot@colors}{
+ shirt/200/{-1/-.95}, visor/30/{.7/1.1}, hat/160/{-.75/.9}, skin/10/{.5/.6},
+ undershirt/180/{.15/-.1}, straps/350/{.8/-.5}, decoration/330/{.35/-.7}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.police.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.police.sty
new file mode 100644
index 0000000000..40534b1dfe
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.police.sty
@@ -0,0 +1,117 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{hatshield}
+\tikzpeople@addcolorkey{hatbadge}
+\tikzpeople@addcolorkey{badge}
+
+\newcommand{\tikzpeople@police@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@police@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@police@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@police@paintshirtdetails}{
+ \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);
+ \draw[shirt,color=black!85,shading angle=-45]
+ (220:3.5pt) .. controls +(0.05pt,-1.5pt) .. ++(0.5pt,-3pt) .. controls
+ +(1.3pt,0.8pt) .. ++(3pt,0.5pt) .. controls +(1pt,0.6pt) .. ++(3pt,0.8pt)
+ .. controls +(-0.5pt,0.9pt) .. (315:3.3pt);
+ \draw[undershirt]
+ (180:3pt) ++(-0.5pt,-1pt) -- (1.5pt,-6pt) -- (300:4pt)-- ++(0pt,1pt);
+ \fill[draw,color=black!85]
+ (1.6pt,-6.1pt) -- ++(0.1pt,-1.5pt) -- ++(0.05pt,.75pt);
+ \draw[color=black!85] (1.6pt,-6.1pt) -- +(1pt,5pt);
+ \draw[skin] (222:3pt) -- (267:4pt) arc (267:300:4pt) -- ++(0.5pt,2pt);
+ \end{scope}
+ \draw[badge,shading angle=-45]
+ (70:-7pt) .. controls +(0.75pt,-0.05pt) .. ++(1.5pt,0.1pt) --
+ ++(0.2pt,-0.15pt) .. controls +(-.5pt,-.5pt) .. ++(0.1pt,-.8pt) .. controls
+ +(0.5pt,-.5pt) and +(0pt,0.35pt) .. ++(-1pt,-1pt) .. controls +(0pt,0.35pt)
+ and +(-0.5pt,-0.35pt) .. ++(-.8pt,1pt) .. controls +(0.3pt,0.2pt) ..
+ ++(0pt,.5pt) -- (70:-7pt);
+}
+
+\newcommand{\tikzpeople@police@painthat}{
+ \path (160:3pt) arc (-180:-120:2.85pt and 1pt) coordinate (tikzpeople@tmp);
+ \draw[hatbottom,rounded corners=.75pt]
+ (tikzpeople@tmp) -- ++(340:1.5pt) .. controls ++(340:1pt) .. ++(10:3.8pt) ..
+ controls ++(45:.2pt) .. (20:3pt);
+ \draw[hatbottom]
+ (160:3pt) ++(0pt,1pt) -- (160:3pt) arc (-180:0:2.85pt and 1pt) --
+ ++(0pt,1pt);
+ \draw[hattop,rounded corners=.75pt]
+ (160:3pt) ++(0pt,0.5pt) arc (-180:-22:3pt and 1.05pt) -- ++(1pt,1.5pt) --
+ ++(0pt,.4pt) .. controls +(-4pt,.5pt) .. (142:4.8pt) -- ++(0pt,-0.5pt) --
+ cycle;
+ \begin{scope}
+ \clip[rounded corners=.75pt]
+ (160:3pt) ++(0pt,0.5pt) arc (-180:-22:3pt and 1.05pt) -- ++(1pt,1.5pt) --
+ ++(0pt,.4pt) .. controls +(-4pt,.5pt) .. (142:4.8pt) -- ++(0pt,-0.5pt) --
+ cycle;
+ \draw[hatbottom,nearly opaque]
+ (153:3.5pt) ++(0pt,-2pt) -- (153:3.5pt) .. controls ++(350:1.5pt) ..
+ ++(10:2.5pt) .. controls ++(335:1.2pt) .. ++(2:2.5pt) coordinate
+ (hatbadge) .. controls ++(335:1.2pt) .. ++(10:2.5pt) -- ++(0pt,-2pt);
+ \end{scope}
+ \draw[hatbadge]
+ (hatbadge) ++(0.2pt,-0.2pt) coordinate (tikzpeople@tmp) .. controls ++(190:.5pt) ..
+ ++(200:.75pt) .. controls ++(270:.75pt) .. ++(300:1pt) .. controls
+ ++(70:.5pt) .. ++(55:1.1pt) .. controls ++(135:.3pt) .. (tikzpeople@tmp);
+}
+
+\newcommand{\tikzpeople@police@definecolors}{
+ \definecolor{shirt}{rgb}{0.18,0.38,0.80}
+ \definecolor{hat}{rgb}{0.18,0.38,0.80}
+ \definecolor{badge}{rgb}{0.96,0.55,0.1}
+ \definecolor{hatbadge}{rgb}{0.82,0.82,0.82}
+ \definecolor{hatshield}{rgb}{0.031,0.09,0.19}
+ \definecolor{undershirt}{RGB}{232,232,232}
+}
+
+\newcommand{\tikzpeople@police@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ shirt/.style ={color=\tikzpeople@shirt!90,top color=\tikzpeople@shirt!90, bottom color=\tikzpeople@shirt,shading angle=45},
+ hattop/.style ={color=\tikzpeople@hat!90,top color=\tikzpeople@hat!90, bottom color=\tikzpeople@hat,shading angle=45},
+ hatbottom/.style={color=\tikzpeople@hatshield,top color=\tikzpeople@hatshield!80, bottom color=\tikzpeople@hatshield,shading angle=45},
+ badge/.style ={color=\tikzpeople@badge,top color=\tikzpeople@badge!70, bottom color=\tikzpeople@badge,shading angle=45},
+ hatbadge/.style ={color=\tikzpeople@hatbadge,top color=\tikzpeople@hatbadge!70, bottom color=\tikzpeople@hatbadge,shading angle=45}
+ }
+ \else
+ \tikzset{
+ shirt/.style ={color=\tikzpeople@shirt!80,top color=\tikzpeople@shirt!80, bottom color=\tikzpeople@shirt,shading angle=45},
+ hattop/.style ={color=\tikzpeople@hat!80,top color=\tikzpeople@hat!80, bottom color=\tikzpeople@hat,shading angle=45},
+ hatbottom/.style={color=\tikzpeople@hatshield!80,top color=\tikzpeople@hatshield!60, bottom color=\tikzpeople@hatshield!90,shading angle=45},
+ badge/.style ={color=\tikzpeople@badge!80,top color=\tikzpeople@badge!40, bottom color=\tikzpeople@badge!80,shading angle=45},
+ hatbadge/.style ={color=\tikzpeople@hatbadge!80,top color=\tikzpeople@hatbadge!40, bottom color=\tikzpeople@hatbadge!80,shading angle=45}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@police@colors}{
+ shirt/190/{-1/-.6}, hat/150/{-.9/1.6}, hair/170/{-.75/.9}, skin/350/{.4/.4},
+ badge/210/{-.7/-1.2}, hatbadge/30/{.4/1.3}, hatshield/10/{.7/1},
+ undershirt/330/{.3/-.5}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.priest.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.priest.sty
new file mode 100644
index 0000000000..ddf2c19d0c
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.priest.sty
@@ -0,0 +1,87 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{collar}
+\tikzpeople@addcolorkey{cross}
+
+\newcommand{\tikzpeople@priest@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@priest@paintcross
+ \tikzpeople@priest@paintcollar
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@priest@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@priest@definecolors}{
+ \definecolor{skin}{rgb}{0.84,0.58,0.24}
+ \definecolor{shirt}{rgb}{0,0,0}
+ \definecolor{collar}{RGB}{232,232,232}
+ \definecolor{cross}{rgb}{1,0.8,0.09}
+ \definecolor{hair}{rgb}{0.45,0.24,0}
+ \definecolor{hat}{rgb}{0.8,0.11,0}
+}
+
+\newcommand{\tikzpeople@priest@definestyles}{
+ \tikzset{
+ collar/.style ={color=\tikzpeople@collar!80,top color=\tikzpeople@collar!30, bottom color=\tikzpeople@collar!90,shading angle=45},
+ cross/.style ={color=\tikzpeople@cross, top color=\tikzpeople@cross!80, bottom color=\tikzpeople@cross,shading angle=45},
+ necklace/.style={color=\tikzpeople@cross,dash pattern=on 0.1*\scalingfactor off 0.3*\scalingfactor,line width=0.15*\scalingfactor,cap=round}
+ }
+}
+
+\newcommand{\tikzpeople@priest@painthat}{
+ \draw[hat] (50:3pt) arc (50:140:3pt) to [out=340,in=210] (50:3pt);
+}
+
+\newcommand{\tikzpeople@priest@paintcollar}{
+ \draw[collar]
+ (230:3.4pt|-2pt,0) -- (230:3.4pt) arc (230:317:3.2pt) -- +(0,0.8pt);
+ \draw[shirt]
+ (227:3.2pt) -- +(0pt,-0.4pt) arc (227:280:3.2pt) -- +(0pt, 0.4pt) arc
+ (280:227:3.2pt);
+ \draw[shirt]
+ (-40:3.2pt) -- +(0pt,-0.4pt) arc (-40:-70:3.2pt) -- +(0pt, 0.4pt) arc
+ (-70:-40:3.2pt);
+}
+
+\newcommand{\tikzpeople@priest@paintcross}{
+ {
+ \pgftransformrotate{10}
+ \path[cross] (0.6pt,-7.2pt) -- (0.9pt,-7.2pt) -- (0.9pt,-6.3pt) --
+ (1.4pt,-6.3pt) -- (1.4pt,-6.0pt) -- (0.9pt,-6.0pt) -- (0.9pt,-5.5pt) --
+ (0.6pt,-5.5pt) -- (0.6pt,-6.0pt) -- (0.1pt,-6.0pt) -- (0.1pt,-6.3pt) --
+ (0.6pt,-6.3pt) -- (0.6pt,-7.2pt);
+ }
+ \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);
+ \draw[necklace] (1.5pt,-5.3pt) .. controls (1.1pt,-5.2pt) and
+ (-1.8pt,-4.0pt) .. (-2.6pt,-2.9pt);
+ \draw[necklace] ( 1.9pt,-5.3pt) .. controls ( 2.1pt,-4.9pt) and
+ (2.8pt,-3.5pt) .. (2.9pt,-2.6pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@priest@colors}{
+ shirt/200/{-1/-1}, hat/160/{-.25/1.5}, hair/180/{-.75/1}, skin/20/{.6/.7},
+ collar/0/{.15/.05}, cross/340/{.4/-.72}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.sailor.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.sailor.sty
new file mode 100644
index 0000000000..415e688332
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.sailor.sty
@@ -0,0 +1,118 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+\tikzpeople@addcolorkey{stripes}
+
+\newcommand{\tikzpeople@sailor@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@sailor@paintundershirt
+ \tikzpeople@sailor@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@sailor@painthat
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@sailor@paintundershirt}{
+ \begin{scope}
+ \clip (233:3pt) -- (1.5pt,-6.5pt) -- (312:3pt) -- cycle;
+ \draw[undershirt] (233:3.1pt) -- (1.5pt,-6.5pt) -- (312:3.1pt) -- cycle;
+ \draw[stripes] (-0.5pt,-4pt) arc (270:300:6pt)
+ (-0.5pt,-4.7pt) arc (270:300:6pt) (-0.5pt,-5.4pt) arc (270:300:6pt)
+ (-0.5pt,-6.1pt) arc (270:300:6pt);
+ \draw[skin] (200:3.5pt) arc (200:330:3.5pt);
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@sailor@paintshirtdetails}{
+ \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);
+ \draw[details]
+ (233:3pt) -- (1.5pt,-6.5pt) -- (312:3pt) -- ++(0pt,2pt) -- (3.5pt,-3pt) ..
+ controls (3.2pt,-4pt) and (2.2pt,-6pt) .. (1.5pt,-6.5pt) .. controls
+ (-0.5pt,-5.5pt) and (-2pt,-3.9pt) .. (-3.8pt,-5.1pt) -- ++(0pt,2pt) --
+ cycle;
+ \begin{scope}
+ \clip
+ (233:3pt) -- (1.5pt,-6.5pt) .. controls (-0.5pt,-5.5pt) and
+ (-2pt,-3.9pt) .. (-3.8pt,-5.1pt) -- ++(0pt,2pt);
+ \draw[white]
+ (1.5pt,-6.25pt) .. controls (-0.5pt,-5.25pt) and (-2pt,-3.65pt) ..
+ (-3.8pt,-4.85pt);
+ \draw[white]
+ (1.5pt,-6pt) .. controls (-0.5pt,-5pt) and (-2pt,-3.4pt) ..
+ (-3.8pt,-4.6pt);
+ \end{scope}
+ \begin{scope}
+ \clip
+ (1.5pt,-6.5pt) -- (312:3pt) -- ++(0pt,2pt) -- (3.5pt,-3pt) .. controls
+ (3.2pt,-4pt) and (2.2pt,-6pt) .. (1.5pt,-6.5pt);
+ \draw[white]
+ (3.25pt,-2.75pt) .. controls (2.95pt,-4pt) and (1.95pt,-6pt) ..
+ (1.25pt,-6.5pt);
+ \draw[white]
+ (3pt,-2.7pt) .. controls (2.7pt,-4pt) and (1.7pt,-6pt) .. (1pt,-6.5pt);
+ \end{scope}
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@sailor@painthat}{
+ {
+ \pgftransformxshift{-0.2pt}
+ \draw[hat]
+ (-2.7pt,2.9pt) -- (-2.3pt,1.5pt) to [out=340,in=200] ( 2.5pt,1.5pt) --
+ (2.9pt,2.9pt);
+ \draw[hat] (0.1pt,2.9pt) ellipse (2.8pt and 0.8pt);
+ \begin{scope}
+ \clip (0.1pt,2.9pt) ellipse (2.8pt and 0.8pt);
+ \draw[hat,shading angle=-45] (0.1pt,2.4pt) ellipse (2pt and 0.7pt);
+ \end{scope}
+ \draw[details] (0.1pt,3.2pt) ellipse (0.8pt and 0.55pt);
+ }
+}
+
+\newcommand{\tikzpeople@sailor@definecolors}{
+ \definecolor{shirt}{RGB}{232,232,232}
+ \definecolor{hat}{RGB}{232,232,232}
+ \definecolor{undershirt}{rgb}{0.9,0.9,0.95}
+ \definecolor{stripes}{rgb}{0.3,0.3,0.3}
+ \definecolor{details}{rgb}{0.02,0.18,0.54}
+}
+
+\newcommand{\tikzpeople@sailor@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ details/.style={color=\tikzpeople@details,top color=\tikzpeople@details!70, bottom color=\tikzpeople@details,shading angle=45},
+ stripes/.style={color=\tikzpeople@stripes,line width=0.15*\scalingfactor,cap=rect}
+ }
+ \else
+ \tikzset{
+ details/.style={color=\tikzpeople@details!80,top color=\tikzpeople@details!40, bottom color=\tikzpeople@details!80,shading angle=45},
+ stripes/.style={color=\tikzpeople@stripes!80,line width=0.15*\scalingfactor,cap=rect}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@sailor@colors}{
+ shirt/340/{1.2/-.9}, hair/170/{-.75/.9}, hat/150/{-.6/1.4}, skin/190/{-.6/.4},
+ undershirt/210/{.2/-.5}, stripes/0/{.2/-.58}, details/20/{0/1.8,.6/0}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.santa.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.santa.sty
new file mode 100644
index 0000000000..ad3ea6e84f
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.santa.sty
@@ -0,0 +1,104 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{details}
+\tikzpeople@addcolorkey{beard}
+
+\newcommand{\tikzpeople@santa@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@santa@paintbuttons
+ \tikzpeople@person@painthead
+ \tikzpeople@santa@paintbeard
+ \if@tikzpeople@female
+ \tikzpeople@person@painthair
+ \fi
+ \tikzpeople@santa@painthat
+}
+
+\newcommand{\tikzpeople@santa@definecolors}{
+ \definecolor{shirt}{rgb}{0.98,0.01,0.01}
+ \definecolor{hat}{rgb}{0.98,0.01,0.01}
+ \definecolor{details}{RGB}{232,232,232}
+ \definecolor{beard}{RGB}{232,232,232}
+}
+
+\newcommand{\tikzpeople@santa@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ details/.style={color=\tikzpeople@details,top color=\tikzpeople@details!60, bottom color=\tikzpeople@details,shading angle=45},
+ beard/.style ={color=\tikzpeople@beard, top color=\tikzpeople@beard!60, bottom color=\tikzpeople@beard,shading angle=45}
+ }
+ \else
+ \tikzset{
+ details/.style={color=\tikzpeople@details!80,top color=\tikzpeople@details!30, bottom color=\tikzpeople@details!90,shading angle=45},
+ beard/.style ={color=\tikzpeople@beard!80, top color=\tikzpeople@beard!30, bottom color=\tikzpeople@beard!90,shading angle=45}
+ }
+ \fi
+ \tikzset{hair/.style=beard};
+}
+
+\newcommand{\tikzpeople@santa@painthat}{
+ \draw[hat]
+ ( 0pt,4.65pt) .. controls (-3pt,4.65pt) and (-5pt,2pt) .. (-5pt,0.40pt) ..
+ controls (-5pt,1.00pt) and (-3pt,2pt) .. (0pt,2pt);
+ \draw[hat] (-3.1pt,0.5pt) arc (170:10:3.2pt and 5pt);
+ \if@tikzpeople@mirrored
+ \draw[details, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-3.1pt,0.4pt) to[in=180,out=180] (-3.0pt,1.6pt) .. controls (-2pt,1.2pt)
+ and ( 2pt,1.2pt) ..( 3.0pt,1.6pt) to[out=0,in=0] ( 3.1pt,0.4pt) ..
+ controls ( 2pt,0.0pt) and (-2pt,0.0pt) .. (-3.1pt,0.4pt);
+ \draw[details, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-5pt,0.4pt) circle (0.75pt);
+ \else
+ \draw[details, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-3.1pt,0.4pt) to[in=180,out=180] (-3.0pt,1.6pt) .. controls (-2pt,1.2pt)
+ and ( 2pt,1.2pt) ..( 3.0pt,1.6pt) to[out=0,in=0] ( 3.1pt,0.4pt) ..
+ controls ( 2pt,0.0pt) and (-2pt,0.0pt) .. (-3.1pt,0.4pt);
+ \draw[details, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-5pt,0.4pt) circle (0.75pt);
+ \fi
+}
+
+\newcommand{\tikzpeople@santa@paintbeard}{
+ \if@tikzpeople@female
+ \else
+ \if@tikzpeople@mirrored
+ \draw[beard, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-3.1pt,1pt) arc (180:360:3.1pt and 3pt) arc (360:180:3.1pt and 5pt);
+ \else
+ \draw[beard, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (-3.1pt,1pt) arc (180:360:3.1pt and 3pt) arc (360:180:3.1pt and 5pt);
+ \fi
+ \fi
+}
+
+\newcommand{\tikzpeople@santa@paintbuttons}{
+ \if@tikzpeople@mirrored
+ \draw[details, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (0.75pt,-5.0pt) circle (.65pt);
+ \draw[details, decorate, decoration={bumps,amplitude=.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (1.00pt,-7.2pt) circle (.65pt);
+ \else
+ \draw[details, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (0.75pt,-5.0pt) circle (.65pt);
+ \draw[details, decorate, decoration={bumps,amplitude=-.1*\scalingfactor,segment length=.7*\scalingfactor}]
+ (1.00pt,-7.2pt) circle (.65pt);
+ \fi
+}
+
+\newcommand{\tikzpeople@santa@colors}{
+ shirt/190/{-1/-1}, hat/20/{.5/1.6}, skin/0/{.4/.75}, beard/340/{.25/.1},
+ details/170/{.1/-.5,-1.5/1,-.5/1.1}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.surgeon.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.surgeon.sty
new file mode 100644
index 0000000000..da25c6758b
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.shape.surgeon.sty
@@ -0,0 +1,76 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+\tikzpeople@addcolorkey{mask}
+
+\newcommand{\tikzpeople@surgeon@paint}{
+ \tikzpeople@person@paintshirt
+ \tikzpeople@surgeon@paintshirtdetails
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@surgeon@painthat
+ \tikzpeople@surgeon@paintmask
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+}
+
+\newcommand{\tikzpeople@surgeon@paintshirtdetails}{
+ \draw[shirt,thick,color=\tikzpeople@shirt,shading angle=90]
+ (230:3pt) .. controls +(-0.4pt,-1.5pt) .. ++(0pt,-3pt) .. controls
+ +(1.5pt,0.5pt) .. ++(3pt,0.2pt) .. controls +(0.5pt,0.4pt) .. ++(2pt,0.7pt)
+ .. controls +(0pt,0.5pt) .. (312:3pt);
+ \draw[skin] (231:3pt) -- (1pt,-4.85pt)--(311:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@surgeon@painthat}{
+ \draw[hat]
+ (160:3pt) ++(.3pt,1.6pt) -- (160:3pt) arc (-180:0:2.85pt and 1pt) --
+ ++(-.3pt,1.6pt) arc (0:180:2.55pt and 1pt) arc (-180:0:2.55pt and 1pt);
+}
+
+\newcommand{\tikzpeople@surgeon@paintmask}{
+ \begin{scope}
+ \clip (0,0) circle (\pgflinewidth/\scalingfactor +3);
+ \draw[mask,color=\tikzpeople@mask!40,shading angle=-90]
+ (-17:3pt) arc (295:235:6.1pt) -- ++(0,-.05pt) arc (235:295:6.1pt) --cycle;
+ \draw[mask]
+ (-18:3pt) arc (295:235:6pt) -- ++(0,-.05pt) arc (230:245:5pt) --
+ ++(0,-.6pt) arc (260:245:6pt) -- ++(0,-.1pt) arc (235:300:6pt) --cycle;
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@surgeon@definecolors}{
+ \definecolor{shirt}{RGB}{171,201,177}
+ \definecolor{hat}{RGB}{171,201,177}
+ \definecolor{mask}{RGB}{171,201,177}
+}
+
+\newcommand{\tikzpeople@surgeon@definestyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ mask/.style={color=\tikzpeople@mask,top color=\tikzpeople@mask!70, bottom color=\tikzpeople@mask,shading angle=90}
+ }
+ \else
+ \tikzset{
+ mask/.style={color=\tikzpeople@mask!80,top color=\tikzpeople@mask!40, bottom color=\tikzpeople@mask!80,shading angle=90}
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@surgeon@colors}{
+ shirt/200/{-1/-1}, hair/180/{-.8/.9}, hat/160/{-.7/1.3}, mask/350/{.5/.5},
+ skin/10/{.6/.9}%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.sty b/graphics/pgf/contrib/tikzpeople/tikzpeople.sty
new file mode 100644
index 0000000000..64bac5de5a
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.sty
@@ -0,0 +1,924 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+%%
+%% This work consists of the files tikzpeople.tex, tikzpeople.sty,
+%% tikzpeople.shape.alice.sty, tikzpeople.shape.bob.sty,
+%% tikzpeople.shape.bride.sty, tikzpeople.shape.builder.sty,
+%% tikzpeople.shape.businessman.sty, tikzpeople.shape.charlie.sty,
+%% tikzpeople.shape.chef.sty, tikzpeople.shape.conductor.sty,
+%% tikzpeople.shape.cowboy.sty, tikzpeople.shape.criminal.sty,
+%% tikzpeople.shape.dave.sty, tikzpeople.shape.devil.sty,
+%% tikzpeople.shape.duck.sty, tikzpeople.shape.graduate.sty,
+%% tikzpeople.shape.groom.sty, tikzpeople.shape.guard.sty,
+%% tikzpeople.shape.jester.sty, tikzpeople.shape.judge.sty,
+%% tikzpeople.shape.maninblack.sty, tikzpeople.shape.mexican.sty,
+%% tikzpeople.shape.nun.sty, tikzpeople.shape.nurse.sty,
+%% tikzpeople.shape.physician.sty, tikzpeople.shape.pilot.sty,
+%% tikzpeople.shape.police.sty, tikzpeople.shape.priest.sty,
+%% tikzpeople.shape.sailor.sty, tikzpeople.shape.santa.sty,
+%% tikzpeople.shape.surgeon.sty
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikzpeople}[2017/04/22 v0.4 People shaped nodes for Tikz]
+
+\RequirePackage{tikz}
+\RequirePackage{calc}
+\RequirePackage{etoolbox}
+\newif\if@tikzpeople@draft\@tikzpeople@draftfalse
+\DeclareOption{draft}{
+ \@tikzpeople@drafttrue
+}
+\newif\if@tikzpeople@demo\@tikzpeople@demofalse
+\DeclareOption{demo}{
+ \@tikzpeople@demotrue
+}
+\newif\if@tikzpeople@nobeards\@tikzpeople@nobeardsfalse
+\DeclareOption{nobeards}{
+ \@tikzpeople@nobeardstrue
+}
+\newif\if@tikzpeople@saturated\@tikzpeople@saturatedfalse
+\DeclareOption{saturated}{
+ \@tikzpeople@saturatedtrue
+}
+\ProcessOptions\relax
+\usepgflibrary{intersections}
+\usetikzlibrary{decorations.markings,decorations.pathmorphing,calc,positioning,arrows.meta}
+
+\newif\if@tikzpeople@mirrored
+\pgfkeys{/tikz/mirrored/.is if=@tikzpeople@mirrored}
+\newif\if@tikzpeople@female
+\pgfkeys{/tikz/female/.is if=@tikzpeople@female}
+\newif\if@tikzpeople@evil
+\pgfkeys{/tikz/evil/.is if=@tikzpeople@evil}
+\newif\if@tikzpeople@good
+\pgfkeys{/tikz/good/.is if=@tikzpeople@good}
+\newif\if@tikzpeople@monitor
+\pgfkeys{/tikz/monitor/.is if=@tikzpeople@monitor}
+\newif\if@tikzpeople@shield
+\pgfkeys{/tikz/shield/.is if=@tikzpeople@shield}
+\newif\if@tikzpeople@sword
+\pgfkeys{/tikz/sword/.is if=@tikzpeople@sword}
+\pgfkeys{/tikz/saturated/.is if=@tikzpeople@saturated}
+
+\newcommand{\tikzpeople@addcolorkey}[1]{
+ \expandafter\def\csname tikzpeople@#1\endcsname{#1}
+ \pgfkeys{/tikz/#1/.code=\expandafter\def\csname tikzpeople@#1\endcsname{##1}}
+}
+
+\newcommand{\tikzpeople@addtextkey}[2]{
+ \expandafter\def\csname tikzpeople@#1\endcsname{#2}
+ \pgfkeys{/tikz/#1/.code=\expandafter\def\csname tikzpeople@#1\endcsname{##1}}
+}
+
+\tikzpeople@addcolorkey{horns}
+\tikzpeople@addcolorkey{halo}
+\tikzpeople@addcolorkey{shirt}
+\tikzpeople@addcolorkey{undershirt}
+\tikzpeople@addcolorkey{skin}
+\tikzpeople@addcolorkey{hair}
+\tikzpeople@addcolorkey{hat}
+\tikzpeople@addcolorkey{pc}
+\tikzpeople@addcolorkey{shieldmid}
+\tikzpeople@addcolorkey{shieldedge}
+\tikzpeople@addcolorkey{shieldrivets}
+\tikzpeople@addcolorkey{swordblade}
+\tikzpeople@addcolorkey{swordgrip}
+\tikzpeople@addcolorkey{swordguard}
+\tikzpeople@addcolorkey{swordpommel}
+
+\pgfdeclareshape{person}{
+ \saveddimen{\scalingfactor}{
+ \setlength{\pgf@xa}{\pgfshapeminwidth}
+ \setlength{\pgf@xb}{9.075pt}
+ \ifdim\pgf@xa<\pgf@xb
+ \pgfsetshapeminwidth{9.075pt}
+ \fi
+ \setlength{\pgf@xa}{\pgfshapeminheight}
+ \setlength{\pgf@xb}{0.5cm}
+ \ifdim\pgf@xa<\pgf@xb
+ \pgfsetshapeminheight{0.5cm}
+ \fi
+ \setlength{\pgf@xa}{1pt*\ratio{\pgfshapeminwidth}{9.075pt}}
+ \setlength{\pgf@xb}{1pt*\ratio{\pgfshapeminheight}{12.1pt}}
+ \ifdim\pgf@xa<\pgf@xb
+ \setlength{\pgf@x}{1pt*\ratio{\pgfshapeminheight}{12.1pt}}
+ \else
+ \setlength{\pgf@x}{1pt*\ratio{\pgfshapeminwidth}{9.075pt}}
+ \fi
+ }
+
+ \saveddimen{\width}{
+ \pgf@x=\wd\pgfnodeparttextbox
+ }
+
+ \saveddimen{\height}{
+ \pgf@x=\ht\pgfnodeparttextbox
+ }
+
+ \saveddimen{\depth}{
+ \pgf@x=\dp\pgfnodeparttextbox
+ }
+
+ \savedanchor{\mouth}{
+ \if@tikzpeople@mirrored
+ \pgfpoint{-2.075}{1.7}
+ \else
+ \pgfpoint{2.4}{1.7}
+ \fi
+ }
+
+ \anchor{mouth}{
+ \pgfpointscale{\scalingfactor}{\mouth}
+ }
+ \anchor{north west}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{-4.375}{6.3}}
+ }
+ \anchor{north}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{0.1625}{6.3}}
+ }
+ \anchor{north east}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{4.7}{6.3}}
+ }
+ \anchor{east}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{4.7}{0.25}}
+ }
+ \anchor{south east}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{4.7}{-5.8}}
+ }
+ \anchor{south}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{0.1625}{-5.8}}
+ }
+ \anchor{south west}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{-4.375}{-5.8}}
+ }
+ \anchor{west}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{-4.375}{0.25}}
+ }
+ \anchor{center}{
+ \pgfpointscale{\scalingfactor}{\pgfpoint{0.1625}{0.25}}
+ }
+ \anchor{text}{
+ \pgfpoint{\scalingfactor*0.1625-0.5*\width}{\scalingfactor*-6.3-\depth-\height}
+ }
+ \anchor{base}{
+ \pgfpoint{\scalingfactor*0.1625}{\scalingfactor*-6.3-\depth-\height}
+ }
+ \anchor{base west}{
+ \pgfpoint{\scalingfactor*-4.375}{\scalingfactor*-6.3-\depth-\height}
+ }
+ \anchor{base east}{
+ \pgfpoint{\scalingfactor*4.7}{\scalingfactor*-6.3-\depth-\height}
+ }
+ \anchor{mid}{
+ \pgfpoint{\scalingfactor*0.1625}{\scalingfactor*-6.3-\depth-\height+.5ex}
+ }
+ \anchor{mid west}{
+ \pgfpoint{\scalingfactor*-4.375}{\scalingfactor*-6.3-\depth-\height+.5ex}
+ }
+ \anchor{mid east}{
+ \pgfpoint{\scalingfactor*4.7}{\scalingfactor*-6.3-\depth-\height+.5ex}
+ }
+
+ \anchorborder{
+ \@tempdima=\pgf@x
+ \@tempdimb=\pgf@y
+ \pgftransformshift{\pgfpoint{\scalingfactor*-0.1625}{\scalingfactor*0.4pt}}
+ \pgfpointborderellipse{\pgfpoint{\@tempdima}{\@tempdimb}}{\pgfpoint{\scalingfactor*5.9pt}{\scalingfactor*6.9pt}}
+ }
+
+
+ \beforebackgroundpath{
+ \pgftransformscale{\scalingfactor}
+ \if@tikzpeople@mirrored
+ \pgftransformxscale{-1}
+ \pgftransformxshift{-0.325}
+ \fi
+ \pgftransformshift{\pgfpoint{-0.3}{3.3}}
+ \if@tikzpeople@draft
+ \tikzpeople@person@draftstyles
+ \tikzpeople@person@paintshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+ \if@tikzpeople@shield
+ \tikzpeople@person@paintshield
+ \fi
+ \if@tikzpeople@sword
+ \tikzpeople@person@paintsword
+ \fi
+ \if@tikzpeople@monitor
+ \tikzpeople@person@paintmonitor
+ \fi
+ \else
+ \tikzpeople@definecommoncolors
+ \tikzpeople@definecommonstyles
+ \tikzpeople@person@paintshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@painthair
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@painthalo
+ \if@tikzpeople@shield
+ \tikzpeople@person@paintshield
+ \fi
+ \if@tikzpeople@sword
+ \tikzpeople@person@paintsword
+ \fi
+ \if@tikzpeople@monitor
+ \tikzpeople@person@paintmonitor
+ \fi
+ \fi
+ }
+}
+
+\newcommand{\tikzpeople@definecommonstyles}{
+ \if@tikzpeople@saturated
+ \tikzset{
+ shirt/.style= {color=\tikzpeople@shirt,top color=\tikzpeople@shirt!70, bottom color=\tikzpeople@shirt,shading angle=45},
+ hat/.style= {color=\tikzpeople@hat,top color=\tikzpeople@hat!70, bottom color=\tikzpeople@hat,shading angle=45},
+ undershirt/.style= {color=\tikzpeople@undershirt,top color=\tikzpeople@undershirt!70, bottom color=\tikzpeople@undershirt,shading angle=45},
+ skin/.style= {color=\tikzpeople@skin,top color=\tikzpeople@skin!70, bottom color=\tikzpeople@skin,shading angle=45},
+ hair/.style= {color=\tikzpeople@hair,top color=\tikzpeople@hair!70, bottom color=\tikzpeople@hair,shading angle=45},
+ goatee/.style= {color=\tikzpeople@hair,top color=\tikzpeople@hair!70, bottom color=\tikzpeople@hair,shading angle=45},
+ horns/.style= {color=\tikzpeople@horns,top color=\tikzpeople@horns!70, bottom color=\tikzpeople@horns,shading angle=45},
+ halo/.style= {color=\tikzpeople@halo,top color=\tikzpeople@halo!70, bottom color=\tikzpeople@halo,shading angle=45},
+ shieldmid/.style= {color=\tikzpeople@shieldmid,top color=\tikzpeople@shieldmid!70, bottom color=\tikzpeople@shieldmid,shading angle=45,line join=bevel},
+ shieldedge/.style= {color=\tikzpeople@shieldedge,top color=\tikzpeople@shieldedge!70, bottom color=\tikzpeople@shieldedge,shading angle=45,line join=bevel},
+ shieldrivets/.style={color=\tikzpeople@shieldrivets,top color=\tikzpeople@shieldrivets!70, bottom color=\tikzpeople@shieldrivets,shading angle=45},
+ swordblade/.style= {color=\tikzpeople@swordblade,top color=\tikzpeople@swordblade!70, bottom color=\tikzpeople@swordblade,shading angle=45},
+ swordguard/.style= {color=\tikzpeople@swordguard,top color=\tikzpeople@swordguard!70, bottom color=\tikzpeople@swordguard,shading angle=45},
+ swordpommel/.style= {color=\tikzpeople@swordpommel,top color=\tikzpeople@swordpommel!70, bottom color=\tikzpeople@swordpommel,shading angle=45},
+ swordgrip/.style= {color=\tikzpeople@swordgrip,top color=\tikzpeople@swordgrip!70, bottom color=\tikzpeople@swordgrip,shading angle=45},
+ monitor1/.style= {color=\tikzpeople@pc, top color=\tikzpeople@pc, bottom color=\tikzpeople@pc!70,shading angle=90},
+ monitor2/.style= {color=\tikzpeople@pc, top color=\tikzpeople@pc, bottom color=\tikzpeople@pc!90,shading angle=90},
+ monitor3/.style= {color=\tikzpeople@pc, top color=\tikzpeople@pc!80, bottom color=\tikzpeople@pc!70,shading angle=90},
+ monitor4/.style= {color=\tikzpeople@pc, top color=\tikzpeople@pc!60, bottom color=\tikzpeople@pc!50,shading angle=90},
+ }
+ \else
+ \tikzset{
+ shirt/.style= {color=\tikzpeople@shirt!80,top color=\tikzpeople@shirt!40, bottom color=\tikzpeople@shirt!80,shading angle=45},
+ hat/.style= {color=\tikzpeople@hat!80,top color=\tikzpeople@hat!40, bottom color=\tikzpeople@hat!80,shading angle=45},
+ undershirt/.style= {color=\tikzpeople@undershirt!80,top color=\tikzpeople@undershirt!40, bottom color=\tikzpeople@undershirt!80,shading angle=45},
+ skin/.style= {color=\tikzpeople@skin!80,top color=\tikzpeople@skin!40, bottom color=\tikzpeople@skin!80,shading angle=45},
+ hair/.style= {color=\tikzpeople@hair!80,top color=\tikzpeople@hair!40, bottom color=\tikzpeople@hair!80,shading angle=45},
+ goatee/.style= {color=\tikzpeople@hair!80,top color=\tikzpeople@hair!40, bottom color=\tikzpeople@hair!80,shading angle=45},
+ horns/.style= {color=\tikzpeople@horns!80,top color=\tikzpeople@horns!40, bottom color=\tikzpeople@horns!80,shading angle=45},
+ halo/.style= {color=\tikzpeople@halo!80,top color=\tikzpeople@halo!40, bottom color=\tikzpeople@halo!80,shading angle=45},
+ shieldmid/.style= {color=\tikzpeople@shieldmid!80,top color=\tikzpeople@shieldmid!40, bottom color=\tikzpeople@shieldmid!80,shading angle=45,line join=bevel},
+ shieldedge/.style= {color=\tikzpeople@shieldedge!80,top color=\tikzpeople@shieldedge!40, bottom color=\tikzpeople@shieldedge!80,shading angle=45,line join=bevel},
+ shieldrivets/.style={color=\tikzpeople@shieldrivets!80,top color=\tikzpeople@shieldrivets!40, bottom color=\tikzpeople@shieldrivets!80,shading angle=45},
+ swordblade/.style= {color=\tikzpeople@swordblade!80,top color=\tikzpeople@swordblade!40, bottom color=\tikzpeople@swordblade!80,shading angle=45},
+ swordguard/.style= {color=\tikzpeople@swordguard!80,top color=\tikzpeople@swordguard!40, bottom color=\tikzpeople@swordguard!80,shading angle=45},
+ swordpommel/.style= {color=\tikzpeople@swordpommel!80,top color=\tikzpeople@swordpommel!40, bottom color=\tikzpeople@swordpommel!80,shading angle=45},
+ swordgrip/.style= {color=\tikzpeople@swordgrip!80,top color=\tikzpeople@swordgrip!40, bottom color=\tikzpeople@swordgrip!80,shading angle=45},
+ monitor1/.style= {color=\tikzpeople@pc!80, top color=\tikzpeople@pc!80, bottom color=\tikzpeople@pc!40,shading angle=90},
+ monitor2/.style= {color=\tikzpeople@pc!80, top color=\tikzpeople@pc!80, bottom color=\tikzpeople@pc!70,shading angle=90},
+ monitor3/.style= {color=\tikzpeople@pc!80, top color=\tikzpeople@pc!60, bottom color=\tikzpeople@pc!50,shading angle=90},
+ monitor4/.style= {color=\tikzpeople@pc!80, top color=\tikzpeople@pc!40, bottom color=\tikzpeople@pc!30,shading angle=90},
+ }
+ \fi
+}
+
+\newcommand{\tikzpeople@person@draftstyles}{
+ \tikzset{
+ shirt/.style= {color=black,fill=white},
+ skin/.style= {color=black,fill=white},
+ goatee/.style= {color=black,fill=white},
+ horns/.style= {color=black,fill=white},
+ halo/.style= {color=black,fill=white},
+ shieldedge/.style= {color=black,fill=white},
+ swordblade/.style= {color=black,fill=white},
+ swordguard/.style= {color=black,fill=white},
+ swordpommel/.style= {color=black,fill=white},
+ swordgrip/.style= {color=black,fill=white},
+ }
+}
+
+\newcommand{\tikzpeople@definecommoncolors}{
+ \definecolor{horns}{named}{red}
+ \definecolor{halo}{named}{yellow}
+ \definecolor{skin}{rgb}{0.84,0.58,0.24}
+ \definecolor{shirt}{rgb}{0.34,0.56,0.22}
+ \definecolor{hair}{rgb}{0.45,0.24,0}
+ \definecolor{pc}{rgb}{.2,.2,.2}
+ \definecolor{shieldedge}{RGB}{83,84,85}
+ \definecolor{shieldrivets}{RGB}{25,25,26}
+ \definecolor{shieldmid}{RGB}{197,22,9}
+ \definecolor{swordblade}{RGB}{83,84,85}
+ \definecolor{swordguard}{RGB}{147,131,104}
+ \definecolor{swordpommel}{RGB}{147,131,104}
+ \definecolor{swordgrip}{RGB}{81,57,48}
+}
+
+\newcommand{\tikzpeople@person@paintshirt}{
+ \draw[shirt]
+ (-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;
+}
+
+\newcommand{\tikzpeople@person@painthead}{
+ \draw[skin] (0pt,0pt) circle (3pt);
+}
+
+\newcommand{\tikzpeople@person@painthair}{
+ \if@tikzpeople@female
+ \tikzpeople@person@paintfemalehair
+ \else
+ \draw[hair]
+ (25:3pt) arc (25:210:3pt) -- (-2.6pt,-0.5pt) -- (-1.7pt,-1pt) --
+ (-1.7pt,0.8pt) to[out=350,in=210] (25:3pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@person@painthairstyletwo}{
+ \if@tikzpeople@female
+ \tikzpeople@person@paintfemalehairstyletwo
+ \else
+ \draw[hair]
+ (15:3pt) arc (15:210:3pt) -- ++(0.3pt,0pt) -- ++(0.1pt,0.5pt)
+ .. controls +(310:.2pt) .. ++(0.2pt,-0.6pt) -- ++(0.4pt,0pt)
+ .. controls +(90:1pt) .. (-1.7pt,0.4pt) to[out=350,in=210]
+ (15:3pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@person@paintfemalehairstyletwo}{
+ \draw[hair]
+ (15:3pt) arc (15:165:3pt) .. controls +(260:1pt) .. (215:4.5pt) --
+ ++(4:0.5pt) -- ++(70:0.5pt) -- ++(285:0.4pt) -- ++(0:1.5pt) --
+ (-1.6pt,0pt) to [out=350,in=210] (15:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@person@paintfemalehairstylethree}{
+ \draw[hair]
+ (15:3pt) arc (15:180:3.3pt) .. controls +(269:3pt) and +(190:1.5pt)
+ .. (250:3.4pt) .. controls +(118:1.2pt) .. (-1.6pt,0pt) to [out=350,in=210]
+ (15:3pt)-- cycle;
+}
+
+\newcommand{\tikzpeople@person@paintgoatee}{
+\if@tikzpeople@nobeards
+\else
+ \if@tikzpeople@evil
+ {
+ \pgftransformrotate{5}
+ \draw[goatee] (285:1.75pt)
+ -- ++(0:1pt) arc[start angle=90, end angle=0, x radius=.55pt, y radius=.5pt]
+ -- ++(270:.5pt) arc[start angle=0, end angle=-90, x radius=.55pt, y radius=.5pt]
+ -- ++(180:1pt) arc[start angle=-90, end angle=-180, x radius=.55pt, y radius=.5pt]
+ -- ++(90:.5pt) arc[start angle=180, end angle=90, x radius=.55pt, y radius=.5pt]
+ (285:1.75pt) ++(.1875pt,-.3pt)
+ arc[start angle=90,end angle=270,x radius=.45pt, y radius=.3pt]
+ -- ++(0:.6pt) arc[start angle=-90,end angle=90,x radius=.45pt, y radius=.3pt]
+ -- ++(180:.6pt);
+ }
+ \fi
+\fi
+}
+
+\newcommand{\tikzpeople@person@paintlefthorn}{
+ \if@tikzpeople@evil
+ \draw[horns]
+ (140:2.5pt) arc (-90:-170:2pt) arc (0:180:0.04pt) arc (190:240:4pt)
+ to[out=70,in=290] (140:2.5pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@person@paintrighthorn}{
+ \if@tikzpeople@evil
+ \draw[horns]
+ (40:2.5pt) arc (-90:-10:2pt) arc (180:0:0.04pt) arc (-10:-60:4pt)
+ to[out=110,in=250] (40:2.5pt) -- cycle;
+ \fi
+}
+
+\newcommand{\tikzpeople@person@painthalo}{
+ \if@tikzpeople@good
+ \draw[fill,halo,even odd rule]
+ (0.1pt,4.5pt) ellipse (2.8pt and 0.8pt) ++(0pt,.1pt) ellipse
+ (2pt and 0.5pt);
+ \fi
+}
+
+\newcommand{\tikzpeople@person@paintfemalehair}{
+ \draw[hair]
+ (15:3pt) arc (15:180:3pt) .. controls +(273:2pt) and +(190:2pt) ..
+ (260:3.3pt) .. controls +(140:1pt) .. (-1.6pt,0pt) to [out=350,in=210]
+ (15:3pt) -- cycle;
+}
+
+\newcommand{\tikzpeople@person@paintshield}{
+ \path
+ (1pt,-3.7pt) coordinate (tikzpeople@shield1) +(-.2pt,.1pt) coordinate
+ (tikzpeople@shield6) ++(1.2pt,1.2pt) coordinate (tikzpeople@shield2)
+ ++(3.5pt,1.3pt) coordinate (tikzpeople@shield3) ++(.8pt,-.75pt) coordinate
+ (tikzpeople@shield4) ++(-2pt,-6.5pt) coordinate (tikzpeople@shield5)
+ --cycle;
+ \draw[shieldedge]
+ (tikzpeople@shield1) -- (tikzpeople@shield6) to[out=0,in=270]
+ ++(1.2pt,1.2pt) -- (tikzpeople@shield2) to[out=270,in=0]
+ (tikzpeople@shield1) --cycle;
+ \draw[shieldedge]
+ (tikzpeople@shield3) -- ++(-.2pt,.1pt) to[out=265,in=220]
+ ++(.8pt,-.75pt) -- (tikzpeople@shield4) to[out=220,in=265]
+ (tikzpeople@shield3) --cycle;
+ \draw[shieldedge]
+ (tikzpeople@shield2) -- ++(-.2pt,.1pt) .. controls +(5:1.5pt) and
+ +(220:1.5pt) .. ++(3.5pt,1.3pt) -- (tikzpeople@shield3) .. controls
+ +(220:1.5pt) and +(5:1.5pt) .. (tikzpeople@shield2) --cycle;
+ \draw[shieldedge]
+ (tikzpeople@shield5) -- ++(-.2pt,.1pt) .. controls +(170:1.5pt) and
+ +(270:3pt) .. (tikzpeople@shield6) -- (tikzpeople@shield1) .. controls
+ +(270:3pt) and +(170:1.5pt) .. (tikzpeople@shield5) --cycle;
+ \draw[shieldedge]
+ (tikzpeople@shield1) to[out=0,in=270] (tikzpeople@shield2) .. controls
+ +(5:1.5pt) and +(220:1.5pt) .. (tikzpeople@shield3) to[out=265,in=220]
+ (tikzpeople@shield4) .. controls +(270:3pt) and +(30:1.5pt) ..
+ (tikzpeople@shield5) .. controls +(170:1.5pt) and +(270:3pt) ..
+ (tikzpeople@shield1) --cycle;
+ \if@tikzpeople@draft\else
+ \draw[shieldmid]
+ ($(tikzpeople@shield1)+(315:.5pt)$) to[out=10,in=260]
+ ($(tikzpeople@shield2)+(315:.5pt)$) .. controls +(7:1.2pt) and
+ +(215:1.2pt) .. ($(tikzpeople@shield3)+(250:.75pt)$) to[out=280,in=180]
+ ($(tikzpeople@shield4)+(235:.625pt)$) .. controls +(270:2.2pt) and
+ +(30:1.1pt) .. ($(tikzpeople@shield5)+(90:.5pt)$) .. controls
+ +(172:1.1pt) and +(271:2.2pt) .. ($(tikzpeople@shield1)+(315:.5pt)$)
+ --cycle;
+ \begin{scope}
+ \clip
+ ($(tikzpeople@shield1)+(315:.3pt)$) coordinate (tikzpeople@rivet1) circle (.05pt)
+ ($(tikzpeople@shield2)+(315:.3pt)$) coordinate (tikzpeople@rivet2) circle (.05pt)
+ ($(tikzpeople@shield3)+(250:.45pt)$) coordinate (tikzpeople@rivet3) circle (.05pt)
+ ($(tikzpeople@shield4)+(235:.4pt)$) coordinate (tikzpeople@rivet4) circle (.05pt)
+ ($(tikzpeople@shield5)+(90:.3pt)$) coordinate (tikzpeople@rivet5) circle (.05pt);
+ \path[shieldrivets] (tikzpeople@rivet1) ++(-.025pt,.025pt) circle (.12pt);
+ \path[shieldrivets] (tikzpeople@rivet2) ++(-.025pt,.025pt) circle (.12pt);
+ \path[shieldrivets] (tikzpeople@rivet3) ++(-.025pt,.025pt) circle (.12pt);
+ \path[shieldrivets] (tikzpeople@rivet4) ++(-.025pt,.025pt) circle (.12pt);
+ \path[shieldrivets] (tikzpeople@rivet5) ++(-.025pt,.025pt) circle (.12pt);
+ \end{scope}
+ \fi
+}
+
+\newcommand{\tikzpeople@person@paintsword}{
+ \begin{scope}
+ \pgftransformrotate{-30}
+ \pgftransformshift{\pgfpoint{1.7pt}{-.2pt}}
+ \draw[swordpommel]
+ (-.4pt,-8.9pt) -- ++(0pt,-.1pt) arc (180:360:.4pt and .15pt) --
+ ++(0pt,.1pt); ellipse (.4pt and .15pt);
+ \draw[swordpommel] (0pt,-8.9pt) ellipse (.4pt and .15pt);
+ \draw[swordgrip]
+ (-.2pt,-7.1pt) to[out=265,in=95] (-.2pt,-8.9pt) to[out=345,in=195]
+ (.2pt,-8.9pt) to[out=85,in=275] (.2pt,-7.1pt);
+ \draw[skin] (0pt,-8.1pt) ellipse (.6pt and .7pt);
+ \draw[swordguard]
+ (0pt,-7.45pt) to[out=0,in=270] (1.4pt,-6.5pt) -- ++(-.1pt,-.1pt)
+ to[out=270,in=0] (0pt,-7.45pt); to[out=0,in=270] (1.2pt,-6.6pt) --
+ ++(.1pt,.1pt) to[out=270,in=0] (0pt,-6.8pt);
+ \draw[swordguard]
+ (0pt,-6.8pt) to[out=180,in=270] (-1.1pt,-6.5pt) -- ++(-.1pt,-.1pt)
+ to[out=270,in=180] (0pt,-7.2pt) to[out=0,in=270] (1.2pt,-6.6pt) --
+ ++(.1pt,.1pt) to[out=270,in=0] (0pt,-6.8pt);
+ \draw[swordguard]
+ (-1.2pt,-6.6pt) -- ++(0.1pt,0.1pt) -- ++(-0.1pt,0pt) -- ++(-0.1pt,-0.1pt)
+ --cycle;
+ \draw[swordguard]
+ (1.2pt,-6.6pt) -- ++(0.1pt,0.1pt) -- ++(0.1pt,0pt) -- ++(-0.1pt,-0.1pt)
+ --cycle;
+ \draw[swordguard]
+ (0pt,-7.2pt) to[out=180,in=270] (-1.2pt,-6.6pt) -- ++(-.1pt,0pt)
+ to[out=270,in=180] (0pt,-7.45pt) to[out=0,in=270] (1.3pt,-6.6pt) --
+ ++(-.1pt,0pt) to[out=270,in=0] (0pt,-7.2pt);
+ \draw[swordblade]
+ (-.4pt,-7pt) -- (-.4pt,-1.5pt) to[out=90,in=240] (0pt,2pt)
+ to[out=300,in=90] (.4pt,-1.5pt) -- (.4pt,-7pt) to[out=190,in=350]
+ (-.4pt,-7pt);
+ {
+ \clip
+ (-.4pt,-7pt) -- (-.4pt,-1.5pt) to[out=90,in=240] (0pt,1pt)
+ to[out=300,in=90] (.4pt,-1.5pt) -- (.4pt,-7pt) to[out=190,in=350]
+ (-.4pt,-7pt);
+ \draw[swordblade, line width=.05*\scalingfactor,cap=round]
+ (0pt,-7.04pt) -- (0pt,.7pt);
+ }
+ \end{scope}
+}
+
+\newcommand{\tikzpeople@person@paintmonitor}{
+ \if@tikzpeople@draft
+ \path[draw=black,fill=white]
+ (2.3pt,-2.3pt) -- ++(14:7.3pt) -- ++(340:.27pt) coordinate (tikzpeople@tmp) --
+ ++(264:6.2pt) -- ++(195.5:7.35pt) coordinate (tikzpeople@tmp2) -- ++(135:.3pt)
+ --cycle;
+ \path[draw=black]
+ (2.3pt,-2.3pt) ++(330:.28pt) coordinate (tikzpeople@tmp3)
+ (tikzpeople@tmp2) -- (tikzpeople@tmp3) -- (tikzpeople@tmp);
+ \path[draw=black]
+ (3pt,-3pt) -- ++(14.5:6.4pt) -- ++(264:5.3pt) -- ++(195.5:6.35pt)
+ coordinate (tikzpeople@tmp) --cycle;
+ \path[draw=black,line width=.15*\scalingfactor,cap=butt]
+ (tikzpeople@tmp) -- (3pt,-3pt) -- ++(14.5:6.4pt);
+ \path[draw=black,fill=white]
+ (6.1pt,-4.8pt) ++(190:.6pt) ++(280:4pt) ++(-1.5pt,.2pt) coordinate (tikzpeople@tmp)
+ -- ++(325:1.6pt) -- ++(15:3.7pt) -- ++(145:1.6pt) --cycle;
+ \path[draw=black]
+ (tikzpeople@tmp) -- ++(0,-.2pt) -- ++(325:1.6pt) -- ++(15:3.7pt) -- ++(0,.2pt);
+ \path (6.1pt,-4.8pt) ++(17:.8pt) coordinate (tikzpeople@tmp);
+ \path[draw=black,fill=white]
+ (tikzpeople@tmp) ++(0,.01pt) -- ++(194:1.5pt) -- ++(280:4pt) -- ++(0:.07pt) --
+ ++(17:.5pt) --cycle;
+ \path[draw=black,fill=white]
+ (6.1pt,-4.8pt) ++(190:.6pt) -- ++(280:4pt) coordinate (tikzpeople@tmp2) -- ++(15:2pt)
+ -- (tikzpeople@tmp) --cycle;
+ \else
+ \path[monitor1]
+ (2.3pt,-2.3pt) -- ++(14:7.3pt) -- ++(340:.27pt) coordinate (tikzpeople@tmp) --
+ ++(195:7.3pt) -- ++(264:6.2pt) coordinate (tikzpeople@tmp2) -- ++(150:.27pt) --cycle;
+ \path[monitor3]
+ (2.3pt,-2.3pt) ++(330:.28pt) -- (tikzpeople@tmp) -- ++(264:6.2pt) -- (tikzpeople@tmp2) --cycle;
+ \path[monitor4]
+ (3pt,-3pt) -- ++(14.5:6.4pt) -- ++(264:5pt) -- ++(195:6.35pt)
+ coordinate (tikzpeople@tmp) --cycle;
+ \path[draw,color=\tikzpeople@pc\if@tikzpeople@saturated\else!80\fi,line width=.15*\scalingfactor,cap=butt]
+ (tikzpeople@tmp) -- (3pt,-3pt) -- ++(14.5:6.4pt);
+ \begin{scope}
+ \pgftransformshift{\pgfpoint{6pt}{-4.7pt}}
+ \pgftransformxslant{0.15}
+ \path[monitor1]
+ (0,0) ellipse (1.3pt and 2pt);
+ \path[monitor3]
+ (.1pt,-.1pt) ellipse (1.3pt and 2pt);
+ \end{scope}
+ \path[monitor2]
+ (6.05pt,-4.8pt) ++(160:.9pt) -- ++(15:2pt) -- ++(265:1pt) -- ++(195:2pt)
+ --cycle;
+ \path (6.1pt,-4.8pt) ++(17:.8pt) coordinate (tikzpeople@tmp);
+ \path[monitor1]
+ (6.1pt,-4.8pt) ++(190:.6pt) ++(280:4pt) ++(-1.5pt,.2pt) -- ++(0,-.2pt) --
+ ++(325:1.6pt) -- ++(15:3.7pt) -- ++(0,.2pt) -- cycle;
+ \path[monitor3]
+ (6.1pt,-4.8pt) ++(190:.6pt) ++(280:4pt) ++(-1.5pt,.2pt) -- ++(325:1.6pt)
+ -- ++(15:3.7pt) -- ++(145:1.6pt) --cycle;
+ \path[monitor2]
+ (6.1pt,-4.8pt) ++(190:.6pt) ++(280:4pt) ++(-.6pt,.2pt) -- ++(325:.8pt) --
+ ++(15:2.5pt) -- ++(145:.8pt) --cycle;
+ \path[monitor2]
+ (tikzpeople@tmp) ++(0,.01pt) -- ++(194:1.5pt) -- ++(280:4pt) -- ++(0:.07pt) --
+ ++(17:.5pt) --cycle;
+ \path[monitor3]
+ (6.1pt,-4.8pt) ++(190:.6pt) -- ++(280:4pt) coordinate (tikzpeople@tmp2) -- ++(15:2pt)
+ -- (tikzpeople@tmp) --cycle;
+ \fi
+}
+
+
+\newcommand{\tikzpeople@declareshape}[1]{
+ \if@tikzpeople@draft
+ \pgfdeclareshape{#1}{
+ \inheritsavedanchors[from={person}]
+ \inheritanchor[from={person}]{north west}
+ \inheritanchor[from={person}]{north}
+ \inheritanchor[from={person}]{north east}
+ \inheritanchor[from={person}]{east}
+ \inheritanchor[from={person}]{south east}
+ \inheritanchor[from={person}]{south}
+ \inheritanchor[from={person}]{south west}
+ \inheritanchor[from={person}]{west}
+ \inheritanchor[from={person}]{center}
+ \inheritanchor[from={person}]{text}
+ \inheritanchor[from={person}]{base}
+ \inheritanchor[from={person}]{base west}
+ \inheritanchor[from={person}]{base east}
+ \inheritanchor[from={person}]{mid}
+ \inheritanchor[from={person}]{mid west}
+ \inheritanchor[from={person}]{mid east}
+ \inheritanchor[from={person}]{mouth}
+ \inheritanchorborder[from={person}]
+
+ \beforebackgroundpath{
+ \pgftransformscale{\scalingfactor}
+ \if@tikzpeople@mirrored
+ \pgftransformxscale{-1}
+ \pgftransformxshift{-0.325}
+ \fi
+ \pgftransformshift{\pgfpoint{-0.3}{3.3}}
+ \tikzpeople@person@draftstyles
+ \tikzpeople@person@paintshirt
+ \tikzpeople@person@paintrighthorn
+ \tikzpeople@person@painthead
+ \tikzpeople@person@paintgoatee
+ \tikzpeople@person@paintlefthorn
+ \tikzpeople@person@painthalo
+ \if@tikzpeople@shield
+ \tikzpeople@person@paintshield
+ \fi
+ \if@tikzpeople@sword
+ \tikzpeople@person@paintsword
+ \fi
+ \if@tikzpeople@monitor
+ \tikzpeople@person@paintmonitor
+ \fi
+ }
+ }
+ \else
+ \input{tikzpeople.shape.#1.sty}
+ \pgfdeclareshape{#1}{
+ \inheritsavedanchors[from={person}]
+ \inheritanchor[from={person}]{north west}
+ \inheritanchor[from={person}]{north}
+ \inheritanchor[from={person}]{north east}
+ \inheritanchor[from={person}]{east}
+ \inheritanchor[from={person}]{south east}
+ \inheritanchor[from={person}]{south}
+ \inheritanchor[from={person}]{south west}
+ \inheritanchor[from={person}]{west}
+ \inheritanchor[from={person}]{center}
+ \inheritanchor[from={person}]{text}
+ \inheritanchor[from={person}]{base}
+ \inheritanchor[from={person}]{base west}
+ \inheritanchor[from={person}]{base east}
+ \inheritanchor[from={person}]{mid}
+ \inheritanchor[from={person}]{mid west}
+ \inheritanchor[from={person}]{mid east}
+ \inheritanchor[from={person}]{mouth}
+ \inheritanchorborder[from={person}]
+
+ \beforebackgroundpath{
+ \pgftransformscale{\scalingfactor}
+ \if@tikzpeople@mirrored
+ \pgftransformxscale{-1}
+ \pgftransformxshift{-0.325}
+ \fi
+ \pgftransformshift{\pgfpoint{-0.3}{3.3}}
+ \tikzpeople@definecommoncolors
+ \csname tikzpeople@#1@definecolors\endcsname
+ \tikzpeople@definecommonstyles
+ \csname tikzpeople@#1@definestyles\endcsname
+ \begin{scope}
+ \csname tikzpeople@#1@paint\endcsname
+ \end{scope}
+ \if@tikzpeople@shield
+ \tikzpeople@person@paintshield
+ \fi
+ \if@tikzpeople@sword
+ \tikzpeople@person@paintsword
+ \fi
+ \if@tikzpeople@monitor
+ \tikzpeople@person@paintmonitor
+ \fi
+ }
+ }
+ \fi
+ \if@tikzpeople@demo
+ \ifdef{\tikzpeople@shapelist}{
+ \appto\tikzpeople@shapelist{,#1}
+ }{
+ \def\tikzpeople@shapelist{#1}
+ }
+ \stepcounter{tikzpeople@totalshapes}
+ \fi
+}
+
+\if@tikzpeople@demo
+ \RequirePackage{xparse}
+ \RequirePackage{capt-of}
+ \RequirePackage{xifthen}
+ \newcounter{tikzpeople@shaperow}
+ \newcounter{tikzpeople@shapecolumn}
+ \newcounter{tikzpeople@shapenum}
+ \newcounter{tikzpeople@totalshapes}
+ \newlength{\tikzpeople@figwidth}
+ \newlength{\tikzpeople@captionht}
+
+ \newcommand{\tikzpeople@horizontalseparation}[1]{
+ \draw
+ ($#1*(-1,1.25) + {2.5*#1}*(0,-\value{tikzpeople@shaperow})$) --
+ +(${2*#1}*(\value{tikzpeople@shapecolumn},0)$);
+ }
+
+ \newcommand{\tikzpeople@verticalseparation}[1]{
+ \draw
+ ($#1*(-1,1.25) + {2*#1}*(\value{tikzpeople@shapecolumn},0) + {2.5*#1}*(0,-\value{tikzpeople@shaperow})$)
+ -- +($2.5*(0,-#1)$);
+ }
+
+ \NewDocumentCommand\alltikzpeople{smm}{%
+ \setlength{\tikzpeople@figwidth}{#2cm}
+ \edef\tikzpeople@foreachshape{\noexpand\foreach \noexpand\tikzpeople@shape in {\tikzpeople@shapelist}}
+ \edef\tikzpeople@numcols{\the\numexpr(\textwidth-(\tikzpeople@figwidth))/(2*\tikzpeople@figwidth)\relax}
+ \addtocounter{figure}{10}
+ \settototalheight{\tikzpeople@captionht}{%
+ \vbox{\captionof{figure}{All available characters with \texttt{minimum width=#2cm} and no additional options.}}
+ }%
+ \addtocounter{figure}{-11}
+ \edef\tikzpeople@numrows{\the\numexpr(2*(\textheight-\tikzpeople@captionht)-(5*\tikzpeople@figwidth/2))/(5*\tikzpeople@figwidth)\relax}
+ \edef\tikzpeople@numshapes{\the\numexpr\tikzpeople@numcols*\tikzpeople@numrows\relax}
+ \edef\tikzpeople@numfigs{\the\numexpr\value{tikzpeople@totalshapes}/\tikzpeople@numshapes\relax}
+ \ifthenelse{\numexpr\tikzpeople@numfigs*\tikzpeople@numshapes\relax<\value{tikzpeople@totalshapes}}{
+ \edef\tikzpeople@numfigs{\the\numexpr\tikzpeople@numfigs+1\relax}
+ }{}
+ \foreach \tikzpeople@fignum in {1,...,\tikzpeople@numfigs}{
+ \begin{figure}[htp]
+ \centering
+ \setcounter{tikzpeople@shapecolumn}{0}
+ \setcounter{tikzpeople@shaperow}{0}
+ \setcounter{tikzpeople@shapenum}{0}
+ \begin{tikzpicture}
+ \tikzpeople@foreachshape{
+ \stepcounter{tikzpeople@shapenum}
+ \ifthenelse{\value{tikzpeople@shapenum} > \numexpr(\tikzpeople@fignum-1)*\tikzpeople@numshapes\relax}{
+ \ifthenelse{\value{tikzpeople@shapenum} < \numexpr\tikzpeople@fignum*\tikzpeople@numshapes+1\relax}{
+ \coordinate (\tikzpeople@shape) at (${2*#2}*(\value{tikzpeople@shapecolumn},0) + {2.5*#2}*(0,-\value{tikzpeople@shaperow})$);
+ \node[minimum width=#2cm,\tikzpeople@shape,#3] at (\tikzpeople@shape) {\texttt{\IfBooleanTF#1{}{\tikzpeople@shape}}};
+ \tikzpeople@verticalseparation{#2}
+ \stepcounter{tikzpeople@shapecolumn}
+ \ifthenelse{\value{tikzpeople@shapecolumn}=\tikzpeople@numcols}{
+ \tikzpeople@verticalseparation{#2}
+ \ifthenelse{\value{tikzpeople@shaperow}=0}{\tikzpeople@horizontalseparation{#2}}{}
+ \stepcounter{tikzpeople@shaperow}
+ \tikzpeople@horizontalseparation{#2}
+ \setcounter{tikzpeople@shapecolumn}{0}
+ }{}
+ }{}
+ }{}
+ }
+ \ifthenelse{\value{tikzpeople@shapecolumn}=0}{}{
+ \tikzpeople@verticalseparation{#2}
+ \ifthenelse{\value{tikzpeople@shaperow}=0}{\tikzpeople@horizontalseparation{#2}}{}
+ \stepcounter{tikzpeople@shaperow}
+ \tikzpeople@horizontalseparation{#2}
+ }
+ \end{tikzpicture}
+ \caption{\tikzpeople@captiontext{#2}{#3}}
+ \label{fig:tikzpeoplefigure\tikzpeople@fignum}
+ \end{figure}
+ }
+ }
+
+ \newcommand{\tikzpeople@captiontext}[2]{
+ \ifstrempty{#2}{
+ All available characters with \texttt{minimum width=#1cm} and no additional options. %
+ }{%
+ All available characters with \texttt{minimum width=#1cm} and \texttt{#2} options. %
+ }%
+ \ifnum\tikzpeople@numfigs>1%
+ (Part \tikzpeople@fignum~of \tikzpeople@numfigs)
+ \fi
+ }
+
+ \newcommand{\tikzpeoplecolors}[1]{
+ \begin{minipage}{.95\textwidth}
+ \begin{center}
+ \centering
+ \expandafter\let\expandafter\tikzpeople@peoplecolors\csname tikzpeople@#1@colors\endcsname
+ \begin{tikzpicture}
+ \node[minimum width=2.5cm,#1] {};
+ \foreach \tikzpeople@name/\tikzpeople@angle/\tikzpeople@coords in \tikzpeople@peoplecolors{
+ \node (label) at (\tikzpeople@angle:2.5) {\tikzpeople@name};
+ \foreach \x/\y in \tikzpeople@coords{
+ \draw (label) edge (\x,\y);
+ }
+ }
+ \end{tikzpicture}
+ \captionof{figure}{The available color-keys for \texttt{#1} tikzpeople.}
+ \end{center}
+ \end{minipage}
+ }
+
+\fi
+
+\tikzpeople@declareshape{alice}
+\tikzpeople@declareshape{bob}
+\tikzpeople@declareshape{bride}
+\tikzpeople@declareshape{builder}
+\tikzpeople@declareshape{businessman}
+\tikzpeople@declareshape{charlie}
+\tikzpeople@declareshape{chef}
+\tikzpeople@declareshape{conductor}
+\tikzpeople@declareshape{cowboy}
+\tikzpeople@declareshape{criminal}
+\tikzpeople@declareshape{dave}
+\tikzpeople@declareshape{devil}
+\tikzpeople@declareshape{duck}
+\tikzpeople@declareshape{graduate}
+\tikzpeople@declareshape{groom}
+\tikzpeople@declareshape{guard}
+\tikzpeople@declareshape{jester}
+\tikzpeople@declareshape{judge}
+\tikzpeople@declareshape{maninblack}
+\tikzpeople@declareshape{mexican}
+\tikzpeople@declareshape{nun}
+\tikzpeople@declareshape{nurse}
+\tikzpeople@declareshape{physician}
+\tikzpeople@declareshape{pilot}
+\tikzpeople@declareshape{police}
+\tikzpeople@declareshape{priest}
+\tikzpeople@declareshape{sailor}
+\tikzpeople@declareshape{santa}
+\tikzpeople@declareshape{surgeon}
+
+\let\pgfmath@function@veclen\relax
+\pgfmathdeclarefunction{veclen}{2}{%
+ \begingroup%
+ \pgfmath@x#1pt\relax%
+ \pgfmath@y#2pt\relax%
+ \ifdim\pgfmath@x<0pt\relax%
+ \pgfmath@x-\pgfmath@x%
+ \fi%
+ \ifdim\pgfmath@y<0pt\relax%
+ \pgfmath@y-\pgfmath@y%
+ \fi%
+ \ifdim\pgfmath@x=0pt\relax%
+ \pgfmath@x\pgfmath@y%
+ \else%
+ \ifdim\pgfmath@y=0pt\relax%
+ \else%
+ \ifdim\pgfmath@x>\pgfmath@y%
+ \pgfmath@xa\pgfmath@x%
+ \pgfmath@x\pgfmath@y%
+ \pgfmath@y\pgfmath@xa%
+ \fi%
+ % We use a scaling factor to reduce errors.
+ % First, see if we should scale down
+ \let\pgfmath@tmp@scale=\divide
+ \let\pgfmath@tmp@restore=\multiply
+ \ifdim\pgfmath@y>10000pt\relax%
+ \c@pgfmath@counta1500\relax%
+ \else%
+ \ifdim\pgfmath@y>1000pt\relax%
+ \c@pgfmath@counta150\relax%
+ \else%
+ \ifdim\pgfmath@y>100pt\relax%
+ \c@pgfmath@counta50\relax%
+ \else%
+ % Not scaling down, should we scale up?
+ \let\pgfmath@tmp@scale=\multiply
+ \let\pgfmath@tmp@restore=\divide
+ \ifdim\pgfmath@y<0.00001pt\relax%
+ \c@pgfmath@counta1500\relax%
+ \else%
+ \ifdim\pgfmath@y<0.0001pt\relax%
+ \c@pgfmath@counta150\relax%
+ \else%
+ \ifdim\pgfmath@y<0.001pt\relax%
+ \c@pgfmath@counta50\relax%
+ \else
+ \c@pgfmath@counta1\relax%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \pgfmath@tmp@scale\pgfmath@x\c@pgfmath@counta\relax%
+ \pgfmath@tmp@scale\pgfmath@y\c@pgfmath@counta\relax%
+ \pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
+ \pgfmath@x\pgfmathresult\pgfmath@x%
+ \pgfmath@xa\pgfmath@tonumber{\pgfmath@x}\pgfmath@x%
+ \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@xa}}%
+ %
+ % Use A+x^2*(B+x^2*(C+x^2*(D+E*x^2)))
+ % where
+ % A = +1.000012594
+ % B = +0.4993615349
+ % C = -0.1195159052
+ % D = +0.04453994279
+ % E = -0.01019210944
+ %
+ \pgfmath@x-0.01019210944\pgfmath@xa%
+ \advance\pgfmath@x0.04453994279pt\relax%
+ \pgfmath@x\pgfmath@temp\pgfmath@x%
+ \advance\pgfmath@x-0.1195159052pt\relax%
+ \pgfmath@x\pgfmath@temp\pgfmath@x%
+ \advance\pgfmath@x0.4993615349pt\relax%
+ \pgfmath@x\pgfmath@temp\pgfmath@x%
+ \advance\pgfmath@x1.000012594pt\relax%
+ \ifdim\pgfmath@y<0pt\relax%
+ \pgfmath@y-\pgfmath@y%
+ \fi%
+ \pgfmath@x\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
+ % Invert the scaling factor.
+ \pgfmath@tmp@restore\pgfmath@x\c@pgfmath@counta\relax%
+ \fi%
+ \fi%
+ \pgfmath@returnone\pgfmath@x%
+ \endgroup%
+}
diff --git a/graphics/pgf/contrib/tikzpeople/tikzpeople.tex b/graphics/pgf/contrib/tikzpeople/tikzpeople.tex
new file mode 100644
index 0000000000..544217778e
--- /dev/null
+++ b/graphics/pgf/contrib/tikzpeople/tikzpeople.tex
@@ -0,0 +1,429 @@
+%% Copyright 2016 Nils Fleischhacker
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Nils Fleischhacker.
+%%
+%% This work consists of the files tikzpeople.tex, tikzpeople.sty,
+%% tikzpeople.shape.alice.sty, tikzpeople.shape.bob.sty,
+%% tikzpeople.shape.bride.sty, tikzpeople.shape.builder.sty,
+%% tikzpeople.shape.businessman.sty, tikzpeople.shape.charlie.sty,
+%% tikzpeople.shape.chef.sty, tikzpeople.shape.conductor.sty,
+%% tikzpeople.shape.cowboy.sty, tikzpeople.shape.criminal.sty,
+%% tikzpeople.shape.dave.sty, tikzpeople.shape.graduate.sty,
+%% tikzpeople.shape.groom.sty, tikzpeople.shape.guard.sty,
+%% tikzpeople.shape.jester.sty, tikzpeople.shape.judge.sty,
+%% tikzpeople.shape.mexican.sty, tikzpeople.shape.nun.sty,
+%% tikzpeople.shape.nurse.sty, tikzpeople.shape.physician.sty,
+%% tikzpeople.shape.pilot.sty, tikzpeople.shape.police.sty,
+%% tikzpeople.shape.priest.sty, tikzpeople.shape.sailor.sty,
+%% tikzpeople.shape.santa.sty and tikzpeople.shape.surgeon.sty
+\documentclass{ltxdoc}
+\usepackage[demo]{tikzpeople}
+\usepackage[OT1]{fontenc}
+\usepackage{hyperref}
+\usepackage{microtype}
+\usepackage{xspace}
+\usepackage[most]{tcolorbox}
+\usepackage[title]{appendix}
+\usetikzlibrary{shapes.callouts}
+
+\newcommand*{\Appendixautorefname}{Appendix}
+
+
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+\selectcolormodel{cmyk}
+
+\newcommand{\tikzname}{Ti\emph{k}Z\xspace}
+
+\newcommand{\varg}[1]{%
+ {\ttfamily\char`\{}#1{\ttfamily\char`\}}}
+\newcommand{\DescribeOption}[1]{\leavevmode
+ \marginpar{\raggedleft\strut\MacroFont\string #1\ }}
+
+\lstdefinestyle{example}{style=tcblatex,
+ classoffset=0,
+ texcsstyle=*\color{blue},%
+ deletetexcs={begin,end},
+ moretexcs={,%
+ pgfdeclarehorizontalshading,pgfuseshading,node,
+ useasboundingbox,draw}%
+ classoffset=1,
+ keywordstyle=\color{blue},%
+ morekeywords={tikzpicture,shade,fill,draw,path,node,child,line,width,rectangle,minimum width,minimum size},
+ classoffset=0}
+
+\tcbset{%
+ fillbackground/.style={before lower pre={%
+ \tikzset{every picture/.style={execute at end picture={\begin{pgfonlayer}{background}
+ \fill[yellow!15]
+ ([xshift=-4mm,yshift=-4mm]current bounding box.south west) rectangle
+ ([xshift=4mm,yshift=4mm]current bounding box.north east);
+ \end{pgfonlayer}}}}}},
+ explicitpicture/.style={before lower=\begin{center},after lower=\end{center},fillbackground}}
+
+\newtcblisting{codeexample}[2][]{%
+ enhanced,frame hidden,
+ top=0pt,bottom=0pt,left=0pt,right=0pt,arc=0pt,boxrule=0pt,
+ colback=blue!15,
+ listing style=example,
+ sidebyside,text and listing,text outside listing,sidebyside gap=2mm,
+ lefthand width=#2,tikz lower,fillbackground,
+ #1}
+
+\title{\tikz{\node[graduate,shield,sword,minimum height=2cm]{}}\\The \textsf{tikzpeople} package}
+\author{Nils Fleischhacker}
+\date{}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+ This package provides people shaped pgf-shapes to be used in \tikzname pictures.
+ Given that the the only thing this package does is providing new node shapes for \tikzname, it should probably be a \tikzname library.
+ It isn't, it's a package instead, so deal with it.
+
+ The package probably has many problems and is nowhere near optimal, but if you find it useful, feel free to use it anyway.
+\end{abstract}
+
+\section{Introduction}
+ Let me start with a word of warning:
+ The node-shapes defined by this package are heavily influenced by a type of clip art included in the \textsf{Microsoft Visio} software.
+ I am by no means an expert on copyright law and as such can make no claim under which circumstances using these shapes might infringe on Microsoft's copyright.
+ I do not expect that there are any problems, but be aware of this.
+ Let's consider this package an homage to the great design of those \textsf{Visio} clip arts and get on with our lives.
+ \subsection{Intended Usecase}
+ If you are confused about any of the packages design choices, the original use-case the package was written for might serve as an explanation.
+ The package was originally written to provide me with shapes of people to depict parties in cryptographic protocols and security definitions on beamer slides.
+ An example of this can be seen in \autoref{fig:protocolexample}.
+ \begin{figure}
+ \begin{tikzpicture}[font=\small]
+ \node[businessman,female,minimum size=1.5cm] (A) {};
+ \node[police,right=3cm of A,minimum size=1.5cm,mirrored] (B) {};
+ \node[anchor=north east] at (A.north west) (a2) {$(\mathsf{com},\mathsf{dec}) \gets \mathsf{Com}(a)$};
+ \node[anchor=south] at (a2.north) (a1) {$a\gets\{0,1\}$};
+ \node[anchor=south west] at (B.south east){$a \gets \mathsf{Opn}(\mathsf{com},\mathsf{dec})$};
+ \draw (A.35) edge[->] node[above] {$\mathsf{com}$} (B.145);
+ \node[anchor=south west] at (B.east |- B.180) {$b\gets\{0,1\}$};
+ \draw (A.0) edge[<-] node[above] {$b$} (B.180);
+ \draw (A.325) edge[->] node[above] {$\mathsf{dec}$} (B.215);
+ \draw (A.270) ++(0,-.5) node {$a\oplus b$} edge[<-] (A.270);
+ \draw (B.270) ++(0,-.5) node {$a\oplus b$} edge[<-] (B.270);
+ \end{tikzpicture}
+ \caption{A secure coin flipping protocol constructed from bit commitment.}
+ \label{fig:protocolexample}
+ \end{figure}
+ If this intended use-case does not resolve your confusion with any weird behavior or design choice, then chances are good that I made a mistake or just did not know any better.
+ If you spot a mistake or know how to do something in a saner way, shoot me a message to let me know.
+
+\subsection{Installation}
+ To install the package just drop the \textsf{tikzpeople.sty} file and all the shape files, i.e. \textsf{tikzpeople.shape.\meta{shapename}.sty}, somewhere \LaTeX can find them.
+ You might for example put them in your local \textsf{texmf} tree at \url{\textasciitilde/texmf/tex/latex/tikzpeople/}.
+ Alternatively simply drop all the files into the folder where your main \textsf{.tex} file resides.\footnote{Do not use a subfolder. While you can refer to the package itself in a hackish way using a relative path, \LaTeX wont be able to find the shape files.}
+
+\section{Usage}
+ To use the \textsf{tikzpeople} shapes, just write |\usepackage|\oarg{options}\varg{tikzpeople} somewhere in the preamble of your document.
+\subsection{Package Options}
+ The package has three global options.
+ \DescribeOption{draft}
+ Compiling a document with many \textsf{tikzpeople} nodes can be very slow.
+ This is especially true for some of the node shapes that make heavy use of \tikzname decorations.
+ To make documents compile faster during the drafting stage, the |draft| option is available.
+ In draft mode all \textsf{tikzpeople} nodes are only drawn as simple outlines.
+ \makeatletter
+ \let\listbackup\tikzpeople@shapelist
+ \@tikzpeople@drafttrue
+ \let\tikzpeople@alice@paint\relax
+ \let\tikzpeople@alice@painthair\relax
+ \let\tikzpeople@alice@paintshirtdetails\relax
+ \let\tikzpeople@alice@definecolors\relax
+ \let\tikzpeople@alice@definestyles\relax
+ \let\tikzpeople@alice@colors\relax
+ \tikzpeople@declareshape{alice}
+ \begin{codeexample}{3cm}
+\node[alice,minimum size=1.5cm] {Alice};
+ \end{codeexample}
+ \@tikzpeople@draftfalse
+ \let\tikzpeople@alice@paint\relax
+ \let\tikzpeople@alice@painthair\relax
+ \let\tikzpeople@alice@paintshirtdetails\relax
+ \let\tikzpeople@alice@definecolors\relax
+ \let\tikzpeople@alice@definestyles\relax
+ \let\tikzpeople@alice@colors\relax
+ \tikzpeople@declareshape{alice}
+ \let\tikzpeople@shapelist\listbackup
+ \makeatother
+
+ \DescribeOption{demo}
+ The |demo| option loads the package in demo mode, introducing additional commands.
+ These commands |\alltikzpeople| and |\tikzpeoplecolors| explained below are not meant for productive use.
+ They are useful for showcasing the available shapes with different node options and getting information for customizing colors.
+
+ \DescribeOption{nobeards}
+ The |nobeards| option removes all beards from \textsf{tikzpeople} nodes.
+ In particular, \textsf{tikzpeople} marked as evil no longer have goatees.
+ This option exists because I have been informed that having evil \textsf{tikzpeople} with goatees is very insensitive and discriminatory against people with goatees.
+ For a little bit of petty defiance, this option also removes Santa's beard.
+
+ \DescribeOption{saturated}
+ The \textsf{saturated} option causes all nodes to be rendered with saturated colors.
+ Standard nodes are rendered with somewhat washed out colors.
+ This works well on light backgrounds but can look weird on dark background.
+ The |saturated| option can also be used on individual nodes.
+
+\subsection{Available Shapes}
+ Once the package is loaded, any of the defined shapes can be used as the shape of any \tikzname node just like any other predefined shape.
+ \begin{codeexample}{3cm}
+\node[draw,rectangle,minimum size=1.5cm] at (0,2) {};
+\node[businessman,minimum size=1.5cm] at (0,0) {};
+ \end{codeexample}
+ However, it should be noted that in many respects the nodes behave quite differently from standard node shapes.
+ First, the nodes are drawn and filled, whether |draw| and |fill| are specified or not, because -- quite frankly -- if you do not want to draw the node, then the \textsf{tikzpeople} are quite useless to you.
+ Another area where the behavior might be unexpected to the experienced \tikzname user is concerning the node text.
+ \begin{codeexample}{3cm}
+\node[draw,rectangle,minimum size=1.5cm] at (0,2) {A Rectangle};
+\node[businessman,minimum size=1.5cm] (B) at (0,0) {A Businessman};
+\draw[gray,dotted] (B.north west) rectangle (B.south east);
+ \end{codeexample}
+ The text appears below the actual node, not within and the width of the text influence neither the drawn shape nor any of the border anchors.
+ The reason for this is that in the intended usecase, the node text -- if present at all -- is simply a label and is not supposed to influence the size or behavior of the node.
+
+ Another oddity of the tikzpeople shapes is that the border anchors and size of the node only takes into consideration the underlying shape of a person, and nothing of the -- sometimes much larger -- stuff such as hats added by some of the shapes.
+ \begin{codeexample}{3cm}
+\node[person,minimum size=1.5cm] (B) at (0,4) {A Person};
+\draw[gray,dotted] (B.north west) rectangle (B.south east);
+\node[mexican,minimum size=1.5cm] (M) at (0,0) {A Mexican};
+\draw[gray,dotted] (M.north west) rectangle (M.south east);
+ \end{codeexample}
+ Again, the reason for this is that two shapes specified to have the same size, should behave like two people of same size.
+ If for example \texttt{minimum width} would take the actual width into consideration, then the Mexican would be much smaller than the person.
+
+ While all of these oddities are useful to me and in my specific usecase, they may cause problem for you in any number of ways.
+ So if you don't think you will be able to cope with them, I suggest you stop reading and look elsewhere for people-shaped \tikzname nodes.
+
+\subsection{The Available Shapes}
+ \DescribeMacro{\alltikzpeople} If the package is loaded with the |demo| option, all provided shapes can easily be viewed using the |\alltikzpeople|\allowbreak\marg{width}\allowbreak\marg{options} command.
+ The command takes two arguments.
+ The first argument specifies the |minimum size| of the drawn nodes in centimeters, the second argument is a comma separated list of options passed to each node.
+ The command then produces figures such as \autoref{fig:tikzpeoplefigure1} and \autoref{fig:tikzpeoplefigure2}, which were produces using the command |\alltikzpeople|\varg{1.5}\varg{}
+ \DescribeMacro{\alltikzpeople*} The starred version of the command does exactly the same but omits the name of the shapes.
+ \alltikzpeople{1.5}{}
+\subsection{General Node Options}
+ A number of options can be used to influence the appearance of \textsf{tikzpeople}.
+ These options are explained here in alphabetical order.
+ Not all nodes are affected by all options.
+ This is the case if the option is either simply not applicable or if I have not found a way to make is look not weird.
+
+ \DescribeOption{evil} The |evil| option is supposed to make nodes look more evil than usual.
+ For most tikzpeople this is accomplished by adding horns and a goatee.
+ \begin{codeexample}{3.2cm}
+\node[priest,minimum size=1cm,xshift=-1.2cm]{};
+\node[priest,evil,minimum size=1cm] {};
+ \end{codeexample}
+ This is especially useful to depict attackers in a cryptographic or security setting.
+ Unaffected by this option are: \texttt{guard,santa,devil}.
+ The color of the horns is controlled with the |horns| key.
+
+ \DescribeOption{female} The |female| option is supposed to make stereotypically male nodes look just a tad more feminine.
+ For most tikzpeople this is accomplished by adding longer hair and losing the beard -- though surprisingly, evil women still tend to have a goatee.
+ \begin{codeexample}{3.2cm}
+\node[conductor,minimum size=1cm,xshift=-1.2cm]{};
+\node[conductor,female,minimum size=1cm]{};
+ \end{codeexample}
+ This is useful to avoid being called sexist for not having women in you figures.
+ On the other hand people can now accuse you of enforcing gender stereotypes. So have fun.
+ Unaffected by this option are: \texttt{alice, bride, guard, judge, nun, pilot}.
+
+ \DescribeOption{good} The |good| option is supposed to make nodes look extraordinarily good.
+ For most tikzpeople this is accomplished by adding a halo.
+ \begin{codeexample}{3.2cm}
+\node[sailor,minimum size=1cm,xshift=-1.2cm]{};
+\node[sailor,good,minimum size=1cm]{};
+ \end{codeexample}
+ This could be useful to, e.g., depict a trusted party in a security context.
+ Unaffected by this option are: \texttt{guard, mexican, santa}.
+ The color of the halo is controlled with the |halo| key.
+
+ \DescribeOption{mirrored} The \textsf{mirrored} option makes nodes face to the left instead of the right.
+ \begin{codeexample}{3.2cm}
+\node[graduate,minimum size=1cm,xshift=-1.2cm]{};
+\node[graduate,mirrored,minimum size=1cm]{};
+ \end{codeexample}
+ I'm sure you will figure out the usefulness of this option on you own.
+
+ \DescribeOption{monitor} The \textsf{monitor} option draws a monitor in front of the node.
+ \begin{codeexample}{4cm}
+\node[judge,minimum size=1cm,xshift=-1.2cm]{};
+\node[judge,monitor,minimum size=1cm]{};
+ \end{codeexample}
+ This could be useful to emphasize that parties are actually using a computer and not doing complex computations in their head.
+
+ \DescribeOption{saturated} The \textsf{saturated} option causes the node to be rendered with saturated colors.
+ \begin{codeexample}{3.2cm}
+\node[pilot,minimum size=1cm,xshift=-1.2cm]{};
+\node[pilot,saturated,minimum size=1cm]{};
+ \end{codeexample}
+ Standard nodes are rendered with somewhat washed out colors.
+ This works well on light backgrounds but can look weird on dark background.
+ The |saturated| option can also be used as a global package option.
+
+ \DescribeOption{shield} The \textsf{shield} option gives the node a shield.
+ \begin{codeexample}{4cm}
+\node[alice,minimum size=1cm,xshift=-1.2cm]{};
+\node[alice,shield,minimum size=1cm]{};
+ \end{codeexample}
+ This could be useful to symbolize that a party is defending something and combines well with the |sword| option.
+ The colors of the shield are controlled using the keys |shieldmid|, |shieldedge|, and |shieldrivets|.
+
+ \DescribeOption{sword} The \textsf{sword} option gives the node a sword.
+ \begin{codeexample}{4cm}
+\node[dave,minimum size=1cm,xshift=-1.2cm]{};
+\node[dave,sword,minimum size=1cm]{};
+ \end{codeexample}
+ This could be useful to symbolize that a party is attacking or defending something and combines well with the |shield| option.
+ The colors of the sword are controlled using the keys |swordblade|, |swordguard|, |swordpommel|, and |swordgrip|.
+
+ All of these options can be arbitrarily combined. So, e.g., |good| \textsf{tikzpeople} can very well be |evil| at the same time.
+ \begin{codeexample}{4cm}
+\node[chef,evil,female,good,mirrored,monitor,
+ saturated,shield,sword,minimum size=1.5cm]{};
+ \end{codeexample}
+\subsection{Color Options}
+ Almost all the colors used in the \textsf{tikzpeople} shapes can be specified separately.
+ So if you feel, that you do not need a simple priest, but a cardinal instead, just take the priest, make the shirt and hat red and give him gray hair and we have a decent approximation of a cardinal.\footnote{In my defense, I'm not catholic, so I might be missing something crucial about cardinals. Rest assured that I meant no disrespect.}
+ \begin{codeexample}{3cm}
+\node[priest, shirt=red, hat=red, hair=gray, minimum size=1.5cm]{};
+ \end{codeexample}
+ Similarly, maybe what we actually need is a monk.\footnote{Again, I do not know much about monks...}
+ \begin{codeexample}{3cm}
+\node[priest,shirt=brown, hat=skin, cross=gray, collar=brown, minimum size=1.5cm]{};
+ \end{codeexample}
+ What I'm trying to get across is, using changes in coloring, we get tons of additional options for different kinds of \textsf{tikzpeople} we can draw.
+
+ \DescribeMacro{\tikzpeoplecolors} If the package is loaded with the |demo| option, you can use the command |\tikzpeoplecolors|\marg{shapename} to produce a figure giving you an idea, which color keys can be used for which shape.
+ For your convenience, all of those figures are included in \autoref{app:colors}.
+
+ \subsection{Text Options}
+ Some \textsf{tikzpeople} have include customizable text, such as the |businessman|'s monogram.
+ These texts can be specified with pgfkeys just as with the color options.
+ \vspace{.75em}
+ \begin{codeexample}{3cm}
+\path [clip] (0cm,1cm) rectangle (1.5cm,-1cm);
+\node[businessman, monogramtext=ER ,minimum size=5cm]{};
+ \end{codeexample}
+
+ \vspace{1em}
+
+ All texts are scaled to fit the available space. Specifying significantly longer text will therefore cause it to be unreadable.
+
+ \DescribeOption{monogramtext} The |monogramtext| option is available for |businessman| shapes and changes the text of the monogram.
+ While you can change the monogram to any arbitrary text, you should be aware that the monogram is rendered as |\mathcal| and anything except for uppercase letters will probably lead to unexpected results.
+
+ \DescribeOption{badgetext} The |badgetext| option is available for |nurse| shapes and changes the text printed on the badge.
+
+\subsection{Anchors}
+ \tikzset{shape example/.style={color=black!30, draw, fill=yellow!30, minimum size=3cm}}
+ \begin{figure}[htp]
+ \centering
+ \begin{tikzpicture}
+ \node[name=s,shape=businessman,minimum width=3cm,skin=yellow!30!,hair=black!30!,tie=black!30!,undershirt=yellow!30!,shirt=black!30!,monogram=black!30!] {Businessman\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid west/above left, mid/above, mid east/above right,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/below left, 10/right, 20/right, 30/right, 40/right, 130/left,
+ 160/left, 190/left, mouth/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+ \end{tikzpicture}
+ \caption{Anchors of a \texttt{businessman} tikzpeople shape.}
+ \label{fig:anchors1}
+ \end{figure}
+ \begin{figure}[htp]
+ \centering
+ \begin{tikzpicture}
+ \node[name=s,shape=guard,minimum width=3cm,skin=yellow!30!,hat=black!30!,lining=yellow!30!,details=yellow!30!,shirt=black!30!,collar=black!30!] {Guard\vrule width 1pt height 2cm};
+ \foreach \anchor/\placement in
+ {north west/above left, north/above, north east/above right,
+ west/left, center/above, east/right,
+ mid west/above left, mid/above, mid east/above right,
+ base west/left, base/below, base east/right,
+ south west/below left, south/below, south east/below right,
+ text/below left, 10/right, 20/right, 30/right, 40/right, 130/left,
+ 160/left, 190/left, mouth/above}
+ \draw[shift=(s.\anchor)] plot[mark=x] coordinates{(0,0)}
+ node[\placement] {\scriptsize\texttt{(s.\anchor)}};
+ \end{tikzpicture}
+ \caption{Anchors of a \texttt{guard} tikzpeople shape.}
+ \label{fig:anchors2}
+ \end{figure}
+ Basically all standard anchors for nodes exist also for tikzpeople nodes.
+ However, as mentioned before, most of them are not influenced by the node text.
+ Basically the only anchors that depend on the node text are the |text|, |base|, and |mid| anchors.
+ Furthermore, the anchors only take into account the basic shape of the person, not any of the -- possibly much larger -- additions such as hats.
+ As a reference, \autoref{fig:anchors1} and \autoref{fig:anchors2} show all the anchors of |businessman| and |guard| nodes.
+
+ A special anchor is the |mouth| anchor. In conjunction with \tikzname's |callout| shapes this anchor allows to easily depict talking \textsf{tikzpeople}..
+ \begin{codeexample}{4.6cm}
+\node[name=a,shape=police,minimum size=1cm,xshift=-1.25cm] {};
+\node[name=b,shape=criminal,minimum size=1cm,mirrored,xshift=1.25cm] {};
+\node[ellipse callout, draw,yshift= .3cm, callout absolute pointer={(a.mouth)}, font=\tiny] {Hey!};
+\node[ellipse callout, draw, yshift=-.3cm, callout absolute pointer={(b.mouth)}, font=\tiny] {What?};
+ \end{codeexample}
+
+\subsection{Messing with PGF Internals}
+When using several of the |decoration| heavy \textsf{tikzpeople}, the package runs into errors in the internals of |pgf|.
+Namely into ``Dimension to large'' errors in the |\pgfmath@function@veclen| command.
+Apparently this happens because we are working with numbers that are too small.
+As per this \TeX-stackexchange answer \url{http://tex.stackexchange.com/a/20888/15636}, \textsf{tikzpeople} redeclares |\pgfmath@function@veclen| with a fixed version.
+
+
+\clearpage
+\begin{appendices}
+ \section{Color Options}
+ \label{app:colors}
+ \tikzpeoplecolors{alice}
+ \vfill\tikzpeoplecolors{bob}
+ \vfill\tikzpeoplecolors{bride}
+ \vfill\tikzpeoplecolors{builder}
+ \vfill\tikzpeoplecolors{businessman}
+ \vfill\tikzpeoplecolors{charlie}
+ \vfill\tikzpeoplecolors{chef}
+ \vfill\tikzpeoplecolors{conductor}
+ \vfill\tikzpeoplecolors{cowboy}
+ \vfill\tikzpeoplecolors{criminal}
+ \vfill\tikzpeoplecolors{dave}
+ \vfill\tikzpeoplecolors{devil}
+ \vfill\tikzpeoplecolors{duck}
+ \vfill\tikzpeoplecolors{graduate}
+ \vfill\tikzpeoplecolors{groom}
+ \vfill\tikzpeoplecolors{guard}
+ \vfill\tikzpeoplecolors{jester}
+ \vfill\tikzpeoplecolors{judge}
+ \vfill\tikzpeoplecolors{maninblack}
+ \vfill\tikzpeoplecolors{mexican}
+ \vfill\tikzpeoplecolors{nun}
+ \vfill\tikzpeoplecolors{nurse}
+ \vfill\tikzpeoplecolors{physician}
+ \vfill\tikzpeoplecolors{pilot}
+ \vfill\tikzpeoplecolors{police}
+ \vfill\tikzpeoplecolors{priest}
+ \vfill\tikzpeoplecolors{sailor}
+ \vfill\tikzpeoplecolors{santa}
+ \vfill\tikzpeoplecolors{surgeon}
+ \end{appendices}
+\end{document}
+