texlive[64199] Master: tikzpingus (26aug22)

commits+karl at tug.org commits+karl at tug.org
Fri Aug 26 21:56:32 CEST 2022


Revision: 64199
          http://tug.org/svn/texlive?view=revision&revision=64199
Author:   karl
Date:     2022-08-26 21:56:32 +0200 (Fri, 26 Aug 2022)
Log Message:
-----------
tikzpingus (26aug22)

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

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tikzpingus/
    trunk/Master/texmf-dist/doc/latex/tikzpingus/README.md
    trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.pdf
    trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.tex
    trunk/Master/texmf-dist/makeindex/tikzpingus/
    trunk/Master/texmf-dist/makeindex/tikzpingus/indexstyle.ist
    trunk/Master/texmf-dist/tex/latex/tikzpingus/
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex
    trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
    trunk/Master/tlpkg/tlpsrc/tikzpingus.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/tikzpingus/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzpingus/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzpingus/README.md	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,84 @@
+# Ti*k*Zpingus
+
+[![made-with-latex](https://img.shields.io/badge/Made%20with-LaTeX-1f425f.svg)](https://www.latex-project.org/) [![GPLv3 License](https://img.shields.io/badge/License-GPL%20v3-yellow.svg)](https://opensource.org/licenses/GPL-3.0) [![PR's Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](http://makeapullrequest.com) [![build](https://github.com/EagleoutIce/tikzpingus/actions/workflows/compile.yaml/badge.svg)](https://github.com/EagleoutIce/tikzpingus/actions/workflows/compile.yaml)
+
+This package is a work-in-progress package allowing you to typeset little penguins in LaTeX with PGF/Ti*k*z.
+The [documentation](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/doc/build/tikzpingus-doc.pdf) will constantly evolve.
+
+----
+
+Ti*k*Zpingus is actively developed by *Florian Sihler* (contact me at: <florian.sihler at uni-ulm.de>) under the [GPLv3 License](LICENSE). I am very happy about every contribution (see [CONTRIBUTING.md](CONTRIBUTING.md)).
+
+----
+<br />
+
+<div style="text-align:center">
+
+<!-- While GitHub will cleanse the border-radius, I keep it for the future. -->
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-1.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=1)
+</div>
+
+The purpose of this library is to produce one thing: cute penguins. Using the `\pingu`-macro, you can pass an arbitrary amount of options to endow the penguin with many extras or change its complete appearance. Furthermore, most options allow additional arguments, defining the color, text, ...
+<br />
+
+
+<div style="text-align:center">
+
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-2.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=2)
+</div>
+
+While the [documentation](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/doc/build/tikzpingus-doc.pdf) contains a reference of all options that are available (or at least, that is the plan), most extras should be named relatively intuitive. For example, if you want a small penguin, you add the option `small`.
+If the penguin should be large, you write `large`. If you want the penguin to hold a cup, you write `cup`. If the cup should have a specific color, like blue, you add this via `cup=blue`, ...
+<br />
+
+<div style="text-align:center">
+
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-3.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=3)
+</div>
+
+Currently, most options I have added arose from concrete situations and are not part of "sets". However, some sets do exist, like the `santa` or `devil` collection. If there are more sets in the future, I might add them as first-class components. For now, the [documentation](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/doc/build/tikzpingus-doc.pdf#appendix.A) contains an [Overview](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/doc/build/tikzpingus-doc.pdf#appendix.A) of the larger gadgets.
+<br />
+
+<div style="text-align:center">
+
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-4.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=4)
+</div>
+
+If you just load the library by `\usepackage{tikzpingus}` all options will work, and you might want to use the `glows`-option (`\usepackage[glows]{tikzpingus}`) so that lightsabers and other glowing elements look waaay nicer (but may produce artifacts in some pdf-viewers). However, if loading the library takes too long for you, using the `bare` option will drastically reduce the default options available while allowing you to load specific libraries with `\pinguloadlibraries{<list of libraries>}`.
+<br />
+
+<div style="text-align:center">
+
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-5.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=5)
+</div>
+
+Not all gadgets and wing positions work together. While I try to get as many of them working as possible, selecting two different styles of glasses or hats probably looks weird no matter what code I add.
+Nonetheless, there is code implemented to deal with a lot of interactions (e.g., items in different wings, multiple items on the hat, ...), and there are several options to cope with them yourself if the need arises.
+Oh, and by the way, when options are named with `left` and `right` they are always from the penguin-perspective.
+<br />
+
+<div style="text-align:center">
+
+[<img style="border-radius:8pt" src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/hey-pingu-6.png?raw=true" width="600" />](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/hey-pingu.pdf#page=6)
+</div>
+
+Clothes are a work in progress for a long time now. While there are pants, shirts, a cape, and a cloak, they interfere with body types and other interaction codes. They work quite well for "not-too-fancy" and exotic combinations, but for more complex scenarios, I just had no time (for now). So feel free to wrap your head around that and open a PR! I would be happy to assist you!
+
+
+## Testing Files
+
+These are some test files that showcase additional capabilities of the library:\
+[<img src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/preview-1.png?raw=true" width="600"/>](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/showcase.pdf)
+
+[<img src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/minimal-1.png?raw=true" width="300"/>](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/minimal.pdf)
+
+For the title image of a computer-science course on software-product-lines, I created a small and incomplete but really fun feature model:\
+[<img src="https://github.com/EagleoutIce/tikzpingus/blob/gh-pages/spl-1.png?raw=true" width="900"/>](https://media.githubusercontent.com/media/EagleoutIce/tikzpingus/gh-pages/examples/build/spl.pdf)
+
+## Contributors
+
+<a href="https://github.com/eagleoutice/tikzpingus/graphs/contributors">
+  <img src="https://contrib.rocks/image?repo=eagleoutice/tikzpingus" />
+</a>
+
+Made with [contrib.rocks](https://contrib.rocks).
\ No newline at end of file


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

Index: trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.pdf	2022-08-26 19:54:18 UTC (rev 64198)
+++ trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.pdf	2022-08-26 19:56:32 UTC (rev 64199)

Property changes on: trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,4879 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\errorcontextlines9999
+\documentclass[parskip=half,english,numbers=noenddot,footnotes=nomultiple,oneside]{scrartcl}
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{babel}
+
+\makeatletter\def\input at path{{../tex/}}\makeatother
+\usepackage[glows]{tikzpingus}
+
+% \definecolor{doc-main}{RGB}{204,0,25}
+\colorlet{@opcolor}{pingu at blue!75!black}
+\colorlet{doc-main}{@opcolor!80!pingu at black}
+\usepackage[linkcolor=@opcolor,urlcolor=@opcolor,colorlinks,breaklinks,pdfusetitle]{hyperref}
+\usetikzlibrary{shapes.misc,arrows.meta}
+\urlstyle{same}
+\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks\do-}
+
+\usepackage[tex,hyper]{listings}
+\usepackage[skins,breakable,hooks,xparse,listingsutf8,external]{tcolorbox}
+\usepackage{lmodern}
+\usepackage{CrimsonPro}
+
+\usepackage{imakeidx}
+\usepackage{tikz}
+\usepackage{fontawesome}
+\usepackage{csquotes}
+\usepackage{enumitem}
+\usepackage{microtype}
+\usepackage{tikzducks}
+\usepackage{datatool}
+\usepackage{relsize}
+\usepackage{multicol}
+\usepackage{footnotebackref}
+\usepackage{adjustbox}
+\usepackage{xstring}
+\usepackage{colorinfo}
+
+\makeindex[title={Key Overview},columns=2,columnsep=.75cm,noautomatic=true,options=-s indexstyle.ist]
+\deffootnote{1.5em}{1em}{\textsuperscript{\hyperref[\BackrefFootnoteTag]{\thefootnotemark}}\thinspace}
+\def\thefootnote{$\langle$\arabic{footnote}$\rangle$}
+% https://tex.stackexchange.com/questions/78423/how-to-use-the-footnotebackref-package-with-footnotemark-and-footnotetext
+\makeatletter
+\LetLtxMacro\BHFN at Old@footnotemark\@footnotemark
+\def\@footnotemark{%
+    \refstepcounter{BackrefHyperFootnoteCounter}%
+    \xdef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
+    \label{\BackrefFootnoteTag}%
+    \BHFN at Old@footnotemark
+}
+
+\newlist{inlist}{enumerate*}{1}
+\setlist[inlist]{itemjoin={{, }},itemjoin*={{, and }},label=$\roman*$),mode=boxed}
+
+\def\MapDTLList#1{\ifcsname ListnameOf#1\endcsname\csname ListnameOf#1\endcsname\else#1\fi}
+\def\ListnameOflefteye{eyes}
+\def\ListnameOfbodytype{body type}
+
+\let\say\enquote
+\def\DTLlistformatoxford{,}\def\DTLandname{and}
+% TODO: do guard against same keys for different selectors
+\long\def\ParseDTLListElement#1"#2"\@nil{\textsuperscript{\smash{\raisebox{2pt}{\ifcsname pingu@@lib@#2@\CurrentList @\endcsname\index{Libraries!\textit{\csname pingu@@lib@#2@\CurrentList @\endcsname}!#2?\hyperref[expl-list:\CurrentList]{\protect\lpingu{#2} {\tiny\sffamily(\MapDTLList{\CurrentList})}}}~$\underset{\text{\tiny\smash{\raisebox{3pt}{\textsf{\hyperref[Libraries]{\color{gray}Library}}}}}}{\text{\textit{\tiny\strut\csname pingu@@lib@#2@\CurrentList @\endcsname}}}$\fi}}}}
+\def\DTLlistformatitem#1{\textit{#1\expandafter\ParseDTLListElement :#1\@nil}}
+\newcommand*\typesetselection[1][]{\begingroup\ifx!#1!\else\def\DTLlistformatitem##1{#1}\fi\dotypesetselection}
+\def\dotypesetselection#1{\label{expl-list:#1}\def\CurrentList{#1}\expandafter\DTLformatlist\expandafter{\csname @pingu@#1@\endcsname}\endgroup}
+\makeatletter
+
+\addtokomafont{sectioning}{\@declaredcolor{gray}}
+\addtokomafont{title}{\@declaredcolor{doc-main}}
+\addtokomafont{author}{\normalsize}
+\addtokomafont{date}{\normalsize}
+
+\def\optstyle{\@declaredcolor{@opcolor}\slshape}
+\colorlet{@softgray}{gray!60!white}
+\colorlet{@softgray at b}{gray!75!white}
+\colorlet{@darkerblue}{pingu at blue!40!black}
+\def\lstfnsize{-.7}
+\lstdefinestyle{lstpingu}{%
+	tabsize=2, breaklines,
+	basicstyle=\relsize{\lstfnsize}\ttfamily,
+	commentstyle={\@declaredcolor{gray}\slshape},
+	columns=fullflexible,
+	emphstyle=\slshape,
+	emphstyle=[2]\optstyle,
+	emphstyle=[3]\@declaredcolor{@softgray at b},
+	emphstyle=[4]\@declaredcolor{@darkerblue},
+	texcsstyle=*\@declaredcolor{gray}\bfseries,
+	texcsstyle=*[2]\@declaredcolor{doc-main}\bfseries,
+	texcsstyle=*[3]\@declaredcolor{@softgray},
+	lineskip=2.5pt,
+	keepspaces=true,
+	moredelim=[s][\itshape]{<}{>},
+}
+\lstset{style=lstpingu}
+\def\ipingu#1{\lstinline'#1'}
+\def\lpingu#1{\lstinline[style=lstpingu,language=pingulang]'#1'}
+\def\ltex#1{\lstinline[style=lstpingu,language=pinguinternallang]'#1'}
+
+\lstdefinelanguage{pinguinternallang}{
+	language={[LaTeX]TeX},
+	moreemph={tikzpicture},
+	alsoletter={@},
+	moretexcs=[2]{pingu at block,pingu at draw},
+	moretexcs={pingu at eye@shift,pingu at color@eye at left,pingu at color@eye at right,pingu at name, at pingu@eyes at s, at pingu@none}
+}
+
+\def\t at lst@addToLiterate#1{\protected at edef\lst at literate{\unexpanded\expandafter{\lst at literate}\unexpanded{#1}}}
+\lst at Key{add to literate}{}{\t at lst@addToLiterate{#1}}
+\let\lst at ifxliterate\iftrue % make literate a star literate
+
+\lstdefinelanguage{pingulang}{
+	language={[LaTeX]TeX},
+	moreemph={tikzpicture},
+	alsoletter={.-!:0123456789},%disable number
+	deletetexcs={begin,end}, % -> lift 3
+	moretexcs=[2]{pingu,duck,node,pingudefaults,pingudefaultsappend,pinguloadlibrary,pinguloadlibraries},
+	moretexcs=[3]{begin,end,pgfmathsetseed},
+	moreemph=[3]{!hide,.style},
+	add to literate={/pingu/}{{\@declaredcolor{gray}/pingu/}}7
+		{\{tikzpicture\}}{{\@declaredcolor{@softgray}\{tikzpicture\}}}{13}
+		{\{\\number\\pdfrandomseed\}}{{\@declaredcolor{@softgray}\{\textbackslash number\textbackslash pdfrandomseed\}}}{23}
+		% otherwise these would interfere with random
+		{!random}{{\@declaredcolor{darkgray}\itshape!random}}7
+}
+
+\def\@CreateCodeHyperLink#1#2#3{\lstset{add to literate={#2}{{\hyperref[#3]{\optstyle#2}}}{#1}}}
+% #1 Keys | #2 length (optimized)
+\def\CreateCodeHyperLink#1#2{% \StrLen{\@elem}[\@cclen]
+	\@for\@elem:=#1\do{\ifx\@elem\@empty\else
+	% space to space cmd % TODO: do this on store and just keep store?
+	\StrSubstitute{\@elem}{ }{\noexpand\ }[\@sub]\relax
+	\edef\@tmp{\noexpand\@CreateCodeHyperLink{#2}{\@sub}{pk:/pingu/\@elem}}\@tmp\fi}%
+}
+% store all. we use their precalculated length to ensure prefixes we go from small to large on set
+\def\cmdsstore#1#2{\csxdef{allcmds@#1}{#2}}
+\def\allcmdsmin{3}% think
+\def\allcmdsmax{3}%
+\AtEndDocument{%
+	\pgfkeys{/pingu/.cd,defaults}% this way we have active defaults
+	\foreach \i in {\allcmdsmin,...,\allcmdsmax} {%
+		\immediate\write\@auxout{\noexpand\cmdsstore{\i}{\csuse{allcmds@\i}}}%
+	}%
+	\immediate\write\@auxout{%
+		\noexpand\gdef\noexpand\allcmdsmin{\allcmdsmin}%
+		\noexpand\gdef\noexpand\allcmdsmax{\allcmdsmax}%
+		\noexpand\gdef\noexpand\pengu at all@showcases{\pengu at all@showcases}%
+	}%
+}
+
+
+\def\RawShowcase#1#2{\scalebox{.68}{%\begin{tcbexternal}{showcase-#2#1}%
+\tikzpicture[baseline={(pingu-bottom-center)}]
+\pingu[body=pingu at main!30!white,bill color=pingu at yellow!30!white,feet color=pingu at yellow!30!white,eyes color=pingu at black!30!white,name=pingu,#1#2]
+\pgfonlayer{foreground}
+\node[below=3mm] at(pingu-bottom-center) {\strut}; % buffer
+\pgfinterruptboundingbox
+\node[below=3mm,fill=white,fill opacity=.52,text opacity=1,rounded corners=1pt] at(pingu-bottom-center) {\textsf{\strut\smash{#1}}};
+\endpgfinterruptboundingbox
+\endpgfonlayer
+\endtikzpicture
+%\end{tcbexternal}%
+}}
+
+\setbox0=\hbox{\RawShowcase{}{}}
+\newdimen\pingu at showcase@height
+\pingu at showcase@height=\dimexpr\ht0+\dp0\relax
+
+\def\ShowcasePengu#1=#2;{{\hypersetup{linkcolor=.}%
+\hyperref[pk:/pingu/#1]{%
+	\parbox[b][\pingu at showcase@height]{.14\linewidth}{\centering\ifx!#2!\def\Arg{}\else\def\Arg{=#2}\fi\edef\MakeShowcase{\noexpand\RawShowcase{#1}{\Arg}}~\clap{\MakeShowcase}~}%
+}}}
+\def\pengu at all@showcases{}
+% we mix them somewhat funny
+\def\@showcase at pre{pre}
+\let\@showcase at cur\@showcase at pre
+\def\@toggle at showcase{\ifx\@showcase at cur\@showcase at pre\global\let\@showcase at cur\@empty\else \global\let\@showcase at cur\@showcase at pre\fi}
+\newcommand\ShowcaseThis[2][]{\ifx\@showcase at cur\@showcase at pre \global\let\@showcase at cur\@empty\expandafter\gpreto\else \global\let\@showcase at cur\@showcase at pre\expandafter\gappto\fi\pengu at all@showcases{{#2=#1},}}
+
+\RedeclareSectionCommand[runin=false,afterskip=-2mm]{section}
+\RedeclareSectionCommand[runin=false,afterskip=-2mm]{subsection}
+
+\tcbset{%
+	colframe=gray,enhanced,breakable, arc=2mm,
+	fonttitle=\bfseries, sidebyside,
+	boxrule=.35mm,listing options={style=lstpingu,language=pingulang},
+	center lower,segmentation at break=false,
+	righthand width=4.75cm, bottom=0pt, top=0pt,boxsep=2.25pt,
+	before lower app={}, colback=white
+}
+\lstMakeShortInline[style=lstpingu,language=pingulang,basicstyle=\relsize{-1}\ttfamily\@declaredcolor{black!90!white},moredelim={[s][\itshape]{<}{>}}]{|}
+
+\def\explaincolor{@opcolor!8!white}
+\def\cursub{}
+\def\keyexplainindent{2.5em}%
+% allow the oxes to have minor overlaps
+\newenvironment{keyexplain}[4][/pingu/]{\minipage{\linewidth}
+	\parskip\smallskipamount
+	\StrSubstitute{#2}{ }{-}[\keyexternalname]%
+	\tcbset{@/.style={externalize listing=key-\keyexternalname}}% set for externalize
+	\phantomsection\label{pk:#1#2}\index{\cursub#2?\hyperref[pk:#1#2]{\protect\lpingu{#2}}}%
+	% get its length:
+	\StrLen{#2}[\@cclen]%
+	\csgappto{allcmds@\@cclen}{#2,}%
+	% update the range
+	\ifnum\@cclen>\allcmdsmax\relax \xdef\allcmdsmax{\@cclen}\fi
+	\ifnum\@cclen<\allcmdsmin\relax \xdef\allcmdsmin{\@cclen}\fi
+	\expandafter\gdef\csname pinguopt#2\endcsname{#3}%
+	\expandafter\gdef\csname pingudefa#2\endcsname{#4}%
+	\begingroup\pgfkeys{/pingu/.cd,defaults}\protected at edef\@tmp{#4}%
+	\protected at edef\@tmpb{#3}%
+	\hspace*{-\keyexplainindent}\tcbox[left=3pt,right=3pt,top=3pt,bottom=3pt,colframe=white,colback=\explaincolor,on line]{%
+		\parbox{\dimexpr\linewidth-2\fboxsep+\keyexplainindent}{\small
+		\ifx\@tmpb\@empty\lpingu{#1#2}\else\lpingu{#1#2 =\ }\texttt{<\textit{\@tmpb}>}\fi\hfill
+				\ifx\@tmp\@empty\else{\@declaredcolor{gray}(}#4{\@declaredcolor{gray})}\fi
+		}
+	}\ifcsname pingu@@lib@#2@\endcsname\index{Libraries!\textit{\csname pingu@@lib@#2@\endcsname}!#2?\hyperref[pk:#1#2]{\protect\lpingu{#2}}}\rlap{~\quad\raisebox{2.75pt}{$\underset{\text{\tiny\smash{\raisebox{3pt}{\textsf{\hyperref[Libraries]{\color{gray}Library}}}}}}{\text{\textit{\footnotesize\strut\csname pingu@@lib@#2@\endcsname}}}$}}\fi\par\endgroup
+}
+{\endminipage\smallskip\par}
+
+\def\singleshortcut#1#2"#3"#4{\def\cursub{#2?\hyperref[pk:#1#2]{\protect\lpingu{#2}}!}\keyexplain[#1]{#2 #3}{\csname pinguopt#4\endcsname}{\csname pingudefa#4\endcsname}%
+	\textcolor{gray}{\footnotesize This is a shortcut for: \texttt{\keyref[#1]{#2}\relsize{-1}{\ =\ {\optstyle#3}}}. The \enquote{\texttt{\textit{\csname pinguopt#4\endcsname}}} argument is passed to \keyref[#1]{#4}.}
+\endkeyexplain}
+\newcommand*\shortcuts[4][/pingu/]{\begingroup
+\protected at edef\@tmp{#3}%
+\def\explaincolor{@softexplaincolor}%
+\foreach \type in \@tmp {%
+\edef\tmp{\noexpand\singleshortcut{#1}{#2}\type{#4}}\tmp
+}\endgroup}
+
+\newcommand*\keyref[2][/pingu/]{\hyperref[pk:#1#2]{\lpingu{#1#2}}}
+\newcommand*\dkeyref[2][/pingu/]{\hyperref[pk:#1#2]{\lpingu{#2}}}
+\colorlet{@softexplaincolor}{gray!8!white}
+\newenvironment{subkeyexplain}[5][/pingu/]{%
+\begingroup
+\def\explaincolor{@softexplaincolor}\def\keyexplainindent{0em}%
+\def\cursub{#2?\hyperref[pk:#1#2]{\protect\lpingu{#2}}!}%
+\keyexplain[#1]{#3}{#4}{#5}%
+	{\@declaredcolor{gray}\footnotesize This command is only in effect if \keyref[#1]{#2} is active.}\par
+}{\endkeyexplain\endgroup}
+
+\def\consumeshowkeyexplain#1(#2){\ShowcaseThis[#2]{#1}}
+\newenvironment{showkeyexplain}[4][/pingu/]{%
+\keyexplain[#1]{#2}{#3}{#4}%
+\@ifnextchar({\consumeshowkeyexplain{#2}}{\consumeshowkeyexplain{#2}()}
+}{\endkeyexplain}
+
+\newcommand\keyalias[3][/pingu/]{\begingroup
+\def\explaincolor{@softexplaincolor}\def\keyexplainindent{0em}%
+\def\cursub{#3?\hyperref[pk:#1#3]{\protect\lpingu{#3}}!}%
+\keyexplain[#1]{#2}{\csname pinguopt#3\endcsname}{\csname pingudefa#3\endcsname}%
+	{\@declaredcolor{gray}\footnotesize This is an alias for \keyref[#1]{#3}.}%
+\endkeyexplain\endgroup}
+\newcommand\subkeyalias[4][/pingu/]{\begingroup
+\def\explaincolor{@softexplaincolor}\def\keyexplainindent{0em}%
+\def\cursub{#4?\hyperref[pk:#1#4]{\protect\lpingu{#4}}!#3?\hyperref[pk:#1#3]{\protect\lpingu{#3}}!}%
+\keyexplain[#1]{#2}{\csname pinguopt#3\endcsname}{\csname pingudefa#3\endcsname}%
+	{\@declaredcolor{gray}\footnotesize This is an alias for \keyref[#1]{#3}.}%
+\endkeyexplain\endgroup}
+
+\def\lib#1{\tikz[baseline=-.6ex]\node[draw=teal,fill=teal!3!white,very thick,rounded corners=2pt,inner ysep=0pt]{\sffamily\strut#1};}
+
+\def\TikZ{Ti\textit{k}Z}
+\def\tikzpingus{\TikZ pingus}
+
+\tcbset{external/prefix=sub_}
+\tcbEXTERNALIZE % we do not need the other configurationshttps://www.freecodecamp.org/news/deploy-a-react-app-to-github-pages/ in the externalized images :D
+
+\hfuzz=12pt
+
+% this should not happen in the external images
+\AtBeginDocument{%
+% we do not use foreach to avoid groups
+\count@=\allcmdsmin
+\edef\@cntmax@{\the\numexpr\allcmdsmax+1\relax}%
+\@whilenum\count@<\@cntmax@\do{%
+	\edef\i{\number\count@}\relax
+	\ifcsname allcmds@\i\endcsname
+		\edef\allcmds{\csname allcmds@\i\endcsname}% if undefined => empty
+		\expandafter\CreateCodeHyperLink\expandafter{\allcmds}{\i}%
+		\csxdef{allcmds@\i}{}%
+	\fi% csx kill to stop infinite
+	\global\advance\count@\@ne
+}%
+}
+\def\TypesetShowcases{\@tempcnta\z@
+\begingroup\parskip\z@ \parindent\z@
+\@for\@elem:=\pengu at all@showcases\do{%
+	\advance\@tempcnta\@ne
+	\ifnum\@tempcnta>5 \global\@tempcnta\@ne\par\fi
+	\ifx\@elem\@empty\else
+	% space to space cmd
+	\edef\@tmp{\noexpand\ShowcasePengu\@elem;}\hfill\@tmp\hfill
+\fi}%
+\endgroup\global\let\pengu at all@showcases\@empty}
+
+\def\PenguinTitle{%
+\setbox0=\hbox{\tikz{\pingu[body type=tilt-right,eyes wink,conical hat,cane right,bow tie=pingu at purple,left wing grab,cup=doc-main]}}%
+\begin{tikzpicture}[overlay,remember picture]
+	\node[below left=1.5cm,rotate=-10] at (current page.north east) {\box0};
+\end{tikzpicture}%
+}
+
+\title{The \texorpdfstring{\tikzpingus}{tikzpingus} package}
+% \subtitle{Penguins with \TikZ}
+\author{%
+	\texorpdfstring{Florian Sihler\\*
+		\url{https://github.com/EagleoutIce/tikzpingus}
+	}{Florian Sihler}}
+\date{Version v1.0 \textendash\ 2022/08/24}
+
+\begin{document}
+\maketitle
+\PenguinTitle
+
+\begingroup
+\vspace*{-4em}\newsavebox\pinguboxA
+\savebox\pinguboxA{\tikz{\pingu[wings raise,santa hat,eyes wink,bow tie=pingu at yellow]}}
+\newsavebox\pinguboxB
+\savebox\pinguboxB{\tikz{\pingu[wings raise,head band,eyes angry,sunglasses,bow tie=doc-main,body type=chubby]}}
+\begin{center}
+\begin{tikzpicture}
+    \node[text width=.95\linewidth, inner sep=11pt] (m) {%
+	 For my slides at university, I started to use the famous \LaTeX-package \textsl{\href{https://github.com/samcarter/tikzducks}{tikzducks}} a few years ago.
+	 Yet, it seemed somewhat of a necessity to extend the range of available \say{cute} animals in \LaTeX.
+	 Therefore I started writing this package: \textsl{tikzpingus}.\footnotemark\medskip\\
+	 \textit{Please note:} While tikzpingus is certainly inspired by tikzducks, it does offer a different set of features (e.g., multiple wing positions,~\ldots).\medskip\\
+	 I would be happy for any feedback or issues on the \href{https://github.com/EagleoutIce/tikzpingus}{tikzpingus}-GitHub.
+    };
+\pgfonlayer{background}
+    \node[below,xshift=1.1cm,yshift=19.5pt,scale=.4] at(m.south west) {\usebox\pinguboxA};
+    \node[below,xshift=-1cm,yshift=13.5pt,scale=.4] at(m.south east) {\usebox\pinguboxB};
+    \draw[rounded corners,gray,fill=white] (m.north west) -- (m.north east) -- (m.south east) -- ++(-.45cm,0) to[bend right=40] ++(-1.2cm,0) -- ([xshift=1.65cm]m.south west) to[bend right=40] ++(-1.2cm,0) -- ++(-.45cm,0) -- cycle;
+	 \endpgfonlayer
+	 \node[above=3mm,font=\bfseries\sffamily\Large] at(current bounding box.north) {Motivation};
+\end{tikzpicture}\vspace*{-\baselineskip}
+\end{center}
+\footnotetext{Why \say{pingu} and not \say{pengu}? Well, this is the third try on achieving cute penguins without using any templates or vector formats as a basis. As a german, the short form \say{pingu} was merely a typo that originated from the german word \say{pinguin} for \say{penguin}. It somewhat sticked\ldots}
+\endgroup\vfill
+
+\begin{center}
+	\newsavebox\pinguA \newsavebox\pinguB \newsavebox\pinguC \newsavebox\pinguD \newsavebox\pinguE \newsavebox\pinguF \newsavebox\pinguG
+	\def\Table#1(#2)#3{\scope[shift={(#2)},xshift=1.75cm,yshift=1.75cm]\pingu[#1]\endscope\pgfonlayer{foreground}\draw[lightgray,line width=6pt,rounded corners=2pt,line cap=round](#2) |- ++(4.5,1.35) -- ++(0,-1.35);\fill[draw=lightgray,fill=white,line width=3pt,rounded corners=2pt] (#2)++(3pt-1.5pt,-3pt+1.5pt+2mm) rectangle ++(1.15,1.15) node[midway,centered]{\Large$\mathsf{#3}$};\endpgfonlayer}%
+	\setbox\pinguA=\hbox{\tikz{\pingu[santa hat,santa beard,eyes vertical,blush]}}%
+	\setbox\pinguB=\hbox{\tikz{\pingu[:back,right wing wave,rook=pingu at silver!80!white,rook hatch=false]}}%
+\resizebox*!{4.5cm}{\begin{tikzpicture}
+\Table{right wing wave,horse right,crown, eyes wink, crown position={1:(-.1cm,-.255cm){1.33}}}(2.5,3.5){\text{\sffamily f}(x)}
+\Table{right wing wave,eyes wink,shirt=gray,tie,blush}(0,0)+
+\Table{right wing wave,eyes vertical,cloak=gray,body type=legacy,cup,left wing grab,blush}(5,0)*
+
+\Table{right wing wave,left wing shock,eyes shock,halo,heart=gray!40!pingu at white}(-2.5,-4)\div
+\Table{right wing wave,cake-hat,eyes wink,flag right}(2.5,-4)\ln
+\pgfonlayer{foreground}
+\node[scale=.125,circle,fill=white] at (a) {\rotatebox{13}{\copy\pinguA}}; % a sets flag core
+\endpgfonlayer
+\Table{right wing wave,vr-headset,vr-headset hair}(7.5,-4)\bmod
+\pgfonlayer{foreground}
+   \node[scale=2] at([yshift=-3.45cm]current bounding box.south) {\copy\pinguB};
+\endpgfonlayer
+\end{tikzpicture}}\hskip6em%
+% todo: regroup that
+\setbox\pinguA=\hbox{\tikz{%
+   \pingu[wings wave,name=pingu,eyes wink,body type=legacy,eye patch right]
+   \draw[line cap=round,lightgray,line width=1.5pt] (pingu-wing-right-tip) circle[radius=2mm];
+   \draw[line cap=round,lightgray,line width=1.5pt] (pingu-head-back-con-left) circle[radius=3mm];
+   \draw[line cap=round,lightgray,line width=1.5pt] (pingu-waist-right) circle[radius=4mm];
+   \draw[line cap=round,lightgray,line width=1.5pt] (pingu-foot-left) circle[radius=3.5mm];
+   \draw[line cap=round,lightgray,line width=1.5pt] (pingu-head) circle[radius=2.5mm];
+      \draw[line cap=round,-Kite,lightgray,line width=1.5pt] ([xshift=1mm,yshift=-1mm]pingu-wing-left-tip) to[bend left] ++(3mm,-1cm);
+      \draw[line cap=round,Kite-Kite,lightgray,line width=1.5pt] ([xshift=4mm]pingu-foot-left) -- ++(1cm,0);
+      \draw[line cap=round,Kite-Kite,lightgray,line width=1.5pt] ([yshift=-1.75cm]pingu-head-top)++(60:1.75cm and 2cm) arc(60:120:1.75cm and 2cm);
+}}%
+\newsavebox\whitepingu
+\setbox\whitepingu=\hbox{\tikz{\pingu[@block/.style={fill=pingu at white,draw=pingu at white},wings wave]}}
+\setbox\pinguB=\hbox{\rlap{\kern2.8pt\box\whitepingu}\tikz{
+   \pingu[wings wave,:line,name=pingu]
+   \path[line width=1.5pt] (pingu-wing-right-tip) circle[radius=2mm];
+}}%
+\setbox\pinguC=\hbox{\tikz{\pingu[eyes shiny,hat, hat position={1:(0cm,-.09cm){1.33}}]}}%
+\setbox\pinguD=\hbox{\tikz{\pingu[eyes shiny,lightsaber right=pingu at purple,hat, hat position={1:(0cm,-.09cm){1.33}},right item angle=-13,medal]}}%
+\setbox\pinguE=\hbox{\tikz{\pingu[eyes shiny,hat,cane left, hat position={1:(0cm,-.09cm){1.33}},left item angle=-13,tie,tie dots]}}%
+\setbox\pinguF=\hbox{\tikz{\pingu[eyes shiny,hat,cane left, hat position={1:(0cm,-.09cm){1.33}},left item angle=-13,shirt=gray,second shirt,bill=flat,tie,tie dots]}}%
+\setbox\pinguG=\hbox{\tikz{\pingu}}
+\resizebox*!{4.5cm}{\begin{tikzpicture}
+   \node[scale=2] (a) at(0,0) {\copy\pinguA};
+   \node[above=1.5cm,scale=2] at(a.north) {\small\copy\pinguB};
+
+   \node[right]  (x) at(7.5,8) {\copy\pinguC};
+   \node[below right=1cm](e) at(x.south) {\copy\pinguE};
+   \node[below left=1cm] (d)  at(x.south) {\copy\pinguD};
+   \node[below=1cm] (f) at(e.south) {\copy\pinguF};
+
+   \node[above left=1cm] (g) at(x.north) {\copy\pinguG};
+
+   \draw[lightgray,line width=3pt,{Triangle[round,open,fill=white,scale=1.42]}-] (g) -- (x);
+   \draw[lightgray,line width=3pt,{Triangle[round,open,fill=white,scale=1.42]}-] (x) -- (e);
+   \draw[lightgray,line width=3pt,{Triangle[round,open,fill=white,scale=1.42]}-] (x) -- (d);
+   \draw[lightgray,line width=3pt,{Triangle[round,open,fill=white,scale=1.42]}-] (e) -- (f);
+\end{tikzpicture}}
+\end{center}
+\vfill\null
+
+\clearpage\section{Introduction}
+\subsection{Dependencies}
+
+As this package is constantly work in progress, the concrete dependencies may change any time.
+At the moment, it loads \href{https://www.ctan.org/pkg/pgf}{\TikZ}, which loads a lot of other packages (e.g. \href{https://www.ctan.org/pkg/xcolor}{xcolor}), and \href{https://www.ctan.org/pkg/etoolbox}{etoolbox}.
+Furthermore, the following \TikZ-Libraries are in use:\footnote{A lot of the libraries loaded are important only for specific extras. I plan on cleaning them up.} \textit{intersections}, \textit{shadings}, \textit{patterns.meta}, \textit{decorations.pathmorphing}, and \textit{shapes.symbols}.
+
+\subsection{Copyright}
+
+Copyright \textcopyright\ \textit{Florian Sihler}. Permission is granted to copy, distribute and\slash or modify this software under the terms of the GNU General Public License, version~3.0 (to be found online at: \url{https://opensource.org/licenses/gpl-3.0.html}).
+
+The shown example penguins are purely fictional characters, any resemblance to real penguins or real persons is purely coincidental and no copyright infringement is intended.
+
+\vfill
+\section{Usage}\label{Usage}
+
+If you just want a penguin, import the package and start with the following:
+\begin{tcblisting}{title={One small penguin},externalize listing=small-pengu}
+\begin{tikzpicture}
+	\pingu
+\end{tikzpicture}
+\end{tcblisting}
+
+There are \textit{a lot} of configuration-options which can be passed as an optional argument via the known |<key>=<value>|-style. See \autoref{Gadget-Overview} for a complete gadget overview.
+\begin{tcblisting}{title={Happy penguin with cup!},externalize listing=happy-cup}
+\begin{tikzpicture}
+	\pingu[left wing wave, right wing grab,
+	       eyes shiny, cup]
+\end{tikzpicture}
+\end{tcblisting}
+Please note, that \say{left} and \say{right} have been chosen from the penguin-perspective.
+
+\clearpage Besides the keys defined by this package, you can use the keys of \TikZ\ and |pgf| as well (the duck was generated by the lovely \href{https://github.com/samcarter/tikzducks}{tikzducks} package):
+\begin{tcblisting}{title={The Reunion},externalize listing=pengu-duck}
+\begin{tikzpicture}
+	\duck
+	\pingu[xshift=2.8cm, yshift=14mm,
+	       eyes wink]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Using the Coordinates}
+\label{mrk:coordinates}While there are a lot of gadgets available already,
+every penguin is accompanied by \textit{several} adaptive coordinates
+to place custom items, texts,~\ldots\ % TODO: links
+They can be visualized by the \keyref{meta-dots} option.
+Furthermore, some extras create further coordinates themselves!
+All coordinates are available with |<pingu-name>-<coordinate>|.
+While the default name of a penguin is \say{pingu}, it can be
+changed with the name option:
+\begin{tcblisting}{title={Lotta dots},externalize listing=dotted-pengu}
+\begin{tikzpicture}
+	\pingu[meta dots,left wing wave,
+	       right wing grab, name=paula]
+	\node at (paula-belly-center) {X};
+	\node at (paula-foot-left) {Foot};
+\end{tikzpicture}
+\end{tcblisting}
+Lets look at those coordinates in more detail (all labels are to be prefixed by |<pingu-name>-|):
+\newsavebox\pinguwingright
+\savebox\pinguwingright{%
+\begin{tikzpicture}%
+	\scope
+	\path[clip] (.25,-1.25) rectangle (-1.1,.7);
+	\pgfonlayer{foreground}\path[clip] (.25,-1.25) rectangle (-1.1,.7);\endpgfonlayer
+	\pingu[@block/.append style={fill=#1!35!white},wings hug,eyes shiny,heart=gray!30!white,feet=none]
+	\path[draw,pink,thick] (pingu-wing-right-start) -- (pingu-wing-right);
+	\endscope
+	\foreach \c/\a/\n in {wing-right/left/.75mm,wing-right-low/left/.75mm,wing-right-up/above/.75mm,wing-right-start-low/below left/1.75mm,wing-right-start-up/above left/.75mm} {
+		\path[fill=teal] (pingu-\c) circle [radius=1.125pt];
+		\node[\a=\n,font=\ttfamily,scale=.35,inner sep=2.5pt] (expl-\c) at (pingu-\c) {\c};
+		\draw[teal,thin] (expl-\c) -- (pingu-\c);
+	}
+\end{tikzpicture}}
+\makeatletter
+\newsavebox\pinguwingleft
+\savebox\pinguwingleft{%
+\begin{tikzpicture}%
+	\scope
+	\path[clip] (\pingu at w@half*2-.25cm,-1.25) rectangle ++(1.25,1.95);
+	\pgfonlayer{foreground}\path[clip] (\pingu at w@half*2-.25cm,-1.25) rectangle ++(1.25,1.95);\endpgfonlayer
+	\pingu[@block/.append style={fill=#1!35!white}, wings wave,eyes shiny,heart=gray!30!white,feet=none]
+	\path[draw,pink,thick] (pingu-wing-left-start) -- (pingu-wing-left);
+	\endscope
+	\foreach \c/\a/\n in {wing-left/right/.75mm,wing-left-low/below right/.75mm,wing-left-up/above/.75mm,wing-left-start-low/below right/1.25mm,wing-left-start-up/below right/1.5mm} {
+		\path[fill=teal] (pingu-\c) circle [radius=1.125pt];
+		\node[\a=\n,font=\ttfamily,scale=.35,inner sep=1.5pt] (expl-\c) at (pingu-\c) {\c};
+		\draw[teal,thin] (expl-\c) -- (pingu-\c);
+	}
+\end{tikzpicture}%
+}
+\vfill
+\def\PinguCoords#1{\begin{tikzpicture}
+	\pingu[@block/.append style={fill=##1!35!white}, wings wave,eyes shiny,heart=gray!30!white,#1]
+	\pgfonlayer{foreground}
+	\foreach \c/\a in {belly-center/above,head/below,head-top/above,foot-left/right,foot-right/left,eye-right/above left,eye-left/above right,bill/right,bill-bottom/below,wings-side-left/right,wings-side-right/left,wing-left-start/below right,wing-left-tip/right,wing-right-start/below left,wing-right-tip/left,head-right/left,head-left/right,head-center/below,head-back-con-left/above right,head-back-con-right/above left,bottom-center/above,waist-left/right,waist-right/left} {
+		\path[fill=green] (pingu-\c) circle [radius=1.125pt];
+		\node[\a=.5mm,font=\ttfamily,scale=.35,inner sep=1.5pt] (expl-\c) at (pingu-\c) {\c};
+		\draw[green,thin] (expl-\c) -- (pingu-\c);
+	}
+	\endpgfonlayer
+\end{tikzpicture}}%
+\begin{center}
+	\edef\measurepage{\the\dimexpr\pagegoal-\pagetotal-2\baselineskip\relax}%
+	\ifdim\measurepage<4\baselineskip\clearpage\edef\measurepage{\the\dimexpr\pagegoal-\pagetotal-2\baselineskip\relax}\fi
+	\resizebox*!{\measurepage}{%
+		\PinguCoords{}%
+	}
+\end{center}
+
+\paragraph{The Wings}
+This view excluded a lot of special data collected on the wings!
+While there is more information stored for each wing, the following five coordinates are the most important to place items into penguins hand:\vspace*{-1.5em}
+\begin{center}
+	\null\hfill\parbox[c]{2.5\wd\pinguwingright}{\scalebox{2.5}{\usebox\pinguwingright}}\hfill\parbox[c]{4cm}{\centering\small\@declaredcolor{gray}\sffamily And yes, the wings are deliberately placed asymmetrical.\endgraf}\hfill
+	\parbox[c]{2.5\wd\pinguwingleft}{\scalebox{2.5}{\usebox\pinguwingleft}}\hfill\null
+\end{center}
+
+\paragraph{The Body} Similarly to the wing position, different
+body types can change the coordinates (left the \keyref{body type} \textit{chubby} and right the \keyref{body type} \textit{legacy}):
+\begin{center}
+	\resizebox\linewidth!{%
+		\PinguCoords{body type=chubby,wings hug}\quad\PinguCoords{body type=legacy,wings hug}
+	}
+\end{center}
+
+\subsection{Colors}
+A lot of options allow for a color to be passed. In general, you can provide any color that \TikZ\ is happy with! Yet, there are some predefined pingu-colors shipped with this package:
+\def\getCol#1{\pgfmathparse{int(round(#1*255))}\pgfmathresult}
+\def\parseRGB#1,#2,#3;{r:~\getCol{#1}, g:~\getCol{#2}, b:~\getCol{#3}}
+\begin{multicols}{4}
+\begin{itemize}
+	\foreach \col in {main,black,silver,bronze,white,yellow,lightblue,blue,green,red,purple} {
+		\item[{\tikz[baseline=-.6ex]{\fill[pingu@\col,semithick,draw=black] circle (4pt);}}] \footnotesize\strut
+		% somehow outputs, therefore box
+		\setbox0=\hbox{\colorInfoRGB{pingu@\col}\xdef\colorValue{\colorValue}}\rlap{\smash{\raisebox{-2.9mm}{\sffamily\color{gray}\tiny\expandafter\parseRGB\colorValue;}}}%
+		\texttt{pingu@\col}%
+	}
+	\item[] \footnotesize\strut% buffer
+\end{itemize}
+\end{multicols}
+Furthermore, there is the special color {\makeatletter\say{\expandafter\ipingu\expandafter{\@pingu at none}}} which is available for most\footnote{Why just \say{most}? Well, this package is work in progress and I have added the option late, so I may have forgotten to patch some keys.} extras and wing-items. This color prohibits the compartments from being drawn. To be more precise, the package defines the macro \ltex{\\@pingu at none}, which is matched against the selected color.
+
+As an example, lets take a look at the \keyref{cup}-extra, which provides an additional key \keyref{cup straw} to color the straw:
+\begin{tcblisting}{title={Cup without a straw},externalize listing=extra-options}
+\begin{tikzpicture}
+	\pingu[wings grab, cup=pingu at purple,
+	       cup straw=pingu at blue]
+	\pingu[wings grab, cup, xshift=2.8cm,
+	       cup straw=!hide]
+\end{tikzpicture}
+\end{tcblisting}
+As you can see, using \lpingu{!hide}, the straw will not be drawn.
+
+\subsection{Setting the defaults}
+You do not have to re-state every key.
+With \lstinline[language=pingulang]'\pingudefaults' and \lstinline[language=pingulang]'\pingudefaultsappend' (similar, but extends the current options) you can set default-options for all penguins to come:
+\begin{tcblisting}{title={Change the mainstream},externalize listing=update-defaults}
+\begin{tikzpicture}
+	\pingudefaults{wings grab, eyes shiny}
+	\pingu
+	\pingu[left wing shock, xshift=2.8cm]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Libraries}
+\label{Libraries}\index{Libraries}I've split the penguin features into a set of libraries. While all of them are loaded by default, the |bare| package-option disables the automatic loading of all libraries. They can be loaded (locally to the current group) using |\pinguloadlibrary| and |\pinguloadlibraries| passing on a comma separated list of desired libraries.
+See the full reference or the index to learn which key comes from which library.
+Please note that~--- at the moment~--- not all components of a library are labeled correctly.
+% TODO: already count that? % global let?
+\foreach[count=\i] \l/\xs in \pingu at defaultlibs{\xdef\pingu at defaultlibs@count{\i}}%
+Currently there are the following libraries:
+\foreach[count=\i] \l/\xs in \pingu at defaultlibs{%
+	\ifx\l\empty\else
+	\index{Libraries!\textit{\l}}\textit{\l}\ifnum\numexpr\pingu at defaultlibs@count-1>\i,\space\else
+	\ifnum\pingu at defaultlibs@count=\i\else,~and\space\fi\fi
+	\fi
+}.
+
+\subsection{Changing the wings}
+\label{subsec:wings}As already demonstrated, it is possible to change the wing positions!
+All selected wing-items will adapt to the wing-position (although not all wing-items will make sense with every wing-position).
+Currently, there are the following wing-positions:
+\typesetselection{leftwing}. \say{none} is a special wing-position: it omits the drawing of wings (teaser: every selection has a none-option, which prohibits the part from being drawn)!
+
+For each valid wing-position you can use |wings <position>| to change both wings or |left wing <position>| and |right wing <position>| to change only one wing respectively. The default wing-position is \say{normal}. If you supply multiple options for a wing, only the last one survives.\footnote{For the sake of completeness: \ipingu{wings <position>}, \ipingu{left wing <position>}, and \ipingu{right wing <position>} are just alternatives i prefer: \ipingu{wings=<position>}, \ipingu{left wing=<position>} and \ipingu{right wing=<position>}.}
+This is shown in Box~\say{\nameref{wing-showcase}}.
+
+\begin{tcblisting}{sidebyside=false, title=Wing-Showcase,nameref=Wing-Showcase,externalize listing=wings-showcase,float,phantomlabel=wing-showcase}
+\begin{tikzpicture}
+	\pingu[left wing none, heart=green]
+	\pingu[wings wave, heart=teal, xshift=3.5cm]
+	\pingu[wings hug, heart=orange, xshift=7cm]
+	\pingu[left wing grab, right wing shock, heart=purple,  xshift=10.5cm]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Changing the eyes}
+\label{mrk:pengu-eye}Just like the wings, there are a couple of different eye-styles to choose from: \typesetselection{lefteye}.
+Similar to the wings, there is a \say{none} and a \say{normal}-option (which is the default).
+Furthermore, the convenient selectors |eyes <style>|, |left eye <style>|, and |right eye <style>| exist as well. All of this is showcased in~Box~\say{\nameref{eye-showcase}}.
+
+\begin{tcblisting}{sidebyside=false,title=Eye-Showcase,nameref=Eye-Showcase,externalize listing=eyes-showcase,float,phantomlabel=eye-showcase}
+\begin{tikzpicture}
+	\pingu[left eye none, heart=green]
+	\pingu[eyes wink, heart=teal, xshift=3.5cm]
+	\pingu[eyes shock, heart=orange, xshift=7cm]
+	\pingu[left eye devil, right eye angry, heart=purple,  xshift=10.5cm]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Changing other components}
+\label{mrk:pengu-change-comps}Just like for the wings and the eyes, you can change the following body parts:
+\begin{itemize}
+	\itemsep0pt\relax
+	\item The \textit{body type} itself\\*
+		Select from: \typesetselection{bodytype}.
+	\item The \textit{feet} (again with separate left and right)\\*
+		Select from: \typesetselection{leftfoot}.
+	\item The \textit{bill} (does not have left and right, as there is just one)\\*
+		Select from: \typesetselection{bill}.
+	\item The \textit{hairstyle} (does not have left and right)\\*
+		Select from: \typesetselection{hairstyle}.
+\end{itemize}
+For each selection, \say{none} will prohibit the drawing, and \say{normal} is the default chosen. See Box~\say{\nameref{bodyparts-showcase}} for a example.
+\begin{tcblisting}{sidebyside=false,title=Bodyparts-Showcase,nameref=Bodyparts-Showcase,externalize listing=bodyparts-showcase,float,phantomlabel=bodyparts-showcase}
+\begin{tikzpicture}
+	\pingu[bill angry, heart=green]
+	\pingu[feet back, hairstyle none, heart=teal, xshift=3.5cm]
+	\pingu[bill flat, feet simple, heart=orange, xshift=7cm]
+	\pingu[feet none, bill none, heart=purple, xshift=10.5cm]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Predefined Styles}
+While the penguin options offer the modification of basically every drawing routine (through other styles like |@block|), it is tedious to change them every time.
+So I have started to create some predefined styles, that do change some of the penguins appearance (and are completely new, so beware of bugs):
+\begin{multicols}{2}
+\begin{itemize}
+	\itemsep0pt
+	\foreach \tx/\s in {{draw everything with a line}/{:line}, {fill main penguin}/{:fill}, {draw components with transparency}/{:ghost parts}, {draw all layers with transparency}/{:ghost}, {set main \say{devil}-components}/{:devil},{flip the penguin (swaps left \& right)}/{:back},{do not draw main pingu}/{:hide}} {
+		\item \parbox[t]{.8\linewidth}{\raggedright\texttt{\s}, \tx.} \hfill
+		\parbox[t]{.175\linewidth}{\scalebox{.4}{%
+			\begin{tikzpicture}[baseline=.35\baselineskip]%
+				\pingu[\s]
+			\end{tikzpicture}%
+		}}
+	}
+	\item[] \parbox[t][2.25\baselineskip]{0pt}{}% buffer
+\end{itemize}
+\end{multicols}
+Currently, only some of the styles do affect other items. As an example, consider |:line|, that changes the draw-style of wing-items and extras:
+\begin{tcblisting}{title={Line Penguin},externalize listing=line-pengu}
+\begin{tikzpicture}
+	\pingu[:line, princess crown, silver medal]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Randomness}
+Each selection (like the wings or the eyes) can receive a special command \lpingu{!random}. If given, the penguin will receive a randomly picked component.
+Please note, that \textit{none} (the component removing it) will never be picked.
+The first line in the example in Box~\say{\nameref{random-penguin}} sets the seed. % we do not externalize this one
+\begin{tcblisting}{title={Random Penguin},nameref={Random Penguin},label=random-penguin,float}
+\pgfmathsetseed{\number\pdfrandomseed}
+\begin{tikzpicture}
+	\pingu[wings=!random,eyes=!random,
+		   body type=!random,
+			left foot=!random,
+			bill=!random,
+			hairstyle=!random]
+\end{tikzpicture}
+\end{tcblisting}
+
+In a more general fashion, there is a \keyref{random from} key for completely random penguins.
+
+\keyexplain{random from}{list}{}
+	You can pass any list of penguin keys and exactly one of them will be selected. You can nest \keyref{random from}-calls. Please note, that the items are not separated by comma but in braces. The first line in the example sets the seed:% do not externalize
+\begin{tcblisting}{}
+\pgfmathsetseed{\number\pdfrandomseed}
+\begin{tikzpicture}
+	\pingu[random from={{eye patch left}{eye patch right}{halo,halo raise=4mm}},random from={{right eye color=pingu at blue}{random from={{bow tie}{gold medal}}}},random from={{eyes=!random}{wings=!random}},body type=legacy]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\subsection{Extras}
+An extra is considered everything, that is attached to the main penguin and not to the wings (as those items may be placed separately for both wings).
+Most extras are activated with the format |<extra>=<color>| (the |<color>| option is not mandatory)
+and try to adapt with other extras that have been placed (yet you can place multiple hats if you really like to).  A lot of the extras do offer more keys to customize their appearance.
+They are explained in the full reference (\autoref{sec:full-ref}).
+
+Consider the somewhat overkill-example of \say{\nameref{lord-gadget}}.
+\begin{tcblisting}{title={Lord-Gadget, the penguin},externalize listing=lord-gadget,nameref={Lord-Gadget, the penguin},label=lord-gadget,float}
+\begin{tikzpicture}
+	\pingu[crown 2d=pingu at bronze,
+	       medal=pingu at purple, tie,
+	       eye patch left=teal,
+	       eye patch right=orange,
+	       right wing wave, sunglasses,
+	       glow thick=yellow]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Wing-Items}
+Wing items are basically just like extras, but they can be selected separately for the left and right wing. Furthermore, they adapt their \textit{default} appearance to the active wing positions (\autoref{subsec:wings}).
+Currently there are the following wing items:
+% add a extra guard not present with the wing items
+\typesetselection[\textit{#1\expandafter\ParseDTLListElement :"#1"\@nil}]{wingitems}.
+They are selected using |<wing item> <left/right>|.
+
+Additionally, they can be customized by \keyref{left item angle} and \keyref{right item angle}, as well as \keyref{left item flip} and \keyref{right item flip}.
+Lets consider an example\ldots
+\begin{tcblisting}{title={Penguin with full wings!}}
+\begin{tikzpicture}[scale=.75]
+	\pingu[lightsaber right=orange,
+	  lollipop left,
+	  right item angle=70,
+	  right wing raise, left wing grab]
+	\pingu[cane left, right item flip,
+	  sign post right={Hi!}, xshift=35mm]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Clothing}
+Clothing is the newest extension to the collection, at and the moment there is not one \say{real} clothing, that really adapts to the penguins-position.
+I am working on the \textit{cloak}-Clothing at the moment:
+\begin{tcblisting}{title={Pengu-Clothes},externalize listing=clothes}
+\begin{tikzpicture}[scale=.75]
+	\pingu[cloak]
+\end{tikzpicture}
+\end{tcblisting}
+
+% \section{Examples}
+
+\appendix
+\section{Gadget Overview}\label{Gadget-Overview}
+
+\TypesetShowcases
+
+\section{Full Reference}\label{sec:full-ref}
+
+\def\percenttargetreductionpengus{63}\def\lstfnsize{-1.65}
+\tcbset{%
+	before lower={\begin{adjustbox}{scale=.\percenttargetreductionpengus}},
+	after lower={\end{adjustbox}},%
+	boxsep=1pt%
+}
+
+\begin{center}
+	\textit{Please note, that all preview-penguins have been reduced in scale to \percenttargetreductionpengus\,\% to save space and make the documentation more concise.}
+\end{center}
+
+Aliases may set custom defaults. Those defaults are not listed as they may change.
+
+\subsection{Penguin Keys}
+
+\keyexplain{name}{text}{\pingu at name}
+	Sets the name of the penguin. This name is used for all the automatically generated coordinates (see~\autoref{mrk:coordinates}).
+\endkeyexplain
+
+\keyexplain{scale}{floating point}{active scale}
+	Changes the scale for the penguin. This is not supported by all items by default (as some scales have to be re-calculated according to their rotation).
+	Yet, it should work with most.
+
+	Furthermore, this value can be used to make the penguin independent of the outer scaling.
+\endkeyexplain
+
+
+\keyexplain{meta-dots}{true/false}{\if at pingu@draw at metadots true\else false\fi}
+	Can be used to enable and disable the meta dots (\autoref{mrk:coordinates}).
+	Passed true by default.
+\endkeyexplain
+
+\keyalias{meta dots}{meta-dots}
+
+\subsubsection{The Feet}
+
+\keyexplain{left foot}{foot-selector}{\@pingu at select@leftfoot@}
+	Change the style of the left foot. All valid values are listed in \autoref{mrk:pengu-change-comps}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{simple}}}}
+\begin{tikzpicture}
+	\pingu[left foot=simple]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{left foot color}{color}{\pingu at color@foot at left}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[left foot color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{left foot}{\@pingu at leftfoot@}{left foot color}
+
+\keyexplain{right foot}{foot-selector}{\@pingu at select@rightfoot@}
+	Change the style of the right foot. All valid values are listed in \autoref{mrk:pengu-change-comps}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{simple}}}}
+\begin{tikzpicture}
+	\pingu[right foot=simple]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{right foot color}{color}{\pingu at color@foot at right}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[right foot color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{right foot}{\@pingu at rightfoot@}{right foot color}
+
+\keyexplain{feet}{foot-selector}{}
+	Change the style of both feet by calling \keyref{left foot} and \keyref{right foot} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{simple}}}}
+\begin{tikzpicture}
+	\pingu[feet=simple]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{feet color}{color}{}
+	Sets the color of both feet (using \keyref{left foot color} and \keyref{right foot color}).
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[feet color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{feet}{\@pingu at leftfoot@}{feet color}
+
+\subsubsection{The Body}
+
+\keyexplain{body main}{color}{\pingu at color@body at main}
+	Set the main color of the penguin. This will affect \keyref{hair} as well, as this chooses its default value from the main color.%
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[body main=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{body head}{color}{\pingu at color@body at head}
+	Set the color of the penguin head.%
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[body head=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{body}{color}{}
+	Sets the color of the main penguin and the head, by calling \keyref{body main} and \keyref{body head} with the same value.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[body=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{body front}{color}{\pingu at color@body at front}
+	Sets the frontal color of the penguin.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[body front=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{body type}{body type}{normal}
+	Change the active body type. All valid values are listed in \autoref{mrk:pengu-change-comps}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[body type=legacy]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\subsubsection{The Size}
+
+
+\keyexplain{height}{length}{\the\pingu at side@h at half}
+	Change the height of the penguin manually. You probably should not use this key directly and refer to \keyref{small size}, \keyref{normal size}, and \keyref{large size}:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang}}
+\begin{tikzpicture}
+	\pingu[height=17mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{small size}{}{}
+	Will use \keyref{height} to create a small pingu:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang}}
+\begin{tikzpicture}
+	\pingu[small size]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{small}{small size}
+\keyalias{small height}{small size}
+
+
+\keyexplain{normal size}{}{}
+	Will use \keyref{height} to create a normal pingu:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang}}
+\begin{tikzpicture}
+	\pingu[normal size]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{normal}{normal size}
+\keyalias{normal height}{normal size}
+
+
+\keyexplain{large size}{}{}
+	Will use \keyref{height} to create a large pingu:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang}}
+\begin{tikzpicture}
+	\pingu[large size]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{large}{large size}
+\keyalias{large height}{large size}
+
+\subsubsection{The Eyes}
+\keyexplain{left eye}{eye-selector}{\@pingu at select@lefteye@}
+	Change the style of the left eye. All valid values are listed in \autoref{mrk:pengu-eye}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wink}}}}
+\begin{tikzpicture}
+	\pingu[left eye=wink]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{left eye color}{color}{\pingu at color@eye at left}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[left eye color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{left eye second color}{color}{\pingu at color@eye at second@left}
+	Change the secondary color of the left eye. It will be used in some styles selected by \keyref{left eye} (e.g. \textit{shiny}):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{shiny}}}}
+\begin{tikzpicture}
+	\pingu[left eye=shiny,
+	  left eye second color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{left eye}{\@pingu at lefteye@}{left eye color}
+
+\keyexplain{right eye}{eye-selector}{\@pingu at select@righteye@}
+	Change the style of the right eye. All valid values are listed in \autoref{mrk:pengu-eye}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wink}}}}
+\begin{tikzpicture}
+	\pingu[right eye=wink]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{right eye color}{color}{\pingu at color@eye at right}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[right eye color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{right eye second color}{color}{\pingu at color@eye at second@right}
+	Change the secondary color of the right eye. It will be used in some styles selected by \keyref{right eye} (e.g. \textit{shiny}):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{shock}}}}
+\begin{tikzpicture}
+	\pingu[right eye=shock,
+	  right eye second color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{right eye}{\@pingu at righteye@}{right eye color}
+
+\keyexplain{eyes}{eye-selector}{}
+	Change the style of both eyes by calling \keyref{left eye} and \keyref{right eye} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wink}}}}
+\begin{tikzpicture}
+	\pingu[eyes=wink]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{eyes color}{color}{}
+	Change the main color of both eyes by calling \keyref{left eye color} and \keyref{right eye color} with the same value.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[eyes color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{eyes second color}{color}{}
+	Change the secondary color of  both eyes by calling \keyref{left eye second color} and \keyref{right eye second  color} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{shock,shiny}}}}
+\begin{tikzpicture}
+	\pingu[left eye=shock, right eye=shiny,
+	  eyes second color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{eyes}{\@pingu at lefteye@}{eyes color}
+
+\subsubsection{The Wings}
+
+\keyexplain{left wing}{wing-selector}{\@pingu at select@leftwing@}
+	Change the style of the left wing. All valid values are listed in \autoref{subsec:wings}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wave}}}}
+\begin{tikzpicture}
+	\pingu[left wing=wave]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{left wing color}{color}{\pingu at color@left at wing}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[left wing color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{left wing}{\@pingu at leftwing@}{left wing color}
+
+\keyexplain{right wing}{wing-selector}{\@pingu at select@rightwing@}
+	Change the style of the right wing. All valid values are listed in \autoref{subsec:wings}.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wave}}}}
+\begin{tikzpicture}
+	\pingu[right wing=hug]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{right wing color}{color}{\pingu at color@right at wing}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[right wing color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{right wing}{\@pingu at rightwing@}{right wing color}
+
+\keyexplain{wings}{wing-selector}{}
+	Change the style of both wings by calling \keyref{left wing} and \keyref{right wing} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{wink}}}}
+\begin{tikzpicture}
+	\pingu[wings=grab]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{wings color}{color}{}
+	Change the main color of both wings by calling \keyref{left wing color} and \keyref{right wing color} with the same value.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[wings color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{wings}{\@pingu at leftwing@}{wings color}
+
+\subsubsection{The Hair}
+
+
+\keyexplain{hair 1 color}{color}{\pingu at color@hair at a}
+	Set the color of the first hair (this may be used differently by other hairstyles):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,moreemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[hair 1 color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{hair 2 color}{color}{\pingu at color@hair at b}
+	Set the color of the second hair (this may be used differently by other hairstyles):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,moreemph={[2]{2}}}}
+\begin{tikzpicture}
+	\pingu[hair 2 color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{hair 3 color}{color}{\pingu at color@hair at c}
+	Set the color of the third hair (this may be used differently by other hairstyles):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,moreemph={[2]{3}}}}
+\begin{tikzpicture}
+	\pingu[hair 3 color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{hair 4 color}{color}{\pingu at color@hair at d}
+	Set the color of the fourth hair (this may be used differently by other hairstyles):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,moreemph={[2]{4}}}}
+\begin{tikzpicture}
+	\pingu[hair 4 color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{hair 5 color}{color}{\pingu at color@hair at e}
+	Set the color of the fifth hair (this may be used differently by other hairstyles):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,moreemph={[2]{5}}}}
+\begin{tikzpicture}
+	\pingu[hair 5 color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{hairs color}{color}{}
+	Set the color of all hairs by calling \keyref{hair 1 color}, \keyref{hair 2 color}, \keyref{hair 3 color}, \keyref{hair 4 color}, and \keyref{hair 5 color} with the same argument:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hairs color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{hairs}{hairs color}
+\keyalias{hair}{hairs color}
+
+\keyexplain{hairstyle}{hair-selector}{\@pingu at select@hairstyle@}
+	Change the hairstyle (\autoref{mrk:pengu-change-comps}):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hairstyle=none]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{hair style}{hairstyle}
+\shortcuts{hairstyle}{\@pingu at hairstyle@}{hairs color}
+
+\subsubsection{The Bill}
+\keyexplain{bill}{bill-selector}{\@pingu at select@bill@}
+	Change the style of the bill (\autoref{mrk:pengu-change-comps}):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{flat}}}}
+\begin{tikzpicture}
+	\pingu[bill=flat]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{bill color}{color}{\pingu at color@bill}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bill color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\shortcuts{bill}{\@pingu at bill@}{bill color}
+
+\subsection{Drawing Styles}
+\index{Styles}
+\def\cursub{Styles!}
+\keyexplain{:line}{}{}
+	Disable glows, shades and fills and enforce a line. This line will be darker
+	than the original fill color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:line]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{:fill}{}{}
+	Makes the whole penguin in one solid color (basically a shortcut for setting all main penguin colors to the same):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:fill]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{:ghost parts}{opacity}{.5}
+	Set the opacity of each penguin component individually. At the moment, this
+	excludes some glow calculations.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:ghost parts]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{:ghost}{opacity}{.5}
+	Set the opacity of the complete penguin. At the moment, this
+	excludes some glow calculations.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:ghost]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{:devil}{color}{pingu at purple}
+	Enable all devil components (not the wing items) and set their main color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:devil=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+
+\keyexplain{:hide}{}{}
+	Do not draw the main pingu:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa hat,:hide]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{:back}{}{}
+	Mirror the penguin, this swaps left and right, the rotation and more.
+	Yet, at least at the time of writing, this does not swap the drawing order in each layer, but just the layers:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[:back, left wing wave,
+	       cane left, left item angle=70]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\def\cursub{}
+
+\subsection{Extras}
+\subsubsection{The heart}
+\showkeyexplain{heart}{node-options}{}(pingu at main)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[heart=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subsubsection{The tie}
+\showkeyexplain{tie}{color}{pingu at green}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[tie]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@tie{<tie-color>}
+\subkeyexplain{tie}{tie knot}{color}{\pingu at color@tie at knot}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[tie, tie knot=orange]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+\subkeyexplain{tie}{tie length}{length}{\expandafter\detokenize\expandafter{\pingu at x@tie at length}}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[tie, tie length=1.25cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{tie}{tie offset}{length}{\pingu at x@tie at offset}
+	Change the upper vertical offset of the tie:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[tie, tie offset=.75cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{tie}{tie width}{length}{\pingu at x@tie at width}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[tie, tie width=.5cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{tie}{tie pattern}{tex-code}{}
+	Change the tie pattern.
+\endsubkeyexplain
+
+\subkeyexplain{tie}{tie dots}{color}{pingu at white}
+	Change the \keyref{tie pattern} to dots:
+	\begin{tcblisting}{@}
+	\begin{tikzpicture}
+		\pingu[tie, tie dots]
+	\end{tikzpicture}
+	\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The bowtie}
+\showkeyexplain{bow tie}{color}{pingu at blue}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bow tie]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{bowtie}{bow tie}
+\keyalias{bow-tie}{bow tie}
+
+\subkeyexplain{bow tie}{bow tie b}{color}{<bowtie-color>}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bow tie, bow tie b=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{bowtie b}{bow tie b}{bow tie}
+\subkeyalias{bow-tie b}{bow tie b}{bow tie}
+
+{\def\pingu at color@bowtie{<bowtie-color>}
+\subkeyexplain{bow tie}{bow tie knot}{color}{\pingu at color@bowtie at knot}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bow tie, bow tie knot=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{bowtie knot}{bow tie knot}{bow tie}
+\subkeyalias{bow-tie knot}{bow tie knot}{bow tie}
+}
+
+\subkeyexplain{bow tie}{bow tie offset}{length}{\pingu at x@bowtie at offset}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bow tie, bow tie offset=8mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{bowtie offset}{bow tie offset}{bow tie}
+\subkeyalias{bow-tie offset}{bow tie offset}{bow tie}
+
+\subsubsection{The cup}
+
+\showkeyexplain{cup}{color}{pingu at green}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cup]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@cup{<cup-color>}
+\subkeyexplain{cup}{cup straw}{color}{\pingu at color@cup at straw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cup, cup straw=!hide]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The medal}
+\showkeyexplain{medal}{color}{pingu at yellow}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[medal]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{medal}{medal band}{color}{\pingu at color@medal at band}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[medal, medal band=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@medal{<medal-color>}
+\subkeyexplain{medal}{medal shade}{color}{\pingu at color@medal at shade}
+Change the color of the outer medal ring:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[medal, medal shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{medal}{medal shade width}{length}{.75pt}
+Change the width of the outer medal ring:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[medal, medal shade=green,
+	       medal shade width=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{medal}{medal text}{text}{\pingu at x@medal at text}
+Set the text displayed in the medal. The style can be changed by
+updating the substyle \texttt{medal text style}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[medal, medal text=XY,
+	      medal text style/.style={black}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\keyexplain{gold medal}{text}{1}
+Basically the same as the normal medal. This will activate \keyref{medal}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[gold medal]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{silver medal}{text}{2}
+Basically the same as the normal medal, but with a silver color. This will activate \keyref{medal}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[silver medal]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{bronze medal}{text}{3}
+Basically the same as the normal medal, but with a bronze color. This will activate \keyref{medal}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[bronze medal]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\subsubsection{The eye patches}
+
+\showkeyexplain{eye patch left}{color}{<pingu-main-color>}(pingu at main)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[eye patch left]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{eyepatch left}{eye patch left}
+\keyalias{eye-patch left}{eye patch left}
+
+\showkeyexplain{eye patch right}{color}{<pingu-main-color>}(pingu at main)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[eye patch right]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{eyepatch right}{eye patch right}
+\keyalias{eye-patch right}{eye patch right}
+
+\subsubsection{The monocle}
+
+\showkeyexplain{monocle left}{color}{pingu at black}(pingu at black)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle left]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{monocle left}{monocle left glass}{color}{\pingu at color@monocleleft at glass}
+Set the color of the glass of the left monocle. The opacity of this color is set by \keyref{monocle left opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle left,
+	       monocle left glass=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{monocle left fill}{monocle left glass}{monocle left}
+
+
+\subkeyexplain{monocle left}{monocle left opacity}{factor}{\pingu at x@monocleleft at opacity}
+Set the opacity of the glass color of the left monocle (set by \keyref{monocle left glass}):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[monocle left,
+	       monocle left opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{monocle left fill opacity}{monocle left opacity}{monocle left}
+
+{\def\pingu at color@monocleleft{<left-monocle-color>}
+\subkeyexplain{monocle left}{monocle left string}{color}{\pingu at color@monocleleft at string}
+Set the color of the string of the left monocle:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle left,
+	       monocle left string=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{monocle left}{monocle left string length}{length}{\pingu at x@monocleleft at string@l}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle left,
+	       monocle left string length=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@monocleleft{<left-monocle-color>}
+\subkeyexplain{monocle left}{monocle left blob}{color}{\pingu at color@monocleleft at blob}
+Set the color of the blob at the end of the string of the left monocle:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle left,
+	       monocle left blob=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\showkeyexplain{monocle right}{color}{pingu at black}(pingu at black)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle right]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{monocle right}{monocle right glass}{color}{\pingu at color@monocleright at glass}
+Set the color of the glass of the right monocle. The opacity of this color is set by \keyref{monocle right opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle right,
+	       monocle right glass=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{monocle right fill}{monocle right glass}{monocle right}
+
+\subkeyexplain{monocle right}{monocle right opacity}{factor}{\pingu at x@monocleright at opacity}
+Set the opacity of the glass color of the right monocle (set by \keyref{monocle right glass}):
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[monocle right,
+	       monocle right opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{monocle right fill opacity}{monocle right opacity}{monocle right}
+
+{\def\pingu at color@monocleright{<right-monocle-color>}
+\subkeyexplain{monocle right}{monocle right string}{color}{\pingu at color@monocleright at string}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle right,
+	       monocle right string=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+
+\subkeyexplain{monocle right}{monocle right string length}{length}{\pingu at x@monocleright at string@r}
+Set the length of the right monocle string:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle right,
+				monocle right string length=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@monocleright{<right-monocle-color>}
+\subkeyexplain{monocle right}{monocle right blob}{color}{\pingu at color@monocleright at blob}
+Set the color of the blob at the end of the string of the right monocle:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[monocle right,
+	       monocle right blob=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The pants}
+\showkeyexplain{pants}{color}{pingu at red}
+Sets the color of the pants:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{pants}{pants bands}{true/false}{false}
+Switch the bands of the pants on and of:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants bands]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\subkeyexplain{pants}{pants button left}{color}{\pingu at color@pants at button@left}
+Set the color of the left pant button:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants button left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pants}{pants button right}{color}{\pingu at color@pants at button@right}
+Set the color of the right pant button:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants button right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pants}{pants buttons}{color}{\pingu at color@pants at button@left}
+Sets \keyref{pants button left} and \keyref{pants button right} with the same color.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants buttons=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@pants at button@left{<left-button-color>}%
+\subkeyexplain{pants}{pants button left shade}{color}{\pingu at color@pants at button@left at shade}
+Set the color of the left pant button shade:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants,
+	       pants button left shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@pants at button@left{<right-button-color>}%
+\subkeyexplain{pants}{pants button right shade}{color}{\pingu at color@pants at button@right at shade}
+Set the color of the right pant button shade:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants,
+	       pants button right shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@pants at button@left{<left-button-color>}%
+\subkeyexplain{pants}{pants buttons shade}{color}{\pingu at color@pants at button@left at shade}
+Sets \keyref{pants button left shade} and \keyref{pants button right shade} with the same color.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants buttons shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{pants}{pants no buttons}{}{}
+Remove the buttons from the pants:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants no buttons]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pants}{pants extra height}{length}{\pingu at x@pants at extra@height}
+Raise the pants:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pants, pants extra height=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{pants without buttons}{pants no buttons}{pants}
+
+\subsubsection{The glow}
+
+\showkeyexplain{glow}{color}{pingu at white}(orange,glow solid=orange)
+	Active a glow around the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glow=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyexplain{glow thick}{color}{}
+Will pass on the color to \keyref{glow} and use a \keyref{glow width function} width a thicker line width:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glow thick=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyexplain{glow solid}{color}{}
+Will pass on the color to \keyref{glow} and use a \keyref{glow width function} combined with \keyref{glow function} to create a solid glow:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glow solid=green, wings wave]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\subkeyexplain{glow}{glow steps}{list}{\pingu at x@extra at glow@steps}
+	Comma separated list of discrete intervals for the glow calculation:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glow=green, glow steps={.3,.5,1}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\i{\textbackslash i~}%
+\subkeyexplain{glow}{glow function}{function}{\pingu at x@extra at glow@func}
+	Function using the token \lpingu{\i} to refer to the current \keyref{glow steps}. Its evaluation will be used to determine the opacity of the current step:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glow=green,
+	       glow function={.5/\i}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\i{\textbackslash i~}%
+\subkeyexplain{glow}{glow width function}{function}{\pingu at x@extra at glow@width at func}
+	Function using the token \lpingu{\i} to refer to the current \keyref{glow steps}. Its evaluation will be used to determine the width of the current step:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glow=green,
+	  glow width function={5mm-\i mm}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The eye frame}
+
+\keyexplain{eye frame}{color}{pingu at black}
+This is more of a test extra that adds a frame around both eyes:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[eye frame=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{eyeframe}{eye frame}
+\keyalias{eye-frame}{eye frame}
+
+\subsubsection{The glasses}
+
+\showkeyexplain{glasses}{color}{pingu at black}
+Display glasses for the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{glasses}{glasses left fill}{color}{\pingu at color@glasses at fill@l}
+	Sets the fill color of the left glass. The opacity is determined by \keyref{glasses left opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses,
+	       glasses left fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses right fill}{color}{\pingu at color@glasses at fill@r}
+	Sets the fill color of the right glass. The opacity is determined by \keyref{glasses right opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses,
+	       glasses right fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses fill}{color}{}
+	Change the color of both glasses by calling \keyref{glasses left fill} and \keyref{glasses right fill} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{simple}}}}
+\begin{tikzpicture}
+	\pingu[glasses, glasses fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses left opacity}{factor}{\pingu at x@glasses at op@l}
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses,
+	       glasses left fill=green,
+				 glasses left opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses right opacity}{factor}{\pingu at x@glasses at op@r}
+	Sets the fill opacity of the right glass:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses,
+	       glasses right fill=green,
+				 glasses right opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses opacity}{factor}{}
+	Change the opacity of both glasses by calling \keyref{glasses left opacity} and \keyref{glasses right opacity} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses,
+		glasses fill=teal,
+		glasses opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses}{glasses line width}{length}{1.125pt}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses, glasses line width=1mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{sun glasses}{color}{pingu at black}
+Configure the \keyref{glasses} to display sunglasses. The color is passed on to \keyref{glasses fill}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sun glasses=orange]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{sunglasses}{sun glasses}
+
+\subsubsection{The rounded glasses}
+
+\showkeyexplain{glasses round}{color}{pingu at black}
+Behaves equivalent to \keyref{glasses} but produces a round counterpart:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses round=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{glasses round}{glasses round left fill}{color}{\pingu at color@glassesround at fill@l}
+	Sets the fill color of the left glass. The opacity is determined by \keyref{glasses round left opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses round,
+	       glasses round left fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round right fill}{color}{\pingu at color@glassesround at fill@r}
+	Sets the fill color of the right glass. The opacity is determined by \keyref{glasses round right opacity}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses round,
+		  glasses round right fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round fill}{color}{}
+	Change the color of both glasses by calling \keyref{glasses round left fill} and \keyref{glasses round right fill} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{simple}}}}
+\begin{tikzpicture}
+	\pingu[glasses round, glasses round fill=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round left opacity}{factor}{\pingu at x@glassesround at op@l}
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses round,
+			 glasses round left fill=green,
+			 glasses round left opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round right opacity}{factor}{\pingu at x@glassesround at op@r}
+	Sets the fill opacity of the right glass:
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses round,
+			 glasses round right fill=green,
+			 glasses round right opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round opacity}{factor}{}
+	Change the opacity of both glasses round by calling \keyref{glasses round left opacity} and \keyref{glasses round right opacity} with the same value.
+\begin{tcblisting}{listing options={style=lstpingu,language=pingulang,deleteemph={[2]{1}}}}
+\begin{tikzpicture}
+	\pingu[glasses round,
+		glasses round fill=teal,
+		glasses round opacity=1]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{glasses round}{glasses round line width}{length}{1.125pt}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[glasses round, glasses round line width=1mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{sun glasses round}{color}{pingu at black}
+Configure the \keyref{glasses round} to display sunglasses round. The color is passed on to \keyref{glasses round fill}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sun glasses round=orange]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{sunglasses round}{sun glasses round}
+
+\subsubsection{The devil horns}
+
+\showkeyexplain{devil horns}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil horns=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{devilhorns}{devil horns}
+\keyalias{devil-horns}{devil horns}
+
+\subsubsection{The devil wings}
+
+\showkeyexplain{devil wings}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil wings=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{devilwings}{devil wings}
+\keyalias{devil-wings}{devil wings}
+
+\subkeyexplain{devil wings}{devil wings b}{color}{<devil--color>}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil wings, devil wings b=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{devilwings b}{devil wings b}{devil wings}
+\subkeyalias{devil-wings b}{devil wings b}{devil wings}
+
+\subsubsection{The head band}
+
+\showkeyexplain{head band}{color}{pingu at red}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{headband}{head band}
+\keyalias{head-band}{head band}
+
+
+\subkeyexplain{head band}{head band bend}{angle}{\pingu at x@headband at bend}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band bend=25]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband bend}{head band bend}{head band}
+\subkeyalias{head-band bend}{head band bend}{head band}
+
+\subkeyexplain{head band}{head band angle}{angle}{\pingu at x@headband at angle}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band angle=25]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband angle}{head band angle}{head band}
+\subkeyalias{head-band angle}{head band angle}{head band}
+
+\subkeyexplain{head band}{head band upper angle}{angle}{\pingu at x@headband at angle}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band upper angle=25]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband upper angle}{head band upper angle}{head band}
+\subkeyalias{head-band upper angle}{head band upper angle}{head band}
+
+\subkeyexplain{head band}{head band knot}{true/false}{\if at pingu@x at headband@knot@ true\else false\fi}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band knot]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband knot}{head band knot}{head band}
+\subkeyalias{head-band knot}{head band knot}{head band}
+
+{\def\pingu at color@headband{<headband-color>}
+\subkeyexplain{head band}{head band knot color}{color}{\pingu at color@headband at knot}
+If \keyref{head band knot} is enabled, this setting changes the color of the knot:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band knot,
+		head band knot color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband knot color}{head band knot color}{head band}
+\subkeyalias{head-band knot color}{head band knot color}{head band}}
+
+{\def\pingu at color@headband{<headband-color>}
+\subkeyexplain{head band}{head band knot a color}{color}{\pingu at color@headband at knot@a}
+If \keyref{head band knot} is enabled, this setting changes the color of the left headband wing (this will, by default, affect the right wing was well):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band knot,
+		head band knot a color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband knot a color}{head band knot a color}{head band}
+\subkeyalias{head-band knot a color}{head band knot a color}{head band}}
+
+{\def\pingu at color@headband{<headband-color>}
+\subkeyexplain{head band}{head band knot b color}{color}{\pingu at color@headband at knot@b}
+If \keyref{head band knot} is enabled, this setting changes the color of the left headband wing (this will, by default, affect the right wing was well):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band knot,
+		head band knot a color=blue,
+		head band knot b color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband knot b color}{head band knot b color}{head band}
+\subkeyalias{head-band knot b color}{head band knot b color}{head band}}
+
+\subkeyexplain{head band}{head band bands}{true/false}{\if at pingu@x at headband@bands@ true\else false\fi}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band bands=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband bands}{head band bands}{head band}
+\subkeyalias{head-band bands}{head band bands}{head band}
+
+{\def\pingu at color@headband{<headband-color>}
+\subkeyexplain{head band}{head band bands a color}{color}{\pingu at color@headband at bands@a}
+If \keyref{head band bands} is enabled, this setting changes the color of the large one of the both bands:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band bands,
+		head band bands a color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband bands a color}{head band bands a color}{head band}
+\subkeyalias{head-band bands a color}{head band bands a color}{head band}}
+
+{\def\pingu at color@headband{<headband-color>}
+\subkeyexplain{head band}{head band bands b color}{color}{\pingu at color@headband at bands@b}
+If \keyref{head band bands} is enabled, this setting changes the color of the left headband wing (this will, by default, affect the right wing was well):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[head band, head band bands,
+		head band bands a color=blue,
+		head band bands b color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headband bands b color}{head band bands b color}{head band}
+\subkeyalias{head-band bands b color}{head band bands b color}{head band}}
+
+\subsubsection{The rook}
+
+\showkeyexplain{rook}{color}{pingu at silver}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[rook=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@rook{<rook-color>}
+\subkeyexplain{rook}{rook back}{color}{\pingu at color@rook at back}
+Change the color of the rook-costume background:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[rook, rook back=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{rook}{rook hatch}{true/false}{\if at pingu@x at rook@draw at hatch@ true\else false\fi}
+Toggles the opening in the rook costume:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[rook, rook hatch=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@rook{<rook-color>}
+\subkeyexplain{rook}{rook shade}{color}{\pingu at color@rook at shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[rook, rook shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The halo}
+\showkeyexplain{halo}{color}{pingu at lightblue}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[halo=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{halo}{halo raise}{length}{\pingu at x@halo at raise}
+Define the vertical raise of the halo above the penguins head:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[halo, halo raise=4mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{halo}{halo glow}{true/false}{\if at pingu@x at halo@glow true\else false\fi}
+Disable or enable the glow of the halo. The default is controlled by the \texttt{glows}-package option.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[halo, halo glow=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{halo}{halo above}{true/false}{\if at pingu@x at halo@above true\else false\fi}
+Draws the halo above, which is useful in case of other gadgets:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[halo, halo above=true]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The strawhat}
+\showkeyexplain{strawhat}{color}{brown!50!white}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[strawhat=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{straw hat}{strawhat}
+
+\subkeyexplain{strawhat}{strawhat ribbon}{color}{\pingu at color@strawhat at ribbon}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[strawhat, strawhat ribbon=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{straw hat ribbon}{strawhat ribbon}{strawhat}
+
+\subkeyexplain{strawhat}{strawhat position}{angle>:(<x>,<y>)<scale}{\pingu at x@strawhat at angle:(\pingu at x@strawhat at xshift,\pingu at x@strawhat at yshift)\{\pingu at x@strawhat at scale\}}
+Currently, this is a very cumbersome command to change various strawhat parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[strawhat,
+		strawhat position={33:(-.8cm,.14cm){1.4}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{straw hat position}{strawhat position}{strawhat}
+
+\subsubsection{The hat}
+\showkeyexplain{hat}{color}{brown!50!white}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hat=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@hat{<hat-color>}
+\subkeyexplain{hat}{hat ribbon}{color}{\pingu at color@hat at ribbon}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hat, hat ribbon=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@hat{<hat-color>}
+\subkeyexplain{hat}{hat base}{color}{\pingu at color@hat at base}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hat, hat base=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@hat{<hat-color>}
+\subkeyexplain{hat}{hat coronal}{color}{\pingu at color@hat at coronal}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hat, hat coronal=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{hat}{hat position}{angle>:(<x>,<y>)<scale}{\pingu at x@hat at angle:(\pingu at x@hat at xshift,\pingu at x@hat at yshift)\{\pingu at x@hat at scale\}}
+Currently, this is a very cumbersome command to change various hat parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hat, hat position={1:(0cm,-.09cm){1.33}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The conical hat}
+\showkeyexplain{conical hat}{color}{pingu at yellow}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{conical hat}{conical hat rounding}{length}{\pingu at x@conicalhat at rounding}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat,
+	       conical hat rounding=.25pt]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{
+\def\pingu at color@conicalhat{<canonical-hat-color>}
+\subkeyexplain{conical hat}{conical hat shade}{length}{\pingu at x@conicalhat at shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat, conical hat shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+\subkeyexplain{conical hat height}{conical hat height}{length}{\pingu at x@conicalhat at height}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat, conical hat height=10mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{conical hat width}{conical hat width}{length}{\pingu at x@conicalhat at width}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat, conical hat width=3cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{conical hat}{conical hat position}{angle>:(<x>,<y>)<scale}{\pingu at x@conicalhat at angle:(\pingu at x@conicalhat at xshift,\pingu at x@conicalhat at yshift)\{\pingu at x@conicalhat at scale\}}
+Currently, this is a very cumbersome command to change various conical hat parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[conical hat,
+	       conical hat position={1:(-.1cm,-.275cm){1.33}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The cap}
+\showkeyexplain{cap}{color}{pingu at bronze}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cap=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{cap padding}{cap padding}{length}{\pingu at x@cap at padding}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cap, cap padding=4mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\subkeyexplain{cap extra height}{cap extra height}{length}{\pingu at x@cap at height}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cap, cap extra height=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The construction helmet}
+\showkeyexplain{construction helmet}{color}{pingu at yellow}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[construction helmet=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{construction helmet}{construction helmet padding}{length}{\pingu at x@constructionhelmet at padding}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[construction helmet,
+	       construction helmet padding=4mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{construction helmet extra height}{construction helmet extra height}{length}{\pingu at x@constructionhelmet at height}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[construction helmet,
+	       construction helmet extra height=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{construction helmet}{construction helmet position}{angle>:(<x>,<y>)<scale}{\pingu at x@constructionhelmet at angle:(\pingu at x@constructionhelmet at xshift,\pingu at x@constructionhelmet at yshift)\{\pingu at x@constructionhelmet at scale\}}
+Currently, this is a very cumbersome command to change various construction helmet parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[construction helmet,
+	       construction helmet position={1:(-.1cm,-.275cm){1.33}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The crown}
+\showkeyexplain{crown}{color}{pingu at yellow}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{crown}{crown 3d}{true/false}{\if at pingu@x at crown@ddd@ true\else false\fi}
+Toggle the 3d-Design of the crown.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown 3d=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@crown{<crown-color>}
+\subkeyexplain{crown}{crown back}{color}{\pingu at color@crown at back}
+Change the back color of the crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown back=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{crown}{crown front bend}{angle}{\pingu at x@crown at f@bend}
+Change the front lower bend of the crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown front bend=52]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{crown}{crown back bend}{angle}{\pingu at x@crown at b@bend}
+Change the back lower bend of the crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown back bend=46]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{crown}{crown gem shade}{true/false}{\if at pingu@x at crown@shade@ true\else false\fi}
+Toggle the gem shading of the crown.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown gem shade=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{crown}{crown gem colors}{a><b><c><d><e><f}{\{\pingu at color@crown at gem@a\}\{\pingu at color@crown at gem@b\}\ldots}
+Change the color of all the seven gems of the crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown gem colors={green}{green}
+		{green}{white}{green}{green}{green}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@crown{<crown-color>}
+\subkeyexplain{crown}{crown gem ring}{color}{\pingu at color@crown at gem@ring}
+Change the color of the rings around the crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, crown gem ring=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{crown}{crown position}{angle>:(<x>,<y>)<scale}{\pingu at x@crown at angle:(\pingu at x@crown at xshift,\pingu at x@crown at yshift)\{\pingu at x@crown at scale\}}
+Currently, this is a very cumbersome command to change various crown parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown, eyes wink,
+		crown position={1:(-.1cm,-.275cm){1.33}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\keyexplain{crown 2d}{color}{pingu at yellow}
+Enables the \keyref{crown} with the given color and disables \keyref{crown 3d}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[crown 2d=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\subsubsection{The princess crown}
+Similar to \keyref{crown} but smaller.
+
+\showkeyexplain{princess crown}{color}{pingu at yellow}
+Enable the smaller crown with a specific color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{princess crown}{princess crown 3d}{true/false}{\if at pingu@x at princesscrown@ddd@ true\else false\fi}
+Toggle the 3d-Design of the smaller crown.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, princess crown 3d=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@princesscrown{<princess-crown-color>}
+\subkeyexplain{princess crown}{princess crown back}{color}{\pingu at color@princesscrown at back}
+Change the back color of the smaller crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, princess crown back=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{princess crown}{princess crown front bend}{angle}{\pingu at x@princesscrown at f@bend}
+Change the front lower bend of the smaller crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, princess crown front bend=52]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{princess crown}{princess crown back bend}{angle}{\pingu at x@princesscrown at b@bend}
+Change the back lower bend of the smaller crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, princess crown back bend=46]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{princess crown}{princess crown gem shade}{true/false}{\if at pingu@x at princesscrown@shade@ true\else false\fi}
+Toggle the gem shading of the smaller crown.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown,
+		princess crown gem shade=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{princess crown}{princess crown bobbles}{true/false}{\if at pingu@x at princesscrown@bobbles@ true\else false\fi}
+Toggle the bobbles of the smaller crown.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, princess crown bobbles=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{princess crown}{princess crown gem colors}{a><b><c><d}{\{\pingu at color@princesscrown at gem@a\}\{\pingu at color@princesscrown at gem@b\}\ldots}
+Change the color of all the seven gems of the smaller crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown,
+		princess crown gem colors={green}{green}{white}
+		{green}{green}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@princesscrown{<princess-crown-color>}
+\subkeyexplain{princess crown}{princess crown gem ring}{color}{\pingu at color@princesscrown at gem@ring}
+Change the color of the rings around the small crown:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown,
+		princess crown gem ring=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{princess crown}{princess crown position}{angle>:(<x>,<y>)<scale}{\pingu at x@princesscrown at angle:(\pingu at x@princesscrown at xshift,\pingu at x@princesscrown at yshift)\{\pingu at x@princesscrown at scale\}}
+Currently, this is a very cumbersome command to change various princess crown parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown, eyes wink,
+		princess crown position={1:(-.19cm,-.2cm){2.2}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\keyexplain{princess crown 2d}{color}{pingu at yellow}
+Enables the \keyref{princess crown} with the given color and disables \keyref{princess crown 3d}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[princess crown 2d=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\subsubsection{The cake hat}
+
+\showkeyexplain{cake-hat}{color}{pingu at white!92!<pingu-cake-hat-top>}
+Enable a cake hat with a specific color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat top}{color}{\pingu at color@cakehat at top}
+Change the color of the cake hat top:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat top=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat shade}{color}{\pingu at color@cakehat at shade}
+Change the color of the heavily transparent cake hat shading:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat candle}{color}{\pingu at color@cakehat at candle}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat candle fire}{color}{\pingu at color@cakehat at candle@fire}
+Change the color of the cake hats' candle most outer fire:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle fire=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@cakehat at candle@fire{<cake-hat-candle-fire>}
+\subkeyexplain{cake-hat}{cake-hat candle fire 2}{color}{\pingu at color@cakehat at candle@fire at b}
+Change the color of the cake hats' candle middle fire:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle fire 2=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@cakehat at candle@fire{<cake-hat-candle-fire>}
+\subkeyexplain{cake-hat}{cake-hat candle fire 3}{color}{\pingu at color@cakehat at candle@fire at b}
+Change the color of the cake hats' candle inner fire:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle fire 3=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{cake-hat}{cake-hat candle wick}{color}{\pingu at color@cakehat at candle@wick}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle wick=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat candle shade}{color}{\pingu at color@cakehat at candle@shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat candle back}{color}{\pingu at color@cakehat at candle@back}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat candle back=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@cakehat{<cake-hat-color>}
+\subkeyexplain{cake-hat}{cake-hat outline}{color}{\pingu at color@cakehat at outline}
+Change the color of the cake hats' outline (width by \keyref{cake-hat outline width}):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat outline=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{cake-hat}{cake-hat outline width}{color}{\pingu at x@cakehat at outline@w}
+Change the width of the cake hats' outline (color by \keyref{cake-hat outline}):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat, cake-hat outline width=1mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{cake-hat}{cake-hat position}{angle>:(<x>,<y>)<scale}{\pingu at x@cakehat at angle:(\pingu at x@cakehat at xshift,\pingu at x@cakehat at yshift)\{\pingu at x@cakehat at scale\}}
+Currently, this is a very cumbersome command to change various cake hat parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cake-hat,
+		cake-hat position={1:(-.085cm,-.2cm){1.275}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The pumpkin hat}
+
+\showkeyexplain{pumpkin-hat}{color}{pingu at bronze!97!white}
+Enable a pumpkin hat with a specific color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@pumpkinhat{<pumpkinhat-color>}
+\subkeyexplain{pumpkin-hat}{pumpkin-hat stalk}{color}{\pingu at color@pumpkinhat at stalk}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat stalk=teal]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\subkeyexplain{pumpkin-hat}{pumpkin-hat stalk top}{color}{<pumpkinhat-stalk-color>!95!pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat stalk top=teal]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat stripe a}{color}{\pingu at color@pumpkinhat at stripe@a}
+Change the color of the first stripe. By default the other stripes share this ones color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat stripe a=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat stripe b}{color}{\pingu at color@pumpkinhat at stripe@b}
+Change the color of the second stripe. By default the third stripe share this ones color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat stripe b=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat stripe c}{color}{\pingu at color@pumpkinhat at stripe@c}
+Change the color of the third stripe:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat stripe c=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat outline}{color}{\pingu at color@pumpkinhat at outline}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat outline=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat outline width}{color}{\pingu at x@pumpkinhat at outline@w}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,pumpkin-hat outline width=3pt]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{pumpkin-hat}{pumpkin-hat position}{angle>:(<x>,<y>)<scale}{\pingu at x@pumpkinhat at angle:(\pingu at x@pumpkinhat at xshift,\pingu at x@pumpkinhat at yshift)\{\pingu at x@pumpkinhat at scale\}}
+Currently, this is a very cumbersome command to change various pumpkin hat parameters at the same time:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pumpkin-hat,
+		pumpkin-hat position={1:(-.085cm,-.15cm){1.275}}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The VR-Headset}
+
+\showkeyexplain{vr-headset}{color}{pingu at black!92!gray}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@vrheadset{<vr-headset>}
+\subkeyexplain{vr-headset}{vr-headset band}{color}{\pingu at color@vrheadset at band}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset, vr-headset band=purple]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@vrheadset{<vr-headset>}
+\subkeyexplain{vr-headset}{vr-headset band top}{color}{\pingu at color@vrheadset at band@top}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset, vr-headset band top=purple]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{vr-headset}{vr-headset hair}{}{}
+Change the hair to support the headset:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset, vr-headset hair]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{vr-headset}{vr-headset text}{text}{omitted}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset, vr-headset text={ABCD}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{vr-headset}{vr-headset text color}{color}{\pingu at color@vrheadset at text@color}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[vr-headset, vr-headset text color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The headphones}
+
+\showkeyexplain{headphone}{color}{pingu at blue!80!pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{headphones}{headphone}
+
+{\def\pingu at color@headphone{<headphone>}
+\subkeyexplain{headphone}{headphone left}{color}{\pingu at color@headphone at left}
+Change the color of the left headphone (automatically sets the color of \keyref{headphone right}):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@headphone{<headphone>}
+\subkeyexplain{headphone}{headphone right}{color}{\pingu at color@headphone at right}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{headphone}{headphone left outer}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone left outer=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{headphone}{headphone right outer}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone right outer=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{headphone}{headphone outer}{color}{pingu at black}
+Set \keyref{headphone left outer} and \keyref{headphone right outer} with the same value:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone outer=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headphones outer}{headphone outer}{headphone}
+
+\subkeyexplain{headphone}{headphone left inner}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone left inner=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{headphone}{headphone right inner}{color}{pingu at black}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone right inner=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{headphone}{headphone inner}{color}{pingu at black}
+Set \keyref{headphone left inner} and \keyref{headphone right inner} with the same value:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[headphone, headphone inner=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{headphones inner}{headphone inner}{headphone}
+
+\subsubsection{The santa hat}
+
+\showkeyexplain{santa hat}{color}{pingu at red!87!pingu at black}
+Show the merry christmas:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa hat=pingu at red]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@santahat{<santa hat>}
+\subkeyexplain{santa hat}{santa hat second}{color}{\pingu at color@santahat at second}
+Change the wool color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa hat,santa hat second=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{
+\subkeyexplain{santa hat}{santa hat bobble}{color}{<santa hat second>}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa hat,santa hat bobble=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The santa beard}
+
+\showkeyexplain{santa beard}{color}{pingu at white!96!pingu at red!98!pingu at black!92!gray}(pingu at white!96!pingu at red!98!pingu at black!92!gray,santa beard string=pingu at main)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa beard=brown!20!white]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@body at main{<body main>}
+\subkeyexplain{santa beard}{santa beard string}{color}{\pingu at color@santabeard at string}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[santa beard,santa beard string=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The mask}
+\showkeyexplain{mask}{color}{pingu at white!61!gray}(pingu at white!61!gray,mask band=pingu at main)
+Keep the penguin safe:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[mask=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{mask}{mask band}{color}{\pingu at color@mask at band}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[mask,mask band=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{mask}{mask line width}{length}{\pingu at x@mask at line@width}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[mask,mask line width=1.5pt]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@mask{<mask-color>}
+\subkeyexplain{mask}{mask band inner}{color}{\pingu at color@mask at band@inner}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[mask,mask band inner=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@mask{<mask-color>}
+\subkeyexplain{mask}{mask band outer}{color}{\pingu at color@mask at band@outer}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[mask,mask band outer=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subsubsection{The blush}
+
+\showkeyexplain{blush}{color}{pingu at red}(pingu at red,blush opacity=.4)
+Make it cute:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[eyes wink, blush=pingu at purple]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{blush}{blush second}{color}{<blush>}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[blush, blush second=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{blush}{blush opacity}{factor}{\pingu at x@blush at opacity}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[blush, blush opacity=.86]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The banner}
+
+\showkeyexplain{banner}{text}{Bannertext}
+Give the penguin a banner to hold (it adapts to the wing positions):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[left wing wave, banner=Hello]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{banner}{banner band}{color}{\pingu at color@banner at band}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner band=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner text color}{color}{\pingu at color@banner at text@color}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[wings wave, banner, banner text color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner stick left color}{color}{\pingu at color@banner at stick@left}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner stick left color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner stick right color}{color}{\pingu at color@banner at stick@right}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner stick right color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner sticks color}{color}{\pingu at color@banner at stick@left}
+Calls \keyref{banner stick left color} and \keyref{banner stick right color} with the same color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner sticks color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner stick left length}{length}{\pingu at banner@stick at left@l}
+Changes the banners left stick length:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner stick left length=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner stick right length}{length}{\pingu at banner@stick at right@l}
+Changes the banners right stick length:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner stick right length=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner sticks length}{color}{\pingu at banner@stick at left@l}
+Calls \keyref{banner stick left length} and \keyref{banner stick right length} with the same length:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner sticks length=9mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner raise}{length}{\pingu at banner@raise}
+Change the raise of the banner text:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner raise=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner height}{length}{\pingu at banner@height}
+Change the height of the banner (this modifies the half):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner height=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner font}{font}{<fat font>}
+Change the height of the banner:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner font=\itshape]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{banner}{banner bent}{angle}{\pingu at banner@bent}
+Change the bending of the banner:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[banner, banner bent=0]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsection{Wing Items}
+\label{sub:wing-items}Most wing items created have a two variants: one for the left and one for the right wing. For consistency, both of them are represented in the documentation~--- many times, they are not just mirrored but two different shapes that appear to be mirrored with special care.
+
+
+\keyexplain{left wing item angle}{angle}{\pingu at wing@left at item@angle at user}
+	Relative rotation of the \hyperref[sub:wing-items]{wing items} placed in the left wing:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane left, cane right,
+	       left wing item angle=70]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{left item angle}{left wing item angle}
+
+
+\keyexplain{left wing item flip}{true/false}{\if at pingu@wi at flip@left true\else false\fi}
+	Some \hyperref[sub:wing-items]{wing items} do have a different style, depending on the wing they are in (e.g. they are mirrored). This option toggles the stile for the left wing.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left, flag right,
+				 left wing item flip]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{left item flip}{left wing item flip}
+
+
+\keyexplain{right wing item angle}{angle}{\pingu at wing@right at item@angle at user}
+	Relative rotation of the \hyperref[sub:wing-items]{wing items} placed in the right wing:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane left, cane right,
+	       right wing item angle=70]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{right item angle}{right wing item angle}
+
+
+\keyexplain{right wing item flip}{true/false}{\if at pingu@wi at flip@right true\else false\fi}
+	Some \hyperref[sub:wing-items]{wing items} do have a different style, depending on the wing they are in (e.g. they are mirrored). This option toggles the stile for the right wing.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left, flag right,
+				 right wing item flip]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{right item flip}{right wing item flip}
+
+\subsubsection{The lollipop}
+
+\showkeyexplain{lollipop left}{color}{pingu at green}
+	Enable the left lollipop for the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{lollipop left}{lollipop left handle}{color}{\pingu at color@lollipopleft at handle}
+	Change the handle color of the left lollipop:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop left, lollipop left handle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lollipop left}{lollipop left second}{color}{\pingu at color@lollipopleft at second}
+	Change the second color of the left lollipop, used for the ring:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop left, lollipop left second=blue]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{lollipop right}{color}{pingu at green}
+	Enable the right lollipop for the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{lollipop right}{lollipop right handle}{color}{\pingu at color@lollipopright at handle}
+	Change the handle color of the right lollipop:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop right, lollipop right handle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lollipop right}{lollipop right second}{color}{\pingu at color@lollipopright at second}
+	Change the second color of the right lollipop, used for the ring:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[lollipop right, lollipop right second=blue]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\subsubsection{The cane}
+
+\showkeyexplain{cane left}{color}{pingu at bronze}
+	Enable the left cane for the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{cane left}{cane left raise}{length}{\pinug at x@cane at raise@left}
+	Raise the cane of the pingu:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane left,cane left raise=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{cane right}{color}{pingu at bronze}
+	Enable the right cane for the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{cane right}{cane right raise}{length}{\pinug at x@cane at raise@right}
+	Raise the cane of the pingu:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cane right,cane right raise=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The hand cast}
+
+\keyexplain{hand cast left}{text}{X}
+	Show a symbol above the left wing of the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hand cast left=ABCDEFG]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{handcast left}{hand cast left}
+
+\subkeyexplain{hand cast left}{hand cast left color}{color}{\pingu at color@handcast at left@color}
+	Change the color of the left hand cast:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hand cast left,
+		hand cast left color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\keyalias{handcast left color}{hand cast left color}
+
+\keyexplain{hand cast right}{text}{X}
+	Show a symbol above the right wing of the penguin:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hand cast right=ABCDEFG]
+\end{tikzpicture}
+\end{tcblisting}
+\endkeyexplain
+
+\keyalias{handcast right}{hand cast right}
+
+\subkeyexplain{hand cast right}{hand cast right color}{color}{\pingu at color@handcast at right@color}
+	Change the color of the right hand cast:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[hand cast right,
+		hand cast right color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\keyalias{handcast right color}{hand cast right color}
+
+\subsubsection{The sign post}
+
+\showkeyexplain{sign post left}{text}{}(Example)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post left=ABC]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{signpost left}{sign post left}
+
+\subkeyexplain{sign post left}{sign post left color}{color}{\pingu at color@signpostleft}
+	Change the color of the sign post:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post left, sign post left color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{signpost left color}{sign post left color}{sign post left}
+
+\subkeyexplain{sign post left}{sign post left font color}{color}{\pingu at color@signpostleft at font}
+	Change the font color of the sign post:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post left=ABCD,
+		sign post left font color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{signpost left fontcolor}{sign post left font color}{sign post left}
+
+\showkeyexplain{sign post right}{text}{}(Example)
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post right=ABC]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\keyalias{signpost right}{sign post right}
+
+\subkeyexplain{sign post right}{sign post right color}{color}{\pingu at color@signpostright}
+	Change the color of the sign post:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post right, sign post right color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{signpost right color}{sign post right color}{sign post right}
+
+\subkeyexplain{sign post right}{sign post right font color}{color}{\pingu at color@signpostright at font}
+	Change the font color of the sign post:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[sign post right=ABCD,
+		sign post right font color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyalias{signpost right fontcolor}{sign post right font color}{sign post right}
+
+\subsubsection{The lightsaber}
+
+\showkeyexplain{lightsaber left}{color}{pingu at blue}(pingu at blue)
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left handle}{color}{\pingu at color@lightsaberleft at handle}
+	Change the color of the penguins lightsabers' handle:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left handle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left deco}{color}{\pingu at color@lightsaberleft at deco}
+	Change the color of the penguins lightsabers' decoration elements:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left deco=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left ribbs}{color}{\pingu at color@lightsaberleft at ribbs}
+	Change the color of the penguins lightsabers' ribbs:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left ribbs=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left button}{color}{\pingu at color@lightsaberleft at button}
+	Change the color of the penguins lightsabers' first button:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left button=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left button b}{color}{\pingu at color@lightsaberleft at button@b}
+	Change the color of the penguins lightsabers' second button:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left button b=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left double}{true/false}{\if at pingu@x at lightsaber@double at left true\else false\fi}
+Toggle the visibility of the second lightsaber:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left double,
+		left wing item angle=90]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\@col{<lightsaber-color>}
+\subkeyexplain{lightsaber left}{lightsaber left color b}{color}{\pingu at color@lightsaberleft at color@b}
+	Change the color of the penguins second lightsaber, which is only shown if \keyref{lightsaber left double} is enabled:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left double,
+		lightsaber left color b=green,
+		left wing item angle=90]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{lightsaber left}{lightsaber left length}{length}{\pingu at x@lightsaber at length@left}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left length=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left length b}{length}{\pingu at x@lightsaber at length@b at left}
+	Change the length of the penguins second lightsaber (active with \keyref{lightsaber left double}):
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left double,
+		lightsaber left length b=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\subkeyexplain{lightsaber left}{lightsaber left yshift}{length}{\pingu at x@lightsaber at yshift@left}
+	Shift the penguins lightsaber in the y direction:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left yshift=12mm,
+	lightsaber left length=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left glow}{true/false}{\if at pingu@x at lightsaber@glow at left true\else false\fi}
+Toggle the glow of the lightsaber. The default is controlled by the \texttt{glows}-package option.
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left glow=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left solid}{}{}
+Disables the \keyref{lightsaber left glow}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left solid]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left glow core}{color}{\pingu at color@lightsaberleft at glow@core}
+Change the color of the lightsabers glow core:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left glow=true,
+		lightsaber left glow core=cyan]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left outer glow factor}{factor}{\pingu at x@lightsaber at ogf@left}
+Modify the glow factor of the left lightsaber:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left,
+		lightsaber left outer glow factor=.3]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber left}{lightsaber left disabled}{}{}
+Disables the lightsaber so only the handle is visible:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber left, lightsaber left disabled]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\showkeyexplain{lightsaber right}{color}{pingu at blue}(pingu at blue)
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right handle}{color}{\pingu at color@lightsaberright at handle}
+	Change the color of the penguins lightsabers' handle:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right handle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right deco}{color}{\pingu at color@lightsaberright at deco}
+	Change the color of the penguins lightsabers' decoration elements:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right deco=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right ribbs}{color}{\pingu at color@lightsaberright at ribbs}
+	Change the color of the penguins lightsabers' ribbs:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right ribbs=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right button}{color}{\pingu at color@lightsaberright at button}
+	Change the color of the penguins lightsabers' first button:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right button=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right button b}{color}{\pingu at color@lightsaberright at button@b}
+	Change the color of the penguins lightsabers' second button:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right button b=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right double}{true/false}{\if at pingu@x at lightsaber@double at right true\else false\fi}
+Toggle the visibility of the second lightsaber:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right double,
+		right wing item angle=90]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\@col{<lightsaber-color>}
+\subkeyexplain{lightsaber right}{lightsaber right color b}{color}{\pingu at color@lightsaberright at color@b}
+	Change the color of the penguins second lightsaber, which is only shown if \keyref{lightsaber right double} is enabled:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right double,
+		lightsaber right color b=green,
+		right wing item angle=90]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{lightsaber right}{lightsaber right length}{length}{\pingu at x@lightsaber at length@right}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right length=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right length b}{length}{\pingu at x@lightsaber at length@b at right}
+	Change the length of the penguins second lightsaber (active with \keyref{lightsaber right double}):
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right double,
+		lightsaber right length b=6mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+
+\subkeyexplain{lightsaber right}{lightsaber right yshift}{length}{\pingu at x@lightsaber at yshift@right}
+	Shift the penguins lightsaber in the y direction:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right yshift=12mm,
+		lightsaber right length=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right glow}{true/false}{\if at pingu@x at lightsaber@glow at right true\else false\fi}
+Toggle the glow of the lightsaber. The default is controlled by the \texttt{glows}-package option.
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right glow=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right solid}{}{}
+Disables the \keyref{lightsaber right glow}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right solid]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right glow core}{color}{\pingu at color@lightsaberright at glow@core}
+Change the color of the lightsabers glow core:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right glow=true,
+		lightsaber right glow core=cyan]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right outer glow factor}{factor}{\pingu at x@lightsaber at ogf@right}
+Modify the glow factor of the right lightsaber:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right,
+		lightsaber right outer glow factor=.3]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{lightsaber right}{lightsaber right disabled}{}{}
+Disables the lightsaber so only the handle is visible:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[lightsaber right, lightsaber right disabled]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The lightstaff}
+
+\showkeyexplain{light-staff left}{color}{pingu at green}
+Color similar to \keyref{light-staff left head}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left length}{length}{\pingu at lightstaff@left at length}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left length=18mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left glow length}{length}{\pingu at lightstaff@left at glow@length}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left glow length=16mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left head}{color}{pingu at green}
+Same as assigning the color to \keyref{light-staff left}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left head=pingu at purple]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left staff}{color}{\pingu at color@lightstaff at left@staff}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left staff=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left core}{color}{\pingu at color@lightstaff at left@head at core}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left core=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left core width}{length}{\pingu at lightstaff@left at core@width}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left core width=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff left}{light-staff left outer glow factor}{factor}{\pingu at x@lightstaff at ogf@left}
+Similar to \keyref{lightsaber left outer glow factor}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff left,
+			light-staff left outer glow factor=.5]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{light-staff right}{color}{pingu at green}
+Color similar to \keyref{light-staff right head}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right length}{length}{\pingu at lightstaff@right at length}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right length=18mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right glow length}{length}{\pingu at lightstaff@right at glow@length}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right glow length=16mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right head}{color}{pingu at green}
+Same as assigning the color to \keyref{light-staff right}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right head=pingu at purple]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right staff}{color}{\pingu at color@lightstaff at right@staff}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right staff=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right core}{color}{\pingu at color@lightstaff at right@head at core}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right core=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right core width}{length}{\pingu at lightstaff@right at core@width}
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right core width=2mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{light-staff right}{light-staff right outer glow factor}{factor}{\pingu at x@lightstaff at ogf@right}
+Similar to \keyref{lightsaber right outer glow factor}:
+\begin{tcblisting}{}
+\begin{tikzpicture}
+	\pingu[light-staff right,
+			light-staff right outer glow factor=.5]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The flag}
+The flag is special in that it is meant to be customized by commands so that the visible insignia is to the users liking.
+
+\showkeyexplain{flag left}{color}{pingu at purple}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{flag left}{flag left pole}{color}{\pingu at color@flagleft at pole}
+Change the color of the flag pole:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left, flag left pole=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{flag left}{flag left bobble}{color}{\pingu at color@flagleft at bobble}
+Change the color of the flag poles top bobble:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left, flag left bobble=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{flag left}{flag left code}{\LaTeX-code}{omitted}
+Set the flag code which is effectively the drawing code of the flag.
+You can use the styles \lpingu{/pingu/@flag at first} and \lpingu{/pingu/@flag} to inherit the default flag styles and to stay compliant with the modifications of the other macros:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag left, flag left code={
+	  \node[/pingu/@flag at first,
+	  	/pingu/@flag={blue}{5mm}]
+	  		(upper) at (0,0) {};
+	  \node[below,/pingu/@flag={black}{4mm}]
+	  	(lower) at (upper.south) {};
+	}]
+\end{tikzpicture}
+\end{tcblisting}
+Note that \lpingu{/pingu/@flag} expects two arguments: the color of the flag segment and its thickness.
+\endsubkeyexplain
+
+\@toggle at showcase % just so that they are aligned on the same side
+\showkeyexplain{pride flag left}{color}{pingu at bronze}
+	Uses \keyref{flag left}, \keyref{flag left code}, and \keyref{flag left pole} to set a pride flag. The color argument is passed to \keyref{flag left pole}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pride flag left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+\@toggle at showcase % and back
+
+
+\showkeyexplain{german flag left}{color}{pingu at bronze}
+	Uses \keyref{flag left}, \keyref{flag left code}, and \keyref{flag left pole} to set a german flag. The color argument is passed to \keyref{flag left pole}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[german flag left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+
+\showkeyexplain{flag right}{color}{pingu at purple}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{flag right}{flag right pole}{color}{\pingu at color@flagright at pole}
+Change the color of the flag pole:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag right, flag right pole=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{flag right}{flag right bobble}{color}{\pingu at color@flagright at bobble}
+Change the color of the flag poles top bobble:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag right, flag right bobble=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{flag right}{flag right code}{\LaTeX-code}{omitted}
+Set the flag code which is effectively the drawing code of the flag.
+You can use the styles \lpingu{/pingu/@flag at first} and \lpingu{/pingu/@flag} to inherit the default flag styles and to stay compliant with the modifications of the other macros:
+	\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[flag right, flag right code={
+	  \node[/pingu/@flag at first,
+	  	/pingu/@flag={blue}{5mm}]
+	  		(upper) at (0,0) {};
+	  \node[below,/pingu/@flag={black}{4mm}]
+	  	(lower) at (upper.south) {};
+	}]
+\end{tikzpicture}
+\end{tcblisting}
+Note that \lpingu{/pingu/@flag} expects two arguments: the color of the flag segment and its thickness.
+\endsubkeyexplain
+
+\@toggle at showcase % just so that they are aligned on the same side
+\showkeyexplain{pride flag right}{color}{pingu at bronze}
+	Uses \keyref{flag right}, \keyref{flag right code}, and \keyref{flag right pole} to set a pride flag. The color argument is passed to \keyref{flag right pole}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[pride flag right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+\@toggle at showcase
+
+\showkeyexplain{german flag right}{color}{pingu at bronze}
+	Uses \keyref{flag right}, \keyref{flag right code}, and \keyref{flag right pole} to set a german flag. The color argument is passed to \keyref{flag right pole}.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[german flag right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subsubsection{The staff}
+
+\showkeyexplain{staff left}{color}{pingu at bronze}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[staff left=green, left item angle=70]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{staff left}{staff left length}{length}{\pingu at staff@left at length}
+Change the staff length:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[staff left, staff left length=20mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{staff right}{color}{pingu at bronze}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[staff right=green, right item angle=70]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{staff right}{staff right length}{length}{\pingu at staff@right at length}
+Change the staff length:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[staff right, staff right length=20mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The laptop}
+
+\showkeyexplain{laptop left}{color}{gray!80!pingu at white}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@laptopleft{laptop-left-color}
+\subkeyexplain{laptop left}{laptop left bracket}{color}{\pingu at color@laptopleft at bracket}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left bracket=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop left}{laptop left lower}{color}{\pingu at color@laptopleft at lower}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left lower=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop left}{laptop left key}{color}{\pingu at color@laptopleft at key}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left key=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop left}{laptop left display}{color}{\pingu at color@laptopleft at display}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left display=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop left}{laptop left content}{tikz-code}{\pingu at x@laptopleft at content}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left content={\draw circle[radius=2mm];}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop left}{laptop left mid}{code}{\pingu at x@laptopleft at mid}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop left, laptop left mid={Hey}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+
+\showkeyexplain{laptop right}{color}{gray!80!pingu at white}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+{\def\pingu at color@laptopright{laptop-right-color}
+\subkeyexplain{laptop right}{laptop right bracket}{color}{\pingu at color@laptopright at bracket}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right bracket=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop right}{laptop right lower}{color}{\pingu at color@laptopright at lower}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right lower=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop right}{laptop right key}{color}{\pingu at color@laptopright at key}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right key=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop right}{laptop right display}{color}{\pingu at color@laptopright at display}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right display=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop right}{laptop right content}{tikz-code}{\pingu at x@laptopright at content}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right content={\draw circle[radius=2mm];}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{laptop right}{laptop right mid}{code}{\pingu at x@laptopright at mid}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[laptop right, laptop right mid={Hey}]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+\subsubsection{The devil fork}
+
+\showkeyexplain{devil fork left}{color}{pingu at red}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{devil fork left}{devil fork left second}{color}{\pingu at color@devilforkleft at second}
+Staff color of the \keyref{devil fork left}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork left,
+			 devil fork left second=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{devil fork left}{devil fork left length}{color}{\pingu at devilfork@left at length}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork left, devil fork left length=7mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{devil fork right}{color}{pingu at red}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{devil fork right}{devil fork right second}{color}{\pingu at color@devilforkright at second}
+Staff color of the \keyref{devil fork right}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork right,
+			 devil fork right second=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{devil fork right}{devil fork right length}{color}{\pingu at devilfork@right at length}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[devil fork right,
+		    devil fork right length=7mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The Horse}
+
+\showkeyexplain{horse left}{color}{pingu at bronze!80!pingu at black}
+	Give it a horse:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{horse left}{horse left flip}{true/false}{false}
+By default, the left horse will be flipped. The right horse won't.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left flip=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left has base}{true/false}{false}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@horseleft{<horse-left-color>}
+\subkeyexplain{horse left}{horse left draw}{color}{\pingu at color@horseleft at draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left mane}{color}{\pingu at color@horseleft at mane}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left mane=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseleft at mane{<horse-left-mane-color>}
+\subkeyexplain{horse left}{horse left mane draw}{color}{\pingu at color@horseleft at mane@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left mane draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left thatch}{color}{\pingu at color@horseleft at thatch}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left thatch=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseleft at thatch{<horse-left-thatch-color>}
+\subkeyexplain{horse left}{horse left thatch draw}{color}{\pingu at color@horseleft at thatch@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left thatch draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left tail}{color}{\pingu at color@horseleft at tail}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left tail=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseleft at tail{<horse-left-tail-color>}
+\subkeyexplain{horse left}{horse left tail draw}{color}{\pingu at color@horseleft at tail@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left tail draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left eyes}{color}{\pingu at color@horseleft at eyes}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left eyes=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+\subkeyalias{horse left eye}{horse left eyes}{horse left}
+
+\subkeyexplain{horse left}{horse left mouth}{color}{\pingu at color@horseleft at mouth}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left mouth=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left nose}{color}{\pingu at color@horseleft at nose}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left nose=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left ears}{color}{\pingu at color@horseleft at ears}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left ears=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left base}{color}{\pingu at color@horseleft at base}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base,
+			 horse left base=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseleft at base{<horse-left-base-color>}
+\subkeyexplain{horse left}{horse left base draw}{color}{\pingu at color@horseleft at base@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base,
+			 horse left base draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left base shade}{color}{\pingu at color@horseleft at base@shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base,
+			 horse left base shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseleft at base@shade{<horse-left-base-shade-color>}
+\subkeyexplain{horse left}{horse left base shade draw}{color}{\pingu at color@horseleft at base@shade at draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base,
+			 horse left base shade draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left xshift}{color}{\pingu at x@horseleft at xshift}
+This key reacts with the \keyref{horse left flip} option!
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left xshift=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left yshift}{color}{\pingu at x@horseleft at yshift}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left yshift=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse left}{horse left on base}{}{}
+Uses \keyref{horse left xshift} and \keyref{horse left yshift} to align a horse on a base to be set on the penguin-wing:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse left,horse left has base,
+	  		 horse left on base]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+\showkeyexplain{horse right}{color}{pingu at bronze!80!pingu at black}
+	Give it a horse:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{horse right}{horse right flip}{true/false}{false}
+By default, the right horse will be flipped. The right horse won't.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right flip=false]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right has base}{true/false}{false}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@horseright{<horse-right-color>}
+\subkeyexplain{horse right}{horse right draw}{color}{\pingu at color@horseright at draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right mane}{color}{\pingu at color@horseright at mane}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right mane=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseright at mane{<horse-right-mane-color>}
+\subkeyexplain{horse right}{horse right mane draw}{color}{\pingu at color@horseright at mane@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right mane draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right thatch}{color}{\pingu at color@horseright at thatch}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right thatch=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseright at thatch{<horse-right-thatch-color>}
+\subkeyexplain{horse right}{horse right thatch draw}{color}{\pingu at color@horseright at thatch@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right thatch draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right tail}{color}{\pingu at color@horseright at tail}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right tail=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseright at tail{<horse-right-tail-color>}
+\subkeyexplain{horse right}{horse right tail draw}{color}{\pingu at color@horseright at tail@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right tail draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right eyes}{color}{\pingu at color@horseright at eyes}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right eyes=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+\subkeyalias{horse right eye}{horse right eyes}{horse right}
+
+\subkeyexplain{horse right}{horse right mouth}{color}{\pingu at color@horseright at mouth}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right mouth=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right nose}{color}{\pingu at color@horseright at nose}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right nose=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right ears}{color}{\pingu at color@horseright at ears}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right ears=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right base}{color}{\pingu at color@horseright at base}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base,
+			 horse right base=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseright at base{<horse-right-base-color>}
+\subkeyexplain{horse right}{horse right base draw}{color}{\pingu at color@horseright at base@draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base,
+			 horse right base draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right base shade}{color}{\pingu at color@horseright at base@shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base,
+			 horse right base shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\def\pingu at color@horseright at base@shade{<horse-right-base-shade-color>}
+\subkeyexplain{horse right}{horse right base shade draw}{color}{\pingu at color@horseright at base@shade at draw}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base,
+			 horse right base shade draw=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right xshift}{color}{\pingu at x@horseright at xshift}
+This key reacts with the \keyref{horse right flip} option!
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right xshift=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right yshift}{color}{\pingu at x@horseright at yshift}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right yshift=1cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{horse right}{horse right on base}{}{}
+Uses \keyref{horse right xshift} and \keyref{horse right yshift} to align a horse on a base to be set on the penguin-wing:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[horse right,horse right has base,
+	  		 horse right on base]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+}
+
+
+\subsection{Clothes}
+
+Clothes are currently completely work in progress as the goal is to create an elegant way to offer clothes that adapt to the wing positions of the penguin.
+Currently there is only one cloth type that may be heavily edited in the course of development\ldots
+
+\subsubsection{The cloak}
+
+Originally developed just as a cape, the cloak is no a whole extension.
+
+\showkeyexplain{cloak}{color}{pingu at bronze}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\begin{tcblisting}{sidebyside=false, title=Cloak-Showcase}
+\begin{tikzpicture}
+	\pingu[wings wave, cloak]
+	\pingu[wings shock, cloak, xshift=3.5cm]
+	\pingu[right wing wave, left wing hug, cloak, xshift=7cm]
+	\pingu[right wing grab, left wing raise, cloak, xshift=10.5cm]
+\end{tikzpicture}
+\end{tcblisting}
+
+{\def\pingu at color@cloak{<cloak-color>}
+\subkeyexplain{cloak}{cloak cap}{color}{\pingu at color@cloak at cap}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak, cloak cap=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@cloak{<cloak-color>}
+\subkeyexplain{cloak}{cloak wings color}{color}{\pingu at color@cloak at wings}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak, cloak wings color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@cloak{<cloak-color>}
+\subkeyexplain{cloak}{cloak bottom color}{color}{\pingu at color@cloak at bottom}
+	Should change the cloaks bottom color (currently ineffective):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak, cloak bottom color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@cloak{<cloak-color>}
+\subkeyexplain{cloak}{cloak front color}{color}{\pingu at color@cloak at front}
+	Should change the cloaks front color (currently ineffective):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak, cloak front color=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{cloak}{cloak padding}{length}{\pingu at x@cloak at padding}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cloak, cloak padding=13mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\showkeyexplain{cape}{color}{pingu at bronze}
+	Uses \keyref{cloak} but disables all parts that are not part of a cape:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[cape=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subsubsection{The shirt}
+
+\showkeyexplain{shirt}{color}{pingu at bronze}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{shirt}{shirt raise}{length}{\pingu at shirt@raise}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt raise=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt padding}{length}{\pingu at shirt@padding}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt padding=4mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt button top}{color}{\pingu at color@shirt at button@top}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button top=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt button middle}{color}{\pingu at color@shirt at button@middle}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button middle=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt button bottom}{color}{\pingu at color@shirt at button@bottom}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button bottom=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt buttons}{color}{}
+Set \keyref{shirt button top}, \keyref{shirt button middle} and \keyref{shirt button bottom}, that is all the buttons, with the same color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt buttons=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@shirt at button@top{<shirt-button-top>}\def\pingu at color@shirt{<shirt-color>}
+\subkeyexplain{shirt}{shirt button top shade}{color}{\pingu at color@shirt at button@top at shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button top shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@shirt at button@middle{<shirt-button-middle>}\def\pingu at color@shirt{<shirt-color>}
+\subkeyexplain{shirt}{shirt button middle shade}{color}{\pingu at color@shirt at button@middle at shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button middle shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+{\def\pingu at color@shirt at button@top{<shirt-button-top>}\def\pingu at color@shirt{<shirt-color>}
+\subkeyexplain{shirt}{shirt button bottom shade}{color}{\pingu at color@shirt at button@bottom at shade}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt button bottom shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\subkeyexplain{shirt}{shirt buttons shade}{color}{}
+Set all shadings of the buttons: \keyref{shirt button top shade}, \keyref{shirt button middle shade} and \keyref{shirt button bottom shade} with the same color:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt buttons shade=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt no buttons}{}{}
+Disable all buttons (by setting their colors to \lpingu{!hide}):
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, shirt no buttons]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subkeyexplain{shirt}{shirt above}{}{}
+This is interesting in combination with other extras as it allows the \keyref{shirt} to be drawn above them.
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[shirt, tie, shirt above]
+	\pingu[shirt, tie, xshift=3cm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+\subsubsection{The second shirt}
+\showkeyexplain{second shirt}{color}{pingu at red}
+	Display a shirt below the \keyref{shirt}:
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[second shirt=green, shirt]
+\end{tikzpicture}
+\end{tcblisting}
+\endshowkeyexplain
+
+\subkeyexplain{second shirt}{second shirt raise}{length}{\pingu at secondshirt@raise}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[second shirt, second shirt raise=5mm]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain
+
+{\def\pingu at color@secondshirt{<second-shirt-color>}
+\subkeyexplain{second shirt}{second shirt neck}{color}{\pingu at color@secondshirt at neck}
+\begin{tcblisting}{@}
+\begin{tikzpicture}
+	\pingu[second shirt, second shirt neck=green]
+\end{tikzpicture}
+\end{tcblisting}
+\endsubkeyexplain}
+
+\lstset{breakatwhitespace}\printindex
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tikzpingus/tikzpingus-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/makeindex/tikzpingus/indexstyle.ist
===================================================================
--- trunk/Master/texmf-dist/makeindex/tikzpingus/indexstyle.ist	                        (rev 0)
+++ trunk/Master/texmf-dist/makeindex/tikzpingus/indexstyle.ist	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,51 @@
+% comment - in case of need :D
+heading_prefix "\n% Header (guard)
+  \\ifcsname needspace\\endcsname \\needspace{3\\baselineskip}\\fi
+  \\ifcsname tikz\\endcsname
+  \\def\\ledx at head#1{\\tikz{\\node[text width=3cm,align=center] (hr)at(0,0){\\textbf{#1}};\\draw[rounded corners=3pt,thick,line cap=round]([yshift=-.125cm]hr.north west)|-(hr.north east)--++(0,-.125cm);\\draw[rounded corners=2.5pt,thick,line cap=round] ([yshift=.125cm]hr.south west)|-(hr.south east)--++(0,.125cm);}}
+  \\else\\let\\ledx at head\\textbf\\fi\\medskip\\par\\color{black}{\\centering\\ledx at head{"
+heading_suffix "}\\nopagebreak\\medskip\\par}\\nopagebreak "
+headings_flag 1
+preamble "\\begin{theindex}%
+  \\providecommand*\\indexgroup[1]{\\item\\textbf{#1}\\nopagebreak}~\\par\\providecommand\\idxfsize{\\normalsize}\\makeatletter
+\\ifcsname hyperpage\\endcsname
+\\LetLtxMacro\\ledx at h\\hyperpage
+\\newif\\ifledx at rc@
+\\def\\ledx@@s{%
+  \\def\\ledx at fs{Y}\\gdef\\ledx@@u{}\\gdef\\ledx@@b{}%
+  \\def\\hyperpage##1{\\g at addto@macro\\ledx@@u{##1}\\global\\let\\ledx@@b\\ledx@@u\\ledx at h{##1}}}%
+\\def\\ledx@@sl{%
+  \\def\\ledx at fs{Y}\\ledx at rc@true\\global\\let\\ledx@@u\\ledx@@b
+  \\def\\hyperpage##1{\\ifledx at rc@\\def\\ledx@@u{}\\ledx at rc@false\\fi\\g at addto@macro\\ledx@@u{##1}\\ledx at h{##1}}}%
+\\def\\ledx@@d{%
+  \\def\\ledx at fs{}%
+  \\def\\hyperpage##1{\\g at addto@macro\\ledx at cpb{##1}\\ledx at h{##1}}}%
+\\else\\def\\ledx@@s{}\\def\\ledx@@d{}\\fi
+\\def\\ledx@@msub{\\ifx\\ledx at fs\\@empty,\\space\\else\\subsubitem\\ledx@@d\\color{gray}\\footnotesize\\fi}%
+\\def\\ledx at lb@encap#1{\\gdef\\ledx at cpb{}\\sbox\\z@{#1}\\ifx\\ledx@@u\\ledx at cpb\\else\\textsuperscript{(#1)\\kern-.1em}\\fi}
+"
+postamble "\n\n\\end{theindex}\n"
+group_skip "%\n\\indexspace\n"
+numhead_positive "\\small Numbers"
+numhead_negative "\\small Numbers"
+symhead_positive "\\small Symbole"
+symhead_negative "\\small Symbole"
+delim_0 "\\thinspace\\dotfill\\thinspace {"
+delim_1 "\:~~{"
+delim_2 "\\ledx at lb@encap{\\relax "
+item_0 "\n\n \\item\\ledx@@s\\color{black}\\idxfsize "
+item_01 "\n    \\subitem\\ledx@@s\\color{black}\\small "
+item_x1 "\n    \\subitem\\ledx@@sl\\color{black}\\small "
+item_1 "\n    \\subitem\\ledx@@sl\\color{black}\\small "
+item_12 "\n        \\subsubitem\\ledx@@d\\color{gray}\\footnotesize "
+item_x2 "\n        \\subsubitem\\ledx@@d\\color{gray}\\footnotesize "
+item_2  "\\ledx@@msub "
+encap_prefix "\\"
+encap_infix "{"
+encap_suffix "}"
+quote '#'
+actual '?'
+delim_t "}\\relax "
+delim_n ", "
+indent_space "\t\t"
+indent_length 16
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/makeindex/tikzpingus/indexstyle.ist
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,42 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{santahat}{%
+    santa hat/.code             = \pingu at set@extra{santahat}{true}\pingu at color{santahat}{#1}\pgfqkeys{/pingu}{hair=\@pingu at none},
+    santa hat/.default          = pingu at red!87!pingu at black,
+    santa hat second/.code      = \pingu at color{santahat at second}{#1},
+    santa hat bobble/.code      = \pingu at color{santahat at bobble}{#1}
+}{santa hat second={pingu at white!97!\pingu at color@santahat},santa hat bobble={\pingu at color@santahat at second}}
+\def\pingu at draw@ea at santahat{%
+\path (\pingu at name-head-center)+(152:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-santa-right);
+\path (\pingu at name-head-center)+(5:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-santa-left);
+\pingu at layer{middle}[]
+\pingu at block{\pingu at color@santahat at second} (\pingu at name-santa-right) to[out=48,in=132] (\pingu at name-santa-left) to[out=30,in=-45,looseness=1.325] ++(0,3.2mm)
+to[out=135,in=47,looseness=1.025] coordinate[pos=.915] (\pingu at name-santa-ur) coordinate[pos=.055] (\pingu at name-santa-ul) ([yshift=2mm]\pingu at name-santa-right) to[out=240,in=140] cycle;
+\endpingu at layer
+\pingu at layer{background}[]
+\pingu at block{\pingu at color@santahat} (\pingu at name-santa-ur) arc(145:-25:11.85mm and 14.915mm)
+    to[bend right=7] coordinate[pos=.5] (\pingu at name-santa-lc) ++(-1.11mm,.375mm) to[bend right=11] (\pingu at name-santa-ul) to[bend right=15] cycle;
+\pingu at block{\pingu at color@santahat at bobble} (\pingu at name-santa-lc) circle[radius=2.625mm];
+\endpingu at layer
+}
+\pingu at create@extra{santabeard}{%
+    santa beard/.code             = \pingu at set@extra{santabeard}{true}\pingu at color{santabeard}{#1},
+    santa beard/.default          = pingu at white!96!pingu at red!98!pingu at black!92!gray,
+    santa beard string/.code      = \pingu at color{santabeard at string}{#1}
+}{santa beard string=\pingu at color@body at main!85!pingu at black}
+\def\pingu at draw@ea at santabeard{%
+% \coordinate (\pingu at name-santa-beard-center) at ([yshift=1.25mm]\pingu at name-belly-center);
+\pingu at block{\pingu at color@santabeard at string} ([xshift=-.35mm,yshift=.575mm]\pingu at name-head-back-con-right) to[bend right=28,edge node={foreach[count=\i] \l in {0.03,0.085,...,0.992} {coordinate[pos=\l-rand*.015,yshift=-.85pt] (\pingu at name-santa-beard-\i)}}]
+([yshift=.575mm,xshift=.35mm]\pingu at name-head-back-con-left) arc(20:110:.05mm and .15mm) to[bend left=26] ([yshift=.575mm+.15mm,xshift=-.35mm]\pingu at name-head-back-con-right) to[bend right] cycle;
+\ifx\pingu at color@santabeard\@pingu at none\else% to allow for random
+\xdef\@pmaxY{18}\xdef\@pmaxYI{17}%
+\foreach[evaluate=\j as \maxj using int(\@pmaxY-\j),evaluate=\j as \widthred using \j/23pt] \j in {0,...,\@pmaxYI} {
+\foreach[remember=\i as \li (initially 0)] \i in {1,...,\maxj} {
+    \pgfmathsetmacro\@ptmp{94+rand*2.6}
+    \pingu at block{\pingu at color@santabeard!\@ptmp!pingu at black} (\pingu at name-santa-beard-\i) circle [radius=1.85pt-\widthred pt+rand*.35pt];
+    \ifnum\li>0 % make middle of last
+        \path (\pingu at name-santa-beard-\li) -- (\pingu at name-santa-beard-\i) coordinate[pos=.5,yshift=-1.1pt,xshift=.133pt] (\pingu at name-santa-beard-\li); % smoll shift
+    \fi
+}}\fi
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-christmas.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,78 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\newif\if at pingu@x at cloak@wings
+\pingu at create@extra{cloak}{%
+    cloak/.code              = \pingu at set@extra{cloak}{true}\pingu at color{cloak}{#1},
+    cloak/.default           = pingu at bronze,
+    cloak cap/.code          = \pingu at color{cloak at cap}{#1},
+    cloak wings color/.code  = \pingu at color{cloak at wings}{#1},
+    cloak bottom color/.code = \pingu at color{cloak at bottom}{#1},
+    cloak front color/.code  = \pingu at color{cloak at front}{#1},
+    cloak padding/.code      = \def\pingu at x@cloak at padding{#1},
+    cloak wings/.is if       = @pingu at x@cloak at wings,
+    cape/.style              = {/pingu/cloak=#1, /pingu/cloak wings=false,/pingu/cloak front color=\@pingu at none, /pingu/cloak cap=\@pingu at none,/pingu/cloak front color=\@pingu at none},
+    cape/.default            = pingu at bronze,
+}{cloak padding=1.95mm,cloak bottom color=\pingu at color@cloak!90!black,cloak cap=\pingu at color@cloak!98!pingu at black,cloak front color=\pingu at color@cloak!90!white,cloak wings color=\pingu at color@cloak at front!94!pingu at black,cloak wings=true}
+\def\pingu at draw@cloth at cloak@behind{%
+    \pingu at block[bottom color=\pingu at color@cloak at bottom,top color=\pingu at color@cloak]{\pingu at color@cloak} (\pingu at name-bottom-center)++(-\pingu at x@cloak at padding-\pingu at w@half,-.5mm) arc (180:0:{\pingu at x@cloak at padding+\pingu at w@half} and \pingu at one) to[bend left=1] (\pingu at name-wings-side-left) arc(0:180:\pingu at w@half{} and .75mm) to[bend left=1] cycle;
+}
+
+\def\pingu at draw@cloth at cloak@middle{\pingu at block[rounded corners=.7mm]{\pingu at color@cloak at front}
+(\pingu at name-bottom-center)++(-\pingu at x@cloak at padding-\pingu at w@half,-.5mm) arc (180:250:{\pingu at x@cloak at padding+\pingu at w@half} and \pingu at one) to[bend right=6]
+([xshift=1.3mm,yshift=.4mm]\pingu at name-wings-side-right) to[bend right=3] ([yshift=.65mm]\pingu at name-wings-side-right);
+\pingu at block[rounded corners=.7mm]{\pingu at color@cloak at front}
+(\pingu at name-bottom-center)++(\pingu at x@cloak at padding+\pingu at w@half,-.5mm) arc (0:-70:{\pingu at x@cloak at padding+\pingu at w@half} and \pingu at one) to[bend left=6]
+([xshift=-1.3mm,yshift=.4mm]\pingu at name-wings-side-left) to[bend left=3] ([yshift=.65mm]\pingu at name-wings-side-left);}
+
+% TODO: if flags to draw parts
+\def\pingu at draw@cloth at cloak{%
+\scope[rounded corners=.6\p@]
+    % wings
+    \if at pingu@x at cloak@wings
+    \edef\@la{\csname @pingu at wingdown@\@pingu at select@leftwing@ @\endcsname}
+    \ifnum\@la>0 % wing is going inverted up or down / \ => left
+        \pingu at layer{foreground}[]
+        \ifnum\@la>70
+            \pingu at block[right color=\pingu at color@cloak at front,left color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings} (\pingu at name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu at name-wing-left-low) to[bend right=13] (\pingu at name-wing-left-up) to[bend left=3] (\pingu at name-wing-left-start-up) to[bend left] ([xshift=.35mm,yshift=1mm]\pingu at name-wing-left-start);
+            \else % down
+            \pingu at block[right color=\pingu at color@cloak at front,left color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings} (\pingu at name-wing-left-start)++(.5mm,-3.5mm) to[bend left=10] (\pingu at name-wing-left-low) to[bend right=13] (\pingu at name-wing-left-up) to[bend left=3] ([xshift=1mm,yshift=1mm]\pingu at name-wing-left-start-up) to[bend left=4.5] ([xshift=.5mm,yshift=-3.5mm]\pingu at name-wing-left-start);
+        \fi
+        \endpingu at layer
+    \else
+        \ifnum\@la<-90% normal up \ / => left side
+            \pingu at block[upper right=\pingu at color@cloak at wings,lower right=\pingu at color@cloak at front,lower left=\pingu at color@cloak at front,upper left=\pingu at color@cloak at front]{\pingu at color@cloak at wings} ([xshift=.25mm]\pingu at name-wing-left-start-low) to[bend right=14] (\pingu at name-wing-left-low) to[bend left=8] ([yshift=-.5mm]\pingu at name-wing-left-up) to[bend right=17] ([yshift=1.6mm]\pingu at name-wing-left-start-up) to[bend right=13] ([xshift=-.15mm,yshift=.15mm]\pingu at name-waist-left) -- cycle;
+        \else % normal and hugging down => right
+            \pingu at block[top color=\pingu at color@cloak at front,middle color=\pingu at color@cloak,bottom color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings} plot[smooth] coordinates {([xshift=-1.38mm]\pingu at name-wings-side-left) (\pingu at name-wing-left-start-low) ([yshift=.65mm,xshift=-.65mm]\pingu at name-wing-left-low) ([yshift=.65mm,xshift=-.65mm]\pingu at name-wing-left-up) ([xshift=.68mm]\pingu at name-wings-side-left) ([xshift=-1.38mm]\pingu at name-wings-side-left)};
+        \fi
+    \fi
+    \edef\@ra{\csname @pingu at wingdown@\@pingu at select@rightwing@ @\endcsname}
+    \ifnum\@ra>0 % wing is going inverted up or down => right
+        \pingu at layer{foreground}[]
+        \ifnum\@ra>70
+            \pingu at block[left color=\pingu at color@cloak at front,middle color=\pingu at color@cloak at front,right color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings} (\pingu at name-wing-right-start-low) to[bend right=10] (\pingu at name-wing-right-low) to[bend left=13] (\pingu at name-wing-right-up) to[bend right=3] (\pingu at name-wing-right-start-up) -- ++(-.25mm,0mm) to[bend right=11] cycle;
+        \else
+            \pingu at block[left color=\pingu at color@cloak at front,middle color=\pingu at color@cloak at front,right color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings}  ([xshift=1mm,yshift=-1mm]\pingu at name-wing-right-start-low) to[bend right=10] (\pingu at name-wing-right-low) to[bend left=13] (\pingu at name-wing-right-up) to[bend right=3] ([xshift=-1mm,yshift=1mm]\pingu at name-wing-right-start-up) to[bend right=4.5] ([xshift=-.5mm,yshift=-3.5mm]\pingu at name-wing-right-start);
+        \fi
+        \endpingu at layer
+    \else
+        \ifnum\@ra<-90% normal up => right side
+            \pingu at block[upper left=\pingu at color@cloak at wings,lower left=\pingu at color@cloak at front,lower right=\pingu at color@cloak at front,upper right=\pingu at color@cloak at front]{\pingu at color@cloak at wings} ([xshift=.25mm]\pingu at name-wing-right-start-low) to[bend left=14] (\pingu at name-wing-right-low) to[bend right=8] ([yshift=-.5mm]\pingu at name-wing-right-up) to[bend left=17] ([yshift=1.6mm]\pingu at name-wing-right-start-up) to[bend left=13] ([xshift=.15mm,yshift=.15mm]\pingu at name-waist-right) -- cycle;
+        \else % normal and hugging down => left
+            \pingu at block[top color=\pingu at color@cloak at front,middle color=\pingu at color@cloak at front,bottom color=\pingu at color@cloak at wings]{\pingu at color@cloak at wings} plot[smooth] coordinates {([xshift=1.38mm]\pingu at name-wings-side-right) (\pingu at name-wing-right-start-low) ([yshift=.85mm,xshift=-.35mm]\pingu at name-wing-right-low) ([yshift=.85mm,xshift=.35mm]\pingu at name-wing-right-up) ([xshift=-.68mm]\pingu at name-wings-side-right) ([xshift=1.38mm]\pingu at name-wings-side-right)};
+        \fi
+    \fi
+\fi
+    % cape
+    \pingu at block[rounded corners=.8mm]{\pingu at color@cloak at cap} ([xshift=.85mm,yshift=-2.75mm]\pingu at name-wing-left-start) to[bend left=4] ([xshift=-.45mm,yshift=-.65mm]\pingu at name-wings-side-left) to[bend right=3]
+    (\pingu at name-head)
+    to[bend right=3]
+    ([xshift=.4mm,yshift=-.65mm]\pingu at name-wings-side-right) [rounded corners=.15mm] to[bend left=3] ([xshift=-.85mm,yshift=-2.75mm]\pingu at name-wing-right-start)
+    to[bend left=8]
+    ([xshift=-.66mm]\pingu at name-wings-side-right)
+    [rounded corners=.15mm]
+    to[bend left=32] ++(\pingu at w@half+.66mm,\pingu at w@half+1.2\pingu at one)
+    to[bend left=32] ++(\pingu at w@half+.66mm,-\pingu at w@half-1.2\pingu at one)
+    to[bend left=8] cycle;
+\endscope
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-cloak.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,90 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{devilhorns}{%
+    devilhorns/.forward to = /pingu/devil horns,
+    devil-horns/.forward to = /pingu/devil horns,
+    devil horns/.code    = \pingu at set@extra{devilhorns}{true}\pingu at color{devilhorns}{#1},
+    devil horns/.default = pingu at purple,
+    devil horns b/.code  = \pingu at color{devilhorns at b}{#1},
+    devilhorns b/.forward to = /pingu/devil horns b,
+    devil-horns b/.forward to = /pingu/devil horns b
+}{devil horns b=\pingu at color@devilhorns}
+
+\pgfmathsetmacro\pingu at devilhorns@baseang at l{90-360*(1-\pinguanglehl)}
+\pgfmathsetmacro\pingu at devilhorns@baseang at r{90-360*(1-\pinguanglehr)}
+\def\pingu at devilhorns@baseoff{12}
+\def\pingu at devilhorns@yshift{.65mm}
+\def\pingu at draw@ea at devilhorns{%
+    % 90 - 360*.06
+    \pingu at block{\pingu at color@devilhorns} ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-left) arc (\pingu at devilhorns@baseang at l:\pingu at devilhorns@baseang at l-\pingu at devilhorns@baseoff:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-devilhorns-left-goal) to[out=32,in=-32,looseness=.9] ++(.3mm,2.65mm) to[bend left=17] ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-left) -- cycle;
+    \pingu at block{\pingu at color@devilhorns} ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-left) to [bend right=38] (\pingu at name-devilhorns-left-goal) to[bend right=30] ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-left) -- cycle;
+    \pingu at block{\pingu at color@devilhorns at b} ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-right) arc (\pingu at devilhorns@baseang at r:\pingu at devilhorns@baseang at r+\pingu at devilhorns@baseoff:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-devilhorns-right-goal) to[out=148,in=-148,looseness=.9] ++(-.3mm,2.65mm) to[bend right=17] ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-right) -- cycle;
+    \pingu at block{\pingu at color@devilhorns at b} ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-right) to [bend left=38] (\pingu at name-devilhorns-right-goal) to[bend left=30] ([yshift=-\pingu at devilhorns@yshift]\pingu at name-head-right) -- cycle;
+}
+
+% wip hack
+\colorlet{pingu at devil@ring}{pingu at black}
+\def\pingu at devil@x at opacity{.75}
+\@pingu at eyes@s{devil}{%
+\pingu at layer{foreground}[]
+    \pingu at block{pingu at devil@ring} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=.1535cm, y radius=.1575cm];
+    \pingu at block{\pingu at color@eye at second@left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=.1325cm, y radius=.1375cm];
+    \fill[\pingu at color@eye at left,/pingu/@glow] (\pingu at name-eye-left) circle [radius=1.325mm];
+    \pingu at block[fill opacity=\pingu at devil@x at opacity]{\pingu at color@eye at left} (\pingu at name-eye-left)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
+    \fill[/pingu/@glow,fill=\pingu at color@eye at left!20!pingu at yellow!15!pingu at white] (\pingu at name-eye-left)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
+    \fill[\pingu at color@eye at left!20!pingu at yellow!7!pingu at white] (\pingu at name-eye-left) circle [radius=.5pt]; %
+    \pingu at block{pingu at white} (\pingu at name-eye-left) circle [radius=.15pt];
+\endpingu at layer
+}{%
+\pingu at layer{foreground}[]
+    \pingu at block{pingu at black} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate (\pingu at name-eye-right) ellipse [x radius=.1535cm, y radius=.1575cm];
+    \pingu at block{\pingu at color@eye at second@right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate (\pingu at name-eye-right) ellipse [x radius=.1325cm, y radius=.1375cm];
+    \fill[\pingu at color@eye at right,/pingu/@glow] (\pingu at name-eye-right) circle [radius=1.325mm];
+    \pingu at block[fill opacity=.75]{\pingu at color@eye at right} (\pingu at name-eye-right)++(0,.36) to[bend right=58] ++(.36,-.36) to[bend right=58] ++(-.36,-.36) to[bend right=58] ++(-.36,.36) to[bend right=58] cycle;
+    \fill[/pingu/@glow,fill=\pingu at color@eye at right!20!pingu at yellow!15!pingu at white] (\pingu at name-eye-right)++(0,.10) to[bend right=60] ++(.10,-.10) to[bend right=60] ++(-.10,-.10) to[bend right=60] ++(-.10,.10) to[bend right=60] cycle;
+    \fill[\pingu at color@eye at right!20!pingu at yellow!7!pingu at white] (\pingu at name-eye-right) circle [radius=.5pt]; %
+    \pingu at block{pingu at white} (\pingu at name-eye-right) circle [radius=.15pt];
+\endpingu at layer
+}[pingu at purple]
+
+\pingu at create@wing at extra{devilfork}{%
+    devil fork \@lr/.code         = {\pingu at set@extra{devilfork\@lr}{true}\pingu at color{devilfork\@lr}{##1}},
+    devil fork \@lr/.default      = pingu at red,
+    devil fork \@lr\space second/.code= \pingu at color{devilfork\@lr @second}{##1},
+    devil fork \@lr\space length/.code =\expandafter\def\csname pingu at devilfork@\@lr @length\endcsname{##1}
+}{devil fork \@lr\space length=20mm,devil fork \@lr\space second=pingu at bronze!10!black}
+\def\pingu at draw@wi at devilfork#1{%
+    \pingu at setup@wing{devilfork}{#1}%
+\scope[rotate around={\@angle:(\pingu at name-wing-#1)}]
+    \pingu at block{\csname pingu at color@devilfork#1 at second\endcsname} (\pingu at name-wing-#1)++(\@sidesign*-.2mm,-7mm) -- ++(0,\csname pingu at devilfork@#1 at length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu at name-devilfork-#1-top) -- ++(0,-\csname pingu at devilfork@#1 at length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+    \pingu at block{\@col} ([yshift=4mm]\pingu at name-devilfork-#1-top) to[out=240,in=90] ++(-.65mm,-4mm) to[out=180,in=-60] ++(-1mm,5.5mm) to[out=240,in=90] ++(-.65mm,-5.9mm) to[bend right] ++(4.4mm,0) to[out=90,in=-60] ++(-.65mm,5.9mm) to[out=240,in=0] ++(-1mm,-5.5mm) to[out=90,in=-60] cycle;
+\endscope
+}
+
+\pingu at create@extra{devilwings}{%
+    devilwings/.forward to    = /pingu/devil wings,
+    devil-wings/.forward to   = /pingu/devil wings,
+    devil wings/.code         = \pingu at set@extra{devilwings}{true}\pingu at color{devilwings}{#1},
+    devil wings/.default      = pingu at black,
+    devil wings b/.code       = \pingu at color{devilwings at b}{#1},
+    devilwings b/.forward to  = /pingu/devil wings b,
+    devil-wings b/.forward to = /pingu/devil wings b
+}{devil wings b=\pingu at color@devilwings}
+
+% taken over and adapted from the old penguins
+% lower wing based on https://tex.stackexchange.com/a/464828
+\def\@pingu at devilwings@lower at wing@code{(0,0.2) -- (0,1.4) -- (-2,1.4) .. controls (-4,0.8) .. (-4.3,0.2) .. controls (-4.48,0.08) .. (-4.5,-0.15) .. controls (-4.9,-0.5) and (-4.9,-0.7) .. (-4.7,-0.9) .. controls (-4.7,-1) .. (-4.6,-1.1) .. controls (-4.9,-1.8) .. (-4.2,-2) -- (-4,-2.4) .. controls (-4.1,-3) .. (-3.6,-3.1) -- (-3.25,-3.7) .. controls (-3.5,-4.5) .. (-4.1,-5.4) .. controls (-4.2,-5.9) and (-3.6,-5.9) .. (-3.5,-5.4) .. controls (-3.55,-5.1) and (-3.4,-4.8) .. (-3,-4.1) -- (-2.6,-4.1) .. controls (-2.35,-4.35) .. (-2,-4.2) .. controls (-1.75,-4.6) and (-1.25,-4.6) .. (-1.25,-3.90) .. controls (-0.9,-4) .. (-0.6,-2.8) -- (-0.3,-1) -- (0,0.2)}
+
+\def\pingu at draw@eb at devilwings{%
+\pgfonlayer{background}
+    \scope[scale=0.225,shift={(\pingu at name-head-back-con-right)}]
+       \pingu at block[thick,rounded corners=.75mm]{\pingu at color@devilwings} \@pingu at devilwings@lower at wing@code;
+       \pingu at block[thick]{\pingu at color@devilwings} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
+    \endscope
+    \scope[scale=0.225,shift={(\pingu at name-head-back-con-left)},xscale=-1]
+       \pingu at block[thick,rounded corners=0.75mm]{\pingu at color@devilwings at b} \@pingu at devilwings@lower at wing@code;
+       \pingu at block[thick]{\pingu at color@devilwings at b} (0,1) -- (0,2.2) [rounded corners=5mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
+    \endscope
+\endpgfonlayer
+}


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-devil.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,48 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\@pingu at eyes@s{sad}{%
+    \path (\pingu at name-eye-back-left)++(\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-left);
+    \pingu at block{\pingu at color@eye at left} (\pingu at name-eye-left)++(15:.1225cm and .1275cm) arc (15:-245:.1225cm and .1275cm) to[out=-45,in=175] cycle;
+}{%
+    \path (\pingu at name-eye-back-right)++(-\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-right);
+    \pingu at block{\pingu at color@eye at right} (\pingu at name-eye-right)++(165:.1225cm and .1275cm) arc (165:425:.1225cm and .1275cm) to[out=225,in=5] cycle;
+}
+
+\@pingu at eyes@s{angry}{%
+    \path (\pingu at name-eye-back-left)++(\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-left);
+    \pingu at block{\pingu at color@eye at left} (\pingu at name-eye-left) ellipse [x radius=.1225cm, y radius=.1275cm];
+    \pingu at block{\pingu at color@body at front} (\pingu at name-eye-left) ++(120:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
+}{%
+    \path (\pingu at name-eye-back-right)++(-\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-right);
+    \pingu at block{\pingu at color@eye at right} (\pingu at name-eye-right) ellipse [x radius=.1225cm, y radius=.1275cm];
+    \pingu at block{\pingu at color@body at front} (\pingu at name-eye-right) ++(60:.1225cm and .1275cm) ellipse [x radius=1.5mm,y radius=.5mm];
+}
+
+\@pingu at bill@s{angry}{%
+\pingu at block{\pingu at color@bill} (\pingu at name-bill)++(-.19cm,0)
+    to[out=-90,in=170] ++(1.9mm,-2.25mm) coordinate (\pingu at name-bill-bottom)
+    to[out=10,in=-90] ++(1.9mm,2.25mm)
+    to[bend right=.25cm] cycle;
+}
+
+\pingu at create@extra{blush}{%
+    blush/.code              = \pingu at set@extra{blush}{true}\pingu at color{blush}{#1},
+    blush/.default           = pingu at red,
+    blush second/.code       = \pingu at color{blush at second}{#1},
+    blush opacity/.code      = \def\pingu at x@blush at opacity{#1},
+}{blush opacity=.2525,blush second=\pingu at color@blush}
+\def\pingu at draw@eb at blush{%
+    \pingu at block[/pingu/@glow,opacity=\pingu at x@blush at opacity]{\pingu at color@blush} ([yshift=-2.7mm,xshift=-1.85mm]\pingu at name-eye-right) ellipse [x radius=2.66mm,y radius=2.25mm];
+    \pingu at block[/pingu/@glow,opacity=\pingu at x@blush at opacity]{\pingu at color@blush at second} ([yshift=-2.7mm,xshift=1.85mm]\pingu at name-eye-left) ellipse [x radius=2.66mm,y radius=2.25mm];
+}
+
+\@pingu at eyes@s{hearts}{%
+    \path (\pingu at name-eye-back-left)++(\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-left);
+    \pingu at block[rounded corners=0pt]{\pingu at color@eye at left} ([yshift=.3mm]\pingu at name-eye-left) arc(0:180:.065cm)
+    to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
+}{%
+    \path (\pingu at name-eye-back-right)++(-\pingu at eye@shift,.75mm) coordinate (\pingu at name-eye-right);
+    \pingu at block{\pingu at color@eye at right} ([yshift=.3mm]\pingu at name-eye-right) arc(0:180:.065cm)
+    to[out=270,in=110] ++(.13cm,-.2cm) to[out=70,in=270] ++(.13cm,.2cm) arc (0:180:.065cm) -- cycle;
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-emotions.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,45 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@wing at extra{flag}{%
+    flag \@lr/.code         = {\pingu at set@extra{flag\@lr}{true}\pingu at color{flag\@lr}{##1}},
+    flag \@lr/.default      = pingu at purple,
+    flag \@lr\space pole/.code    = \pingu at color{flag\@lr @pole}{##1},
+    flag \@lr\space code/.code    = \expandafter\def\csname pingu at flag@\@lr @code\endcsname{##1},
+    flag \@lr\space bobble/.code  = {\pingu at color{flag\@lr @bobble}{##1}},
+    pride flag \@lr/.style  = {%
+        /pingu/flag \@lr\space code = {%
+            \noexpand\node[/pingu/@flag at first,/pingu/@flag={{rgb:yellow,1;red,5;magenta,2;black,1}}{1.9mm}] (a) at (0,0) {};
+            \noexpand\node[below,/pingu/@flag={{rgb:yellow,5;red,5;green,1;white,1}}{1.9mm}] (b) at (a.south) {};
+            \noexpand\node[below,/pingu/@flag={yellow}{1.9mm}] (c) at (b.south) {};
+            \noexpand\node[below,/pingu/@flag={{rgb:blue,1;cyan,1;green,4;black,2}}{1.9mm}] (d) at (c.south) {};
+            \noexpand\node[below,/pingu/@flag={{rgb:magenta,3;blue,5;cyan,4;black,3}}{1.9mm}] (e) at (d.south) {};
+            \noexpand\node[below,/pingu/@flag={{rgb:red,2;magenta,2;blue,5}}{1.9mm}] (f) at (e.south) {};
+        }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
+    },%
+    @flag/.style 2 args={tape bend height=.5mm,shape=tape,minimum height=##2, minimum width=15mm,outer sep=\z@,inner sep=\z@,fill=##1,draw=##1,rotate=\noexpand\@angle},
+    pride flag \@lr/.default = pingu at bronze,%
+    german flag \@lr/.style  = {%
+    /pingu/flag \@lr\space code = {%
+            \noexpand\node[/pingu/@flag at first,/pingu/@flag={black}{3.33mm}] (a) at (0,0) {};
+            \noexpand\node[below,/pingu/@flag={red}{3.33mm}] (b) at (a.south) {};
+            \noexpand\node[below,/pingu/@flag={yellow}{3.33mm}] (c) at (b.south) {};
+        }, /pingu/flag \@lr, /pingu/flag \@lr\space pole={##1}%
+    },%
+    german flag \@lr/.default = pingu at bronze%
+}{flag \@lr\space bobble=pingu at bronze, flag \@lr\space pole=pingu at bronze, flag \@lr\space code = {%
+    \noexpand\node[/pingu/@flag at first,/pingu/@flag={\noexpand\@col}{9.75mm}] (a) at (0,0) {};
+}}
+\def\pingu at draw@wi at flag#1{%
+    \pingu at setup@wing{flag}{#1}%
+\scope[rotate around={\@angle:(\pingu at name-wing-#1)}]
+    % NOTE: not full foreground if placed under the wing
+    \pingu at layer{foreground}[shift={(\pingu at name-wing-#1)},shift={(\@sidesign*.15mm,17.5mm-3.5\p@)}]
+        \if at pingu@wing at item@side at left@\pgfqkeys{/pingu}{@flag at first/.style={below right}}\else\pgfqkeys{/pingu}{@flag at first/.style={below left}}\fi
+        \csname pingu at flag@#1 at code\endcsname
+        \pingu at block[thick]{\csname pingu at color@flag#1 at pole\endcsname}(\pingu at name-wing-#1)++(\@sidesign*-.15mm,3mm) -- ++(0,13.65mm) -| ++(\@sidesign*.6mm,-13.65mm) -- cycle;
+    \endpingu at layer
+    \pingu at block[thick]{\csname pingu at color@flag#1 at pole\endcsname}(\pingu at name-wing-#1)++(\@sidesign*-.15mm,-3mm) -- ++(0,20mm) arc(180:0:\@sidesign*.3mm and .375mm) -- ++(0,-20mm) arc(360:180:\@sidesign*.3mm and .375mm) -- cycle;
+    \pingu at block{\csname pingu at color@flag#1 at bobble\endcsname} (\pingu at name-wing-#1)++(\@sidesign*.15mm,17.5mm) circle [radius=2.15\p@];
+\endscope
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-flags.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,100 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{tie}{%
+    tie/.code         = \pingu at set@extra{tie}{true}\pingu at color{tie}{#1},
+    tie/.default      = pingu at green,
+    tie knot/.code    = \pingu at color{tie at knot}{#1},
+    tie length/.code  = \def\pingu at x@tie at length{#1},
+    tie offset/.code  = \def\pingu at x@tie at offset{#1},
+    tie width/.code   = \def\pingu at x@tie at width{#1},
+    tie pattern/.code = \def\pingu at x@tie at pattern{#1},
+    tie dots/.style   = {%
+        tie pattern={%
+            \pingu at block[postaction={pattern={Dots[angle=40,distance=1.5pt,radius=.35pt]},pattern color=#1}]{\pingu at color@tie} \pingupathxtie;
+            \pingu at block[postaction={pattern={Dots[angle=-30,distance=1.45pt,radius=.35pt@]},pattern color=#1}]{\pingu at color@tie at knot} \pingupathxtieknot;
+        }%
+    },
+    tie dots/.default={pingu at white}%
+}{% defaults
+    tie length=.625\pingu at side@h at half,  tie offset=.399cm,%
+    tie knot=\pingu at color@tie!92!black, tie width=.21cm,%
+    tie pattern={%
+        \pingu at block{\pingu at color@tie} \pingupathxtie;
+        \pingu at block{\pingu at color@tie at knot} \pingupathxtieknot;
+    }%
+}
+\def\pingupathxtie{[rounded corners=.15mm] (\pingu at name-tie-start)++(-.4mm,-.25mm) -- ++(-\pingu at x@tie at width/2, -\pingu at x@tie at length+.125cm) -- ++(\pingu at x@tie at width/2+.4mm,-.125cm) -- ++(\pingu at x@tie at width/2+.4mm,.125cm) -- +(-\pingu at x@tie at width/2, \pingu at x@tie at length-.125cm) -- cycle}
+\def\pingupathxtieknot{[rounded corners=.25mm] (\pingu at name-tie-start)++(-.095cm-.02*\pingu at x@tie at width,\z@) -- ++(.3mm,-.15cm-.01*\pingu at x@tie at width) -- ++(.13cm+.04*\pingu at x@tie at width,\z@) -- ++(.3mm,.15cm+.01*\pingu at x@tie at width) -- cycle}
+\def\pingu at draw@eb at tie{%
+    \path (\pingu at name-bill)++(0,-\pingu at x@tie at offset) coordinate(\pingu at name-tie-start);
+    \pingu at x@tie at pattern
+}
+
+\pingu at create@extra{bowtie}{%
+    bowtie/.forward to         = /pingu/bow tie,
+    bow-tie/.forward to        = /pingu/bow tie,
+    bow tie/.code              = \pingu at set@extra{bowtie}{true}\pingu at color{bowtie}{#1},
+    bow tie/.default           = pingu at blue,
+    bow tie b/.code            = \pingu at color{bowtie at b}{#1},
+    bowtie b/.forward to         = /pingu/bow tie b,
+    bow-tie b/.forward to        = /pingu/bow tie b,
+    bowtie offset/.forward to  = /pingu/bow tie offset,
+    bow-tie offset/.forward to = /pingu/bow tie offset,
+    bow tie offset/.code       = \def\pingu at x@bowtie at offset{#1},
+    bowtie knot/.forward to    = /pingu/bow tie knot,
+    bow-tie knot/.forward to   = /pingu/bow tie knot,
+    bow tie knot/.code         = \pingu at color{bowtie at knot}{#1},
+}{% defaults
+    bow tie knot=\pingu at color@bowtie!92!black,bow tie offset=.315cm,%
+    bow tie b=\pingu at color@bowtie%
+}
+
+\def\pingupathxbowtieknot{[rounded corners=.25mm] (\pingu at name-bow-tie-start)++(-.0625cm,-.35mm) to[bend right=10] ++(.125cm,0) -- ++(0,-.13cm) to[bend right=10] ++(-.125cm, 0) -- cycle}
+\def\pingupathxbowtieleft{[rounded corners=.25mm]  (\pingu at name-bow-tie-start)++(-.15mm,-.06cm) to[out=155,in=-5] ++(-.25cm,.065cm) to[bend right=15] ++(0,-.21cm) to[in=-155,out=5] ++(.25cm,.065cm) -- cycle}
+\def\pingupathxbowtieright{[rounded corners=.25mm]  (\pingu at name-bow-tie-start)++(.15mm,-.06cm) to[out=25,in=-175] ++(.25cm,.065cm) to[bend left=15] ++(0,-.21cm) to[in=-25,out=175] ++(-.25cm,.065cm) -- cycle}
+\def\pingu at draw@eb at bowtie{%
+    \path (\pingu at name-bill)++(0,-\pingu at x@bowtie at offset) coordinate(\pingu at name-bow-tie-start);
+    \pingu at block{\pingu at color@bowtie} \pingupathxbowtieleft;
+    \pingu at block{\pingu at color@bowtie at b} \pingupathxbowtieright;
+    \pingu at block{\pingu at color@bowtie at knot} \pingupathxbowtieknot;
+}
+
+\newif\if at pingu@x at pants@bands
+\pingu at create@extra{pants}{%
+    pants/.code    	               = \pingu at set@extra{pants}{true}\pingu at color{pants}{#1},
+    pants/.default                 = pingu at red,
+    pants bands/.is if             = @pingu at x@pants at bands,
+    pants button left/.code        = \pingu at color{pants at button@left}{#1},
+    pants button right/.code       = \pingu at color{pants at button@right}{#1},
+    pants buttons/.style           = {/pingu/pants button left={#1}, /pingu/pants button right={#1}},
+    pants button left shade/.code  = \pingu at color{pants at button@left at shade}{#1},
+    pants button right shade/.code = \pingu at color{pants at button@right at shade}{#1},
+    pants buttons shade/.style     = {/pingu/pants button left shade={#1}, /pingu/pants button right shade={#1}},
+    pants without buttons/.forward to=/pingu/pants no buttons,
+    pants no buttons/.style        = {/pingu/pants buttons=\@pingu at none, /pingu/pants buttons shade=\@pingu at none},
+    pants extra height/.code = \def\pingu at x@pants at extra@height{#1},
+}{pants extra height=1.5mm,pants buttons=pingu at black,pants button left shade=\pingu at color@pants at button@left!70!white,pants button right shade=\pingu at color@pants at button@right!70!white}
+
+\def\pingu at draw@eb at pants{%
+\pingu at block[rounded corners=\p@]{\pingu at color@pants} ([xshift=.85mm,yshift=\pingu at x@pants at extra@height]\pingu at name-waist-right) coordinate(@tmp) to[bend right=6] ([xshift=-.85mm,yshift=\pingu at x@pants at extra@height]\pingu at name-waist-left) coordinate(@tmpb) -- ++(0,-\pingu at x@pants at extra@height) arc(180:270:.85mm and 2.25mm) to[bend left=\pingu at bend] (\pingu at name-bottom-center-|\pingu at name-waist-left) to[bend left=15] ([yshift=-.15mm]\pingu at name-bottom-center) to[bend left=15] (\pingu at name-bottom-center-|\pingu at name-waist-right) to[bend left=6] ([yshift=-2.5mm]\pingu at name-waist-right) arc (-90:0:.85mm and 2.25mm) -- cycle;
+\if at pingu@x at pants@bands
+\pingu at layer{middle}[]
+% draw stripes
+\scope
+\clip \pingu at path@lowerpingu;
+\pingu at block{\pingu at color@pants} (@tmp)++(.55mm,-\pingu at one) to[bend right=3] ([yshift=1.65mm]\pingu at name-wings-side-right) -- ++(-.25mm,-.25mm) to[bend left=3] ([yshift=-\pingu at one]@tmp) -- cycle;
+\pingu at block{\pingu at color@pants} (@tmpb)++(-.55mm,-\pingu at one) to[bend left=3] ([yshift=1.65mm]\pingu at name-wings-side-left) -- ++(.25mm,-.25mm) to[bend right=3] ([yshift=-\pingu at one]@tmpb) -- cycle;
+\endscope
+\fi
+\pingu at block{\pingu at color@pants at button@right}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm];
+\pingu at block{\pingu at color@pants at button@left}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm];
+\pingu at block[even odd rule]{\pingu at color@pants at button@right at shade}(@tmp)++(.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
+\pingu at block[even odd rule]{\pingu at color@pants at button@left at shade}(@tmpb)++(-.25mm,-.25mm)circle[radius=.7mm] circle[radius=.615mm];
+\@for\i:={0,90,180,270}\do{
+    \pingu at block{\pingu at color@pants at button@right at shade} (@tmp)++(.25mm,-.25mm)++(\i:.
+    35mm) circle[radius=.1mm];
+    \pingu at block{\pingu at color@pants at button@left at shade} (@tmpb)++(-.25mm,-.25mm)++(\i:.35mm) circle[radius=.1mm];
+}%
+\if at pingu@x at pants@bands \endpingu at layer \fi
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-formal.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,121 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{cakehat}{%
+  cake-hat/.code          = \pingu at set@extra{cakehat}{true}\pingu at color{cakehat}{#1},
+  cake-hat/.default       = pingu at white!92!\pingu at color@cakehat at top,
+  cake-hat top/.code      = \pingu at color{cakehat at top}{#1},
+  cake-hat shade/.code    = \pingu at color{cakehat at shade}{#1},
+  cake-hat candle/.code   = \pingu at color{cakehat at candle}{#1},
+  cake-hat candle fire/.code   = \pingu at color{cakehat at candle@fire}{#1},
+  cake-hat candle fire 2/.code   = \pingu at color{cakehat at candle@fire at b}{#1},
+  cake-hat candle fire 3/.code   = \pingu at color{cakehat at candle@fire at c}{#1},
+  cake-hat candle wick/.code   = \pingu at color{cakehat at candle@wick}{#1},
+  cake-hat candle shade/.code   = \pingu at color{cakehat at candle@shade}{#1},
+  cake-hat candle back/.code = \pingu at color{cakehat at candle@back}{#1},
+  cake-hat outline/.code  = \pingu at color{cakehat at outline}{#1},
+  cake-hat outline width/.code  = \def\pingu at x@cakehat at outline@w{#1},
+  cake-hat position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@cakehat at angle{#1}\def\pingu at x@cakehat at xshift{#2}\def\pingu at x@cakehat at yshift{#3}\def\pingu at x@cakehat at scale{#4}}
+}{cake-hat position={-9:(1mm,0mm)1},cake-hat outline=pingu at black!80!\pingu at color@cakehat,cake-hat outline width=.25pt,cake-hat top=pingu at purple,cake-hat candle=pingu at purple!60!pingu at black,cake-hat candle back=\pingu at color@cakehat at candle!85!black,cake-hat candle wick=pingu at black,cake-hat candle fire=pingu at red,cake-hat candle fire 2=\pingu at color@cakehat at candle@fire!50!yellow,cake-hat candle fire 3=\pingu at color@cakehat at candle@fire at b!50!white,cake-hat shade=gray,cake-hat candle shade=gray!80!\pingu at color@cakehat at candle@back}
+
+\def\pingu at p@cake at outline{(-6.25mm,-.25cm) to[bend left=2] (\pingu at name-cake-tl) arc (180:0:1.375cm/2+.01mm and 1.41mm) to[bend left=2] ++(0,-3.125mm*.97) to[bend left=20] (-6mm,-.26cm) -- cycle}
+\def\pingu at draw@ea at cakehat{%
+\scope[rotate around={\pingu at x@cakehat at angle:(\pingu at name-head-top)},%
+shift={(\pingu at name-head-top)},
+shift={(\pingu at x@cakehat at xshift,\pingu at x@cakehat at yshift)},
+scale=\pingu at x@cakehat at scale]
+  \pingu at block{\pingu at color@cakehat} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] coordinate[pos=.97] (\pingu at name-cake-tl) ++(0,3.125mm) to[bend right=20]
+    ++(1.375cm,0) to[bend left=2] coordinate[pos=.03] (\pingu at name-cake-tr) ++(0,-3.125mm) to[bend left=20] (-6mm,-.26cm) -- cycle;
+  \pingu at block[fill opacity=.1]{\pingu at color@cakehat at shade} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend right=20]
+    ++(1.375cm,0) to[bend right=2] ++(0,3.125mm) [sharp corners] to[bend left=20] (-6.25mm,-.225cm) [rounded corners=.2mm] -- cycle;
+  \path (\pingu at name-cake-tl) -- (\pingu at name-cake-tr) coordinate[pos=.5] (\pingu at name-cake-tc);
+  % cake side
+  \scope
+  \clip\pingu at p@cake at outline;
+  \path (\pingu at name-cake-tl) arc (180:360:1.375cm/2+.01mm and 1.41mm) foreach[count=\i] \a in {0,.19,.295,.375,.485,.625,.72,.85,1} {coordinate[pos=\a] (\pingu at name-cake-\i)};
+  \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-1) ellipse [x radius=.255mm,y radius=2mm];
+  \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-9) ellipse [x radius=.265mm,y radius=1.45mm];
+  \foreach \i in {2,...,9} {
+    \pgfmathsetmacro\@tmprand{rand}
+    \pingu at draw[opacity=.5]{gray} (\pingu at name-cake-\i)++(-.02mm,0) to[bend left=1] ++(+.145mm,{-1.075mm-(\@tmprand+.15)*.5125mm}) arc(370:300:.145mm);
+    \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-\i)++(0,.1mm) -- ++(-.125mm,0) to[bend left=1] ++(0,{-1.2mm-(\@tmprand+.15)*.5125mm}) arc(170:370:.145mm) to[bend right=1] cycle;
+  }
+  \foreach \i in {2,...,9} {
+      \ifnum\i=2\relax
+        \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.5mm) to[bend left=8] ([xshift=-.05mm,yshift=-.25mm]\pingu at name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu at name-cake-\the\numexpr\i-1\relax);
+      \else\ifnum\i=9\relax
+        \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=8] ([xshift=-.05mm,yshift=-.5mm]\pingu at name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu at name-cake-\the\numexpr\i-1\relax);
+      \else
+      \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-\the\numexpr\i-1\relax)++(-.05mm,-.25mm) to[bend left=9.5+2*rand] ([xshift=-.05mm,yshift=-.25mm]\pingu at name-cake-\i) -- ++(0,.33mm) to[bend right=30] (\pingu at name-cake-\the\numexpr\i-1\relax);
+      \fi\fi
+  }
+  \endscope
+  \pingu at block{\pingu at color@cakehat at top} (\pingu at name-cake-tc) ellipse [x radius=1.375cm/2+.01mm, y radius=1.41mm];
+  % outline
+  \pingu at draw[line width=\pingu at x@cakehat at outline@w,rounded corners=.075mm]{\pingu at color@cakehat at outline} \pingu at p@cake at outline;
+% % 3d sides
+%   \pingu at block[rounded corners=.04mm]{\pingu at color@cakehat at top} ([xshift=.1mm,yshift=.125mm]\pingu at name-cake-tl) to[out=246,in=97] ++(-.11mm,-2.125mm) -- ++(.04mm,0) to[bend right=12] (\pingu at name-cake-ttl) -- cycle;
+%   \pingu at block[rounded corners=.09mm]{green} ([xshift=-.1mm]\pingu at name-cake-ttr) to[out=294,in=83] ++(.125mm,-2.125mm) to[bend left=12] ([xshift=-.11mm,yshift=.125mm]\pingu at name-cake-tr) -- cycle;
+  % candle
+  \pingu at block{\pingu at color@cakehat at candle@back} (\pingu at name-cake-tc)++(.8mm,2.66mm) to[bend right=7] ++(-1.1mm,-.1mm) to[bend right=30]++(1.1mm,0) -- cycle;
+  % wick
+  \pingu at draw[very thin]{\pingu at color@cakehat at candle@wick} (\pingu at name-cake-tc)++(.25mm,2mm) to[out=75,in=-95] coordinate[pos=.8] (\pingu at name-wick-1) ++(0,1mm) coordinate(\pingu at name-wick-top);
+  \pingu at block{\pingu at color@cakehat at candle@fire} (\pingu at name-wick-1)++(-.045mm,0) to[out=115,in=240] ++(0,1.5mm) to[out=300,in=65] ([xshift=.045mm]\pingu at name-wick-1) -- cycle;
+  \pingu at block{\pingu at color@cakehat at candle@fire at b} (\pingu at name-wick-1)++(-.045mm,0) to[out=105,in=240] ++(0,1.3mm) to[out=300,in=75] ([xshift=.045mm]\pingu at name-wick-1) -- cycle;
+  \pingu at block{\pingu at color@cakehat at candle@fire at c} (\pingu at name-wick-1)++(-.035mm,0) to[out=95,in=250] ++(0,1.1mm) to[out=290,in=85] ([xshift=.035mm]\pingu at name-wick-1) -- cycle;
+  % front
+  \pingu at block{\pingu at color@cakehat at candle} (\pingu at name-cake-tc)++(.25mm,0) ++(.55mm,0) to[bend left=0.5] ++(0,2.66mm) to[bend left=20] ++(-1.1mm,-.1mm) to[bend right=0.5] ++(0,-2.66mm) to[bend right=20] cycle;
+  \pingu at block[fill opacity=.125]{\pingu at color@cakehat at candle@shade} (\pingu at name-cake-tc)++(-.3mm,-.1mm) to[bend right=20] ++(1.1mm,0) to[bend left=.5] ++(0,2.66mm) to[bend left=15] ++(-1.1mm,-2.5mm) -- cycle;
+  \pingu at block[fill opacity=.225]{\pingu at color@cakehat at candle@shade} (\pingu at name-cake-tc)++(-.3mm,-.1mm) to[bend left=2] ++(1.1mm,-1.1mm) to[bend left=5] ++(1.1mm,0) to[bend left=2] ++(-1.1mm,1.2mm) to[bend left =15] cycle;
+  \pingu at block[fill opacity=.225]{\pingu at color@cakehat at candle@shade} (\pingu at name-cake-tc)++(1.35mm,-1.25mm) circle [radius=.1mm];
+\endscope
+}
+\pingu at create@extra{pumpkinhat}{%
+  pumpkin-hat/.code           = \pingu at set@extra{pumpkinhat}{true}\pingu at color{pumpkinhat}{#1},
+  pumpkin-hat/.default        = pingu at bronze!97!white,
+  pumpkin-hat stalk/.code     = \pingu at color{pumpkinhat at stalk}{#1},
+  pumpkin-hat stalk top/.code = \pingu at color{pumpkinhat at stalk@top}{#1},
+  pumpkin-hat stripe a/.code  = \pingu at color{pumpkinhat at stripe@a}{#1},
+  pumpkin-hat stripe b/.code  = \pingu at color{pumpkinhat at stripe@b}{#1},
+  pumpkin-hat stripe c/.code  = \pingu at color{pumpkinhat at stripe@c}{#1},
+  pumpkin-hat outline/.code   = \pingu at color{pumpkinhat at outline}{#1},
+  pumpkin-hat outline width/.code = \def\pingu at x@pumpkinhat at outline@w{#1},
+  % TODO: jack o lantern?
+  pumpkin-hat position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@pumpkinhat at angle{#1}\def\pingu at x@pumpkinhat at xshift{#2}\def\pingu at x@pumpkinhat at yshift{#3}\def\pingu at x@pumpkinhat at scale{#4}}
+}{pumpkin-hat position={-9:(1.65mm,.25mm)1.05},pumpkin-hat stalk=pingu at green!95!\pingu at color@pumpkinhat!45!pingu at black,pumpkin-hat stalk top=\pingu at color@pumpkinhat at stalk!95!pingu at black,pumpkin-hat stripe a=pingu at black,pumpkin-hat stripe b=\pingu at color@pumpkinhat at stripe@a,pumpkin-hat stripe c=\pingu at color@pumpkinhat at stripe@b,pumpkin-hat outline=pingu at black,pumpkin-hat outline width=1pt}
+
+\def\pingu at pumpkinhat@outerpath{(0,.125cm)++(-60:6.75mm and 5.5mm) arc(-60:86: 6.75mm and 5.5mm) to[bend left=3] ++(-1.75mm,0) arc(95:242:6.75mm and 5.5mm) to[bend left=5] cycle;}
+\def\pingu at draw@ea at pumpkinhat{%
+\scope[rotate around={\pingu at x@pumpkinhat at angle:(\pingu at name-head-top)},%
+shift={(\pingu at name-head-top)},
+shift={(\pingu at x@pumpkinhat at xshift,\pingu at x@pumpkinhat at yshift)},
+scale=\pingu at x@pumpkinhat at scale]
+  % give it a small cut
+  \pingu at block{\pingu at color@pumpkinhat} (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] coordinate[pos=.5] (@pkuc) ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] coordinate[pos=.5] (@pklc) cycle;
+  \pingu at block{\pingu at color@pumpkinhat at stalk} (@pkl) to[bend left=3] (@pkr) to[bend right=8] ++(.85mm,2mm) -- ++(.65mm,0) coordinate[pos=.5] (@pkc) to[bend right=3] cycle;
+  \pingu at block{\pingu at color@pumpkinhat at stalk@top} (@pkc) ellipse[x radius=.65mm/2, y radius=.085mm];
+\scope
+\clip (0,.125cm)++(-60:6.75mm and 5.5mm) coordinate (@pkll) arc(-60:86: 6.75mm and 5.5mm) coordinate (@pkl) to[bend left=3] ++(-1.75mm,0) coordinate (@pkr) arc(95:242:6.75mm and 5.5mm) coordinate (@pklr) to[bend left=5] cycle;
+  \pingu at draw[line cap=round,opacity=.3]{\pingu at color@pumpkinhat at stripe@a} (@pklr) to[bend left=55] (@pkr);
+  \pingu at draw[line cap=round,opacity=.3]{\pingu at color@pumpkinhat at stripe@c} (@pkll) to[bend right=55] (@pkl);
+  \pingu at draw[line cap=round,opacity=.3]{\pingu at color@pumpkinhat at stripe@b} (@pklc) to[bend right=5] (@pkuc);
+\endscope
+\pingu at draw[line join=round,line width=\pingu at x@pumpkinhat at outline@w]{\pingu at color@pumpkinhat at outline} \pingu at pumpkinhat@outerpath;
+\endscope
+}
+
+\pingu at create@wing at extra{lollipop}{%
+  lollipop \@lr/.code         = {\pingu at set@extra{lollipop\@lr}{true}\pingu at color{lollipop\@lr}{##1}},
+  lollipop \@lr/.default      = pingu at green,
+  lollipop \@lr\space handle/.code = \pingu at color{lollipop\@lr @handle}{##1},%
+  lollipop \@lr\space second/.code = \pingu at color{lollipop\@lr @second}{##1}%
+}{lollipop \@lr\space handle=pingu at bronze,lollipop \@lr\space second={\csname pingu at color@lollipop\@lr\endcsname!86!white}}
+
+% #1 wing
+\def\pingu at draw@wi at lollipop#1{%
+    \pingu at setup@wing{lollipop}{#1}%
+    \pingu at draw[thick,rotate around={\@angle:(\pingu at name-wing-#1)}]{\csname pingu at color@lollipop#1 at handle\endcsname}(\pingu at name-wing-#1)++(0,4.75mm) -- ++(0,-6.25mm);
+    \pingu at block[thick,rotate around={\@angle:(\pingu at name-wing-#1)}]{\@col}(\pingu at name-wing-#1)++(0,4.75mm) coordinate (\pingu at name-lollipop-#1-top) circle[radius=1.4mm];
+    \pingu at block[thick,rotate around={\@angle-1:(\pingu at name-lollipop-#1-top)}]{\csname pingu at color@lollipop#1 at second\endcsname} (\pingu at name-lollipop-#1-top) ellipse [x radius=1.57mm, y radius=1.5\p@];
+    \pingu at block[thick,rotate around={\@angle-1:(\pingu at name-lollipop-#1-top)}]{\@col} (\pingu at name-lollipop-#1-top)++(0,.5\p@) ellipse [x radius=1.4mm, y radius=\p@];
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-fun.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,105 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{glasses}{%
+    glasses/.code               = \pingu at set@extra{glasses}{true}\pingu at color{glasses}{#1},
+    glasses/.default            = pingu at black,
+    glasses left fill/.code     = \pingu at color{glasses at fill@l}{#1},
+    glasses right fill/.code    = \pingu at color{glasses at fill@r}{#1},
+    glasses left opacity/.code  = \def\pingu at x@glasses at op@l{#1},
+    glasses right opacity/.code = \def\pingu at x@glasses at op@r{#1},
+    glasses fill/.style         = {/pingu/glasses left fill=#1, /pingu/glasses right fill=#1},
+    glasses opacity/.style      = {/pingu/glasses left opacity=#1, /pingu/glasses right opacity=#1},
+    glasses line width/.code    = \def\pingu at x@glasses at lw{#1},
+    sunglasses/.forward to      = /pingu/sun glasses,
+    glasses bend left/.code     = \def\pingu at x@glasses at bend@l{#1},
+    glasses bend right/.code    = \def\pingu at x@glasses at bend@r{#1},
+    glasses bend/.style         = {/pingu/glasses bend left=#1,/pingu/glasses bend right=#1},
+    sun glasses/.style          = {/pingu/glasses, /pingu/glasses fill=#1},
+    sun glasses/.default        = pingu at black,
+}{glasses line width=1.125\p@,glasses fill=\@pingu at none,glasses opacity=.825,glasses bend left=32.5,glasses bend right=32.5}
+
+\def\pingu at draw@ea at glasses{% fact: 1.33; modified first shift and ht
+    \pingu at block[opacity=\pingu at x@glasses at op@l]{\pingu at color@glasses at fill@l} (\pingu at name-eye-left)++(-2.66mm,1.75mm) to[bend left=8] ++(5.586mm,0) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu at x@glasses at bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] ++(-1.064mm,3.5mm) -- cycle;
+    \pingu at block[opacity=\pingu at x@glasses at op@r]{\pingu at color@glasses at fill@r} (\pingu at name-eye-right)++(2.66mm,1.75mm) to[bend right=8] ++(-5.586mm,0) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu at x@glasses at bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] ++(1.064mm,3.5mm) -- cycle;
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses} [rounded corners=.25mm](\pingu at name-eye-left)++(-2.66mm,1.75mm) coordinate (\pingu at name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) coordinate (\pingu at name-glasses-left-outer) to[out=-80,in=70] ++(-.266mm,-3.6mm) to[bend left=\pingu at x@glasses at bend@l] ++(-4.8545mm,\z@) to[out=135,in=-90] coordinate[pos=.9] (\pingu at name-glasses-left-mid-b) ++(-1.064mm,3.5mm) -- cycle;
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses} [rounded corners=.25mm] (\pingu at name-eye-right)++(2.66mm,1.75mm) coordinate (\pingu at name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) coordinate (\pingu at name-glasses-right-outer) to[out=-100,in=110] ++(.266mm,-3.6mm) to[bend right=\pingu at x@glasses at bend@r] ++(4.8545mm,\z@) to[out=45,in=-90] coordinate[pos=.9] (\pingu at name-glasses-right-mid-b) ++(1.064mm,3.5mm) -- cycle;
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses} (\pingu at name-glasses-right-mid) to[bend right=10] (\pingu at name-glasses-left-mid);
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses} (\pingu at name-glasses-right-mid-b) to[bend left=20] (\pingu at name-glasses-left-mid-b);
+    \scope
+    \clip[use path=\pingu at upperpingu];
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses}
+    (\pingu at name-glasses-right-mid) to[bend right=8] ++(-5.586mm,0) -- ++(-5mm,.5mm);
+    \pingu at draw[line width=\pingu at x@glasses at lw]{\pingu at color@glasses}
+    (\pingu at name-glasses-left-mid) to[bend left=8] ++(5.586mm,0) -- ++(5mm,.5mm);
+    \endscope
+}
+\pingu at create@extra{glassesround}{%
+    glasses round/.code               = \pingu at set@extra{glassesround}{true}\pingu at color{glassesround}{#1},
+    glasses round/.default            = pingu at black,
+    glasses round left fill/.code     = \pingu at color{glassesround at fill@l}{#1},
+    glasses round right fill/.code    = \pingu at color{glassesround at fill@r}{#1},
+    glasses round fill/.style         = {/pingu/glasses round left fill=#1, /pingu/glasses round right fill=#1},
+    glasses round left opacity/.code  = \def\pingu at x@glassesround at op@l{#1},
+    glasses round right opacity/.code = \def\pingu at x@glassesround at op@r{#1},
+    glasses round opacity/.style      = {/pingu/glasses round left opacity=#1, /pingu/glasses round right opacity=#1},
+    glasses round left radius/.code  = \def\pingu at x@glassesround at r@l{#1},
+    glasses round right radius/.code = \def\pingu at x@glassesround at r@r{#1},
+    glasses round radius/.style      = {/pingu/glasses round left radius=#1, /pingu/glasses round right radius=#1},
+    glasses round line width/.code    = \def\pingu at x@glassesround at lw{#1},
+    sunglasses round/.forward to      = /pingu/sun glasses round,
+    sun glasses round/.style          = {/pingu/glasses round, /pingu/glasses round fill=#1},
+    sun glasses round/.default        = pingu at black,
+    % todo: width/radius allow for different
+}{glasses round line width=.75\p@,glasses round fill=\@pingu at none,glasses round opacity=.825,glasses round radius=3.15mm}
+\def\pingu at draw@ea at glassesround{% fact: 1.33; modified first shift and ht
+    \pingu at block[opacity=\pingu at x@glassesround at op@l]{\pingu at color@glassesround at fill@l} (\pingu at name-eye-left) circle [radius=\pingu at x@glassesround at r@l];
+    \pingu at block[opacity=\pingu at x@glassesround at op@r]{\pingu at color@glassesround at fill@r} (\pingu at name-eye-right) circle [radius=\pingu at x@glassesround at r@r];
+    \pingu at draw[line width=\pingu at x@glassesround at lw]{\pingu at color@glassesround} [rounded corners=.25mm](\pingu at name-eye-left) ++(150:\pingu at x@glassesround at r@l) coordinate (\pingu at name-glassesround-left-mid) arc (150:510:\pingu at x@glassesround at r@l);
+    \pingu at draw[line width=\pingu at x@glassesround at lw]{\pingu at color@glassesround} [rounded corners=.25mm] (\pingu at name-eye-right) ++(30:\pingu at x@glassesround at r@r) coordinate (\pingu at name-glassesround-right-mid) arc (30:390:\pingu at x@glassesround at r@r);
+    \pingu at draw[line width=\pingu at x@glassesround at lw]{\pingu at color@glassesround} (\pingu at name-glassesround-left-mid) to[bend right=30] (\pingu at name-glassesround-right-mid);
+    \scope
+    \clip[use path=\pingu at upperpingu];
+    \pingu at draw[line width=\pingu at x@glassesround at lw]{\pingu at color@glassesround}
+     (\pingu at name-glassesround-right-mid) arc(30:150:\pingu at x@glassesround at r@l) -- ++(-5mm,.65mm);
+     \pingu at draw[line width=\pingu at x@glassesround at lw]{\pingu at color@glassesround}
+     (\pingu at name-glassesround-left-mid) arc(150:30:\pingu at x@glassesround at r@r) -- ++(5mm,.65mm);
+    \endscope
+}
+\pingu at create@extra{monocleleft}{%
+    monocle left/.code              = \pingu at set@extra{monocleleft}{true}\pingu at color{monocleleft}{#1},
+    monocle left/.default           = pingu at black,
+    monocle left glass/.code        = \pingu at color{monocleleft at glass}{#1},
+    monocle left fill/.forward to   = /pingu/monocle left glass,
+    monocle left opacity/.code      = \def\pingu at x@monocleleft at opacity{#1},
+    monocle left fill opacity/.forward to   = /pingu/monocle left opacity,
+    monocle left string/.code       = \pingu at color{monocleleft at string}{#1},
+    monocle left string length/.code= \def\pingu at x@monocleleft at string@l{#1},
+    monocle left blob/.code         = \pingu at color{monocleleft at blob}{#1},
+}{monocle left glass=pingu at blue,monocle left opacity=.155,monocle left string=\pingu at color@monocleleft,monocle left blob=\pingu at color@monocleleft,monocle left string length=5.55mm}
+
+\def\pingu at draw@eb at monocle@l{%
+    \pingu at block[/pingu/glow,opacity=\pingu at x@monocleleft at opacity]{\pingu at color@monocleleft at glass} (\pingu at name-eye-left) circle[radius=2mm];
+    \pingu at draw[thin]{\pingu at color@monocleleft at string} (\pingu at name-eye-left)++(2mm,0)
+    to[out=-75,in=100] ++(0,-\pingu at x@monocleleft at string@l);
+    \pingu at block{\pingu at color@monocleleft at blob} (\pingu at name-eye-left)++(2mm,-\pingu at x@monocleleft at string@l) circle [radius=.65\p@];
+    \pingu at draw[semithick]{\pingu at color@monocleleft} (\pingu at name-eye-left) circle[radius=2mm];
+}
+\pingu at create@extra{monocleright}{%
+    monocle right/.code              = \pingu at set@extra{monocleright}{true}\pingu at color{monocleright}{#1},
+    monocle right/.default           = pingu at black,
+    monocle right glass/.code        = \pingu at color{monocleright at glass}{#1},
+    monocle right fill/.forward to   = /pingu/monocle right glass,
+    monocle right opacity/.code      = \def\pingu at x@monocleright at opacity{#1},
+    monocle right fill opacity/.forward to   = /pingu/monocle right opacity,
+    monocle right string/.code       = \pingu at color{monocleright at string}{#1},
+    monocle right string length/.code= \def\pingu at x@monocleright at string@r{#1},
+    monocle right blob/.code         = \pingu at color{monocleright at blob}{#1},
+}{monocle right glass=pingu at blue,monocle right opacity=.155,monocle right string=\pingu at color@monocleright,monocle right blob=\pingu at color@monocleright,monocle right string length=5.55mm}
+\def\pingu at draw@eb at monocle@r{%
+    \pingu at block[/pingu/glow,opacity=\pingu at x@monocleright at opacity]{\pingu at color@monocleright at glass} (\pingu at name-eye-right) circle[radius=2mm];
+    \pingu at draw[thin]{\pingu at color@monocleright at string} (\pingu at name-eye-right)++(-2mm,0)
+    to[out=-105,in=80] ++(0,-\pingu at x@monocleright at string@r);
+    \pingu at block{\pingu at color@monocleright at blob} (\pingu at name-eye-right)++(-2mm,-\pingu at x@monocleright at string@r) circle [radius=.65\p@];
+    \pingu at draw[semithick]{\pingu at color@monocleright} (\pingu at name-eye-right) circle[radius=2mm];
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-glasses.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,115 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{strawhat}{%
+  % extra strawhat (tikzducks basis)
+  straw hat/.forward to         = /pingu/strawhat,
+  strawhat/.default             = brown!50!white,
+  strawhat/.code                = \pingu at set@extra{strawhat}{true}\pingu at color{strawhat}{#1},
+  straw hat ribbon/.forward to  = /pingu/strawhat ribbon,
+  strawhat ribbon/.code         = \pingu at color{strawhat at ribbon}{#1},
+  straw hat position/.forward to= /pingu/strawhat position,
+  strawhat position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@strawhat at angle{#1}\def\pingu at x@strawhat at xshift{#2}\def\pingu at x@strawhat at yshift{#3}\def\pingu at x@strawhat at scale{#4}},
+}{strawhat ribbon= gray!85!black,strawhat position={-26.5:(-.185cm,.14cm){1.375}}}
+
+\def\pingu at draw@ea at strawhat{%
+\scope[rotate around={\pingu at x@strawhat at angle:(\pingu at name-head)},shift={(\pingu at name-head)},shift={(\pingu at x@strawhat at xshift,\pingu at x@strawhat at yshift)},scale=\pingu at x@strawhat at scale]
+\pingu at block{\pingu at color@strawhat} (.34cm,0) ellipse[x radius=.75cm, y radius=\pingu at one];
+\pingu at block{\pingu at color@strawhat} (0,.5mm) rectangle (.68cm,5mm);
+\pingu at block{\pingu at color@strawhat} (.34cm,5mm) ellipse[x radius=.34cm, y radius=.8mm];
+\pingu at block{\pingu at color@strawhat} (-.3955cm,.2mm) -- (1.0755cm,.2mm) -- (.68cm,2mm) -- (0,2mm) -- cycle;
+\pingu at block{\pingu at color@strawhat at ribbon} (.34cm,2mm) ellipse[x radius=.34cm, y radius=.8mm];
+\pingu at block{\pingu at color@strawhat at ribbon} (0,2mm) rectangle (.68cm,3mm);
+\pingu at block{\pingu at color@strawhat} (.34cm,3mm) ellipse[x radius=.34cm, y radius=.8mm];
+\endscope}
+
+\pingu at create@extra{hat}{%
+  hat/.default   = pingu at black!90!black,
+  hat/.code      = \pingu at set@extra{hat}{true}\pingu at color{hat}{#1},
+  hat base/.code = \pingu at color{hat at base}{#1},
+  hat coronal/.code = \pingu at color{hat at coronal}{#1},
+  hat ribbon/.code = \pingu at color{hat at ribbon}{#1},
+  hat position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@hat at angle{#1}\def\pingu at x@hat at xshift{#2}\def\pingu at x@hat at yshift{#3}\def\pingu at x@hat at scale{#4}},
+}{hat position={-2:(.35mm,0)1},hat base=\pingu at color@hat,hat coronal=\pingu at color@hat!91!white,hat ribbon=\pingu at color@hat!87!white}
+
+\newdimen\pingu at hat@w at half \pingu at hat@w at half=.925cm
+\newdimen\pingu at hat@h \pingu at hat@h=.625cm
+\def\pingupathhatupper{[rounded corners=.25mm](-.65cm,-.25cm) to[out=90,in=200] ++(.35cm,\pingu at hat@h) to[bend left=11] ++(.25cm,0) to[bend right=2.5] ++(\pingu at one,0) to[bend left=11] ++(.25cm,0) to[out=-20,in=90] ++(.35cm,-\pingu at hat@h) to[bend left=12] (-.65cm,-.25cm) -- cycle}
+\def\pingu at draw@ea at hat{%
+\scope[rotate around={\pingu at x@hat at angle:(\pingu at name-head-top)},shift={(\pingu at name-head-top)},shift={(\pingu at x@hat at xshift,\pingu at x@hat at yshift)},scale=\pingu at x@hat at scale]
+\pingu at block[/pingu/@draw=\pingu at color@hat at coronal,thick]{\pingu at color@hat at base} (0,-.25cm)++(180:\pingu at hat@w at half{} and .15cm) arc (180:360:\pingu at hat@w at half{} and .15cm) arc (0:180:\pingu at hat@w at half{} and .115cm) -- cycle;
+\pingu at block{\pingu at color@hat} \pingupathhatupper;
+\scope
+\clip\pingupathhatupper;
+\pingu at block{\pingu at color@hat at ribbon} (\z@,.2mm) ellipse [x radius=.95\pingu at hat@w at half, y radius=.13cm];
+\pingu at block{\pingu at color@hat} (\z@,.134cm) ellipse [x radius=.95\pingu at hat@w at half, y radius=.13cm];
+\endscope\endscope}
+
+\pingu at create@extra{cap}{%
+  cap/.default      = pingu at bronze,
+  cap/.code         = \pingu at set@extra{cap}{true}\pingu at color{cap}{#1},
+  cap padding/.code = {\def\pingu at x@cap at padding{#1}},
+  cap extra height/.code = {\def\pingu at x@cap at height{#1}},
+}{cap padding=.8mm, cap extra height=0pt}
+
+\def\pingu at draw@ea at cap{%
+\pingu at layer{foreground}[]
+\pingu at block[rounded corners=.7mm]{\pingu at color@cap} ([xshift=.25mm]\pingu at name-wing-left-start) to[bend left=4] ([xshift=-\pingu at x@cap at padding]\pingu at name-wings-side-left) to[bend right=3]
+([yshift=\pingu at x@cap at height]\pingu at name-head)
+to[bend right=3]
+([xshift=\pingu at x@cap at padding]\pingu at name-wings-side-right) [rounded corners=.15mm] to[bend left=4] ([xshift=-.25mm]\pingu at name-wing-right-start)
+to[bend left=8]
+([xshift=-\pingu at x@cap at padding]\pingu at name-wings-side-right)
+[rounded corners=.15mm]
+to[bend left=32] ++(\pingu at w@half+\pingu at x@cap at padding,\pingu at w@half+\pingu at one)
+to[bend left=32] ++(\pingu at w@half+\pingu at x@cap at padding,-\pingu at w@half-\pingu at one)
+to[bend left=8] cycle;
+\endpingu at layer
+}
+
+\pingu at create@extra{constructionhelmet}{%
+  construction helmet/.default      = pingu at yellow,
+  construction helmet/.code         = \pingu at set@extra{constructionhelmet}{true}\pingu at color{constructionhelmet}{#1},
+  construction helmet padding/.code = {\def\pingu at x@constructionhelmet at padding{#1}},
+  construction helmet extra height/.code = {\def\pingu at x@constructionhelmet at height{#1}},
+  construction helmet position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@constructionhelmet at angle{#1}\def\pingu at x@constructionhelmet at xshift{#2}\def\pingu at x@constructionhelmet at yshift{#3}\def\pingu at x@constructionhelmet at scale{#4}},
+}{construction helmet padding=.325cm, construction helmet extra height=0pt,construction helmet position={-.5:(.05mm,-1.25mm)1}}
+
+\newdimen\pingu at constructionhelmet@w at half \pingu at constructionhelmet@w at half=.85cm
+\def\pingu at draw@ea at constructionhelmet{%
+\scope[rotate around={\pingu at x@constructionhelmet at angle:(\pingu at name-head-top)},shift={(\pingu at name-head-top)},shift={(\pingu at x@constructionhelmet at xshift,\pingu at x@constructionhelmet at yshift)},scale=\pingu at x@constructionhelmet at scale]
+\pingu at block{\pingu at color@constructionhelmet} (0,-.25cm)++(180:\pingu at constructionhelmet@w at half{} and \pingu at x@constructionhelmet at padding) arc (180:360:\pingu at constructionhelmet@w at half{} and \pingu at x@constructionhelmet at padding) arc (0:180:\pingu at constructionhelmet@w at half{} and .2cm) -- cycle;
+\scope
+\pingu at block{\pingu at color@constructionhelmet!93!pingu at black} (0,-.25cm)++(0:{.95\pingu at constructionhelmet@w at half} and .675cm) arc (0:180:{.95\pingu at constructionhelmet@w at half} and .675cm) coordinate[pos=.212] (@a) coordinate[pos=.256] (@aa) coordinate[pos=.788] (@b) coordinate[pos=.744] (@bb) arc (180:360:{.95\pingu at constructionhelmet@w at half} and .125cm) -- cycle;
+\clip  (0,-.25cm)++(0:{.95\pingu at constructionhelmet@w at half} and .675cm) arc (0:180:{.95\pingu at constructionhelmet@w at half} and .675cm) arc (180:360:{.95\pingu at constructionhelmet@w at half} and .125cm) -- cycle;
+\pingu at block{\pingu at color@constructionhelmet!99!pingu at black} (-.75mm,-.25cm-.125cm) to[bend left=1] ++ (0,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=1] ++(0,-.675cm-.125cm) -- cycle;
+\pingu at block{\pingu at color@constructionhelmet!99!pingu at black} (-.95mm,-.25cm-.125cm) to[bend left=3] ++ (-8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend right=3] ++(8mm,-.675cm-.125cm) -- cycle;
+\pingu at block{\pingu at color@constructionhelmet!99!pingu at black} (-.55mm,-.25cm-.125cm) to[bend right=3] ++ (8mm,.675cm+.125cm) -- ++(1.5mm,0) to[bend left=3] ++(-8mm,-.675cm-.125cm) -- cycle;
+\endscope
+% get the 3d wobbles
+\pingu at block[rounded corners=.03mm]{\pingu at color@constructionhelmet!99!pingu at black} (-.75mm,-.25cm+.675cm-.25mm) -- ++(0,.3mm) -| ++(1.5mm,-.3mm) -- cycle;
+\pingu at block{\pingu at color@constructionhelmet!99!pingu at black} (@a) to[bend right=14] (@aa);
+\pingu at block{\pingu at color@constructionhelmet!99!pingu at black} (@bb) to[bend right=14] (@b);
+\endscope
+}
+
+\pingu at create@extra{conicalhat}{%
+  conical hat/.default      = pingu at bronze,
+  conical hat/.code         = \pingu at set@extra{conicalhat}{true}\pingu at color{conicalhat}{#1},
+  conical hat rounding/.code = {\def\pingu at x@conicalhat at rounding{#1}},
+  conical hat shade/.code = {\def\pingu at x@conicalhat at shade{#1}},
+  conical hat height/.code = {\def\pingu at x@conicalhat at height{#1}},
+  conical hat width/.code = {\def\pingu at x@conicalhat at width{#1}},
+  conical hat position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@conicalhat at angle{#1}\def\pingu at x@conicalhat at xshift{#2}\def\pingu at x@conicalhat at yshift{#3}\def\pingu at x@conicalhat at scale{#4}},
+}{conical hat position={-15:(2mm,-3mm)1}, conical hat height=8mm, conical hat width=2.25cm,conical hat shade=\pingu at color@conicalhat!80!pingu at black, conical hat rounding=.4pt}
+
+\def\pingu at draw@ea at conicalhat{%
+\scope[rotate around={\pingu at x@conicalhat at angle:(\pingu at name-head-top)},shift={(\pingu at name-head-top)},shift={(\pingu at x@conicalhat at xshift,\pingu at x@conicalhat at yshift)},scale=\pingu at x@conicalhat at scale]
+
+\pingu at layer{background}[]
+\pingu at block[rounded corners=\pingu at x@conicalhat at rounding]{\pingu at x@conicalhat at shade} (0,-.22cm)++(180:{\pingu at x@conicalhat at width/2+.05mm} and 1mm) coordinate (@) arc (180:360:{\pingu at x@conicalhat at width/2+.05mm} and 1mm) -- ++(.15mm,.3mm) to[bend right=5] ++(-\pingu at x@conicalhat at width/2, \pingu at x@conicalhat at height-.025cm) to[bend right=5] ([xshift=-.15mm,yshift=.3mm]@) -- cycle;
+\endpingu at layer
+
+\pingu at block[rounded corners=\pingu at x@conicalhat at rounding]{\pingu at color@conicalhat} (0,-.25cm)++(180:\pingu at x@conicalhat at width/2 and 1mm) coordinate (@) arc (180:0:\pingu at x@conicalhat at width/2 and 1mm) -- ++(.225mm,.6mm) to[bend right=5] ++(-\pingu at x@conicalhat at width/2, \pingu at x@conicalhat at height) to[bend right=5] ([xshift=-.225mm,yshift=.6mm]@) -- cycle;
+\endscope
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-hats.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,113 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+% TODO: get all of this customizable
+\colorlet{base at a}{lightgray!95!black}
+\colorlet{base at b}{lightgray!79!black}
+
+\colorlet{a}{lightgray!63!black}
+\colorlet{b}{lightgray!81!black}
+\def\basew{12}
+\def\pingu@@horse at scale{.1}
+
+\def\pingu@@horse@@main{(1.275,.55) -- ++(.1,.2) -- ++(-.25,.25) to[bend right=4] ++(-.425,1.75) to[bend left=15] ++(.05,.2) to[bend right=30] ++(-.1,1.9) to[bend left=30] ++(0,1.65) coordinate(@back) to[bend left=30] ++(2,.625) to[bend right=18,looseness=.8] ++(3.25,-.1) [rounded corners=2*\pingu@@horse at scale] coordinate(@hair) to[out=34,in=185] ++(3,1.3) to[bend left=19] coordinate[pos=.5](@ear) ++(.85,-.4) to[bend left=5] ++(.24,-.45) to[bend right=20] ++(0,-.7) to[bend left=2] ++(.1,-.55) to[out=-85,in=-60,looseness=.75] ++(-.475,-.35) coordinate(@mouth) to[out=-135,in=-120] ++(-.37,.25) -- ++(0,.1)
+to[out=125,in=-68] ++(-.58,.615) coordinate (@mouth-low)
+to[out=215,in=80] ++(-1.25,-2) to[bend left=24] ++(-.65,-1) to[out=258,in=86] ++(-.42,-1.25)  to[bend left=3] ++(-.2,-.6) to[bend right=10] ++(-.14,-1.15) to[bend left=2] coordinate[pos=.35] (@hooffront) ++(.355,-.565) to[bend left=15] ++(-.4,-.075) to[bend left=10] ++(-.28,.1) to[bend left=9] ++(.06,.3) to[bend right=9] ++(-.2,.4) to[out=80,in=-80] ++(.138,1.4) to[out=70,in=-103] ++(.2,1.3) to[bend right=10] ++(-.225,.44) coordinate (@frontleg) to[out=196,in=-25] ++(-3.3,.575) coordinate (@backleg) to[bend right=10] ++(-.8,-1.5) to[bend right=20] ++(.1,-2.35) -- ++(.2,-.25) to[bend right=8] ++(.15,-.26) to[bend left=10] ++(-.55,-.05) -- cycle}
+
+% #1 is the wing for the color and key assignments
+\def\pingu@@drawer at horse#1{
+% this ensures all coordinates are set in place
+% i know this i inefficient, but atm this is of no greater
+% concern -- i can not use layers as they would clash with that
+% of the penguin and who wants that... no one does!
+% penguins deserve freedom!
+\path \pingu@@horse@@main;
+
+% no we draw "behind" the horse:
+
+% Sockel
+\csname if at pingu@x at horse@#1 at base@\endcsname
+\pingu at block[draw=\csname pingu at color@horse#1 at base@shade at draw\endcsname,line width=2pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at base@shade\endcsname} (4.35-\basew/2,.433) -- ++(0,-.5) arc(180:360:\basew/2 and 1) -- ++(0,.5) arc(360:180:\basew/2 and 1);
+\pingu at block[draw=\csname pingu at color@horse#1 at base@draw\endcsname,line width=2pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at base\endcsname} (4.35,.433) ellipse[x radius=\basew/2,y radius=1];
+\fi
+
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1\endcsname} [rounded corners=1*\pingu@@horse at scale](@frontleg) to[out=266,in=85] ++(.09,-.5) to[bend left=10] ++(-.15,-.8)
+to[bend right=7] ++(-.05,-.2) to[bend left=13] ++(-.2,-1.15) to[bend right=13] ++(.15,-.2) to[bend left=10] ++(-.07,-.3) to[bend right=100] ++(.45,-.1) to[bend right=10] ([yshift=5mm]@frontleg) -- cycle;
+
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1\endcsname} [rounded corners=1*\pingu@@horse at scale](@backleg) to[out=-115,in=130] ++(-.3,-3.65) -- ++(.2,-.3) to[bend left] ++(-.5,-.1)
+-- ++(-.05,.15) -- ++(0,.15) to[bend left=60] cycle;
+
+\pingu at block[draw=\csname pingu at color@horse#1 at tail@draw\endcsname,line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at tail\endcsname} [rounded corners=1*\pingu@@horse at scale](@back) to[out=215,in=90] ++(-.4,-2.5) to[out=270,in=92] ++(0,-2.8) [sharp corners] to[bend right=20] ++(.6,0) to[bend right=10] cycle;
+
+% back ear
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.35pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at ears\endcsname} ([xshift=.2mm,yshift=-1.5mm]@ear) to[bend left=20] ++(.373,.565) coordinate(@) to[bend left=10] ++(-.15,-.75);
+
+% and here comes the wheeee (imagine-horse-sound)
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1\endcsname} [rounded corners=1*\pingu@@horse at scale] \pingu@@horse@@main;
+
+\pingu at draw[line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at draw\endcsname} ([yshift=-.2mm]@mouth-low) to[bend left=12] ++(.06,.65);
+\pingu at draw[line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at mouth\endcsname} ([yshift=-.33mm]@mouth) -- ++(-.035,.225);
+
+\pingu at draw[line width=1.75pt*\pingu@@horse at scale,line join=round]{\csname pingu at color@horse#1 at nose\endcsname} ([xshift=3.85mm,yshift=2.45mm]@mouth) to[out=140,in=10] ++(-.17,-.074) to[bend right=49] cycle;
+
+\pingu at draw[line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at draw\endcsname} ([yshift=-.35mm]@frontleg) to[bend left=12] ++(.01,.325);
+\pingu at draw[line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at draw\endcsname} ([yshift=-.2mm]@backleg) to[bend right=13] ++(.25,.425);
+
+\pingu at block[draw=\csname pingu at color@horse#1 at mane@draw\endcsname,line width=1.75pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at mane\endcsname} [rounded corners=1*\pingu@@horse at scale](@hair) to[out=34,in=185] ++(3,1.3) to[bend left=10] ++(.415,-.1) -- ++(-.1,-.4) to[out=194,in=30] ([yshift=-11.5mm,xshift=1.5mm]@hair) -- cycle;
+
+\pingu at block[draw=\csname pingu at color@horse#1 at thatch@draw\endcsname,line width=1.35pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at thatch\endcsname} [rounded corners=1*\pingu@@horse at scale]([xshift=2mm,yshift=-1mm]@ear) -- ++(-.1,-.3275) to[bend left=4] ++(.455,-.175) to[bend right=9] cycle;
+
+% ear
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.35pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at ears\endcsname} ([xshift=-.75mm,yshift=-1mm]@ear) to[bend left=20] ++(.393,.585) coordinate(@) to[bend right=10] ++(-.15,-.7);
+\pingu at block[draw=\csname pingu at color@horse#1 at draw\endcsname,line width=1.35pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at ears\endcsname} (@) to[bend right=7] ++(-.15,-.7) to[bend right=14] cycle;
+
+
+% the eye; this is no error it has draw as fill
+\pingu at block{\csname pingu at color@horse#1 at eyes\endcsname} [rounded corners=.25*\pingu@@horse at scale] ([xshift=3mm,yshift=-7.5mm]@ear) to[bend right=20] ++(.125,-.2) to[bend right=50] ++(.1,.125) to[bend left=15] cycle;
+}
+
+\newif\if at pingu@x at horse@left at flip@
+\newif\if at pingu@x at horse@right at flip@
+\newif\if at pingu@x at horse@left at base@
+\newif\if at pingu@x at horse@right at base@
+\pingu at create@wing at extra{horse}{%
+    horse \@lr/.code                       = {\pingu at set@extra{horse\@lr}{true}\pingu at color{horse\@lr}{##1}},
+    horse \@lr/.default                    = pingu at bronze!80!pingu at black,
+    horse \@lr\space flip/.is if           = @pingu at x@horse@\@lr @flip@,
+    horse \@lr\space has base/.is if       = @pingu at x@horse@\@lr @base@,
+    horse \@lr\space draw/.code            = \pingu at color{horse\@lr @draw}{##1},%
+    horse \@lr\space mane/.code            = \pingu at color{horse\@lr @mane}{##1},%
+    horse \@lr\space mane draw/.code       = \pingu at color{horse\@lr @mane at draw}{##1},%
+    horse \@lr\space thatch/.code          = \pingu at color{horse\@lr @thatch}{##1},%
+    horse \@lr\space thatch draw/.code     = \pingu at color{horse\@lr @thatch at draw}{##1},%
+    horse \@lr\space tail/.code            = \pingu at color{horse\@lr @tail}{##1},%
+    horse \@lr\space tail draw/.code       = \pingu at color{horse\@lr @tail at draw}{##1},%
+    horse \@lr\space eyes/.code            = \pingu at color{horse\@lr @eyes}{##1},%
+    horse \@lr\space eye/.forward to       = /pingu/horse \@lr\space eyes,%
+    horse \@lr\space mouth/.code           = \pingu at color{horse\@lr @mouth}{##1},%
+    horse \@lr\space nose/.code            = \pingu at color{horse\@lr @nose}{##1},%
+    horse \@lr\space ears/.code            = \pingu at color{horse\@lr @ears}{##1},%
+    horse \@lr\space base/.code            = \pingu at color{horse\@lr @base}{##1},%
+    horse \@lr\space base draw/.code       = \pingu at color{horse\@lr @base at draw}{##1},%
+    horse \@lr\space base shade/.code      = \pingu at color{horse\@lr @base at shade}{##1},%
+    horse \@lr\space base shade draw/.code = \pingu at color{horse\@lr @base at shade@draw}{##1},%
+    horse \@lr\space xshift/.code          = \@namedef{pingu at x@horse\@lr @xshift}{##1},
+    horse \@lr\space yshift/.code          = \@namedef{pingu at x@horse\@lr @yshift}{##1},
+    horse \@lr\space on base/.style        ={/pingu/horse \@lr\space yshift=4cm},
+}{horse \@lr\space draw=\csname pingu at color@horse\@lr\endcsname!80!pingu at black,horse \@lr\space mane=\csname pingu at color@horse\@lr\endcsname!86!pingu at white,horse \@lr\space mane draw=\csname pingu at color@horse\@lr @mane\endcsname!80!pingu at black,horse \@lr\space eyes=\csname pingu at color@horse\@lr @draw\endcsname,horse \@lr\space mouth=\csname pingu at color@horse\@lr @draw\endcsname,horse \@lr\space nose=\csname pingu at color@horse\@lr @draw\endcsname,horse \@lr\space ears=\csname pingu at color@horse\@lr\endcsname,horse \@lr\space thatch=\csname pingu at color@horse\@lr @mane\endcsname,horse \@lr\space thatch draw=\csname pingu at color@horse\@lr @thatch\endcsname!80!pingu at black,horse \@lr\space tail=\csname pingu at color@horse\@lr @mane\endcsname,horse \@lr\space tail draw=\csname pingu at color@horse\@lr @tail\endcsname!80!pingu at black,horse \@lr\space has base=false,horse \@lr\space base=lightgray!90!black,horse \@lr\space base draw=\csname pingu at color@horse\@lr @base\endcsname!91!pingu at black,horse \@lr\space base shade=lightgray!80!black,horse \@lr\space base shade draw=\csname pingu at color@horse\@lr @base at shade\endcsname!91!pingu at black,horse \@lr\space xshift=0pt,horse \@lr\space yshift=0pt,horse \@lr\space flip=\ifx\@lr\pingu at str@wing at left true\else false\fi}
+
+\def\pingu at draw@wi at horse#1{%
+    \pingu at setup@wing{horse}{#1}%
+\scope[scale=\pingu@@horse at scale,every path/.append style={line cap=round, line join=round},shift=(\pingu at name-wing-#1),rotate around={\@angle-5:(\pingu at name-wing-#1)}]
+\csname if at pingu@x at horse@#1 at flip@\endcsname
+\scope[xshift=-4cm-\csname pingu at x@horse#1 at xshift\endcsname,yshift=-42mm+\csname pingu at x@horse#1 at yshift\endcsname]
+\else
+\scope[xshift=4cm+\csname pingu at x@horse#1 at xshift\endcsname,yshift=-42mm+\csname pingu at x@horse#1 at yshift\endcsname,xscale=-1]
+\fi
+    \pingu@@drawer at horse{#1}
+    % hoof
+    % \pingu at block[draw=\csname pingu at color@horse#1 at base@shade at draw\endcsname,line width=2pt*\pingu@@horse at scale]{\csname pingu at color@horse#1 at base@shade\endcsname} (@hooffront) to[bend left=2] ++(.355*.65,-.565*.65) to[bend left=15] ++(-.395,-.075) to[bend left=10] ++(-.293,.105) to[bend left=9] ++(.06,.3) to[bend left=5] cycle;
+\endscope\endscope
+}
+% todo: make statue extra
+% todo: make horse hat
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-horse.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,14 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@wing at extra{handcast}{%
+  handcast \@lr/.forward to    = /pingu/hand cast \@lr,
+  hand cast \@lr/.code         = {\pingu at set@extra{handcast\@lr}{true}\@namedef{pingu at handcast@\@lr}{##1}},
+  hand cast \@lr/.default      = {X},
+  handcast \@lr\space color/.forward to    = /pingu/hand cast \@lr\space color,
+  hand cast \@lr\space color/.code = \pingu at color{handcast@\@lr @color}{##1},%
+}{hand cast \@lr\space color=pingu at purple}
+\def\pingu at draw@wi at handcast#1{%
+    \pingu at setup@wing{handcast}{#1}%
+    \path[rotate around={\@angle:(\pingu at name-wing-#1)}] (\pingu at name-wing-#1)++(0,5mm) node[\csname pingu at color@handcast@#1 at color\endcsname] {\@nameuse{pingu at handcast@#1}};
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-magic.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,205 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\newif\if at pingu@x at rook@draw at hatch@
+\pingu at create@extra{rook}{%
+    rook/.code          = \pingu at set@extra{rook}{true}\pingu at color{rook}{#1},
+    rook/.default       = pingu at silver,
+    rook back/.code     = \pingu at color{rook at back}{#1},
+    rook hatch/.is if   = @pingu at x@rook at draw@hatch@,
+    rook hatch/.default = true,
+    rook shade/.code    = \pingu at color{rook at shade}{#1},
+}{rook back=\pingu at color@rook!85!black,rook shade=\pingu at color@rook!92!black,rook hatch}
+\def\pingu at draw@ea at rook{%
+\if at pingu@do at back@\else\if at pingu@x at rook@draw at hatch@\else\pingu at layer{foreground}[]\fi\fi
+    \pingu at block[even odd rule]{\pingu at color@rook} ([xshift=-.2mm]\pingu at name-wings-side-right|-\pingu at name-foot-right) [rounded corners=\p@] to[bend right=9] coordinate[pos=.15] (@tmpe) ([xshift=.2mm]\pingu at name-wings-side-left|-\pingu at name-foot-left) [sharp corners] to[bend right=1.5*\pingu at bend] (\pingu at name-wings-side-left|-\pingu at name-head-top) coordinate (@tmp) to[bend left=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (\pingu at name-wings-side-right|-\pingu at name-head-top) [rounded corners=\p@] coordinate (@tmpb) to[bend right=1.5*\pingu at bend] cycle \if at pingu@x at rook@draw at hatch@ (\pingu at name-head-center) ellipse[x radius=.8\pingu at w@half, y radius=.45\pingu at w@half]\fi;
+    \pingu at block{\pingu at color@rook} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(-2mm,-.1mm) -- ++(0,-2.25mm);
+    \pingu at block{\pingu at color@rook} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(2mm,-.1mm) -- ++(0,-2.25mm);
+
+    \pingu at block{\pingu at color@rook} (@tmpc)++(-2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
+    \pingu at block{\pingu at color@rook} (@tmpd)++(2mm,-.25mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
+
+    % custom shade boi (or gurl, wateva)
+    \scope
+        \clip ([xshift=-.2mm]\pingu at name-wings-side-right|-\pingu at name-foot-right) [rounded corners=\p@] to[bend right=5] ([xshift=.2mm]\pingu at name-wings-side-left|-\pingu at name-foot-left) [sharp corners] to[bend right=1.5*\pingu at bend] (\pingu at name-wings-side-left|-\pingu at name-head-top) -- ++(0,2mm) to[bend left=3] (\pingu at name-wings-side-right|-\pingu at name-head-top) to[bend right=1.5*\pingu at bend] cycle;
+        \if at pingu@x at rook@draw at hatch@
+        \clip[/pingu/@invclip] (\pingu at name-head-center) ellipse[x radius=.8\pingu at w@half, y radius=.45\pingu at w@half];
+        \fi
+        \pingu at block{\pingu at color@rook at shade} (@tmpe) to[bend right=5] ([xshift=.2mm]@tmpe-|@tmp) to[bend right=1.5*\pingu at bend] ([yshift=2mm]@tmp) to[bend left=10] cycle;
+    \endscope
+    \if at pingu@do at back@\else\if at pingu@x at rook@draw at hatch@\else\endpingu at layer\fi\fi
+
+    \pingu at layer{background}[]
+        \pingu at block{\pingu at color@rook at back} (@tmp) to[bend right=3] coordinate[pos=.3] (@tmpc) coordinate[pos=.7] (@tmpd) (@tmpb) to[bend right=30] cycle;
+        \pingu at block{\pingu at color@rook at back} (@tmpb) to[bend left=2] ++(0,2mm) [rounded corners=.25mm] to[bend left=1] ++(2mm,.1mm) -- ++(0,-2.25mm);
+        \pingu at block{\pingu at color@rook at back} (@tmp) to[bend right=2] ++(0,2mm) [rounded corners=.25mm] to[bend right=1] ++(-2mm,.1mm) -- ++(0,-2.25mm);
+
+        \pingu at block{\pingu at color@rook at back} (@tmpc)++(-2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend right=1] ++(4mm,.05mm) -- ++(0,-2.25mm);
+        \pingu at block{\pingu at color@rook at back} (@tmpd)++(2mm,-.49mm) [rounded corners=.25mm] to[bend left=2] ++(0,2.25mm) to[bend left=1] ++(-4mm,-.05mm) -- ++(0,-2.25mm);
+    \endpingu at layer
+}
+
+\newif\if at pingu@x at crown@ddd@ % 3d
+\newif\if at pingu@x at crown@shade@ % 3d
+\pingu at create@extra{crown}{%
+  crown/.code             = \pingu at set@extra{crown}{true}\pingu at color{crown}{#1},
+  crown/.default          = pingu at yellow,
+  crown 3d/.is if         = @pingu at x@crown at ddd@, crown 3d/.default = true,
+  crown 2d/.style         = {crown=#1, crown 3d=false},
+  crown 2d/.default       = pingu at yellow,
+  crown back/.code        = \pingu at color{crown at back}{#1},
+  crown front bend/.code  = \def\pingu at x@crown at f@bend{#1},
+  crown back bend/.code   = \def\pingu at x@crown at b@bend{#1},
+  crown gem shade/.is if  = @pingu at x@crown at shade@, crown gem shade/.default = true,
+  crown gem colors/.code n args = 7{\pingu at color{crown at gem@a}{#1}\pingu at color{crown at gem@b}{#2}\pingu at color{crown at gem@c}{#3}\pingu at color{crown at gem@d}{#4}\pingu at color{crown at gem@e}{#5}\pingu at color{crown at gem@f}{#6}\pingu at color{crown at gem@g}{#7}},
+  crown gem ring/.code   = \pingu at color{crown at gem@ring}{#1},
+  crown position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@crown at angle{#1}\def\pingu at x@crown at xshift{#2}\def\pingu at x@crown at yshift{#3}\def\pingu at x@crown at scale{#4}},
+}{crown position={-9:(1mm,0mm)1},crown front bend=16,crown back bend=9,crown back=\pingu at color@crown!93!black,crown 3d,crown gem colors={pingu at purple}{pingu at blue}{pingu at green}{pingu at purple}{pingu at green}{pingu at blue}{pingu at purple},crown gem ring=\pingu at color@crown!85!white,crown gem shade}
+
+% color | bend1 | bend1
+\def\pingu at draw@ea at crown@s#1#2#3{
+\pingu at block{#1} [rounded corners=.2mm](-6.25mm,-.25cm) to[bend left=2] ++(0,3.125mm) to[bend #2=\pingu at x@crown at f@bend]
+    coordinate[pos=0] (r2)  coordinate[pos=.07] (r1)
+    coordinate[pos=.14-.07] (a1)  coordinate[pos=.14] (a2) coordinate[pos=.14+.07] (a3)
+    coordinate[pos=.30-.08] (b1)  coordinate[pos=.30] (b2) coordinate[pos=.30+.08] (b3)
+    coordinate[pos=.50- .1] (c1)  coordinate[pos=.50] (x2) coordinate[pos=.50+ .1] (c3)
+    coordinate[pos=.69-.08] (d1)  coordinate[pos=.69] (d2) coordinate[pos=.69+.08] (d3)
+    coordinate[pos=.85-.07] (e1)  coordinate[pos=.85] (e2) coordinate[pos=.85+.07] (e3)
+    coordinate[pos=1] (l2)  coordinate[pos=.93] (l1)
+    ++(1.375cm,0) to[bend left=2] ++(0,-3.125mm) to[bend #3=\pingu at x@crown at f@bend] (-6mm,-.25cm) -- cycle;
+\path (x2)++(0,.9mm) coordinate (c2);
+\@for\a:={a,b,c,d,e}\do{
+    \pingu at block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu at x@crown at f@bend] ([yshift=-.1mm]\a3) to[bend right=2] ([yshift=1.85mm]\a2) to[bend right=2] ([yshift=-.1mm]\a1) -- cycle;
+}
+\pingu at block{#1} (l2)++(0,-.2mm) to[bend right=2] ++(0,1.95mm) -- (l1) -- cycle;
+\pingu at block{#1} (r2)++(0,-.2mm) to[bend left=2] ++(0,1.95mm) -- (r1) -- cycle;
+}
+
+% color | at | shift | scale
+\def\pingu at draw@ea at crown@g#1#2#3#4{
+\scope[shift={(#22)},shift={(#3,-.33mm)}]
+    \pingu at block{\pingu at color@crown at gem@ring}  ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
+    \pingu at block{#1}  ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+    \protected at edef\@tmp{#1}\ifx\@tmp\@pingu at none\else
+    \if at pingu@x at crown@shade@
+    \shade[ball color=#1,fill opacity=.45,shading angle=-95]  ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+    \else
+    \pingu at block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu at white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
+    \pingu at block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu at white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
+    \fi\fi
+\endscope
+}
+\def\pingu at draw@ea at crown{%
+\scope[rotate around={\pingu at x@crown at angle:(\pingu at name-head-top)},%
+       shift={(\pingu at name-head-top)},
+       shift={(\pingu at x@crown at xshift,\pingu at x@crown at yshift)},
+       scale=\pingu at x@crown at scale]
+% draw front
+\if at pingu@x at crown@ddd@
+    \pingu at draw@ea at crown@s{\pingu at color@crown}{right}{left}
+    \def\@tmpa{.05mm}\def\@tmpb{.025mm}
+\else
+    \pingu at draw@ea at crown@s{\pingu at color@crown}{left}{right}
+    \def\@tmpa{-.015mm}\def\@tmpb{-.035mm}
+\fi
+% draw the emeralds
+\pingu at draw@ea at crown@g{\pingu at color@crown at gem@b}{a}{-\@tmpa}1
+\pingu at draw@ea at crown@g{\pingu at color@crown at gem@c}{b}{-\@tmpb}1
+\pingu at draw@ea at crown@g{\pingu at color@crown at gem@d}{x}{\z@}{1.35}
+\pingu at draw@ea at crown@g{\pingu at color@crown at gem@e}{d}{\@tmpb}1
+\pingu at draw@ea at crown@g{\pingu at color@crown at gem@f}{e}{\@tmpa}1
+\pingu at layer{background}[]
+\pingu at block{\pingu at color@crown at gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu at block{\pingu at color@crown at gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+\pingu at block{\pingu at color@crown at gem@g} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu at block{\pingu at color@crown at gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+% draw back if 3d
+\if at pingu@x at crown@ddd@
+    \pingu at draw@ea at crown@s{\pingu at color@crown at back}{left}{right}
+\fi
+\endpingu at layer
+\endscope
+}
+
+\newif\if at pingu@x at princesscrown@ddd@
+\newif\if at pingu@x at princesscrown@shade@
+\newif\if at pingu@x at princesscrown@bobbles@
+\pingu at create@extra{princesscrown}{%
+  princess crown/.code    = \pingu at set@extra{princesscrown}{true}\pingu at color{princesscrown}{#1},
+  princess crown/.default = pingu at yellow,
+  princess crown 3d/.is if= @pingu at x@princesscrown at ddd@, princess crown 3d/.default = true,
+  princess crown 2d/.style   = {princess crown=#1, princess crown 3d=false},
+  princess crown 2d/.default = pingu at yellow,
+  princess crown back/.code  = \pingu at color{princesscrown at back}{#1},
+  princess crown front bend/.code  = \def\pingu at x@princesscrown at f@bend{#1},
+  princess crown back bend/.code   = \def\pingu at x@princesscrown at b@bend{#1},
+  princess crown gem shade/.is if  = @pingu at x@princesscrown at shade@,
+  princess crown bobbles/.is if = @pingu at x@princesscrown at bobbles@,
+  princess crown gem shade/.default = true,
+  princess crown gem colors/.code n args = 5{\pingu at color{princesscrown at gem@a}{#1}\pingu at color{princesscrown at gem@b}{#2}\pingu at color{princesscrown at gem@c}{#3}\pingu at color{princesscrown at gem@d}{#4}\pingu at color{princesscrown at gem@e}{#5}},
+  princess crown gem ring/.code   = \pingu at color{princesscrown at gem@ring}{#1},
+  princess crown position/.code args  = {#1:(#2,#3)#4}{\def\pingu at x@princesscrown at angle{#1}\def\pingu at x@princesscrown at xshift{#2}\def\pingu at x@princesscrown at yshift{#3}\def\pingu at x@princesscrown at scale{#4}},
+}{princess crown position={-9:(1mm,0mm)1},princess crown front bend=12,princess crown back bend=7,princess crown back=\pingu at color@princesscrown!93!black,princess crown 3d,princess crown gem colors={pingu at purple}{pingu at blue}{pingu at green}{pingu at blue}{pingu at purple},princess crown gem ring=\pingu at color@princesscrown!85!white,princess crown gem shade,princess crown bobbles}
+
+% color | bend1 | bend2
+\def\pingu at draw@ea at princesscrown@s#1#2#3{
+\pingu at block{#1} [rounded corners=.2mm](-3.25mm,-.15cm) to[bend left=2] ++(0,2.32mm) to[bend #2=\pingu at x@princesscrown at f@bend]
+    coordinate[pos=0] (r2)  coordinate[pos=.065] (r1)
+    coordinate[pos=.11] (a1) coordinate[pos=.2] (a2) coordinate[pos=.29] (a3)
+    coordinate[pos=.35] (b1) coordinate[pos=.50] (x2) coordinate[pos=.65] (b3)
+    coordinate[pos=.71] (c1) coordinate[pos=.8] (c2) coordinate[pos=.89] (c3)
+    coordinate[pos=1] (l2)  coordinate[pos=.93] (l1)
+    ++(8mm,0) to[bend left=2] ++(0,-2.32mm) to[bend #3=\pingu at x@princesscrown at f@bend] (-3mm,-.15cm) -- cycle;
+\path (x2)++(0,.9mm) coordinate (b2);
+\@for\a:={a,b,c}\do{
+    \pingu at block{#1} ([yshift=-.1mm]\a1) to[bend right=\pingu at x@princesscrown at f@bend] ([yshift=-.1mm]\a3) to[bend left=2] ([yshift=2.15mm]\a2) to[bend left=2] ([yshift=-.1mm]\a1) -- cycle;
+    \if at pingu@x at princesscrown@bobbles@\pingu at block{#1} ([yshift=2.15mm]\a2) circle [radius=.45\p@];\fi
+}
+\pingu at block{#1} (l2)++(0,-.2mm) to[bend left=2] ++(0,2.25mm) -- (l1) -- cycle;
+\pingu at block{#1} (r2)++(0,-.2mm) to[bend right=2] ++(0,2.25mm) -- (r1) -- cycle;
+\if at pingu@x at princesscrown@bobbles@\pingu at block{#1} (l2)++(0,2.05mm) circle [radius=.45\p@];
+\pingu at block{#1} (r2)++(0,2.05mm) circle [radius=.45\p@];\fi
+}
+
+% draw single gem; color | at | shift | scale
+\def\pingu at draw@ea at princesscrown@g#1#2#3#4{
+\scope[shift={(#22)},shift={(#3,-.33mm)}]
+    \pingu at block{\pingu at color@princesscrown at gem@ring} ellipse [x radius=.715mm*#4, y radius=.925mm*#4];
+    \pingu at block{#1} ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+    \protected at edef\@tmp{#1}\ifx\@tmp\@pingu at none\else
+    \if at pingu@x at princesscrown@shade@
+    \shade[ball color=#1,fill opacity=.45,shading angle=-95] ellipse [x radius=.633mm*#4, y radius=.85mm*#4];
+    \else
+    \pingu at block[rotate around={7:(42:.3mm*#4 and .4mm*#4)}]{#1!45!pingu at white} (42:.3mm*#4 and .4mm*#4) ellipse[x radius=.17mm*#4, y radius=.24mm*#4];
+    \pingu at block[rotate around={7:(232:.275mm*#4 and .35mm*#4)}]{#1!45!pingu at white} (232:.275mm*#4 and .35mm*#4) ellipse[x radius=.06mm*#4, y radius=.085mm*#4];
+    \fi\fi
+\endscope}
+\def\pingu at draw@ea at princesscrown{%
+\scope[rotate around={\pingu at x@princesscrown at angle:(\pingu at name-head-top)},%
+       shift={(\pingu at name-head-top)},
+       shift={(\pingu at x@princesscrown at xshift,\pingu at x@princesscrown at yshift)},
+       scale=\pingu at x@princesscrown at scale]
+% draw front
+\if at pingu@x at princesscrown@ddd@
+    \pingu at draw@ea at princesscrown@s{\pingu at color@princesscrown}{right}{left}
+    \def\@tmpa{.05mm}
+\else
+    \pingu at draw@ea at princesscrown@s{\pingu at color@princesscrown}{left}{right}
+    \def\@tmpa{-.015mm}
+\fi
+% draw the emaralds
+\pingu at draw@ea at princesscrown@g{\pingu at color@princesscrown at gem@b}{a}{-\@tmpa}{.95}
+\pingu at draw@ea at princesscrown@g{\pingu at color@princesscrown at gem@c}{x}{\z@}{1.3}
+\pingu at draw@ea at princesscrown@g{\pingu at color@princesscrown at gem@d}{c}{\@tmpa}{.95}
+\pingu at layer{background}[]
+\pingu at block{\pingu at color@princesscrown at gem@a} (r2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu at block{\pingu at color@princesscrown at gem@ring} (r2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+\pingu at block{\pingu at color@princesscrown at gem@e} (l2)++(0,-.33mm) ellipse [x radius=.3mm, y radius=.8mm];
+\pingu at block{\pingu at color@princesscrown at gem@ring} (l2)++(0,-.33mm) ellipse [x radius=.1mm, y radius=.885mm];
+% draw back if 3d
+\if at pingu@x at princesscrown@ddd@
+    \pingu at draw@ea at princesscrown@s{\pingu at color@princesscrown at back}{left}{right}
+\fi
+\endpingu at layer
+\endscope
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-medieval.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,75 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at bodytype@add{tilt-right}{%
+\pingu at block[save path=\pingu at lowerpingu]{\pingu at color@body at main} (0,\pingu at outer@off)
+% left side
+to[bend right=\pingu at bend] coordinate[pos=.775] (\pingu at name-waist-right) ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{}-1mm and \pingu at foot@outer at h) coordinate[yshift=-.2mm] (\pingu at name-foot-right)
+arc (270:332:\pingu at foot@inner at w{}+1mm and 2.5*\pingu at foot@inner at h)
+coordinate (\pingu at name-bottom-center)
+arc (208:270:\pingu at foot@inner at w{} and 1.25*\pingu at foot@inner at h) coordinate[yshift=-.4mm] (\pingu at name-foot-left)
+arc (270:360:\pingu at foot@outer at w{} and 1.125*\pingu at foot@outer at h)%
+% right side
+to[bend right=\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,\pingu at side@h at half+\pingu at outer@off)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\pingu at block[save path=\pingu at upperpingu]{\pingu at color@body at head} (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-1cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.68\pingu at side@h at half);
+\pingu at block[save path=\pingu at whitepingu]{\pingu at color@body at front} (\pingu at name-belly-back)++(-\pingu at w@half+\pingu at one,\pingu at lower@off) to[bend right=.8\pingu at bend] ++(-.05mm,1.05cm-\pingu at side@h at half-\pingu at lower@off) arc (180:270:3.7mm and 2mm) arc (270:331:5mm and 3*.85mm) arc (207:270:5.3mm and 1.125*.85mm) arc (270:360:4.025mm and 1.25*2mm) to[bend right=.8\pingu at bend] ++(0,\pingu at side@h at half-1.05cm+\pingu at lower@off) arc (0:180:\pingu at w@half-.96mm and \pingu at w@half-\pingu at one) -- cycle;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+}
+
+
+\pingu at bodytype@add{tilt-left}{%
+\pingu at block[save path=\pingu at lowerpingu]{\pingu at color@body at main} (0,\pingu at outer@off)
+% left side
+to[bend right=\pingu at bend] coordinate[pos=.775] (\pingu at name-waist-right) ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{}-1mm and 1.25*\pingu at foot@outer at h) coordinate[yshift=-.2mm] (\pingu at name-foot-right)
+arc (270:332:\pingu at foot@inner at w{}+1mm and 1.125*\pingu at foot@inner at h)
+coordinate (\pingu at name-bottom-center)
+arc (208:270:\pingu at foot@inner at w{} and 2.5*\pingu at foot@inner at h) coordinate[yshift=-.4mm] (\pingu at name-foot-left)
+arc (270:360:\pingu at foot@outer at w{} and \pingu at foot@outer at h)%
+% right side
+to[bend right=\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,\pingu at side@h at half+\pingu at outer@off)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\pingu at block[save path=\pingu at upperpingu]{\pingu at color@body at head} (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-1cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.68\pingu at side@h at half);
+\pingu at block[save path=\pingu at whitepingu]{\pingu at color@body at front} (\pingu at name-belly-back)++(-\pingu at w@half+\pingu at one,\pingu at lower@off) to[bend right=.8\pingu at bend] ++(-.05mm,1.05cm-\pingu at side@h at half-\pingu at lower@off) arc (180:270:4.025mm and 1.25*2mm) arc (270:331:5.25mm and 1.125*.85mm) arc (207:270:5mm and 3*.85mm) arc (270:360:3.75mm and 2mm) to[bend right=.8\pingu at bend] ++(0,\pingu at side@h at half-1.05cm+\pingu at lower@off) arc (0:180:\pingu at w@half-.96mm and \pingu at w@half-\pingu at one) -- cycle;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-movement.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,30 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{mask}{%
+    mask/.code    	       = {\pingu at set@extra{mask}{true}\pingu at color{mask}{#1}},
+    mask/.default          = pingu at white!61!gray,%
+    mask band/.code        = \pingu at color{mask at band}{#1},%
+    mask line width/.code  = \def\pingu at x@mask at line@width{#1},%
+    mask band inner/.code  = \pingu at color{mask at band@inner}{#1},%
+    mask band outer/.code  = \pingu at color{mask at band@outer}{#1}%
+}{mask band=\pingu at color@body at main, mask band inner=\pingu at color@mask at band!60!\pingu at color@mask, mask band outer=\pingu at color@mask at band!82!\pingu at color@mask,mask line width=.565pt}
+
+\def\pingu at draw@ea at mask{%
+\pingu at block{\pingu at color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu at name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr)  -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
+\scope
+\clip[use path=\pingu at upperpingu];
+\pingu at draw[line width=\pingu at x@mask at line@width]{\pingu at color@mask at band} ([yshift=-.1mm,xshift=.2mm]@ul) to[bend left=3] ([yshift=-1.1mm]\pingu at name-wings-side-right);
+\pingu at draw[line width=\pingu at x@mask at line@width]{\pingu at color@mask at band} ([yshift=-.1mm,xshift=-.2mm]@ur) to[bend right=3]  ([yshift=-1.1mm]\pingu at name-wings-side-left);
+\endscope\scope
+\clip[use path=\pingu at lowerpingu];
+\pingu at draw[line width=\pingu at x@mask at line@width]{\pingu at color@mask at band} ([yshift=.01mm,xshift=.2mm]@ll) to[bend left=3]  ([yshift=2mm]\pingu at name-wing-right-start);
+\pingu at draw[line width=\pingu at x@mask at line@width]{\pingu at color@mask at band} ([yshift=.01mm,xshift=-.2mm]@lr) to[bend right=3] ([yshift=2mm]\pingu at name-wing-left-start);
+\endscope
+% TODO: fix this sloppy overwrite
+\pingu at block{\pingu at color@mask} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm]\pingu at name-bill) coordinate (@ul) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) coordinate (@ur) -- ++(0,-4.25mm)[rounded corners=.8mm] coordinate (@lr)  -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) coordinate (@ll) -- cycle;
+\pingu at draw[very thin]{\pingu at color@mask at band@inner} ([xshift=-5mm,yshift=.75mm-4.25mm/2]\pingu at name-bill) to[bend right=1] ++(10mm,0);
+\foreach \i/\b/\c in {1.6mm/very thin/\pingu at color@mask at band@inner,.8mm/very thin/\pingu at color@mask at band@inner,0mm//\pingu at color@mask at band@outer} {
+\pingu at draw[\b]{\c} [rounded corners=.8mm] ([xshift=-5mm,yshift=.75mm-\i]\pingu at name-bill) [rounded corners=.1mm]-- ++(3.5mm,.55mm) to[bend left=3] ++(3mm,0) -- ++(3.5mm,-.55mm) -- ++(0,-4.25mm+2*\i)[rounded corners=.8mm]  -- ++(-3.5mm,-.45mm) to[bend left=3] ++(-3mm,0) [rounded corners=.1mm] -- ++(-3.5mm,.45mm) -- cycle;
+}
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-safe.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,190 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\newif\if at pingu@x at lightsaber@glow at left
+\newif\if at pingu@x at lightsaber@glow at right
+\newif\if at pingu@x at lightsaber@double at left
+\newif\if at pingu@x at lightsaber@double at right
+\def\pingu at x@saberglow at w@half{.9mm}
+\def\pingulightsaberfactor{.028}
+\pingu at create@wing at extra{lightsaber}{%
+  lightsaber \@lr/.code                = {\pingu at set@extra{lightsaber\@lr}{true}\pingu at color{lightsaber\@lr}{##1}},
+  lightsaber \@lr/.default             = pingu at blue,
+  lightsaber \@lr\space handle/.code   = \pingu at color{lightsaber\@lr @handle}{##1},%
+  lightsaber \@lr\space deco/.code     = \pingu at color{lightsaber\@lr @deco}{##1},%
+  lightsaber \@lr\space ribbs/.code    = \pingu at color{lightsaber\@lr @ribbs}{##1},%
+  lightsaber \@lr\space button/.code   = \pingu at color{lightsaber\@lr @button}{##1},%
+  lightsaber \@lr\space button b/.code   = \pingu at color{lightsaber\@lr @button at b}{##1},%
+  lightsaber \@lr\space color b/.code   = \pingu at color{lightsaber\@lr @color at b}{##1},%
+  lightsaber \@lr\space length/.code   = {\@namedef{pingu at x@lightsaber at length@\@lr}{##1}},%
+  lightsaber \@lr\space length b/.code   = {\@namedef{pingu at x@lightsaber at length@b@\@lr}{##1}},%
+  lightsaber \@lr\space yshift/.code   = {\@namedef{pingu at x@lightsaber at yshift@\@lr}{##1}},%
+  lightsaber \@lr\space glow/.is if    = @pingu at x@lightsaber at glow@\@lr,%
+  lightsaber \@lr\space double/.is if  = @pingu at x@lightsaber at double@\@lr,%
+  lightsaber \@lr\space glow core/.code   = \pingu at color{lightsaber\@lr @glow at core}{##1},%
+  lightsaber \@lr\space solid/.style = {/pingu/lightsaber \@lr\space glow=false},
+  lightsaber \@lr\space disabled/.style = {/pingu/lightsaber \@lr\space solid,/pingu/lightsaber \@lr=\@pingu at none},
+  lightsaber \@lr\space outer glow factor/.code  = {\@namedef{pingu at x@lightsaber at ogf@\@lr}{##1}}%
+}{lightsaber \@lr\space handle=pingu at silver, lightsaber \@lr\space deco=pingu at silver!12!pingu at black, lightsaber \@lr\space button=pingu at red!85!pingu at black,lightsaber \@lr\space button b=pingu at red!85!pingu at black, lightsaber \@lr\space ribbs=pingu at silver!50!pingu at black,lightsaber \@lr\space length=2cm,lightsaber \@lr\space glow=\ifpengu at setup@glows@ true\else false\fi,lightsaber \@lr\space glow core=white,lightsaber \@lr\space outer glow factor=\pingulightsaberfactor,lightsaber \@lr\space yshift=0pt,lightsaber \@lr\space length b=\csname pingu at x@lightsaber at length@\@lr\endcsname,lightsaber \@lr\space color b=\noexpand\@col}
+
+% #region lightsaber base
+\def\pingu at draw@wi at lightsaber@base#1{%
+% deco-elements
+    % base
+    \pingu at block{\csname pingu at color@lightsaber#1 at deco\endcsname}(\pingu at name-wing-#1)++(-.4mm,2.65mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) -- ++(0,-5mm) -- ++(.8mm,0) |- cycle;
+    \if at pingu@wing at item@side at left@
+    % ribbs; single path saves memory :D
+    \pingu at block{\csname pingu at color@lightsaber#1 at ribbs\endcsname}(\pingu at name-wing-#1)++(-.40mm,2.225mm+\csname pingu at x@lightsaber at yshift@#1\endcsname)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -| ++(.8mm,-.165mm) -- ++(-.8mm,0)
+    arc(90:270:.075mm) -- ++(.8mm,0) |- cycle;
+    % button
+    \pingu at block{\csname pingu at color@lightsaber#1 at button@b\endcsname}(\pingu at name-wing-#1)++(.49mm,-1.75mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+    \pingu at block{\csname pingu at color@lightsaber#1 at button\endcsname}(\pingu at name-wing-#1)++(.49mm,1.9mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+    % cover
+    \pingu at block{\csname pingu at color@lightsaber#1 at handle\endcsname}(\pingu at name-wing-#1)++(-.5mm,2.65mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) arc(180:90:.15mm) -- ++(.7mm,0) arc(90:0:.16mm) -- ++(0,-5mm) arc(360:270:.15mm) -- ++(-.7mm,0) arc (270:180:.15mm) -- ++(0,.25mm) arc(270:360:.33mm and .2mm) -- ++(0,4.1mm) arc(0:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
+    \else
+    % ribbs; single path saves memory :D (the second)
+    \pingu at block{\csname pingu at color@lightsaber#1 at ribbs\endcsname}(\pingu at name-wing-#1)++(.40mm,2.225mm+\csname pingu at x@lightsaber at yshift@#1\endcsname)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -| ++(-.8mm,-.165mm) -- ++(.8mm,0)
+        arc(90:-90:.075mm) -- ++(-.8mm,0) |- cycle;
+    % buttons
+    \pingu at block{\csname pingu at color@lightsaber#1 at button@b\endcsname}(\pingu at name-wing-#1)++(-.49mm,-1.75mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+    \pingu at block{\csname pingu at color@lightsaber#1 at button\endcsname}(\pingu at name-wing-#1)++(-.49mm,1.9mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) ellipse [x radius=.1mm, y radius=.3mm];
+    % cover
+    \pingu at block{\csname pingu at color@lightsaber#1 at handle\endcsname}(\pingu at name-wing-#1)++(.5mm,2.65mm+\csname pingu at x@lightsaber at yshift@#1\endcsname) arc(0:90:.15mm) -- ++(-.7mm,0) arc(90:180:.16mm) -- ++(0,-5mm) arc(180:270:.15mm) -- ++(.7mm,0) arc (270:360:.15mm) -- ++(0,.25mm) arc(270:180:.33mm and .2mm) -- ++(0,4.1mm) arc(180:90:.33mm and .2mm) -- ++(0,.25mm) -- cycle;
+    \fi
+}
+% #endregion
+% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
+\def\pingu at draw@wi at lightsaber@pre#1#2#3#4#5{
+    \scope[rotate around={#3:(\pingu at name-wing-#1)}]
+    \csname if at pingu@x at lightsaber@glow@#1\endcsname
+    \@for\i:={0,2,4,6,7,8,9,10,11,12,13,14,15,16,17}\do{
+        \pingu at block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#5} (\pingu at name-wing-#1)++(-\pingu at x@saberglow at w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu at x@saberglow at w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu at one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu at x@saberglow at w@half-\i*\i mm/440 and .35mm);
+    }
+    \else % draw solid
+        \pingu at block{#5} (\pingu at name-wing-#1)++(-.425mm,#2-.1mm) -- ++(.05mm,#4) arc(180:0:.375mm and .375mm) -- ++(.05mm,-#4) arc (0:-180:.425mm and .05mm);
+    \fi
+    \endscope
+}
+
+% #1 wing, #2 yshift, #3 angle, #4 length, #5 color
+\def\pingu at draw@wi at lightsaber@post#1#2#3#4#5{
+    \scope[rotate around={#3:(\pingu at name-wing-#1)}]
+    \csname if at pingu@x at lightsaber@glow@#1\endcsname
+    \ifdim\csname pingu at x@lightsaber at ogf@#1\endcsname pt>\z@
+    \pingu at layer{foreground}[]
+    \pgfinterruptboundingbox
+    \path[clip,/pingu/@invclip] (\pingu at name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
+    \@for\i:={1,1.1,1.2,1.3,1.5}\do{
+        \pingu at block[/pingu/@glow,fill opacity=\csname pingu at x@lightsaber at ogf@#1\endcsname/\i]{#5} (\pingu at name-wing-#1) ++(.05mm,#2+#4/2) circle[radius=\i*#4];
+    }
+    \endpgfinterruptboundingbox
+    \endpingu at layer
+    \fi
+        % fadings hat a rotation angle bug
+        \@for\i:={1,2}\do{
+            \pingu at block[fill opacity=.125*\i/10]{#5} (\pingu at name-wing-#1)++(-\pingu at x@saberglow at w@half+\i*\i mm/440,#2) -- ++(.05mm,#4) arc(180:0:\pingu at x@saberglow at w@half-.05mm-\i*\i mm/440 and \pingu at one-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu at x@saberglow at w@half-\i*\i mm/440 and .35mm);
+        }
+        \pingu at block{\csname pingu at color@lightsaber#1 at glow@core\endcsname} (\pingu at name-wing-#1)++(-.275mm,#2-.1mm) -- ++(.1mm,#4) arc(180:0:.175mm and .25mm) -- ++(.1mm,-#4) arc (0:-180:.275mm and .065mm);
+    \fi
+    \endscope
+}
+
+% #1 wing
+\def\pingu at draw@wi at lightsaber#1{%
+    \pingu at setup@wing{lightsaber}{#1}%
+    \scope[rotate around={\@angle:([yshift=+\csname pingu at x@lightsaber at yshift@#1\endcsname]\pingu at name-wing-#1)},xscale=1.2]
+    \pingu at draw@wi at lightsaber@pre{#1}{2.9mm+\csname pingu at x@lightsaber at yshift@#1\endcsname}{0}{\csname pingu at x@lightsaber at length@#1\endcsname}{\@col}
+    \csname if at pingu@x at lightsaber@double@#1\endcsname
+    \pingu at draw@wi at lightsaber@pre{#1}{2.65mm-\csname pingu at x@lightsaber at yshift@#1\endcsname}{180}{\csname pingu at x@lightsaber at length@b@#1\endcsname}{\csname pingu at color@lightsaber#1 at color@b\endcsname}
+    \fi
+    \pingu at draw@wi at lightsaber@base{#1}
+    % afterglow (whuile watching everglow :D)
+    \pingu at draw@wi at lightsaber@post{#1}{2.9mm+\csname pingu at x@lightsaber at yshift@#1\endcsname}{0}{\csname pingu at x@lightsaber at length@#1\endcsname}{\@col}
+    \csname if at pingu@x at lightsaber@double@#1\endcsname
+    \pingu at draw@wi at lightsaber@post{#1}{2.65mm-\csname pingu at x@lightsaber at yshift@#1\endcsname}{180}{\csname pingu at x@lightsaber at length@b@#1\endcsname}{\csname pingu at color@lightsaber#1 at color@b\endcsname}
+    \fi
+    \endscope
+}
+
+
+\newif\if at pingu@x at lightstaff@glow at left
+\newif\if at pingu@x at lightstaff@glow at right
+\pingu at create@wing at extra{lightstaff}{%
+    light-staff \@lr/.code         = {\pingu at set@extra{lightstaff\@lr}{true}\pingu at color{lightstaff\@lr}{##1}},
+    light-staff \@lr/.default      = pingu at green,
+    light-staff \@lr\space length/.code =\expandafter\def\csname pingu at lightstaff@\@lr @length\endcsname{##1},
+    light-staff \@lr\space glow length/.code =\expandafter\def\csname pingu at lightstaff@\@lr @glow at length\endcsname{##1},
+    light-staff \@lr\space head/.code = \pingu at color{lightstaff\@lr}{##1},%
+    light-staff \@lr\space staff/.code = \pingu at color{lightstaff@\@lr @staff}{##1},%
+    light-staff \@lr\space core/.code = \pingu at color{lightstaff@\@lr @head at core}{##1},%
+    light-staff \@lr\space core width/.code = \expandafter\def\csname pingu at lightstaff@\@lr @core at width\endcsname{##1},%
+    light-staff \@lr\space glow/.is if    = @pingu at x@lightstaff at glow@\@lr,%
+    light-staff \@lr\space outer glow factor/.code  = {\@namedef{pingu at x@lightstaff at ogf@\@lr}{##1}},%
+}{light-staff \@lr\space length=28mm,light-staff \@lr\space staff=pingu at bronze,light-staff \@lr\space head=pingu at green,light-staff \@lr\space core=pingu at white,light-staff \@lr\space glow=\ifpengu at setup@glows@ true\else false\fi,light-staff \@lr\space outer glow factor=.082,light-staff \@lr\space glow length=13mm,light-staff \@lr\space core width=.44mm}
+\def\pingu at draw@wi at lightstaff#1{%
+    \pingu at setup@wing{lightstaff}{#1}%
+\scope[rotate around={\@angle:(\pingu at name-wing-#1)}]
+    \pingu at block{\csname pingu at color@lightstaff@#1 at staff\endcsname}(\pingu at name-wing-#1)++(\@sidesign*-.2mm,-11mm) -- ++(0,\csname pingu at lightstaff@#1 at length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu at name-lightstaff-#1-top) -- ++(0,-\csname pingu at lightstaff@#1 at length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+    \pingu at draw@wi at lightstaff@pre{#1}{[yshift=-1.1mm]\pingu at name-lightstaff-#1-top}{\@col}
+    \pingu at block{\csname pingu at color@lightstaff@#1 at head@core\endcsname} ([yshift=-1.1mm]\pingu at name-lightstaff-#1-top) -- ++(-\csname pingu at lightstaff@#1 at core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname,1mm) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
+    \pingu at draw@wi at lightstaff@post{#1}{[yshift=-1.1mm]\pingu at name-lightstaff-#1-top}{\@col}
+\endscope
+}
+
+% #1 wing, #2 start, #3 color
+\def\pingu at draw@wi at lightstaff@pre#1#2#3{
+\csname if at pingu@x at lightstaff@glow@#1\endcsname
+\@for\i:={0,1,2,4,6,7,8,9,10,14}\do{
+    \pingu at block[fill opacity=\ifnum\i>14 .225\else.1\fi*\i/20]{#3} (#2)++(0,-\i mm/15) -- ++(-\csname pingu at lightstaff@#1 at core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
+    %  -- ++(.05mm,#4) arc(180:0:\pingu at x@saberglow at w@half-.05mm-\i*\i mm/440 and \ifnum\i>14 .85mm\else\pingu at one\fi-\i mm/30) -- ++(.05mm,-#4) arc (0:-180:\pingu at x@saberglow at w@half-\i*\i mm/440 and .35mm);
+}
+\else % draw solid
+    \pingu at block{#3} (#2) -- ++(-.55mm,1mm) -- ++(0,2mm) -- ++(.55mm,1mm) -- ++(.55mm,-1mm) -- ++(0,-2mm) -- cycle;
+\fi
+}
+
+\def\pingu at draw@wi at lightstaff@post#1#2#3{
+\csname if at pingu@x at lightstaff@glow@#1\endcsname
+\ifdim\csname pingu at x@lightstaff at ogf@#1\endcsname pt>\z@
+\pingu at layer{foreground}[]
+\pgfinterruptboundingbox
+\@for\i:={1,1.05,1.1,1.2,1.3,1.315,1.4,1.5}\do{
+    \pingu at block[/pingu/@glow,fill opacity=\csname pingu at x@lightstaff at ogf@#1\endcsname/\i]{#3} (#2)++(0,2mm) circle[radius=\i*\csname pingu at lightstaff@#1 at glow@length\endcsname];
+}
+\endpgfinterruptboundingbox
+\pingu at block[opacity=.65]{\csname pingu at color@lightstaff@#1 at head@core\endcsname} (#2)++(0,.5mm) -- ++(-.20mm,.75mm) -- ++(0,1.5mm) -- ++(.20mm,.75mm) -- ++(.20mm,-.75mm) -- ++(0,-1.5mm) -- cycle;
+\endpingu at layer
+\fi
+% fadings hat a rotation angle bug
+\@for\i:={1,2}\do{
+    \pingu at block[fill opacity=.125*\i/10]{#3} (#2)++(0,-\i mm/15+2mm) -- ++(-\csname pingu at lightstaff@#1 at core@width\endcsname-\i mm/30,1mm+\i mm/30) -- ++(0,2mm+\i mm/15) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname+\i mm/30,1mm+\i mm/30) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname+\i mm/30,-1mm-\i mm/30) -- ++(0,-2mm-\i mm/15) -- cycle;
+}
+\pingu at block{\csname pingu at color@lightstaff@#1 at head@core\endcsname} (#2) -- ++(-\csname pingu at lightstaff@#1 at core@width\endcsname,1mm) -- ++(0,2mm) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname,1mm) -- ++(\csname pingu at lightstaff@#1 at core@width\endcsname,-1mm) -- ++(0,-2mm) -- cycle;
+\fi
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-science-fiction.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,63 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\newif\if at pingu@shirt at above
+\pingu at create@extra{shirt}{%
+    shirt/.code              = \pingu at set@extra{shirt}{true}\pingu at color{shirt}{#1},
+    shirt/.default           = pingu at bronze,
+    shirt above/.is if       = @pingu at shirt@above,
+    shirt raise/.code        = \def\pingu at shirt@raise{#1},
+    shirt padding/.code      = \def\pingu at shirt@padding{#1},
+    shirt button top/.code   = \pingu at color{shirt at button@top}{#1},
+    shirt button middle/.code      = \pingu at color{shirt at button@middle}{#1},
+    shirt button bottom/.code      = \pingu at color{shirt at button@bottom}{#1},
+    shirt buttons/.style           = {/pingu/shirt button top={#1}, /pingu/shirt button middle={#1}, /pingu/shirt button bottom={#1}},
+    shirt button top shade/.code  = \pingu at color{shirt at button@top at shade}{#1},
+    shirt button middle shade/.code = \pingu at color{shirt at button@middle at shade}{#1},
+    shirt button bottom shade/.code = \pingu at color{shirt at button@bottom at shade}{#1},
+    shirt buttons shade/.style     = {/pingu/shirt button top shade={#1}, /pingu/shirt button middle shade={#1}, /pingu/shirt button bottom shade={#1}},
+    shirt without buttons/.forward to=/pingu/shirt no buttons,
+    shirt no buttons/.style        = {/pingu/shirt buttons=\@pingu at none, /pingu/shirt buttons shade=\@pingu at none},
+}{shirt buttons=pingu at black,shirt padding=0mm,shirt button top shade=\pingu at color@shirt at button@top!70!\pingu at color@shirt!70!white,shirt button middle shade=\pingu at color@shirt at button@middle!70!\pingu at color@shirt!70!white,shirt button bottom shade=\pingu at color@shirt at button@bottom!70!\pingu at color@shirt!70!white,shirt raise=2.25mm,shirt above=false}
+\def\pingu at draw@cloth at shirt@behind{}
+
+\def\pingu at draw@cloth at shirt@middle{\if at pingu@shirt at above\else\pingu at draw@cloth at shirt@main\fi}
+
+\def\pingu at draw@cloth at shirt@main{%
+\coordinate (\pingu at name-shirt-low) at ([yshift=\pingu at shirt@raise]\pingu at name-belly-center);
+\pingu at block{\pingu at color@shirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.18mm]\pingu at name-head-back-con-right) -- (\pingu at name-shirt-low) -- ([xshift=-.1mm,yshift=.24mm]\pingu at name-head-back-con-left) to[bend left=12] (\pingu at name-waist-left) to[bend left=3] ([xshift=\pingu at shirt@padding]\pingu at name-bottom-center-|\pingu at name-waist-left) to[bend left=10] ([yshift=-1.1\pingu at one]\pingu at name-bottom-center) to[bend left=10] ([xshift=-\pingu at shirt@padding]\pingu at name-bottom-center-|\pingu at name-waist-right) to[bend left=3] (\pingu at name-waist-right) to[bend left=12] (\pingu at name-head-back-con-right) -- cycle;
+
+\coordinate (\pingu at name-shirt-bt) at ([yshift=-\pingu at one]\pingu at name-shirt-low);
+\pingu at block{\pingu at color@shirt at button@top}(\pingu at name-shirt-bt) circle[radius=.4mm];
+\pingu at block{\pingu at color@shirt at button@middle}(\pingu at name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm];
+\pingu at block{\pingu at color@shirt at button@bottom}(\pingu at name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm];
+\pingu at block[even odd rule]{\pingu at color@shirt at button@top at shade}(\pingu at name-shirt-bt) circle[radius=.4mm] circle[radius=.465mm];
+\pingu at block[even odd rule]{\pingu at color@shirt at button@middle at shade}(\pingu at name-shirt-bt)++(0,-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
+\pingu at block[even odd rule]{\pingu at color@shirt at button@bottom at shade}(\pingu at name-shirt-bt)++(0,2*-1.35mm)circle[radius=.4mm] circle[radius=.465mm];
+\@for\i:={0,90,180,270}\do{
+    \pingu at block{\pingu at color@shirt at button@top at shade} (\pingu at name-shirt-bt)++(\i:.
+    25mm) circle[radius=.065mm];
+    \pingu at block{\pingu at color@shirt at button@middle at shade} (\pingu at name-shirt-bt)++(0,-1.35mm)++(\i:.25mm) circle[radius=.065mm];
+    \pingu at block{\pingu at color@shirt at button@bottom at shade} (\pingu at name-shirt-bt)++(0,2*-1.35mm)++(\i:.25mm) circle[radius=.065mm];
+}}
+
+% TODO: if flags to draw parts
+\def\pingu at draw@cloth at shirt{\if at pingu@shirt at above\pingu at draw@cloth at shirt@main\fi}
+
+\pingu at create@extra{secondshirt}{%
+    second shirt/.code        = \pingu at set@extra{secondshirt}{true}\pingu at color{secondshirt}{#1},
+    second shirt raise/.code  = \def\pingu at secondshirt@raise{#1},
+    second shirt neck/.code   = \pingu at color{secondshirt at neck}{#1},
+    second shirt/.default     = purple,
+}{second shirt raise=3.35mm,second shirt neck=\pingu at color@secondshirt!32!pingu at white}
+\def\pingu at draw@cloth at secondshirt@behind{}
+
+\def\pingu at draw@cloth at secondshirt@middle{%
+\coordinate (\pingu at name-secondshirt-low) at ([yshift=\pingu at secondshirt@raise]\pingu at name-belly-center);
+\pingu at block{\pingu at color@secondshirt} [rounded corners=.131mm] ([xshift=.2mm,yshift=.05mm]\pingu at name-head-back-con-right) -- (\pingu at name-secondshirt-low) -- ([xshift=-.16mm,yshift=.09mm]\pingu at name-head-back-con-left) to[bend left=12] (\pingu at name-waist-left) to[bend left=3] ([xshift=-.22mm]\pingu at name-bottom-center-|\pingu at name-waist-left) to[bend left=10] ([yshift=-1\pingu at one]\pingu at name-bottom-center) to[bend left=10] ([xshift=.22mm]\pingu at name-bottom-center-|\pingu at name-waist-right) to[bend left=3] (\pingu at name-waist-right) to[bend left=12] (\pingu at name-head-back-con-right) -- cycle;
+\pingu at draw{\pingu at color@secondshirt at neck} [rounded corners=.131mm] ([xshift=.025mm,yshift=-.09mm]\pingu at name-head-back-con-right) -- ([xshift=.2mm,yshift=.05mm]\pingu at name-head-back-con-right) -- (\pingu at name-secondshirt-low) -- ([xshift=-.19mm,yshift=.09mm]\pingu at name-head-back-con-left) -- ([xshift=-.02mm,yshift=-.02mm]\pingu at name-head-back-con-left);
+}
+
+% TODO: if flags to draw parts
+\def\pingu at draw@cloth at secondshirt{%
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-shirts.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,53 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@wing at extra{signpost}{%
+  signpost \@lr/.forward to    = /pingu/sign post \@lr,
+  sign post \@lr/.code         = {\pingu at set@extra{signpost\@lr}{true}\@namedef{pingu at signpost@\@lr}{##1}},
+  sign post \@lr/.default      = {},
+  signpost \@lr\space color/.forward to    = /pingu/sign post \@lr\space color,
+  sign post \@lr\space color/.code = \pingu at color{signpost\@lr}{##1},
+  signpost \@lr\space fontcolor/.forward to    = /pingu/sign post \@lr\space font color,
+  sign post \@lr\space font color/.code = \pingu at color{signpost\@lr @font}{##1},
+}{sign post \@lr\space color=brown!70!black, sign post \@lr\space font color=white!90!brown}
+\def\pingu at draw@wi at signpost#1{%
+    \pingu at setup@wing{signpost}{#1}%
+    \def\@rot{\if at pingu@wing at item@side at left@-5\else+5\fi}%
+\scope[rotate around={\@angle+\@rot:(\pingu at name-wing-#1)}]
+    \pingu at block[thick]{\@col}(\pingu at name-wing-#1)++(\@sidesign*-.225mm,-2mm) -- ++(0,15mm) arc(180:0:\@sidesign*.45mm and .375mm) -- ++(0,-15mm) arc(360:180:\@sidesign*.45mm and .375mm) -- cycle;
+    \path (\pingu at name-wing-#1)++(\@sidesign*.225mm,13mm) node[fill=\@col,rounded corners=2\p@,minimum width=14mm,minimum height=8mm,align=center,rotate=\@angle+\@rot,text=\csname pingu at color@signpost#1 at font\endcsname] {\csname pingu at signpost@#1\endcsname};
+\endscope
+}
+
+\pingu at create@extra{banner}{%
+    banner/.code             = \pingu at set@extra{banner}{true}\@namedef{pingu at banner}{#1},
+    banner/.default          = Bannertext,
+    banner band/.code        = \pingu at color{banner at band}{#1},
+    banner text color/.code  = \pingu at color{banner at text@color}{#1},
+    banner sticks color/.style={/pingu/banner stick left color=#1,/pingu/banner stick right color=#1},
+    banner stick left color/.code  = \pingu at color{banner at stick@left}{#1},
+    banner stick right color/.code = \pingu at color{banner at stick@right}{#1},
+    banner sticks length/.style={/pingu/banner stick left length=#1,/pingu/banner stick right length=#1},
+    banner stick left length/.code  = \@namedef{pingu at banner@stick at left@l}{#1},
+    banner stick right length/.code  = \@namedef{pingu at banner@stick at right@l}{#1},
+    banner raise/.code  = \@namedef{pingu at banner@raise}{#1},
+    banner height/.code  = \@namedef{pingu at banner@height}{#1},
+    banner font/.code  = \@namedef{pingu at banner@font}{#1},
+    banner bent/.code  = \@namedef{pingu at banner@bent}{#1}
+}{banner band=pingu at white!91!pingu at black,banner text color=pingu at black,banner sticks  color=pingu at bronze,banner stick left length=20mm, banner stick right length=20mm,banner bent=30,banner raise=-1mm,banner height=4mm,banner font=\bfseries}
+
+\usetikzlibrary{decorations.text}
+\def\pingu at draw@ea at banner{%
+\pingu at setup@wing{staff}{left}% we do not need the staff color, but we will use it
+\scope[rotate around={\@angle:(\pingu at name-wing-left)}]
+    \pingu at block{\pingu at color@banner at stick@left}(\pingu at name-wing-left)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu at banner@stick at left@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu at name-s-left) -- ++(0,-\pingu at banner@stick at left@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+    \path (\pingu at name-s-left)++(.5mm,\pingu at banner@height) coordinate (\pingu at name-s-left-top) ++(0,-2*\pingu at banner@height) coordinate (\pingu at name-s-left-bot);
+\endscope
+\pingu at setup@wing{staff}{right}% we do not need the staff color, but we will use it
+\scope[rotate around={\@angle:(\pingu at name-wing-right)}]
+    \pingu at block{\pingu at color@banner at stick@right}(\pingu at name-wing-right)++(\@sidesign*-.2mm,-7mm) -- ++(0,\pingu at banner@stick at right@l) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu at name-s-right) -- ++(0,-\pingu at banner@stick at right@l) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+    \path (\pingu at name-s-right)++(-.5mm,\pingu at banner@height) coordinate (\pingu at name-s-right-top) ++(0,-2*\pingu at banner@height) coordinate (\pingu at name-s-right-bot);
+\endscope
+\pingu at block[rounded corners=.3mm]{\pingu at color@banner at band} (\pingu at name-s-left-top) to[bend right=\pingu at banner@bent] (\pingu at name-s-right-top) -- (\pingu at name-s-right-bot) to[bend left=\pingu at banner@bent] (\pingu at name-s-left-bot) -- cycle;
+\path[postaction={decorate},decoration={text color=\pingu at color@banner at text@color,text along path, raise=\pingu at banner@raise, text={|\pingu at banner@font|\pingu at banner},text align={center,left indent=1mm,right indent=1mm}}] (\pingu at name-s-right) to[bend left=\pingu at banner@bent+3] (\pingu at name-s-left);
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-signs.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,79 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{medal}{%
+    medal/.code    	  = {\pingu at set@extra{medal}{true}\pingu at color{medal}{#1}},
+    medal/.default    = pingu at yellow,%
+    gold medal/.style = {medal, medal text=#1}, gold medal/.default={1},
+    silver medal/.style = {medal=pingu at silver, medal text=#1}, silver medal/.default={2},
+    bronze medal/.style = {medal=pingu at bronze, medal text=#1}, bronze medal/.default={3},
+    medal band/.code  = \pingu at color{medal at band}{#1},%
+    medal shade/.code  = \pingu at color{medal at shade}{#1},%
+    medal shade width/.code  = \def\pingu at medal@shade at w{#1},%
+    medal text/.code  = \def\pingu at x@medal at text{#1},%
+    medal text style/.style = {\pingu at color@medal!65!pingu at white},
+}{medal band=pingu at red,medal text={},medal shade={\pingu at color@medal!65!pingu at white},medal shade width=.75\p@}
+
+\def\pingu at draw@eb at medal{%
+\coordinate (\pingu at name-medal-center) at ([yshift=1.25mm]\pingu at name-belly-center);
+\pingu at block{\pingu at color@medal at band} [rounded corners=.15mm] (\pingu at name-head-back-con-right) -- (\pingu at name-medal-center) -- (\pingu at name-head-back-con-left) to[bend left=11] ++(-1.35mm,-.5mm) -- ([yshift=.7mm]\pingu at name-medal-center) -- ([xshift=1.35mm,yshift=-.5mm]\pingu at name-head-back-con-right) to[bend left=11] (\pingu at name-head-back-con-right) -- cycle;
+\pingu at block{\pingu at color@medal} (\pingu at name-medal-center) circle [radius=2.35mm];
+\pingu at draw[line width=\pingu at medal@shade at w]{\pingu at color@medal at shade} (\pingu at name-medal-center) circle [radius=2.35mm];
+\node[/pingu/@text,/pingu/medal text style] at (\pingu at name-medal-center) {\pingu at x@medal at text};
+}
+\newif\if at pingu@x at headband@knot@
+\newif\if at pingu@x at headband@bands@
+\pingu at create@extra{headband}{%
+    headband/.forward to  = /pingu/head band,
+    head-band/.forward to = /pingu/head band,
+    head band/.code       = \pingu at set@extra{headband}{true}\pingu at color{headband}{#1},
+    head band/.default    = pingu at red,
+    headband bend/.forward to  = /pingu/head band bend,
+    head-band bend/.forward to = /pingu/head band bend,
+    head band bend/.code  = \def\pingu at x@headband at bend{#1},
+    headband angle/.forward to  = /pingu/head band angle,
+    head-band angle/.forward to = /pingu/head band angle,
+    head band angle/.code  = \def\pingu at x@headband at angle{#1},
+    headband upper angle/.forward to  = /pingu/head band upper angle,
+    head-band upper angle/.forward to = /pingu/head band upper angle,
+    head band upper angle/.code  = \def\pingu at x@headband at upangle{#1},
+    % knot
+    headband knot/.forward to  = /pingu/head band knot,
+    head-band knot/.forward to = /pingu/head band knot,
+    head band knot/.is if = @pingu at x@headband at knot@,
+    headband knot color/.forward to  = /pingu/head band knot color,
+    head-band knot color/.forward to = /pingu/head band knot color,
+    head band knot color/.code  = \pingu at color{headband at knot}{#1},
+    headband knot a color/.forward to  = /pingu/head band knot a color,
+    head-band knot a color/.forward to = /pingu/head band knot a color,
+    head band knot a color/.code  = \pingu at color{headband at knot@a}{#1},
+    headband knot b color/.forward to  = /pingu/head band knot b color,
+    head-band knot b color/.forward to = /pingu/head band knot b color,
+    head band knot b color/.code  = \pingu at color{headband at knot@b}{#1},
+    headband bands/.forward to  = /pingu/head band bands,
+    head-band bands/.forward to = /pingu/head band bands,
+    head band bands/.is if = @pingu at x@headband at bands@,
+    headband bands a color/.forward to  = /pingu/head band bands a color,
+    head-band bands a color/.forward to = /pingu/head band bands a color,
+    head band bands a color/.code  = \pingu at color{headband at bands@a}{#1},
+    headband bands b color/.forward to  = /pingu/head band bands b color,
+    head-band bands b color/.forward to = /pingu/head band bands b color,
+    head band bands b color/.code  = \pingu at color{headband at bands@b}{#1},
+}{head band bend=9, head band angle=16,head band upper angle=49, head band knot color=\pingu at color@headband!78!black,head band knot a color=\pingu at color@headband at knot!90!black,head band knot b color=\pingu at color@headband at knot@a,head band bands,head band bands a color=\pingu at color@headband!78!black,head band bands b color=\pingu at color@headband}
+
+\def\pingu at draw@ea at headband@wh{1.25mm}
+\def\pingu at draw@ea at headband{%
+    \path (\pingu at name-head-center)+(\pingu at x@headband at upangle-\pingu at x@headband at angle:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-head-band-lower);
+    \path (\pingu at name-head-center)+(\pingu at x@headband at upangle:\pingu at w@half{} and \pingu at head@h at half) coordinate (\pingu at name-head-band-upper);
+    \if at pingu@x at headband@bands@
+    \pingu at block{\pingu at color@headband at bands@a} (\pingu at name-head-band-lower) to[out=-50,in=75] ++(2.75mm,-4mm) to[bend right] ++(.6mm,0) to[out=80,in=-5] (\pingu at name-head-band-upper) -- cycle;
+    \pingu at block{\pingu at color@headband at bands@b} (\pingu at name-head-band-lower) to[out=-80,in=80] ++(1.75mm,-3.35mm) to[bend right] ++(.45mm,0) to[out=80,in=-8] (\pingu at name-head-band-upper) -- cycle;
+    \fi
+    \pingu at block{\pingu at color@headband} (\pingu at name-head-center)+(\pingu at x@headband at upangle:\pingu at w@half{} and \pingu at head@h at half) to[bend left=\pingu at x@headband at bend] coordinate[pos=.5] (\pingu at name-headband-center-a) +(180-\pingu at x@headband at upangle:\pingu at w@half{} and \pingu at head@h at half) arc(180-\pingu at x@headband at upangle:180-\pingu at x@headband at upangle+\pingu at x@headband at angle:\pingu at w@half{} and \pingu at head@h at half) to[bend right=\pingu at x@headband at bend] coordinate[pos=.5] (\pingu at name-headband-center-b) (\pingu at name-head-band-lower) arc(\pingu at x@headband at upangle-\pingu at x@headband at angle:\pingu at x@headband at upangle:\pingu at w@half{} and \pingu at head@h at half) -- cycle;
+    \path (\pingu at name-headband-center-a) -- (\pingu at name-headband-center-b) coordinate[pos=.5] (\pingu at name-headband-center);
+    \if at pingu@x at headband@knot@
+    \pingu at block[rounded corners=.25mm]{\pingu at color@headband at knot@a} (\pingu at name-headband-center-a)++(-.15mm,-.6mm) to[out=155,in=-5] ++(-3mm,\pingu at one) to[bend right=15] ([xshift=-3mm,yshift=-.2mm]\pingu at name-headband-center-b) to[in=-155,out=5] ++(.285cm,.8mm) -- cycle;
+    \pingu at block[rounded corners=.25mm]{\pingu at color@headband at knot@b} (\pingu at name-headband-center-a)++(.15mm,-.6mm) to[out=25,in=-175] ++(3mm,\pingu at one) to[bend left=15] ([xshift=3mm,yshift=-.2mm]\pingu at name-headband-center-b) to[in=-25,out=175] ++(-.285cm,.8mm) -- cycle;
+    \pingu at block[rounded corners=.25mm]{\pingu at color@headband at knot} (\pingu at name-headband-center-a)++(-\pingu at draw@ea at headband@wh,.12mm) to[bend right=9] ++(2*\pingu at draw@ea at headband@wh,0) -- ([xshift=\pingu at draw@ea at headband@wh,yshift=-.12mm]\pingu at name-headband-center-b) to[bend right=9] ++(-2*\pingu at draw@ea at headband@wh, 0) -- cycle;
+    \fi
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-sport.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,126 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\pingu at create@extra{vrheadset}{%
+    vr-headset/.code             = \pingu at set@extra{vrheadset}{true}\pingu at color{vrheadset}{#1},
+    vr-headset/.default          = pingu at black!92!gray,
+    vr-headset band/.code        = \pingu at color{vrheadset at band}{#1},
+    vr-headset band top/.code    = \pingu at color{vrheadset at band@top}{#1},
+    vr-headset text/.code        = \def\pingu at x@vrheadset at text{#1},
+    vr-headset text color/.code  = \pingu at color{vrheadset at text@color}{#1},
+    vr-headset hair/.style       = {/pingu/hair 2=!hide,/pingu/hair 3=!hide,/pingu/hair 4=!hide}
+}{vr-headset band=\pingu at color@vrheadset!92!gray,vr-headset text={\textit{\textsf{VR\thinspace\texttrademark}}},vr-headset text color=pingu at white,vr-headset band top=\pingu at color@vrheadset!96!gray}
+
+\def\pingu at draw@ea at vrheadset{%
+\pingu at layer{middle}[]
+    \pingu at block{\pingu at color@vrheadset} [rounded corners=1.25mm]([yshift=3.45mm]\pingu at name-waist-right|-\pingu at name-eye-right) to[bend left=2] coordinate[pos=.5] (@) ([yshift=3.45mm]\pingu at name-waist-left|-\pingu at name-eye-left) to[bend left=3] coordinate (\pingu at name-vrh-ol) ++(0,-6.25mm) to[bend left=13] ([yshift=-1mm]\pingu at name-head-center) to[bend left=13] ([yshift=3.45mm-6.25mm]\pingu at name-waist-right|-\pingu at name-eye-right) -- cycle;
+    \path (\pingu at name-vrh-ol)++(-2.25mm,2mm) node[text=\pingu at color@vrheadset at text@color,scale=.25] {\pingu at x@vrheadset at text};
+\endpingu at layer
+\if at pingu@do at back@\else
+    % top band
+    \pingu at block[rounded corners=1pt]{\pingu at color@vrheadset at band@top} (@)++(-1.05mm+.15mm,0) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu at name-head-top) to[bend left=2] ++(1.6mm,0) to[bend left=2] ([xshift=1.25mm+.15mm]@);
+\fi
+    % we draw a band for the background
+\pingu at layer{background}[]
+\pingu at block[line cap=round]{\pingu at color@vrheadset at band} ([yshift=1mm]\pingu at name-waist-right|-\pingu at name-eye-right) to[bend left=3] coordinate[pos=.5] (@b) ([yshift=1mm]\pingu at name-waist-left|-\pingu at name-eye-left) arc(90:-90:.25mm and 1mm) to[bend right=3] ([yshift=-1mm]\pingu at name-waist-right|-\pingu at name-eye-right) arc (270:90:.25mm and 1mm);
+\pingu at block[rounded corners=1pt]{\pingu at color@vrheadset at band@top} (@b)++(-1.25mm+.2mm,-1.25mm) to[bend right=2] ([xshift=-.85mm+.3mm,yshift=.3mm]\pingu at name-head-top) to[bend right=2] ++(1.6mm,0) to[bend right=2] ([xshift=1.15mm+.2mm,yshift=-1.25mm]@b) -- cycle;
+\endpingu at layer
+}
+\pingu at create@extra{headphone}{%
+    headphones/.forward to      = /pingu/headphone,
+    headphone/.code             = \pingu at set@extra{headphone}{true}\pingu at color{headphone}{#1},
+    headphone/.default          = pingu at blue!80!pingu at black,
+    headphone left/.code        = \pingu at color{headphone at left}{#1},
+    headphone right/.code       = \pingu at color{headphone at right}{#1},
+    headphones outer/.forward to  = /pingu/headphone outer,
+    headphone outer/.style        = {/pingu/headphone left outer=#1,/pingu/headphone right outer=#1}, headphone outer/.default      = pingu at black,
+    headphone left outer/.code    = \pingu at color{headphone at left@p}{#1}, headphone left outer/.default  =pingu at black,
+    headphone right outer/.code   = \pingu at color{headphone at right@p}{#1}, headphone right outer/.default=pingu at black,
+    headphones inner/.forward to  = /pingu/headphone inner,
+    headphone inner/.style        = {/pingu/headphone left inner=#1,/pingu/headphone right inner=#1}, headphone inner/.default      = pingu at black,
+    headphone left inner/.code    = \pingu at color{headphone at left@i}{#1}, headphone left inner/.default = pingu at black,
+    headphone right inner/.code   = \pingu at color{headphone at right@i}{#1}, headphone right inner/.default=pingu at black,
+}{headphone left=\pingu at color@headphone!65!pingu at black,headphone right=\pingu at color@headphone at left,headphone left outer=\@pingu at none,
+,headphone right outer=\@pingu at none,,headphone left inner=\@pingu at none,
+,headphone right inner=\@pingu at none}
+
+\def\pingu at draw@ea at headphone{%
+\if at pingu@do at back@ \pingu at layer{background}[] \fi
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at right@p} ([xshift=-\pingu at one,yshift=3.22mm]\pingu at name-wings-side-right|-\pingu at name-eye-right) arc (93:273:.565mm and 2.11mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at right@i} ([xshift=\pingu at one-.366mm,yshift=3.22mm]\pingu at name-wings-side-right|-\pingu at name-eye-right) arc (87:-93:.565mm and 2.14mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at right} ([xshift=-\pingu at one+.2mm,yshift=3.22mm]\pingu at name-wings-side-right|-\pingu at name-eye-right) arc (92:272:.565mm and 2.1mm) -- ++(.8mm,-.05mm) arc (270:450:.425mm and 2.1mm) -- cycle;
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at left@p} ([xshift=\pingu at one,yshift=3.22mm]\pingu at name-wings-side-left|-\pingu at name-eye-left) arc (87:-93:.565mm and 2.11mm) -- ++(-.8mm,.075mm) -- ++(0,4.075mm) -- cycle;
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at left@i} ([xshift=-\pingu at one+.366mm,yshift=3.22mm]\pingu at name-wings-side-left|-\pingu at name-eye-left) arc (93:273:.565mm and 2.14mm) -- ++(.8mm,.075mm) -- ++(0,4.075mm);
+    \pingu at block[rounded corners=.1mm]{\pingu at color@headphone at left} ([xshift=\pingu at one-.2mm,yshift=3.22mm]\pingu at name-wings-side-left|-\pingu at name-eye-left) arc (88:-92:.565mm and 2.1mm) -- ++(-.8mm,-.05mm) arc (270:90:.425mm and 2.1mm) -- cycle;
+    \pingu at block{\pingu at color@headphone} ([xshift=-\pingu at one,yshift=\pingu at one]\pingu at name-wings-side-right|-\pingu at name-eye-right)
+    arc(180:0:{\pingu at one+\pingu at w@half} and {\pingu at head@h at half-.5\pingu at one}) arc(0:-180:.65mm and .33mm)
+    arc(0:180:{\pingu at one+\pingu at w@half-2*.65mm} and {\pingu at head@h at half+.33\pingu at one-2*.6mm-1.1\pingu at one})
+    arc(0:-180:.65mm and .33mm) -- cycle;
+\if at pingu@do at back@ \endpingu at layer \fi
+}
+
+\pingu at create@wing at extra{vrcontroller}{%
+vr-controller \@lr/.code         = {\pingu at set@extra{vrcontroller\@lr}{true}\pingu at color{vrcontroller\@lr}{##1}},
+vr-controller \@lr/.default      = pingu at green,
+vr-controller \@lr\space handle/.code = \pingu at color{vrcontroller\@lr @handle}{##1},%
+vr-controller \@lr\space second/.code = \pingu at color{vrcontroller\@lr @second}{##1},%
+vr-controller \@lr\space second shade/.code = \pingu at color{vrcontroller\@lr @second at shade}{##1}%
+}{vr-controller \@lr\space handle={\csname pingu at color@vrcontroller\@lr\endcsname!76!pingu at black},vr-controller \@lr\space second={\csname pingu at color@vrcontroller\@lr\endcsname!56!pingu at black},vr-controller \@lr\space second shade={\csname pingu at color@vrcontroller\@lr\endcsname!96!pingu at black}}
+
+% #1 wing
+\def\pingu at draw@wi at vrcontroller#1{%
+    \pingu at setup@wing{vrcontroller}{#1}%
+    \pingu at block[rotate around={\@angle:(\pingu at name-wing-#1)}]{\csname pingu at color@vrcontroller#1 at handle\endcsname}(\pingu at name-wing-#1)++(.5mm,5mm) to[bend right=1] ++(-.25mm,-5.5mm) arc (0:-180:.325mm and .1mm) to[bend right=1] ++(-.7mm,5.5mm) -- cycle coordinate[pos=.5] (@);
+    \def\@y{2.06mm} \def\@@y{.78mm}
+    \pingu at block[rotate around={\@angle:(\pingu at name-wing-#1)},even odd rule]{\csname pingu at color@vrcontroller#1 at second\endcsname}([yshift=.1mm]@) arc (90:450:{\@y} and 1mm) coordinate[pos=.25] (@r) coordinate[pos=.75] (@l) ([yshift=-.6mm]@) arc (90:0:{\@@y} and .25mm) arc (0:-180:{\@@y} and .35mm) arc (180:90:{\@@y} and .25mm);
+    % \pingu at draw[rotate around={\@angle:(\pingu at name-wing-#1)}]{\csname pingu at color@vrcontroller#1 at second@shade\endcsname} ([yshift=-.9mm]@)++(180:{\@@y} and .3mm) arc (180:0:{\@@y} and .3mm);
+    \def\@toruslow{(@l) to[bend left=7] ++(-.2mm,-.875mm) to[bend left=15] coordinate[pos=.95] (@c) ++(-2*\@y+.4mm,0) [sharp corners] to[bend left=7] ++(-.2mm,.875mm) to[bend right=30] cycle}
+    \pingu at block[rounded corners=.1mm,rotate around={\@angle:(\pingu at name-wing-#1)}]{\csname pingu at color@vrcontroller#1 at second\endcsname} \@toruslow;
+    \scope[rounded corners=.1mm,rotate around={\@angle:(\pingu at name-wing-#1)}]
+    \clip \@toruslow;
+    \pingu at block[opacity=.1]{black} (@l) to[bend left=14] (@c) -- ++(0,-2mm) -| cycle;
+    \endscope
+}
+
+
+\pingu at create@wing at extra{laptop}{%
+  laptop \@lr/.code                  = {\pingu at set@extra{laptop\@lr}{true}\pingu at color{laptop\@lr}{##1}},
+  laptop \@lr/.default               = gray!80!pingu at white,
+  laptop \@lr\space bracket/.code    = \pingu at color{laptop\@lr @bracket}{##1},
+  laptop \@lr\space lower/.code      = \pingu at color{laptop\@lr @lower}{##1},
+  laptop \@lr\space key/.code        = \pingu at color{laptop\@lr @key}{##1},
+  laptop \@lr\space display/.code    = \pingu at color{laptop\@lr @display}{##1},
+  laptop \@lr\space content/.code    = \@namedef{pingu at x@laptop\@lr @content}{##1}, % tikz content
+  laptop \@lr\space mid/.code        = \@namedef{pingu at x@laptop\@lr @mid}{##1}, % tikz content
+}{laptop \@lr\space bracket=pingu at black!80!\csname pingu at color@laptop\@lr\endcsname,laptop \@lr\space lower=\csname pingu at color@laptop\@lr\endcsname!95!pingu at black,laptop \@lr\space key=\csname pingu at color@laptop\@lr\endcsname!92!pingu at white,laptop \@lr\space display=\csname pingu at color@laptop\@lr\endcsname!32!pingu at white,laptop \@lr\space content={},laptop \@lr\space mid={}}
+
+% #1 wing
+\def\pingu at draw@wi at laptop#1{%
+    \pingu at setup@wing{laptop}{#1}%
+    \scope[rotate around={\@angle+5:(\pingu at name-wing-#1)},shift={(\pingu at name-wing-#1)}]
+        \pingu at block[rounded corners=1pt]{\csname pingu at color@laptop#1 at lower\endcsname}(-6.9mm,0) -- ++(-.1mm,-4.75mm) -- ++(14mm,0) -- ++(-.1mm,4.75mm) -- cycle;
+        \pingu at block[rounded corners=1pt]{\@col}(-6.9mm,0) -- ++(0,7mm) -- ++(13.8mm,0) -- ++(0,-7mm) -- cycle;
+        \pingu at block[rounded corners=.125mm]{\csname pingu at color@laptop#1 at bracket\endcsname}(-6.4mm,.125mm) -- ++(0,-.25mm) -- ++(12.8mm,0) -- ++(0,.25mm) -- cycle;
+        % keys
+        \foreach[count=\y from 0,evaluate=\y as \extpadding using 0.005*\y,evaluate=\y as \rextpadding using 0.05*\y] \row in {
+            % manually account for padding
+                {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
+                {.63,1.5,1,1,1,1,1,1,1,1,1,1,1},
+                {0,1,1,1,1,1,1,1,1,1,1,1,1,1},
+                {0,1,1,1,1,1,4.62,1,1,1,1},
+            } {
+            \def\lengthincr{-\rextpadding mm}
+            \foreach[count=\i from 0,evaluate=\len as \l using 0.85*\len] \len in \row {
+                \ifnum\i=0 \else % first one is silent:
+                \pingu at block[rounded corners=.125mm]{\csname pingu at color@laptop#1 at key\endcsname}(\lengthincr-6.4mm,-\y mm-.5mm) rectangle ++(\l mm,-.75mm) node[midway,centered,text=\@col,scale=.3] {\textbullet};
+                \fi
+                \xdef\lengthincr{\the\dimexpr\lengthincr+\l mm+.13mm+\extpadding mm}
+            }
+        }
+        % display, we modify the lower shift to adjust height offset
+        \pingu at block[rounded corners=1pt]{\csname pingu at color@laptop#1 at display\endcsname}(-6.7mm,.25mm+.05mm) rectangle ++(13.4mm,6.45mm) node[midway,centered,rotate=\@angle+5,text width=13.2mm,align=center,minimum height=6.2mm] {\csname pingu at x@laptop#1 at mid\endcsname};
+        \scope[shift={(-6.7mm,.25mm+.05mm)}]
+            \csname pingu at x@laptop#1 at content\endcsname
+        \endscope
+    \endscope
+}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus-technology.lib.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty	2022-08-26 19:56:32 UTC (rev 64199)
@@ -0,0 +1,1208 @@
+% Florian Sihler, 2022
+% Licensed under GNU General Public License version 3
+% https://opensource.org/licenses/gpl-3.0.html
+\def\tikzpingus at filename{tikzpingus}
+\ProvidesPackage{\tikzpingus at filename}[2022/08/24 version v1.0 Penguins in TikZ]
+\newif\ifpengu at setup@glows@
+\DeclareOption{glows}{\pengu at setup@glows at true}\DeclareOption{noglows}{\pengu at setup@glows at false}
+\newif\ifpengu at setup@manual at layers@
+\DeclareOption{manual-layers}{\pengu at setup@manual at layers@true}\DeclareOption{nomanual-layers}{\pengu at setup@manual at layers@false}
+\newif\ifpengu at setup@bare@
+\DeclareOption{bare}{\pengu at setup@bare at true}\DeclareOption{nobare}{\pengu at setup@bare at false}
+\ProcessOptions*
+
+\RequirePackage{etoolbox}
+\RequirePackage{tikz}
+\usetikzlibrary{intersections,shadings,patterns.meta,decorations.pathmorphing,shapes.symbols,shapes.geometric}
+
+\pgfdeclarelayer{background}\pgfdeclarelayer{foreground}\pgfdeclarelayer{middle}
+\pgfdeclarelayer{very-background}
+\ifpengu at setup@manual at layers@\else
+\pgfsetlayers{very-background,background,main,middle,foreground}
+\fi
+% #region whole setup
+% #region colors
+\def\@pingu at color@ #1#2(#3,#4,#5){\definecolor{pingu@#1}{#2}{#3,#4,#5}}
+\@pingu at color@{main}RGB(3,14,29)
+\@pingu at color@{black}RGB(23,19,19)
+\@pingu at color@{silver}RGB(192,192,192)
+\@pingu at color@{bronze}RGB(205,127,50)
+\@pingu at color@{white}RGB(248,248,248)
+\@pingu at color@{yellow}RGB(252,187,21)
+\@pingu at color@{lightblue}RGB(174,229,243)
+\@pingu at color@{blue}RGB(48,161,247)
+\@pingu at color@{green}RGB(129,204,41)
+\@pingu at color@{red}RGB(217, 40, 28)
+\@pingu at color@{purple}RGB(244,48,93)
+\def\@pingu at none{!hide}
+% #endregion
+
+% #region lengths and dimens
+\newdimen\pingu at one@eight     \pingu at one@eight=.125cm % constants to save tokens
+\newdimen\pingu at one           \pingu at one=1mm
+
+\newdimen\pingu at w@half        \pingu at w@half=.9375cm
+\newdimen\pingu at head@h at half   \pingu at head@h at half=.9\pingu at w@half
+\newdimen\pingu at side@h at half   \pingu at side@h at half=1.275cm
+\newdimen\pingu at bend          \pingu at bend=\pingu at one@eight
+\newdimen\pingu at lower@off     \pingu at lower@off=.25cm
+\newdimen\pingu at outer@off     \pingu at outer@off=.25cm
+\def\basicfeetbend{45}
+\newdimen\pingu at foot@outer at w  \pingu at foot@outer at w=4.5mm
+\newdimen\pingu at foot@outer at h  \pingu at foot@outer at h=.25cm
+
+\newdimen\pingu at headcon@x     \pingu at headcon@x=.39375cm% .75*.525cm
+\newdimen\pingu at headcon@y     \pingu at headcon@y=.46735cm%.719*.65cm
+
+\newdimen\pingu at foot@inner at w  \pingu at foot@inner at w=.55cm
+\newdimen\pingu at foot@inner at h  \pingu at foot@inner at h=.115cm
+\newdimen\pingu at foot@offset at w \pingu at foot@offset at w=-.125cm
+\newdimen\pingu at foot@single at w \pingu at foot@single at w=.105cm
+\newdimen\pingu at foot@single at h \pingu at foot@single at h=2mm
+\def\eyebaseang{38.5}
+\newdimen\pingu at eye@shift     \pingu at eye@shift=.8mm
+\def\pinguanglehl{.93}
+\def\pinguanglehr{.07}
+% #endregion
+
+% #region selections
+\def\pingu at csappto#1#2{\expandafter\ifx\csname #1\endcsname\@empty\@namedef{#1}{#2}\else\expandafter\g at addto@macro\csname #1\endcsname{, #2}\fi}
+
+\def\pingu at create@sel at err#1#2{%
+    \PackageError{\tikzpingus at filename}{There is no '#2' drawer for '#1'. Choose one of '\@nameuse{@pingu@#1@}'}{Or ask the package maintainer :D}%
+}
+
+\def\pingu@@select#1#2{\expandafter\let\csname @pingu at drawer@#2@\expandafter\endcsname\csname @pingu at drawer@#2@#1@\endcsname
+\expandafter\def\csname @pingu at select@#2@\expandafter\endcsname{#1}}
+
+% #1 name | none default
+\def\pingu at create@selection#1#2{%
+    \expandafter\newcount\csname pc@#1 at max\endcsname
+    \expandafter\let\csname @pingu@#1@\endcsname\@empty
+    \expandafter\long\expandafter\def\csname pingu@#1 at add\endcsname##1##2{%
+        \ifcsname @pingu at drawer@#1@##1@\endcsname\else% do not re-append!
+        \pingu at csappto{@pingu@#1@}{"##1"}
+        \expandafter\global\expandafter\advance\csname pc@#1 at max\endcsname1\relax\fi
+        \expandafter\long\expandafter\def\csname @pingu at drawer@#1@##1@\endcsname{##2}%
+    }
+    \expandafter\def\csname pingu@#1 at select\endcsname##1{%
+        \def\@tmp{##1}\ifx\@pingu at random\@tmp% if random is selected, we choose random from pack in @pingu@#1@
+        % we could do this with pgfmathdeclarerandomlist, but this requires more,
+        % at the moment, i do not care about efficiency, and we do a foreach
+        % we do not pick none for random
+        \edef\@arr{{\csname @pingu@#1@\endcsname}}%
+        % we use 1 as minimum, because 0 is ALWAYS 'none' by definition
+        \pgfmathrandominteger{\@ars}{1}{\csname pc@#1 at max\endcsname-1}%
+        \pgfmathsetmacro\@sel{\@arr[\@ars]}%
+        \expandafter\pingu@@select\expandafter{\@sel}{#1}% consolidate the choice in case of multiple
+        \else\ifcsname @pingu at drawer@#1@##1@\endcsname
+            \pingu@@select{##1}{#1}%
+        \else\pingu at create@sel at err{#1}{##1}\fi\fi
+    }%
+    \csname pingu@#1 at add\endcsname{none}{#2}%
+}
+\def\@pingu at random{!random}
+
+\long\def\pingu at create@extra#1#2#3{\expandafter\newif\csname if at pingu@x@#1@\endcsname\pgfqkeys{/pingu}{#2,extra defaults/.append style={#3}}}
+\def\pingu at set@extra#1#2{\csname @pingu at x@#1@#2\endcsname}
+
+\pingu at create@selection{lefteye}{%
+    \path ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left);%
+}
+\pingu at create@selection{righteye}{%
+    \path ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate (\pingu at name-eye-right);%
+}
+\pingu at create@selection{leftwing}{%
+    \path ([yshift=-6.5mm]\pingu at name-wings-side-left)
+        coordinate (\pingu at name-wing-left-start)
+        coordinate (\pingu at name-wing-left-tip)
+        coordinate (\pingu at name-wing-left);%
+}
+\pingu at create@selection{rightwing}{%
+    \path ([yshift=-6.5mm]\pingu at name-wings-side-right)
+        coordinate (\pingu at name-wing-right-start)
+        coordinate (\pingu at name-wing-right-tip)
+        coordinate (\pingu at name-wing-right);%
+}
+\pingu at create@selection{hairstyle}{}
+\pingu at create@selection{bill}{%
+    \coordinate (\pingu at name-bill-bottom) at (\pingu at name-bill);%
+}
+\pingu at create@selection{leftfoot}{}
+\pingu at create@selection{rightfoot}{}
+\pingu at create@selection{bodytype}{\pingu at x@bodytype at none}
+% #endregion
+
+% #region key setup
+\def\pingu at color#1#2{\expandafter\def\csname pingu at color@#1\endcsname{#2}}
+
+% HACK: store scale
+\pgfqkeys{/tikz}{scale/.append code={\def\pingu at default@scale{#1}}}
+\def\pingu at default@scale{1}
+
+\newif\if at pingu@draw at metadots
+\newif\if at pingu@wi at flip@left
+\newif\if at pingu@wi at flip@right
+\newif\if at pingu@feet at front
+
+\pgfqkeys{/pingu}{
+  /pingu/.search also={/tikz,/pgf},
+  name/.code                    = \def\pingu at name{#1},
+  scale/.code                   = \def\pingu at scale{#1},
+  @post/.code                   = \def\pingu at post{#1},
+  @body at app/.code               = \def\pingu at body@app{#1},
+  meta dots/.forward to         = /pingu/meta-dots,
+  meta-dots/.is if              = @pingu at draw@metadots,
+  meta-dots/.default            = true,
+  @pingu at all/.style             = {},
+  @block/.style                 = {/pingu/@pingu at all=#1, fill=#1},
+  @draw/.style                  = {/pingu/@pingu at all=#1, cap=round, draw=#1},
+  @text/.style                  = {transform shape,text=\pingu at color@body at main},
+  @clip even odd rule/.code     = {\pgfseteorule}, % Credit to Andrew Stacey
+  @invclip/.style               = {clip,insert path=[/pingu/@clip even odd rule]{[reset cm](-\maxdimen,-\maxdimen)rectangle(\maxdimen,\maxdimen)}},
+  @pingu/.style = {}, @pingu at main/.style = {},
+  % feet
+  left foot color/.code         = \pingu at color{foot at left}{#1},
+  left foot/.code               = \pingu at leftfoot@select{#1},
+  right foot color/.code        = \pingu at color{foot at right}{#1},
+  right foot/.code              = \pingu at rightfoot@select{#1},
+  feet/.style                   = {/pingu/left foot={#1}, /pingu/right foot={#1}},
+  feet color/.style             = {/pingu/left foot color={#1}, /pingu/right foot color={#1}},
+  feet front/.is if             = @pingu at feet@front,
+  % body
+  body type/.code               = \pingu at bodytype@select{#1},
+  body main/.code               = \pingu at color{body at main}{#1},
+  body head/.code               = \pingu at color{body at head}{#1},
+  body/.style                   = {/pingu/body main={#1}, /pingu/body head={#1}},
+  body front/.code              = \pingu at color{body at front}{#1},
+  % belly
+  belly/.forward to             = /pingu/belly text,
+  belly text/.style             = {/pingu/belly raw={\node[/pingu/@text,opacity=.2] {#1};}},
+  belly raw/.code               = \def\pingu at belly@raw{#1},
+  heart/.style                  = {/pingu/belly raw={\node[/pingu/@text,#1] {\Large\faHeart};}},
+  % eyes
+  left eye/.code                = \pingu at lefteye@select{#1},
+  left eye color/.code          = \pingu at color{eye at left}{#1},
+  left eye second color/.code   = \pingu at color{eye at second@left}{#1},
+  right eye/.code               = \pingu at righteye@select{#1},
+  right eye color/.code         = \pingu at color{eye at right}{#1},
+  right eye second color/.code  = \pingu at color{eye at second@right}{#1},
+  eyes/.style                   = {/pingu/left eye={#1}, /pingu/right eye={#1}},
+  eyes color/.style             = {/pingu/left eye color={#1}, /pingu/right eye color={#1}},
+  eyes second color/.style      = {/pingu/left eye second color={#1}, /pingu/right eye second color={#1}},
+  % wings
+  left wing color/.code         = \pingu at color{left at wing}{#1},
+  left wing/.code               = \pingu at leftwing@select{#1},
+  right wing color/.code        = \pingu at color{right at wing}{#1},
+  right wing/.code              = \pingu at rightwing@select{#1},
+  wings/.style                  = {/pingu/left wing={#1}, /pingu/right wing={#1}},
+  wings color/.style            = {/pingu/left wing color={#1},
+                                   /pingu/right wing color={#1}},
+  left item angle/.forward to   = /pingu/left wing item angle,
+  left wing item angle/.code    = {\def\pingu at wing@left at item@angle at user{#1}},%
+  left item flip/.forward to    = /pingu/left wing item flip,
+  left wing item flip/.is if    = @pingu at wi@flip at left,
+  right item angle/.forward to  = /pingu/right wing item angle,
+  right item flip/.forward to   = /pingu/right wing item flip,
+  right wing item angle/.code   = {\def\pingu at wing@right at item@angle at user{#1}},%
+  right wing item flip/.is if   = @pingu at wi@flip at right,
+  % bill
+  bill/.code                    = \pingu at bill@select{#1},
+  bill color/.code              = \pingu at color{bill}{#1},
+  % hair color TODO: other colors
+  hair/.forward to              = /pingu/hairs color,
+  hairs/.forward to             = /pingu/hairs color,
+  hair 1 color/.code            = \pingu at color{hair at a}{#1}, hair 1/.forward to = /pingu/hair 1 color,
+  hair 2 color/.code            = \pingu at color{hair at b}{#1}, hair 2/.forward to = /pingu/hair 2 color,
+  hair 3 color/.code            = \pingu at color{hair at c}{#1}, hair 3/.forward to = /pingu/hair 3 color,
+  hair 4 color/.code            = \pingu at color{hair at d}{#1}, hair 4/.forward to = /pingu/hair 4 color,
+  hair 5 color/.code            = \pingu at color{hair at e}{#1}, hair 5/.forward to = /pingu/hair 5 color,
+  hairs color/.style            = {/pingu/hair 1 color={#1},  /pingu/hair 2 color={#1}, /pingu/hair 3 color={#1},
+                                   /pingu/hair 4 color={#1}, /pingu/hair 5 color={#1}},
+  hair style/.forward to        = /pingu/hairstyle,
+  hairstyle/.code               = \pingu at hairstyle@select{#1},
+  % size
+  height/.code                  = \setlength{\pingu at side@h at half}{#1},%
+  small height/.forward to      = /pingu/small size, small/.forward to = /pingu/small size,
+  small size/.style             = {/pingu/height=11mm},
+  normal height/.forward to     = /pingu/normal size, normal/.forward to = /pingu/normal size,
+  normal size/.style            = {/pingu/height=1.275cm},
+  large height/.forward to      = /pingu/large size, large/.forward to = /pingu/large size,
+  large size/.style             = {/pingu/height=15mm},
+  random from/.code                  = {\pgfmathdeclarerandomlist{@tmp}{#1}\pgfmathrandomitem{\@tmp}{@tmp}\edef\tmp{\noexpand\@pingu at set{\@tmp}}\tmp},
+  defaults/.style               = {%
+    name=pingu, feet=normal, feet color=pingu at yellow, body=pingu at main,
+    body type=normal, at post={}, at body@app={},
+    body front=pingu at white,%
+    eyes=normal, eyes color=pingu at black, eyes second color=pingu at white,
+    bill=normal, bill color=pingu at yellow,
+    wings=normal, wings color=\pingu at color@body at main,
+    hairstyle=normal, hairs color=\pingu at color@body at main,
+    belly raw={}, scale=\pingu at default@scale,
+    left wing item angle=0,right wing item angle=0,extra defaults,user defaults,%
+    feet front=false%
+  },
+  user defaults/.style = {},
+  % will be set individually
+  extra defaults/.style = {}
+}
+\def\@pingu at set#1{\pgfqkeys{/pingu}{#1}}
+\def\pingudefaults#1{\pgfqkeys{/pingu}{user defaults/.style={#1}}}
+\def\pingudefaultsappend#1{\pgfqkeys{/pingu}{user defaults/.append style={#1}}}
+% #endregion
+
+% #region subenvs
+\def\pingu at layer#1[#2]{\pgfonlayer{#1}\scope[/pingu/@pingu,#2]}
+\def\endpingu at layer{\endscope\endpgfonlayer}
+% #endregion
+
+% #region complete sets and styles
+\newif\if at pingu@do at back@
+\pgfqkeys{/pingu}{
+  :line/.style            = {/pingu/@block/.append style={fill=none,draw=##1!80!black,shade=none,path fading=none}},
+  :fill/.style            = {/pingu/body=#1,/pingu/body front=#1,/pingu/feet color=#1, /pingu/bill color=#1, /pingu/eyes color=#1, /pingu/eyes second color=#1},
+  :fill/.default          = pingu at main,
+  :ghost parts/.style     = {/pingu/@pingu at all/.append style={opacity={#1}}},
+  :ghost parts/.default   = {.5},
+  :ghost/.style           = {/pingu/@pingu/.append style={opacity=#1,transparency group}},
+  :ghost/.default         = {.5},
+  :ghost glow/.style      = {/pingu/@pingu/.append style={opacity=#1,transparency group},/pingu/@block/.append style={/pingu/@glow}},
+  :ghost glow/.default    = {.5},
+  :devil/.style           = {/pingu/devil horns=#1,/pingu/eyes devil=#1},
+  :devil/.default         = pingu at purple,
+  :hide/.style            = {/pingu/body type=none,/pingu/hair=\@pingu at none,/pingu/feet=none,/pingu/wings=none,/pingu/bill=none,/pingu/eyes=none},
+  :back/.code            = {\pgfqkeys{/pingu}{eyes=none,bill=none,body front=\pingu at color@body at main, at pingu@main/.append style={xshift=2\pingu at w@half,xscale=-1},feet back}\gdef\pingu at back@init at call{\pgfsetlayers{foreground,middle,main,background}\gdef\pingu at back@init at call{}}\@pingu at do@back at true}% TODO: back foot clipping?
+}% TODO: draw another penguin that is then drawn above with only back
+\let\pingu at back@init at call\@empty
+% #endregion
+
+% #region glows
+\ifpengu at setup@glows@
+\usetikzlibrary{fadings}%
+\tikzfading[name=pingu at halo fade out,inner color=transparent!0,outer color=transparent!100]
+\pgfqkeys{/pingu}{@glow/.style={path fading={pingu at halo fade out},#1}}
+\else
+\pgfqkeys{/pingu}{@glow/.style={},/pingu/@saber at glow/.style={}}
+\fi
+% #endregion
+% #endregion
+
+% #region core
+%   #region path commands
+\long\def\pingu at path{\@dblarg\pingu at path@}
+\def\pingu at path@[#1]#2#3;{\protected at edef\@tmp{#2}\ifx\@tmp\@pingu at none\else\path[#1,#2] #3;\fi}
+\long\def\pingu at block{\@dblarg\pingu at block@}
+\def\pingu at block@[#1]#2#3;{\protected at edef\@tmp{#2}\ifx\@tmp\@pingu at none\else\path[#1,/pingu/@block=#2] #3;\fi}
+\long\def\pingu at draw{\@dblarg\pingu at draw@}
+\def\pingu at draw@[#1]#2#3;{\protected at edef\@tmp{#2}\ifx\@tmp\@pingu at none\else\path[#1,/pingu/@draw=#2] #3;\fi}
+% #endregion
+
+\newcommand*\pingu[1][]{%
+\ifpengu at setup@manual at layers@\pgfsetlayers{background,main,middle,foreground}\fi\begingroup
+\@pingu at do@back at false
+\pgfqkeys{/pingu}{defaults, #1}%
+\scope[/pingu/@pingu,/pingu/@pingu at main]
+\@pingu at drawer@bodytype@
+\pingu at body@app
+\path (\pingu at name-head-center)++(0,-.05mm-\pingu at outer@off) coordinate (\pingu at name-bill);
+
+\scope[shift=(\pingu at name-belly-center)]
+\clip[use path=\pingu at whitepingu]; \pingu at belly@raw
+\endscope
+\coordinate (\pingu at name-head) at (\pingu at w@half,.7375cm);
+
+\@pingu at drawer@lefteye@ \@pingu at drawer@righteye@
+
+\pingu at layer{background}[]\pingu at draw@clothing at behind\endpingu at layer
+
+\pingu at draw@clothing at middle
+\pingu at draw@extras at below
+
+\@pingu at drawer@hairstyle@
+\if at pingu@feet at front\else\pingu at layer{background}[]\fi
+\@pingu at drawer@leftfoot@ \@pingu at drawer@rightfoot@
+\if at pingu@feet at front\else\endpingu at layer\fi
+
+\@pingu at drawer@leftwing@ \@pingu at drawer@rightwing@
+
+\path (\pingu at name-wing-left-start) -- (\pingu at name-wing-left) --
+    ([turn]\csname @pingu at wingdown@\@pingu at select@leftwing@ @\endcsname:2.45mm)
+    coordinate (\pingu at name-wing-left-low) -- ([turn]180:4.9mm)
+    coordinate (\pingu at name-wing-left-up);
+\path (\pingu at name-wing-left-start) -- (\pingu at name-wing-left) --
+    (\pingu at name-wing-left-start) --
+    ([turn]-180+\csname @pingu at wingdown@\@pingu at select@leftwing@ @\endcsname:3.45mm)
+  coordinate (\pingu at name-wing-left-start-low) -- ([turn]180:6.9mm)
+  coordinate (\pingu at name-wing-left-start-up);
+\path (\pingu at name-wing-right-start) -- (\pingu at name-wing-right) --
+    ([turn]-\csname @pingu at wingdown@\@pingu at select@rightwing@ @\endcsname:2.45mm)
+    coordinate (\pingu at name-wing-right-low) -- ([turn]180:4.9mm)
+    coordinate (\pingu at name-wing-right-up);
+% double path to fix turn
+\path (\pingu at name-wing-right-start) -- (\pingu at name-wing-right) --
+      (\pingu at name-wing-right-start) --
+      ([turn]180-\csname @pingu at wingdown@\@pingu at select@rightwing@ @\endcsname:3.45mm)
+    coordinate (\pingu at name-wing-right-start-low) -- ([turn]180:6.9mm)
+    coordinate (\pingu at name-wing-right-start-up);
+\pingu at draw@clothing at main
+
+\@pingu at drawer@bill@
+\pingu at draw@extras at above
+\pingu at draw@wing at items
+\endscope
+\if at pingu@draw at metadots \@pingu at draw@dots \fi
+\pingu at post
+\endgroup
+\pingu at back@init at call
+}
+\let\pengu\pingu% as an alias
+
+%   #region lower-pingu
+% Note: to be used in clippies
+\def\pingu at path@lowerpingu{(0,\pingu at outer@off)
+% left side
+to[bend right=\pingu at bend] ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{} and \pingu at foot@outer at h) arc (270:332:\pingu at foot@inner at w{} and \pingu at foot@inner at h)
+arc (208:270:\pingu at foot@inner at w{} and \pingu at foot@inner at h) arc (270:360:\pingu at foot@outer at w{} and \pingu at foot@outer at h)%
+% right side
+to[bend right=\pingu at bend] ++(0,\pingu at side@h at half+\pingu at outer@off)
+arc(0:180:\pingu at w@half{} and \pingu at head@h at half) -- cycle}% arc clip to secure wings
+\def\pingu at path@upperpingu{(\pingu at name-head-center) ellipse [x radius=\pingu at w@half, y radius=\pingu at head@h at half]}
+
+%   #endregion
+% #endregion
+
+% #region main body parts
+% #region body front
+% #region normal
+\pingu at bodytype@add{normal}{%
+\pingu at block[save path=\pingu at lowerpingu]{\pingu at color@body at main} (0,\pingu at outer@off)
+% left side
+to[bend right=\pingu at bend] coordinate[pos=.775] (\pingu at name-waist-right) ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{} and \pingu at foot@outer at h) coordinate (\pingu at name-foot-right)
+arc (270:332:\pingu at foot@inner at w{} and \pingu at foot@inner at h)
+coordinate (\pingu at name-bottom-center)
+arc (208:270:\pingu at foot@inner at w{} and \pingu at foot@inner at h) coordinate (\pingu at name-foot-left)
+arc (270:360:\pingu at foot@outer at w{} and \pingu at foot@outer at h)%
+% right side
+to[bend right=\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,\pingu at side@h at half+\pingu at outer@off)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\pingu at block[save path=\pingu at upperpingu]{\pingu at color@body at head} (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-1cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.68\pingu at side@h at half);
+\pingu at block[save path=\pingu at whitepingu]{\pingu at color@body at front} (\pingu at name-belly-back)++(-\pingu at w@half+\pingu at one,\pingu at lower@off) to[bend right=.8\pingu at bend] ++(0,1.05cm-\pingu at side@h at half-\pingu at lower@off) arc (180:270:4mm and 2mm) arc (270:331:5mm and .85mm) arc (207:270:5mm and .85mm) arc (270:360:4mm and 2mm) to[bend right=.8\pingu at bend] ++(0,\pingu at side@h at half-1.05cm+\pingu at lower@off) arc (0:180:\pingu at w@half-.96mm and \pingu at w@half-\pingu at one) -- cycle;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-right)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-left)++(0,-.25mm) ellipse [x radius=.525cm,y radius=.625cm];
+}
+% #endregion
+% #region none
+\def\pingu at x@bodytype at none{%
+\path[save path=\pingu at lowerpingu] (0,\pingu at outer@off)
+% left side
+to[bend right=\pingu at bend] coordinate[pos=.775] (\pingu at name-waist-right) ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{} and \pingu at foot@outer at h) coordinate (\pingu at name-foot-right)
+arc (270:332:\pingu at foot@inner at w{} and \pingu at foot@inner at h)
+coordinate (\pingu at name-bottom-center)
+arc (208:270:\pingu at foot@inner at w{} and \pingu at foot@inner at h) coordinate (\pingu at name-foot-left)
+arc (270:360:\pingu at foot@outer at w{} and \pingu at foot@outer at h)%
+% right side
+to[bend right=\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,\pingu at side@h at half+\pingu at outer@off)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\path[save path=\pingu at upperpingu] (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-1cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.68\pingu at side@h at half);
+\path[save path=\pingu at whitepingu] (\pingu at name-belly-back)++(-\pingu at w@half+\pingu at one,\pingu at lower@off) to[bend right=.8\pingu at bend] ++(0,1.05cm-\pingu at side@h at half-\pingu at lower@off) arc (180:270:4mm and 2mm) arc (270:331:5mm and .85mm) arc (207:270:5mm and .85mm) arc (270:360:4mm and 2mm) to[bend right=.8\pingu at bend] ++(0,\pingu at side@h at half-1.05cm+\pingu at lower@off) arc (0:180:\pingu at w@half-.96mm and \pingu at w@half-\pingu at one) -- cycle;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+}
+% #endregion
+% #region chubby
+\pingu at bodytype@add{chubby}{%
+\pingu at block[save path=\pingu at lowerpingu]{\pingu at color@body at main} (0,\pingu at outer@off)
+% left side
+to[bend right=1.65*\pingu at bend] coordinate[pos=.775] (\pingu at name-waist-right) ++(0,-\pingu at side@h at half-\pingu at outer@off)
+% feety stuff
+arc (180:270:\pingu at foot@outer at w{} and \pingu at foot@outer at h-.35mm) coordinate (\pingu at name-foot-right)
+arc (270:332:\pingu at foot@inner at w{} and 1.25*\pingu at foot@inner at h)
+coordinate (\pingu at name-bottom-center)
+arc (208:270:\pingu at foot@inner at w{} and 1.25*\pingu at foot@inner at h) coordinate (\pingu at name-foot-left)
+arc (270:360:\pingu at foot@outer at w{} and \pingu at foot@outer at h-.35mm)%
+% right side
+to[bend right=1.65*\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,\pingu at side@h at half+\pingu at outer@off)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\pingu at block[save path=\pingu at upperpingu]{\pingu at color@body at head} (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-.97cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.65\pingu at side@h at half);
+\pingu at block[save path=\pingu at whitepingu]{\pingu at color@body at front} (\pingu at name-head-center)++(-\pingu at w@half+2.5\pingu at one,-4.25mm) coordinate (@) to[bend right=19] ([xshift=-1.25mm,yshift=1.5\pingu at one]@|-\pingu at name-bottom-center) arc (180:270:4.675mm and 1mm) arc (270:331:4mm and 1.15mm) arc (207:270:4mm and 1.15mm) arc (270:360:4.675mm and 1mm) to[bend right=19] ([xshift=\pingu at w@half-2.5\pingu at one,yshift=-4.25mm]\pingu at name-head-center) ;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-right)++(0,-.5mm) ellipse [x radius=.525cm,y radius=.6cm];
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-left)++(0,-.5mm) ellipse [x radius=.525cm,y radius=.6cm];
+}
+% #endregion
+% #region legacy
+\pingu at bodytype@add{legacy}{%
+\pingu at block[save path=\pingu at lowerpingu]{\pingu at color@body at main} (0,\pingu at outer@off)
+% left side
+to[bend right=1.25*\pingu at bend] coordinate[pos=.77] (\pingu at name-waist-right) ++(0,-.95\pingu at side@h at half-\pingu at outer@off+.65\pingu at one) coordinate (@b) % for bottom clip
+% feety stuff
+to[out=270,in=270]
+    coordinate[pos=.3,yshift=-.25mm] (\pingu at name-foot-right)
+    coordinate[pos=.5,yshift=.875\pingu at one] (\pingu at name-bottom-center)
+    coordinate[pos=.7,yshift=-.25mm] (\pingu at name-foot-left)
+++(2*\pingu at w@half,0)
+% right side
+to[bend right=1.25*\pingu at bend] coordinate[pos=.225] (\pingu at name-waist-left) ++(0,.95\pingu at side@h at half+\pingu at outer@off-.65\pingu at one)
+% coordinate
+coordinate (\pingu at name-wings-side-left)
+-- (0,\pingu at outer@off) coordinate (\pingu at name-wings-side-right) coordinate[pos=.5] (\pingu at name-head-center) -- cycle;
+
+\pingu at block[save path=\pingu at upperpingu]{\pingu at color@body at head} (\pingu at name-head-center)
+++(0,\pingu at head@h at half) coordinate (\pingu at name-head-top)
+arc(90:450:\pingu at w@half{} and \pingu at head@h at half)
+coordinate[pos=\pinguanglehr] (\pingu at name-head-right)
+coordinate[pos=\pinguanglehl] (\pingu at name-head-left);
+
+\coordinate (\pingu at name-belly-back) at (\pingu at w@half,-.97cm);
+\coordinate (\pingu at name-belly-center) at (\pingu at w@half,-.75\pingu at side@h at half+.325\pingu at one);
+\pingu at block[save path=\pingu at whitepingu]{\pingu at color@body at front} (\pingu at name-head-center)++(-\pingu at w@half+2.5\pingu at one,-4.25mm) coordinate (@) to[bend right=14] ([xshift=-1.25mm,yshift=.33\pingu at one]@|- at b) to[out=272,in=268] ++(2*\pingu at w@half-2.5\pingu at one,0) to[bend right=14] ([xshift=\pingu at w@half-2.5\pingu at one,yshift=-4.25mm]\pingu at name-head-center) ;
+
+\coordinate (\pingu at name-eye-back-right) at ([xshift=-.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+\coordinate (\pingu at name-eye-back-left) at ([xshift=.275cm,yshift=.25cm-\pingu at outer@off]\pingu at name-head-center);
+
+\coordinate (\pingu at name-head-back-con-right) at ([xshift=-\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-right);
+\coordinate (\pingu at name-head-back-con-left) at ([xshift=\pingu at headcon@x,yshift=-\pingu at headcon@y]\pingu at name-eye-back-left);
+
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-right)++(0,-.5mm) ellipse [x radius=.525cm,y radius=.6cm];
+\pingu at block{\pingu at color@body at front} (\pingu at name-eye-back-left)++(0,-.5mm) ellipse [x radius=.525cm,y radius=.6cm];
+}
+% #endregion
+% #endregion
+% #region eyes
+% name core | left | right
+\long\def\@pingu at eyes@s#1#2#3{\@ifnextchar[{\@pingu at eyes@s@{#1}{#2}{#3}}{\@pingu at eyes@s@{#1}{#2}{#3}[pingu at black]}}
+\long\def\@pingu at eyes@s@#1#2#3[#4]{%
+    \pgfqkeys{/pingu}{%
+        left eye #1/.style = {/pingu/left eye={#1}, /pingu/left eye color={##1}},%
+        left eye #1/.default = {#4},%
+        right eye #1/.style = {/pingu/right eye={#1}, /pingu/right eye color={##1}},%
+        right eye #1/.default = {#4},%
+        eyes #1/.style = {/pingu/eyes={#1}, /pingu/eyes color={##1}},%
+        eyes #1/.default = {#4}%
+    }%
+    \pingu at lefteye@add{#1}{#2}\pingu at righteye@add{#1}{#3}%
+}
+\pgfqkeys{/pingu}{eyes none/.style={eyes=none},left eye none/.style={left eye=none},right eye none/.style={right eye=none}} % adding the alias
+
+\@pingu at eyes@s{normal}{%
+    \pingu at block{\pingu at color@eye at left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=.1225cm, y radius=.1365cm];
+}{%
+    \pingu at block{\pingu at color@eye at right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate(\pingu at name-eye-right) ellipse [x radius=.1225cm, y radius=.1365cm];
+}
+
+\@pingu at eyes@s{vertical}{%
+    \pingu at block{\pingu at color@eye at left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=1.13mm, y radius=.145cm];
+}{%
+    \pingu at block{\pingu at color@eye at right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate(\pingu at name-eye-right) ellipse [x radius=1.13mm, y radius=.145cm];
+}
+
+\@pingu at eyes@s{shiny}{%
+    \pingu at block{\pingu at color@eye at left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate(\pingu at name-eye-left) ellipse [x radius=.22cm, y radius=.26cm];
+    \pingu at block{\pingu at color@eye at second@left} (\pingu at name-eye-left)++(\eyebaseang:.85mm and \pingu at one) ellipse [x radius=.8mm, y radius=\pingu at one];
+    \pingu at block{\pingu at color@eye at second@left} (\pingu at name-eye-left)++(\eyebaseang+180:.12cm and .14cm) ellipse [x radius=.25mm, y radius=.35mm];
+}{%
+    \pingu at block{\pingu at color@eye at right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate(\pingu at name-eye-right) ellipse [x radius=.22cm, y radius=.26cm];
+    \pingu at block{\pingu at color@eye at second@right} (\pingu at name-eye-right)++(\eyebaseang:.85mm and \pingu at one) ellipse [x radius=.8mm, y radius=\pingu at one];
+    \pingu at block{\pingu at color@eye at second@right} (\pingu at name-eye-right)++(\eyebaseang+180:.12cm and .14cm) ellipse [x radius=.25mm, y radius=.35mm];
+}
+
+\@pingu at eyes@s{wink}{%
+    \coordinate (\pingu at name-eye-left) at ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left);
+    \pingu at block[rounded corners=.002cm,rotate around={-4:(\pingu at name-eye-left)}]{\pingu at color@eye at left} (\pingu at name-eye-left)++(174:.14cm and .14cm)++(0,-.065cm) arc (174:6:.14cm and .14cm) arc (-6:-174:.1mm and .08mm) arc (6:174:.12cm and .065cm) arc (-6:-174:.1mm and .08mm) -- cycle;
+}{%
+    \coordinate (\pingu at name-eye-right) at ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right);
+    \pingu at block[rounded corners=.002cm,rotate around={4:(\pingu at name-eye-right)}]{\pingu at color@eye at right} (\pingu at name-eye-right)++(174:.14cm and .14cm)++(0,-.065cm) arc (174:6:.14cm and .14cm) arc (-6:-174:.1mm and .08mm) arc (6:174:.12cm and .065cm) arc (-6:-174:.1mm and .08mm) -- cycle;
+}
+
+\@pingu at eyes@s{shock}{%
+    \pingu at block{\pingu at color@eye at left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=.1535cm, y radius=.1575cm];
+    \pingu at block{\pingu at color@eye at second@left} ([yshift=.75mm,xshift=\pingu at eye@shift]\pingu at name-eye-back-left) coordinate (\pingu at name-eye-left) ellipse [x radius=.1325cm, y radius=.1375cm];
+}{%
+    \pingu at block{\pingu at color@eye at right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate(\pingu at name-eye-right) ellipse [x radius=.1535cm, y radius=.1575cm];
+    \pingu at block{\pingu at color@eye at second@right} ([yshift=.75mm,xshift=-\pingu at eye@shift]\pingu at name-eye-back-right) coordinate(\pingu at name-eye-right) ellipse [x radius=.1325cm, y radius=.1375cm];
+}
+
+% \let\@pingu at eyes@s\relax
+% #endregion
+
+% #region wings
+% every wing has to define 1) a base element angle and 2) a marker if before or after the wing
+\let\pingu at wi@above\iftrue
+\let\pingu at wi@below\iffalse
+% name core | left | right | above: \iftrue | angle for items | wing down [left]
+\long\def\@pingu at wings@s#1#2#3#4#5#6{%
+    \pgfqkeys{/pingu}{%
+        left wing #1/.style   = {/pingu/left wing={#1}, /pingu/left wing color={##1}},%
+        left wing #1/.default = \pingu at color@body at main,%
+        right wing #1/.style   = {/pingu/right wing={#1}, /pingu/right wing color={##1}},%
+        right wing #1/.default = \pingu at color@body at main,%
+        wings #1/.style   = {/pingu/wings={#1}, /pingu/wings color={##1}},%
+        wings #1/.default = \pingu at color@body at main%
+    }%
+    \expandafter\def\csname @pingu at wing@str@#1@\endcsname{#1}%
+    \pingu at leftwing@add{#1}{#2}\pingu at rightwing@add{#1}{#3}%
+    \expandafter\let\csname @pingu at wingitem@#1@\endcsname#4\relax
+    \expandafter\def\csname @pingu at wingangle@items@#1@\endcsname{#5}%
+    \expandafter\def\csname @pingu at wingdown@#1@\endcsname{#6}%
+}
+\pgfqkeys{/pingu}{wings none/.style={/pingu/wings=none},left wing none/.style={/pingu/left wing=none},right wing none/.style={/pingu/right wing=none}} % adding the alias
+\let\@pingu at wingitem@none@\pingu at wi@above
+\def\@pingu at wingangle@items at none@{90}
+\def\@pingu at wingdown@none@{90}
+
+%     #region wings-normal
+\@pingu at wings@s{normal}{%
+    \coordinate (\pingu at name-wing-left-start) at ([yshift=-6.5mm]\pingu at name-wings-side-left);
+\scope[xshift=-\p@] % shift to avoid rounding errors in pdf viewers
+    \pgfinterruptboundingbox
+    \path[/pingu/@invclip] \pingu at path@lowerpingu;
+    \endpgfinterruptboundingbox
+    \pingu at block[rotate around={15:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=.195cm, y radius=9mm] +(-90:.195cm and 9mm) coordinate (\pingu at name-wing-left-tip) +(-90:.145cm and .75cm) coordinate (\pingu at name-wing-left);
+\endscope}{%
+\coordinate (\pingu at name-wing-right-start) at ([yshift=-6.5mm]\pingu at name-wings-side-right);
+\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
+    \pgfinterruptboundingbox
+    \path[/pingu/@invclip] \pingu at path@lowerpingu;
+    \endpgfinterruptboundingbox
+    \pingu at block[rotate around={-15:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.195cm, y radius=9mm] +(-90:.195cm and 9mm) coordinate (\pingu at name-wing-right-tip) +(-90:.145cm and .75cm) coordinate (\pingu at name-wing-right);
+\endscope}{\pingu at wi@above}{-5}{-70}
+%     #endregion
+%     #region wings-wave
+\@pingu at wings@s{wave}{%
+    \coordinate (\pingu at name-wing-left-start) at ([yshift=-5.85mm]\pingu at name-wings-side-left);
+    \scope[xshift=-\p@] % shift to avoid rounding errors in pdf viewers
+    \pgfinterruptboundingbox
+    \path[/pingu/@invclip] \pingu at path@lowerpingu;
+    \endpgfinterruptboundingbox
+    \pingu at block[rotate around={-39:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=2.2mm, y radius=9.35mm] +(90:.22cm and .935cm) coordinate (\pingu at name-wing-left-tip) +(150:.22cm and .935cm) coordinate (\pingu at name-wing-left-cap-up) +(-3:.22cm and .935cm) coordinate (\pingu at name-wing-left-cap-down) +(90:.175cm and .75cm) coordinate (\pingu at name-wing-left);
+    \pingu at block{\pingu at color@left at wing} (\pingu at name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=220] (\pingu at name-wing-left-cap-up) -- (\pingu at name-wing-left-start) -- cycle;
+    \pingu at block{\pingu at color@left at wing} (\pingu at name-wing-left-start)++(.085mm,-4.4mm) to[out=80,in=-131] (\pingu at name-wing-left-cap-down) -- (\pingu at name-wing-left-start) -- cycle;
+    \endscope}{%
+    \coordinate (\pingu at name-wing-right-start) at ([yshift=-5.85mm]\pingu at name-wings-side-right);
+\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
+    \pgfinterruptboundingbox
+    \path[/pingu/@invclip] \pingu at path@lowerpingu;
+    \endpgfinterruptboundingbox
+    \pingu at block[rotate around={39:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.22cm, y radius=.935cm] +(90:.22cm and .935cm) coordinate (\pingu at name-wing-right-tip) +(30:.22cm and .935cm) coordinate (\pingu at name-wing-right-cap-up) +(177:.22cm and .935cm) coordinate (\pingu at name-wing-right-cap-down) +(90:.175cm and .775cm) coordinate (\pingu at name-wing-right);
+    \pingu at block{\pingu at color@right at wing} (\pingu at name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=-45] (\pingu at name-wing-right-cap-up) -- (\pingu at name-wing-right-start) -- cycle;
+    \pingu at block{\pingu at color@right at wing} (\pingu at name-wing-right-start)++(-.1mm,-4.4mm) to[out=100,in=-50] (\pingu at name-wing-right-cap-down) -- (\pingu at name-wing-right-start) -- cycle;
+\endscope}{\pingu at wi@above}{-10}{-110}
+%     #endregion
+%     #region wings-raise
+\@pingu at wings@s{raise}{%
+\coordinate (\pingu at name-wing-left-start) at ([yshift=-6.25mm]\pingu at name-wings-side-left);
+\scope[xshift=-\p@] % shift to avoid rounding errors in pdf viewers
+\pgfinterruptboundingbox
+\path[/pingu/@invclip] \pingu at path@lowerpingu;
+\endpgfinterruptboundingbox
+    \pingu at block[rotate around={-17:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=.195cm, y radius=.925cm] +(90:.195cm and .925cm) coordinate (\pingu at name-wing-left-tip) +(90:.145cm and .775cm) coordinate (\pingu at name-wing-left);
+\endscope}{%
+\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
+    \pgfinterruptboundingbox
+    \path[/pingu/@invclip] \pingu at path@lowerpingu;
+    \endpgfinterruptboundingbox
+    \coordinate (\pingu at name-wing-right-start) at ([yshift=-6.25mm]\pingu at name-wings-side-right);
+    \pingu at block[rotate around={17:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.195cm, y radius=.925cm] +(90:.195cm and .925cm) coordinate (\pingu at name-wing-right-tip) +(90:.145cm and .775cm) coordinate (\pingu at name-wing-right);
+\endscope}%
+{\pingu at wi@above}{0}{-126}
+%     #endregion
+%     #region wings-grab
+\@pingu at wings@s{grab}{%
+\pingu at layer{foreground}[]
+    \clip[use path=\pingu at lowerpingu];
+    \coordinate (\pingu at name-wing-left-start) at ([yshift=-4.5mm]\pingu at name-wings-side-left);
+    \pingu at block[rotate around={-42:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=.225cm, y radius=1.05cm] +(-90:.225cm and 1.05cm) coordinate (\pingu at name-wing-left-tip) +(-90:.175cm and 9mm) coordinate (\pingu at name-wing-left);
+\endpingu at layer}{%
+\pingu at layer{foreground}[]
+    \clip[use path=\pingu at lowerpingu];
+    \coordinate (\pingu at name-wing-right-start) at ([yshift=-4.5mm]\pingu at name-wings-side-right);
+    \pingu at block[rotate around={42:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.225cm, y radius=1.05cm] +(-90:.225cm and 1.05cm) coordinate (\pingu at name-wing-right-tip) +(-90:.175cm and 9mm) coordinate (\pingu at name-wing-right);
+\endpingu at layer}%
+{\pingu at wi@below}{12}{60}
+%     #endregion
+%     #region wings-shock
+\@pingu at wings@s{shock}{%
+\pingu at layer{foreground}[]
+    \clip[use path=\pingu at lowerpingu];
+    \coordinate (\pingu at name-wing-left-start) at ([yshift=-6.5mm]\pingu at name-wings-side-left);
+    \pingu at block[rotate around={64:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=.235cm, y radius=.85cm] +(90:.235cm and .85cm) coordinate (\pingu at name-wing-left-tip) +(90:.185cm and .7cm) coordinate (\pingu at name-wing-left);
+\endpingu at layer}{%
+\pingu at layer{foreground}[]
+    \clip[use path=\pingu at lowerpingu];
+    \coordinate (\pingu at name-wing-right-start) at ([yshift=-6.5mm]\pingu at name-wings-side-right);
+    \pingu at block[rotate around={-64:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.235cm, y radius=.85cm] +(90:.235cm and .85cm) coordinate (\pingu at name-wing-right-tip) +(90:.185cm and .7cm) coordinate (\pingu at name-wing-right);
+\endpingu at layer}%
+{\pingu at wi@below}{-180}{116}
+%     #endregion
+%     #region wings-hug
+\@pingu at wings@s{hug}{%
+\coordinate (\pingu at name-wing-left-start) at ([yshift=-6.25mm]\pingu at name-wings-side-left);
+\scope[xshift=-\p@] % shift to avoid rounding errors in pdf viewers
+\pgfinterruptboundingbox
+\path[/pingu/@invclip] \pingu at path@lowerpingu;
+\endpgfinterruptboundingbox
+\pingu at block[rotate around={-128:(\pingu at name-wing-left-start)}]{\pingu at color@left at wing} (\pingu at name-wing-left-start) ellipse [x radius=.235cm, y radius=.925cm] +(90:.235cm and .935cm) coordinate (\pingu at name-wing-left-tip) +(175:.235cm and .935cm) coordinate (\pingu at name-wing-left-cap-up) +(22:.235cm and .935cm) coordinate (\pingu at name-wing-left-cap-down) +(90:.175cm and .775cm) coordinate (\pingu at name-wing-left);
+\pingu at block{\pingu at color@left at wing} (\pingu at name-wing-left-start)++(.03mm,4.6mm) to[out=-80,in=140] (\pingu at name-wing-left-cap-up) -- (\pingu at name-wing-left-start) -- cycle;
+\pingu at block{\pingu at color@left at wing} (\pingu at name-wing-left-start)++(.085mm,-4.4mm) to[out=82,in=155] (\pingu at name-wing-left-cap-down) -- (\pingu at name-wing-left-start) -- cycle;
+\endscope}{%
+\coordinate (\pingu at name-wing-right-start) at ([yshift=-6.25mm]\pingu at name-wings-side-right);
+\scope[xshift=\p@] % shift to avoid rounding errors in pdf viewers
+\pgfinterruptboundingbox
+\path[/pingu/@invclip] \pingu at path@lowerpingu;
+\endpgfinterruptboundingbox
+\pingu at block[rotate around={128:(\pingu at name-wing-right-start)}]{\pingu at color@right at wing} (\pingu at name-wing-right-start) ellipse [x radius=.235cm, y radius=.935cm] +(90:.235cm and .935cm) coordinate (\pingu at name-wing-right-tip) +(5:.235cm and .935cm) coordinate (\pingu at name-wing-right-cap-up) +(160:.235cm and .935cm) coordinate (\pingu at name-wing-right-cap-down) +(90:.175cm and .775cm) coordinate (\pingu at name-wing-right);
+\pingu at block{\pingu at color@right at wing} (\pingu at name-wing-right-start)++(-.03mm,4.6mm) to[out=-100,in=40] (\pingu at name-wing-right-cap-up) -- (\pingu at name-wing-right-start) -- cycle;
+\pingu at block{\pingu at color@right at wing} (\pingu at name-wing-right-start)++(-.085mm,-4.4mm) to[out=92,in=20] (\pingu at name-wing-right-cap-down) -- (\pingu at name-wing-right-start) -- cycle;
+\endscope}{\pingu at wi@above}{-30}{-62}
+\let\@pingu at wings@s\relax
+%     #endregion
+% #endregion
+
+% #region hairstyle
+\pgfqkeys{/pingu}{hairstyle none/.style={/pingu/hairstyle=none}}
+\pingu at hairstyle@add{normal}{%
+\scope\pgfinterruptboundingbox
+\clip[/pingu/@invclip] (\pingu at name-head-center) ellipse [x radius=\pingu at w@half, y radius=\pingu at head@h at half-.0165mm];
+\endpgfinterruptboundingbox
+\scope[rounded corners=.08mm]
+\pingu at block{\pingu at color@hair at a} ([yshift=-\pingu at one]\pingu at name-head-top) -- ++(.15mm,0) arc (0:90:\pingu at one@eight{} and .135cm) arc (90:0:.35mm and .75mm);
+\pingu at block{\pingu at color@hair at b} ([yshift=-\pingu at one]\pingu at name-head-top) -- ++(.33mm,0) arc (0:90:\pingu at one@eight{} and .175cm) arc (90:0:.35mm and \pingu at one);
+\pingu at block{\pingu at color@hair at c} ([yshift=-\pingu at one]\pingu at name-head-top) -- ++(-.33mm,0) arc (180:90:.17cm and .215cm) arc (90:180:.75mm and .18cm);
+\pingu at block{\pingu at color@hair at d} ([yshift=-\pingu at one]\pingu at name-head-top) -- ++(.25mm,0) arc (180:90:\pingu at one@eight{} and .175cm) arc (90:180:.35mm and \pingu at one@eight);
+\pingu at block{\pingu at color@hair at e} ([yshift=-\pingu at one]\pingu at name-head-top) -- ++(.44mm,0) arc (180:90:\pingu at one@eight{} and .135cm) arc (90:180:.35mm and .75mm);
+\endscope\endscope}
+% #endregion
+
+% #region feet
+\long\def\@pingu at feet@s#1#2#3{\@ifnextchar[{\@pingu at feet@s@{#1}{#2}{#3}}{\@pingu at feet@s@{#1}{#2}{#3}[pingu at yellow]}}
+\long\def\@pingu at feet@s@#1#2#3[#4]{%
+    \pgfqkeys{/pingu}{%
+        left foot #1/.style    = {/pingu/left foot={#1}, /pingu/left foot color={##1}},%
+        left foot #1/.default  = {#4},%
+        right foot #1/.style   = {/pingu/right foot={#1}, /pingu/right foot color={##1}},%
+        right foot #1/.default = {#4},%
+        feet #1/.style         = {/pingu/feet={#1}, /pingu/feet color={##1}},%
+        feet #1/.default       = {#4}%
+    }%
+    \pingu at leftfoot@add{#1}{#2}\pingu at rightfoot@add{#1}{#3}%
+}
+\pgfqkeys{/pingu}{feet none/.style={/pingu/feet=none}, /left foot none/.style={/pingu/left foot=none}, right foot none/.style={/pingu/right foot=none}}
+
+\@pingu at feet@s{normal}{%
+    \coordinate (@tmp) at ([xshift=-.5\pingu at foot@single at h]\pingu at name-foot-left);
+    \pingu at block[rotate around={-25+\basicfeetbend:(@tmp)}]{\pingu at color@foot at left} (@tmp) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+    \pingu at block[rotate around={\basicfeetbend:(\pingu at name-foot-left)}]{\pingu at color@foot at left} (\pingu at name-foot-left) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+    \coordinate (@tmp) at ([xshift= .5\pingu at foot@single at h]\pingu at name-foot-left);
+    \pingu at block[rotate around={25+\basicfeetbend:(@tmp)}]{\pingu at color@foot at left} (@tmp) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+}{%
+    \coordinate (@tmp) at ([xshift=-.5\pingu at foot@single at h]\pingu at name-foot-right);
+    \pingu at block[rotate around={-25-\basicfeetbend:(@tmp)}]{\pingu at color@foot at right} (@tmp) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+    \pingu at block[rotate around={-\basicfeetbend:(\pingu at name-foot-right)}]{\pingu at color@foot at right} (\pingu at name-foot-right) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+    \coordinate (@tmp) at ([xshift= .5\pingu at foot@single at h]\pingu at name-foot-right);
+    \pingu at block[rotate around={25-\basicfeetbend:(@tmp)}]{\pingu at color@foot at right} (@tmp) ellipse [x radius=\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+}
+
+
+\@pingu at feet@s{sit}{%
+\pingu at layer{foreground}[]
+    \coordinate (@tmp) at ([xshift=-.35\pingu at foot@single at h,yshift=-.4mm]\pingu at name-foot-left);
+    \pingu at block[rotate around={\basicfeetbend:(@tmp)}]{\pingu at color@foot at left} (@tmp)
+    arc(180:90:1.33mm and 4mm) arc (90:0:1.33mm and .9mm) to[bend left=50] ++(1.33mm,-1.3mm) to[bend left=66] ++(.7mm,-1.8mm) arc(0-50:-90-20:4.13mm and 4.2mm) to[bend left] cycle;
+\endpingu at layer
+}{%
+\pingu at layer{foreground}[xscale=-1]
+    \coordinate (@tmp) at ([xshift=-.35\pingu at foot@single at h,yshift=-.5mm]\pingu at name-foot-right);
+    \pingu at block[rotate around={\basicfeetbend:(@tmp)}]{\pingu at color@foot at right} (@tmp)
+    arc(180:90:1.33mm and 4mm) arc (90:0:1.33mm and .9mm) to[bend left=50] ++(1.33mm,-1.3mm) to[bend left=66] ++(.7mm,-1.8mm) arc(0-50:-90-20:4.13mm and 4.2mm) to[bend left] cycle;
+\endpingu at layer
+}
+
+\@pingu at feet@s{simple}{%
+    \pingu at block[rotate around={-\basicfeetbend:(\pingu at name-foot-left)}]{\pingu at color@foot at left} (\pingu at name-foot-left) ellipse [x radius=2.66\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+}{%
+    \pingu at block[rotate around={\basicfeetbend:(\pingu at name-foot-right)}]{\pingu at color@foot at right} (\pingu at name-foot-right) ellipse [x radius=2.66\pingu at foot@single at w,y radius=\pingu at foot@single at h];
+}
+
+\@pingu at feet@s{back}{%
+    \pingu at block{\pingu at color@foot at left} ([yshift=.2\pingu at foot@single at h]\pingu at name-foot-left) ellipse [x radius=2.5\pingu at foot@single at w,y radius=.435\pingu at foot@single at h];
+}{%
+    \pingu at block{\pingu at color@foot at right} ([yshift=.2\pingu at foot@single at h]\pingu at name-foot-right) ellipse [x radius=2.5\pingu at foot@single at w,y radius=.435\pingu at foot@single at h];
+}
+
+\@pingu at feet@s{chubby}{%
+\pingu at layer{foreground}[rotate around={-\basicfeetbend+45:(\pingu at name-foot-left)}]
+    \pingu at block\pingu at color@foot at left ([xshift=-3mm,yshift=-1.65mm]\pingu at name-foot-left) to[bend right=3] ++(5mm,0) -- ++(.05mm,.6mm) to[out=83,in=129,looseness=1.125] cycle;
+    \ifx\pingu at color@foot at left\@pingu at none\else
+        \colorlet{@}{\pingu at color@foot at left!80!\pingu at color@body at main}
+        \pingu at draw{@} ([xshift=-3mm,yshift=-1.65mm]\pingu at name-foot-left) to[bend right=5] coordinate[pos=.29] (@) coordinate[pos=.69] (@b) ++(5mm,0) -- ++(.05mm,.6mm) to[out=83,in=119,looseness=1.125] cycle;
+        \pingu at draw{@} (@) to[bend right=4] ++(.125mm,.75mm);
+        \pingu at draw{@} (@b) to[bend right=9] ++(.15mm,1.15mm);
+    \fi
+\endpingu at layer
+}{%
+\pingu at layer{foreground}[rotate around={-\basicfeetbend+45:(\pingu at name-foot-right)}]
+    \pingu at block\pingu at color@foot at right ([xshift=3mm,yshift=-1.65mm]\pingu at name-foot-right) to[bend left=3] ++(-5mm,0) -- ++(-.05mm,.6mm) to[out=97,in=76,looseness=1.125] cycle;
+    \ifx\pingu at color@foot at right\@pingu at none\else
+        \colorlet{@}{\pingu at color@foot at right!80!\pingu at color@body at main}
+        \pingu at draw{@} ([xshift=3mm,yshift=-1.65mm]\pingu at name-foot-right) to[bend left=5] coordinate[pos=.29] (@) coordinate[pos=.69] (@b)  ++(-5mm,0) -- ++(-.05mm,.475mm) to[out=97,in=81,looseness=1.125] cycle;
+        \pingu at draw{@} (@) to[bend left=4] ++(-.125mm,.75mm);
+        \pingu at draw{@} (@b) to[bend left=9] ++(-.15mm,1.15mm);
+    \fi
+\endpingu at layer
+}
+% #endregion
+
+% #region bill
+% name core | main
+\long\def\@pingu at bill@s#1#2{%
+    \pgfqkeys{/pingu}{%
+        bill #1/.style   = {/pingu/bill={#1}, /pingu/bill color={##1}},%
+        bill #1/.default = pingu at yellow% TODO: defaults
+    }%
+    \pingu at bill@add{#1}{#2}%
+}
+\pgfqkeys{/pingu}{bill none/.style={/pingu/bill=none}}
+
+\@pingu at bill@s{normal}{%
+\pingu at block{\pingu at color@bill} (\pingu at name-bill)++(-.19cm,0)
+    arc (180:360:.19cm and .225cm)
+    coordinate[pos=.5] (\pingu at name-bill-bottom)
+    to[bend right=.25cm] cycle;
+}
+
+\@pingu at bill@s{foreground}{%
+\pingu at layer{foreground}[]
+\pingu at block{\pingu at color@bill} (\pingu at name-bill)++(-.19cm,0)
+    arc (180:360:.19cm and .225cm)
+    coordinate[pos=.5] (\pingu at name-bill-bottom)
+    to[bend right=.25cm] cycle;
+\endpingu at layer
+}
+
+\@pingu at bill@s{flat}{%
+\pingu at block{\pingu at color@bill} (\pingu at name-bill)++(-.19cm,0)
+    arc (180:360:.19cm and .225cm)
+    coordinate[pos=.5] (\pingu at name-bill-bottom)
+    -- cycle;
+}
+
+% #endregion
+% #endregion
+
+% #region dots
+\def\@pingu at draw@dots{%
+\pingu at layer{foreground}[]
+    % mark wing outer
+    \path[draw,pink,thick] (\pingu at name-wing-left-start-low) --(\pingu at name-wing-left-start) -- (\pingu at name-wing-left) -- (\pingu at name-wing-left-low);
+    \path[draw,pink,thick] (\pingu at name-wing-right-start-low) -- (\pingu at name-wing-right-start) -- (\pingu at name-wing-right) -- (\pingu at name-wing-right-low);
+  \@for\@pingu at elem:={belly-center,head,head-top,foot-left,foot-right,eye-right,eye-left,bill,bill-bottom,wings-side-left,wings-side-right,wing-left-start,wing-left-tip,wing-right-start,wing-right-tip,head-right,head-left,head-center,head-back-con-left,head-back-con-right,bottom-center,waist-left,waist-right}\do{
+    \path[fill=green] (\pingu at name-\@pingu at elem) circle[radius=1.125\p@];
+  }
+  \@for\@pingu at elem:={wing-left,wing-right,wing-left-low,wing-right-low,wing-left-up,wing-right-up,wing-left-start-low,wing-right-start-low,wing-left-start-up,wing-right-start-up}\do{
+    \path[fill=yellow] (\pingu at name-\@pingu at elem) circle[radius=1.125\p@];
+  }
+  % mark wing items
+  \csname @pingu at wingitem@\@pingu at select@leftwing@ @\endcsname \colorlet{@wmark}{magenta} \else \colorlet{@wmark}{teal} \fi
+  \pingu at block[/pingu/@draw=@wmark,thick,rotate around={\csname @pingu at wingangle@items@\@pingu at select@leftwing@ @\endcsname:(\pingu at name-wing-left)}]{@wmark}
+    (\pingu at name-wing-left)++(0,3mm) circle [radius=\pingu at one] -- ++(0,-6mm);
+  \csname @pingu at wingitem@\@pingu at select@rightwing@ @\endcsname \colorlet{@wmark}{magenta} \else \colorlet{@wmark}{teal} \fi
+  \pingu at block[/pingu/@draw=@wmark,thick,rotate around={-\csname @pingu at wingangle@items@\@pingu at select@rightwing@ @\endcsname:(\pingu at name-wing-right)}]{@wmark}
+    (\pingu at name-wing-right)++(0,3mm) circle [radius=\pingu at one] -- ++(0,-6mm);
+\endpingu at layer}
+% endregion
+% #region extras
+%     #region extras below
+\def\pingu@@xif at eb#1#2{\csname if at pingu@x@#1@\endcsname\csname pingu at draw@eb@#2\endcsname\fi}
+\def\pingu at xif@eb#1#2{\ifcsname if at pingu@x@#1@\endcsname{\pingu@@xif at eb{#1}{#2}}\fi}
+\def\pingu at draw@extras at below{%
+    \pingu at xif@eb{devilwings}{devilwings}%
+    \pingu at xif@eb{glow}{glow}%
+    \pingu at xif@eb{tie}{tie}%
+    \pingu at xif@eb{pants}{pants}%
+    \pingu at xif@eb{medal}{medal}%
+    \pingu at xif@eb{bowtie}{bowtie}%
+    \pingu at xif@eb{cup}{cup}%
+    \pingu at xif@eb{blush}{blush}%
+    \pingu at xif@eb{eyepatchleft}{eyepatch at l}%
+    \pingu at xif@eb{eyepatchright}{eyepatch at r}%
+    \pingu at xif@eb{monocleleft}{monocle at l}%
+    \pingu at xif@eb{monocleright}{monocle at r}%
+}
+%       #region cup
+\pingu at create@extra{cup}{%
+  % extra cup % TODO: as selection
+  cup/.code       = {\pingu at set@extra{cup}{true}\pingu at color{cup}{#1}},
+  cup/.default    = pingu at green,
+  cup straw/.code = \pingu at color{cup at straw}{#1}%
+}{cup straw=\pingu at color@cup}
+
+\def\pingu at draw@eb at cup{%
+    \pingu at block[rounded corners=.25mm]{\pingu at color@cup} (\pingu at name-belly-center)++(-.325cm,.275cm) to[bend right=2] ++(.5mm,-.675cm) to[bend right=8] ++(.55cm,\z@) to[bend right=2] ++(.5mm,.675cm);
+    \path (\pingu at name-belly-center)++(0,.275cm) -- (\pingu at name-bill) coordinate[pos=.5,xshift=-2mm] (\pingu at name-cup-straw-outer-angle);
+    \path (\pingu at name-belly-center)++(-.115cm,.275cm) coordinate (\pingu at name-straw-outer-start);
+    \pingu at block[rounded corners=.15mm]{\pingu at color@cup at straw} (\pingu at name-straw-outer-start) -- (\pingu at name-cup-straw-outer-angle) -- (\pingu at name-bill) -- ++(.5mm,0) -- ([xshift=.5mm]\pingu at name-cup-straw-outer-angle) -- ([xshift=.5mm]\pingu at name-straw-outer-start) -- cycle;
+    \pingu at block{\pingu at color@cup} (\pingu at name-belly-center)++(0,.275cm) ellipse [x radius=.325cm,y radius=.5mm];
+}
+%       #endregion
+
+%       #region eye patch
+%         #region eye patch left
+\pingu at create@extra{eyepatchleft}{%
+    eyepatch left/.forward to = /pingu/eye patch left,
+    eye-patch left/.forward to = /pingu/eye patch left,
+    eye patch left/.code      = \pingu at set@extra{eyepatchleft}{true}\pingu at color{eyepatchleft}{#1},
+    eye patch left/.default   = \pingu at color@body at main,
+}{}
+
+\newlength\pingu at patchw \pingu at patchw=6.5pt
+\def\pingu at draw@eb at eyepatch@l{%
+    \pingu at draw[line width=1.25pt,line cap=round]{\pingu at color@eyepatchleft} (\pingu at name-head-right)++(-2.75mm,-2.5mm) to[bend right=10] coordinate[pos=.71] (\pingu at name-eye-left-patch) ([xshift=-.85mm,yshift=1.25mm]\pingu at name-wings-side-left);
+    \pingu at block[rotate around={-9:(\pingu at name-eye-left-patch)}]{\pingu at color@eyepatchleft} (\pingu at name-eye-left-patch)++(0,.5pt) ellipse [x radius=\pingu at patchw, y radius=.65pt];
+    \pingu at block[rotate around={-9:(\pingu at name-eye-left-patch)}]{\pingu at color@eyepatchleft} (\pingu at name-eye-left-patch) ++(-\pingu at patchw,.5pt) arc(180:360:\pingu at patchw{} and 8.9pt);
+}
+%         #endregion
+%         #region eye patch right
+\pingu at create@extra{eyepatchright}{%
+    eyepatch right/.forward to = /pingu/eye patch right,
+    eye-patch right/.forward to = /pingu/eye patch right,
+    eye patch right/.code      = \pingu at set@extra{eyepatchright}{true}\pingu at color{eyepatchright}{#1},
+    eye patch right/.default   = \pingu at color@body at main,
+}{}
+
+\def\pingu at draw@eb at eyepatch@r{%
+    \pingu at draw[line width=1.25pt,line cap=round]{\pingu at color@eyepatchright} (\pingu at name-head-left)++(2.75mm,-2.5mm) to[bend left=10] coordinate[pos=.71] (\pingu at name-eye-right-patch) ([xshift=.85mm,yshift=1.25mm]\pingu at name-wings-side-right);
+    \pingu at block[rotate around={9:(\pingu at name-eye-right-patch)}]{\pingu at color@eyepatchright} (\pingu at name-eye-right-patch)++(0,.5pt) ellipse [x radius=\pingu at patchw, y radius=.65pt];
+    \pingu at block[rotate around={9:(\pingu at name-eye-right-patch)}]{\pingu at color@eyepatchright} (\pingu at name-eye-right-patch) ++(-\pingu at patchw,.5pt) arc(180:360:\pingu at patchw{} and 8.9pt);
+}
+%         #endregion
+%       #endregion
+
+% #region glow
+\pingu at create@extra{glow}{%
+    glow/.code       = \pingu at set@extra{glow}{true}\pingu at color{glow}{#1},
+    glow/.default    = pingu at white,
+    glow thick/.style = {/pingu/glow={#1}, /pingu/glow width function={3.5mm-1.25*\i mm}},
+    glow steps/.code = \def\pingu at x@extra at glow@steps{#1},
+    glow function/.code = \def\pingu at x@extra at glow@func{#1},
+    glow width function/.code = \def\pingu at x@extra at glow@width at func{#1},
+    glow solid/.style = {/pingu/glow={#1},/pingu/glow function={1},/pingu/glow steps={1.2,1.3}}
+}{glow steps={1,1.1,1.2,1.3,1.4,1.5},glow function={.1/\i},glow width function={2.85mm-1.65*\i mm}}
+
+\def\pingu at draw@eb at glow{%
+    \pingu at layer{background}[]
+    \@for\i:={\pingu at x@extra at glow@steps}\do{
+        \scope[/pingu/@block/.append style={draw=\pingu at color@glow,line width=\pingu at x@extra at glow@width at func},/pingu/@draw/.append style={draw=\pingu at color@glow,line width=\pingu at x@extra at glow@width at func},opacity=\pingu at x@extra at glow@func,transparency group]
+        \pingu at draw{\pingu at color@glow} \pingu at path@lowerpingu;
+        % todo: disable re set of coordinates
+        % only draw, if not ofset
+        \csname @pingu at wingitem@\@pingu at select@leftwing@ @\endcsname\@pingu at drawer@leftwing@\fi
+        \csname @pingu at wingitem@\@pingu at select@rightwing@ @\endcsname\@pingu at drawer@rightwing@\fi
+        \endscope
+    }
+    \endpingu at layer
+}
+% #endregion
+%     #endregion
+
+%     #region extras above
+% NOTE: No auto append to allow easy order change
+\def\pingu@@xif at ea#1#2{\csname if at pingu@x@#1@\endcsname\csname pingu at draw@ea@#2\endcsname\fi}
+\def\pingu at xif@ea#1#2{\ifcsname if at pingu@x@#1@\endcsname{\pingu@@xif at ea{#1}{#2}}\fi}
+\def\pingu at draw@extras at above{%
+    \pingu at xif@ea{cap}{cap}%
+    \pingu at xif@ea{eyeframe}{eyeframe}%
+    \pingu at xif@ea{mask}{mask}%
+    \pingu at xif@ea{glasses}{glasses}%
+    \pingu at xif@ea{glassesround}{glassesround}%
+    \pingu at xif@ea{devilhorns}{devilhorns}%
+    \pingu at xif@ea{headband}{headband}%
+    \pingu at xif@ea{strawhat}{strawhat}%
+    \pingu at xif@ea{hat}{hat}%
+    \pingu at xif@ea{constructionhelmet}{constructionhelmet}%
+    \pingu at xif@ea{conicalhat}{conicalhat}%
+    \pingu at xif@ea{crown}{crown}%
+    \pingu at xif@ea{cakehat}{cakehat}%
+    \pingu at xif@ea{pumpkinhat}{pumpkinhat}%
+    \pingu at xif@ea{princesscrown}{princesscrown}%
+    \pingu at xif@ea{rook}{rook}%
+    \pingu at xif@ea{halo}{halo}%
+    \pingu at xif@ea{vrheadset}{vrheadset}%
+    \pingu at xif@ea{headphone}{headphone}%
+    \pingu at xif@ea{sheriffstar}{sheriffstar}%
+    \pingu at xif@ea{santahat}{santahat}%
+    \pingu at xif@ea{santabeard}{santabeard}%
+    \pingu at xif@ea{banner}{banner}%
+}
+% #region halo
+\newif\if at pingu@x at halo@glow
+\newif\if at pingu@x at halo@above
+\pingu at create@extra{halo}{%
+    halo/.code    	 = \pingu at set@extra{halo}{true}\pingu at color{halo}{#1},
+    halo/.default    = pingu at lightblue,
+    halo raise/.code = \def\pingu at x@halo at raise{#1},
+    halo above/.is if = @pingu at x@halo at above,
+    halo glow/.is if = @pingu at x@halo at glow% only active if glows loaded
+}{halo glow=\ifpengu at setup@glows@ true\else false\fi,halo raise=0mm,halo above=false}
+
+\def\pingu at draw@ea at halo{%
+\if at pingu@x at halo@above\pingu at layer{foreground}[]\fi
+\pingu at block[even odd rule]{\pingu at color@halo} ([yshift=\pingu at x@halo at raise]\pingu at name-head-top) ellipse [x radius=\pingu at w@half-\pingu at one,y radius=2.5mm] ellipse [x radius=\pingu at w@half-1.95mm,y radius=1.55mm];
+\if at pingu@x at halo@glow
+\pingu at block[even odd rule,/pingu/@glow]{\pingu at color@halo} ([yshift=\pingu at x@halo at raise]\pingu at name-head-top) ellipse [x radius=(\pingu at w@half-1.95mm)*1.7,y radius=1.55mm*2.35] ellipse [x radius=\pingu at w@half-1.95mm,y radius=1.55mm];
+\fi
+\if at pingu@x at halo@above\endpingu at layer{foreground}\fi
+}
+% #endregion
+
+% #region eye frame
+\pingu at create@extra{eyeframe}{%
+    % extra halo
+    eyeframe/.forward to  = /pingu/eye frame,
+    eye-frame/.forward to = /pingu/eye frame,
+    eye frame/.code       = \pingu at set@extra{eyeframe}{true}\pingu at color{eyeframe}{#1},
+    eye frame/.default    = pingu at black,
+}{}
+
+\def\pingu at draw@ea at eyeframe{%
+    \pingu at draw{\pingu at color@eyeframe} [rounded corners=.25mm](\pingu at name-eye-left)++(-2mm,1.5mm) to[bend left=8] ++(4.2mm,0) to[out=-80,in=70] ++(-.2mm,-2.75mm) to[bend left=32.5] ++(-3.65mm,0mm) to[out=135,in=-90] ++(-.8mm,2.7mm) -- cycle;
+    \pingu at draw{\pingu at color@eyeframe} [rounded corners=.25mm](\pingu at name-eye-right)++(2mm,1.5mm) to[bend right=8] ++(-4.2mm,0) to[out=-100,in=110] ++(.2mm,-2.75mm) to[bend right=32.5] ++(3.65mm,0mm) to[out=45,in=-90] ++(.8mm,2.7mm) -- cycle;
+}
+% #endregion
+
+% #region sheriff star
+\pingu at create@extra{sheriffstar}{%
+    sheriff star/.code             = \pingu at set@extra{sheriffstar}{true}\pingu at color{sheriffstar}{#1},
+    sheriff star/.default          = pingu at yellow,
+    sheriff star content/.code     = \def\pingu at x@sheriff at star@content{#1},
+    sheriff star lines/.code       = \pingu at color{sheriffstar at lines}{#1},
+}{sheriff star content={\resizebox{2.25mm}!{\textsf{\bfseries Sheriff}}},sheriff star lines=pingu at black!92!\pingu at color@sheriffstar}
+
+\def\pingu at draw@ea at sheriffstar{%
+\pingu at layer{middle}[]
+\path (\pingu at name-belly-center) -- (\pingu at name-head-back-con-left) node[pos=.6, star, star points=7, fill=\pingu at color@sheriffstar,minimum size=1.75mm,scale=.9,rotate=-5] (@) {};
+\foreach \i in {1,...,7} {
+    \pingu at block{\pingu at color@sheriffstar!98!pingu at black} (@.outer point \i) circle [radius=.2mm];
+}
+
+\node[,outer sep=0pt,inner xsep=0pt,inner ysep=.25mm] (@s) at (@) {\ifx\pingu at color@sheriffstar at lines\@pingu at none\else\color{\pingu at color@sheriffstar at lines}\fi\pingu at x@sheriff at star@content};
+\pingu at draw[line width=.002mm]{\pingu at color@sheriffstar at lines} (@s.north east) -- (@s.north west);
+\pingu at draw[line width=.002mm]{\pingu at color@sheriffstar at lines} (@s.south east) -- (@s.south west);
+\endpingu at layer}
+% #endregion
+
+%     #endregion
+% #endregion
+
+% #region wingitems
+%     #region wingitems-setup
+\def\pingu at may@draw at wing#1#2{\csname if at pingu@x@#1#2@\endcsname \csname pingu at draw@wi@#1\endcsname{#2}\fi}
+\edef\pingu at str@wing at left{left}
+\let\@pingu at wingitems@\@empty
+\newif\if at pingu@wing at item@side at left@
+\def\pingu at setup@wing#1#2{%
+    \edef\@tmpa{#2}% minus on left
+    \ifx\pingu at str@wing at left\@tmpa
+        \expandafter\def\expandafter\@angle{\csname @pingu at wingangle@items@\csname @pingu at select@#2wing@\endcsname @\endcsname+\pingu at wing@left at item@angle at user}%
+        \def\@sidesign{1}%
+        \if at pingu@wi at flip@left \@pingu at wing@item at side@left at false \else \@pingu at wing@item at side@left at true\fi
+    \else
+        \expandafter\def\expandafter\@angle{-(\csname @pingu at wingangle@items@\csname @pingu at select@#2wing@\endcsname @\endcsname+\pingu at wing@right at item@angle at user)}%
+        \def\@sidesign{-1}%
+        \if at pingu@wi at flip@right \@pingu at wing@item at side@left at true \else \@pingu at wing@item at side@left at false\fi
+    \fi
+    \expandafter\def\expandafter\@col{\csname pingu at color@#1#2\endcsname}%
+}
+
+\def\pingu at draw@wing at items{%
+\pingu at layer{middle}[]\@pingu at draw@wing at items@left\endpingu at layer
+\pingu at layer{middle}[]\@pingu at draw@wing at items@right\endpingu at layer
+}
+
+\let\@pingu at draw@wing at items@left\@empty
+\let\@pingu at draw@wing at items@right\@empty
+
+\def\pingu at create@wing at extra#1#2#3{%
+\pingu at csappto{@pingu at wingitems@}{#1}%
+\expandafter\def\expandafter\@pingu at draw@wing at items@left\expandafter{\@pingu at draw@wing at items@left\pingu at may@draw at wing{#1}{left}}%
+\expandafter\def\expandafter\@pingu at draw@wing at items@right\expandafter{\@pingu at draw@wing at items@right\pingu at may@draw at wing{#1}{right}}%
+\def\@lr{left}%
+\protected at edef\@tmp{\expandafter\expandafter\expandafter\expandafter\expandafter\unexpanded{{#1left}{#2}{#3}}}%
+\expandafter\pingu at create@extra\@tmp
+\def\@lr{right}%
+\protected at edef\@tmp{\expandafter\expandafter\expandafter\expandafter\expandafter\unexpanded{{#1right}{#2}{#3}}}%
+\expandafter\pingu at create@extra\@tmp}
+%     #endregion
+
+%     #region cane
+\pingu at create@wing at extra{cane}{%
+  cane \@lr/.code             = {\pingu at set@extra{cane\@lr}{true}\pingu at color{cane\@lr}{##1}},
+  cane \@lr/.default          = pingu at bronze,
+  cane \@lr\space raise/.code = {\@namedef{pinug at x@cane at raise@\@lr}{##1}},
+  cane \@lr\space length/.code = {\@namedef{pinug at x@cane at length@\@lr}{##1}},
+}{cane \@lr\space raise=0mm,cane \@lr\space length=15mm}
+
+% #1 wing
+\def\pingu at draw@wi at cane#1{%
+    \pingu at setup@wing{cane}{#1}%
+    \if at pingu@wing at item@side at left@
+        \pingu at block[thick,rotate around={\@angle+5:(\pingu at name-wing-#1)}]{\@col}(\pingu at name-wing-#1)++(0,-7mm+\pinug at x@cane at raise@left) -- ++(0,\csname pinug at x@cane at length@#1\endcsname) arc(180:0:2.25mm and 2.2mm) arc(360:180:.3mm and .275mm) arc(0:180:1.65mm and 1.65mm) -- ++(0,-\csname pinug at x@cane at length@#1\endcsname) arc(360:180:.3mm and .275mm) -- cycle;
+    \else
+        \pingu at block[thick,rotate around={\@angle-5:(\pingu at name-wing-#1)}]{\@col}(\pingu at name-wing-#1)++(0,-7mm+\pinug at x@cane at raise@right) -- ++(0,\csname pinug at x@cane at length@#1\endcsname) arc(0:180:2.25mm and 2.2mm) arc(180:360:.3mm and .275mm) arc(180:0:1.65mm and 1.65mm) -- ++(0,-\csname pinug at x@cane at length@#1\endcsname) arc(180:360:.3mm and .275mm) -- cycle;
+    \fi
+}
+%     #endregion
+
+%     #region staff
+\pingu at create@wing at extra{staff}{%
+    staff \@lr/.code         = {\pingu at set@extra{staff\@lr}{true}\pingu at color{staff\@lr}{##1}},
+    staff \@lr/.default      = pingu at bronze,
+    staff \@lr\space length/.code =\expandafter\def\csname pingu at staff@\@lr @length\endcsname{##1},
+}{staff \@lr\space length=28mm}
+\def\pingu at draw@wi at staff#1{%
+    \pingu at setup@wing{staff}{#1}%
+\scope[rotate around={\@angle:(\pingu at name-wing-#1)}]
+    \pingu at block{\csname pingu at color@staff#1\endcsname}(\pingu at name-wing-#1)++(\@sidesign*-.2mm,-11mm) -- ++(0,\csname pingu at staff@#1 at length\endcsname) arc(180:0:\@sidesign*.4mm and .3mm) coordinate[pos=.5] (\pingu at name-staff-#1-top) -- ++(0,-\csname pingu at staff@#1 at length\endcsname) arc(360:180:\@sidesign*.4mm and .3mm) -- cycle;
+\endscope
+}
+%     #endregion
+% #endregion
+
+% #region clothes
+\def\pingu@@xif at cloth#1#2{\csname if at pingu@x@#1@\endcsname\csname pingu at draw@cloth@#2\endcsname\fi}
+\def\pingu at xif@cloth#1#2{\ifcsname if at pingu@x@#1@\endcsname{\pingu@@xif at cloth{#1}{#2}}\fi}
+\def\pingu at draw@clothing at behind{%
+    \pingu at xif@cloth{secondshirt}{secondshirt at behind}%
+    \pingu at xif@cloth{shirt}{shirt at behind}%
+    \pingu at xif@cloth{cloak}{cloak at behind}%
+}
+
+\def\pingu at draw@clothing at middle{%
+    \pingu at xif@cloth{secondshirt}{secondshirt at middle}%
+    \pingu at xif@cloth{shirt}{shirt at middle}%
+    \pingu at xif@cloth{cloak}{cloak at middle}%
+}
+
+\def\pingu at draw@clothing at main{%
+    \pingu at xif@cloth{secondshirt}{secondshirt}%
+    \pingu at xif@cloth{shirt}{shirt}%
+    \pingu at xif@cloth{cloak}{cloak}%
+}
+% #endregion
+
+\def\pingu@@dummy at lib#1#2{%
+    \pgfqkeys{/pingu}{#1/.code={\PackageError{\tikzpingus at filename}{To use '#1' you need to load the '#2' library via '\string\pinguloadlibrary{#2}'}}}%
+    \expandafter\def\csname pingu@@lib@#1@\endcsname{#2}%
+}
+\def\pingu@@dummy at selector#1#2#3{%
+    \expandafter\csname pingu@#3 at add\endcsname{#1}{\PackageError{\tikzpingus at filename}{To use '#1' with '#3' you need to load the '#2' library via '\string\pinguloadlibrary{#2}'}}%
+    \expandafter\def\csname pingu@@lib@#1@#3@\endcsname{#2}%
+}
+\def\pingu at dummy@lib#1#2{\edef\tmp at list{#2}\@for\@current:=\tmp at list\do{\expandafter\pingu@@dummy at lib\expandafter{\@current}{#1}}\xappto\pingu at defaultlibs{,{#1}/{#2}}\xappto\pingu@@defaultlibs{,#1}}%
+% library | selector | keys
+\def\pingu at dummy@selector#1#2#3{\edef\tmp at list{#3}\@for\@current:=\tmp at list\do{\expandafter\pingu@@dummy at selector\expandafter{\@current}{#1}{#2}}}
+\def\pingu at defaultlibs{}\def\pingu@@defaultlibs{}
+\def\pingu at load@library#1{%
+% store common catcodes
+\expandafter\edef\csname pingu at lib@#1 at atcode\endcsname{\the\catcode`\@}%
+\expandafter\edef\csname pingu at lib@#1 at barcode\endcsname{\the\catcode`\|}%
+\expandafter\edef\csname pingu at lib@#1 at dollarcode\endcsname{\the\catcode`\$}%
+\catcode`\@=11 \catcode`\|=12 \catcode`\$=3\relax
+\def\pingu at tmp{tikzpingus-#1.lib.tex}\relax
+\InputIfFileExists{\pingu at tmp}{}{\PackageError{\tikzpingus at filename}{There is no '#1' library (searched: '\pingu at tmp')}}
+% restore catcodes
+\catcode`\@=\csname pingu at lib@#1 at atcode\endcsname
+\catcode`\|=\csname pingu at lib@#1 at barcode\endcsname
+\catcode`\$=\csname pingu at lib@#1 at dollarcode\endcsname
+}
+\def\pingu at loadlibrary#1{%
+\ifcsname pingu at lib@#1 at loaded\endcsname\else% do not load again
+    \expandafter\let\csname pingu at lib@#1 at loaded\endcsname=\@empty
+    \pingu at load@library{#1}\relax
+\fi
+}
+\def\pinguloadlibrary#1{\edef\tmp at list{#1}\@for\tmp at elem:=\tmp at list\do{\ifx\tmp at elem\@empty\else\pingu at loadlibrary{\tmp at elem}\fi}}
+\let\pinguloadlibraries\pinguloadlibrary
+
+\pingu at dummy@lib{shirts}{shirt,second shirt}
+\pingu at dummy@lib{glasses}{glasses,glasses round,monocle left,monocle right}
+\pingu at dummy@lib{medieval}{rook,crown,princess crown}
+\pingu at dummy@lib{cloak}{cloak,cape}
+\pingu at dummy@lib{christmas}{santa hat,santa beard}
+\pingu at dummy@lib{science-fiction}{lightsaber left,lightsaber right}
+\pingu at dummy@lib{fun}{cake-hat,pumpkin-hat,lollipop left,lollipop right}
+\pingu at dummy@lib{technology}{vr-headset,headphone,vr-controller left,vr-controller right,laptop left,laptop right}
+\pingu at dummy@lib{flags}{flag left,flag right}
+\pingu at dummy@lib{hats}{strawhat,hat,cap,construction helmet,conical hat}
+\pingu at dummy@lib{sport}{head band,medal}
+\pingu at dummy@lib{formal}{tie,bow tie,pants}
+\pingu at dummy@lib{signs}{sign post left,sign post right}
+\pingu at dummy@lib{devil}{devil horns,devil wings,devil fork left,devil fork right,eyes devil,left eye devil,right eye devil}
+\pingu at dummy@selector{devil}{lefteye}{devil}
+\pingu at dummy@selector{devil}{righteye}{devil}
+\pingu at dummy@lib{safe}{mask}
+\pingu at dummy@lib{magic}{handcast left,handcast right}
+\pingu at dummy@lib{movement}{}% register the lib
+\pingu at dummy@selector{movement}{bodytype}{tilt-right,tilt-left}
+\pingu at dummy@lib{emotions}{eyes sad,left eye sad,right eye sad,eyes angry,left eye angry,right eye angry,eyes hearts,left eye heart,right eye hearts,bill angry,blush}
+\pingu at dummy@selector{emotions}{lefteye}{sad,angry,hearts}
+\pingu at dummy@selector{emotions}{righteye}{sad,angry,hearts}
+
+\pingu at dummy@lib{horse}{horse left,horse right}
+
+\ifpengu at setup@bare@\else
+\pinguloadlibraries{\pingu@@defaultlibs}
+\fi
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/tikzpingus/tikzpingus.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-08-26 19:54:18 UTC (rev 64198)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2022-08-26 19:56:32 UTC (rev 64199)
@@ -801,7 +801,7 @@
     tikz-relay tikz-sfc tikz-swigs tikz-timing tikz-trackschematic tikz-truchet
     tikzbricks tikzcodeblocks tikzducks tikzfill tikzinclude tikzlings
     tikzmark tikzmarmots tikzorbital
-    tikzpackets tikzpagenodes tikzpeople tikzpfeile tikzposter
+    tikzpackets tikzpagenodes tikzpeople tikzpfeile tikzpingus tikzposter
     tikzscale tikzsymbols
     tikztosvg tile-graphic
     timbreicmc times timetable timing-diagrams tinos tipa tipa-de tipauni tipfr

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2022-08-26 19:54:18 UTC (rev 64198)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2022-08-26 19:56:32 UTC (rev 64199)
@@ -1907,7 +1907,8 @@
 

 # packages which need special .tex/.sty files installed
 $standardtex
-   = '(\.(.bx|4ht|cls|clo|cmap|code\.tex|def|fd|fontspec|ldf|lua|opm|sty|trsl)'
+   = '(\.(.bx|4ht|cls|clo|cmap|(code|lib)\.tex'
+    . '|def|fd|fontspec|ldf|lua|opm|sty|trsl)'
     . '|.*[^c]\.cfg)$'; # not ltxdoc.cfg
 %specialtex = (
  '2up',         '2up\.tex|' . $standardtex,

Modified: trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2022-08-26 19:54:18 UTC (rev 64198)
+++ trunk/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc	2022-08-26 19:56:32 UTC (rev 64199)
@@ -205,6 +205,7 @@
 depend tikzpagenodes
 depend tikzpeople
 depend tikzpfeile
+depend tikzpingus
 depend tikzposter
 depend tikzscale
 depend tikzsymbols

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


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