% \iffalse meta-comment
% !TEX encoding = UTF-8 Unicode
% \fi
%
% \iffalse meta-comment 
% 
% Copyright (C) 2016 by Ben Vitecek (current Maintainer)
% 
% This file may be distributed and/or modified under the 
% conditions of the LaTeX Project Public License, either 
% version 1.3 of this license or (at your option) any later 
% version. The latest version of this license is in: 
% 
%http://www.latex-project.org/lppl.txt 
% 
% and version 1.3c or later is part of all distributions of 
% LaTeX version 2008-05-04 or later. 
% 
% This work has the LPPL maintenance status `maintained'.
%
% This work consists of the files README, tikzsymbols.dtx, 
% tikzsymbols.ins and the derived files tikzsymbols.sty.
%
% \fi
%
% \iffalse 
%<*driver> 
\documentclass[onlydoc,11pt]{l3doc} 

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern} 
\usepackage[english]{babel}
\usepackage{marvosym} 
\usepackage{microtype}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{mathtools}
\usepackage{tikzsymbols} 
\usepackage{xparse}
\usepackage{marginnote}

\usepackage{cleveref}


\EnableCrossrefs 
%\CodelineIndex 
\RecordChanges 
\AtEndDocument { \PrintChanges \PrintIndex }

%: Ganz oben
\makeatletter
\ExplSyntaxOn


\newcommand\tikzsymbols{\Package{tikzsymbols}}

\NewDocumentCommand{\definedBasicTree} { O{1} m m m m }
  {
    \group_begin:
      \__tikzsymbols_Basic_Tree_off:nnnnn {#1} {#2} {#3} {#4} {#5}
    \group_end:
  }


\newcommand{\Package}{\pkg}
\newcommand{\Option}{\texttt}
\newcommand{\Makro}{\cs}
\newcommand{\makrouse}[1]{\use:c{#1}}
\renewcommand{\arg}[1]{\texttt{<#1>}}
\newcommand{\Meta}[1]{\meta{#1}}



\hfuzz=500pt
\vbadness=\maxdimen
\hbadness=\maxdimen

\cs_set_eq:NN \Manipulate \exp_args:Nnx

\cs_new:Npn \Manipulated
  {
    \clist_use:Nn \g_tikzsymbols_list_of_other_commands_clist { , \space ;;;;;\textbackslash }
  }

\cs_new:Npn \CreateExample #1#2
  {
    \tl_set_rescan:Nnn \l_tmpa_tl
      { 
        \char_set_catcode_other:N \{
        \char_set_catcode_other:N \}
      }
      {#2}
    \Makro{#1\l_tmpa_tl} \space \use:c {#1}#2
  }

\clist_new:N \printclist

%\clist_map_inline:Nn
%  \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist
%  {
%    \int_incr:N \l_tmpa_int
%    \int_compare:nTF { \l_tmpa_int = 3 }
%      { \clist_put_right:Nn \printclist { scale &  } \int_zero:N \l_tmpa_int }
%      { \clist_put_right:Nn \printclist {#1} }
%  }

\cs_new:Npn \MapinTable
  {
    \clist_use:Nn \printclist { }
  }

\clist_set_eq:NN \printclist \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist

\clist_if_exist:NF \printclist { \clist_new:N \printclist }

\newcommand{\loadtime}{\marginpar{load-time}}
\newcommand{\preamble}{\marginpar{preamble}}
\newcommand{\preload}{\marginpar{load-time and preamble}}


\ExplSyntaxOff
\makeatother


\begin{document}
\DocInput{tikzsymbols.dtx} 
\end{document} 
%</driver> 
% \fi
% 
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
%
%
%
% \iffalse meta-comment
%: Changes
% \fi
%
%
%
%
% \GetFileInfo{tikzsymbols.sty}
%
% \iffalse meta-comment
%: DoNotIndex
% \fi
%
%\DoNotIndex {\begin{tikzpicture},\end{tikzpicture}}
%\DoNotIndex {\verb, \DeclareRobustCommandx}
%\DoNotIndex {=\verb}
%\DoNotIndex {\verb||}
%\DoNotIndex {\draw,\fill,\DeclareRobustCommand, \colorlet,\shade}
%\DoNotIndex {\xspace,\begin,\end}
%
%
%
%
% \begin{documentation}
%
% \title{The \Package{\jobname} package\thanks{This document corresponds to \textsf{\jobname}~\fileversion, dated~\filedate.}}
%
%\author{Ben Vitecek \\ \href{mailto:b.vitecek@gmx.at}{b.vitecek@gmx.at}} 
%
% \date{May 14, 2017} 
%
% \maketitle{}
%
%
%
% \begin{abstract} \centering
%   Some symbols created using \Package{tikz}.
%
%   For differences between the releases 
%   see \cref{sec:important-changes}.
%
%   English is (still) not my native language so there (still) might be some
%   errors\footnote{They are -- of course -- on purpose.}. \Winkey.
% \end{abstract}
%
% \tableofcontents
%
%
% \section{Introduction}
% \label{sec:intro}
%
% \begin{comment}
% As far as I can remember this package is a result of me writing a cooking book.
% I wasn't able to find the symbols I wanted on CTAN and so I used \Package{tikz}
% and my (sadly) very humble skills to develope the predecessor
% called \Package{somesymbols}.  Developing and making symbols 
% was a lot of fun and suddenly I had (badly coded) Emoticons, cooking-symbols
% and other symbols. Somehow I got the idea of uploading them to CTAN
% and wrote
%
% Well, 
% \end{comment}
%
%
% As far as I can remember this package is the result of me writing a 
% cooking book\footnote{Well, it's one result, the other one is a cooking book.}.
% Back then I wasn't able to find the cooking symbols I wanted and 
% using time, \Package{tikz}, lot's of magic 
% (also known as \enquote{programming}, but only if the respective person
% knows what's going on) and a documentation in bad grammar\footnote{Not that it' now any better.} I somehow ended up with this package. 
% 
% During time \LaTeX3 became known to me and I started experimenting
% and programming in this (I would say due to its simplicity compared to \LaTeXe\
% far superior) language. Well, long story short: I was impressed. 
% And so the idea of writing my package in \LaTeX3 was born.
% 
% I finally took my time and started rewriting my code using \LaTeX3. 
% This process can be summarized as: \enquote{What \emph{does} this command?},
% \enquote{Why did I define \emph{this} command?} and 
% more generally \enquote{\emph{What} have I done?!}
% Well, let's hope my code (and grammar) is better this time\footnote{Looking at own risk.
%  You have been warned.}.
%
% Well \dots\ thats it, have fun!
%
%
%
% \section{Important changes}
% \label{sec:important-changes}
%
%^^A There should be no differences between the old (\LaTeXe) and new release (\LaTeX3)
%^^A except for the choices listed below. 
% The packages should behave the same way as the \enquote{old} (\LaTeXe) release.
%^^A The only difference I was able
%^^A to find is that now you can always use  empty
%^^A brackets and the default value is still inputted while in 
%^^A the old version an empty bracket sometimes leads to an
%^^A error message. 
%
% The option \Option{draft=absolute} is now
% obsolete and replaced by the much simpler option \Option{draft=true}.
%
% Furthermore the horribly named command
% \Makro{tikzsymbolsaftersymbolinput} is not defined anymore by this
% package. 
% Please use the new option \Option{after-symbol}, 
% in combination with the new command \Makro{tikzsymbolsset}, 
% see \cref{sec:options} for more information.
%
%^^A And a new Emoticon: \Makro{Changey} (and \Makro{dChangey}).
%
% \section{Options}
% \label{sec:options}
%
% ^^A All options but \Option{after-symbols} can be set as load-time
% ^^A options and can be given inside the optional argument of
% ^^A \Makro{usepackage}:
%
%
% Options can either be set as package options or using
% \Makro{tikzsymbolsset}. Some options can only be set as package
% options, those are described in \cref{sec:glob-opt}. 
%
% It is recommended to use the option \Option{draft=true} while
% working on the document.
%
% \begin{function}{\tikzsymbolsset}
%   \begin{syntax}
%     \Makro{tikzsymbolsset} \marg{keys = values}
%   \end{syntax}
%
%   Most keys, except
%   for the load-time options (\cref{sec:glob-opt}), can be
%   set using this command. 
%
%^^A   This command can only be used in the preamble and most keys, except
%^^A   for the load-time options (\cref{sec:glob-opt}), can be
%^^A   set using this command. 
% \end{function}
%
%
%
% \subsection{Load-time Options}
% \label{sec:glob-opt}
% 
% The following options \emph{cannot} be set using \Makro{tikzsymbolsset}.
%
% \subsubsection{marvosym (true/false)}
% \label{sec:marvosym}
% 
% \begin{syntax}
%   marvosym = true / false
% \end{syntax}
%
% Please load \tikzsymbols\
% \emph{after} \Package{marvosym}.
%
% \Package{marvosym} also defines \Makro{Smiley} and
% \Makro{Coffeecup}. If you prefer those symbols (\mvchr{169}, \mvchr{75}) over the
% \tikzsymbols\ ones (\Smiley, \Coffeecup) you can use this option. If set to true
% \Package{tikzsymbols} cancels the definition of its
% \Makro{Smiley} and \Makro{Coffeecup}:
%
% \begin{center}
%   \begin{tabular}{ c  c }
%     \toprule 
%     Without option \enquote{marvosym}: \Smiley \Coffeecup & With
%     option \enquote{marvosym}: \mvchr{169} \mvchr{75}\\ \midrule
%     \verb|\usepackage{marvosym}| & \verb|\usepackage{marvosym}|\\
%     \verb|\usepackage{tikzsymbols}| &
%     \verb|\usepackage[marvosym]{tikzsymbols}| \\
%     \bottomrule 
%   \end{tabular}
% \end{center}
%
% 
% This option raises an error if set \Option{true} without loading package \Package{marvosym}.
% 
% Can only be set as load-time option.
%
% You may also use the option \Option{prefix} (\cref{sec:prefix}).
%
% \subsubsection{usebox (true/false)}
% \label{sec:usebox}
% 
% In \Package{tikzsymbols} all symbols are stored inside boxes
% (\Makro{sbox}) and while I still have no idea what exactly happens,
% it shortens the compilation time of the document. By
% default this option is \Option{true}. 
%
% The drawback is that \LaTeX\ has only a limited number of box
% registers. If you come across an error message regarding boxes try setting \Option{usebox=false}. 
%
% Can only be  set as load-time option. 
%
% \subsubsection{prefix (\arg{string})}
% \label{sec:prefix}
% 
% This option takes a string as value:  \Option{prefix=\arg{string}} and
% adds this prefix to every command defined by this package. So
% setting \Option{prefix=<prefix>} adds \arg{prefix} to all commands of
% this package: \Makro{<prefix>command}.
%
%\arg{prefix} should neither contain
% any special characters (e.g., \"a, \"u, \ss, etc.) nor  spaces.
%
% By default it is empty, so no prefix is given, if this option is given
% without an argument \arg{prefix} is set to \Option{tikzsymbols}.
%
% Can only be set as a load-time option.
%
% For example:
%
% \begin{center}
%   \Makro{usepackage[prefix=tikzsym]\{tikzsymbols\}}
% \end{center}
%
% defines \Makro{Smiley} as \Makro{tikzsymSmiley}, \Makro{Kochtopf} as
% \Makro{tikzsymKochtopf}, \Makro{pot} as \Makro{tikzsympot}, etc.
%
% If you use this option or think about using this option the
% following command may be handy:
%
% \begin{function}{\tikzsymbolsuse}
%   \begin{syntax}
%     \Makro{tikzsymbolsuse}\marg{Symbolname}
%   \end{syntax}
%   This command takes the name of the symbol  \emph{without}
%   backslash and prints the symbol (or raises an error if the symbol
%   is not defined). Using this command you don't have to worry about
%   a \arg{prefix}, just write the command name and this command adds
%   automatically the given prefix to the command name.
%
%   For example:
%   \Makro{tikzsymbolsuse\{Smiley\}[2]} \tikzsymbolsuse{Smiley}[2]
%
%   \Makro{tikzsymbolsuse\{BasicTree\}[1.2]\{black\}\{red!50!black\}\{red\}\{leaf\}}
%   \tikzsymbolsuse{BasicTree}[1.2]{black}{red!50!black}{red}{leaf}
%
%
%   \Makro{tikzsymbolsuse\{Ofen\}} \tikzsymbolsuse{Ofen}
%
%   \Makro{tikzsymbolsuse\{Fire\}[-1.3]} \tikzsymbolsuse{Fire}[-1.3]
%
%   etc.
%
% 
% \end{function}
%
%
%
% \subsection{Preamble Options}
% \label{sec:pream-opt}
% 
% Most of these commands can be set either as package option or with
% \Makro{tikzsymbolsset}.
%
%
% \subsubsection{final (true/false)}
% \label{sec:final}
% 
% \begin{function}{final}
%  \begin{syntax}
%    final= \arg{true/false}
%  \end{syntax}
%
% This key has the opposite behavior of the option \Option{draft}.
%
% It is a boolean key and therefore accepts only \Option{true} or
% \Option{false} and is set to \Option{true} by default. Setting it to
% \Option{true} prints all symbols normally. Setting it to
% \Option{false} prints plain vanilla draft-boxes instead which speeds
% up the compile-process.
%
% \end{function}
%
% \subsubsection{draft (true/false)}
% \label{sec:draft}
% 
% \begin{function}{draft}
%   \begin{syntax}
%     draft = \arg{true/false}
%   \end{syntax}
%
%   While  working on the document it is recommended to set this option
%   to \Option{true} because creating many symbols may takes some time
%   to compile and by setting this option to \Option{true} the symbols
%   are replaced by plain vanilla rectangles which are faster to
%   create.
%
%   The old option \Option{draft=absolute} is 
%   obsolete and should therefore not be used.
%
% \end{function}
% 
%
%
% \subsubsection{tree (true/false/on/off)}
% \label{sec:tree}
% 
% \begin{function}{tree}
%  \begin{syntax}
%    tree= \arg{true/on/false/off}
%  \end{syntax}
%
% This key accepts \Option{true}, \Option{false} and furthermore
% \Option{on} and \Option{off}. The latter do exactly the same as the
% first ones. 
%
% This option   has only an effect on the command \Makro{BasicTree}
% and his derivates (\Makro{Springtree}, \Makro{Summertree},
% \Makro{Autumntree} and \Makro{Wintertree}) and substitutes them with
% \Package{tikz} drawn boxes. 
%
% So while \Option{draft=true} replaces the output of \emph{all} commands with simple
% black boxes, \Option{tree=true/on} only replaces the output of
% \enquote{tree}-commands with boxes. 
%
% It is recommended to use \Option{draft=true}, but if you want you
% can  use this option.
%
% \end{function}
%
%
% 
%
% \subsubsection{after-symbol (\arg{string or command})}
% \label{sec:after-symbol}
% 
% \begin{function}{after-symbol}
%   Is more stable if set using \Makro{tikzsymbolsset}.
%   \begin{syntax}
%     after-symbol = \marg{string or command}
%   \end{syntax}
%   The value of this key is inserted after every command of this
%   package. By default it is set to \Makro{xspace}. 
%^^A This command is more robust
%^^A  if used with \Makro{tikzsymbolsset}
% \end{function}
% 
%
% \subsubsection{baseline (true/false)}
% \label{sec:baseline}
% 
% \begin{function}{baseline}
%   \begin{syntax}
%     baseline = \marg{true/false}
%   \end{syntax}
%   This option mainly exists to let the commands of this package work inside
%   \pkg{todonotes} \cs{todo} command. If \Option{true} adds to each symbol of this package
%   the tikz option \Option{baseline=default}. If you do not want this, set this option
%   to \Option{false}. It is set to \Option{true} by default.
% \end{function}
% 
%
%
%
%
%
% \section {Symbols}
%
%
% In this section the  symbols are introduced.
% { They \Kochtopf  \tiny all \dInnocey \Huge change \Moai \small automatically \Wintertree \large with \oven \normalsize  text-size \Strichmaxerl. }
%
%
%
%
%
%
% \subsection{cooking-symbols \texorpdfstring{\Kochtopf}{Kochtopf}}
%
% 
% \begin{function} 
%   { 
%     \Kochtopf, 
%     \pot, 
%     \Bratpfanne, 
%     \fryingpan, 
%     \Schneebesen, 
%     \eggbeater, 
%     \Sieb, 
%     \sieve, 
%     \Purierstab,
%     \blender, 
%     \Dreizack, 
%     \trident, 
%     \Backblech, 
%     \bakingplate,
%     \Ofen, 
%     \oven, 
%     \Pfanne, 
%     \pan, 
%     \Herd, 
%     \cooker, 
%     \Saftpresse, 
%     \squeezer, 
%     \Schussel, 
%     \bowl, 
%     \Schaler, 
%     \peeler, 
%     \Reibe, 
%     \grater, 
%     \Flasche, 
%     \bottle,
%     \Nudelholz, 
%     \rollingpin 
%   }
%     
%     The following table shows all available cooking-symbols and their
%     respective commands.
%     The first column shows the command-names (german \& english),
%     the second the optional parameter(s).  
%     The optional parameter(s) are for both the german and the
%     english commands the same.
%
%     \Meta{scale} can be a number between (not exactly) $-1400$ and
%     (also not exactly) $1400$, default is $1$.
%
%
%     Da Umlaute nicht in Befehlsnamen vorkommen dürfen, werden die Umlaute
%     \"o, \"a, \"u durch o, a, u ersetzt.
% 
% \begin{longtable}{l l c@{~~}c} 
%   \multicolumn{2}{l}{German \& English Commands} & Optional
%   parameter(s) & Output \\\toprule\endhead
%   \\ \bottomrule \endfoot
%  \MapinTable   \bottomrule
% \end{longtable}
%
% 
% 
%
%
% \end{function}
%
%
%
%
%
%\subsection{Emoticons \texorpdfstring{\Smiley}{Smiley}}
%
%\subsubsection{\enquote{normal} Emoticons \texorpdfstring{\Cat}{Cat}}
%
%
%
% \begin{function}
%  {
%     \Smiley,
%     \Sadey,
%     \Neutrey,
%     \Changey,
%     \cChangey,
%     \Annoey,
%     \Laughey,
%     \Winkey,
%     \oldWinkey,
%     \Sey,
%     \Xey,
%     \Innocey,
%     \wInnocey,
%     \Cooley,
%     \Tongey,
%     \Nursey,
%     \Vomey,
%     \Walley,
%     \rWalley,
%     \Cat,
%     \Ninja,
%     \NiceReapey
%  }
%
% First column shows the commands, the second the (optional)
% parameter(s), the third the default-output (the only command with
% a mandatory argument is \Makro{Changey}).
%
% \Meta{scale} can be a number between (not exactly) $-2000$ and (not
% exactly) $2000$, ^^A{Do you even need so large symbols?},
% default is $1$.
%
% \Meta{color} can be every defined color. Note: The color names
% shouldn't contain special characters like \ss, \"a, \"o, \dots
%
% \Makro{Changey}'s \Meta{mood} has to be between $-2$ and $2$
% ($1$ equals \Makro{Smiley}, $-1$ \Makro{Sadey} and $0$ \Makro{Neutrey}).
% 
% \begin{longtable}{llc} 
%   Commands & (Optional) parameter(s) & Output \\\toprule\endhead
%  
%  \bottomrule\endfoot
%  
%   
%   \Makro{Smiley}& \oarg{scale}\oarg{color} & \Smiley \\
%   \Makro{Sadey}& \oarg{scale}\oarg{color} & \Sadey \\
%   \Makro{Neutrey}& \oarg{scale}\oarg{color} & \Neutrey \\
%   \Makro{Changey}& \oarg{scale}\oarg{color}\marg{mood} & \Changey{2} \\
%   \Makro{cChangey}& \oarg{scale}\oarg{color1}\oarg{color2}\oarg{color3}\marg{mood} & \cChangey{2} \\
%   \Makro{Annoey}& \oarg{scale}\oarg{color} & \Annoey \\
%   \Makro{Laughey}& \oarg{scale}\oarg{color}\oarg{mouth color} & \Laughey \\
%   \Makro{Winkey}& \oarg{scale}\oarg{color} & \Winkey \\
%   \Makro{oldWinkey}& \oarg{scale}\oarg{color} & \oldWinkey \\
%   \Makro{Sey}& \oarg{scale}\oarg{color} & \Sey \\
%   \Makro{Xey}& \oarg{scale}\oarg{color} & \Xey \\
%   \Makro{Innocey}& \oarg{scale}\oarg{color}\oarg{halo color} & \Innocey \\
%   \Makro{wInnocey}& \oarg{scale} & \wInnocey \\
%   \Makro{Cooley}& \oarg{scale}\oarg{color} & \Cooley \\
%   \Makro{Tongey}& \oarg{scale}\oarg{color}\oarg{tongue color} & \Tongey \\
%   \Makro{Nursey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{cross color} &\Nursey \\
%   \Makro{Vomey}& \oarg{scale}\oarg{color}\oarg{vomit color} & \Vomey \\
%   \Makro{Walley}& \oarg{scale}\oarg{color}\oarg{wall color} & \Walley \\
%   \Makro{rWalley}\marginnote{\enquote{r} for \enquote{random generated cracks}.}& \oarg{scale}\oarg{color}\oarg{wall color} & \rWalley \\
%   \Makro{Cat}& \oarg{scale}& \Cat \\
%   \Makro{Ninja}& \oarg{scale}\oarg{color}\oarg{headband color}\oarg{eye color}& \Ninja \\
%   \Makro{NiceReapey} & \oarg{scale} & \NiceReapey \\
%    \bottomrule
% \end{longtable}
%
%
%
%
% \end{function}
%
% Examples: \CreateExample{Sadey}{[][red]}
%
% \CreateExample{Cooley} {[-3][cyan]}
% 
% \CreateExample{Vomey}{[1.5][green!80!black][olive]}
% 
% \CreateExample{Nursey}{[][yellow][blue][red]}.
% 
% \CreateExample{Ninja}{[1.3][][violet][red]}.
% 
% \verb|\colorbox{yellow}{\Winkey \Annoey[-1]\Neutrey}|\colorbox{yellow}{\Winkey \Annoey [-1]\Neutrey}
% 
% \verb|\textcolor{blue}{\Sey}| \textcolor{blue}{\Sey}
%
% \CreateExample{Changey} {{-2}}
% \CreateExample{Changey} {{-1.367}}
% \CreateExample{Changey} {{-1}}
% \CreateExample{Changey} {{0}}
% \CreateExample{Changey} {{1}}
% \CreateExample{Changey} {{1.41}}
% \CreateExample{Changey} {{2}}
%
% \CreateExample{cChangey} {{2}}
% \CreateExample{cChangey} {{1}}
% \CreateExample{cChangey} {{0.5}}
% \CreateExample{cChangey} {{0.1}}
% \CreateExample{cChangey} {{0}}
% \CreateExample{cChangey} {{-0.5}}
% \CreateExample{cChangey} {{-1}}
% \CreateExample{cChangey} {{-2}}
%
% \CreateExample{cChangey} {[][][blue]{-1}}
% \CreateExample{cChangey} {[][][blue]{0.5}}
%
% If you intent to change the color of \cs{cChangey} you may define a new command
% so that you do not have to write those brackets each time.
%
%
% \subsubsection{\enquote{3D} Emoticons \texorpdfstring{\dSmiley\dSadey[-1]}{dSmiley dSadey}}
%
%
% \begin{function}
%   {
%     \dSmiley,
%     \dSadey,
%     \dNeutrey,
%     \dChangey,
%     \dcChangey,
%     \dAnnoey,
%     \dLaughey,
%     \dWinkey,
%     \dSey,
%     \dXey,
%     \dInnocey,
%     \dCooley,
%     \dNinja,
%     \drWalley,
%     \dWalley,
%     \dVomey,
%     \dNursey,
%     \dTongey,
%     \olddWinkey
%   }
%
%
%
% First column shows the commands (note: the \enquote{3D} Emoticons
% begin with \Makro{d\dots}), the second shows the (optional)
% parameter(s), the third shows the default-output (the only command
% with a mandatory argument is \Makro{dChangey}).
%
% \Meta{scale} can be a number between a small number (under
% $-500$ for sure) and a large number (over 500 for sure),
% default is $1$.
% 
% \Meta{color} can be every defined color (see examples below). Note:
% The color names shouldn't contain special characters like \ss, \"a,
% \"o, \dots
%
% \Makro{Changey}'s \meta{mood} has to be between $-2$ and $2$
% ($1$ equals \Makro{dSmiley}, $-1$ \Makro{dSadey} and $0$ \Makro{dNeutrey}).
%
% \begin{longtable}{llc}
%   Commands & Optional parameter(s) & Output \\\toprule\endhead
%  
%  \bottomrule\endfoot
%   
%   \Makro{dSmiley}& \oarg{scale}\oarg{color} & \dSmiley \\
%   \Makro{dSadey}& \oarg{scale}\oarg{color} & \dSadey \\
%   \Makro{dNeutrey}& \oarg{scale}\oarg{color} & \dNeutrey \\
%   \Makro{dChangey}& \oarg{scale}\oarg{color}\marg{mood} & \dChangey{2} \\
%   \Makro{dcChangey}& \oarg{scale}\oarg{color1}\oarg{color2}\oarg{color3}\marg{mood} & \dcChangey{2} \\
%   \Makro{dLaughey}& \oarg{scale}\oarg{color}\oarg{mouth color} & \dLaughey \\
%   \Makro{dAnnoey}& \oarg{scale}\oarg{color} & \dAnnoey \\
%   \Makro{dWinkey}& \oarg{scale}\oarg{color} & \dWinkey \\
%   \Makro{olddWinkey}& \oarg{scale}\oarg{color} & \olddWinkey \\
%   \Makro{dSey}& \oarg{scale}\oarg{color} & \dSey \\
%   \Makro{dXey}& \oarg{scale}\oarg{color} & \dXey \\
%   \Makro{dInnocey}& \oarg{scale}\oarg{color}\oarg{halo color} & \dInnocey \\
%   \Makro{dCooley}& \oarg{scale}\oarg{color} & \dCooley \\
%   \Makro{dTongey}& \oarg{scale}\oarg{color}\oarg{tongue color} & \dTongey \\
%   \Makro{dNursey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{cross color} & \dNursey \\
%   \Makro{dVomey}& \oarg{scale}\oarg{color}\oarg{vomit color} & \dVomey \\
%   \Makro{dWalley}& \oarg{scale}\oarg{color}\oarg{wall color} & \dWalley  \\
%   \Makro{drWalley}\marginnote{\enquote{r} for \enquote{random generated cracks}.}& \oarg{scale}\oarg{color}\oarg{wall color}& \drWalley \\
%   \Makro{dNinja}& \oarg{scale}\oarg{color}\oarg{headband color}\oarg{eye color} & \dNinja  \\
%    \bottomrule
% \end{longtable}
%
% \end{function}
%
%
% Examples:
% \CreateExample{dSadey}{[][red]}
%
% \CreateExample{dCooley}{[-3][cyan]}
% 
% \CreateExample{dVomey}{[1.5][green!70!black][olive]}
% 
% \CreateExample{dNursey}{[][yellow][blue][red]}.
% 
% \CreateExample{dNinja}{[1.3][][violet][red]}.
%
% \CreateExample{dChangey} {{-2}}
% \CreateExample{dChangey} {{-1.367}}
% \CreateExample{dChangey} {{-1}}
% \CreateExample{dChangey} {{0}}
% \CreateExample{dChangey} {{1}}
% \CreateExample{dChangey} {{1.41}}
% \CreateExample{dChangey} {{2}}
%
%
% \CreateExample{dcChangey} {{2}}
% \CreateExample{dcChangey} {{1}}
% \CreateExample{dcChangey} {{0.5}}
% \CreateExample{dcChangey} {{0.1}}
% \CreateExample{dcChangey} {{0}}
% \CreateExample{dcChangey} {{-0.5}}
% \CreateExample{dcChangey} {{-1}}
% \CreateExample{dcChangey} {{-2}}
%
% \CreateExample{dcChangey} {[][][blue]{-1}}
% \CreateExample{dcChangey} {[][][blue]{0.5}}
%
% If you intent to change the color of \cs{dcChangey} you may define a new command
% so that you do not have to write those brackets each time.
%
% \subsection{other Symbols \texorpdfstring{\Moai}{Moai}}
%
% \begin{function}
%   {
%     \Strichmaxerl,
%     \Candle,
%     \Fire,
%     \Coffeecup,
%     \Chair,
%     \Bed,
%     \Tribar,
%     \Moai,
%     \Snowman
%   }
%
% \Makro{Strichmaxerl}'s optional parameters 2--5 (\Meta{left arm} to
% \Meta{right leg}) can be a number
% between $-360$ and $360$ (of course the number can be even
% greater or even smaller.). The parameters are
% the angles between the body  and the separate parts of
% \Makro{Strichmaxerl} (see examples).
%
% \Meta{scale} can be a very great and a very small negative number (but I
% don't think, that you need so large symbols).
%
% \Meta{color} can be every defined color. Note: The color names
% shouldn't contain special characters like \ss, \"a, \"o, \dots.
%
% \begin{longtable}{llc}
%   Commands  & Optional parameter(s)  & Output \\\toprule\endhead
%  
%  \bottomrule\endfoot
%
%   \Makro{Strichmaxerl} & \oarg{scale}\oarg{left arm}\oarg{right arm}\oarg{left leg}\oarg{right leg}  &\Strichmaxerl\\
%   \Makro{Candle} & \oarg{scale} & \Candle\\
%   \Makro{Fire} & \oarg{scale} & \Fire\\
%   \Makro{Coffeecup} & \oarg{scale} & \Coffeecup\\
%   \Makro{Chair} & \oarg{scale} & \Chair\\
%   \Makro{Bed} & \oarg{scale} & \Bed\\
%   \Makro{Moai} & \oarg{scale} & \Moai\\
%   \Makro{Tribar} &\oarg{scale}\oarg{color 1}\oarg{color 2}\oarg{color 3} & \Tribar\\
%   \Makro{Snowman} &\oarg{scale} & \Snowman\\
%    \bottomrule
% \end{longtable}
% 
% 
% \end{function}
%
% \CreateExample{Tribar}{[-10][blue][red][green]}
% 
% \CreateExample{Tribar}{[2.1][blue][blue!50][blue!20]}
% 
% \vspace{1ex}
% 
% \CreateExample{Strichmaxerl}{[1][10][30][40][4]} , 
%
% \CreateExample{Strichmaxerl}{[1.4][210][310][10][90]} , 
% 
% \CreateExample{Strichmaxerl}{[2][510][110][190][990]} ,
%
% \CreateExample{Strichmaxerl}{[0.9][54][28][95][16]}
%
% \CreateExample{Strichmaxerl}{[][54][28]}
%
%
%
% \begin{function} 
%   {
%     \BasicTree ,
%     \Springtree ,
%     \Summertree ,
%     \Wintertree ,
%     \WorstTree ,
%   }
%
% \subsection{Trees \texorpdfstring{\BasicTree{blue!60!black}{red}{green}{leaf}}{BasicTree}}\label{Trees}
%
% \Meta{scale} can be a number between (not exactly) $-900$ and (again
% not exactly) $900$, default is
% $1$.
%
% \Meta{color} can be every defined color (see examples below). Note:
% The color names shouldn't contain special characters like \ss, \"a,
% \"o, \dots.
%
% \marg{leaf} uses the colors of \marg{leaf color a}
% and \marg{leaf color b}, you can leave this one empty if you don't
% want leaves (\verb|\Wintertree| is without \emph{leaf}, see examples
% below).
%
% If you are using those trees, \LaTeX{} needs longer to produce the
% output.  So you may use the package option \Option{tree=off},
% or (better) \Option{draft=true} (see section
% \cref{sec:draft} and \cref{sec:tree}) to make \LaTeX{} faster.
%
% Furthermore this trees are pretty much stolen from the 
% \Package{tikz} manual.
%
% \begin{center}
% \begin{tabular}{@{}llc@{}}
%   Commands & Optional/Needed parameter(s) & Output
%   \\\toprule
%  
%
%   \Makro{BasicTree} & \oarg{scale}\marg{trunk color}\marg{leaf color a}\marg{leaf color b}\marg{leaf} & see below \\
%
%   \Makro{Springtree} & \oarg{scale} & \Springtree \\
%   \Makro{Summertree} & \oarg{scale} & \Summertree \\
%   \Makro{Autumntree} & \oarg{scale} & \Autumntree \\
%   \Makro{Wintertree} & \oarg{scale} & \Wintertree  \\
%   \Makro{WorstTree} & \oarg{scale} & \WorstTree  \\
%   \bottomrule
% \end{tabular}
% \end{center}
%
% \end{function}
%
% \paragraph{\Makro{BasicTree} examples} Some \enquote{normal} trees:
% 
% \verb|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}}|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}}
% 
% \CreateExample{BasicTree}{[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf}}
%  
% \CreateExample{BasicTree}{[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{}}
% 
% \CreateExample{BasicTree}{[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf}}
% 
% \verb|\colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}| 
% \colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}
%
% \paragraph{draftbox \Makro{BasicTree} examples} Some \enquote{draftbox} trees
% (using \Option{tree=false}):
% 
% \dots and using the same trees with \Option{tree=off/false} or \Option{draft}(\Option{=true}): 
% 
% \verb|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}}| 
% \colorbox{green}{\definedBasicTree{red}{orange}{yellow}{leaf}}
%  
% \verb|\BasicTree[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf}| 
% \definedBasicTree[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf}
%  
% \verb|\BasicTree[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{}|
% \definedBasicTree[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{}
%  
% \verb|\BasicTree[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf}| 
% \definedBasicTree[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf}
%  
% \verb|\colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}| \colorbox{black}{\definedBasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}
% 
% \bigskip
%
% I think it's better if you define your own trees using \verb|\newcommand| and \verb|\BasicTree|:
%\begin{verbatim}
% \newcommand{\Myicetree}[1][1]{%
%   \BasicTree[#1]{blue!65!white}{cyan!50!white}{cyan!50!white}{}}
% \end{verbatim}
%
%
%
% \section{Known errors \& Problems}
%
% \subsection*{marvosym}
% Make sure you load  \Package{marvosym} \emph{before}
% \Package{tikzsymbols} because both packages define \verb|\Smiley|,
% \Package{marvosym} via \verb|\newcommand| \tikzsymbols\ via
% \Makro{DeclareDocumentCommand}.
% 
% If you load \Package{marvosym} \emph{after} \tikzsymbols,
% \LaTeX{} generates an error-message because \verb|\Smiley| has
% already been defined.
%
% If you load \Package{marvosym} \emph{before} \tikzsymbols,
% \Package{tikzsymbols} will overwrite \Package{marvosym}'s Smiley (and Coffeecup) and no
% error-message is generated (if you like the \verb|\Smiley| from
% marvosym more, use the \tikzsymbols{} option \verb|marvosym|
% or \Option{prefix}).
%
% \subsection*{babel}
%
% If you encounter an error message like
% \begin{verbatim}
%   Argument of \pgffor@next has an extra }
% \end{verbatim}
% while using \pkg{babel} with e.g. language \enquote{francais}
% and for example \cs{Cooley} you may add
% \begin{verbatim}
%   \usetikzlibrary{babel}
% \end{verbatim}
% to your preamble. This should (hopefully) fix the problem. 
%
% \section{Nobody is perfect}
%
% If you find a bug please send me a mail 
% involving a \emph{minimal example}   
% showing the bug and a short description. Please mention
% \enquote{\Package{tikzsymbols}} in the header, \enquote{gmx} has
% a habit of putting mails into the spam-folder
% and it helps me to recognize those mails faster.
% This can also be the reason why I may need some time to answer 
% the mail.
%
% Suggestions are also welcome.
%
%^^A \section{making suggestions}
%
%^^A Not only bug reports but also suggestions are most welcome.
% 
%
%
%
% \section{Danksagung}
%
% I would like to thank all users for providing bug reports 
% and helping to improve this package.  
%
% Furthermore many thanks to my brother helping me improving 
% the symbols.
%
%
%
%
% \end{documentation}
% \begin{implementation}
%
% \iffalse meta-comment
%: subsec: Code
% \fi
%
% There is not much to see, all this symbols were created with \Package{tikz}.
% But it may helps you (somehow).
%
% PS. Enter at own risk, bad code and grammar up ahead.
% 
%
%
%
% 
%
% \section{\LaTeX3 code}
%
%\iffalse
% !TEX root = tikzsymbols.dtx
% !TEX encoding = UTF-8 Unicode
%\fi
%
%
%    \begin{macrocode}
%<@@=tikzsymbols> 
%    \end{macrocode}
%
%\changes {v1.0} {2013/01/19} {Initial version}
%\changes {v1.05} {2013/02/13} {Deleted a \enquote{t} in the BasicTree-code, shortened the trunk from the tree a bit, renamed some codes,  made an index}
%\changes {v1.6} {2013/02/14} {Now \enquote{Person} can be used in sections, etc.}
%\changes {v1.6} {2013/02/14} {Now an error message is generated  if the last parameter of \enquote{BasicTree} is neither \enquote{leaf} nor empty.}
%\changes {v1.6} {2013/02/14} { New options: draft and final. If in documentclass the option \enquote{draft} is defined, the package recognizes it. Plus some warnings if you use class option draft/final with package option tree=on/off.}
%\changes {v1.6} {2013/02/14} { Renamed \enquote{tikzsymbolsaftersymbolinput} to \enquote{tikzsymbolsaftersymbolinput}}
%\changes {v1.61} {2013/02/17} {Made an invisible box in BasicTree.}
%\changes {v1.65} {2013/02/17} {Improved BasicTree; New symbols \enquote{Schaler/peeler}, Laughey, Walley, Ninja; but didn't improve the source-description}
%\changes {v1.7} {2013/02/28} {New symbols, etc.}
%\changes {v2.0} {2013/03/07} {Fixed Bugs, improved BasicTree, new option \enquote{marvosym}, new symbol}
%\changes {v2.2} {2013/03/23} {Now you can use negative scaling. Include \Makro{@ifpackageloaded}. Did something else, I can't remember}
%\changes {v2.5} {2013/04/18} {New option: draftabsolute, changed the documentation a bit}
%\changes {v3.0} {2013/07/21} {Changed the documentation}
%\changes {v3.0} {2013/07/21} {Replaced \cs{let} by \cs{tikzsymbols@let}}
% \changes{v3.0}{2013/07/21}{Changed symbol code}
% \changes{v3.0}{2013/07/26}{Using \cs{changes{}{}{}} correctly (hopefully)}
% \changes{v3.0}{2013/07/21}{Changed output of \enquote{absolute} option}
% \changes{v3.0b}{2014/10/19}{Deleted non ASCII characters in der .sty file.}
% \changes{v3.0d}{2014/10/29}{\cs{tikzsymbolsscl} to \cs{tikzsymbols@scl}}
% \changes{v3.0e}{2014/10/29}{\cs{tikzsymbolsDeclareRobustCommand} to \cs{tikzsymbols@Declare@Robust@Command}}
% \changes{v3.0f}{2014/10/29}{\cs{tikzsymbolsbxPrmtrstore} to \cs{tikzsymbols@bx@Prmtrstore}}
%
% \changes{v3.0g}{2015/10/01}{Deleted package \Package{calc}, using now \cs{pgfmathsetlength} instead of \cs{setlength}.}
%
% \changes{v3.0h}{2015/10/13}{Added a missing \cs{fi} into the code. }
%
% \changes{v3.01alpha}{2015/10/03}{Started from new using \LaTeX3}
%
% \changes{v3.38}{2015/10/03}{Nearly finished translating the code to
% \LaTeX3. Himmel! Das war einfach nur zach! Muss aber noch den
% \LaTeXe\ Code löschen.}
%
% \changes{v3.40}{2015/10/03}{Now everything is written in \LaTeX3.}
%
% \changes{v3.50}{2015/10/03}{Now it compiles without error (without 
%  using any command or options.)}
%
% \changes{v3.58}{2015/10/04}{Fixed every error occurring while using
% the symbols without optional arguments and package
% options. Something is still wrong with \cs{@@_Basic_Tree_off:nnnnn}}
%
% \changes{v3.60}{2015/10/05}{Fixed \cs{@@_Basic_Tree_off:nnnnn}}
%
% \changes{v3.70}{2015/10/05}{Now every draftbox has the correct
% size.}
%
% \changes{v3.75}{2015/10/05}{\cs{tikzsymbolsuse} works now.}
%
% \changes{v3.9}{2015/10/8}{Various fixes, new command \Makro{tikzsymbolsuse} and started to write a new documentation.}
% \changes{v3.95}{2016/03/20}{Removed the only-preambility of \Makro{tikzsymbolsset}.}
% \changes{v3.95}{2016/03/20}{Changed name of key-group from 'preamble' to 
%   'document'.}
%
% \changes{v3.9}{2016/04/04}{Added \Makro{@ifackagelater}.}
% \changes{v3.99}{2016/04/04}{As advised undid my version-resetting.}
% \changes{v4.0}{2016/03/20}{Finished reworking the code.}
% \changes{v4.0}{2016/26/12}{Added \cs{Nudelholz} bzw. \cs{rollingpin}.}
%
% \changes{v4.02}{2017/05/14}{Added option 'baseline=true/false' to fix a some strange 
% behaviors with \pkg{todonotes}.}
% \changes{v4.02}{2017/05/14}{Defined the tikz-style '/\_\_tikzsymbols' which is used to implement 'baseline'.}
%
% The first lines are always the same: What do I need, what is the
% package named.
%    \begin{macrocode} 
\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}}
\@ifpackageloaded{expl3}{}{\RequirePackage{expl3}}
\@ifpackagelater{expl3}{2017/04/01}
  {}
  {%
    \PackageError { tikzsymbols }{ Support~package~expl3~too~old }
      {%
        You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~
        'l3packages'.\MessageBreak
        Loading~tikzsymbols~will~abort!
      }%
    \endinput
  }
\ProvidesExplPackage
  {tikzsymbols}
  {2017/05/14}
  {4.02}
  {Some symbols created using tikz and LaTeX3.}
\@ifpackageloaded { tikz } {} { \RequirePackage { tikz } }
\@ifpackageloaded { xcolor } {} { \RequirePackage { xcolor } }
\@ifpackageloaded { xspace } {} { \RequirePackage { xspace } }
\@ifpackageloaded { l3keys2e } {} { \RequirePackage { l3keys2e } }
%    \end{macrocode} 
%
% Furthermore we need to load some libraries from \Package{tikz}, I
% hope these \Makro{ExplSyntax...} don't break anything.
%    \begin{macrocode}
\ExplSyntaxOff
\usetikzlibrary {arrows,decorations.pathmorphing,trees}
\ExplSyntaxOn
%    \end{macrocode}
%
%
% \begin{macro}{
%   \l_@@_if_scale_negative_bool  ,
%   \g_@@_if_opt_tree_print_bool ,
%   \g_@@_if_opt_draft_bool ,
%   \g_@@_if_opt_marvosym_bool , 
%   \g_@@_if_opt_usebox_bool ,
%  }
% Booleans we later need, \cs{l_@@_if_scale_negative_bool} is set true
% in symbols which need some extra code if the scaling is negative
% (like \verb|\Chair|). The other booleans are used for the package
% options and are therefor globally.
%    \begin{macrocode}
\bool_new:N \l_@@_if_scale_negative_bool 
\bool_new:N \g_@@_if_opt_tree_print_bool 
\bool_new:N \g_@@_if_opt_draft_bool
\bool_new:N \g_@@_if_opt_marvosym_bool 
\bool_new:N \g_@@_if_opt_usebox_bool
%    \end{macrocode}
% \end{macro}
%  
% Setting some of them to true by default.
%    \begin{macrocode}
\bool_gset_true:N \g_@@_if_opt_tree_print_bool
\bool_gset_true:N \g_@@_if_opt_usebox_bool
%    \end{macrocode}
%
%
%
%
% \begin{macro}{
%  \g_@@_command_prefix_tl ,
%  \l_@@_tikzsymbols_after_symbol_tl ,
%  \g_@@_current_situation_tl ,
%  \g_@@_scale_abs_tl ,
%  \c_@@_leaf_tl ,
%  \c_@@_black_tl ,
%  }
%    
%    I think the names speak for themselves,
%    \cs{g_@@_command_prefix_tl} is used in the option \Option{prefix}
%    and adds its content to the command names as a prefix, by default
%    it is empty.
%
%    \Makro{g_tikzsymbols_after_symbol_tl} adds its content to the
%    document after the symbol is used.
%
%    In \Makro{l_@@_current_situation} is a storage for the
%    current font-size and color-configurations which is needed when
%    defining boxes.
%
%    \Makro{l_@@_scale_abs_tl} safes absolute scaling of a symbol;
%    could have used \Makro{l_tmpa_tl}. It is a \texttt{tl} because
%    using a \texttt{fp} would have required me to use
%    \Makro{fp_use:N} every time. I'm lazy, I know.
%
%    The last two are constants and are used to check user specific
%    input at some commands (\Makro{BasicTree} and \Makro{Ninja} I believe).
%    \begin{macrocode}
\tl_clear_new:N \g_@@_command_prefix_tl
\tl_new:N \l_@@_tikzsymbols_after_symbol_tl 
\tl_new:N \l_@@_current_situation_tl
\tl_new:N \l_@@_scale_abs_tl
\tl_const:Nn \c_@@_leaf_tl { leaf }
\tl_const:Nn \c_@@_black_tl { black }
%    \end{macrocode}
% \end{macro}
%
% Setting the default value and yes, I know that you maybe should not
% use \Makro{xspace}, but I do it anyway:
%    \begin{macrocode}
\tl_gset:Nn \l_@@_tikzsymbols_after_symbol_tl { \xspace }
%    \end{macrocode}
%
%
%
%
% \begin{macro}{\tikzsymbolsaftersymbolinput}
% An obsolete macro. Is not defined anymore.
%    \begin{macrocode}
%\cs_set_eq:NN \tikzsymbolsaftersymbolinput {}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{
%   \l_@@_Strichmaxerl_x_LA_fp ,
%   \l_@@_Strichmaxerl_x_RA_fp,
%   \l_@@_Strichmaxerl_x_LB_fp,
%   \l_@@_Strichmaxerl_x_RB_fp,
%   \l_@@_Strichmaxerl_y_LA_fp,
%   \l_@@_Strichmaxerl_y_RA_fp,
%   \l_@@_Strichmaxerl_y_LB_fp,
%   \l_@@_Strichmaxerl_y_RB_fp,
%   \@@_Strichmaxerl_x_max_fp,
%   \@@_Strichmaxerl_x_min_fp,
%  }
%
%    Needed for the plain vanilla boxes of \Makro{Strichmaxerl} for
%    the length (\texttt{x}) and height (\texttt{y}).
%    \begin{macrocode}
\fp_new:N \l_@@_Strichmaxerl_x_LA_fp
\fp_new:N \l_@@_Strichmaxerl_x_RA_fp
\fp_new:N \l_@@_Strichmaxerl_x_LB_fp
\fp_new:N \l_@@_Strichmaxerl_x_RB_fp
%    \end{macrocode}
%    \begin{macrocode}
\fp_new:N \l_@@_Strichmaxerl_y_LA_fp
\fp_new:N \l_@@_Strichmaxerl_y_RA_fp
\fp_new:N \l_@@_Strichmaxerl_y_LB_fp
\fp_new:N \l_@@_Strichmaxerl_y_RB_fp
%    \end{macrocode}
%    \begin{macrocode}
\fp_new:N \@@_Strichmaxerl_x_max_fp
\fp_new:N \@@_Strichmaxerl_x_min_fp
%    \end{macrocode}
% \end{macro}
%
%
%
%
%
% \begin{macro}
%  {
%    \l_@@_Moai_thickness_dim ,
%  }
%
%    It  is used inside \Makro{Moai}. I figured that depending
%    on the scaling the line-thickness of \Makro{Moai}  should change
%    its value (bad explained, please just look at the code).
%
%    \begin{macrocode}
\dim_new:N \l_@@_Moai_thickness_dim
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}
%  {
%    \g_tikzsymbols_list_of_commands_clist ,
%    \g_tikzsymbols_list_of_english_commands_clist ,
%  }
%
%    Store every command defined by this package. I may delete them.
%    \begin{macrocode}
\clist_new:N \l_@@_tmpa_clist
\clist_new:N \g_tikzsymbols_list_of_commands_clist
\clist_new:N \g_tikzsymbols_list_of_english_commands_clist
\clist_new:N \g_tikzsymbols_list_of_cooking_commands_clist
\clist_new:N \g_tikzsymbols_list_of_emoticons_commands_clist
\clist_new:N \g_tikzsymbols_list_of_other_commands_clist
\clist_new:N \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist
%    \end{macrocode}
% \end{macro}
%
%
% \subsection{Messages}
%
% Nothing special happens in this subsection.
%
% \begin{macro}{ obsolete-option }
%   Message for obsolete options. 
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { obsolete-option } 
  { 
    Option \ '#1' \ is \ obsolete. \ 
    Please \ use \ '#2' \ instead. 
  }
  {
    The \ option \ you \ used \ is \ obsolete.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{undefined-command}
%   Message for undefined commands used by \Makro{tikzsymbolsuse}.
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { undefined-command } 
  {  
    Undefined \ Control \ sequence: \ '#1'. \
    Did \ you \ write \ the \ name \ correctly?
  } 
  { 
    The \ command \ is \ not \ defined.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ obsolete-command }
%   Message for obsolete commands (\Makro{Person}, etc.)
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { obsolete-command } 
  {  
    Command \ '#1' \ is \ obsolete. \
    Please \ use \ '#2' \ instead.
  } 
  { 
    The \ command \ you \ used \ is \ obsolete.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ tree }
%   Error message for \Makro{BasicTree}. I hope the text is understandable.
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { tree } 
  {  
    Parameter \ '#1' \ cannot \ be \ used. \
    The \ last \ parameter \ has \ either \ to \ be \ 
    'leaf' \ or \ has \ to \ be \ empty.
  } 
  { 
    The \ fourth \ mandatory \ argument \ of \ '\protect\BasicTree' \
    has \ either \ to \ be \ leaf \ or \ empty.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ marvosym }
%   Message if option \Option{marvosym} is used, but the package not
%   loaded at all.
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { marvosym } 
  {  
    Use \ option \ 'marvosym' \ only\ 
    if \ you \ load \ package \ 'marvosym'. \
  }{
    Either \ load \ package \ 'marvosym' \ or \ 
    delete \ the \ tikzsymbols \ option \ 'marvosym'. \
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ tikzsymbolsset }
%    \begin{macrocode}
%\msg_new:nnnn { tikzsymbols } { tikzsymbolsset } 
%  {  
%    You \ can \ use \ \tikzsymbolsset  only \ in \ the \
%    Preamble. 
%  }{
%    You \ have \ to \ set \ options \ either \ while \ loading \
%    the \ package \ or \ in \ the \ Preamble.
%    \msg_see_documentation_text:n { tikzsymbols } 
%  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ Changey-number-too-large }
% \changes{v3.95}{2016/03/20}{New}
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { Changey-number-too-large } 
  {  
    Changey's \ mood \ has \ to \ be \  between \
    -2 \ and \ 2 \ (currently:\ '#1' ). 
  }{
    Given \ number \ is \ too \ large \ (small), \ please
    \ use \ an \ number \ between \ -2 \ and \ 2.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
\msg_new:nnnn { tikzsymbols } { cChangey-number-too-large } 
  {  
    cChangey's \ mood \ has \ to \ be \  between \
    -2 \ and \ 2 \ (currently:\ '#1' ). 
  }{
    Given \ number \ is \ too \ large \ (small), \ please
    \ use \ an \ number \ between \ -2 \ and \ 2.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ tikzsymbolsaftersymbolinput  }
% \changes{v3.95}{2016/03/20}{New}
%    \begin{macrocode}
\msg_new:nnnn { tikzsymbols } { tikzsymbolsaftersymbolinput  } 
  {  
    The \ command \ \exp_not:N\tikzsymbolsaftersymbolinput  is \
    obsolete. \ Please \ use \ the \ option \  'after-symbol' \ instead.
  }{
    \exp_not:N\tikzsymbolsaftersymbolinput  is \ not \ supported \ anymore.
    \msg_see_documentation_text:n { tikzsymbols } 
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
%
%
%
%
%
%
%
% \begin{macro}{ \@@_Basic_Tree_aux:nnnnn }
%   I am still using a similar construction as in the \LaTeXe\
%   code. Inside this command is safed either
%   \Makro{@@_Basic_Tree_on:nnnnn} or \Makro{@@_Basic_Tree_off:nnnnn}
%   depending on the package options.
%    \begin{macrocode}
\cs_new:Npn \@@_Basic_Tree_aux:nnnnn {  }
%    \end{macrocode}
% \end{macro}
%
%
% 
% \subsection{Keys}
% \label{sec:keys}
% 
% Now let's define the keys for this package. Using \LaTeX3 makes the
% whole thing a bit easier. All keys (or most) are in a group. I may
% delete it because it may be not necessary.
%    \begin{macrocode}
\keys_define:nn { tikzsymbols }
  {
%    \end{macrocode}
%
% \begin{macro}{ final }
%   Its the final option, deddepi, deedidbtutp. Nothing special.
%    \begin{macrocode}
    final .bool_gset_inverse:N = \g_@@_if_opt_draft_bool ,
    final .default:n = { true } ,
    final .groups:n = { document } ,
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ draft }
%   This option can be set to three values: true, false and absolute. I
%   decided that \Option{draft=absolute} is obsolete and that
%   \Option{draft=true} replaces this option. Of course, the 'absolute' is
%   still available, but gives a warning when used.
%    \begin{macrocode}
    draft .choices:nn =
      { true , false , absolute }
      {
        \int_case:nn { \l_keys_choice_int }
          {
            { 1 } { \bool_gset_true:N \g_@@_if_opt_draft_bool }
            { 2 } { \bool_gset_false:N \g_@@_if_opt_draft_bool }
            { 3 } 
              { 
                \msg_error:nnnn { tikzsymbols } { obsolete-option } 
                  { draft = absolute } { draft = true } 
                  \bool_gset_true:N \g_@@_if_opt_draft_bool 
              }
          }
      } ,
    draft .default:n= { false } ,
    draft .groups:n = { document } ,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ draftabsolute }
%   Obsolete option. Old name for \Option{draft=absolute} which is
%   itself an old name for \Option{draft=true}. Don't use this option.
%    \begin{macrocode}
    draftabsolute .code:n = 
      {  
        \msg_error:nnnn { tikzsymbols } { obsolete-option } 
          { draftabsolute } { draft = true }
        \bool_gset_true:N \g_@@_if_opt_draft_bool
      } , 
    draftabsolute .groups:n = { document } ,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ marvosym }
%   Sets the marvosym-boolean to it respective value.
%    \begin{macrocode}    
    marvosym .bool_gset:N = \g_@@_if_opt_marvosym_bool ,
    marvosym .default:n = { true } ,
    marvosym .groups:n = { package } ,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ usebox }
%   Don't want to speed up the code due to random reasons? Set this
%   option to 'false'. 
%    \begin{macrocode}
    usebox .bool_gset:N = \g_@@_if_opt_usebox_bool ,
    usebox .default:n = { true } ,
    usebox .groups:n = { package } ,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ prefix }
%   Sets the prefix of the commands. If for example \Option{prefix} is
%   set to \Option{tikz} this prefix is added to the command
%   names. \Makro{Sieb} will be \Makro{tikzSieb}.
%    \begin{macrocode}
    prefix .tl_gset:N =  \g_@@_command_prefix_tl ,
    prefix .default:n = { tikzsymbols } ,
    prefix .groups:n = { package } ,
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ tree }
%   An old option, you should use \Option{draft=true} instead, but it
%   is not obsolete. For historic reasons this key still accepts 'on'
%   and 'off'.
%    \begin{macrocode}
    tree .choices:nn = 
      { true , on , false , off }
      {
        \int_compare:nTF { \l_keys_choice_int <= 2 }
          { \bool_gset_true:N \g_@@_if_opt_tree_print_bool }
          { \bool_gset_false:N \g_@@_if_opt_tree_print_bool }
      } ,
    tree .default:n = { true } ,
    tree .groups:n = { document } ,
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ after-symbol }
% Available as package option, but should be used 
% using \Makro{tikzsymbolsuse}.
%    \begin{macrocode}
    after-symbol .tl_set:N = \l_@@_tikzsymbols_after_symbol_tl ,
    after-symbol .default:n= { \xspace } ,
    after-symbol .groups:n = { document } ,
%    \end{macrocode}
%
% \begin{macro}{ baseline }
%    \begin{macrocode}
    baseline .choice: ,
    baseline / true .code:n = { \pgfkeys{ /@@/.style={baseline=default} } } ,
    baseline / false .code:n = { \pgfkeys{ /@@/.style={ } } } ,
    baseline .default:n = { true } ,
%    \end{macrocode}
% \end{macro}
%
%
% Now we end the key definitions.
%    \begin{macrocode}
  }
%    \end{macrocode}
%
% To make this package \pkg{todonotes} safe:
%    \begin{macrocode}
\pgfkeys{ /@@/.style={baseline=default} }
%    \end{macrocode}
%
%
%  We process all options. 
% \begin{macro}{ ProcessKeyOptions }
%    \begin{macrocode}
\ProcessKeysOptions { tikzsymbols }
%    \end{macrocode}
% \end{macro}
%
%<*ignore>
% \begin{macro}{ after-symbol }
%    \begin{macrocode}
\keys_define:nn { tikzsymbols }
  {
    after-symbol .tl_gset:N = \l_@@_tikzsymbols_after_symbol_tl ,
    after-symbol .default:n= { \xspace } ,
    after-symbol .groups:n = { document } ,
  }
%    \end{macrocode}
% \end{macro}
%</ignore>
%
%
% \subsection{Helping Commands}
% \label{sec:helping-commands}
%
% I define some macros which will help me  to write less.
%
% \begin{macro}{ \@@_set_scale_abs_tl:n }
%   Sets \Makro{l_@@_scale_abs_tl} to the absolute input value. I made
%   this to write less which is always a good idea (mostly).
%    \begin{macrocode}
\cs_new:Npn \@@_set_scale_abs_tl:n #1
  {
    \tl_set:Nx \l_@@_scale_abs_tl { \fp_to_tl:n { abs (#1) } }
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \@@_create_draftbox:nn }
%   Creating the command to print the plain vanilla draft-boxes. The
%   group is needed because I am setting \Makro{vbadness} to
%   \Makro{c_max_dimen} to suppress underfull-hbox messages. The input
%   is evaluated because we need it for the height and the length of
%   the draftbox. The draftbox itself contains just the vbox and hbox
%   commands to set the height and length of the box surrounded by a
%   frame.
%    \begin{macrocode}
\cs_new:Npn \@@_create_draftbox:nn #1#2
  {
    \group_begin: 
    \vbadness=\c_max_dim
    \fp_set:Nn \l_tmpa_fp {#1}
    \fp_set:Nn \l_tmpb_fp {#2}
    \frame
      {
        \vbox_to_ht:nn { \fp_to_dim:N \l_tmpb_fp } 
          {
            \hbox_to_wd:nn { \fp_to_dim:N \l_tmpa_fp } { }
          }
      }
    \group_end: 
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ \@@_create_squared_draftbox:n }
%   Again a command to write less. This command is used if the drat-box
%   is a square.
%    \begin{macrocode}
\cs_new:Npn \@@_create_squared_draftbox:n #1 
  { 
    \@@_create_draftbox:nn {#1} {#1} 
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \@@_if_savebox_undefined:nT }
%   I may misuse the naming scheme because the command ends with
%   \texttt{nT}, but is not a conditional
%   function. \Makro{l_@@_current_situation_tl} is used here. The box
%   is only defined if it not defined yet. I don't know how those
%   boxes work, but if the same box (alias the same command in the
%   same font size and the same color and same options) is used again
%   the output (maybe) doesn't need to be calculated again. Its
%   faster, somehow, but it's faster. I am using the old commands
%   \Makro{global} and \Makro{sbox} because I didn't find the \LaTeX3
%   equivalents.
%    \begin{macrocode}
\cs_new:Npn \@@_if_savebox_undefined:nT #1#2
  {
    \tl_set:Nx \l_@@_current_situation_tl { \current@color _ \f@size  }
    \box_if_exist:cF { g_@@_savebox_ \l_@@_current_situation_tl _ #1  _box }
      { 
        \box_new:c { g_@@_savebox_ \l_@@_current_situation_tl _ #1  _box } 
        \exp_args:NNc \global \sbox 
           { g_@@_savebox_ \l_@@_current_situation_tl _ #1 _box } {#2}
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{
% \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT }
% Again to support my laziness. It creates the box (if it isn't
% defined yet) and uses the box immediately afterwards.
%    \begin{macrocode}
\cs_new:Npn \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT #1#2
  {
    \@@_if_savebox_undefined:nT {#1} {#2}
    \@@_use_savebox:n {#1}
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \@@_use_savebox:n }
%   Use the defined \Makro{sbox}-box.
%    \begin{macrocode}
\cs_new:Npn \@@_use_savebox:n #1
  {
    \exp_args:Nc \usebox 
      { g_@@_savebox_ \l_@@_current_situation_tl _ #1 _box }
  }
%    \end{macrocode}
% \end{macro}
%
%
% \subsubsection{DeclareDocumentCommand Helpers}
% \label{sec:declaredocumenthelpers}
%
% I define my own \Makro{DeclareDocumentCommand} (well, I am still
% using \Makro{DeclareDocumentCommand}, but I am wrapping some other
% commands around) to be able to add a prefix to the command-name and to
% be able to write \Makro{Command}[] (note the empty brackets, you
% don't need to insert a '1' inside, it is done automatically).
%
% \begin{macro}{ \@@_if_empty:Tn }
%   This command is used in \Makro{DeclareDocumentCommand} to help
%   setting the options with \verb|>{ \@@_if_empty:Tn } O{1}|. If the
%   brackets are empty the value of the option is inserted. Example:
%   The option has been defined by 'O{none}', so the value inserted if
%   no brackets are given is 'none'. If empty brackets are given,
%   normally nothing is inserted (and not 'none'). Using this command
%   if empty brackets are given 'none' is inserted automatically. This
%   safes some error messages. \Makro{ProcessedArgument} is defined in
%   the manual of \Package{xparse}.
%    \begin{macrocode}
\cs_new:Npn \@@_if_empty:Tn #1#2
  {
    \tl_if_empty:nTF {#2} 
      { \tl_set:Nn \ProcessedArgument {#1} }
      { \tl_set:Nn \ProcessedArgument {#2} }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ \@@_parse_command_options:n }
%   This command helps setting the default value if empty brackets are
%   given. The code is copied from the \Package{xparse} package and
%   edited to fit my purpose. This command gets the input from the
%   options-definition. 
%    \begin{macrocode}
\cs_new_protected:Npn \@@_parse_command_options:n #1
  {
    \clist_clear:N \l_tmpa_clist
    \@@_parse_command_options:N #1
      \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ \@@_parse_command_options:N }
%   This command (also copied) goes through the option-definitions (in
%   my case only 'm' and 'O\{...\}') character for character. If 'O'
%   is found a (somehow) special command is used. 
%    \begin{macrocode}
\cs_new_protected:Npn \@@_parse_command_options:N #1
  {
    \quark_if_recursion_tail_stop:N #1
    \tl_if_eq:NNTF #1 O
      { \@@_parse_option_type_O:w #1 }
      { \@@_parse_option_type:w #1  }
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ \@@_parse_option_type:w }
%   Just saves the input in a clist. Does nothing more.
%    \begin{macrocode}
\cs_new_protected:Npn \@@_parse_option_type:w #1
  {
    \clist_put_right:Nn \l_tmpa_clist {#1}
    \@@_parse_command_options:N
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{ \@@_parse_option_type_O:w }
%   Used if an optional argument is found. Saves the default value of
%   the optional argument in \Makro{@@_if_empty:nn}. 
%    \begin{macrocode}
\cs_new_protected:Npn \@@_parse_option_type_O:w #1#2
  {
    \clist_put_right:Nn \l_tmpa_clist { >{ \@@_if_empty:Tn {#2} } O{#2}  }
    \@@_parse_command_options:N
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \@@_Declare_Document_Command:nnn }
%   Main Command to define the command of this package. It runs
%   through the second input (argument specifications), stores the
%   arguments in a \verb|\l_tmpa_clist| and adds
%   \verb|>{ \@@_if_empty:Tn {#2} }| if an optional argument is
%   found. Yeah. I think the rest is self-explaining.
%    \begin{macrocode}
\cs_new:Npn \@@_Declare_Document_Command:nnn #1#2#3
  {
    \clist_put_right:Nn \g_tikzsymbols_list_of_commands_clist {#1}
    \clist_put_right:Nn \l_@@_tmpa_clist {#1}
    \@@_parse_command_options:n {#2}
    \exp_args:Ncx \DeclareDocumentCommand 
      { \g_@@_command_prefix_tl #1 } 
      { \clist_use:Nn \l_tmpa_clist {} } 
      { 
        \cs_if_exist:NT \tikzsymbolsaftersymbolinput 
          {
            \msg_error:nn { tikzsymbols } { tikzsymbolsaftersymbolinput }
          }
        #3 
       \tl_use:N \l_@@_tikzsymbols_after_symbol_tl
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \@@_Declare_Document_Commands:nnnn }
%   Needed for cooking-symbols. Automatically defines the english name
%   given in the second argument.
%    \begin{macrocode}
\prop_new:N \g_@@_english_commands_prop
\cs_new:Npn \@@_Declare_Document_Commands:nnnn #1#2#3#4
  {
    \clist_put_right:Nn 
    \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist 
    {
      \cs{#1} & \cs{#2} & \oarg{scale} & \tikzsymbolsuse{#1} \\
    }
    \prop_gput:Nnn \g_@@_english_commands_prop {#2} {#1}
    \@@_Declare_Document_Command:nnn {#1} {#3} {#4}
    \@@_let:nn {#2} {#1}
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
%
%
%
%
%
% \begin{macro}{ \@@_let:nn }
%   Used to define the english commands. It's a simple
%   \Makro{cs_set_eq:cc} adding the prefix to the command-name. 
%    \begin{macrocode}
\cs_new:Npn \@@_let:nn #1#2
  {
    \clist_put_right:Nn \g_tikzsymbols_list_of_commands_clist {#1}
    \clist_put_right:Nn \g_tikzsymbols_list_of_english_commands_clist {#1}
    \clist_put_right:Nn \l_@@_tmpa_clist {#1}
    \cs_set_eq:cc { \g_@@_command_prefix_tl #1 } { \g_@@_command_prefix_tl #2 }
  }
%    \end{macrocode}
% \end{macro}
%
%
% If the option \Option{usebox} is set to false the code inside is
% executed, it redefines the commands to create and use the draft-boxes.
%    \begin{macrocode}
\AtBeginDocument
  {
    \bool_if:NF \g_@@_if_opt_usebox_bool
      {
        \cs_set_eq:NN \@@_if_savebox_undefined:nT \use_ii:nn
        \cs_set_eq:NN \@@_use_savebox:n \use_none:n
      }
  }
%    \end{macrocode}
% The command \Makro{BasicTree} is split up into two commands, named
% \texttt{on} and \texttt{off}. The helper command
% \Makro{@@_Basic_Tree_aux:nnnnn} is redefined accordingly.
%    \begin{macrocode}
\cs_set:Npn \@@_Basic_Tree_aux:nnnnn
  {
    \bool_if:NTF \g_@@_if_opt_tree_print_bool
      { \@@_Basic_Tree_on:nnnnn }
      { \@@_Basic_Tree_off:nnnnn }
  }
%    \end{macrocode}
%
%
%
%\subsection{Tree commands}
%\label{sec:tree-commands}
%
%
%
% \begin{macro}{ \c_@@_tikz_set_tl }
%  First I define  \verb|\c_@@_tikz_set_tl|, it contains the setup for
%  the tree. This definition is pretty much the definition from the
%  \Package{tikz} package.
%    \begin{macrocode}
\tl_const:Nn \c_@@_tikz_set_tl
  {
    \tikzset
      {
        @@_ld/.style={ level ~ distance=#1ex },
        @@_lw/.style={ line ~ width=#1ex },
        level ~ 1/.style={ @@_ld=0.60, @@_trunk,                   @@_lw=0.1 ,sibling ~ angle=60 },
        level ~ 2/.style={ @@_ld=0.20, @@_trunk!80!@@_leaf ~ a, @@_lw=.073,sibling ~ angle=70 },
        level ~ 3/.style={ @@_ld=0.25, @@_trunk!60!@@_leaf ~ a, @@_lw=.05,sibling ~ angle=70 }, 
        level ~ 4/.style={ @@_ld=0.10, @@_trunk!40!@@_leaf ~ a, @@_lw=.025,sibling ~ angle=60 },
        level ~ 5/.style={ @@_ld=0.15, @@_trunk!20!@@_leaf ~ a, @@_lw=.02,sibling ~ angle=60 },
        level ~ 6/.style={ @@_ld=0.08, @@_leaf ~ a, @@_lw=.021,sibling ~ angle=60 },
    }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \@@_Basic_Tree_off:nnnnn }
% This command creates not only the plain vanilla draftbox, but also a box
% drawn by \Package{tikz} using the colors of the tree to color the
% lines. If the last argument is 'leaf', the box has a bottom line, if
% it is empty the bottom line disappears.
%    \begin{macrocode}
\cs_new:Npn \@@_Basic_Tree_off:nnnnn #1#2#3#4#5
  {
    \group_begin:
    \@@_set_scale_abs_tl:n {#1}
    \dim_set:Nn \l_tmpa_dim { \fp_to_dim:n { abs( #1 + 0.02 ex ) } }
    \tl_set:Nn \l_tmpa_tl {#5}
    \bool_if:NTF \g_@@_if_opt_draft_bool
      {
        \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl
          {
            \@@_create_draftbox:nn 
              { (1.6772ex+0.4pt) * \l_tmpa_dim }
              { (1.42ex-0.2pt+0.4pt) * \l_tmpa_dim }
          }{
            \@@_create_draftbox:nn 
              { (1.3996ex+0.4pt) * \l_tmpa_dim }
              { (1.28ex-0.2pt+0.4pt) * \l_tmpa_dim }
          }
      }{
        \begin{tikzpicture}[ /@@ , scale=#1+0.02ex,x=1ex,y=1ex, 
          line ~ width=0.4pt * \l_tmpa_dim]
          \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl
            {
              \draw[#2] (-0.8386,0+0.2pt) -- (-0.8386,1.42);
              \draw[#3] (-0.8386,1.42) -- (0.8386,1.42);
              \draw[#4] (0.8386,1.42) -- (0.8386,0+0.2pt);
              \draw[#3] (0.8386,0+0.2pt) -- (0,0+0.2pt);
              \draw[#4] (0,0+0.2pt) -- (-0.8386,0+0.2pt);
            }{
              \draw[#2] (-0.6998,0+0.2pt) -- (-0.6998,0.68+0.6);
              \draw[#3] (-0.6998,0.68+0.6) -- (0.6998,0.68+0.6);
              \draw[#4] (0.6998,0.68+0.6) -- (0.6998,0+0.2pt);
            }
        \end{tikzpicture}%
      }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{ \@@_Basic_Tree_on:nnnnn }
%   Prints the tree in all its glory. Again, this code is more or less
%   \Makro{l_@@_scale_negative_bool} is used in here.
%   copy and pasted from the \Package{tikz} manual.
%    \begin{macrocode}
\cs_new:Npn \@@_Basic_Tree_on:nnnnn #1#2#3#4#5
  {
    \group_begin:
    \bool_if:NTF \g_@@_if_opt_draft_bool
      { \@@_Basic_Tree_off:nnnnn {#1} {#2} {#3} {#4} {#5} }
      {
        \@@_set_scale_abs_tl:n {#1}
        \fp_compare:nT { #1 < 0 } { \bool_set_true:N \l_@@_scale_negative_bool }
        \tl_set:Nn \l_tmpa_tl {#5}
        \tl_use:N \c_@@_tikz_set_tl
        \colorlet { @@_trunk } {#2}
        \colorlet { @@_leaf ~ a } {#3}
        \colorlet { @@_leaf ~ b } {#4}
        \begin{tikzpicture}[ /@@ , x=1ex , y=1ex , line ~ width=0.07ex]
          \pgfarrowsdeclare{leaf}{leaf}
            { \pgfarrowsleftextend { -0.1ex } \pgfarrowsrightextend { -0.05ex } }
            {
              \pgfpathmoveto { \pgfpoint { -0.01ex } { 0ex } }
              \pgfpatharc { 150 } { 30 } { 0.08ex }
              \pgfpatharc {-30} {-150} { 0.08ex }
              \pgfusepathqfill
            }
          \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl 
            { 
              \draw[transparent , scale=#1+0.02ex , line ~ width=0.4pt* \l_@@_scale_abs_tl ] 
                (-0.8386,0+0.2pt) rectangle (0.8386, 1.42);
            }{
              \draw[transparent , scale=#1+0.02ex , line ~ width=0.4pt* \l_@@_scale_abs_tl ] 
                (-0.6998,0+0.2pt) rectangle (0.6998,0.68+0.6);
            }
        \pgflowlevel { \pgftransformscale { #1 + 0.02ex } }
          {
            \coordinate (root) [grow ~ cyclic , rotate=90] child 
              {
                child [line ~ cap=round] foreach \a in { 0 , 1 , 2 } 
                  { 
                    child ~ foreach \b in { 0 , 1 } 
                      {
                        child ~ foreach \c in { 0 , 1 , 2 } 
                          { child ~ foreach \d in { 0 , 1 } 
                            {
                              child ~ foreach ~ \leafcolor in { @@_leaf ~ a , @@_leaf ~ b } 
                              { edge ~ from ~ parent ~ [color=\leafcolor,-#5]}
                            }
                          }
                      }
                  } 
                edge ~ from ~ parent [shorten ~ >=-0.05ex, serif ~ cm- , line ~ cap=butt]
              };
         }
       \end{tikzpicture}
       \bool_set_false:N \l_@@_scale_negative_bool
      }
    \group_end:
  }
%    \end{macrocode}
% \end{macro}
%
% Thats the end of our tree drawing commands. \Makro{BasicTree}
% itself is defined later.
%
% \subsection{cooking utensils}
%
% Now let's define the cooking utensils (or cooking tools,
% whatever). 
%
% \begin{macro}{ \Kochtopf , \pot }
%   I think this was my first cooking utensil I made. It's a pot
%   containing boiling water. To create the german and english command
%   at the same time I use \Makro{@@_Declare_Document_Commands:nnnn}.
%   The buildup of this commands, as you saw ob subsection above, is
%   alway the same. First is the definition of the savebox. Inside the
%   absolute scaling value is safed and then checked if the plain
%   vanilla draft-boxes or the tool itself should be printed. The
%   draftbox is created via \Makro{@@_create_draftbox:nn} and contains
%   the necessary dimensions so that the output of the surroundings of
%   the symbol doesn't change\footnote{English, B\"a\"ahh!}. The
%   symbol is created using the 'tikzpicture' environment. Yup.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Kochtopf } { pot } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Kochtopf_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.47ex * \l_@@_scale_abs_tl } 
              { 1.577ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}[ /@@ , x=2ex,y=2.2ex, line ~ width=0.07ex *
              \l_@@_scale_abs_tl , scale=#1 ]
%    \end{macrocode}
% Let's draw the pot.
%    \begin{macrocode}
              \draw[rounded ~ corners=0.2ex * \l_@@_scale_abs_tl] (0,0.5) -- (0,0) -- (1,0) -- (1,0.5);
              \draw (0,0.4)  arc [start ~ angle=90, end ~ angle=270, radius=0.1];
              \draw (1,0.4) arc [start ~ angle=90, end ~ angle=-90, radius=0.1];
              \draw (0,0.5) -- (1,0.5) .. controls (1,0.6) and (0,0.6) .. (0,0.5);
              \draw (0.6,0.585) arc [start ~ angle=0, end ~ angle=180, radius=0.1];
%    \end{macrocode}
% Let's draw the water.
%    \begin{macrocode}
              \draw[decorate, decoration=
                { snake , amplitude=0.12ex*\l_@@_scale_abs_tl , segment ~ length=0.93ex * \l_@@_scale_abs_tl } ]
                (0,0.35) -- (1,0.35);
%    \end{macrocode}
% Now the bubbles are printed.
%    \begin{macrocode}
              \draw (0.45,0.1) circle (0.04);
              \draw (0.7,0.11) circle (0.04);
              \draw (0.13, 0.125) circle (0.04);
              \draw (0.3,0.2) circle (0.04);
              \draw (0.88,0.2) circle (0.04);
              \draw (0.1,0.25) circle (0.04);
              \draw (0.6,0.25) circle (0.04);
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{ \Bratpfanne , \fryingpan }
%   I think I wont add text to every command because I think a
%   description is not really necessary.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Bratpfanne } { fryingpan } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Bratpfanne_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.5535ex * \l_@@_scale_abs_tl } 
              { 1.4525ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.7ex , y=1.4ex , line ~ width=0.07ex * \l_@@_scale_abs_tl, 
                scale=#1 , decoration=
                  { 
                    snake , amplitude = 0.05ex * \l_@@_scale_abs_tl , 
                    segment ~ length = 0.408ex * \l_@@_scale_abs_tl
                  }
              ]
%    \end{macrocode}
% Drawing the actual fryingpan.
%    \begin{macrocode}              
              \draw[rounded ~ corners = 0.07ex * \l_@@_scale_abs_tl]
                (-1,0) -- (1,0) -- (1.5,0.4) -- (-1.5,0.4) -- cycle;
              \draw[line ~ width = 0.037ex * \l_@@_scale_abs_tl , rounded ~ corners=0.023ex * \l_@@_scale_abs_tl]
                (-1.4,0.3) -- (-3.5,0.3) -- (-3.5,0.25) -- (-1.3,0.25);
              \draw[line ~ width=0.023ex * \l_@@_scale_abs_tl ]
                (-1.1,0.1) -- (1.1,0.1);
%    \end{macrocode}
% The following code prints the \dots\ ahm \dots\ Hitzwellen die aus
% der Pfanne aufsteigen (oder so).
%    \begin{macrocode}
              \foreach \l_tmpa_tl in { -0.3, 0.3, -1 , 1 }
                \draw[line ~ width=0.035ex * \l_@@_scale_abs_tl, decorate] ( \l_tmpa_tl , 0.5 ) -- ( \l_tmpa_tl , 1 );
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Schneebesen , \eggbeater }
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Schneebesen } { eggbeater } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schneebesen_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.5697ex * \l_@@_scale_abs_tl } 
              { 1.57985ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                y=2.1ex,x=1.4ex, scale=#1,
                line ~ width = 0.01ex * \l_@@_scale_abs_tl * 0.97
              ]
              \foreach \l_tmpa_fp in { -0.2 , -0.15, -0.1, -0.05, 0, 0.05, 0.1, 0.15, 0.2 } 
                \draw  (0,0) .. controls ( \l_tmpa_fp , 0.0) and  ( \l_tmpa_fp ,0.2) ..  (0,0.4);
              \fill
                [
                  line ~ width = 0.05ex * \l_@@_scale_abs_tl , 
                  rounded ~ corners=0.07ex* \l_@@_scale_abs_tl 
                ]
                (-0.05,0.37) -- (0.05,0.37) -- (0.05,0.75) -- (-0.05,0.75) -- cycle;
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Sieb , \sieve }
% A sieve, now the lines are not drawn manually, but using the power
% of trigonometric functions and \Package{tikz}. Wasn't really
% necessary, but I did it anyway.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Sieb } { sieve } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sieb_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.478ex * \l_@@_scale_abs_tl } 
              { 1.175ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.8ex, y=2.8ex,line ~ width=0.02ex * \l_@@_scale_abs_tl  , scale=#1
              ]
%    \end{macrocode}
% Drawing a simple line to hold the sieve.
%    \begin{macrocode}
              \draw[line ~ width=0.09ex* \l_@@_scale_abs_tl ] (-0.2,0) -- (1.01,0);
%    \end{macrocode}
% Drawing halved circles with decreasing radius.
%    \begin{macrocode}
              \foreach \l_tmpa_fp in { 0.2 , 0.25 , ... , 0.551 }
                \draw (\l_tmpa_fp,0) arc [start ~ angle=180, end ~ angle=360, radius=0.6-\l_tmpa_fp];
%    \end{macrocode}
% Drawing the vertical lines of the sieve. Ahm, I may should explain
% how this code works. \Makro{l_tmpa_fp} (again misused I think)
% contains the starting point of the lines which will go from top to
% bottom. 
%
% Our sieve is looking like this at the moment:
%
%\begin{center}
%\begin{tikzpicture}[scale=5]
%  \draw[very thick]  
%    (-0.2,0) node [ anchor=east ]{-0.2} -- (1.01,0) node [ anchor=west ]{1.01};
%  \draw[dashed] (0.6,-0.5) -- (0.6,0.1);
%  \draw (0.6,0) node [anchor=south west] {0.6};
%  \foreach \x in { 0.2 , 0.25 , ... , 0.551 }
%    \draw (\x,0) arc [start angle=180, end angle=360, radius=0.6-\x];
%\end{tikzpicture}
%\end{center}
% 
% The largest circle end at the coordinate (1,0) and so its radius is $r=0.4$.
% Now we want to draw a line from the beginning of a smaller circle
% to the largest circle. We take for example the next smaller circle:
%
% \begin{center}
%\begin{tikzpicture}[scale=5]
%  \draw[very thick] (-0.2,0) node [ anchor=east ]{-0.2}  -- (1.01,0) node [ anchor=west ]{1.01};
%  \draw[dashed] (0.6,-0.5) -- (0.6,0.1);
%  \draw (0.6,0) node [anchor=south west] {0.6};
%  \draw[dashed] (0.2,0) arc [start angle=180, end angle=360, radius=0.4];
%  \draw (0.3,0) node[above=1pt]{0.3} arc [start angle=180, end angle=360, radius=0.6-0.3] node [above]{0.9};
%  \draw[brown,dashed,->] (0.6,0) -- node[right]{0.4} (  {0.6 - cos ( 45 ) *0.4 },{ sin ( -45 )*0.4 });
%\end{tikzpicture}
% \end{center}
%
% The dashed line shows the largest circle. The only things we know are
% the length $l$ from the middle of the circle (0.6 , 0) to the starting point (0.9 , 0):
% $l=0.9-0.6$ and we know the radius of the circle: $r=0.4$. The next picture \dots
% pictures this:
%
% \begin{center}
%\begin{tikzpicture}[scale=5]
%  \draw[thick] (-0.2,0)   -- (1.01,0) ;
%  \draw[dashed] (0.6,-0.5) -- (0.6,0.1);
%  \draw[dashed] (0.2,0) arc [start angle=180, end angle=360, radius=0.4];
%  \draw (0.3,0)  arc [start angle=180, end angle=360, radius=0.6-0.3] ;
%  \draw[green,very thick] (0.6,0) -- node [above,fill=white] {$l= 0.9-0.6=0.3$} (0.9,0);
%  \draw[red,very thick] (0.9,0) -- node [right,fill=white] {$h=?$}  ( 0.9, { -0.4 * sin( acos( ( 0.9 - 0.6 ) /0.4) ) } );
%  \draw[brown] (0.6,0) -- node [left=8pt,fill=white] {$r=0.4$}  ( 0.9, { -0.4 * sin( acos( ( 0.9 - 0.6 ) /0.4) ) } );
%  \draw[orange,very thick] (0.8,0) node [anchor=north east] {$\alpha$} arc  [start angle=0, end angle={-acos( ( 0.9 - 0.6 ) /0.4)}, radius=0.2];
%\end{tikzpicture}
% \end{center}
% 
% We have the length and the radius and need the height $h$. The easiest way would
% be the use of the sinus: $\sin(\alpha)=\frac{h}{r}$, but we don't have $\alpha$,
% so we have to make an extra calculation:
%
%\begin{align}
%  \cos(\alpha) &= \frac{ l }{ r } = \frac{0.9-0.6}{0.4}  && / \arccos(...) \\
%  \alpha  &= \arccos\bigg( \frac{0.9-0.6}{0.4} \bigg) 
%\end{align} 
%
% Now we have the angle $\alpha$ and can calculate the height $h$:
%
%\begin{align}
%  -\sin(\alpha) &= \frac { h } { 0.4 }  && / \cdot 0.4 \\
%  h  &= -0.4 \cdot \sin(\alpha)  && /  \alpha = ... \\
%  h &=  -0.4 \cdot \sin\bigg[\arccos\bigg( \frac{0.9-0.6}{0.4} \bigg)\bigg]
%\end{align} 
%
% And to use it as a overall formula:
%
%\begin{equation}
%  h =  -0.4 \cdot \sin\bigg[\arccos\bigg( \frac{ \backslash l\_tmpa\_fp -0.6 }{0.4} \bigg)\bigg]
%\end{equation} 
%
% Using this formula we can draw the line (\textbackslash l\_tmpa\_fp,0) -{}- (\textbackslash l\_tmpa\_fp,h):
%
% Something similar is used for the horizontal lines.
%
%    \begin{macrocode}
              \foreach \l_tmpa_fp in  { 0.95,0.9,...,0.249 }
                \draw (\l_tmpa_fp,0) -- 
                  ( \l_tmpa_fp, { -0.4 * sin( acos( ( \l_tmpa_fp - 0.6 ) /0.4) ) } );
              \foreach \y in  { -0.05 , -0.1 , ... , -0.351 }
                \pgfmathsetmacro{\x}{0.4*cos( asin( \y /0.4 ) )}
                \draw ({0.6 - \x },\y) --  ({ 0.6 +\x},\y);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% I hope I was able to explain it. 
% \end{macro}
%
%
%
%
% \begin{macro}{ \Purierstab , \blender }
%   Ein P\"urierstab \dots\ ja.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Purierstab } { blender } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Purierstab_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.76ex * \l_@@_scale_abs_tl } 
              { 1.575ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.3ex , y=2.2ex, line ~ width=0.07ex * \l_@@_scale_abs_tl ,scale = #1
              ]
              \draw[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ] 
                (0,0) -- (0.3,0) --  (0.15,0.1) --cycle;
              \fill[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ] 
                (0.15,0.3) -- (0.24,0.4) -- (0.24,0.7) -- (0.06,0.7) -- (0.06,0.4) -- cycle;
              \draw (0.15,0.4) -- (0.15,0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Dreizack , \trident }
% A trident, an important tool to check if potatoes are cooked enough.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Dreizack } { trident } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Dreizack_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.265ex * \l_@@_scale_abs_tl } 
              { 1.575ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.3ex , y=2.2ex , line ~ width=0.035ex * \l_@@_scale_abs_tl , scale = #1
              ]
              \fill[ rounded ~ corners=0.07ex * \l_@@_scale_abs_tl * 0.99 ]
                (0,0) -- (0,0.4)  -- (0.1,0.4) -- (0.1,0.0) -- cycle;
              \draw (0.05,0) -- (0.05,0.7);
              \draw[rounded ~ corners=0.07ex * \l_@@_scale_abs_tl *( 1 - \l_@@_scale_abs_tl /50 ]
                (0,0.7) -- (0,0.55)  -- (0.05,0.55) -- (0.1,0.55) --  (0.1,0.7);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Backblech , \bakingplate }
%   With holes.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Backblech } { bakingplate } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Backblech_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.3155ex * \l_@@_scale_abs_tl } 
              { 1.57ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=6.53ex , y=5ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale = #1
              ]
              \filldraw[rounded ~ corners=0.09ex * \l_@@_scale_abs_tl ] (0,0) rectangle (0.3,0.3);
              \foreach \xI/\xII in { 0.1/-0.025 , 0.2/0.325 }
                \draw[rounded ~ corners=0.07ex * \l_@@_scale_abs_tl , line ~ width=0.03ex* \l_@@_scale_abs_tl ]
                   (\xI,0) -- (\xII,0) -- (\xII,0.3) -- (\xI,0.3);
              \foreach \@@_BackblechlochX in { 0.007 , 0.293 }
                \foreach \@@_BackblechlochY in { 0.007 , 0.293 }
                  \fill[white] (\@@_BackblechlochX, \@@_BackblechlochY) circle (0.02ex);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Ofen , \oven }
%   Ein Ofen. Sieht eigentlich so aus wie der zu Hause.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Ofen } { oven } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Ofen_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.07ex * \l_@@_scale_abs_tl } 
              { 1.57ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.50ex , y=0.5ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1
              ]
              \draw (0,0) rectangle (4,3);
              \draw (0.25,0.25) rectangle (3.75,2);
              \foreach \@@_Ofenschalter in {0.5,1.1,2.9,3.5}
                \fill (\@@_Ofenschalter,2.5) circle (0.22);
              \draw (1.5,2.28) rectangle  (2.5,2.72);
              \draw[line ~ width=0.05ex * \l_@@_scale_abs_tl] (1,1.75) -- (3,1.75);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Pfanne , \pan }
% A pan with a wave-decoration. Resembles the one at home.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Pfanne } { pan } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Pfanne_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.034ex * \l_@@_scale_abs_tl } 
              { 0.78ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.3ex , y=2.3ex , line ~ width=0.09ex * \l_@@_scale_abs_tl , scale=#1
              ]
              \draw [rounded ~ corners = 0.023ex * \l_@@_scale_abs_tl ]
                 (0,0) -- (0.9,0) -- (1,0.3) -- (-0.1,0.3) -- cycle;
              \draw (-0.2,0.22) -- (-0.08,0.22);
              \draw (0.97,0.22) -- (1.08,0.22);
              \draw
                [
                  decorate , decoration=
                    {
                      snake,amplitude =.046ex* \l_@@_scale_abs_tl ,
                      segment ~ length = 0.82ex* \l_@@_scale_abs_tl 
                    },
                 line ~ width=0.05ex* \l_@@_scale_abs_tl 
                 ]
                 (-0.05,0.1) -- (0.95,0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Herd , \cooker }
%   Needed to cook things. Is pretty much looks exactly like the one
%   at home.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Herd } { cooker } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Herd_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.08ex * \l_@@_scale_abs_tl } 
              { 1.58ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex , y=1ex , line ~ width= 0.04ex * \l_@@_scale_abs_tl , scale = #1
              ]
              \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) rectangle (2,1.5);
              \foreach \y/\radius in { 0.45/0.35 , 0.45/0.2 , 1.15/0.21 }
                \draw (0.5,\y) circle (\radius);
              \draw (1.45,1.15) circle (0.15);
              \draw (1.45,0.45) circle (0.3);
              \draw (1.05,0.95) rectangle (1.85,1.35);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Saftpresse , \squeezer }
%   We have one of these, I still think its useful.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Saftpresse } { squeezer } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Saftpresse_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.87ex * \l_@@_scale_abs_tl } 
              { 1.62ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1.2ex , y=1ex, line ~ width=0.07ex * \l_@@_scale_abs_tl ,scale=#1
              ]
              \draw[rounded ~ corners=0.1ex * \l_@@_scale_abs_tl ]
                 (0,0) rectangle (1.5,0.85) -- cycle;
              \draw (0,0.7) -- (1.5,0.7);
              \foreach \xi/\xii in { 0.3/1.2 , 0.45/1.05 , 0.65/0.85 }
                \draw[rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] 
                  (\xi,0.7) -- (0.75,1.55) -- (\xii,0.7);  
              \draw
                [
                  line ~ width=0.05ex* \l_@@_scale_abs_tl , decorate,
                  decoration=
                   {
                     snake,amplitude=0.05ex * \l_@@_scale_abs_tl ,
                     segment ~ length=0.48ex * \l_@@_scale_abs_tl 
                   }
                 ]  (0,0.3) -- (1.5,0.3);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Schussel , \bowl }
%   A bowl. The edge was an accident, but I thought that it looks good
%   and so I keeped it.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Schussel } { bowl } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schussel_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.32ex * \l_@@_scale_abs_tl } 
              { 1.47ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex , y=1ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1
              ]
              \draw[rounded ~ corners=0.5ex* \l_@@_scale_abs_tl ]
                 (-0.02,1.4) -- (0,1.4) -- (0,0.05) -- (1.5,0.05) -- (1.5,1.4) -- (1.52,1.4);
              \draw (0.35,0) -- (1.15,0);
              \draw[transparent] (-0.4,0) -- (1.85,0); 
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Schaler , \peeler }
%   Again an image of on I use to peel for example potatoes.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Schaler } { peeler } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schaler_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.15ex * \l_@@_scale_abs_tl } 
              { 1.565ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.7ex , y=2.3ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1
              ]
              \draw[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ]
                 (0,0.4) -- (0,0.1) arc [start ~ angle=0, end ~ angle=180, radius=-0.1] -- (0.2,0.4) -- 
                 (0.3,0.5) -- (0.3,0.65) -- (0.2,0.65) -- (0.2,0.5) -- (0,0.5) -- (0,0.65) --
                 (-0.1,0.65) -- (-0.1,0.5)  -- cycle;
              \draw[line ~ width=0.03ex* \l_@@_scale_abs_tl ] (0,0.58) rectangle (0.2,0.6);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Reibe , \grater }
%   I get out of ideas to write.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Reibe } { grater } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Reibe_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn
              { 1.08ex * \l_@@_scale_abs_tl } 
              { 1.58ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex , y=1ex , line ~ width=0.08ex * \l_@@_scale_abs_tl , scale=#1
              ]
              \draw (0,0) rectangle (1,1.2);
              \draw[rounded ~ corners=0.04ex] (0.05,1.2) rectangle (0.95,1.5);
              \foreach\x in { 0.2, 0.4 , 0.6 , 0.8}
                \foreach\y in { 0.2 , 0.4, 0.6 , 0.8, 1}
                  \fill (\x,\y) circle (0.05ex);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{ \Flasche , \bottle }
%   It's a bottle. Uhhhh\dots
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Flasche } { bottle } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Flasche_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.78ex * \l_@@_scale_abs_tl } 
              { 1.58ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex,y=1ex, line ~ width=0.08ex* \l_@@_scale_abs_tl , 
                rounded ~ corners=0.08ex* \l_@@_scale_abs_tl , scale=#1
              ]
              \draw (0, 1.5) -- (0,1.2) -- (-0.15,0.8) -- (-0.15,0) --++ 
                (0.6,0) --++ (0,0.8) --++ (-0.15,0.4) --++ (0,0.3) -- cycle;
%               \draw (-0.15,0.8) -- (0.45,0.8);
%               \draw (-0.15,0.3) -- (0.45,0.3);
              \draw[transparent] (-0.2,0) --++ (0.7,0);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%
%
% \begin{macro}{ \Nudelholz , \rollingpin }
%   You know what that is\dots
%
% For the draftbox the calculation of the length is \verb|(1.26ex + 4.25ex)*0.8 + 0.1ex|.
%    \begin{macrocode}
\@@_Declare_Document_Commands:nnnn { Nudelholz } { rollingpin } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Nudelholz_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 4.508ex * \l_@@_scale_abs_tl }%% 
              { 0.9ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.8ex, y=0.8ex, scale=#1, line ~ width=0.1ex * \l_@@_scale_abs_tl ,
              ]
              \draw[rounded ~ corners=0.10ex*\l_@@_scale_abs_tl] (0,0) rectangle (3,1);
              \draw[rounded ~ corners=0.15ex*\l_@@_scale_abs_tl] 
                (3,0.75) -- (3.25,0.6) -- (3.75,0.7) -- (4.25,0.6)
                (3,0.25) -- ( 3.25,0.4 ) -- (3.75,0.3) -- (4.25,0.4);
              \draw (4.25,0.5) ellipse [x ~ radius=0.01, y ~ radius=0.1];
              \draw[rounded ~ corners=0.15ex*#1] (-0,0.75) -- (-0.25,0.6) -- (-0.75,0.7)
                -- (-1.25,0.6)
                (-0,0.25) -- ( -0.25,0.4 ) -- (-0.75,0.3) -- (-1.25,0.4);
              \draw (-1.25,0.5) ellipse [x ~ radius=0.01, y ~ radius=0.1];
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
% I may  will remove this, but for testing a list of commands is useful.
%    \begin{macrocode}
\clist_set_eq:NN \g_tikzsymbols_list_of_cooking_commands_clist \l_@@_tmpa_clist
\clist_clear:N \l_@@_tmpa_clist
%    \end{macrocode}
%
%
%
%
%
%
% \subsection{Emoticonscode}
%
% Now the emoticons are coded.
%
%
%
%
% \begin{macro}{ \Sadey }
%   I don't know why Sadey is the first and not Smiley, probably for reasons.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Sadey } { O{1} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sadey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex , y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl , scale = #1
              ]
              \filldraw[fill=#2, line ~ width=0.1ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \fill (0.1,0.1) circle (0.05);
              \fill (-0.1,0.1) circle (0.05);
              \draw (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{ \dSadey }
%   Coding the \enquote{3D} Sadey. Again, nothing special.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dSadey } { O{1} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSadey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl , scale = #1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
% \end{macro}
%
%
%
%\begin{macro}{ \Changey }
% \changes{v0.95}{2016/03/20}{New.}
% Thanks to Marcel for the request.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Changey } { O{1} O{white} m }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Changey_#1_#2_#3 }
      {
        \fp_compare:nT { abs(#3) > 2 } 
          { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3}  }
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \fill (-0.1,0.1) circle (0.05);
              \fill (0.1,0.1) circle (0.05);
              \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#3  }
              \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#3 }
              \draw 
                ( -0.2 , \l_tmpa_tl ) .. controls 
                ( -0.1 , \l_tmpb_tl ) and 
                ( 0.1 , \l_tmpb_tl ) .. 
                ( 0.2 , \l_tmpa_tl ) ;
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \dChangey }
% \changes{v3.95}{2016/03/20}{New.}
% Thanks to Marcel for the request.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dChangey } { O{1} O{yellow} m }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dChangey_#1_#2_#3 }
      {
        \fp_compare:nT { abs(#3) > 2 } 
          { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3}  }
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#3  }
              \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#3 }
              \draw[black]
                ( -0.2 , \l_tmpa_tl ) .. controls 
                ( -0.1 , \l_tmpb_tl ) and 
                ( 0.1 , \l_tmpb_tl ) .. 
                ( 0.2 , \l_tmpa_tl ) ;
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%\begin{macro}{ \cChangey }
% \changes{v4.02}{2016/2017/05/14}{New.}
% Why didn't I implement this earlier?
%    \begin{macrocode}
\cs_new:Npn \@@_cChangey:nnn #1 #2#3
  {
    \fp_set:Nn \l_tmpa_fp { abs (#1/2) * 100 }
    \@@_cChangey_aux:xnn { \fp_use:N \l_tmpa_fp } {#2} {#3}
  }
\cs_new:Npn \@@_cChangey_aux:nnn #1 #2#3
  {
    \filldraw[fill=#2!#1!#3]
  }
\cs_generate_variant:Nn \@@_cChangey_aux:nnn { x }
\@@_Declare_Document_Command:nnn { cChangey } { O{1} O{red} O{yellow} O{green} m }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
      { cChangey_#1_#2_#3_#4_#5 }
      {
        \fp_compare:nT { abs(#5) > 2 } 
          { \msg_error:nnn { tikzsymbols } { cChangey-number-too-large } {#5}  }
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \fp_compare:nNnT {#5} < { \c_zero }
                {
                  \@@_cChangey:nnn {#5} {#2} {#3}
                  (0,0) circle (0.33);
                }
              \fp_compare:nNnT {#5} > { \c_zero }
                {
                  \@@_cChangey:nnn {#5} {#4} {#3} 
                  (0,0) circle (0.33);
                }
              \fp_compare:nNnT {#5} = { \c_zero }
                {
                  \filldraw [fill=#3] (0,0) circle (0.33);
                }
              \fill (-0.1,0.1) circle (0.05);
              \fill (0.1,0.1) circle (0.05);
              \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#5  }
              \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 }
              \draw 
                ( -0.2 , \l_tmpa_tl ) .. controls 
                ( -0.1 , \l_tmpb_tl ) and 
                ( 0.1 , \l_tmpb_tl ) .. 
                ( 0.2 , \l_tmpa_tl ) ;
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \dcChangey }
% \changes{v4.02}{2016/2017/05/14}{New.}
% Same as above
%    \begin{macrocode}
\cs_new:Npn \@@_dcChangey:nnn #1 #2#3
  {
    \fp_set:Nn \l_tmpa_fp { abs (#1/2) * 100 }
    \@@_dcChangey_aux:xnn { \fp_use:N \l_tmpa_fp } {#2} {#3}
  }
\cs_new:Npn \@@_dcChangey_aux:nnn #1 #2#3
  {
    \shade [ball ~ color=#2!#1!#3]
  }
\cs_generate_variant:Nn \@@_dcChangey_aux:nnn { x }
\@@_Declare_Document_Command:nnn { dcChangey } { O{1} O{red} O{yellow} O{green} m }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
      { dcChangey_#1_#2_#3_#4_#5 }
      {
        \fp_compare:nT { abs(#5) > 2 } 
          { \msg_error:nnn { tikzsymbols } { cChangey-number-too-large } {#5}  }
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \fp_compare:nNnT {#5} < { \c_zero }
                {
                  \@@_dcChangey:nnn {#5} {#2} {#3}
                  (0,0) circle (0.33);
                }
              \fp_compare:nNnT {#5} > { \c_zero }
                {
                  \@@_dcChangey:nnn {#5} {#4} {#3} 
                  (0,0) circle (0.33);
                }
              \fp_compare:nNnT {#5} = { \c_zero }
                {
                  \shade[ball ~ color=#3] (0,0) circle (0.33);
                }
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#5  }
              \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 }
              \draw[black]
                ( -0.2 , \l_tmpa_tl ) .. controls 
                ( -0.1 , \l_tmpb_tl ) and 
                ( 0.1 , \l_tmpb_tl ) .. 
                ( 0.2 , \l_tmpa_tl ) ;
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%\begin{macro}{ \Annoey }
% An annoyed Smiley. It's annoyed.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Annoey } { O{1} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Annoey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \draw (0.08,0.1) -- (0.22,0.1);
              \draw (-0.08,0.1) -- (-0.22,0.1);
              \draw (-0.2,-0.1) -- (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%\begin{macro}{ \dAnnoey }
% It's annoyed about 3D.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dAnnoey } { O{1} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dAnnoey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \draw[black] (0.08,0.1) -- (0.22,0.1);
              \draw[black] (-0.08,0.1) -- (-0.22,0.1);
              \draw[black] (-0.2,-0.1) -- (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
% \begin{macro}{ \Smiley }
% This command is not defined if the option \Option{marvosym}
% is set to true.
%    \begin{macrocode}
\bool_if:NF \g_@@_if_opt_marvosym_bool
  {
    \@@_Declare_Document_Command:nnn { Smiley } { O{1} O{none} }
      {
        \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Smiley_#1_#2 }
          {
            \@@_set_scale_abs_tl:n {#1}
            \bool_if:NTF \g_@@_if_opt_draft_bool
              {
                \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
              }{
                \begin{tikzpicture}
                  [
                    /@@ ,
                    x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl , scale=#1
                  ]
                  \filldraw[fill=#2] (0,0) circle (0.33);
                  \fill (-0.1,0.1) circle (0.05);
                  \fill (0.1,0.1) circle (0.05);
                  \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
                \end{tikzpicture}%
              }
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dSmiley }
% Again in \enquote{3D}. 
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dSmiley } { O{1} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSmiley_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.1ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
% \begin{macro}{ \Laughey }
% It's laughing.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Laughey } { O{1} O{none} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Laughey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \draw (-0.09,0.06) .. controls (-0.11,0.16) and (-0.17,0.16) .. +(-0.1,0);
              \draw (0.09,0.06) .. controls (0.11,0.16) and (0.17,0.16) .. +(0.1,0);
              \filldraw[fill=#3,rounded ~ corners=0.1ex* \l_@@_scale_abs_tl , yshift=-0.5] 
                (-0.22,-0.0) .. controls (-0.13,-0.23) and (0.13,-0.23) .. (0.22,-0.0) -- cycle;

            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dLaughey }
% Also in \emph{3D}!
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dLaughey } { O{1} O{yellow} O{red} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dLaughey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1,
                black
              ]
              \fill[ball ~ color=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \draw (-0.09,0.06) .. controls (-0.11,0.16) and (-0.17,0.16) .. +(-0.1,0);
              \draw (0.09,0.06) .. controls (0.11,0.16) and (0.17,0.16) .. +(0.1,0);
              \shade
                [
                  ball ~ color=#3, rounded ~ corners=0.1ex* \l_@@_scale_abs_tl , 
                  yshift=-0.3
                ]
                (-0.25,-0.0) .. controls (-0.13,-0.26) and (0.13,-0.26) .. (0.25,-0.0) -- cycle;
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Neutrey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Neutrey } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Neutrey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \fill (0.1,0.1) circle (0.05);
              \fill (-0.1,0.1) circle (0.05);
              \draw (-0.2,-0.1) -- (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dNeutrey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dNeutrey } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Neutrey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.1) -- (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Winkey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Winkey } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Winkey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \draw(0.17,0.1) -- (0.05,0.1);
              \fill (-0.1,0.1) circle (0.05);
              \draw (-0.15,-0.15) .. controls (-0.05,-0.2) and (0.15,-0.2) .. (0.19,0);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \oldWinkey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { oldWinkey } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { oldWinkey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \draw(0.17,0.1) -- (0.05,0.1);
              \fill (-0.1,0.1) circle (0.05);
              \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.15,-0.2) .. (0.2,0);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dWinkey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dWinkey } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dWinkey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \draw[black] (0.17,0.1) -- (0.05,0.1);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \draw[black] (-0.15,-0.15) .. controls (-0.05,-0.2) and (0.15,-0.2) .. (0.19,0);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \olddWinkey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { olddWinkey } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { olddWinkey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \draw[black] (0.17,0.1) -- (0.05,0.1);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.15,-0.2) .. (0.2,0);
            \end{tikzpicture}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Sey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Sey } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \fill (0.1,0.1) circle (0.05);
              \fill (-0.1,0.1) circle (0.05);
              \draw (-0.2,-0.08) .. controls (-0.0,-0.2) and (0.0,0) .. (0.2,-0.12);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%\begin{macro}{ \dSey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dSey } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.08) .. controls (-0.0,-0.2) and (0.0,0) .. (0.2,-0.12);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Xey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Xey } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Xey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
              \foreach \xi in { 0.05 , -0.15 }
                  \draw (\xi,0.05) -- ++ (0.1,0.1) (-\xi,0.05) -- ++ (-0.1,0.1);
              \draw (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dXey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dXey } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dXey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1,
                black
              ]
              \fill[ball ~ color=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] 
                (0,0) circle (0.33);
              \foreach \xi in { 0.05 , -0.15 }
                  \draw (\xi,0.05) -- ++ (0.1,0.1) (-\xi,0.05) -- ++ (-0.1,0.1);
              \draw (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Innocey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Innocey } { O{1} O{none} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Innocey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.73ex * \l_@@_scale_abs_tl } 
              { 1.909ex * \l_@@_scale_abs_tl }
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \fill (-0.1,0.1) circle (0.05);
              \fill (0.1,0.1) circle (0.05);
              \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
%    \end{macrocode}
% Draws the colored halo inside, the next two are drawing the black
% lines surrounding the colored line and completing the halo.
%    \begin{macrocode}
              \draw[#3, line ~ width=0.095ex* \l_@@_scale_abs_tl ] 
                 (0.32,0.31) arc 
                   [start ~ angle=0, end ~ angle=360, x ~ radius = 0.32 , y ~ radius=0.1];
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] 
                (0.3,0.31) arc 
                  [start ~ angle=0, end ~ angle=360, x ~ radius = 0.3 , y ~ radius=0.07];
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] 
                (0.35,0.31) arc 
                  [start ~ angle=0, end ~ angle=360, x ~ radius = 0.35 , y ~ radius=0.12];
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
% \begin{macro}{ \wInnocey }
%  A white one. I clear \Makro{g_@@_tikzsymbols_after_symbol_tl}
%  because otherwise the input of \Option{after-symbol}
%  is inserted twice.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { wInnocey } { O{1} }
  { 
    \group_begin:
    \tl_clear:N \l_@@_tikzsymbols_after_symbol_tl
    \tikzsymbolsuse { Innocey } [#1] [none] [white] 
    \group_end:
  } 
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dInnocey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dInnocey } { O{1} O{yellow} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dInnocey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.73ex * \l_@@_scale_abs_tl } 
              { 1.849ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1,
                black
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
%    \end{macrocode}
% Same as above (I think).
%    \begin{macrocode}
              \draw[color=#3!97!black, line ~ width=0.1ex* \l_@@_scale_abs_tl ] 
                 (0.32,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.32 , y ~ radius=0.1];
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] 
                (0.3,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.3 , y ~ radius=0.07];
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] 
                (0.35,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.35 , y ~ radius=0.12];
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Cooley }
%  It's the coolest Smiley around.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Cooley } { O{1} O{none}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Cooley_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \foreach \xi/\xii in { 0.24/0.01 , -0.24/-0.01 }
                \fill[rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] 
                   (\xi,0.15) -- (\xii,0.15) -- (\xii,0) -- (\xi,0) -- cycle;
              \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
              \draw (0.02,0.1) -- (-0.02,0.1);
              \draw (-0.2,0.1) -- (-0.3,0.13);
              \draw (0.2,0.1) -- (0.3,0.13);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dCooley }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dCooley } { O{1} O{yellow}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dCooley_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \draw[black] (0.02,0.1) -- (-0.02,0.1);
              \draw[black] (-0.2,0.1) -- (-0.295,0.146);
              \draw[black] (0.2,0.1) -- (0.295,0.146);
              \foreach \xi/\xii in { 0.24/0.01 , -0.24/-0.01 }
                \shade[ball ~ color=black,rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] 
                   (\xi,0.15) -- (\xii,0.15) -- (\xii,0) -- (\xi,0) -- cycle;
              \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Tongey }
% Habe mir vorgenommen das hier zu verbessern, wird aber wohl noch
% etwas brauchen.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Tongey } { O{1} O{none} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Tongey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2] (0,0) circle (0.33);
              \fill (-0.1,0.1) circle (0.05);
              \fill (0.1,0.1) circle (0.05);
              \filldraw
                [
                  fill=#3, line ~ width=0.058ex* \l_@@_scale_abs_tl , 
                  rounded ~ corners=0.12ex* \l_@@_scale_abs_tl 
                ] 
                 (0,-0.09) -- (0.05,-0.2) -- (0.16,-0.23) -- (0.2,-0.15) -- (0.19,-0.03);
              \draw[line ~ width=0.07ex* \l_@@_scale_abs_tl , yshift=0.21ex] 
                 (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dTongey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dTongey } { O{1} O{yellow} O{red} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dTongey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.33);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \shadedraw
                [
                  ball ~ color=#3, draw=black,line ~ width=0.058ex* \l_@@_scale_abs_tl , 
                  rounded ~ corners=0.12ex* \l_@@_scale_abs_tl 
                ] 
                 (0,-0.09) -- (0.05,-0.2) -- (0.16,-0.23) -- (0.2,-0.15) -- (0.19,-0.03);
              \draw[black, line ~ width=0.07ex* \l_@@_scale_abs_tl , yshift=0.21ex] 
                 (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Nursey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Nursey } { O{1} O{none} O{none} O{} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Nursey_#1_#2_#3_#4 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.5ex * \l_@@_scale_abs_tl } 
              { 2.19ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.3ex, y=2.3ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \fill[fill=#3,rounded ~ corners=.023ex* \l_@@_scale_abs_tl ] 
                 (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- (0.3,0);
              \filldraw[fill=#2] (0,0) circle (0.3);
              \fill (-0.1,0.1) circle (0.05);
              \fill (0.1,0.1) circle (0.05);
              \draw[line ~ width=0.09ex* \l_@@_scale_abs_tl , yshift=0.07ex] 
                 (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
              \draw[rounded ~ corners=.023ex* \l_@@_scale_abs_tl ] 
                 (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- (0.3,0);
              \draw[#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] 
                (0,0.35) -- (0,0.5) (-0.05,0.45) -- (0.05,0.45) ;
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \dNursey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dNursey } { O{1} O{yellow} O{white} O{red} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dNursey_#1_#2_#3_#4 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.38ex * \l_@@_scale_abs_tl } 
              { 1.98ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.3ex, y=2.3ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade[ball ~ color=#2] (0,0) circle (0.3);
              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
              \draw[black, line ~ width=0.09ex* \l_@@_scale_abs_tl , yshift=0.07ex] 
                 (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
              \shade
                [
                  ball ~ color=#3, rounded ~ corners=.023ex* \l_@@_scale_abs_tl ,
                  yshift=-0.09ex
                ] 
                 (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- 
                 (0.3,0) arc [start ~ angle=0, end ~ angle=180, radius=0.3];
              \shade[ball ~ color=#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] 
                 (-0.01,0.31) -- (-0.01,0.46) -- (0.01,0.46) -- (0.01,0.31)--cycle;
              \shade[ball ~ color=#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] 
                 (-0.05,0.4) -- (0.05,0.4) -- (0.05,0.42) -- (-0.05,0.42) -- cycle;
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Vomey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Vomey } { O{1} O{none} O{opacity=0} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Vomey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.0335ex * \l_@@_scale_abs_tl } 
              { 1.743ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.58ex,y=0.58ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \filldraw[fill=#2,rounded ~ corners=0.05ex* \l_@@_scale_abs_tl ]  
                (0,0)  arc [start ~ angle=15, end ~ angle=330, radius=1] -- (-0.6,-0.3) -- cycle;
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (-0.5,0.3) -- (-0.3,0.1);
              \fill (-0.45,0.27) arc [start ~ angle=100, end ~ angle=350, radius=0.1];
              \fill[#3] (1.8,-0.5) .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) .. 
                controls (3,-1) and (3,-1.7) .. (2,-1.5) .. 
                controls (1.7,-2) and (1,-2) .. (1,-1.5) ..
                controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9);
              \fill[#3] (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1) .. 
                controls (1.7,-1.2) and (1.3,-1.2) .. (1,-1) .. 
                controls (0.8,-0.7) and (0.5,-0.5) .. (0,-0.4);
%              \draw (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1);
%              \draw (0,-0.4) .. controls (0.5,-0.5) and (0.8,-0.7) .. (1,-1);
              \draw[rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] 
                (1,-1) .. controls (0.8,-0.7) and (0.5,-0.5) .. 
                (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1);
              \draw (1.8,-0.5)  .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) .. 
                controls (3,-1) and (3,-1.7) .. (2,-1.5) .. controls (1.7,-2) 
                and (1,-2) .. (1,-1.5) .. controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \dVomey }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dVomey } { O{1} O{yellow} O{brown!10!olive}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dVomey_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.2435ex * \l_@@_scale_abs_tl } 
              { 1.653ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.58ex,y=0.58ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \shade
                [
                  ball ~ color=#2!90!brown, 
                  rounded ~ corners=0.03ex * \l_@@_scale_abs_tl ,
                ]  
                 (0,0) arc [start ~ angle=15, end ~ angle=330, radius=1] -- (-0.6,-0.3) -- cycle;
              \draw[black, line ~ width=0.05ex* \l_@@_scale_abs_tl ] 
                (-0.5,0.3) -- (-0.3,0.1);
              \shade[ball ~ color=black] 
                (-0.45,0.27) arc [start ~ angle=100, end ~ angle=350, radius=0.1];
              \shade[ball ~ color=#3] 
                (1.8,-0.5)  .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) ..
                controls (3,-1) and (3,-1.7) .. (2,-1.5) .. 
                controls (1.7,-2) and (1,-2) .. (1,-1.5) .. 
                controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9);
              \shade[ball ~ color=#3] 
                (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1) .. controls
                (1.7,-1.2) and (1.3,-1.2) .. (1,-1) .. controls 
                (0.8,-0.7) and (0.5,-0.5) .. (0,-0.4);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Walley }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Walley } { O{1} O{none} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Walley_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.341ex * \l_@@_scale_abs_tl } 
              { 1.674ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1,
                decoration=
                  {
%                    random ~ steps, 
                    segment ~ length=0.15ex* \l_@@_scale_abs_tl , 
                    amplitude=0.1ex* \l_@@_scale_abs_tl 
                  }
              ]
              \filldraw[fill=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle (0.28);
              \filldraw[fill=#3] (0.28,-0.33) rectangle (0.66,0.33);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.05,0.07) --++(0.03,0.02) --+
                +(0.03,-0.02) --++(0.03,0.1) --++(0.03,0.02) -- (0.5,0.25);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.06,-0.02) --++(0.04,0.06) --++
                (0.0,-0.08) --++(0.08,0.06) --++(0.03,-0.02) --+
                (0.08,0.02) -- (0.6,0.0);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.03,-0.02)  --++(0.03,-0.07)  --+
                +(0.03,-0.01)  --++(0.01,-0.07)  --++(0.06,0.01)  --++
                (0.03,-0.08) -- (0.5,0.-0.25);
              \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05);
              \draw[rotate=-20] (0.27,-0.1) .. controls (0.2,-0.072) 
                and (0.1,-0.06) .. (0.,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \rWalley }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { rWalley } { O{1} O{none} O{none} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { rWalley_#1_#2_#3 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.341ex * \l_@@_scale_abs_tl } 
              { 1.674ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1,
                decoration=
                  {
                    random ~ steps, segment ~ length=0.15ex* \l_@@_scale_abs_tl , 
                    amplitude=0.1ex* \l_@@_scale_abs_tl 
                  }
              ]
              \filldraw[fill=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle (0.28);
              \filldraw[fill=#3] (0.28,-0.33) rectangle (0.66,0.33);
              \foreach \x/\y in { 0.5/0.25 , 0.6/0 , 0.5/-0.25 }
                \draw[decorate, line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                  (0.28,0) -- (\x,\y);
              \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05);
              \draw[rotate=-20] (0.27,-0.1) .. controls (0.2,-0.072) 
                and (0.1,-0.06) .. (0.,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \dWalley }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dWalley } { O{1} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dWalley_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.4288ex * \l_@@_scale_abs_tl } 
              { 1.6008ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1,
                black
              ]
              \shade[ball ~ color=orange!80!black] (0.298,-0.33) rectangle (0.692,0.337);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.05,0.07) --++(0.03,0.02) --+
                +(0.03,-0.02) --++(0.03,0.1) --++(0.03,0.02) -- (0.5,0.25);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.06,-0.02) --++(0.04,0.06) --++
                (0.0,-0.08) --++(0.08,0.06) --++(0.03,-0.02) --+
                (0.08,0.02) -- (0.6,0.0);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                (0.28,0) --++(0.03,-0.02)  --++(0.03,-0.07)  --++
                (0.03,-0.01)  --++(0.01,-0.07)  --++
                (0.06,0.01)  --++(0.03,-0.08)   -- (0.5,0.-0.25);
              \shade[ball ~ color=#2] (-0.01,0) circle (0.31);
              \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05);
              \draw[rotate=-20] (0.283,-0.1) .. controls (0.2,-0.072) 
                and (0.1,-0.06) .. (0,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \drWalley }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { drWalley } { O{1} O{yellow} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { drWalley_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.4288ex * \l_@@_scale_abs_tl } 
              { 1.6008ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,
                scale=#1, black, decoration=
                  {
                    random ~ steps,segment ~ length=0.15ex* \l_@@_scale_abs_tl , 
                    amplitude=0.1ex* \l_@@_scale_abs_tl 
                  }
              ]
              \shade[ball ~ color=orange!80!black] (0.298,-0.33) rectangle (0.692,0.337);
              \foreach \x/\y in { 0.5/0.25 , 0.6/0 , 0.5/-0.25 }
                \draw[decorate, line ~ width=0.06ex* \l_@@_scale_abs_tl ] 
                  (0.298,0) -- (\x,\y);
              \shade[ball ~ color=#2] (-0.01,0) circle (0.31);
              \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05);
              \draw[rotate=-20] (0.283,-0.1) .. controls (0.2,-0.072) 
                and (0.1,-0.06) .. (0.,-0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Cat }
% It is a Ket! (sic!)
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Cat } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Cat_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.899ex * \l_@@_scale_abs_tl } 
              { 1.957ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.33ex,y=2.33ex, line ~ width=0.093ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \draw (0,0) circle (0.3);
              \foreach \xi/\xii in { 0.3/0.35 }
                {
                  \draw[rounded ~ corners=0.163ex* \l_@@_scale_abs_tl ] 
                    (-\xi,0) -- (-\xii,0.5) -- (0,\xi)  (0,\xi) -- (\xii,0.5) -- (\xi,0);
                }
              \fill (-0.15,.15) circle (0.05);
              \fill (0.15,.15) circle (0.05);
              \foreach \x in { 0.1 , -0.1 }
                \draw[rounded ~ corners=0.175ex* \l_@@_scale_abs_tl ,yshift=-0.12ex] 
                   (0,0) -- (0,-0.1) -- (\x,-0.095);
              \draw[rounded ~ corners=.12ex* \l_@@_scale_abs_tl ,yshift=-.15ex,
                       line ~ width=0.03em*0.9* \l_@@_scale_abs_tl ] 
                 (-0.1,0.1) -- (0,0) -- (0.1,0.1) -- cycle ;
              \foreach \a/\b/\c/\d in 
                { 0.1/0.25/0.35/0.4 , -0.1/-0.25/-0.35/-0.4 }
                \foreach \yi/\yii/\yiii in 
                  { 0/0/-0.05 , -0.01/-0.09/-0.14 , -0.045/-0.13/-0.23 }
                  {
                    \draw[line ~ width=0.035ex* \l_@@_scale_abs_tl ]
                       (\a,-0.05)..controls(\b,\yi)and(\c,\yii).. (\d,\yiii);           
                  }
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
% \begin{macro}{ \Ninja }
% It can hide.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Ninja } { O{1} O{black} O{red} O{white} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Ninja_#1_#2_#3_#4 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.149ex * \l_@@_scale_abs_tl } 
              { 1.717ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,
                scale=#1, decoration=
                  {
                    random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl , 
                    amplitude=0.1ex* \l_@@_scale_abs_tl 
                  }
              ]
              \tl_set:Nn \l_tmpa_tl {#2}
              \fill[#2] (0,0) circle (0.33);
              \fill[decoration={random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl ,
                amplitude=0.01ex* \l_@@_scale_abs_tl }, decorate,#3] 
              (-0.33,0) -- (0.33,0)  -- (0.23,0.23) -- (-0.23,0.23) -- cycle;
              \tl_if_eq:NNT \c_@@_black_tl \l_tmpa_tl 
                {
                  \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
                }
              \fill[#3] (0,0.1) -- (-0.33,0) -- (-0.26,0.23);
              \fill[#3] (0.3465,0) arc [start ~ angle=0, end ~ angle=42, x ~ radius=0.34, y~ radius=0.345]  -- 
                (0.2,0.23)-- (0.31,0.0) -- cycle;
              \fill[#3] (-0.3465,0) arc [start ~ angle=0, end ~ angle=-42, x ~ radius=-0.34, y~ radius=-0.345] -- 
                (-0.2,0.23)-- (-0.31,0.0) -- cycle;
              \fill[#4] (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05];
              \fill[#4] (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05];
              \foreach \x in { (0.5,0.35) , (0.53,0.1) }
              \draw
                [
                  decorate,decoration=
                    {
                      snake,amplitude=.1ex* \l_@@_scale_abs_tl ,
                      segment ~ length=0.55ex* \l_@@_scale_abs_tl 
                    } , #3
                ] 
                (0.26,0.21) -- \x;
              \tl_if_eq:NNF \c_@@_black_tl \l_tmpa_tl 
                {
                  \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle (0.33);
                }
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%\begin{macro}{ \Ninja }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { dNinja } { O{1} O{black} O{red} O{white} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dNinja_#1_#2_#3_#4 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 2.1498ex * \l_@@_scale_abs_tl } 
              { 1.7178ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,
                scale=#1, decoration=
                  {
                    random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl , 
                    amplitude=0.1ex* \l_@@_scale_abs_tl 
                  }
              ]
              \foreach \length/\coord in { 0.55/{(0.5,0.35)} , 0.5/{(0.53,0.1)} }
                \draw
                  [
                    decorate,decoration=
                      {
                        snake,amplitude=.1ex* \l_@@_scale_abs_tl ,
                        segment ~ length=\length ex* \l_@@_scale_abs_tl 
                      } , decorate, #3!50!black
                  ] 
                  \coord -- (0.26,0.21);
              \shade[ball ~ color=#2] (0,0) circle (0.347);
              \fill
                [
                  decoration=
                    {
                      random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl ,
                      amplitude=0.01ex* \l_@@_scale_abs_tl 
                    } , ball ~ color=#3
                 ] 
              decorate  {(-0.33,0) -- (0.3465,0)  }
                	         {arc [start ~ angle=0, end ~ angle=42, x ~ radius=0.34,y~ radius=0.345]}
              decorate  {-- (-0.25,0.24)}
              	         { arc [start ~ angle=-42, end ~ angle=0, x ~ radius=-0.375,y~ radius=-0.345]};
%	       Frag mich nicht, was das macht.
%              \shade[ball ~ color=#4] (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05];
%              \shade[ball ~ color=#4] (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05];
              \shade[top ~ color=#4!80!black, bottom ~ color=#4] 
                (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05];
              \shade[top ~ color=#4!80!black, bottom ~ color=#4] 
                (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05];
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
% \begin{macro}{ \NiceReapey }
% I wasn't able to create a good Grim Reaper. Well.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { NiceReapey } { O{1} O{black!20!white} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { NiceReapey_#1_#2 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { (1.1067em+0.07ex) * \l_@@_scale_abs_tl } 
              { (0.693em+0.07ex) * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.11em,y=0.11em, line ~ width=0.07ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \draw[] (1.7,-1) arc [start ~ angle=360, end ~ angle=180, x ~ radius=1.7, y ~ radius=2]
                 arc [start ~ angle=260, end ~ angle=110, x ~ radius=1.5,y ~ radius=2] 
                 .. controls (-1,3.3) and (1,3.3) .. (1.9,2.97)  
                 arc [start ~ angle=260, end ~ angle=100, x ~ radius=-1.3, y ~ radius=-2] -- cycle;
              \filldraw[fill=#2] (3,-3) -- (3,3) .. controls (5,3) and 
                (6,2) .. (7,1.5) -- (3,1.5) -- cycle;
              \draw (0,-1.5) circle (1 ~ and ~ 0.5);
              \foreach  \x in { 0.2 , 0.6 }
                \draw[line ~ width=0.04ex* \l_@@_scale_abs_tl ] 
                  (\x,-1) -- (\x,-2)  (-\x,-1) -- (-\x,-2)  ;
              \draw[line ~ width=0.04ex* \l_@@_scale_abs_tl ] (-1,-1.5) -- (1,-1.5);
              \fill (1.25,1.25) circle ( 0.5 ~ and ~ 0.75);
              \fill (-1.25,1.25) circle ( 0.5 ~ and ~ 0.75);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%    \begin{macrocode}
\clist_set_eq:NN \g_tikzsymbols_list_of_emoticons_commands_clist \l_@@_tmpa_clist
\clist_clear:N \l_@@_tmpa_clist
%    \end{macrocode}
%
%
% \subsection{Other symbols(s)}
%
%\begin{macro}{ \@@_Strichmaxerl_x_check:N }
%  A helper command. 
%    \begin{macrocode}
\cs_new:Npn \@@_Strichmaxerl_x_check:N #1
  {
    \fp_compare:nTF { #1 > 0 }
      {
        \fp_compare:nTF { #1 < 0.18 }
          { \fp_zero:N #1  }
          { \fp_set:Nn #1 { #1 - 0.18 } }
      }
      {
        \fp_compare:nTF { #1 > - 0.18 }
          { \fp_zero:N #1  }
          { \fp_set:Nn #1 { #1 + 0.18 } }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \@@_Strichmaxerl_if_smaller_zero_set_zero:N }
%  Again to write less.
%    \begin{macrocode}
\cs_new:Npn \@@_Strichmaxerl_if_smaller_zero_set_zero:N #1
  {
    \fp_compare:nT { #1 < 0 } { \fp_zero:N #1 }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Strichmaxerl }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Strichmaxerl } 
  { O{1} O{-22} O{22} O{27} O{-27} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
      { Strichmaxerl_#1_#2_#3_#4_#5 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
%    \end{macrocode}
%
% Now we have to calculate the length and the height of the separate
% parts of the \verb|\Strichmaxerl|.
%
% At first the lengths (they have all an \verb|x| in the name). \par
% \verb|LA| for \enquote{linker Arm} (\emph{left arm}). \par
% \verb|RA| for \enquote{rechter Arm} (\emph{right arm}). \par
% \verb|LB| for \enquote{linkes Bein} (\emph{left leg}). \par
% \verb|RB| for \enquote{rechtes Bein} (\emph{right leg}). \par
%    \begin{macrocode}
            \fp_set:Nn \l_@@_Strichmaxerl_x_LA_fp { -0.27 * cosd (#2) }
            \fp_set:Nn \l_@@_Strichmaxerl_x_RA_fp { 0.27 * cosd (#3) }
            \fp_set:Nn \l_@@_Strichmaxerl_x_LB_fp { 0.34 * sind (#4) }
            \fp_set:Nn \l_@@_Strichmaxerl_x_RB_fp { 0.34 * sind (#5) }
%    \end{macrocode}
%
% Now the height (\verb|y|): \par
% \verb|LA| for \enquote{linker Arm} (\emph{left arm}). \par
% \verb|RA| for \enquote{rechter Arm} (\emph{right arm}). \par
% \verb|LB| for \enquote{linkes Bein} (\emph{left leg}). \par
% \verb|RB| for \enquote{rechtes Bein} (\emph{right leg}). \par
%    \begin{macrocode}
            \fp_set:Nn \l_@@_Strichmaxerl_y_LA_fp { 0.27 * sind (#2) }
            \fp_set:Nn \l_@@_Strichmaxerl_y_RA_fp { -0.27 * sind (#3) }
            \fp_set:Nn \l_@@_Strichmaxerl_y_LB_fp { 0.34 * cosd (#4) }
            \fp_set:Nn \l_@@_Strichmaxerl_y_RB_fp { 0.34 * cosd (#5) }
%    \end{macrocode}
% Well then, lets start our calculations. Firstly the length.
%
%^^A  X
%
%    \begin{macrocode}
            \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_LA_fp
            \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_RA_fp
            \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_LB_fp
            \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_RB_fp
%    \end{macrocode}
%
%
%
%
%
%
%    \begin{macrocode}
            \fp_set:Nn \@@_Strichmaxerl_x_max_fp
              {
                max
                  (
                    0 , \l_@@_Strichmaxerl_x_LA_fp , \l_@@_Strichmaxerl_x_RA_fp,
                    \l_@@_Strichmaxerl_x_LB_fp , \l_@@_Strichmaxerl_x_RB_fp
                  )
              }
            \fp_set:Nn \@@_Strichmaxerl_x_min_fp
              {
                min
                  (
                    0 , \l_@@_Strichmaxerl_x_LA_fp , \l_@@_Strichmaxerl_x_RA_fp,
                    \l_@@_Strichmaxerl_x_LB_fp , \l_@@_Strichmaxerl_x_RB_fp
                  )
              }
%    \end{macrocode}
%
%^^A  Y
%
% Finished the length. Now we calculate our height. Arms and legs more
% or less separate.
%
% Arms: First we subtract $0.2$ (= adding $-0.2$) (torso length)
%
%    \begin{macrocode}
            \fp_set:Nn \l_@@_Strichmaxerl_y_LA_fp { \l_@@_Strichmaxerl_y_LA_fp - 0.2 }
            \fp_set:Nn \l_@@_Strichmaxerl_y_RA_fp { \l_@@_Strichmaxerl_y_RA_fp - 0.2 }
%    \end{macrocode}
% Arms and Legs: if they are smaller than $0$, make them $0$.
%    \begin{macrocode}
            \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_LA_fp
            \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_RA_fp
            \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_LB_fp
            \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_RB_fp
%    \end{macrocode}
%
% And find the greatest number.
%    \begin{macrocode}
            \fp_set:Nn \@@_Strichmaxerl_y_max
              {
                max
                  (
                    0 , \l_@@_Strichmaxerl_y_LA_fp , \l_@@_Strichmaxerl_y_RA_fp,
                    \l_@@_Strichmaxerl_y_LB_fp , \l_@@_Strichmaxerl_y_RB_fp
                  )
              }
%    \end{macrocode}
%
%
%
%
%
%
%    \begin{macrocode}
            \@@_create_draftbox:nn
              {
                (
                  0.606ex+1.35ex * \@@_Strichmaxerl_x_max_fp
                  -1.35ex * \@@_Strichmaxerl_x_min_fp
                ) * \l_@@_scale_abs_tl
              }{
                ( 1.173ex + 1.35ex * \@@_Strichmaxerl_y_max) * \l_@@_scale_abs_tl
              }
          }{
%              {
            \begin{tikzpicture}
              [
                /@@ ,
                line ~ width=0.12ex* \l_@@_scale_abs_tl , scale=#1, x=1.35ex, y=1.35ex
              ]
             \char_set_catcode_other:N  :
              \draw[rotate \space around= { #5 \token_to_str:N : ( 0.15 , 0.2 ) } ]  (0.15,0.2) -- (0.15,-0.14);
              \draw[rotate \space around= { #4 \token_to_str:N : ( 0.15 , 0.2 ) } ]  (0.15,0.2) -- (0.15,-0.14);
              \draw (.15,.2) -- (.15,.4);
              \draw[rotate \space around={ #3 \token_to_str:N : ( 0.15 , 0.4) } ] (0.15,0.4) -- (0.42,0.4);
              \draw[rotate \space around={ #2 \token_to_str:N : ( 0.15 , 0.4) } ] (0.15,0.4) -- (-0.12,0.4);
              \draw (.15, .4) -- (.15, .53);
              \draw (.15,.8) circle (0.18);
            \end{tikzpicture}%
%              }
          }
      }
  } 
%    \end{macrocode}
%\end{macro}
%
%
%
%\begin{macro}{ \Person }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Person } { O{1} O{-22} O{22} O{27} O{-27} }
  {
    \msg_error:nnnn 
      { tikzsymbols } 
      { obsolete-command } 
      { \Person } 
      { \Strichmaxerl }
    \tikzsymbolsuse { Strichmaxerl } [#1] [#2] [#3] [#4] [#5]
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Candle }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Candle } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Candle_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.64ex * \l_@@_scale_abs_tl } 
              { (1.255ex+2.2pt) * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex, y=1ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl 
              ]
              \draw[rounded ~ corners=0.04ex* \l_@@_scale_abs_tl ] 
                (0,0) -- (0.2,0) -- +(0,1) -- (0,1) -- cycle;
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (0.1,1) -- (0.1,1.2);
              \foreach \x in { -0.4 , 0.2 }
                \draw[xshift=0.95, yshift=2.2, line ~ width=0.04ex* \l_@@_scale_abs_tl ] 
                  (-0.1,0.6) .. controls (\x,0.8) and (-0.1,1) ..  (-0.1,1.2);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Fire }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Fire } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Fire_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.576ex * \l_@@_scale_abs_tl } 
              { 1.639ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex, y=1ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl ,
                rotate=45,
              ]
              \fill (-0.05,0) -- (0.05,0) -- (0.05,0.95) -- (-0.05,0.95) -- cycle;
              \fill (-0.74,0.7) -- (0.19,0.7) -- (0.19,0.8) -- (-0.74,0.8) -- cycle;
              \fill[rotate=-20, xshift=-1.3, yshift=-0.1] 
                (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle;
              \fill[rotate=-70, xshift=-3.3, yshift=-2.3]
                (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle;
              \fill[rotate=135, xshift=2.5, yshift=-3.8] 
                (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle;
              \draw
                [
                  rotate=-45, xshift=-2.6, yshift=1.5,
                  line ~ width=0.04ex* \l_@@_scale_abs_tl , x=0.5ex, y=0.5ex
                ] 
                (-0.1,0.29) .. controls (-0.7,0.6) and (0,1.2) ..  (0.05,1.7);
              \draw
                [
                  rotate=-45, xshift=-2.1,yshift=1.5,
                  line ~ width=0.04ex* \l_@@_scale_abs_tl , x=0.5ex, y=0.5ex
                ] 
                (-0.1,0.29) .. controls (0.7,0.6) and (-0.1,1.2) ..  (-0.15,1.7);
              \draw[rotate=-45, xshift=-2.5] (-0.1,0.29) .. controls 
                (-0.7,0.6) and (0,1.2) ..  (0,1.5);
              \draw[rotate=-45, xshift=-2] (-0.1,0.29) .. controls 
                (0.7,0.6) and (-0.1,1.2) ..  (-0.1,1.5);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Coffeecup }
%    \begin{macrocode}
\bool_if:NF \g_@@_if_opt_marvosym_bool
{
\@@_Declare_Document_Command:nnn { Coffeecup } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Coffeecup_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.82ex * \l_@@_scale_abs_tl } 
              { 1.705ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.7ex,y=0.7ex, scale=#1, 
                line ~ width=0.07ex* \l_@@_scale_abs_tl , decoration=
                  {
                    snake,amplitude=.05ex* \l_@@_scale_abs_tl ,
                    segment ~ length=0.408ex* \l_@@_scale_abs_tl 
                  }
              ]
              \draw (0,0) arc [start ~ angle=180, end ~ angle=270, x ~ radius=0.8,y ~ radius=1] --++
                (0.5,0) arc [start ~ angle=270, end ~ angle=360, x ~ radius=0.8,y ~ radius=1] -- cycle;
              \draw (2.1,-0.15) -- (2.2,-0.15) arc [start ~ angle=90, end ~ angle=-90, radius=0.3] -- (1.85, -0.75);
              \foreach \x in {0.4,1,1.6}
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl , decorate]
                 (\x,0.3) -- +(0,1);
              \draw (0,-1.05) -- (2.1,-1.05);
            \end{tikzpicture}%
          }
      }
  }
}
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Chair }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Chair } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Chair_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 0.97ex * \l_@@_scale_abs_tl } 
              { 1.69ex * \l_@@_scale_abs_tl } 
          }{
            \fp_compare:nT { #1 < 0 } { \bool_set_true:N \l_@@_if_scale_negative_bool }
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.9ex,y=0.9ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl
              ]
              \draw (0,-0.5) -- (0,0.7) -- (0.5,1) -- (0.5,0.25);
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] (0,0.4) -- (0.5,0.7);
              \draw (0,0) -- (0.5,0.3) -- (1,0) --(1,-0.5);
              \bool_if:NT \l_@@_if_scale_negative_bool
                { \draw (0.5,0.3) -- +(0,-0.5); }
              \draw (0.5,-0.3) -- (0.5,-0.8);
              \draw (1,0) -- (0.5,-0.3) -- (0,0);
            \end{tikzpicture}%
          }
        \bool_set_false:N \l_@@_if_scale_negative_bool
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Bed }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Bed } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Bed_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 3.08ex * \l_@@_scale_abs_tl } 
              { 1.68ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex , y=1ex , scale=#1 , line ~ width=0.08ex*\l_@@_scale_abs_tl
              ]
              \draw (0,0) -- (0,1.6);
              \draw (3,0) -- (3,1.2);
              \draw (0,0.5) -- (3,0.5);
              \draw (0,0.35) -- (3,0.35);
              \draw (0.7,0.5) arc [start ~ angle=0, end ~ angle=90, radius=0.7];
              \draw (0.7,0.5) arc [start ~ angle=180, end ~ angle=30, x ~ radius=1.231,y ~ radius=0.6];
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Tribar }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Tribar } 
  { O{1} O{opacity=0} O{opacity=0} O{opacity=0} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Tribar_#1_#2_#3_#4 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.7175ex * \l_@@_scale_abs_tl } 
              { 1.685ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.65ex,y=0.65ex,scale=#1,
                rounded ~ corners=0.03ex* \l_@@_scale_abs_tl , 
                line ~ width=0.06ex* \l_@@_scale_abs_tl 
              ]
              \fill[#2] (0.15,0.3) -- (-0.15,-0.3) -- (1.75,-0.3) -- ++ (-0.15,-0.3) 
                 -- (-0.65,-0.6) -- (0.35,1.3) -- +(0.15,-0.3);
              \fill[#3] (0,0) -- (1.3,0) -- (0.35,1.9) -- (0.65,1.9) -- 
                (1.75,-0.3) -- (-0.1,-0.3);
              \fill[#4]  (1,0) -- (0.35,1.3) --  (-0.65,-0.6) -- ++ 
                (-0.15,0.3) -- (0.35,1.9) -- (1.3,0);
              \draw (0,0) -- (1,0) -- (0.5,1) -- cycle;
              \draw (0.15,0.3) -- (-0.15,-0.3) -- (1.75,-0.3) -- ++ (-0.15,-0.3) 
                 -- (-0.65,-0.6) -- (0.35,1.3) -- (0.8,.4);
              \draw (0.9,0) -- (1.3,0) -- (0.35,1.9) -- (0.65,1.9) -- 
                (1.75,-0.3) -- +(-0.05,-0.1);
              \draw (-0.6,-0.6) -- (-0.65,-0.6) -- ++ (-0.15,0.3) -- (0.35,1.9) -- (0.4,1.9);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Moai }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Moai } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Moai_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \fp_compare:nTF { abs (#1) < 2 }
          {
            \dim_set:Nn \l_@@_Moai_thickness_dim { 0.05ex }
          }{
            \fp_compare:nTF { abs (#1) < 5 }
              { \dim_set:Nn \l_@@_Moai_thickness_dim { 0.035ex } }
              { \dim_set:Nn \l_@@_Moai_thickness_dim { 0.03ex } }
          }
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { ( 1.001ex + \l_@@_Moai_thickness_dim ) * \l_@@_scale_abs_tl } 
              { ( 1.664ex + \l_@@_Moai_thickness_dim ) * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=.13ex, y=.13ex, rounded ~ corners=0.01ex* \l_@@_scale_abs_tl , 
                scale=#1, 
                line ~ width= \dim_use:N \l_@@_Moai_thickness_dim * \l_@@_scale_abs_tl 
              ]
              \draw (-2.6,-4.25) --  (-2.5,-5.8) 
                ..controls (-2,-6.8) and (1.5,-6.8) ..  (2.2,-5.8) -- (2.4,-3.95);
              \draw (-2.5,2.5) .. controls (-2.9,4.6) and (2,5) .. (3.3,2.5) -- (2.9,-3.4)
                .. controls (2,-5) and (-4,-5) .. (-3.1,-3) -- cycle;
              \draw (-2.5,3) -- (-2,5) .. controls (0,6) and (2,5.8) .. (3.1,4.7) -- (3.3,2.5);
              \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] 
                 (-2.2,-1.8) .. controls (-1,-1.3) and (0,-1.7) .. (1,-2);
              \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] 
                 (-2.2,-1.8) .. controls (-1,-1) and (0,-1.4) .. (1,-2);
              \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] 
                 (-2.2,-1.8) .. controls (-1,-2) and (0,-2) .. (1,-2);
              \draw (-0.8,4) .. controls (-0.8,3) and (-0.8,2) ..  (-1.6,0.5) -- (-1.8,-0.4)
                 .. controls (-1,0.2) and (0,0.2) ..  (0.6,-0.4) -- (0.7,0.4)
                 .. controls (0,1) and (0,2) .. (0.8,4);
              \draw (-1.8,-0.36) .. controls (-0.5,-0.5) and (0,-0.5) .. (0.6,-0.36);
              \draw (3.2,3.5) -- (3.7,3.5) .. controls (3.5,2) 
                and (3.5,2) .. (3.6,-1.5) -- (3,-1.9);
              \draw (-2.5,3) .. controls (-2.7,2) and (-3,1) .. (-2.88,-1);
              \draw (-2.5,2.8) .. controls (-2,2.5) and (-1,3) .. (-0.8,3.1);
              \draw (0.5,3.3) .. controls (1,3) and (1,2.5) .. (3.3,2.4);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
% \begin{macro}{ \Snowman }
% 
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Snowman } { O{1} }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Snowman_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.545ex * \l_@@_scale_abs_tl } 
              { 1.772ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=0.9ex,y=0.9ex,line ~ width=0.07ex* \l_@@_scale_abs_tl , scale=#1 
              ]
              \draw (0,0) circle [x ~ radius = 0.4 , y~radius=0.35];
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] (0,0.64) circle [x ~ radius = 0.3 , y~radius=0.28];
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (0,1.14) circle [x ~ radius = 0.2 , y~radius=0.2];
              \draw
                [
                  rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ,
                  line ~ width=0.05ex* \l_@@_scale_abs_tl ,
                  rotate ~ around={-30 \token_to_str:N : (0,1.14)} , 
               ] 
               (-0.2,1.15) -- ++(0,0.35) -- +(0.4,0) -- (0.2,1.14);
              \draw
                [
                  rounded ~ corners=0.07ex * \l_@@_scale_abs_tl ,
                  line ~ width=0.05ex * \l_@@_scale_abs_tl ,
                  rotate ~ around={-30 \token_to_str:N : (0,1.14)} ,
                ]
                (-0.2,1.19) arc  [start ~ angle=270, end ~ angle=90, radius=0.1];
              \foreach \y in { 0.78 , 0.63 , 0.48 }
                \fill (0,\y) circle (0.04);
              \foreach \y in { 0.2 , 0 , -0.2 }
                \fill (0,\y) circle (0.05);
              \fill (-0.06,1.18) circle (0.045);
              \fill (0.06,1.18) circle (0.045);
              \foreach \x/\y in { 0.1/1.08 , 0.06/1.055 , 0.02/1.039}
                \fill (\x,\y) circle (0.015)  (-\x,\y) circle (0.015) ;
              \draw (-0.3,0.7) -- (-0.6,0.8); 
              \draw (0.3,0.7) -- (0.6,0.8); 
              \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] (-0.65,0) -- (-0.65,1);
              \foreach\x in {-0.85, -0.75,-0.65,-0.55,-0.45}
              \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (-0.65,1) -- (\x,1.3);
              \foreach \y/\x/\z in { 0.7/0.75 , 0.9/0.8 , 1/0.6/0.55 }
                \draw (0.6,0.8) -- (\x,\y)  (-0.6,0.8) -- (-\z,\y) ;
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%    \begin{macrocode}
\clist_set_eq:NN \g_tikzsymbols_list_of_other_commands_clist \l_@@_tmpa_clist
\clist_clear:N \l_@@_tmpa_clist
%    \end{macrocode}
%
% \subsection{Trees}
% Many great ideas are stolen.  Don't know who said that, but it's
% true.
%
%
%
%\begin{macro}{ \@@_Basic_Tree:nnnnn }
% Let's define the \Makro{@@_Basic_Tree:nnnnn} command.
% Like every symbol it also is saved inside a box. 
% If the fifth argument is neither empty nor \enquote{leaf}
% it \dots\ does (?) an error message.
%    \begin{macrocode}
\cs_new:Npn \@@_Basic_Tree:nnnnn #1#2#3#4#5
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
      { BasicTree_#1_#2_#3_#4_#5 }
      {
        \tl_set:Nn \l_tmpa_tl {#5}
        \bool_if:nTF 
          { 
            \tl_if_eq_p:NN \l_tmpa_tl \c_@@_leaf_tl || 
            \tl_if_empty_p:n {#5} 
          }{ 
            \@@_Basic_Tree_aux:nnnnn {#1} {#2} {#3} {#4} {#5}
          }{
            \msg_error:nnn { tikzsymbols } { tree } {#5}
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{ \BasicTree }
% Well, thats the final \Makro{BasicTree} command.
% More or less copy \& pasted from the \Package{tikz} manual.
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { BasicTree } { O{1} m m m m }
  {
    \@@_Basic_Tree:nnnnn {#1} {#2} {#3} {#4} {#5}
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \WorstTree }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { WorstTree } { O{1}  }
  {
    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { WorstTree_#1 }
      {
        \@@_set_scale_abs_tl:n {#1}
        \bool_if:NTF \g_@@_if_opt_draft_bool
          {
            \@@_create_draftbox:nn 
              { 1.64ex * \l_@@_scale_abs_tl } 
              { 1.84ex * \l_@@_scale_abs_tl } 
          }{
            \begin{tikzpicture}
              [
                /@@ ,
                x=1ex,y=1ex, line ~ width=0.04ex* \l_@@_scale_abs_tl ,scale=#1
              ]
              \fill[brown] (-0.3,0) .. controls (0.2,0.3) and (0.2,0.7) .. (0.2,1) -- (0.5,1) .. 
                 controls (0.5,0.7) and (0.5,0.3) .. (1,0);
              \draw (-0.3,0) .. controls (0.2,0.3) and (0.2,0.7) .. (0.2,1) -- (0.5,1) .. 
                  controls (0.5,0.7) and (0.5,0.3) .. (1,0) ;
              \fill[green] (0.2,0.8) --  (0,0.8) .. controls (-0.4,0.7) and (-0.4,1) ..  (-0.3,1.2) ..
                  controls (-0.3, 1.6) and (-0.1,1.6) .. (0.1,1.5) .. 
                  controls (0.3,1.8) and (0.6,1.6) ..  (0.7,1.5) .. 
                  controls (1.1, 1.6) and (1,1.4) ..  (1,1.2) .. 
                  controls (1.2,1) and (1.2,0.7) .. (0.8,0.8) -- (0.5,0.8);
              \draw (0.214,0.8) --  (0,0.8) .. controls (-0.4,0.7) and (-0.4,1) ..  (-0.3,1.2) .. 
                 controls (-0.3, 1.6) and (-0.1,1.6) .. (0.1,1.5) .. 
                 controls (0.3,1.8) and (0.6,1.6) ..  (0.7,1.5) .. controls (1.1, 1.6) and (1,1.4) ..
                 (1,1.2) .. controls (1.2,1) and (1.2,0.7) .. (0.8,0.8) -- (0.486,0.8);
              \fill[red] (0,1) circle (0.1);
              \fill[red] (0.4,1.2) circle (0.1);
              \fill[red] (0.8,1.1) circle (0.1);
            \end{tikzpicture}%
          }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
% 
%
%\begin{macro}{ \Springtree }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Springtree } { O {1} }
  {
      \@@_Basic_Tree:nnnnn
      {#1}
      { brown!70!black }
      { green!90!black } 
      { green!80!black }
      { leaf }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Summertree }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Summertree } { O {1} }
  {
      \@@_Basic_Tree:nnnnn
      {#1}
      { brown!50!black }
      { green!80!black } 
      { red!80!green }
      { leaf }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Autumntree }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Autumntree } { O {1} }
  {
      \@@_Basic_Tree:nnnnn
      {#1}
      { red!30!black }
      { red!75!black } 
      { orange }
      { leaf }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%
%
%\begin{macro}{ \Wintertree }
%    \begin{macrocode}
\@@_Declare_Document_Command:nnn { Wintertree } { O {1} }
  {
      \@@_Basic_Tree:nnnnn
      {#1}
      { black!80!white }
      { black!50 } 
      { black!25 }
      { }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
% Checks if the Package \Package{marvosym} is loaded
% if the \Option{marvosym} is set true.
%    \begin{macrocode}
\AtBeginDocument
  {
    \bool_if:NT \g_@@_if_opt_marvosym_bool
      {
        \@ifpackageloaded { marvosym } { } 
          {
            \msg_error:nn { tikzsymbols } { marvosym }
          }
      }
  }
%    \end{macrocode}
%
%
% \begin{macro}{ \tikzsymbolsuse }
% If the english command name is used, the german one
% is inserted, don't exactly know why.
%    \begin{macrocode}
\NewDocumentCommand \tikzsymbolsuse { m }
  {
    \prop_get:NnNTF \g_@@_english_commands_prop {#1} \l_tmpa_tl
      {
        \use:c { \g_@@_command_prefix_tl \l_tmpa_tl }
      }{
        \cs_if_exist:cTF { \g_@@_command_prefix_tl #1 }
          { \use:c { \g_@@_command_prefix_tl #1 } }
          { \msg_error:nnn { tikzsymbols } { undefined-command } {#1} }
      }
  }
%    \end{macrocode}
%\end{macro}
%
%
%
%
%\begin{macro}{ \tikzsymbolsset }
%    \begin{macrocode}
\NewDocumentCommand \tikzsymbolsset { m }
  {
    \keys_set_groups:nnn { tikzsymbols } { document } {#1}
  }
%\AtBeginDocument
%  {
%    \RenewDocumentCommand \tikzsymbolsset { }
%      {
%        \msg_error:nnn { tikzsymbols } { tikzsymbolsset }
%      }
%  }
%    \end{macrocode}
%\end{macro}
%
%
%\iffalse
%<*ignore>
\tkzsymbls@Declare@Robust@Command{@@@@@@@@Keep@Cool@@@@I}{%
\begin{tikzpicture}[ /@@ ,x=1em, y=1em, line ~ width=0.03em]
\fill[decorate,decoration={snake,amplitude=.02em,segment ~ length=0.4em},cyan!20!] 
(0,0) -- (0,1) -- (1,1) -- (1,0) -- cycle;
\draw (0.3,0.3) -- (0.55,0.7);% Körper
\draw (0.05,0.4) -- (0.3,0.3) -- (0.1,0.1);
\draw (0.3,0.8) -- (0.5,0.61);
\draw (0.49,0.61) -- (0.8,0.65);
\draw (0.65,0.9) circle (0.17);
\end{tikzpicture}%
\tikzsymbolsaftersymbolinput%
}
\tkzsymbls@Declare@Robust@Command{@@@@@@@@@@@Keep@Cool@@@@@II}{%
\begin{tikzpicture}[ /@@ ,x=1em,y=1em]
\fill[decorate,decoration={snake,amplitude=.02em,segment ~ length=0.6em},cyan!20!]  (-0.3,-0.3) rectangle (0.5,1);
\draw (0,-0.1) -- (0.15,0.2) -- (0.3,-0.1);% Beine
\draw (.15,.2) -- (.15,.4);% Körper
\draw (.15,.4) -- (.4,.5);% Rechter Arm
\draw (.15,.4) -- (-0.1,.5);% Linker Arm
\draw (.15, .4) -- (.15, .53);% Hals
\draw (.15,.8) circle (0.18);% Kopf
\end{tikzpicture}%
\tikzsymbolsaftersymbolinput%
}
%</ignore>
%\fi
% 
%
%
%
% \end{implementation}
%
% \iffalse meta-comment
%: Final
%
% \endinput
% Local Variables:
% mode: doctex
% TeX-master: t
% End:
% \fi
