From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- graphics/pgf/contrib/tikzpeople/README.md | 27 + graphics/pgf/contrib/tikzpeople/tikzpeople.pdf | Bin 0 -> 501737 bytes .../contrib/tikzpeople/tikzpeople.shape.alice.sty | 73 ++ .../contrib/tikzpeople/tikzpeople.shape.bob.sty | 92 ++ .../contrib/tikzpeople/tikzpeople.shape.bride.sty | 117 +++ .../tikzpeople/tikzpeople.shape.builder.sty | 80 ++ .../tikzpeople/tikzpeople.shape.businessman.sty | 104 +++ .../tikzpeople/tikzpeople.shape.charlie.sty | 125 +++ .../contrib/tikzpeople/tikzpeople.shape.chef.sty | 74 ++ .../tikzpeople/tikzpeople.shape.conductor.sty | 141 ++++ .../contrib/tikzpeople/tikzpeople.shape.cowboy.sty | 147 ++++ .../tikzpeople/tikzpeople.shape.criminal.sty | 97 +++ .../contrib/tikzpeople/tikzpeople.shape.dave.sty | 125 +++ .../contrib/tikzpeople/tikzpeople.shape.devil.sty | 77 ++ .../contrib/tikzpeople/tikzpeople.shape.duck.sty | 104 +++ .../tikzpeople/tikzpeople.shape.graduate.sty | 103 +++ .../contrib/tikzpeople/tikzpeople.shape.groom.sty | 122 +++ .../contrib/tikzpeople/tikzpeople.shape.guard.sty | 97 +++ .../contrib/tikzpeople/tikzpeople.shape.jester.sty | 107 +++ .../contrib/tikzpeople/tikzpeople.shape.judge.sty | 116 +++ .../tikzpeople/tikzpeople.shape.maninblack.sty | 119 +++ .../tikzpeople/tikzpeople.shape.mexican.sty | 114 +++ .../contrib/tikzpeople/tikzpeople.shape.nun.sty | 85 ++ .../contrib/tikzpeople/tikzpeople.shape.nurse.sty | 89 ++ .../tikzpeople/tikzpeople.shape.physician.sty | 104 +++ .../contrib/tikzpeople/tikzpeople.shape.pilot.sty | 106 +++ .../contrib/tikzpeople/tikzpeople.shape.police.sty | 117 +++ .../contrib/tikzpeople/tikzpeople.shape.priest.sty | 87 ++ .../contrib/tikzpeople/tikzpeople.shape.sailor.sty | 118 +++ .../contrib/tikzpeople/tikzpeople.shape.santa.sty | 104 +++ .../tikzpeople/tikzpeople.shape.surgeon.sty | 76 ++ graphics/pgf/contrib/tikzpeople/tikzpeople.sty | 924 +++++++++++++++++++++ graphics/pgf/contrib/tikzpeople/tikzpeople.tex | 429 ++++++++++ 33 files changed, 4400 insertions(+) create mode 100644 graphics/pgf/contrib/tikzpeople/README.md create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.pdf create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.alice.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bob.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.bride.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.builder.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.businessman.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.charlie.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.chef.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.conductor.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.cowboy.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.criminal.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.dave.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.devil.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.duck.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.graduate.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.groom.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.guard.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.jester.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.judge.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.maninblack.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.mexican.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nun.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.nurse.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.physician.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.pilot.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.police.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.priest.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.sailor.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.santa.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.shape.surgeon.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.sty create mode 100644 graphics/pgf/contrib/tikzpeople/tikzpeople.tex (limited to 'graphics/pgf/contrib/tikzpeople') 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{}{} produces a series of figures + of all available shapes with the given width and the provided options + applied. The command \tikzpeoplecolors{} 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 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 Binary files /dev/null and b/graphics/pgf/contrib/tikzpeople/tikzpeople.pdf 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} + -- cgit v1.2.3