summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tikzlings
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pgf/contrib/tikzlings
Initial commit
Diffstat (limited to 'graphics/pgf/contrib/tikzlings')
-rw-r--r--graphics/pgf/contrib/tikzlings/README.md20
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-addons.sty824
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-bears.sty128
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-cats.sty232
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-coatis.sty176
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-doc.pdfbin0 -> 473505 bytes
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-doc.tex1311
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-hippos.sty141
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-koalas.sty172
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-marmots.sty223
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-mice.sty138
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-moles.sty144
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-owls.sty136
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-pandas.sty128
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-penguins.sty128
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-pigs.sty134
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty142
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-sloths.sty171
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings-snowmans.sty132
-rw-r--r--graphics/pgf/contrib/tikzlings/tikzlings.sty67
20 files changed, 4547 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikzlings/README.md b/graphics/pgf/contrib/tikzlings/README.md
new file mode 100644
index 0000000000..0c93eac163
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/README.md
@@ -0,0 +1,20 @@
+# TikZlings
+A collection of animals and other beings from the tikz world
+
+Current version: 2019/04/07 v0.2
+
+This project is licensed under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+![tikzlings](https://github.com/samcarter/tikzlings/blob/master/Examples/tikzlings.png)
+
+### TikZlings in action
+
+Several TikZlings are featured in the following video:
+
+[![The great TikZlings Christmas Extravaganza 2018](https://user-images.githubusercontent.com/43832342/49704004-3cd27500-fc0d-11e8-9002-319a8e71aca7.png)](https://vimeo.com/305374856)
+
+The source code for the "The great TikZlings Christmas Extravaganza 2018" can be found at https://github.com/samcarter/Extravanganza2018 .
+
+
+
+
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-addons.sty b/graphics/pgf/contrib/tikzlings/tikzlings-addons.sty
new file mode 100644
index 0000000000..fb15b68719
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-addons.sty
@@ -0,0 +1,824 @@
+% !TeX root = ./testing/test.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-addons package (part of the tikzlings collection)
+% A package to draw litlle things with tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-addons}
+ [2019/04/07 v0.2 Draw additional items for the tikzlings]
+
+\RequirePackage{tikz}
+\usetikzlibrary{patterns} % for the wizard hat
+
+\newcommand*{\thing}[1][]{%
+ \begin{scope}%
+ \tikzset{/thing/.cd,#1}%
+ \thing@draw%
+ \end{scope}%
+}
+
+% Hats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifthing@hat
+\newif\ifthing@tophat
+\newif\ifthing@beret
+\newif\ifthing@strawhat
+\newif\ifthing@harlequin
+\newif\ifthing@witch
+\newif\ifthing@magichat
+\newif\ifthing@crown
+\newif\ifthing@queencrown
+\newif\ifthing@kingcrown
+\newif\ifthing@santa
+\newif\ifthing@chef
+\newif\ifthing@graduate
+\newif\ifthing@alien
+% Communication %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifthing@book
+\newif\ifthing@signpost
+\newif\ifthing@speech
+\newif\ifthing@think
+% Food %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifthing@pizza
+\newif\ifthing@davidlikespineapplepizza
+\newif\ifthing@cheese
+\newif\ifthing@baguette
+\newif\ifthing@cake
+\newif\ifthing@icecream
+\newif\ifthing@milkshake
+\newif\ifthing@wine
+\newif\ifthing@cocktail
+% Sport %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifthing@cricket
+\newif\ifthing@hockey
+\newif\ifthing@football
+% Other %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifthing@crystalball
+\newif\ifthing@magicwand
+\newif\ifthing@rollingpin
+\newif\ifthing@lightsaber
+\newif\ifthing@torch
+\newif\ifthing@basket
+\newif\ifthing@easter
+\newif\ifthing@crozier
+\newif\ifthing@shovel
+\newif\ifthing@pickaxe
+\newif\ifthing@umbrella
+\newif\ifthing@umbrellaclosed
+\newif\ifthing@handbag
+
+\tikzset{%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % General
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /thing/.search also={%
+ /tikz,/pgf,
+ /bear,/coati,/koala,/marmot,/mouse,/owl,/penguin,/snowman,/mole,/sloth,/pig,/cat,/hippo,/rhino,/panda,
+ },
+ %/thing/.unknown/.code=\relax, % bad idea, prevents tikz/pgf keys
+ /thing/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Hats
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ hat/.code = \thing@hattrue
+ \def\thing@hat{#1},
+ hat/.default = blue!40!black,
+ tophat/.code = \thing@tophattrue
+ \def\thing@tophat{#1},
+ top hat/.forward to = /thing/tophat,
+ tophat/.default = black!90!white,
+ beret/.code = \thing@berettrue
+ \def\thing@beret{#1},
+ beret/.default = black,
+ strawhat/.code = \thing@strawhattrue
+ \def\thing@strawhat{#1},
+ straw hat/.forward to = /thing/strawhat,
+ strawhat/.default = gray!30!white,
+ ribbon/.code = \def\thing@ribbon{#1},
+ ribbon = black,
+ harlequin/.code = \thing@harlequintrue
+ \def\thing@harlequin{#1},
+ harlequin/.default = blue,
+ niuqelrah/.code = \def\thing@niuqelrah{#1},
+ niuqelrah = red,
+ witch/.code = \thing@witchtrue
+ \def\thing@witch{#1},
+ witch/.default = black,
+ magichat/.code = \thing@magichattrue
+ \def\thing@magichat{#1},
+ magic hat/.forward to = /thing/magichat,
+ magichat/.default = violet,
+ magicstars/.code = \def\thing@magicstars{#1},
+ magic stars/.forward to = /thing/magicstars,
+ magicstars = yellow!80!brown,
+ crown/.code = \thing@crowntrue
+ \def\thing@crown{#1},
+ crown/.default = yellow!90!orange,
+ queencrown/.code = \thing@queencrowntrue
+ \def\thing@queencrown{#1},
+ queen crown/.forward to = /thing/queencrown,
+ queencrown/.default = yellow,
+ kingcrown/.code = \thing@kingcrowntrue
+ \def\thing@kingcrown{#1},
+ king crown/.forward to = /thing/kingcrown,
+ kingcrown/.default = gray,
+ santa/.code = \thing@santatrue
+ \def\thing@santa{#1},
+ santa/.default = red!80!black,
+ chef/.code = \thing@cheftrue
+ \def\thing@chef{#1},
+ chef/.default = gray!20!white,
+ graduate/.code = \thing@graduatetrue
+ \def\thing@graduate{#1},
+ graduate/.default = black,
+ tassel/.code = \def\thing@tassel{#1},
+ tassel = red,
+ alien/.code = \thing@alientrue
+ \def\thing@alien{#1},
+ alien/.default = green,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Communication
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ book/.code = \thing@booktrue
+ \def\thing@book{#1},
+ bookcolour/.code = \def\thing@bookcolour{#1},
+ book colour/.forward to = /thing/bookcolour,
+ book color/.forward to = /thing/bookcolour,
+ bookcolor/.forward to = /thing/bookcolour,
+ bookcolour = brown,
+ signpost/.code = \thing@signposttrue
+ \def\thing@signpost{#1},
+ sign post/.forward to = /thing/signpost,
+ signcolour/.code = \def\thing@signcolour{#1},
+ sign colour/.forward to = /thing/signcolour,
+ sign color/.forward to = /thing/signcolour,
+ signcolor/.forward to = /thing/signcolour,
+ signcolour = brown!50!black,
+ signback/.code = \def\thing@signback{#1},
+ sign back/.forward to = /thing/signback,
+ signback = green!40!black,
+ speech/.code = \thing@speechtrue
+ \def\thing@speech{#1},
+ think/.code = \thing@thinktrue
+ \def\thing@think{#1},
+ bubblecolour/.code = \def\thing@bubblecolour{#1},
+ bubble colour/.forward to = /thing/bubblecolour,
+ bubble color/.forward to = /thing/bubblecolour,
+ bubblecolor/.forward to = /thing/bubblecolour,
+ bubblecolour = gray!30!white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Food
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ pizza/.code = \thing@pizzatrue,
+ davidlikespineapplepizza/.code = \thing@davidlikespineapplepizzatrue
+ \thing@speechtrue
+ \def\thing@speech{\scalebox{\scalingfactor}{\scalebox{0.9}{\tiny ih, che schifo!}}},
+ david likes pineapple pizza/.forward to = /thing/davidlikespineapplepizza,
+ cheese/.code = \thing@cheesetrue
+ \def\thing@cheese{#1},
+ cheese/.default = yellow!30!orange!60!white,
+ baguette/.code = \thing@baguettetrue
+ \def\thing@baguette{#1},
+ baguette/.default = brown,
+ cake/.code = \thing@caketrue
+ \def\thing@cake{#1},
+ cake/.default = violet,
+ icecream/.code = \thing@icecreamtrue
+ \def\thing@cone{#1},
+ ice cream/.forward to = /thing/icecream,
+ icecream/.default = brown!60!gray,
+ flavoura/.code = \def\thing@flavoura{#1},
+ flavour a/.forward to = /thing/flavoura,
+ flavoura = brown!50!black,
+ flavourb/.code = \def\thing@flavourb{#1},
+ flavour b/.forward to = /thing/flavourb,
+ flavourb = white!70!brown,
+ flavourc/.code = \def\thing@flavourc{#1},
+ flavour c/.forward to = /thing/flavourc,
+ flavourc = red!50!white,
+ milkshake/.code = \thing@milkshaketrue
+ \def\thing@milkshake{#1},
+ milkshake/.default = red!20!white,
+ wine/.code = \thing@winetrue
+ \def\thing@wine{#1},
+ wine/.default = red!70!black,
+ cocktail/.code = \thing@cocktailtrue,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Sport
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ cricket/.code = \thing@crickettrue
+ \def\thing@cricket{#1},
+ cricket/.default = brown,
+ hockey/.code = \thing@hockeytrue
+ \def\thing@hockey{#1},
+ hockey/.default = brown,
+ football/.code = \thing@footballtrue
+ \def\thing@football{#1},
+ football/.default = white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % other items
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ crystalball/.code = \thing@crystalballtrue
+ \def\thing@crystalball{#1},
+ crystal ball/.forward to = /thing/crystalball,
+ crystalball/.default = cyan,
+ magicwand/.code = \thing@magicwandtrue,
+ magic want/.forward to = /thing/magicwand,
+ rollingpin/.code = \thing@rollingpintrue
+ \def\thing@rollingpin{#1},
+ rolling pin/.forward to = /thing/rollingpin,
+ rollingpin/.default = brown,
+ lightsaber/.code = \thing@lightsabertrue
+ \def\thing@lightsaber{#1},
+ light saber/.forward to = /thing/lightsaber,
+ lightsaber/.default = green,
+ torch/.code = \thing@torchtrue
+ \def\thing@torch{#1},
+ torch/.default = gray,
+ basket/.code = \thing@baskettrue
+ \def\thing@basket{#1},
+ basket/.default = brown!70!gray,
+ easter/.code = \thing@eastertrue
+ \thing@baskettrue
+ \def\thing@basket{#1},
+ easter/.default = brown!70!gray,
+ egga/.code = \def\thing@egga{#1},
+ egg a/.forward to = /thing/egga,
+ egga = blue,
+ eggb/.code = \def\thing@eggb{#1},
+ egg b/.forward to = /thing/eggb,
+ eggb = green,
+ eggc/.code = \def\thing@eggc{#1},
+ egg c/.forward to = /thing/eggc,
+ eggc = red,
+ crozier/.code = \thing@croziertrue
+ \def\thing@crozier{#1},
+ crozier/.default = brown,
+ shovel/.code = \thing@shoveltrue
+ \def\thing@shovel{#1},
+ shovel/.default = gray,
+ pickaxe/.code = \thing@pickaxetrue
+ \def\thing@pickaxe{#1},
+ pickaxe/.default = gray,
+ umbrella/.code = \thing@umbrellatrue
+ \def\thing@umbrella{#1},
+ umbrella/.default = cyan,
+ umbrellaclosed/.code = \thing@umbrellaclosedtrue
+ \def\thing@umbrellaclosed{#1},
+ umbrellaclosed/.default = cyan,
+ umbrella closed/.forward to = /thing/umbrellaclosed,
+ handbag/.code = \thing@handbagtrue
+ \def\thing@handbag{#1},
+ handbag/.default = red!70!black,
+}
+
+\def\thing@draw{%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Hats
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@hat
+ \fill[\thing@hat,rotate around={-15:(-0.3,2.01)}] (-0.3,2.01) rectangle (0.46,2.31);
+ \fill[\thing@hat,rotate around={-15:(0.05,1.92)}] (0.05,1.92) ellipse (0.6 and 0.1);
+ \fill[\thing@hat,rotate around={-15:(0.14,2.2)}] (0.14,2.2) ellipse (0.37 and 0.08);
+\fi
+%
+% Tophat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@tophat
+ \fill[\thing@tophat,rotate around={-15:(0.1,1.94)}] (0.1,1.94) ellipse (0.48 and 0.1);
+ \fill[\thing@tophat,rotate around={-15:(0.15,2.165)}] (-0.17, 1.94) -- (0.46, 1.94) -- (0.52, 2.39) -- (-0.22, 2.39) -- cycle;
+ \fill[\thing@tophat,rotate around={-15:(0.21,2.385)}] (0.21,2.385) ellipse (0.37 and 0.08);
+\fi
+%
+% Beret %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@beret
+ \begin{scope}[xshift=-19,yshift=-2,rotate=10]
+ \fill[\thing@beret,rotate=-25] (0.13,2.15) ellipse (0.5 and 0.17);
+ \fill[\thing@beret,rotate=-25] (0.13,2.25) ellipse (0.55 and 0.17);
+ \fill[\thing@beret,rotate=-25] (0.13,2.4) circle (0.08);
+ \end{scope}
+\fi
+%
+% Straw hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@strawhat
+ \begin{scope}[xshift=-16,rotate=12,yshift=-1]
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.0) ellipse (0.75 and 0.1);
+ \fill[\thing@strawhat,rotate=-15] (0.1,2.05) rectangle (0.78,2.5);
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.5) ellipse (0.34 and 0.08);
+ \fill[\thing@strawhat,rotate=-15] (-0.3,2.02) -- (1.18,2.02) -- (0.78,2.2) -- (0.1,2.2) -- cycle;
+ \fill[\thing@ribbon,rotate=-15] (0.44,2.2) ellipse (0.34 and 0.08);
+ \fill[\thing@ribbon,rotate=-15] (0.1,2.2) rectangle (0.78,2.3);
+ \fill[\thing@strawhat,rotate=-15] (0.44,2.3) ellipse (0.34 and 0.08);
+ \end{scope}
+\fi
+%
+% Harlequin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@harlequin
+ \begin{scope}[xshift=-26]
+ \path (0.19,1.85) rectangle (1.85,2.67);
+ \begin{pgfinterruptboundingbox}
+ \fill[\thing@harlequin] (0.6006,1.9719) .. controls (0.7432,1.8954) and (0.9320,1.8698) .. (0.9320,1.8698) -- (1.0404,2.3839) .. controls (0.9223,2.8873) and (0.1755,2.5634) .. (0.3019,2.2958) .. controls (0.5807,2.5024) and (0.7251,2.3376) .. (0.6006,1.9719) -- cycle;
+ \fill[\thing@niuqelrah] (1.2853,1.8902) .. controls (1.1177,1.8507) and (0.9278,1.8703) .. (0.9278,1.8703) -- (1.0404,2.3839) .. controls (1.3637,2.8347) and (1.9373,2.3532) .. (1.7049,2.1284) .. controls (1.5267,2.3895) and (1.3204,2.2666) .. (1.2853,1.8902) -- cycle;
+ \end{pgfinterruptboundingbox}
+ \fill[\thing@harlequin] (1.7,2.07) circle (0.1);
+ \fill[\thing@niuqelrah] (0.3,2.23) circle (0.1);
+ \end{scope}
+\fi
+%
+% witch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@witch
+ \begin{scope}[xshift=-26]
+ \fill[\thing@witch,rotate=-15] (0.44,2.13) ellipse (0.75 and 0.17);
+ \fill[\thing@witch,rotate=-15] (0.05,2.2)--(0.45,3.2)--(0.82,2.2);
+ \end{scope}
+\fi
+%
+% magic hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@magichat
+ \begin{scope}[xshift=-26]
+ \path[preaction={fill, \thing@magichat!100},rotate=-5,
+ pattern=fivepointed stars, pattern color=\thing@magicstars!100]
+ (0.36,1.95)--(0.86,2.95)--(1.20,1.85);
+ \end{scope}
+\fi
+%
+% crown %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@crown
+ \fill[\thing@crown] (-0.1885,2.0616) .. controls (-0.1885,2.0616) and (-0.1479,2.1763) .. (-0.2291,2.465) -- (-0.0355,2.2378) -- (0.1141,2.3943) -- (0.201,2.1961) -- (0.4688,2.3318) .. controls (0.2677,2.1132) and (0.2944,1.9764) .. (0.2944, 1.9764) .. controls (0.1524,1.9202) and (-0.0743,1.9601) .. (-0.1885,2.0616) -- cycle;
+\fi
+%
+% Queen crown %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@queencrown
+ \begin{scope}[xshift=-26]
+ \fill[\thing@queencrown] (0.7370,2.0732) .. controls (0.6966,2.2091) and (0.6769,2.3503) ..
+ (0.6354,2.4859) .. controls (0.6149,2.5164) and (0.5958,2.5732) ..
+ (0.6498,2.5808) .. controls (0.6973,2.5907) and (0.7091,2.5350) ..
+ (0.6926,2.5016) .. controls (0.6967,2.4544) and (0.7188,2.4109) ..
+ (0.7340,2.3665) .. controls (0.7415,2.3472) and (0.7619,2.2862) ..
+ (0.7676,2.3381) .. controls (0.7755,2.3852) and (0.7871,2.4329) ..
+ (0.7833,2.4808) .. controls (0.7597,2.5148) and (0.7834,2.5720) ..
+ (0.8294,2.5570) .. controls (0.8775,2.5457) and (0.8536,2.4937) ..
+ (0.8436,2.4638) .. controls (0.8502,2.3973) and (0.8640,2.3313) ..
+ (0.8798,2.2664) .. controls (0.9047,2.2750) and (0.9168,2.3261) ..
+ (0.9342,2.3514) .. controls (0.9492,2.3853) and (0.9714,2.4171) ..
+ (0.9773,2.4540) .. controls (0.9645,2.4873) and (0.9766,2.5358) ..
+ (1.0204,2.5303) .. controls (1.0646,2.5298) and (1.0691,2.4725) ..
+ (1.0443,2.4460) .. controls (1.0440,2.3935) and (1.0580,2.3419) ..
+ (1.0671,2.2905) .. controls (1.0706,2.2719) and (1.0788,2.2126) ..
+ (1.0985,2.2554) .. controls (1.1269,2.3087) and (1.1558,2.3623) ..
+ (1.1772,2.4187) .. controls (1.1697,2.4515) and (1.1716,2.5081) ..
+ (1.2210,2.5018) .. controls (1.2706,2.4969) and (1.2686,2.4403) ..
+ (1.2406,2.4126) .. controls (1.2279,2.3600) and (1.2211,2.3057) ..
+ (1.2172,2.2518) .. controls (1.2296,2.2439) and (1.2538,2.2943) ..
+ (1.2693,2.3112) .. controls (1.2908,2.3467) and (1.3228,2.3784) ..
+ (1.3316,2.4200) .. controls (1.3203,2.4624) and (1.3708,2.5014) ..
+ (1.4051,2.4678) .. controls (1.4448,2.4342) and (1.3945,2.3994) ..
+ (1.3765,2.3710) .. controls (1.3022,2.2536) and (1.2440,2.1265) ..
+ (1.1686,2.0097) .. controls (0.9649,1.9465) and (0.8367,1.9955) ..
+ (0.7370,2.0732) -- cycle;
+ \end{scope}
+\fi
+%
+% King crown %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@kingcrown
+ \begin{scope}[xshift=-26]
+ \fill[\thing@kingcrown] (0.6572,2.0396) .. controls (0.6637,2.0838) and (0.6716,2.1289) ..
+ (0.6684,2.1735) .. controls (0.6481,2.2496) and (0.5923,2.3131) ..
+ (0.5818,2.3921) .. controls (0.5738,2.4607) and (0.6167,2.5343) ..
+ (0.6862,2.5502) .. controls (0.7548,2.5703) and (0.8210,2.5304) ..
+ (0.8720,2.4881) .. controls (0.8984,2.4712) and (0.9239,2.4324) ..
+ (0.9486,2.4249) .. controls (0.9524,2.4691) and (0.9566,2.5158) ..
+ (0.9844,2.5527) .. controls (1.0052,2.5845) and (1.0390,2.6282) ..
+ (1.0820,2.6127) .. controls (1.1212,2.5899) and (1.1378,2.5421) ..
+ (1.1478,2.5003) .. controls (1.1576,2.4639) and (1.1336,2.4180) ..
+ (1.1349,2.3906) .. controls (1.2050,2.4269) and (1.2847,2.4629) ..
+ (1.3654,2.4429) .. controls (1.4292,2.4285) and (1.4864,2.3679) ..
+ (1.4793,2.2998) .. controls (1.4859,2.2404) and (1.4407,2.1925) ..
+ (1.4006,2.1551) .. controls (1.3681,2.1232) and (1.3290,2.0951) ..
+ (1.3072,2.0544) .. controls (1.2904,2.0121) and (1.2805,1.9674) ..
+ (1.2738,1.9225) .. controls (1.1221,1.8892) and (0.9586,1.8836) ..
+ (0.8112,1.9386) .. controls (0.7535,1.9608) and (0.6999,1.9945) ..
+ (0.6572,2.0396) -- cycle;
+ \end{scope}
+\fi
+%
+% Santa %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@santa
+ \begin{scope}[xshift=-26]
+ \fill[\thing@santa]
+ (0.430,1.803) .. controls (0.590,2.174) and (0.837,2.065) ..
+ (1.118,1.954) .. controls (1.679,1.731) and (1.328,1.193) ..
+ (1.647,1.057) .. controls (1.638,1.255) and (1.745,2.104) ..
+ (1.168,2.270) .. controls (0.867,2.356) and (0.536,2.280) ..
+ (0.430,1.803) -- cycle;
+ \fill[white!80!brown]
+ (0.44,1.733) .. controls (0.211,2.299) and (1.082,2.188) ..
+ (1.456,1.759) .. controls (1.534,1.637) and (1.480,1.545) ..
+ (1.400,1.566) .. controls (1.265,1.714) and (0.577,2.267) ..
+ (0.44,1.733) -- cycle;
+ \fill[white!80!brown] (1.6,1.0) circle (0.17);
+ \end{scope}
+\fi
+%
+% Chef hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@chef
+ \begin{scope}[xshift=-26]
+ \fill[\thing@chef,rotate=-15] (0.44,2.1) ellipse (0.37 and 0.08);
+ \fill[\thing@chef,rotate=-15] (0.07,2.1) rectangle (0.81,2.55);
+ \fill[\thing@chef] (1.01,2.47) circle (0.17);
+ \fill[\thing@chef] (1.24,2.35) circle (0.15);
+ \fill[\thing@chef] (0.77,2.40) circle (0.12);
+ \fill[\thing@chef] (1.39,2.20) circle (0.12);
+ \end{scope}
+\fi
+%
+% graduate hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@graduate
+ \begin{scope}[xshift=-26]
+ \fill[\thing@graduate,rotate=-15] (0.44,2.1) ellipse (0.37 and 0.1);
+ \fill[\thing@graduate,rotate=-15] (0.07,2.1) rectangle (0.81,2.3);
+ \fill[\thing@graduate] (0.3,2.25) -- (1.05,2.35) -- (1.7,1.95) -- (0.92,1.85) -- cycle;
+ \fill[\thing@tassel,rounded corners=\scalingfactor*1] (1.12,1.89) -- (1.01,2.1) -- (1.09,2.11) -- (1.2,1.9) -- (1.2,1.3) -- (1.12,1.3) -- cycle;
+ \fill[\thing@tassel] (1.16,1.3) ellipse (0.06 and 0.12);
+ \end{scope}
+\fi
+%
+% alien %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@alien
+ \fill[\thing@alien,rotate around={15:(-0.175,2.115)}] (-0.2,1.93) rectangle (-0.15,2.3);
+ \fill[\thing@alien,rotate around={-15:(0.175,2.115)}] (0.2,1.93) rectangle (0.15,2.3);
+ \fill[\thing@alien] (-0.22,2.30) circle (0.07);
+ \fill[\thing@alien] (0.22,2.30) circle (0.07);
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Communication
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% book %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@book
+ \begin{scope}[xshift=-25,yshift=1]
+ \fill[\thing@bookcolour,rotate=-20]
+ (0.40,1.20) rectangle (0.80,0.60);
+ \node[rotate=-20*\yscalefactor/\xscalefactor, color=white] at (0.88,0.70) {\thing@book};%
+ \end{scope}
+\fi
+%
+% signpost %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@signpost
+ \begin{scope}[scale=1.7,xshift=-26,yshift=-7]
+ \fill[\thing@signcolour, rounded corners=\scalingfactor*1, rotate=-20] (0.8,0.75) rectangle (0.9,1.75);
+ \fill[\thing@signcolour, rounded corners=\scalingfactor*1, rotate=-20] (0.4,1.7) rectangle (1.3,2.4);
+ \fill[\thing@signback, rounded corners=\scalingfactor*1, rotate=-20] (0.45,1.75) rectangle (1.25,2.35);
+ \node[rotate=-20*\yscalefactor/\xscalefactor, color=white] at (1.5,1.65) {\thing@signpost};
+ \end{scope}
+\fi
+%
+% speech bubble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@speech
+ \begin{scope}[xshift=-26]
+ \fill[\thing@bubblecolour] (-0.5,1.8) ellipse (0.7 and 0.3);
+ \fill[\thing@bubblecolour] (-0.2,1.54) -- (0.2,1.35) -- (0.0,1.6) -- cycle;
+ \node at (-0.5,1.8) {\thing@speech};
+ \end{scope}
+\fi
+%
+% think bubble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@think
+ \begin{scope}[xshift=-26]
+ \fill[\thing@bubblecolour] (2,2.4) ellipse (0.7 and 0.35);
+ \fill[\thing@bubblecolour] (1.55,2.35) circle (0.25) (2.0,2.15) circle (0.25) (2.4,2.25) circle (0.25) (1.6,2.55) circle (0.25) (2.0,2.6) circle (0.25) (2.35,2.5) circle (0.25) (1.65,1.95) circle (0.1) (1.55,1.80) circle (0.06) (1.47,1.70) circle (0.03);
+ \node at (2,2.4) {\thing@think};
+ \end{scope}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Food
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% pizza %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@pizza
+ \begin{scope}[xshift=-28,yshift=2]
+ \fill[brown] (1.00,0.60) ellipse (0.4 and 0.2);
+ \fill[red!70!black] (1.00,0.60) ellipse (0.34 and 0.16);
+ \fill[white!85!yellow] (1.15,0.65) ellipse (0.065 and 0.04);
+ \fill[white!85!yellow] (0.81,0.57) ellipse (0.065 and 0.04);
+ \fill[white!85!yellow] (0.95,0.68) ellipse (0.065 and 0.04);
+ \fill[white!85!yellow] (1.02,0.54) ellipse (0.065 and 0.04);
+ \fill[green!40!brown] (1.09,0.54) ellipse (0.07 and 0.02);
+ \fill[green!40!brown,rotate=20] (1.0,0.34) ellipse (0.07 and 0.02);
+ \fill[green!40!brown,rotate=-20] (0.9,1.05) ellipse (0.07 and 0.02);
+ \fill[green!40!brown] (1.00,0.60) ellipse (0.03 and 0.06);
+ \end{scope}
+\fi
+% no pizza %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@davidlikespineapplepizza
+ \begin{scope}[xshift=-28,yshift=2]
+ \fill[brown] (1.00,0.60) ellipse (0.4 and 0.2);
+ \fill[red!70!black] (1.00,0.60) ellipse (0.34 and 0.16);
+ \fill[yellow!70!brown] (1.15,0.65) ellipse (0.08 and 0.06);
+ \fill[red!70!black] (1.15,0.65) ellipse (0.04 and 0.03);
+ \fill[yellow!70!brown] (0.81,0.57) ellipse (0.08 and 0.06);
+ \fill[red!70!black] (0.81,0.57) ellipse (0.04 and 0.03);
+ \fill[yellow!70!brown] (0.95,0.68) ellipse (0.08 and 0.06);
+ \fill[red!70!black] (0.95,0.68) ellipse (0.04 and 0.03);
+ \fill[yellow!70!brown] (1.02,0.54) ellipse (0.08 and 0.06);
+ \fill[red!70!black] (1.02,0.54) ellipse (0.04 and 0.03);
+ \fill[green!40!brown] (1.09,0.54) ellipse (0.07 and 0.02);
+ \fill[green!40!brown,rotate=20] (1.0,0.34) ellipse (0.07 and 0.02);
+ \fill[green!40!brown,rotate=-20] (0.9,1.05) ellipse (0.07 and 0.02);
+ \fill[green!40!brown] (1.00,0.60) ellipse (0.03 and 0.06);
+ \end{scope}
+\fi
+%
+% Cheese %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@cheese
+ \fill[\thing@cheese] (-0.3200,0.8058) -- (0.0608,0.7220) -- (0.0608,0.6366) -- (-0.3200,0.5410) -- (0.2143,0.4236) .. controls (0.3395,0.4810) and (0.4241,0.5627) .. (0.4117,0.6253) -- (0.4117,0.7634) .. controls (0.4261,0.8618) and (0.2607,0.8954) .. (0.1907,0.8962) -- cycle;
+ \fill[\thing@cheese!35!white] (-0.3200,0.8057) -- (-0.3200,0.5410) -- (0.2143,0.4236) -- (0.2143,0.7381) -- cycle;
+ \fill[\thing@cheese] (-0.23,0.71) circle (0.04) (0.0,0.55) circle (0.04) (-0.23,0.58) circle (0.02) (-0.15,0.6) circle (0.02) (-0.1,0.7) circle (0.02) (0.1,0.65) circle (0.02) (0,0.65) circle (0.02) (0.1,0.5) circle (0.02) (0.07,0.55) circle (0.01) (0.12,0.6) circle (0.01) (-0.08,0.54) circle (0.01);
+\fi
+%
+% baguette %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@baguette
+ \begin{scope}[xshift=-38,yshift=7,rotate=-20]
+ \fill[\thing@baguette!70!white, rounded corners=\scalingfactor*4, rotate=-30] (0.4,0.72) rectangle (0.7,2.0);
+ \fill[\thing@baguette!80!black, rotate=5] (1.44,1.1) ellipse (0.1 and 0.03) (1.30,0.9) ellipse (0.1 and 0.03) (1.16,0.7) ellipse (0.1 and 0.03) (1.02,0.5) ellipse (0.1 and 0.03);
+ \end{scope}
+\fi
+%
+% cake %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@cake
+ \begin{scope}[xshift=-28]
+ \fill[\thing@cake] (1.00,0.50) ellipse (0.4 and 0.2);
+ \fill[\thing@cake] (0.6,0.5) rectangle (1.4,0.7);
+ \fill[\thing@cake] (1.00,0.70) ellipse (0.4 and 0.2);
+ \fill[\thing@cake!50!white] (0.75,0.75) rectangle (0.8,0.95);
+ \fill[\thing@cake!50!white] (1.2,0.75) rectangle (1.25,0.95);
+ \fill[\thing@cake!50!white] (0.975,0.65) rectangle (1.025,0.85);
+ \fill[white!85!yellow] (1.0,0.93) ellipse (0.03 and 0.06);
+ \fill[white!85!yellow] (1.225,1.03) ellipse (0.03 and 0.06);
+ \fill[white!85!yellow] (0.775,1.03) ellipse (0.03 and 0.06);
+ \end{scope}
+\fi
+%
+% icecream %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@icecream
+ \begin{scope}[xshift=-26]
+ \fill[\thing@cone,rotate=-20] (0.35,1.20)--(0.50,0.60)--(0.75,1.20);
+ \fill[\thing@flavoura] (0.85,1.03) circle (0.12);
+ \fill[\thing@flavourb] (1.05,0.95) circle (0.12);
+ \fill[\thing@flavourc] (0.95,1.1) circle (0.12);
+ \end{scope}
+\fi
+%
+% milkshake %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@milkshake
+ \begin{scope}[xshift=-26]
+ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse (0.17 and 0.05);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse (0.12 and 0.03);
+ \begin{scope}
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.94) ellipse (0.18 and 0.4);
+ \fill[\thing@milkshake, rotate=-10] (0.8,0.94) ellipse (0.15 and 0.36);
+ \end{scope}
+ \fill[white!85!yellow] (0.83,0.92) circle (0.05) (0.88,0.9) circle (0.05) (0.93,0.92) circle (0.05) (0.99,0.91) circle (0.05) (1.06,0.86) circle (0.05) (1.13,0.87) circle (0.05) (0.85,0.99) circle (0.05) (0.9,0.98) circle (0.07) (1.0,0.98) circle (0.07) (1.1,0.95) circle (0.07);
+ \fill[red!90!black] (1.0,1.1) circle (0.05);
+ \fill[white!85!yellow] (0.94,1.05) circle (0.05) (1.03,1.03) circle (0.05);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse (0.17 and 0.05);
+ \fill[red!90!black,rotate=20] (1.2,0.58) rectangle (1.22,0.85);
+ \end{scope}
+\fi
+%
+% wine %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@wine
+ \begin{scope}[xshift=-26,yshift=2]
+ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse (0.17 and 0.05);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse (0.12 and 0.03);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.7) ellipse (0.03 and 0.2);
+ \begin{scope}
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03);
+ \fill[cyan!10!white, rotate=-10] (0.8,1.1) ellipse (0.18 and 0.4);
+ \end{scope}
+ \begin{scope}
+ \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87);
+ \fill[\thing@wine, rotate=-10] (0.8,1.1) ellipse (0.15 and 0.36);
+ \end{scope}
+ \end{scope}
+\fi
+%
+% cocktail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@cocktail
+\begin{scope}[xshift=-26,yshift=3]
+ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse (0.17 and 0.05);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse (0.12 and 0.03);
+ \fill[cyan!10!white, rotate=-10] (0.8,0.7) ellipse (0.03 and 0.2);
+ \fill[cyan!10!white] (0.92,0.6) -- (0.75,0.9) -- (1.18,0.83) -- cycle;
+ \fill[gray!60!white] (0.928,0.64) -- (0.85,0.77) -- (1.08,0.77) -- cycle;
+ \fill[green!40!brown!60!white] (0.94,0.71) circle (0.04);
+ \fill[red!80!black] (0.94,0.72) circle (0.01);
+ \end{scope}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Sport
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% cricket bat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@cricket
+ \begin{scope}[xshift=-26]
+ \fill[\thing@cricket, rounded corners=\scalingfactor*2, rotate=-30] (0.4,1.2) rectangle (0.7,2.2);
+ \fill[\thing@cricket, rounded corners=\scalingfactor*1, rotate=-30] (0.5,0.8) rectangle (0.6,1.3);
+ \end{scope}
+\fi
+%
+% Hockey stick %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@hockey
+ \begin{scope}[xshift=-22]
+ \fill[\thing@hockey, rounded corners=\scalingfactor*1, rotate=-30] (0.5,0.6) rectangle (0.6,2.1);
+ \fill[\thing@hockey, rounded corners=\scalingfactor*3] (0.2,0.2) rectangle (0.85,0.4);
+ \end{scope}
+\fi
+%
+% football %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@football
+ \begin{scope}[xshift=-26]
+ \fill[\thing@football] (1.2,0.33) circle (0.32);
+ \begin{scope}
+ \clip (1.2,0.33) circle (0.32);
+ \fill[black] (1.06,0.30) -- (1.01,0.17) -- (1.14,0.08) -- (1.26,0.14) -- (1.20,0.28) -- cycle (1.37,0.14) -- (1.46,0.27) -- (1.59,0.27) -- (1.41,0.04) -- cycle (1.28,0.38) -- (1.22,0.52) -- (1.33,0.61) -- (1.45,0.51) -- (1.43,0.37) -- cycle (0.87,0.44) -- (1.02,0.40) -- (1.10,0.53) -- (1.07,0.62) -- (0.94,0.57) -- cycle;
+ \end{scope}
+ \end{scope}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% other items
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% crystal ball %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@crystalball
+ \shade[ball color=\thing@crystalball,opacity=0.7] (0,0.8) circle (0.33);
+\fi
+%
+% magic wand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@magicwand
+ \begin{scope}[xshift=-16,yshift=2]
+ \fill[black,rotate=-30] (0.27,1.23) rectangle (0.37,0.65);
+ \fill[white,rotate=-30] (0.27,1.13) rectangle (0.37,1.03);
+ \end{scope}
+\fi
+%
+% rollingpin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@rollingpin
+ \begin{scope}[xshift=-30,yshift=2]
+ \fill[\thing@rollingpin, rounded corners=\scalingfactor*2, rotate=-60] (-0.18,0.85) rectangle (0.08,1.75);
+ \fill[\thing@rollingpin, rounded corners=\scalingfactor*1, rotate=-60] (-0.1,0.65) rectangle (0.0,1.95);
+ \end{scope}
+\fi
+%
+% lightsaber %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@lightsaber
+ \begin{scope}[xshift=-26]
+ \fill[\thing@lightsaber, rounded corners=\scalingfactor*1, rotate=-30] (0.5,0.9) rectangle (0.6,2.5);
+ \fill[gray!80!black, rounded corners=\scalingfactor*1, rotate=-30] (0.47,0.7) rectangle (0.63,1.2);
+ \end{scope}
+\fi
+%
+% torch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@torch
+ \begin{scope}[xshift=-26]
+ \fill[red!50!yellow]
+ (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
+ (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
+ (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
+ (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
+ (1.4338,1.025) -- cycle;
+ \fill[red!25!yellow, scale=0.67, xshift=17, yshift=15]
+ (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
+ (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
+ (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
+ (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
+ (1.4338,1.025) -- cycle;
+ \fill[white!50!yellow, scale=0.4, xshift=53.5, yshift=45.3]
+ (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) ..
+ (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) ..
+ (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) ..
+ (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) ..
+ (1.4338,1.025) -- cycle;
+ \fill[\thing@torch,rounded corners=\scalingfactor*1]
+ (1.1,0.96) -- (0.77,0.25) -- (0.83,0.25) -- (1.3,0.86) -- cycle;
+ \fill[\thing@torch,rotate=-28] (0.62,1.32) ellipse (0.2 and 0.08);
+ \end{scope}
+\fi%
+%
+% basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@basket
+ \begin{scope}[xshift=-28.5]
+ \fill[\thing@basket, start angle=180, end angle=360, x radius=0.35, y radius=0.35] (0.65,0.61) arc -- cycle;
+ \fill[\thing@basket, start angle=180, end angle=0, even odd rule] [x radius=0.35, y radius=0.5] (0.65,0.6) arc -- cycle [x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle;
+ \fill[\thing@basket, even odd rule] (1,0.6) ellipse (0.35 and 0.1) (1,0.6) ellipse (0.3 and 0.07);
+ \fill[\thing@basket!75!black] (1,0.6) ellipse (0.3 and 0.07);
+ \end{scope}
+\fi%
+%
+% easter basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@easter
+ \begin{scope}[xshift=-28.5]
+ \begin{scope}
+ \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle;
+ \fill[\thing@eggb, rotate=-5] (0.95,0.72) ellipse (0.09 and 0.13);
+ \fill[\thing@egga, rotate=10] (0.94,0.42) ellipse (0.09 and 0.13);
+ \fill[\thing@eggc, rotate=-30] (0.7,1.08) ellipse (0.09 and 0.13);
+ \end{scope}
+ \end{scope}
+\fi%
+%
+% crozier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@crozier
+ \begin{scope}[xshift=-20]
+ \begin{scope}
+ \clip [rotate=-20] (0.6,2.3) rectangle (1.1,1.999);
+ \fill[even odd rule,\thing@crozier] (1.5,1.6) circle (0.2) (1.5,1.6) circle (0.1);
+ \end{scope}
+ \fill[\thing@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0);
+ \end{scope}
+\fi
+%
+% shovel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@shovel
+ \fill[brown!80!black,rotate around={-23:(0.11, 0.8)}] (0.07,0.2) rectangle ++(0.1,1.4);
+ \fill[\thing@shovel] (-0.21, 0.86) .. controls (0.02, 0.72) and (0.11, 0.66) .. (0.38, 0.58) -- (0.01, 0.04) .. controls (-0.17, 0.02) and (-0.28, 0.07) .. (-0.37, 0.21) -- cycle;
+\fi
+%
+% pickaxe %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@pickaxe
+ \fill[brown!80!black,rotate around={-23:(0.11, 0.8)}] (0.07,0.2) rectangle ++(0.1,1.4);
+ \fill[\thing@pickaxe] (-0.77, 0.57) .. controls (-0.14, 0.25) and (-0.02, 0.21) .. (0.60, 0.02) .. controls (-0.12, 0.03) and (-0.22, 0.10) .. (-0.77, 0.57) -- cycle;
+\fi
+%
+% umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@umbrella
+ \path (-0.8, 0.4) rectangle (1.2200000000000002, 2.7);
+ \begin{pgfinterruptboundingbox}
+ \fill[gray] (-0.3078, 0.5942) -- (-0.2574, 0.6103) .. controls (-0.1724, 0.3884) and (-0.1145, 0.4523) .. (-0.0667, 0.6543) -- (-0.0666, 0.6545) -- (-0.0665, 0.6547) .. controls (0.0347, 1.0671) and (0.2906, 1.9565) .. (0.2906, 1.9565) -- (0.3415, 1.9419) .. controls (0.3415, 1.9419) and (0.0855, 1.0519) .. (-0.0151, 0.6423) -- (-0.0152, 0.642) .. controls (-0.076, 0.3633) and (-0.2126, 0.3312) .. (-0.3078, 0.5942) -- cycle;
+ \fill[\thing@umbrella] (-0.7815, 1.9927) .. controls (-0.6441, 2.1962) and (-0.3163, 2.072) .. (-0.3239, 1.824) .. controls (-0.1602, 2.0111) and (0.1891, 1.9216) .. (0.1685, 1.6915) .. controls (0.3000, 1.8765) and (0.6639, 1.7626) .. (0.6607, 1.5356) .. controls (0.7865, 1.7271) and (1.135, 1.695) .. (1.1626, 1.4589) .. controls (1.4996, 2.5771) and (-0.4356, 3.2631) .. (-0.7815, 1.9927) -- cycle;
+ \end{pgfinterruptboundingbox}
+\fi
+%
+% closed umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@umbrellaclosed
+ \fill[gray] (0.5401, 0.7996) -- (0.4872, 0.8019) .. controls (0.484, 1.0395) and (0.4076, 0.9995) .. (0.293, 0.8264) -- (0.2929, 0.8262) -- (0.2928, 0.8261) .. controls (0.0555, 0.4739) and (0.1223, 0.5608) .. (0.1223, 0.5608) -- (0.0795, 0.592) .. controls (0.0795, 0.592) and (0.0131, 0.5057) .. (0.2488, 0.8554) -- (0.2489, 0.8556) .. controls (0.4022, 1.0963) and (0.5414, 1.0793) .. (0.5401, 0.7996) -- cycle;
+ \fill[\thing@umbrellaclosed] (-0.1173, 0.2263) -- (0.0038, 0.7188) -- (0.1548, 0.7494) -- (0.152, 0.9231) -- (0.3945, 0.7529) -- (0.2218, 0.6885) -- (0.2465, 0.5566) -- cycle;
+\fi
+%
+% handbag %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifthing@handbag
+ \fill[\thing@handbag] (0.5189, 0.1751) -- (-0.1913, 0.3097) -- (-0.0315, 0.7086) -- (0.5168, 0.6152) -- cycle;
+ \fill[\thing@handbag!70!black] (0.4143, 0.4354) .. controls (0.5139, 0.9811) and (0.1204, 1.0719) .. (0.0134, 0.5155) -- (0.0957, 0.4996) .. controls (0.1753, 0.8952) and (0.3949, 0.8883) .. (0.3324, 0.4536) -- cycle;
+\fi
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-bears.sty b/graphics/pgf/contrib/tikzlings/tikzlings-bears.sty
new file mode 100644
index 0000000000..c84c0a2b0a
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-bears.sty
@@ -0,0 +1,128 @@
+% !TeX root = ./examples/bear.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-bears package (part of the tikzlings collection)
+% A package to bring little teddy bears into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-bears}
+ [2019/04/07 v0.2 Draw teddy bears in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\bear}[1][]{%
+ \begin{scope}%
+ \tikzset{/bear/.cd,#1}%
+ \bear@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifbear@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /bear/.search also={/tikz,/pgf,/thing},
+ /bear/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\bear@body{#1},
+ body = brown,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \bear@threeDtrue,
+}
+
+\def\bear@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.8, 0.0) rectangle (0.8, 2.13);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifbear@threeD
+ \def\bear@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\bear@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0.925)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!70!black,rotate around={-50:(0.525,0.9)}] (0.525,0.9) ellipse (0.35 and 0.15);
+\bear@part@draw[\bear@body!70!black,rotate around={50:(-0.525,0.9)}] (-0.525,0.9) ellipse (0.35 and 0.15);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!70!black] (0,0.75) ellipse (0.55 and 0.65);
+\bear@part@draw[\bear@body!50!white] (0,0.7) ellipse (0.35 and 0.4);
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!70!black] (0.425, 0.3) circle (0.28);
+\bear@part@draw[\bear@body!70!black] (-0.425, 0.3) circle (0.28);
+\bear@part@draw[\bear@body!50!white] (0.425, 0.3) circle (0.17);
+\bear@part@draw[\bear@body!50!white] (-0.425, 0.3) circle (0.17);
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!70!black] (0.375, 1.95) circle (0.15);
+\bear@part@draw[\bear@body!70!black] (-0.375, 1.95) circle (0.15);
+\bear@part@draw[\bear@body!50!white] (0.375, 1.95) circle (0.1);
+\bear@part@draw[\bear@body!50!white] (-0.375, 1.95) circle (0.1);
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!70!black] (0, 1.55) circle (0.5);
+%
+% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!50!white] (0, 1.4) ellipse (0.28 and 0.2);
+\bear@part@draw[\bear@body!70!white!80!red] (0, 1.5) ellipse (0.15 and 0.08);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bear@part@draw[\bear@body!30!black] (-0.155, 1.7) circle (0.05);
+\bear@part@draw[\bear@body!30!black] (0.155, 1.7) circle (0.05);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\bear@body!30!black,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16];
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-cats.sty b/graphics/pgf/contrib/tikzlings/tikzlings-cats.sty
new file mode 100644
index 0000000000..40787eabe5
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-cats.sty
@@ -0,0 +1,232 @@
+% !TeX root = ./examples/cat.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-cats package (part of the tikzlings collection)
+% A package to bring little cats into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-cats}
+ [2019/04/07 v0.2 Drawing cats in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+
+\ifluatex
+ \let\pdfrandomseed\randomseed
+\fi
+
+\ifxetex
+ \pgfmathsetseed{\time}
+\else
+ \pgfmathsetseed{\number\pdfrandomseed}
+\fi
+
+\newcommand*{\cat}[1][]{%
+ \begin{scope}%
+ \tikzset{/cat/.cd,#1}%
+ \ifcat@schroedinger
+ \pgfmathparse{int(random(0,1))}
+ \let\cat@random=\pgfmathresult
+ \ifnum\cat@random=1
+ \cat@tombstone%
+ \else
+ \cat@draw%
+ \fi
+ \else
+ \cat@draw%
+ \fi
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifcat@threeD
+\newif\ifcat@schroedinger
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /cat/.search also={/tikz,/pgf,/thing},
+ /cat/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\cat@body{#1},
+ body = gray!30!black,
+ whiskers/.code = \def\cat@whiskers{#1},
+ whiskers = gray!50!white,
+ eyes/.code = \def\cat@eyes{#1},
+ eyes = yellow!80!orange,
+ pupil/.code = \def\cat@pupil{#1},
+ pupil = black,
+ pupilwidth/.code = \def\cat@pupil@width{#1}\edef\cat@pupil@offset{\strip@pt\dimexpr#1pt/4},
+ pupil width/.forward to = /cat/pupilwidth,
+ narrow pupils/.style = {pupil width = 0.005},
+ medium pupils/.style = {pupil width = 0.015},
+ wide pupils/.style = {pupil width = 0.025},
+ very wide pupils/.style = {pupil width = 0.050},
+ pupil width = 0.015,
+ paws/.code = \def\cat@paws{#1},
+ paws = \cat@body,
+ nose/.code = \def\cat@nose{#1},
+ nose = red!40!white!80!gray,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \cat@threeDtrue,
+ schroedinger/.code = \cat@schroedingertrue,
+}
+
+\def\cat@draw{%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.56,0.1) rectangle (1.63, 2.22);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifcat@threeD
+ \def\cat@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\cat@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{pgfinterruptboundingbox}
+ \cat@part@draw[\cat@body] (0.3, 0.5) .. controls (0.55, 0.87) and (0.73, 1.50) .. (1.05, 1.65) .. controls (1.32, 1.77) and (1.76, 1.34) .. (1.56,1.33) .. controls (0.92, 2.03) and (0.86, 0.60) .. (0.5, 0.37) -- cycle;
+\end{pgfinterruptboundingbox}
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@body] (0.5462, 0.7155) .. controls (0.5462, 0.1823) and (0.3259, 0.17) .. (0, 0.17) .. controls (-0.3259, 0.17) and (-0.5462, 0.1823) .. (-0.5462, 0.7155) .. controls (-0.5554, 1.2487) and (-0.3075, 1.6768) .. (0, 1.6768) .. controls (0.3075, 1.6768) and (0.5554, 1.2487) .. (0.5462, 0.7155) -- cycle;
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@body]
+(0.12, 2.0392) .. controls (0.16, 2.1584) and (0.37, 2.22) .. (0.37, 2.20) .. controls (0.37, 2.2) and (0.39, 1.9) .. (0.2721, 1.9) .. controls (0.1891, 1.88) and (0.12, 1.88) .. (0.12, 2.0392) -- cycle;
+\cat@part@draw[\cat@body]
+(-0.12, 2.0392) .. controls (-0.16, 2.1584) and (-0.37, 2.22) .. (-0.37, 2.20) .. controls (-0.37, 2.2) and (-0.39, 1.9) .. (-0.2721, 1.9) .. controls (-0.1891, 1.88) and (-0.12, 1.88) .. (-0.12, 2.0392) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@body] (0,1.64) circle (0.44);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@eyes] (-0.1014, 1.7491) .. controls (-0.1014, 1.7491) and (-0.1451, 1.7171) .. (-0.1841, 1.7284) .. controls (-0.2231, 1.7397) and (-0.2427, 1.79) .. (-0.2427, 1.79) .. controls (-0.2427, 1.79) and (-0.1992, 1.8221) .. (-0.1602, 1.8108) .. controls (-0.1212, 1.7995) and (-0.1014, 1.7491) .. (-0.1014, 1.7491) -- cycle;
+\cat@part@draw[\cat@eyes] (0.1014, 1.7491) .. controls (0.1014, 1.7491) and (0.1451, 1.7171) .. (0.1841, 1.7284) .. controls (0.2231, 1.7397) and (0.2427, 1.79) .. (0.2427, 1.79) .. controls (0.2427, 1.79) and (0.1992, 1.8221) .. (0.1602, 1.8108) .. controls (0.1212, 1.7995) and (0.1014, 1.7491) .. (0.1014, 1.7491) -- cycle;
+%
+% Pupils %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@pupil]
+ (-0.1720, 1.8071)
+ .. controls (-0.1720+\cat@pupil@width, 1.7827+\cat@pupil@offset) and (-0.1720+\cat@pupil@width, 1.7584-\cat@pupil@offset) .. (-0.1720, 1.7341)
+ .. controls (-0.1720-\cat@pupil@width, 1.7584-\cat@pupil@offset) and (-0.1720-\cat@pupil@width, 1.7827+\cat@pupil@offset) .. (-0.1720, 1.8071)
+ -- cycle;
+\cat@part@draw[\cat@pupil]
+ ( 0.1720, 1.8071)
+ .. controls ( 0.1720+\cat@pupil@width, 1.7827+\cat@pupil@offset) and ( 0.1720+\cat@pupil@width, 1.7584-\cat@pupil@offset) .. ( 0.1720, 1.7341)
+ .. controls ( 0.1720-\cat@pupil@width, 1.7584-\cat@pupil@offset) and ( 0.1720-\cat@pupil@width, 1.7827+\cat@pupil@offset) .. ( 0.1720, 1.8071)
+ -- cycle;
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@nose] (-0.069, 1.6452) .. controls (-0.0524, 1.6613) and (0.0524, 1.6613) .. (0.069, 1.6452) .. controls (0.08, 1.625) and (0.0206, 1.55) .. (0, 1.55) .. controls (-0.0206, 1.55) and (-0.08, 1.625) .. (-0.069, 1.6452) -- cycle;
+%
+% Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\cat@whiskers] (0.0788, 1.5946) .. controls (0.1658, 1.6099) and (0.2086, 1.5439) .. (0.2956, 1.5286) -- (0.2956, 1.5386) .. controls (0.2097, 1.5537) and (0.1648, 1.6097) .. (0.0788, 1.5946) -- cycle;
+\fill[\cat@whiskers] (-0.0788, 1.5946) .. controls (-0.1658, 1.6099) and (-0.2087, 1.5439) .. (-0.2956, 1.5286) -- (-0.2956, 1.5386) .. controls (-0.2097, 1.5537) and (-0.1648, 1.6097) .. (-0.0788, 1.5946) -- cycle;
+\fill[\cat@whiskers] (0.0752, 1.6081) .. controls (0.1583, 1.6383) and (0.2171, 1.6109) .. (0.3002, 1.5807) -- (0.3002, 1.5907) .. controls (0.2174, 1.6208) and (0.158, 1.6382) .. (0.0752, 1.6081) -- cycle;
+\fill[\cat@whiskers] (-0.0752, 1.6081) .. controls (-0.1583, 1.6383) and (-0.2171, 1.6109) .. (-0.3002, 1.5807) -- (-0.3002, 1.5907) .. controls (-0.2174, 1.6208) and (-0.158, 1.6382) .. (-0.0752, 1.6081) -- cycle;
+\fill[\cat@whiskers] (0.0671, 1.6243) .. controls (0.1414, 1.6725) and (0.2182, 1.6964) .. (0.2925, 1.6482) -- (0.2925, 1.6582) .. controls (0.2179, 1.7066) and (0.1417, 1.6727) .. (0.0671, 1.6243) -- cycle;
+\fill[\cat@whiskers] (-0.0671, 1.6243) .. controls (-0.1414, 1.6725) and (-0.2182, 1.6964) .. (-0.2925, 1.6482) -- (-0.2925, 1.6582) .. controls (-0.2179, 1.7066) and (-0.1417, 1.6727) .. (-0.0671, 1.6243) -- cycle;
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cat@part@draw[\cat@paws] (-0.255,0.3) circle (0.18);
+\cat@part@draw[\cat@paws] (0.255,0.3) circle (0.18);
+%
+}
+
+\def\cat@tombstone{%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.55,0.39) rectangle (0.55, 2.06);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Drawing the tomebstone
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Stone %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[gray] (-0.55,0.4) rectangle (0.55,1.5);
+\fill[gray] (0,1.5) circle (0.55);
+\node[scale=\scalingfactor] at (0,1.3) {R.I.P.};
+%
+% soil %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[brown!65!black] (1,0.15) arc [start angle=50, end angle=130, radius=1.56] -- cycle;
+%
+% flower
+\draw[green!50!brown,line width=\scalingfactor*0.4pt] (-0.01,0.3) arc [start angle=-15, end angle=30, radius=0.7];
+\fill[green!50!brown] (-0.1377, 0.7384) .. controls (-0.1775, 0.5828) and (-0.1479, 0.4649) .. (0.0072, 0.4246) .. controls (0.0570, 0.5636) and (-0.1529, 0.6447) .. (-0.1377, 0.7384) -- cycle;
+\fill[green!50!brown] (0.1527, 0.7334) .. controls (0.1925, 0.5778) and (0.1629, 0.4599) .. (0.0178, 0.4196) .. controls (-0.0420, 0.5586) and (0.1679, 0.6397) .. (0.1527, 0.7334) -- cycle;
+\foreach \i in {0,51.42857,...,359}{
+ \fill[yellow!50!white,rotate around={\i:(-0.0865, 0.8219)}] (-0.087, 0.822) .. controls (-0.087, 0.822) and (-0.1635, 0.6638) .. (-0.0818, 0.6653) .. controls (-0.0066, 0.6646) and (-0.087, 0.822) .. (-0.087, 0.822) -- cycle;
+}
+%
+}
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-coatis.sty b/graphics/pgf/contrib/tikzlings/tikzlings-coatis.sty
new file mode 100644
index 0000000000..1a262ca947
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-coatis.sty
@@ -0,0 +1,176 @@
+% !TeX root = ./examples/coati.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-coatis package (part of the tikzlings collection)
+% A package to bring little coatis into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-coatis}
+ [2019/04/07 v0.2 Drawing coatis in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\coati}[1][]{%
+ \begin{scope}%
+ \tikzset{/coati/.cd,#1}%
+ \coati@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifcoati@threeD
+\newif\ifcoati@sideward
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /coati/.search also={/tikz,/pgf,/thing},
+ /coati/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\coati@body{#1},
+ body = brown!50!darkgray!97!yellow,
+ rotatehead/.code = \def\coati@rotatehead{#1},
+ rotate head/.forward to = /coati/rotatehead,
+ rotatehead = 0,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \coati@threeDtrue,
+ sideward/.code = \coati@sidewardtrue,
+}
+
+\def\coati@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.84,0.1) rectangle (1.63,2.26);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifcoati@threeD
+ \def\coati@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\coati@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\coati@part@draw[\coati@body!80!white] (0.255,0.2) ellipse (0.23 and 0.09);
+\coati@part@draw[\coati@body!80!white] (-0.255,0.2) ellipse (0.23 and 0.09);
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\coati@part@draw[\coati@body!50!darkgray] (0.3, 0.5) .. controls (0.55, 0.87) and (0.73, 1.50) .. (1.05, 1.65) .. controls (1.32, 1.77) and (1.76, 1.34) .. (1.56,1.33) .. controls (0.92, 2.03) and (0.86, 0.60) .. (0.5, 0.37) -- cycle;
+\begin{scope}
+ \clip (0.3, 0.5) .. controls (0.55, 0.87) and (0.73, 1.50) .. (1.05, 1.65) .. controls (1.32, 1.77) and (1.76, 1.34) .. (1.56,1.33) .. controls (0.92, 2.03) and (0.86, 0.60) .. (0.5, 0.37) -- cycle;
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.8,1.15)}] (0.6,1.1) rectangle ++(0.4,0.1);
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.9,1.35)}] (0.7,1.3) rectangle ++(0.4,0.1);
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-50:(1.0,1.5)}] (0.8,1.45) rectangle ++(0.4,0.1);
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-80:(1.2,1.6)}] (1.0,1.55) rectangle ++(0.4,0.1);
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-130:(1.5,1.5)}] (1.3,1.45) rectangle ++(0.4,0.1);
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-30:(0.55,0.65)}] (0.35,0.6) rectangle ++(0.4,0.1);
+\end{scope}
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\coati@part@draw[\coati@body!80!white,rotate around={70:(-0.625,1)}] (-0.625,1) ellipse (0.42 and 0.13);
+\coati@part@draw[\coati@body!80!white,rotate around={-70:(0.625,1)}] (0.625,1) ellipse (0.42 and 0.13);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\coati@part@draw[\coati@body!50!darkgray] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{scope}[rotate around={\coati@rotatehead:(0,1.68)}]
+%
+% Sidewards head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifcoati@sideward
+ %
+ % Left Ear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-16:(-0.212, 2.135)}] (-0.212, 2.135) ellipse (0.09 and 0.12);
+ \coati@part@draw[\coati@body!80!white,rotate around={-16:(-0.212, 2.135)}] (-0.212, 2.135) ellipse (0.065 and 0.09);
+ %
+ % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!45!white!95!orange] (0.4808, 1.7911) .. controls (0.5682, 1.2837) and (-0.3468, 1.3575) .. (-0.6360, 1.3679) .. controls (-0.7582, 1.4729) and (-0.5198, 1.7911) .. (-0.5198, 1.7911) .. controls (-0.3597, 2.2914) and (0.3207, 2.2914) .. (0.4808, 1.7911) -- cycle;
+ %
+ % Cheek %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!80!white] (0.30, 1.4552) .. controls (0.30, 1.4552) and (0.1016, 1.7565) .. (-0.0005, 1.7581) -- (-0.6360, 1.3679) .. controls (-0.3083, 1.3437) and (0.0283, 1.332) .. (0.30, 1.4552) -- cycle;
+ \coati@part@draw[\coati@body!80!white] (-0.4166, 1.9824) .. controls (-0.4166, 1.9824) and (-0.2413, 1.9758) .. (-0.2226, 1.9112) -- (-0.6875, 1.4906) .. controls (-0.6875, 1.4906) and (-0.5712, 1.7549) .. (-0.4166, 1.9824) -- cycle;
+ % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!50!black] (-0.605, 1.453) circle (0.09);
+ %
+ % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!50!black] (0.007, 1.624) ellipse (0.04 and 0.06);
+ \coati@part@draw[\coati@body!50!black] (-0.38, 1.865) ellipse (0.035 and 0.055);
+ %
+ % Right Ear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!45!white!95!orange,rotate around={-16:(0.417, 1.875)}] (0.417, 1.875) ellipse (0.1 and 0.14);
+ \coati@part@draw[\coati@body!80!white,rotate around={-16:(0.417, 1.875)}] (0.417, 1.875) ellipse (0.07 and 0.10);
+%
+% Normal Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\else
+ %
+ % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
+ %
+ % Cheeks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!80!white] (-0.4935, 1.7443) .. controls (-0.4935, 1.7443) and (-0.1917, 1.7798) .. (-0.1371, 1.7333) .. controls (-0.07, 1.2) and (-0.07, 1.2) .. (-0.07, 1.2) .. controls (-0.259, 1.3169) and (-0.46, 1.5665) .. (-0.4935, 1.7443) -- cycle;
+ \coati@part@draw[\coati@body!80!white] (0.4935, 1.7443) .. controls (0.4935, 1.7443) and (0.1917, 1.7798) .. (0.1371, 1.7333) .. controls (0.07, 1.2) and (0.07, 1.2) .. (0.07, 1.2) .. controls (0.259, 1.3169) and (0.46, 1.5665) .. (0.4935, 1.7443) -- cycle;
+ %
+ % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!50!black] (0, 1.248) circle (0.09);
+ %
+ % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!50!black] (0.23, 1.62) circle (0.05);
+ \coati@part@draw[\coati@body!50!black] (-0.23, 1.62) circle (0.05);
+ %
+ % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \coati@part@draw[\coati@body!45!white!95!orange] (0.44, 2.02) circle (0.12);
+ \coati@part@draw[\coati@body!80!white] (0.44, 2.02) circle (0.09);
+ \coati@part@draw[\coati@body!45!white!95!orange] (-0.44, 2.02) circle (0.12);
+ \coati@part@draw[\coati@body!80!white] (-0.44, 2.02) circle (0.09);
+ %
+\fi
+\end{scope}
+%
+}
+
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-doc.pdf b/graphics/pgf/contrib/tikzlings/tikzlings-doc.pdf
new file mode 100644
index 0000000000..394f05561a
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-doc.tex b/graphics/pgf/contrib/tikzlings/tikzlings-doc.tex
new file mode 100644
index 0000000000..11b06c3f7d
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-doc.tex
@@ -0,0 +1,1311 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Documentation for the tikzlings package
+% A collection of packages to draw animals in tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\documentclass[parskip=half]{scrartcl}
+
+% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[svgnames]{xcolor}
+\usepackage[bitstream-charter]{mathdesign}
+\usepackage{tikzlings}
+\usepackage[most]{tcolorbox}
+\usepackage[paper=a4paper,margin=3cm]{geometry}
+\usepackage{url}
+\usepackage{xspace}
+\usepackage{scrlayer-scrpage}
+\usepackage[hang,flushmargin,bottom]{footmisc}
+\usepackage[%
+ colorlinks=true,
+ breaklinks=true,
+ allcolors=SteelBlue!50!black
+]{hyperref}
+
+% macros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\CTAN}{\textsc{CTAN}\xspace}
+\newcommand{\TikZ}{Ti\emph{k}Z\xspace}
+\newcommand{\tikzducks}{Ti\emph{k}Zducks\xspace}
+\newcommand{\tikzmarmots}{Ti\emph{k}Zmarmots\xspace}
+\newcommand{\tikzlings}{Ti\emph{k}Zlings\xspace}
+\newcommand{\miktex}{MiK\TeX\xspace}
+\newcommand{\texlive}{\TeX{}Live\xspace}
+
+% customisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\addtokomafont{sectioning}{\color{SteelBlue}}
+\addtokomafont{date}{\normalsize}
+\addtokomafont{author}{\normalsize}
+
+\deftocheading{toc}{}%
+\setcounter{tocdepth}{1}
+
+\newcommand*\gobbleentrynumber[1]{}
+\newcommand*\mytocformat[1]{#1}
+\newcommand*\mytocpageformat[1]{#1}
+\RedeclareSectionCommand[
+ toclinefill=\TOCLineLeaderFill,
+ tocnumwidth=0pt,
+ tocentrynumberformat=\gobbleentrynumber,
+ tocentryformat=\mytocformat,
+ tocpagenumberformat=\mytocpageformat,
+ tocbeforeskip=0.8ex plus 1pt minus 1pt
+]{section}
+
+\makeatletter
+\renewcommand{\sectionlinesformat}[4]{%
+\ifstr{#1}{section}{%
+ \parbox[t]{\linewidth}{%
+ \raggedsection\@hangfrom{\hskip #2#3}{#4}\par%
+ \kern-.75\ht\strutbox\rule{\linewidth}{.8pt}%
+ }%
+ }{%
+ \@hangfrom{\hskip #2#3}{#4}}%
+}
+\makeatother
+
+\renewcommand*{\subsectionformat}{}
+\renewcommand*{\sectionformat}{}
+
+\setlength{\footnotemargin}{0.7em}
+
+\colorlet{blue}{SteelBlue}
+
+\lstdefinestyle{duckstyle}{%
+ language={[latex]TeX},
+ tabsize=2,
+ breaklines,
+ basicstyle=\ttfamily,
+ commentstyle={\color{green!50!black}\slshape},
+ columns=fullflexible,
+ alsodigit={-},
+ alsoletter={3},
+ emphstyle=\color{red!60!black},
+ emph=[1]{
+ tikzlings,
+ tikzlings-marmots, tikzlings-bears, tikzlings-coatis, tikzlings-koalas, tikzlings-marmots, tikzlings-owls, tikzlings-penguins, tikzlings-snowmans, tikzlings-mice, tikzlings-moles, tikzlings-sloths, tikzlings-pigs, tikzlings-cats, tikzlings-hippos, tikzlings-rhinos, tikzlings-pandas,
+ body, 3D, rotatehead, sideward, blush, sleeping, whiskers, teeth, shadow, askphil, leftstep, rightstep, eye, nose, pupil, bill, feet, belly, ask, phil, mouth, buttons, rotatearms, eyes, paws,
+ scale, yshift, xshift, rotate, hands, muzzle, schroedinger, toes,
+ hat, tophat, beret, strawhat, ribbon, harlequin, niuqelrah, witch, magichat, magicstars, crown, queencrown, kingcrown, santa, chef, graduate, tassel, alien, book, bookcolour, signpost, signcolour, signback, speech, think, bubblecolour, pizza, cheese, baguette, cake, icecream, flavoura, flavourb, flavourc, milkshake, wine, cricket, hockey, football, crystalball, magicwand, rollingpin, lightsaber, torch, basket, easter, egga, eggb, eggc, crozier, shovel, pickaxe, umbrella, umbrellaclosed, handbag, cocktail, pupilwidth,
+ },
+ texcsstyle=*\color{SteelBlue!50!black}\bfseries,
+ keywordstyle=\color{red!60!black}\bfseries,
+ morekeywords={tikzpicture},
+ moretexcs={
+ usepackage, usetikzlibrary, marmot, coati, bear, koala, owl, penguin, thing, tikzling, snowman, mouse, moles, sloth, pig, cat, hippo, rhino, panda,
+ },
+ delim ={[s][\ttfamily\color{green!50!black}]{$}{$}},
+ moredelim=[is][\footnotesize\ttfamily\color{orange!70!black}]{|}{|},
+ index=[1][emph]
+}
+
+\tcbset{%
+ colframe=SteelBlue!50!black,
+ arc=0mm,
+ fonttitle=\bfseries,
+ sidebyside,
+ listing options={style=duckstyle},
+ center lower,
+ righthand width=6.5cm,
+ bottom=0pt,
+ top=0pt,
+ tikz lower,
+ height plus=3cm,
+ colback=SteelBlue!30!white
+}
+
+\lstset{style=duckstyle}
+
+\pgfmathsetseed{2}
+\setlength{\footheight}{50pt}
+
+\cfoot{\thepage}
+\pagestyle{scrheadings}
+
+\makeatletter
+\renewcommand*{\coati}[1][]{%
+ \begin{scope}%
+ \path (-1.63,0.1) rectangle (1.63,2.26);
+ \tikzset{/coati/.cd,#1}%
+ \coati@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\renewcommand*{\mouse}[1][]{%
+ \begin{scope}%
+ \path (-1.6,0.1) rectangle (0.905, 2.17);
+ \tikzset{/mouse/.cd,#1}%
+ \mouse@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\renewcommand*{\cat}[1][]{%
+ \begin{scope}%
+ \tikzset{/cat/.cd,#1}%
+ \ifcat@schroedinger
+ \pgfmathparse{int(random(0,1))}
+ \let\cat@random=\pgfmathresult
+ \ifnum\cat@random=1
+ \cat@tombstone%
+ \else%
+ \path (-1.6,0.1) rectangle (0.905, 2.17);
+ \cat@draw%
+ \fi%
+ \else%
+ \path (-1.6,0.1) rectangle (0.905, 2.17);
+ \cat@draw%
+ \fi
+ \end{scope}%
+ \thing[#1]%
+}
+\makeatother
+
+\cfoot{%
+ \begin{tikzpicture}[scale=0.5]
+ \tikzling[signpost={\thepage}]
+ \end{tikzpicture}
+}
+
+% meta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{The \texorpdfstring{\tikzlings}{tikzlings} package}
+\subtitle{drawing animals and beings in \TikZ}
+\author{%
+ \texorpdfstring{\texttt{samcarter}\\[0.8em]
+ \url{https://github.com/samcarter/tikzlings}\\
+ \url{https://www.ctan.org/pkg/tikzlings}
+ }{samcarter}}
+\date{Version 0.2 -- \today}
+
+\begin{document}
+\maketitle
+\thispagestyle{scrheadings}
+
+\section*{Introduction}
+\label{intro}
+
+The \tikzlings are a collection of little animals (and beings) drawn in \TikZ. It is the next evolutionary phase of the \tikzmarmots package extending it with further animals (and beings) and also adding the ability to natively use many of the accessories known from the \tikzducks package.
+
+This package is work in progress, therefore I would be happy to hear your feedback and ideas how to improve the package.
+The head version of the source code can be found on \url{github.com/samcarter/tikzlings}, including a bug tracker -- please make constructive use of it!
+A more stable package version can be found on \CTAN (\url{https://www.ctan.org/pkg/tikzlings}) and is included in both \miktex and \texlive as \tikzlings.
+
+\subsection*{Acknowledgements}
+
+I'd like to thank the friendly and helpful community of \href{https://tex.stackexchange.com/}{TeX.Stackexchange} for their suggestions, feedback and help to create this package and find a suitable name for it. As a thank you all the \tikzlings have a name which is in some way or another connected to the users of TeX.SE.
+
+\subsection*{License}
+
+Copyright \raisebox{0.2em}{\tiny\fontfamily{cmr}\selectfont\textcopyright}
+\texttt{samcarter}. Permission is granted to copy, distribute and\slash or modify this software under the terms of the LaTeX project public licence, version 1.3c or later \url{http://www.latex-project.org/lppl.txt}.
+
+\clearpage
+\section*{The \tikzlings}
+
+The \tikzlings package is a collection of packages. It can either be loaded as a whole with \lstinline|\usepackage{tikzlings}| or the subpackages containing the individual animals (and beings) can be used separately, e.g.\ by loading \lstinline|\usepackage{tikzlings-marmots}|.
+
+The basic usage is the same for all animals (and beings). Inside a \lstinline|tikzpicture|, the \tikzlings can be added via \color{SteelBlue!50!black}\lstinline|\<name_of_the_tikzling>|\color{black}. For example
+
+\begin{tcblisting}{}
+\marmot
+\end{tcblisting}
+
+will produce a marmot. All usual \TikZ and \lstinline|pgf| keys can be passed as optional argument to change the appearance. For example scaling and rotating the \tikzlings can be done by
+
+\begin{tcblisting}{}
+\penguin[rotate=30,scale=0.5]
+\end{tcblisting}
+
+In addition to the standard options provided by \TikZ each \tikzlings also comes with some additional options which are listed in the following sections. If these additional options consist of multiple words they are available both with and without spaces, for example \lstinline|askphil| and \lstinline|ask phil| will be treated as the same.
+
+\subsection*{List of all \tikzlings:}
+
+\begingroup
+ \hypersetup{hidelinks}
+ \tableofcontents
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Bear
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Bear]{B\"ar, the teddy bear}
+
+\emph{If you look very closely at the group picture in \href{https://www.tug.org/TUGboat/tb39-2/tb122wright-tug18.pdf}{TUG goes to Rio} you can spot the real B\"ar in it}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-bears}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\bear
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic teddy bear can be modified by changing its colour:
+\begin{tcblisting}{}
+\bear[body=blue]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the teddy bear 3-dimensional:
+\begin{tcblisting}{}
+\bear[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Cat
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Cat]{MisTi$k$zelees, the cat}
+
+\emph{Named after the worlds best singing cat}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-cats}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\cat
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic cat can be modified by changing its colour:
+\begin{tcblisting}{}
+\cat[body=blue]
+\end{tcblisting}
+
+In addition to the colour of the body, the colour of various body parts can be adjusted:
+\begin{tcblisting}{}
+\cat[eyes=green]
+\end{tcblisting}
+\begin{tcblisting}{}
+\cat[pupil=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\cat[nose=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\cat[whiskers=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\cat[paws=red]
+\end{tcblisting}
+
+The shape of the \lstinline|pupil| can be changed with the \lstinline|pupilwidth| option:
+\begin{tcblisting}{}
+\cat[pupilwidth=0.015]
+\end{tcblisting}
+
+Additionally several predefined widths exist:
+\begin{tcolorbox}
+\begin{lstlisting}[morekeywords={narrow,medium,wide,very,pupils}]
+\cat[narrow pupils]
+
+\cat[medium pupils]
+
+\cat[wide pupils]
+
+\cat[very wide pupils]
+\end{lstlisting}
+
+\tcblower
+\begin{tikzpicture}[yshift=2.4cm,xshift=1.8cm]
+\cat[narrow pupils]
+\cat[medium pupils,xshift=2.5cm]
+\cat[wide pupils,yshift=-2.5cm]
+\cat[very wide pupils,xshift=2.5cm,yshift=-2.5cm]
+\end{tikzpicture}
+\end{tcolorbox}
+
+
+There is also the special option \lstinline|schroedinger|. This cat is both alive and death as long as you did not compile your document.
+Be prepared for a possibly disturbing scene when you open the pdf, this option is not suited for sensitive \tikzlings.
+\begin{tcblisting}{}
+\cat[schroedinger]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the cat 3-dimensional:
+\begin{tcblisting}{}
+\cat[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Coati
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Coati]{007, the coati}
+
+\emph{Named after a coati living in the zoo of M\"onchengladbach}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-coatis}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\coati
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic coati can be modified by changing its colour:
+\begin{tcblisting}{}
+\coati[body=blue]
+\end{tcblisting}
+
+The head of the coati can be rotated, but please don't overdo this, otherwise his neck might break!
+\begin{tcblisting}{}
+\coati[rotatehead=-15]
+\end{tcblisting}
+
+For the head an alternative sidewards facing head is available. It can be combined with the \lstinline|rotatehead| option.
+\begin{tcblisting}{}
+\coati[sideward]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the coati 3-dimensional:
+\begin{tcblisting}{}
+\coati[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Hippo
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Hippo]{Sieglinde, the hippo}
+
+\emph{For the winner of the 2019 Groundhog Challenge}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-hippos}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\hippo
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic hippo can be modified by changing its colour:
+\begin{tcblisting}{}
+\hippo[body=blue]
+\end{tcblisting}
+
+The hippo can also do its nails:
+\begin{tcblisting}{}
+\hippo[toes=red]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the hippo 3-dimensional:
+\begin{tcblisting}{}
+\hippo[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Koala
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Koala]{Will, the koala}
+
+\emph{The koala was generously contributed by the TeX.Stackexchange user marmot and is named in honour of a \LaTeX{} developer from Down Under}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-koalas}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\koala
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic koala can be modified by changing its colour:
+\begin{tcblisting}{}
+\koala[body=blue]
+\end{tcblisting}
+
+It can also blush
+\begin{tcblisting}{}
+\koala[blush]
+\end{tcblisting}
+
+and if tired, it is going to take a nap:
+\begin{tcblisting}{}
+\koala[sleeping]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the koala 3-dimensional:
+\begin{tcblisting}{}
+\koala[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Marmot
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Marmot]{Phil, the marmot}
+
+\emph{Phil got his name from Punxsutawney Phil, the famous weather forecasting groundhog}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-marmots}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\marmot
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic marmot can be modified by changing its colour:
+\begin{tcblisting}{}
+\marmot[body=blue]
+\end{tcblisting}
+
+It can also blush
+\begin{tcblisting}{}
+\marmot[blush]
+\end{tcblisting}
+
+and whiskers can be added:
+\begin{tcblisting}{}
+\marmot[whiskers=gray]
+\end{tcblisting}
+
+Some marmots even show their chisel teeth:
+\begin{tcblisting}{}
+\marmot[teeth=white]
+\end{tcblisting}
+
+or can cast a shadow:
+\begin{tcblisting}{}
+\marmot[shadow]
+\end{tcblisting}
+
+This ability is important if you want to ask Punxsutawney Phil\footnote{\url{https://en.wikipedia.org/wiki/Punxsutawney_Phil}} on Groundhog Day how the weather is going to be. With a probability derived from the statistics of 120 Groundhog Days\footnote{\url{https://www.livescience.com/32974-punxsutawney-phil-weather-prediction-accuracy.html}} the option \lstinline|askphil| might or might not result in a shadow.
+\begin{tcblisting}{}
+\marmot[askphil]
+\end{tcblisting}
+
+If a good weather prognosis is derived, the happy marmot can dance by lifting up its left and right foot:
+\begin{tcblisting}{}
+\marmot[leftstep]
+\marmot[rightstep,xshift=2cm]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the marmot 3-dimensional:
+\begin{tcblisting}{}
+\marmot[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Mouse
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Mole]{Wilhelm, the mole}
+
+\emph{The mole was added in celebration of the international mole day and is named after the chemist Wilhelm Ostwald}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-moles}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\textcolor{red!60!black}{\textbf{Attention:} In contrast to the other \tikzlings the macro name is the plural form to avoid conflicts with \lstinline|siunitx| and similar packages.}
+\begin{tcblisting}{}
+\moles
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic mouse can be modified by changing its colour:
+\begin{tcblisting}{}
+\moles[body=blue]
+\end{tcblisting}
+
+In addition to the colour of the body, the colour of various body parts can be adjusted:
+\begin{tcblisting}{}
+\moles[muzzle=red]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\moles[hands=red]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\moles[feet=red]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the mole 3-dimensional:
+\begin{tcblisting}{}
+\moles[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Mouse
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Mouse]{Tokz, the mouse}
+
+\emph{The idea for the mouse came from an Italian TeX.Stackexchange user -- Tokz is a combination of the Italian word for mouse and \TikZ}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-mice}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\mouse
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic mouse can be modified by changing its colour:
+\begin{tcblisting}{}
+\mouse[body=blue]
+\end{tcblisting}
+
+The rotation angle of its arms can be adjusted:
+\begin{tcblisting}{}
+\mouse[rotatearms=40]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the mouse 3-dimensional:
+\begin{tcblisting}{}
+\mouse[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Owl
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Owl]{Jake, the owl}
+
+\emph{The owl Jake was inspired by the avatar of one of the top users of TeX.Stackexchange}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-owls}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\owl
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic owl can be modified by changing its colour:
+\begin{tcblisting}{}
+\owl[body=blue]
+\end{tcblisting}
+
+In addition to the colour of the body, the colour of various body parts can be adjusted:
+\begin{tcblisting}{}
+\owl[eye=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\owl[pupil=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\owl[bill=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\owl[feet=red]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the owl 3-dimensional:
+\begin{tcblisting}{}
+\owl[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Panda
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Panda]{..., the panda}
+
+\emph{....}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-pandas}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\panda
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic panda can be modified by changing its colour:
+\begin{tcblisting}{}
+\panda[body=blue]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the panda 3-dimensional:
+\begin{tcblisting}{}
+\panda[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Penguin
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Penguin]{Tux, the penguin}
+
+\emph{Dedicated to the Linux mascot}
+
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-penguins}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\penguin
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic penguin can be modified by changing its colour:
+\begin{tcblisting}{}
+\penguin[body=blue]
+\end{tcblisting}
+
+In addition to the colour of the body, the colour of various body parts can be adjusted:
+\begin{tcblisting}{}
+\penguin[eye=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\penguin[pupil=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\penguin[bill=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\penguin[belly=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\penguin[feet=red]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the penguin 3-dimensional:
+\begin{tcblisting}{}
+\penguin[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Pig
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Pig]{Ms Piggy, the pig}
+
+\emph{Added on February 5th, 2019 to commemorate the Chinese year of the pig}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-pigs}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\pig
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic pig can be modified by changing its colour:
+\begin{tcblisting}{}
+\pig[body=blue]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the pig 3-dimensional:
+\begin{tcblisting}{}
+\pig[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Rhino
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Rhino]{D\"urer, the rhino}
+
+\emph{Named after Albert D\"urer who painted an amazing rhino merely based on stories}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-rhinos}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\rhino
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic rhino can be modified by changing its colour:
+\begin{tcblisting}{}
+\rhino[body=blue]
+\end{tcblisting}
+
+The hippo can also do its nails:
+\begin{tcblisting}{}
+\rhino[toes=red]
+\end{tcblisting}
+
+The key \lstinline|3D| will make the rhino 3-dimensional:
+\begin{tcblisting}{}
+\rhino[3D]
+\end{tcblisting}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Sloth
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Sloth]{Riley, the sloth}
+
+\emph{One of the regulars in the TeX.Stackexchange chat once met a sloth called Riley}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-sloths}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\sloth
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic sloth can be modified by changing its colour:
+\begin{tcblisting}{}
+\sloth[body=blue]
+\end{tcblisting}
+
+If tired, the sloth can take a nap:
+\begin{tcblisting}{}
+\sloth[sleeping]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the sloth 3-dimensional:
+
+\begin{tcblisting}{}
+\sloth[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Snowman
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Snowman]{Yuki, the snowman}
+
+\emph{Yuki is the transcription of the Japanese word for snow}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings-snowmans}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\snowman
+\end{tcblisting}
+
+\subsection{Options}
+
+The basic snowman can be modified by changing its colour:
+\begin{tcblisting}{}
+\snowman[body=blue]
+\end{tcblisting}
+
+In addition to the colour of the body, the colour of various body parts can be adjusted:
+\begin{tcblisting}{}
+\snowman[eye=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\snowman[nose=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\snowman[mouth=red]
+\end{tcblisting}
+\begin{tcblisting}{}
+\snowman[buttons=red]
+\end{tcblisting}
+
+Finally the key \lstinline|3D| will make the snowman 3-dimensional:
+
+\begin{tcblisting}{}
+\snowman[3D]
+\end{tcblisting}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Random Tikzling
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section[Ti\emph{k}Zlings]{... , the Ti\emph{k}Zling}
+
+\emph{The inventor of the word \tikzlings has yet to come up with a name for the Ti\emph{k}Zling}
+
+\subsection{Package name}
+
+\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth]
+\vspace*{0.5cm}
+\lstinline|\usepackage{tikzlings}|
+\vspace*{0.5cm}
+\end{tcolorbox}
+
+\subsection{Basic Usage}
+
+\begin{tcblisting}{}
+\tikzling
+\end{tcblisting}
+
+\subsection{Options}
+
+Only options common for all \tikzlings are supported for the \lstinline|\tikzling|. These are the ability to change the body colour
+\begin{tcblisting}{}
+\tikzling[body=blue]
+\end{tcblisting}
+
+and the \lstinline|3D| key, which will make the Ti\emph{k}Zlings 3-dimensional:
+\begin{tcblisting}{}
+\tikzling[3D]
+\end{tcblisting}
+
+If an option of a specific tikzlings is used (for example \lstinline|sleeping| which only the koala can do) this only works if your are lucky and the koala is drawn, in all other cases it will result in an error.
+
+In addition all usual \TikZ and \lstinline|pgf| keys can be used in the optional argument as well as the accessories presented in the following section.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Accessories
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+\section{Accessories}
+
+To customise the \tikzlings the package provides a number of accessories which can be added to all the \tikzlings simply by adding the respective keyword as optional argument:
+
+\begin{tcblisting}{}
+\bear[hat]
+\end{tcblisting}
+
+For most of these items, the colour can be customised:
+
+\begin{tcblisting}{}
+\koala[crown=orange!50!yellow]
+\end{tcblisting}
+
+Unfortunately it is very difficult to create accessories that will fit all the different shapes of the \tikzlings. Therefore it is also possible to add them separately as optional argument of the \lstinline|\thing| macro, which allows more control of their size and placement:
+
+\begin{tcblisting}{}
+\owl
+\thing[tophat,scale=1.5,yshift=-0.6cm,xshift=-0.05cm]
+\end{tcblisting}
+
+A list of all available accessories is given below. For completeness the default colours for each key are shown, but actually it is unnecessary unless it should be changed. In case more than one key is shown, all but the first are optional.
+
+\subsection{Hats}
+
+\begin{tcblisting}{}
+\penguin[
+ hat=blue!40!black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\snowman[
+ tophat=black!90!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\mouse[
+ beret=black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\owl[
+ strawhat=gray!30!white,
+ ribbon=black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\coati[
+ harlequin=blue,
+ niuqelrah=red
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\cat[
+ witch=gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\bear[
+ magichat=violet,
+ magicstars=yellow!80!brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ crown=yellow!90!orange
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\koala[
+ queencrown=yellow
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\marmot[
+ kingcrown=gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\mouse[
+ santa=red!80!black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\bear[
+ chef=gray!20!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\snowman[
+ graduate=black,
+ tassel=red
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ alien=green
+]
+\end{tcblisting}
+
+\subsection{Communication}
+
+\begin{tcblisting}{}
+\coati[
+ book={\tiny\TeX},
+ bookcolour=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\pig[
+ signpost={\TeX},
+ signcolour= brown!50!black,
+ signback=green!40!black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\bear[
+ speech={\TeX},
+ bubblecolour=gray!30!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ think={\TeX},
+ bubblecolour=gray!30!white
+]
+\end{tcblisting}
+
+\subsection{Food}
+
+\begin{tcblisting}{}
+\koala[
+ pizza
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\mouse[
+ cheese=yellow!30!orange!60!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\coati[
+ baguette=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\moles[
+ cake=violet
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\marmot[
+ icecream=brown!60!gray,
+ flavoura=brown!50!black,
+ flavourb=white!70!brown,
+ flavourc=red!50!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ milkshake=red!20!white
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\owl[
+ wine=red!70!black
+]
+\end{tcblisting}
+
+\subsection{Sports}
+
+\begin{tcblisting}{}
+\coati[
+ cricket=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\hippo[
+ hockey=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\koala[
+ football=white
+]
+\end{tcblisting}
+
+\subsection{Other items}
+
+\begin{tcblisting}{}
+\marmot[
+ crystalball=cyan
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\bear[
+ magicwand
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\coati[
+ rollingpin=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ lightsaber=green
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\snowman[
+ torch=gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\mouse[
+ basket=brown!70!gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\sloth[
+ easter=brown!70!gray,
+ egga=blue,
+ eggb=green,
+ eggc=red
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\koala[
+ crozier=brown
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\snowman[
+ shovel=gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\penguin[
+ pickaxe=gray
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\rhino[
+ umbrella=cyan
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\marmot[
+ umbrellaclosed=cyan
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\mouse[
+ handbag=red!70!black
+]
+\end{tcblisting}
+
+\begin{tcblisting}{}
+\bear[
+ cocktail
+]
+\end{tcblisting}
+
+\end{document}
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-hippos.sty b/graphics/pgf/contrib/tikzlings/tikzlings-hippos.sty
new file mode 100644
index 0000000000..61d7eb7aeb
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-hippos.sty
@@ -0,0 +1,141 @@
+% !TeX root = ./examples/hippo.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-hippos package (part of the tikzlings collection)
+% A package to bring little hippos into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-hippos}
+ [2019/04/07 v0.2 Drawing hippos in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\hippo}[1][]{%
+ \begin{scope}%
+ \tikzset{/hippo/.cd,#1}%
+ \hippo@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifhippo@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /hippo/.search also={/tikz,/pgf,/thing},
+ /hippo/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\hippo@body{#1},
+ body = gray,
+ toes/.code = \def\hippo@toes{#1},
+ toes = \hippo@body!55!white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \hippo@threeDtrue,
+}
+
+\def\hippo@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.625, 2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifhippo@threeD
+ \def\hippo@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\hippo@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hippo@part@draw[\hippo@body,rotate around={-30:(0.23,2.03)}] (0.23,2.03) ellipse (0.09 and 0.13);
+\hippo@part@draw[\hippo@body,rotate around={30:(-0.23,2.03)}] (-0.23,2.03) ellipse (0.09 and 0.13);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hippo@part@draw[\hippo@body!55!white] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.6 , 1.3) .. ( 0.6, 0.8) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hippo@part@draw[\hippo@body,rotate around={90:(0.35,1.0)}] (0.35,1.0) ellipse (0.24 and 0.13);
+\hippo@part@draw[\hippo@body,rotate around={-90:(-0.35,1.0)}] (-0.35,1.0) ellipse (0.24 and 0.13);
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hippo@part@draw[\hippo@body!55!white] (0, 1.76) circle (0.36);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[white] (-0.11, 1.83) ellipse (0.08 and 0.12);
+\fill[white] (0.11, 1.83) ellipse (0.08 and 0.12);
+\fill[black] (-0.105, 1.78) ellipse (0.04 and 0.07);
+\fill[black] (0.105, 1.78) ellipse (0.04 and 0.07);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hippo@part@draw[\hippo@body!80!white] (0, 1.55) ellipse (0.42 and 0.2);
+\hippo@part@draw[\hippo@body!70!black] (-0.07, 1.63) circle (0.035);
+\hippo@part@draw[\hippo@body!70!black] (0.07, 1.63) circle (0.035);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifhippo@threeD
+ \draw[black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \else
+ \draw[\hippo@body!70!black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \fi
+ %
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{scope}
+ \clip (-0.5,0.4) rectangle (0.5,0.13);
+ \hippo@part@draw[\hippo@body] (-0.25,0.15) ellipse (0.16 and 0.17);
+ \hippo@part@draw[\hippo@body] (0.25,0.15) ellipse (0.16 and 0.17);
+ \hippo@part@draw[\hippo@toes] (0.25,0.13) ellipse (0.05 and 0.1);
+ \hippo@part@draw[\hippo@toes] (0.13,0.11) ellipse (0.05 and 0.1);
+ \hippo@part@draw[\hippo@toes] (0.37,0.11) ellipse (0.05 and 0.1);
+ \hippo@part@draw[\hippo@toes] (-0.25,0.13) ellipse (0.05 and 0.1);
+ \hippo@part@draw[\hippo@toes] (-0.13,0.11) ellipse (0.05 and 0.1);
+ \hippo@part@draw[\hippo@toes] (-0.37,0.11) ellipse (0.05 and 0.1);
+\end{scope}
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-koalas.sty b/graphics/pgf/contrib/tikzlings/tikzlings-koalas.sty
new file mode 100644
index 0000000000..206a291895
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-koalas.sty
@@ -0,0 +1,172 @@
+% !TeX root = ./examples/koala.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-koalas package (part of the tikzlings collection)
+% A package to bring little koalas into tikz
+% Created by @marmot (https://tex.stackexchange.com/a/448397/36296)
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-koalas}
+ [2019/04/07 v0.2 Drawing koalas in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+\usetikzlibrary{shadows.blur}
+\usetikzlibrary{fadings}
+
+\tikzfading[name=koala@blush,inner color=transparent!50,outer color=transparent!100]
+
+\newcommand*{\koala}[1][]{%
+ \begin{scope}%
+ \tikzset{/koala/.cd,#1}%
+ \koala@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifkoala@blush
+\newif\ifkoala@sleeping
+\newif\ifkoala@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /koala/.search also={/tikz,/pgf,/thing},
+ /koala/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\koala@body{#1},
+ body = gray!75!white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ blush/.code = \koala@blushtrue,
+ sleeping/.code = \koala@sleepingtrue,
+ 3D/.code = \koala@threeDtrue,
+}
+
+\def\koala@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.88,0.1) rectangle (0.88, 2.35);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifkoala@threeD
+ \def\koala@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\koala@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body!50!black] (0.255,0.2) ellipse (0.23 and 0.09);
+\koala@part@draw[\koala@body!50!black] (-0.255,0.2) ellipse (0.23 and 0.09);
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body] (0.405, 2.1) ellipse (0.3 and 0.23);
+\koala@part@draw[\koala@body!40!white] (0.405, 2.1) ellipse (0.15 and 0.12);
+\koala@part@draw[\koala@body] (-0.405, 2.1) ellipse (0.3 and 0.23);
+\koala@part@draw[\koala@body!40!white] (-0.405, 2.1) ellipse (0.15 and 0.12);
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body,rotate around={70:(-0.625,1)}] (-0.625,1) ellipse (0.42 and 0.13);
+\koala@part@draw[\koala@body!50!black,rotate around={-20:(-0.745,0.65)}] (-0.745,0.65) ellipse (0.12 and 0.08);
+\koala@part@draw[\koala@body,rotate around={-70:(0.625,1)}] (0.625,1) ellipse (0.42 and 0.13);
+\koala@part@draw[\koala@body!50!black,rotate around={20:(0.745,0.65)}] (0.745,0.65) ellipse (0.12 and 0.08);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body!40!white] ( 0.425, 0.71) .. controls ( 0.425, 0.41) and ( 0.255, 0.27) .. ( 0 , 0.27) .. controls (-0.255, 0.27) and (-0.425, 0.41) .. (-0.425, 0.71) .. controls (-0.425, 1.01) and (-0.255, 1.20) .. ( 0 , 1.20) .. controls ( 0.225, 1.20) and ( 0.425, 1.01) .. ( 0.425, 0.71) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body] (0,1.67) ellipse (0.55 and 0.45);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\koala@part@draw[\koala@body!40!black] (-0.1501, 1.5609) .. controls (-0.1784, 1.4833) and (-0.0827, 1.4108) .. ( 0.0000, 1.4108) .. controls ( 0.0827, 1.4108) and ( 0.1784, 1.4833) .. ( 0.1501, 1.5609) .. controls ( 0.1290, 1.6191) and ( 0.1187, 1.6573) .. ( 0.0750, 1.7010) .. controls ( 0.0336, 1.7424) and (-0.0336, 1.7424) .. (-0.0750, 1.7010) .. controls (-0.1187, 1.6573) and (-0.1290, 1.6191) .. (-0.1501, 1.5609) -- cycle;
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifkoala@sleeping
+ \fill[\koala@body!50!black] (0.2534, 1.675) rectangle ++(0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={20:(0.2925, 1.6925)}] (0.29, 1.68) rectangle ++(0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={-20:(0.2143, 1.6925)}] (0.2168, 1.68) rectangle ++(0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={40:(0.3255, 1.7025)}] (0.323, 1.69) rectangle ++(0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={-40:(0.1813, 1.7025)}] (0.1838, 1.69) rectangle ++(0.005, 0.03);
+ \fill[\koala@body!50!black] (-0.2534, 1.675) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={-20:(-0.2925, 1.6925)}] (-0.29, 1.68) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={20:(-0.2143, 1.6925)}] (-0.2168, 1.68) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={-40:(-0.3255, 1.7025)}] (-0.323, 1.69) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black,rotate around={40:(-0.1813, 1.7025)}] (-0.1838, 1.69) rectangle ++(-0.005, 0.03);
+ \fill[\koala@body!50!black, even odd rule] (0.3331, 1.741) .. controls (0.3331, 1.685) and (0.1737, 1.685) .. (0.1737, 1.741) .. controls (0.1737, 1.848) and (0.3331, 1.848) .. (0.3331, 1.741) -- cycle (0.328, 1.741) .. controls (0.323, 1.705) and (0.184, 1.705) .. (0.179, 1.741) .. controls (0.184, 1.843) and (0.323, 1.843) .. (0.328, 1.741) -- cycle;
+ \fill[\koala@body!50!black, even odd rule] (-0.3331, 1.741) .. controls (-0.3331, 1.685) and (-0.1737, 1.685) .. (-0.1737, 1.741) .. controls (-0.1737, 1.848) and (-0.3331, 1.848) .. (-0.3331, 1.741) -- cycle (-0.328, 1.741) .. controls (-0.323, 1.705) and (-0.184, 1.705) .. (-0.179, 1.741) .. controls (-0.184, 1.843) and (-0.323, 1.843) .. (-0.328, 1.741) -- cycle;
+\else
+ \koala@part@draw[black] (-0.255, 1.74) circle (0.08);
+ \koala@part@draw[black] (0.255, 1.74) circle (0.08);
+ \fill[white] (-0.27, 1.76) circle (0.015);
+ \fill[white] (0.24, 1.76) circle (0.015);
+\fi
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifkoala@threeD
+ \draw[black,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16];
+\else
+ \draw[\koala@body!40!black,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16];
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% optional
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifkoala@blush
+ \fill[red,path fading=koala@blush] (-0.3, 1.52) circle (0.1);
+ \fill[red,path fading=koala@blush] (0.3, 1.52) circle (0.1);
+\fi
+%
+}
+
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-marmots.sty b/graphics/pgf/contrib/tikzlings/tikzlings-marmots.sty
new file mode 100644
index 0000000000..abbeb4a1fb
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-marmots.sty
@@ -0,0 +1,223 @@
+% !TeX root = ./examples/marmot.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-marmots package (part of the tikzlings collection)
+% A package to bring little marmots into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-marmots}
+ [2019/04/07 v0.2 Drawing marmots in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+\usetikzlibrary{shadows.blur}
+\usetikzlibrary{fadings}
+
+\tikzfading[name=marmot@blush,inner color=transparent!50,outer color=transparent!100]
+
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+
+\ifluatex
+ \let\pdfrandomseed\randomseed
+\fi
+
+\ifxetex
+ \pgfmathsetseed{\time}
+\else
+ \pgfmathsetseed{\number\pdfrandomseed}
+\fi
+
+\newcommand*{\marmot}[1][]{%
+ \begin{scope}%
+ \tikzset{/marmot/.cd,#1}%
+ \marmot@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifmarmot@blush
+\newif\ifmarmot@whiskers
+\newif\ifmarmot@teeth
+\newif\ifmarmot@threeD
+\newif\ifmarmot@shadow
+\newif\ifmarmot@askphil
+\newif\ifmarmot@leftstep
+\newif\ifmarmot@rightstep
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /marmot/.search also={/tikz,/pgf,/thing},
+ /marmot/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\marmot@body{#1},
+ body = brown,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ blush/.code = \marmot@blushtrue,
+ whiskers/.code = \marmot@whiskerstrue
+ \def\marmot@whiskers{#1},
+ whiskers/.default = gray,
+ teeth/.code = \marmot@teethtrue
+ \def\marmot@teeth{#1},
+ teeth/.default = white,
+ 3D/.code = \marmot@threeDtrue,
+ shadow/.code = \marmot@shadowtrue,
+ askphil/.code = \marmot@askphiltrue,
+ ask phil/.forward to = /marmot/askphil,
+ leftstep/.code = \marmot@leftsteptrue,
+ left step/.forward to = /marmot/leftstep,
+ rightstep/.code = \marmot@rightsteptrue,
+ right step/.forward to = /marmot/rightstep,
+}
+
+\def\marmot@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.905, 2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@threeD
+ \def\marmot@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\marmot@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% shadow
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\ifmarmot@askphil
+ \pgfmathparse{int(random(1,120))}
+ \let\marmot@random=\pgfmathresult
+ \ifnum\marmot@random>17
+ \marmot@shadowtrue
+ \fi
+\fi
+%
+\ifmarmot@shadow
+ \fill[opacity=0,blur shadow,rotate around={-80:(0.3,0.5)}] (0.3,0.5) ellipse (0.28 and 0.8);
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@leftstep
+ \marmot@part@draw[\marmot@body!50!black] (-0.255,0.25) ellipse (0.23 and 0.09);
+\else
+ \marmot@part@draw[\marmot@body!50!black] (-0.255,0.2) ellipse (0.23 and 0.09);
+\fi
+
+\ifmarmot@rightstep
+ \marmot@part@draw[\marmot@body!50!black] (0.255,0.25) ellipse (0.23 and 0.09);
+\else
+ \marmot@part@draw[\marmot@body!50!black] (0.255,0.2) ellipse (0.23 and 0.09);
+\fi
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!black] (0.255,2.03) ellipse (0.09 and 0.13);
+\marmot@part@draw[\marmot@body!50!black] (-0.255,2.03) ellipse (0.09 and 0.13);
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!black] (0.885, 0.67) .. controls (0.865, 0.4) and (0.345, 0.24) .. (0.335, 0.44) .. controls (0.315, 0.56) and (0.445, 0.51) .. (0.575, 0.53) .. controls (0.695, 0.54) and (0.885, 0.72) .. (0.885, 0.67) -- cycle;
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!white] (0.425, 0.71) .. controls (0.425, 0.41) and (0.245, 0.37) .. (0, 0.37) .. controls (-0.245, 0.37) and (-0.425, 0.41) .. (-0.425, 0.71) .. controls (-0.425, 1.01) and (-0.225, 1.26) .. (0, 1.26) .. controls (0.225, 1.26) and (0.425, 1.01) .. (0.425, 0.71) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!black,rotate around={70:(0.385,0.93)}] (0.385,0.93) ellipse (0.24 and 0.13);
+\marmot@part@draw[\marmot@body!50!black,rotate around={-70:(-0.385,0.93)}] (-0.385,0.93) ellipse (0.24 and 0.13);
+%
+% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!white] (0,1.47) ellipse (0.23 and 0.13);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!black] (0,1.6) circle (0.08);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw[\marmot@body!50!black] (-0.155,1.77) circle (0.05);
+\marmot@part@draw[\marmot@body!50!black] (0.155,1.77) circle (0.05);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\marmot@body!50!black] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] -- (-0.14,1.51) -- (-0.14,1.51) arc [start angle=-160, end angle=-20, radius=0.144] -- cycle ;
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% optional
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@blush
+ \fill[red,path fading=marmot@blush] (-0.295,1.6) circle (0.1);
+ \fill[red,path fading=marmot@blush] (0.295,1.6) circle (0.1);
+\fi
+%
+% Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@whiskers
+ \fill[\marmot@whiskers] (0.0788, 1.6146) .. controls (0.1658, 1.6299) and (0.2086, 1.5639) .. (0.2956, 1.5486) -- (0.2956, 1.5586) .. controls (0.2097, 1.5737) and (0.1648, 1.6297) .. (0.0788, 1.6146) -- cycle;
+ \fill[\marmot@whiskers] (-0.0788, 1.6146) .. controls (-0.1658, 1.6299) and (-0.2087, 1.5639) .. (-0.2956, 1.5486) -- (-0.2956, 1.5586) .. controls (-0.2097, 1.5737) and (-0.1648, 1.6297) .. (-0.0788, 1.6146) -- cycle;
+ \fill[\marmot@whiskers] (0.0752, 1.6281) .. controls (0.1583, 1.6583) and (0.2171, 1.6309) .. (0.3002, 1.6007) -- (0.3002, 1.6107) .. controls (0.2174, 1.6408) and (0.158, 1.6582) .. (0.0752, 1.6281) -- cycle;
+ \fill[\marmot@whiskers] (-0.0752, 1.6281) .. controls (-0.1583, 1.6583) and (-0.2171, 1.6309) .. (-0.3002, 1.6007) -- (-0.3002, 1.6107) .. controls (-0.2174, 1.6408) and (-0.158, 1.6582) .. (-0.0752, 1.6281) -- cycle;
+ \fill[\marmot@whiskers] (0.0671, 1.6443) .. controls (0.1414, 1.6925) and (0.2182, 1.7164) .. (0.2925, 1.6682) -- (0.2925, 1.6782) .. controls (0.2179, 1.7266) and (0.1417, 1.6927) .. (0.0671, 1.6443) -- cycle;
+ \fill[\marmot@whiskers] (-0.0671, 1.6443) .. controls (-0.1414, 1.6925) and (-0.2182, 1.7164) .. (-0.2925, 1.6682) -- (-0.2925, 1.6782) .. controls (-0.2179, 1.7266) and (-0.1417, 1.6927) .. (-0.0671, 1.6443) -- cycle;
+\fi
+%
+% Teeth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@teeth
+ \fill[\marmot@body!50!black] (0.048,1.413) rectangle (-0.048,1.373);
+ \fill[\marmot@teeth] (-0.045,1.407) rectangle (-0.004,1.376);
+ \fill[\marmot@teeth] (0.045,1.407) rectangle (0.004,1.376);
+\fi
+%
+}
+
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-mice.sty b/graphics/pgf/contrib/tikzlings/tikzlings-mice.sty
new file mode 100644
index 0000000000..f7fa99eb88
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-mice.sty
@@ -0,0 +1,138 @@
+% !TeX root = ./examples/mouse.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-mice package (part of the tikzlings collection)
+% A package to bring little mice into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-mice}
+ [2019/04/07 v0.2 Drawing mice in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\mouse}[1][]{%
+ \begin{scope}%
+ \tikzset{/mouse/.cd,#1}%
+ \mouse@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifmouse@threeD
+\newif\ifmouse@rotatearms
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /mouse/.search also={/tikz,/pgf,/thing},
+ /mouse/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\mouse@body{#1},
+ body = gray!90!white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \mouse@threeDtrue,
+ rotatearms/.code = \mouse@rotatearmstrue
+ \def\mouse@rotatearms{#1},
+ rotate arms/.forward to = /mouse/rotatearms,
+ rotatearms = 20,
+}
+
+\def\mouse@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.905, 2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmouse@threeD
+ \def\mouse@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\mouse@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!65!white] (-0.255,0.2) ellipse (0.23 and 0.09);
+\mouse@part@draw[\mouse@body!65!white] (0.255,0.2) ellipse (0.23 and 0.09);
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!65!white] (0.36, 2.17) circle (0.28);
+\mouse@part@draw[\mouse@body] (0.36, 2.17) circle (0.15);
+\mouse@part@draw[\mouse@body!65!white] (-0.36, 2.17) circle (0.28);
+\mouse@part@draw[\mouse@body] (-0.36, 2.17) circle (0.15);
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!65!white] (0.348, 0.475) .. controls (0.598, 0.844) and (0.778, 1.475) .. (1.099, 1.625) .. controls (1.369, 1.745) and (1.677, 1.309) .. (1.609, 1.305) .. controls (0.933, 2.178) and (0.771, 0.676) .. (0.411, 0.446) -- cycle;
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!65!white] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!65!white,rotate around={-\mouse@rotatearms:(0.47,1.15)}] (0.47,0.93) ellipse (0.13 and 0.24);
+\mouse@part@draw[\mouse@body!65!white,rotate around={\mouse@rotatearms:(-0.47,1.15)}] (-0.47,0.93) ellipse (0.13 and 0.24);
+%
+% Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\mouse@body!50!black] (0.0788, 1.2046) .. controls (0.1658, 1.2199) and (0.2086, 1.1539) .. (0.2956, 1.1386) -- (0.2956, 1.1486) .. controls (0.2097, 1.1637) and (0.1648, 1.2197) .. (0.0788, 1.2046) -- cycle;
+\fill[\mouse@body!50!black] (-0.0788, 1.2046) .. controls (-0.1658, 1.2199) and (-0.2087, 1.1539) .. (-0.2956, 1.1386) -- (-0.2956, 1.1486) .. controls (-0.2097, 1.1637) and (-0.1648, 1.2197) .. (-0.0788, 1.2046) -- cycle;
+\fill[\mouse@body!50!black] (0.0752, 1.2181) .. controls (0.1583, 1.2483) and (0.2171, 1.2209) .. (0.3002, 1.1907) -- (0.3002, 1.2007) .. controls (0.2174, 1.2308) and (0.158, 1.2482) .. (0.0752, 1.2181) -- cycle;
+\fill[\mouse@body!50!black] (-0.0752, 1.2181) .. controls (-0.1583, 1.2483) and (-0.2171, 1.2209) .. (-0.3002, 1.1907) -- (-0.3002, 1.2007) .. controls (-0.2174, 1.2308) and (-0.158, 1.2482) .. (-0.0752, 1.2181) -- cycle;
+\fill[\mouse@body!50!black] (0.0671, 1.2343) .. controls (0.1414, 1.2825) and (0.2182, 1.3064) .. (0.2925, 1.2582) -- (0.2925, 1.2682) .. controls (0.2179, 1.3166) and (0.1417, 1.2827) .. (0.0671, 1.2343) -- cycle;
+\fill[\mouse@body!50!black] (-0.0671, 1.2343) .. controls (-0.1414, 1.2825) and (-0.2182, 1.3064) .. (-0.2925, 1.2582) -- (-0.2925, 1.2682) .. controls (-0.2179, 1.3166) and (-0.1417, 1.2827) .. (-0.0671, 1.2343) -- cycle;
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!50!black] (0, 1.248) circle (0.09);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mouse@part@draw[\mouse@body!50!black] (0.23, 1.68) circle (0.05);
+\mouse@part@draw[\mouse@body!50!black] (-0.23, 1.68) circle (0.05);
+%
+}
+
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-moles.sty b/graphics/pgf/contrib/tikzlings/tikzlings-moles.sty
new file mode 100644
index 0000000000..b59e022fd5
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-moles.sty
@@ -0,0 +1,144 @@
+% !TeX root = ./examples/mole.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-moles package (part of the tikzlings collection)
+% A package to bring little moles into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-moles}
+ [2019/04/07 v0.2 Drawing moles in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\moles}[1][]{%
+ \begin{scope}%
+ \tikzset{/mole/.cd,#1}%
+ \mole@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifmole@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /mole/.search also={/tikz,/pgf,/thing},
+ /mole/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\mole@body{#1},
+ body = gray,
+ feet/.code = \def\mole@feet{#1},
+ feet = red!20!white!50!brown,
+ hands/.code = \def\mole@hands{#1},
+ hands = red!20!white!50!brown,
+ muzzle/.code = \def\mole@muzzle{#1},
+ muzzle = red!20!white!50!brown,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \mole@threeDtrue,
+}
+
+\def\mole@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.905, 2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmole@threeD
+ \def\mole@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\mole@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@feet] (-0.255,0.2) ellipse (0.23 and 0.09);
+\mole@part@draw[\mole@feet] (0.255,0.2) ellipse (0.23 and 0.09);
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body] (0.885, 0.67) .. controls (0.865, 0.4) and (0.345, 0.24) .. (0.335, 0.44) .. controls (0.315, 0.56) and (0.445, 0.51) .. (0.575, 0.53) .. controls (0.695, 0.54) and (0.885, 0.72) .. (0.885, 0.67) -- cycle;
+%
+% Hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body] (-0.09, 2.06) .. controls (-0.09, 2.06) and (-0.13, 2.25) .. (-0.07, 2.27) .. controls (-0.09, 2.13) and (0.04, 2.08) .. (0.04, 2.08) .. controls (0.04, 2.08) and (0.02, 2.20) .. (0.06, 2.21) .. controls (0.06, 2.11) and (0.13, 2.08) .. (0.13, 2.08) -- cycle;
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body!50!white] (0.425, 0.71) .. controls (0.425, 0.41) and (0.245, 0.37) .. (0, 0.37) .. controls (-0.245, 0.37) and (-0.425, 0.41) .. (-0.425, 0.71) .. controls (-0.425, 1.01) and (-0.225, 1.26) .. (0, 1.26) .. controls (0.225, 1.26) and (0.425, 1.01) .. (0.425, 0.71) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body,rotate around={70:(0.37,0.86)}] (0.37,0.86) ellipse (0.27 and 0.13);
+\mole@part@draw[\mole@body,rotate around={-70:(-0.37,0.86)}] (-0.37,0.86) ellipse (0.27 and 0.13);
+%
+% Hands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[white] (-0.37,0.6) -- (-0.32,0.53) -- (-0.3,0.6) -- (-0.23,0.55) -- (-0.23,0.64) -- (-0.16,0.59) -- (-0.18,0.67) -- cycle;
+\fill[white] (0.37,0.6) -- (0.32,0.53) -- (0.3,0.6) -- (0.23,0.55) -- (0.23,0.64) -- (0.16,0.59) -- (0.18,0.67) -- cycle;
+\mole@part@draw[\mole@hands,rotate around={70:(0.285,0.65)}] (0.285,0.65) ellipse (0.08 and 0.13);
+\mole@part@draw[\mole@hands,rotate around={-70:(-0.285,0.65)}] (-0.285,0.65) ellipse (0.08 and 0.13);
+%
+% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@muzzle] ( 0.22, 1.46) .. controls ( 0.22, 1.50) and ( 0.22, 1.53) .. ( 0.17, 1.56) .. controls ( 0.11, 1.58) and ( 0.05, 1.66) .. ( 0.00, 1.66) .. controls (-0.05, 1.66) and (-0.11, 1.58) .. (-0.17, 1.56) .. controls (-0.22, 1.53) and (-0.22, 1.50) .. (-0.22, 1.46) .. controls (-0.22, 1.39) and (-0.14, 1.33) .. ( 0.00, 1.33) .. controls ( 0.14, 1.33) and ( 0.22, 1.39) .. ( 0.22, 1.46) -- cycle;
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mole@part@draw[\mole@body!60!black] (0,1.67) circle (0.055);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmole@threeD
+ \fill[\mole@body!60!black,rotate around={-15:(-0.165,1.79)}] (-0.165,1.79) ellipse (0.055 and 0.015);
+ \fill[\mole@body!30!black,rotate around={15:(0.165,1.79)}] (0.165,1.79) ellipse (0.055 and 0.015);
+\else
+ \fill[\mole@body!60!black,rotate around={-15:(-0.165,1.79)}] (-0.165,1.79) ellipse (0.055 and 0.015);
+ \fill[\mole@body!60!black,rotate around={15:(0.165,1.79)}] (0.165,1.79) ellipse (0.055 and 0.015);
+\fi
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\mole@body!60!black, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] ;
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-owls.sty b/graphics/pgf/contrib/tikzlings/tikzlings-owls.sty
new file mode 100644
index 0000000000..b54f37f88a
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-owls.sty
@@ -0,0 +1,136 @@
+% !TeX root = ./examples/owl.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-owls package (part of the tikzlings collection)
+% A package to draw litlle owls with tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-owls}
+ [2019/04/07 v0.2 Draw owls in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\owl}[1][]{%
+ \begin{scope}%
+ \tikzset{/owl/.cd,#1}%
+ \owl@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifowl@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /owl/.search also={/tikz,/pgf,/thing},
+ /owl/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\owl@body{#1},
+ body = brown!70!black,
+ eye/.code = \def\owl@eye{#1},
+ eye = white!90!gray,
+ pupil/.code = \def\owl@pupil{#1},
+ pupil = brown!30!black,
+ bill/.code = \def\owl@bill{#1},
+ bill = orange,
+ feet/.code = \def\owl@feet{#1},
+ feet = orange,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \owl@threeDtrue,
+}
+
+\def\owl@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.73, 0.08) rectangle (0.73, 2.24);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifowl@threeD
+ \def\owl@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\owl@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0.925)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@body,rotate around={-80:(0.575,0.8)}] (0.575,0.8) ellipse (0.38 and 0.1);
+\owl@part@draw[\owl@body,rotate around={80:(-0.575,0.8)}] (-0.575,0.8) ellipse (0.38 and 0.1);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@body] (-0.6361, 1.777) .. controls (-0.6361, 1.777) and (-0.7586, 1.9603) .. (-0.6759, 2.2145) .. controls (-0.3248, 1.912) and (0.3248, 1.912) .. (0.6759, 2.2145) .. controls (0.7586, 1.9603) and (0.6361, 1.777) .. (0.6361, 1.777);
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@body!50!white] (0.425,0.5) .. controls (0.425,0.31) and (0.245,0.27) .. (0,0.27) .. controls (-0.245,0.27) and (-0.425,0.31) .. (-0.425,0.5) .. controls (-0.425,0.81) and (-0.225,0.98) .. (0,0.98) .. controls (0.225,0.98) and (0.425,0.81) .. (0.425,0.5) -- cycle;
+%
+% head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@body] (0,1.55) ellipse (0.7 and 0.55);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\owl@eye] (-0.28, 1.6) circle (0.22);
+\owl@part@draw[\owl@pupil] (-0.28, 1.6) circle (0.15);
+\fill[\owl@eye] (0.28, 1.6) circle (0.22);
+\owl@part@draw[\owl@pupil] (0.28, 1.6) circle (0.15);
+\owl@part@draw[white] (0.25, 1.64) circle (0.03);
+\owl@part@draw[white] (-0.31, 1.64) circle (0.03);
+%
+% Bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@bill] (0, 1.4) -- (-0.1, 1.3) -- (0, 1.15) -- (0.1, 1.3) -- cycle;
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\owl@part@draw[\owl@feet] (0.175,0.2) ellipse (0.03 and 0.1);
+\owl@part@draw[\owl@feet,rotate around={20:(0.225,0.21)}] (0.225,0.21) ellipse (0.03 and 0.1);
+\owl@part@draw[\owl@feet,rotate around={40:(0.275,0.23)}] (0.275,0.23) ellipse (0.03 and 0.1);
+\owl@part@draw[\owl@feet] (-0.175,0.2) ellipse (0.03 and 0.1);
+\owl@part@draw[\owl@feet,rotate around={-20:(-0.225,0.21)}] (-0.225,0.21) ellipse (0.03 and 0.1);
+\owl@part@draw[\owl@feet,rotate around={-40:(-0.275,0.23)}] (-0.275,0.23) ellipse (0.03 and 0.1);
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-pandas.sty b/graphics/pgf/contrib/tikzlings/tikzlings-pandas.sty
new file mode 100644
index 0000000000..1361cd2df7
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-pandas.sty
@@ -0,0 +1,128 @@
+% !TeX root = ./examples/panda.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-pandas package (part of the tikzlings collection)
+% A package to bring little pandas into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-pandas}
+ [2019/04/07 v0.2 Drawing pandas in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\panda}[1][]{%
+ \begin{scope}%
+ \tikzset{/panda/.cd,#1}%
+ \panda@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifpanda@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /panda/.search also={/tikz,/pgf,/thing},
+ /panda/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\panda@body{#1},
+ body = white!90!black,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \panda@threeDtrue,
+}
+
+\def\panda@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.62,0.05) rectangle (0.62, 2.18);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpanda@threeD
+ \def\panda@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\panda@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[\panda@body!55!white] (0,0.78) ellipse (0.57 and 0.65);
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{scope}[yshift=-0.08cm]
+\panda@part@draw[black,rotate around={70:(0.28,0.93)}] (0.28,0.93) ellipse (0.24 and 0.13);
+\panda@part@draw[black,rotate around={-70:(-0.28,0.93)}] (-0.28,0.93) ellipse (0.24 and 0.13);
+\end{scope}
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[black] (0.32, 0.27) circle (0.2);
+\panda@part@draw[black] (-0.32, 0.27) circle (0.2);
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[black] (0.32, 2) circle (0.15);
+\panda@part@draw[black] (-0.32, 2) circle (0.15);
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[\panda@body!55!white] (0.4897, 1.5886) .. controls (0.4614, 1.8238) and (0.25, 2.1172) .. (0, 2.1134) .. controls (-0.25, 2.1172) and (-0.4614, 1.8238) .. (-0.4897, 1.5886) .. controls (-0.5261, 1.3269) and (-0.2748, 1.2377) .. (0, 1.2377) .. controls (0.2748, 1.2377) and (0.5261, 1.3269) .. (0.4897, 1.5886) -- cycle;
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[black] (0.3732, 1.6905) .. controls (0.3498, 1.767) and (0.2032, 1.8059) .. (0.0944, 1.7715) .. controls (-0.0145, 1.7371) and (0.173, 1.5479) .. (0.2508, 1.5443) .. controls (0.3286, 1.5407) and (0.3965, 1.614) .. (0.3732, 1.6905) -- cycle;
+\panda@part@draw[black] (-0.3732, 1.6905) .. controls (-0.3498, 1.767) and (-0.2032, 1.8059) .. (-0.0944, 1.7715) .. controls (0.0145, 1.7371) and (-0.173, 1.5479) .. (-0.2508, 1.5443) .. controls (-0.3286, 1.5407) and (-0.3965, 1.614) .. (-0.3732, 1.6905) -- cycle;
+\panda@part@draw[white] (-0.18, 1.7) circle (0.05);
+\panda@part@draw[white] (0.18, 1.7) circle (0.05);
+\panda@part@draw[black] (0.17, 1.695) circle (0.02);
+\panda@part@draw[black] (-0.17, 1.695) circle (0.02);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[black,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\panda@part@draw[black] (0,1.55) ellipse (0.07 and 0.04);
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-penguins.sty b/graphics/pgf/contrib/tikzlings/tikzlings-penguins.sty
new file mode 100644
index 0000000000..70d90092fa
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-penguins.sty
@@ -0,0 +1,128 @@
+% !TeX root = ./examples/pingu.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-penguins package (part of the tikzlings collection)
+% A package to bring penguins into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-penguins}
+ [2019/04/07 v0.2 Draw penguins in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\penguin}[1][]{%
+ \begin{scope}%
+ \tikzset{/penguin/.cd,#1}%
+ \penguin@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifpenguin@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /penguin/.search also={/tikz,/pgf,/thing},
+ /penguin/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\penguin@body{#1},
+ body = black,
+ belly/.code = \def\penguin@belly{#1},
+ belly = white!95!black,
+ feet/.code = \def\penguin@feet{#1},
+ feet = yellow!50!orange,
+ bill/.code = \def\penguin@bill{#1},
+ bill = orange,
+ eye/.code = \def\penguin@eye{#1},
+ eye = white!95!black,
+ pupil/.code = \def\penguin@pupil{#1},
+ pupil = black,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \penguin@threeDtrue,
+}
+
+\def\penguin@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.865, 0.15) rectangle (0.865, 2.13);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpenguin@threeD
+ \def\penguin@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\penguin@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0.925)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\penguin@part@draw[\penguin@body,rotate around={-50:(0.575,1.2)}] (0.575,1.2) ellipse (0.38 and 0.1);
+\penguin@part@draw[\penguin@body,rotate around={50:(-0.575,1.2)}] (-0.575,1.2) ellipse (0.38 and 0.1);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\penguin@part@draw[\penguin@body] (0.595, 0.92) .. controls (0.595, 0.26) and (0.355, 0.18) .. (0, 0.18) .. controls (-0.355, 0.18) and (-0.595, 0.26) .. (-0.595, 0.92) .. controls (-0.605, 1.58) and (-0.335, 2.11) .. (0, 2.11) .. controls (0.335, 2.11) and (0.605, 1.58) .. (0.595, 0.92) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\penguin@part@draw[\penguin@belly] (0, 0.6) ellipse (0.48 and 0.35);
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\penguin@part@draw[\penguin@feet]
+(-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle;
+\penguin@part@draw[\penguin@feet]
+(0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle;
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\penguin@eye,rotate around={-10:(-0.175,1.64)}] (-0.175,1.64) ellipse (0.1 and 0.15);
+\fill[\penguin@pupil,rotate around={-3:(-0.145,1.625)}] (-0.145,1.625) ellipse (0.0357 and 0.0714);
+\fill[\penguin@eye,rotate around={10:(0.175,1.64)}] (0.175,1.64) ellipse (0.1 and 0.15);
+\fill[\penguin@pupil,rotate around={3:(0.145,1.625)}] (0.145,1.625) ellipse (0.0357 and 0.0714);
+%
+% Bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\penguin@part@draw[\penguin@bill] (0.323, 1.4591) .. controls (0.1467, 1.3257) and (0.1066, 1.4365) .. (0, 1.4358) .. controls (-0.1066, 1.4365) and (-0.1467, 1.3257) .. (-0.323, 1.4591) .. controls (-0.1267, 1.075) and (0.1267, 1.075) .. (0.323, 1.4591) -- cycle;
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-pigs.sty b/graphics/pgf/contrib/tikzlings/tikzlings-pigs.sty
new file mode 100644
index 0000000000..8ebc701955
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-pigs.sty
@@ -0,0 +1,134 @@
+% !TeX root = ./examples/pig.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-pigs package (part of the tikzlings collection)
+% A package to bring little pigs into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-pigs}
+ [2019/04/07 v0.2 Drawing pigs in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+\definecolor{pigdark}{RGB}{241,164,142}
+
+\newcommand*{\pig}[1][]{%
+ \begin{scope}%
+ \tikzset{/pig/.cd,#1}%
+ \pig@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifpig@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /pig/.search also={/tikz,/pgf,/thing},
+ /pig/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\pig@body{#1},
+ body = pigdark,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \pig@threeDtrue,
+}
+
+\def\pig@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.905, 2.27);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpig@threeD
+ \def\pig@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\pig@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\pig@body,line width=\scalingfactor*0.8pt] (0.8471, 0.5927) .. controls (0.8549, 0.4832) and (0.8046, 0.4105) .. (0.7319, 0.4079) .. controls (0.6592, 0.4052) and (0.6142, 0.4365) .. (0.5964, 0.5024) .. controls (0.5786, 0.5682) and (0.6252, 0.6291) .. (0.6794, 0.6342) .. controls (0.7335, 0.6394) and (0.7561, 0.6114) .. (0.7663, 0.5661) .. controls (0.7765, 0.5208) and (0.746, 0.458) .. (0.7192, 0.4319) .. controls (0.6924, 0.4058) and (0.7073, 0.4182) .. (0.6604, 0.3859) .. controls (0.6134, 0.3536) and (0.4367, 0.3643) .. (0.3877, 0.5055);
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body!55!white] ( 0.6, 0.8 ) .. controls ( 0.6 , 0.4) and ( 0.35, 0.16) .. ( 0.0, 0.16) .. controls (-0.35, 0.16) and (-0.6 , 0.4) .. (-0.6, 0.8 ) .. controls (-0.6 , 1.3) and (-0.35, 1.5) .. ( 0.0, 1.5) .. controls ( 0.35, 1.5) and ( 0.6 , 1.3) .. ( 0.6, 0.75) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body] (-0.2402, 0.9823) .. controls (-0.2994, 1.0582) and (-0.3721, 1.0651) .. (-0.4024, 0.9978) .. controls (-0.4327, 0.9305) and (-0.4092, 0.8145) .. (-0.35, 0.7386) .. controls (-0.3311, 0.7145) and (-0.3101, 0.6964) .. (-0.289, 0.6862) .. controls (-0.2755, 0.7023) and (-0.2498, 0.7563) .. (-0.2498, 0.7563) .. controls (-0.2498, 0.7563) and (-0.1790, 0.731) .. (-0.1611, 0.746) .. controls (-0.1611, 0.746) and (-0.1809, 0.9064) .. (-0.2402, 0.9823) -- cycle;
+\pig@part@draw[\pig@body] (0.2402, 0.9823) .. controls (0.2994, 1.0582) and (0.3721, 1.0651) .. (0.4024, 0.9978) .. controls (0.4327, 0.9305) and (0.4092, 0.8145) .. (0.35, 0.7386) .. controls (0.3311, 0.7145) and (0.3101, 0.6964) .. (0.289, 0.6862) .. controls (0.2755, 0.7023) and (0.2498, 0.7563) .. (0.2498, 0.7563) .. controls (0.2498, 0.7563) and (0.1790, 0.731) .. (0.1611, 0.746) .. controls (0.1611, 0.746) and (0.1809, 0.9064) .. (0.2402, 0.9823) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body!55!white] (0,1.64) ellipse (.5 and .5);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[gray] (-0.09, 1.82) circle (0.02);
+\pig@part@draw[gray] ( 0.09, 1.82) circle (0.02);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body] (0, 1.62) ellipse (0.18 and 0.14);
+\pig@part@draw[gray] (-0.06, 1.62) circle (0.035);
+\pig@part@draw[gray] ( 0.06, 1.62) circle (0.035);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifpig@threeD
+ \draw[gray!70!black,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16] ;
+\else
+ \draw[gray,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16] ;
+\fi
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle;
+\pig@part@draw[\pig@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle;
+\pig@part@draw[\pig@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle;
+\pig@part@draw[\pig@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle;
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pig@part@draw[\pig@body] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle;
+\pig@part@draw[\pig@body] (-0.3216,0.15) arc (195:-15:0.12) -- (-0.16,0.15) to[bend right] (-0.25,0.15) --cycle;
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty b/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty
new file mode 100644
index 0000000000..dabbd15f17
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty
@@ -0,0 +1,142 @@
+% !TeX root = ./examples/rhino.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-rhinos package (part of the tikzlings collection)
+% A package to bring little rhinos into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-rhinos}
+ [2019/04/07 v0.2 Drawing rhinos in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\rhino}[1][]{%
+ \begin{scope}%
+ \tikzset{/rhino/.cd,#1}%
+ \rhino@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifrhino@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /rhino/.search also={/tikz,/pgf,/thing},
+ /rhino/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\rhino@body{#1},
+ body = gray,
+ toes/.code = \def\rhino@toes{#1},
+ toes = \rhino@body!55!white,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \rhino@threeDtrue,
+}
+
+\def\rhino@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.625,0.1) rectangle (0.625, 2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifrhino@threeD
+ \def\rhino@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\rhino@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[\rhino@body] (-0.1772, 2.0686) .. controls (-0.2057, 2.1602) and (-0.3552, 2.2076) .. (-0.3552, 2.1922) .. controls (-0.3552, 2.1922) and (-0.3694, 1.9615) .. (-0.2855, 1.9615) .. controls (-0.2264, 1.9462) and (-0.1772, 1.9462) .. (-0.1772, 2.0686) -- cycle;
+\rhino@part@draw[\rhino@body] (0.1772, 2.0686) .. controls (0.2057, 2.1602) and (0.3552, 2.2076) .. (0.3552, 2.1922) .. controls (0.3552, 2.1922) and (0.3694, 1.9615) .. (0.2855, 1.9615) .. controls (0.2264, 1.9462) and (0.1772, 1.9462) .. (0.1772, 2.0686) -- cycle;
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[\rhino@body!55!white] ( 0.55, 0.8 ) .. controls ( 0.55 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.55 , 0.4) .. (-0.55, 0.8 ) .. controls (-0.55 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.55 , 1.3) .. ( 0.55, 0.75) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[\rhino@body,rotate around={90:(0.3,1.0)}] (0.3,1.0) ellipse (0.24 and 0.13);
+\rhino@part@draw[\rhino@body,rotate around={-90:(-0.3,1.0)}] (-0.3,1.0) ellipse (0.24 and 0.13);
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[\rhino@body!55!white] (0, 1.76) circle (0.36);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[white] (-0.11, 1.83) ellipse (0.08 and 0.12);
+\fill[white] (0.11, 1.83) ellipse (0.08 and 0.12);
+\fill[black] (-0.105, 1.78) ellipse (0.04 and 0.07);
+\fill[black] (0.105, 1.78) ellipse (0.04 and 0.07);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[\rhino@body!80!white] (0, 1.55) ellipse (0.36 and 0.2);
+%
+% Horn %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\rhino@part@draw[white!95!yellow] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle;
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifrhino@threeD
+ \draw[black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \else
+ \draw[\rhino@body!70!black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ;
+ \fi
+ %
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{scope}
+ \clip (-0.5,0.4) rectangle (0.5,0.13);
+ \rhino@part@draw[\rhino@body] (-0.25,0.15) ellipse (0.16 and 0.17);
+ \rhino@part@draw[\rhino@body] (0.25,0.15) ellipse (0.16 and 0.17);
+ \rhino@part@draw[\rhino@toes] (0.25,0.13) ellipse (0.05 and 0.1);
+ \rhino@part@draw[\rhino@toes] (0.13,0.11) ellipse (0.05 and 0.1);
+ \rhino@part@draw[\rhino@toes] (0.37,0.11) ellipse (0.05 and 0.1);
+ \rhino@part@draw[\rhino@toes] (-0.25,0.13) ellipse (0.05 and 0.1);
+ \rhino@part@draw[\rhino@toes] (-0.13,0.11) ellipse (0.05 and 0.1);
+ \rhino@part@draw[\rhino@toes] (-0.37,0.11) ellipse (0.05 and 0.1);
+\end{scope}
+%
+} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-sloths.sty b/graphics/pgf/contrib/tikzlings/tikzlings-sloths.sty
new file mode 100644
index 0000000000..7d774bec90
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-sloths.sty
@@ -0,0 +1,171 @@
+% !TeX root = ./examples/sloth.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-sloths package (part of the tikzlings collection)
+% A package to bring little sloths into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-sloths}
+ [2019/04/07 v0.2 Drawing sloths in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\definecolor{slothcol}{RGB}{168,156,123}
+
+\newcommand*{\sloth}[1][]{%
+ \begin{scope}%
+ \tikzset{/sloth/.cd,#1}%
+ \sloth@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifsloth@sleeping
+\newif\ifsloth@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /sloth/.search also={/tikz,/pgf,/thing},
+ /sloth/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\sloth@body{#1},
+ body = slothcol,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ sleeping/.code = \sloth@sleepingtrue,
+ 3D/.code = \sloth@threeDtrue,
+}
+
+\def\sloth@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.7,0.12) rectangle (0.7, 2.27);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifsloth@threeD
+ \def\sloth@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\sloth@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body!85!black] (0.53,0.85) .. controls (0.53,0.29) and (0.32,0.22) .. (0,0.22) .. controls (-0.32,0.22) and (-0.53,0.29) ..
+(-0.53,0.85) .. controls (-0.53,1.41) and (-0.32,1.87) .. (0,1.87) .. controls (0.33,1.87) and (0.53,1.41) .. (0.53,0.85) -- cycle;
+%
+% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body]
+( 0.50,1.67) .. controls ( 0.50,1.91) and ( 0.27,2.10) ..
+( 0.00,2.10) .. controls (-0.27,2.10) and (-0.50,1.91) .. (-0.50,1.67) .. controls (-0.50,1.43) and (-0.33,1.28) ..
+( 0.00,1.28) .. controls ( 0.33,1.28) and ( 0.50,1.43) ..
+( 0.50,1.67) -- cycle;
+\sloth@part@draw[\sloth@body!50!white] ( 0.40,1.67) .. controls ( 0.40,1.90) and ( 0.12,2.09) .. ( 0.00,1.93) .. controls (-0.12,2.09) and (-0.40,1.90) .. (-0.40,1.67) .. controls (-0.40,1.45) and (-0.25,1.38) .. ( 0.00,1.38) .. controls ( 0.25,1.38) and ( 0.40,1.45) .. ( 0.40,1.67) -- cycle;
+%
+% behind the eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\sloth@body!60!black] (0.3785,1.5336) .. controls (0.3012,1.5864) and (0.1829,1.6693) .. (0.1377,1.7234) .. controls (0.1184,1.7464) and (0.1624,1.8242) .. (0.1906,1.8137) .. controls (0.2673,1.7851) and (0.3597,1.7125) .. (0.3994,1.6531) .. controls (0.4129,1.6328) and (0.3785,1.5336) .. (0.3785,1.5336) -- cycle;
+\fill[\sloth@body!60!black] (-0.3785,1.5336) .. controls (-0.3012,1.5864) and (-0.1829,1.6693) .. (-0.1377,1.7234) .. controls (-0.1184,1.7464) and (-0.1624,1.8242) .. (-0.1906,1.8137) .. controls (-0.2673,1.7851) and (-0.3597,1.7125) .. (-0.3994,1.6531) .. controls (-0.4129,1.6328) and (-0.3785,1.5336) .. (-0.3785,1.5336) -- cycle;
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifsloth@sleeping
+ \fill[\sloth@body!50!white] (0.237, 1.743) .. controls (0.237, 1.712) and (0.157, 1.712) .. (0.157, 1.743) .. controls (0.157, 1.802) and (0.237, 1.802) .. (0.237, 1.743) -- cycle;
+ \fill[\sloth@body!50!white] (-0.237, 1.743) .. controls (-0.237, 1.712) and (-0.157, 1.712) .. (-0.157, 1.743) .. controls (-0.157, 1.802) and (-0.237, 1.802) .. (-0.237, 1.743) -- cycle;
+ %
+ \fill[\sloth@body!50!white] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={44:(0.195, 1.76)}] (0.195, 1.701) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={-22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={-44:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02);
+ %
+ \fill[\sloth@body!50!white] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={44:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={-22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02);
+ \fill[\sloth@body!50!white,rotate around={-44:(-0.195, 1.76)}] (-0.195, 1.701) rectangle ++(0.005, 0.02);
+\else
+ \sloth@part@draw[black] (0.193,1.75) circle (0.04);
+ \sloth@part@draw[black] (-0.193,1.75) circle (0.04);
+ \fill[white] (-0.2 ,1.765) circle (0.006);
+ \fill[white] ( 0.186,1.765) circle (0.006);
+\fi
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body!40!black] (0,1.665) ellipse (0.078 and 0.048);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\sloth@body!40!black,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16];
+%
+% Hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body] (-0.1128,2.0724) .. controls (-0.1128,2.0724) and (-0.1499,2.2329) .. (-0.0972,2.2525) .. controls (-0.1082,2.1318) and (-0.0047,2.0839) .. (-0.0047,2.0839) .. controls (-0.0047,2.0839) and (-0.0219,2.1866) .. (0.0145,2.1933) .. controls (0.0142,2.1159) and (0.0770,2.0884) .. (0.0770,2.0884) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body!70!white] (0.36, 0.74) .. controls (0.36, 0.49) and (0.22, 0.41) .. (0, 0.41) .. controls (-0.22, 0.41) and (-0.36, 0.49) .. (-0.36, 0.74) .. controls (-0.36, 1) and (-0.22, 1.16) .. (0, 1.16) .. controls (0.22, 1.16) and (0.36, 1) .. (0.36, 0.74) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body] (-0.50, 1.24) .. controls (-0.54, 1.24) and (-0.55, 1.20) .. (-0.56, 1.17) .. controls (-0.61, 1.06) and (-0.63, 0.95) .. (-0.64, 0.83) .. controls (-0.64, 0.80) and (-0.64, 0.77) .. (-0.63, 0.74) .. controls (-0.57, 0.66) and (-0.47, 0.60) .. (-0.38, 0.56) .. controls (-0.31, 0.54) and (-0.23, 0.52) .. (-0.16, 0.54) .. controls (-0.12, 0.54) and (-0.10, 0.59) .. (-0.13, 0.61) .. controls (-0.17, 0.68) and (-0.24, 0.73) .. (-0.30, 0.77) .. controls (-0.34, 0.79) and (-0.38, 0.81) .. (-0.42, 0.83) .. controls (-0.41, 0.92) and (-0.41, 1.01) .. (-0.42, 1.09) .. controls (-0.43, 1.14) and (-0.44, 1.19) .. (-0.48, 1.23) .. controls (-0.48, 1.24) and (-0.49, 1.24) .. (-0.50, 1.24) -- cycle;
+\sloth@part@draw[\sloth@body] (0.50, 1.24) .. controls (0.54, 1.24) and (0.55, 1.20) .. (0.56, 1.17) .. controls (0.61, 1.06) and (0.63, 0.95) .. (0.64, 0.83) .. controls (0.64, 0.80) and (0.64, 0.77) .. (0.63, 0.74) .. controls (0.57, 0.66) and (0.47, 0.60) .. (0.38, 0.56) .. controls (0.31, 0.54) and (0.23, 0.52) .. (0.16, 0.54) .. controls (0.12, 0.54) and (0.10, 0.59) .. (0.13, 0.61) .. controls (0.17, 0.68) and (0.24, 0.73) .. (0.30, 0.77) .. controls (0.34, 0.79) and (0.38, 0.81) .. (0.42, 0.83) .. controls (0.41, 0.92) and (0.41, 1.01) .. (0.42, 1.09) .. controls (0.43, 1.14) and (0.44, 1.19) .. (0.48, 1.23) .. controls (0.48, 1.24) and (0.49, 1.24) .. (0.50, 1.24) -- cycle;
+%
+\fill[\sloth@body!50!black,rotate around={110:(0.15, 0.61)}] (0.15, 0.61) ellipse (0.017 and 0.07);
+\fill[\sloth@body!50!black,rotate around={117:(0.17, 0.57)}] (0.17, 0.57) ellipse (0.015 and 0.07);
+\fill[\sloth@body!50!black,rotate around={125:(0.19, 0.53)}] (0.19, 0.53) ellipse (0.012 and 0.062);
+%
+\fill[\sloth@body!50!black,rotate around={-110:(-0.15, 0.61)}] (-0.15, 0.61) ellipse (0.017 and 0.07);
+\fill[\sloth@body!50!black,rotate around={-117:(-0.17, 0.57)}] (-0.17, 0.57) ellipse (0.015 and 0.07);
+\fill[\sloth@body!50!black,rotate around={-125:(-0.19, 0.53)}] (-0.19, 0.53) ellipse (0.012 and 0.062);
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\sloth@part@draw[\sloth@body,rotate around={25:(0.33,0.31)}] (0.33,0.31) ellipse (0.25 and 0.13);
+\sloth@part@draw[\sloth@body,rotate around={-25:(-0.33,0.31)}] (-0.33,0.31) ellipse (0.25 and 0.13);
+\fill[\sloth@body!50!black,rotate around={-10:(-0.125,0.265)}] (-0.125,0.265) ellipse (0.07 and 0.019);
+\fill[\sloth@body!50!black,rotate around={-16:(-0.14,0.21)}] (-0.14,0.21) ellipse (0.07 and 0.017);
+\fill[\sloth@body!50!black,rotate around={-22:(-0.16,0.165)}] (-0.16,0.165) ellipse (0.07 and 0.015);
+\fill[\sloth@body!50!black,rotate around={10:(0.125,0.265)}] (0.125,0.265) ellipse (0.07 and 0.019);
+\fill[\sloth@body!50!black,rotate around={16:(0.14,0.21)}] (0.14,0.21) ellipse (0.07 and 0.017);
+\fill[\sloth@body!50!black,rotate around={22:(0.16,0.165)}] (0.16,0.165) ellipse (0.07 and 0.015);
+%
+}
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-snowmans.sty b/graphics/pgf/contrib/tikzlings/tikzlings-snowmans.sty
new file mode 100644
index 0000000000..c084e99bcb
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings-snowmans.sty
@@ -0,0 +1,132 @@
+% !TeX root = ./examples/snowman.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings-snowmans package (part of the tikzlings collection)
+% A package to bring snowmans into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings-snowmans}
+ [2019/04/07 v0.2 Draw snowmans in TikZ]
+
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-addons}
+
+\newcommand*{\snowman}[1][]{%
+ \begin{scope}%
+ \tikzset{/snowman/.cd,#1}%
+ \snowman@draw%
+ \end{scope}%
+ \thing[#1]%
+}
+
+\newif\ifsnowman@threeD
+
+\tikzset{
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Pass unknown keys on to tikz
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ /snowman/.search also={/tikz,/pgf,/thing},
+ /snowman/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\snowman@body{#1},
+ body = white!95!black,
+ eye/.code = \def\snowman@eye{#1},
+ eye = black,
+ nose/.code = \def\snowman@nose{#1},
+ nose = orange,
+ mouth/.code = \def\snowman@mouth{#1},
+ mouth = black,
+ buttons/.code = \def\snowman@buttons{#1},
+ buttons = black,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % options
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ 3D/.code = \snowman@threeDtrue,
+}
+
+\def\snowman@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (-0.75, 0.0) rectangle (0.75, 2.13);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
+\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifsnowman@threeD
+ \def\snowman@part@draw[##1]{\shade[ball color=##1]}
+\else
+ \def\snowman@part@draw[##1]{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0.925)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\snowman@part@draw[\snowman@body,rotate around={-50:(0.5,1.1)}] (0.5,1.1) ellipse (0.3 and 0.12);
+\snowman@part@draw[\snowman@body,rotate around={50:(-0.5,1.1)}] (-0.5,1.1) ellipse (0.3 and 0.12);
+%
+% Body + Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\snowman@part@draw[\snowman@body] (0,0.5) ellipse (0.6 and 0.5);
+\snowman@part@draw[\snowman@body] (0,1.1) ellipse (0.5 and 0.4);
+\snowman@part@draw[\snowman@body] (0,1.7) circle (0.4);
+%
+% Mouth% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fill[\snowman@mouth] (0,1.5) circle (0.016);
+\fill[\snowman@mouth] (0.04,1.507) circle (0.016);
+\fill[\snowman@mouth] (-0.04,1.507) circle (0.016);
+\fill[\snowman@mouth] (0.08,1.522) circle (0.016);
+\fill[\snowman@mouth] (-0.08,1.522) circle (0.016);
+\fill[\snowman@mouth] (0.12,1.543) circle (0.016);
+\fill[\snowman@mouth] (-0.12,1.543) circle (0.016);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\snowman@part@draw[\snowman@eye] (-0.155,1.8) circle (0.04);
+\snowman@part@draw[\snowman@eye] (0.155,1.8) circle (0.04);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\snowman@part@draw[\snowman@nose] (0,1.67) circle (0.05) (0,1.72) -- (0,1.62) -- (0.15,1.64) -- cycle;
+%
+% buttons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\snowman@part@draw[\snowman@buttons] (0,1.15) circle (0.04);
+\snowman@part@draw[\snowman@buttons] (0,0.95) circle (0.04);
+\snowman@part@draw[\snowman@buttons] (0,0.75) circle (0.04);
+%
+}
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings.sty b/graphics/pgf/contrib/tikzlings/tikzlings.sty
new file mode 100644
index 0000000000..5a4499a590
--- /dev/null
+++ b/graphics/pgf/contrib/tikzlings/tikzlings.sty
@@ -0,0 +1,67 @@
+% !TeX root = ./examples/tikzlings.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzlings
+% A collection of packages to draw animals in tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzlings
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% April 7, 2019
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzlings}
+ [2019/04/07 v0.2 Collection of packages to draw animals and other beings in TikZ]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% load sub-packages
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{tikz}
+\RequirePackage{tikzlings-bears}
+\RequirePackage{tikzlings-penguins}
+\RequirePackage{tikzlings-marmots}
+\RequirePackage{tikzlings-owls}
+\RequirePackage{tikzlings-koalas}
+\RequirePackage{tikzlings-coatis}
+\RequirePackage{tikzlings-snowmans}
+\RequirePackage{tikzlings-mice}
+\RequirePackage{tikzlings-moles}
+\RequirePackage{tikzlings-sloths}
+\RequirePackage{tikzlings-pigs}
+\RequirePackage{tikzlings-cats}
+\RequirePackage{tikzlings-hippos}
+\RequirePackage{tikzlings-rhinos}
+\RequirePackage{tikzlings-pandas}
+\RequirePackage{tikzlings-addons}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Drawing a random tikzling
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+
+\ifluatex
+ \let\pdfrandomseed\randomseed
+\fi
+
+\ifxetex
+ \pgfmathsetseed{\time}
+\else
+ \pgfmathsetseed{\number\pdfrandomseed}
+\fi
+
+\pgfmathdeclarerandomlist{tikzlings}{{\bear}{\penguin}{\marmot}{\owl}{\koala}{\coati}{\snowman}{\mouse}{\moles}{\sloth}{\pig}{\cat}{\hippo}{\rhino}}
+
+\newcommand{\tikzling}[1][]{%
+ \pgfmathrandomitem{\tikzling@random}{tikzlings}%
+ \tikzling@random[#1]
+}