From 4bc5b2eef4dde44c1ae2a1f191b7bb5ddee7c121 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 5 Sep 2017 21:56:28 +0000
Subject: tikzsymbols (5sep17)

git-svn-id: svn://tug.org/texlive/trunk@45222 c570f23f-e606-0410-a88d-b1316a301751
---
 .../source/latex/tikzsymbols/tikzsymbols.dtx       | 1604 ++++++++++++--------
 1 file changed, 1010 insertions(+), 594 deletions(-)

(limited to 'Master/texmf-dist/source/latex/tikzsymbols/tikzsymbols.dtx')

diff --git a/Master/texmf-dist/source/latex/tikzsymbols/tikzsymbols.dtx b/Master/texmf-dist/source/latex/tikzsymbols/tikzsymbols.dtx
index 026a1303111..c226cd4f663 100644
--- a/Master/texmf-dist/source/latex/tikzsymbols/tikzsymbols.dtx
+++ b/Master/texmf-dist/source/latex/tikzsymbols/tikzsymbols.dtx
@@ -1,36 +1,35 @@
 % \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 
+% Copyright (C) 2013--2017 by Ben Vitecek (current Maintainer)
 % 
-% and version 1.3c or later is part of all distributions of 
-% LaTeX version 2008-05-04 or later. 
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% 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 2005/12/01 or later.
 % 
 % This work has the LPPL maintenance status `maintained'.
 %
-% This work consists of the files README, tikzsymbols.dtx, 
+% This work consists of the files README.md, tikzsymbols.dtx, 
 % tikzsymbols.ins and the derived files tikzsymbols.sty.
 %
 % \fi
 %
 % \iffalse 
 %<*driver> 
-\documentclass[onlydoc,11pt]{l3doc} 
+\documentclass[onlydoc,11pt,english]{l3doc} 
 
 \usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage{lmodern} 
-\usepackage[english]{babel}
+\usepackage{babel}
 \usepackage{marvosym} 
 \usepackage{microtype}
 \usepackage{longtable}
@@ -65,6 +64,7 @@
 
 \newcommand{\Package}{\pkg}
 \newcommand{\Option}{\texttt}
+\newcommand{\opt}{\texttt}
 \newcommand{\Makro}{\cs}
 \newcommand{\makrouse}[1]{\use:c{#1}}
 \renewcommand{\arg}[1]{\texttt{<#1>}}
@@ -76,12 +76,6 @@
 \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
   {
@@ -96,15 +90,6 @@
 
 \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 { }
@@ -112,13 +97,29 @@
 
 \clist_set_eq:NN \printclist \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist
 
-\clist_if_exist:NF \printclist { \clist_new:N \printclist }
+\clist_if_exist:NF \printclist { \ERROR }
 
 \newcommand{\loadtime}{\marginpar{load-time}}
 \newcommand{\preamble}{\marginpar{preamble}}
 \newcommand{\preload}{\marginpar{load-time and preamble}}
 
 
+
+\NewDocumentEnvironment { myexample } { }
+  {
+    \medskip
+    \noindent\textbf{Examples:}
+  }{
+  
+  }
+\NewDocumentEnvironment { mynote } { }
+  {
+    \medskip
+    \noindent\textbf{Note:}%
+  }{
+  
+  }
+
 \ExplSyntaxOff
 \makeatother
 
@@ -176,9 +177,12 @@
 %
 % \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}} 
+%\author{Ben Vitecek \\ 
+%  \href{mailto:b.vitecek@gmx.at}{b.vitecek@gmx.at} \\
+%  \href{https://github.com/Vidabe/tikzsymbols}{GitHub}
+% } 
 %
-% \date{May 14, 2017} 
+%^^A \date{August 19, 2017} 
 %
 % \maketitle{}
 %
@@ -191,7 +195,8 @@
 %   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.
+%   errors\footnote{They are -- of course -- on purpose (expect for 
+%    \enquote{avaiable} (sic!)).} \Winkey.
 % \end{abstract}
 %
 % \tableofcontents
@@ -203,7 +208,7 @@
 % \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
+% and my (sadly) very humble skills to develop 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
@@ -232,34 +237,32 @@
 % 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!
+% Well \dots\ that's 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}.
+% The package should behave the same way as the \enquote{old} \LaTeXe\ release.
 %
-% Furthermore the horribly named command
+% \begin{description}
+%  \item[2017] Option \Option{usebox} can be used during the document.
+%  \item[old]  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.
+%  \item[very old]
+% The option \Option{draft=absolute} is now
+% obsolete and replaced by the much simpler option \Option{draft=true}.
+% \end{description}
+%
 %
 %^^A And a new Emoticon: \Makro{Changey} (and \Makro{dChangey}).
 %
+%
 % \section{Options}
 % \label{sec:options}
 %
@@ -331,18 +334,6 @@
 %
 % 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}
@@ -382,7 +373,11 @@
 %   a \arg{prefix}, just write the command name and this command adds
 %   automatically the given prefix to the command name.
 %
-%   For example:
+% 
+% \end{function}
+%
+%
+%   \begin{myexample}
 %   \Makro{tikzsymbolsuse\{Smiley\}[2]} \tikzsymbolsuse{Smiley}[2]
 %
 %   \Makro{tikzsymbolsuse\{BasicTree\}[1.2]\{black\}\{red!50!black\}\{red\}\{leaf\}}
@@ -394,18 +389,33 @@
 %   \Makro{tikzsymbolsuse\{Fire\}[-1.3]} \tikzsymbolsuse{Fire}[-1.3]
 %
 %   etc.
+%   \end{myexample}
 %
+% \subsection{Normal Options}
+% \label{sec:pream-opt}
 % 
-% \end{function}
+% Most of these options can be set either as a package-option or with
+% \Makro{tikzsymbolsset}.
 %
+% \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 (with the same height and width as
+%   the symbols\footnote{At least I hope.}) which are faster to
+%   create.
 %
-% \subsection{Preamble Options}
-% \label{sec:pream-opt}
-% 
-% Most of these commands can be set either as package option or with
-% \Makro{tikzsymbolsset}.
+%   The old option \Option{draft=absolute} is 
+%   obsolete and should therefore not be used.
 %
+% \end{function}
 %
 % \subsubsection{final (true/false)}
 % \label{sec:final}
@@ -425,24 +435,6 @@
 %
 % \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}
 % 
 %
 %
@@ -455,11 +447,11 @@
 %  \end{syntax}
 %
 % This key accepts \Option{true}, \Option{false} and furthermore
-% \Option{on} and \Option{off}. The latter do exactly the same as the
+% \Option{on} and \Option{off} (for historical reasons). 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},
+% and its derivates (\Makro{Springtree}, \Makro{Summertree},
 % \Makro{Autumntree} and \Makro{Wintertree}) and substitutes them with
 % \Package{tikz} drawn boxes. 
 %
@@ -490,6 +482,59 @@
 % \end{function}
 % 
 %
+% \subsubsection{global-scale (\arg{number}) \\ 
+%  symbol-scale (\arg{key-value list})}
+% \label{sec:global-scale}
+% 
+% \begin{function}{global-scale, symbol-scale}
+%   \begin{syntax}
+%     global-scale = \marg{number}
+%     symbol-scale = \marg{symbol-1=number-1, symbol-2=number-2,\dots}
+%   \end{syntax}
+%   \opt{global-scale} can be used to scale \emph{all} commands by given \meta{number}.
+%
+%   If only some specific symbols should be scaled, you may use the second option
+%   and specify which symbol or symbols (name of the symbol without backslash) should be scaled.
+%   Using the german name (if available) has the same effect as using the  english one.
+%
+%   \begin{mynote}
+%     You can scale the symbols in this package in three different ways: The first 
+%     is to scale \emph{all} symbols using \opt{global-scale}, the second is scaling
+%     specific symbols using \opt{symbol-scale} and the third is by using the
+%     optional argument provided by the symbols (which I call \opt{local-scale}; e.g.
+%     \verb|\Smiley[2]|).
+%     
+%     The important thing is that those scaling methods \emph{do not cancel} each
+%     other, but behave multiplicative.
+%
+%     If a local scale is given (e.g.\ \verb|\Smiley[2]|) with \opt{global-scale=3}
+%     the resulting scaling will be $3\cdot 2=6$. Is furthermore this specific symbol
+%     is also scaled (e.g. by $1.1$), the resulting scaling 
+%     (for this symbol) will be $3\cdot 1.1 \cdot 2=6.6$.
+%     \end{mynote}
+%
+% \end{function}
+% 
+%  \begin{myexample}
+%  \verb|\tikzsymbolsset{symbol-scale={ Smiley= 1.5 }}|
+%  \tikzsymbolsset{symbol-scale={ Smiley= 1.5 }}
+%  \Smiley \\
+%  \verb|\tikzsymbolsset{symbol-scale={ Smiley= 5 }}|
+%  \tikzsymbolsset{symbol-scale={ Smiley= 5 }}
+%  \Smiley \\
+%  \verb|\tikzsymbolsset{symbol-scale={ Smiley= 2, Schneebesen=2.1 }}|
+%  \tikzsymbolsset{symbol-scale={ Smiley= 2, Schneebesen=2.1 }}
+%  \Smiley \Schneebesen \\
+%  \verb|\tikzsymbolsset{global-scale=3,symbol-scale={ Smiley= 2, Schneebesen=2.1 }}|
+%  \tikzsymbolsset{global-scale=3,symbol-scale={ Smiley= 2, Schneebesen=2.1 }}
+%  \Smiley \Schneebesen
+%  \end{myexample}
+%
+%   \begin{mynote}
+%   Using \enquote{eggbeater} instead of \enquote{Schneebesen} 
+%   does the same thing.
+%   \end{mynote}
+%
 % \subsubsection{baseline (true/false)}
 % \label{sec:baseline}
 % 
@@ -498,11 +543,27 @@
 %     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
+%   \pkg{todonotes}' \cs{todo} command. If set to \Option{true} it 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}
+%
+%
+% \subsubsection{usebox (true/false)}
+% \label{sec:usebox}
 % 
+% \begin{function}{usebox}
+%   \begin{syntax}
+%     usebox = \marg{true/false}
+%   \end{syntax}
+% 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}. 
+% \end{function}
 %
 %
 %
@@ -519,7 +580,7 @@
 %
 %
 %
-% \subsection{cooking-symbols \texorpdfstring{\Kochtopf}{Kochtopf}}
+% \subsection{Cooking-symbols \texorpdfstring{\Kochtopf}{Kochtopf}}
 %
 % 
 % \begin{function} 
@@ -576,11 +637,11 @@
 %   \multicolumn{2}{l}{German \& English Commands} & Optional
 %   parameter(s) & Output \\\toprule\endhead
 %   \\ \bottomrule \endfoot
-%  \MapinTable   \bottomrule
+%  \MapinTable   
+%  \bottomrule
 % \end{longtable}
 %
 % 
-% 
 %
 %
 % \end{function}
@@ -591,7 +652,7 @@
 %
 %\subsection{Emoticons \texorpdfstring{\Smiley}{Smiley}}
 %
-%\subsubsection{\enquote{normal} Emoticons \texorpdfstring{\Cat}{Cat}}
+%\subsubsection{\enquote{Normal} Emoticons \texorpdfstring{\Cat}{Cat}}
 %
 %
 %
@@ -617,7 +678,9 @@
 %     \Walley,
 %     \rWalley,
 %     \Cat,
+%     \SchrodingersCat,
 %     \Ninja,
+%     \Sleepey,
 %     \NiceReapey
 %  }
 %
@@ -634,7 +697,10 @@
 %
 % \Makro{Changey}'s \Meta{mood} has to be between $-2$ and $2$
 % ($1$ equals \Makro{Smiley}, $-1$ \Makro{Sadey} and $0$ \Makro{Neutrey}).
-% 
+%
+% \Makro{SchrodingersCat}'s \Meta{case} can either be $1$ (alive), $0$ (unknown)
+% or $-1$ (dead).
+%
 % \begin{longtable}{llc} 
 %   Commands & (Optional) parameter(s) & Output \\\toprule\endhead
 %  
@@ -661,14 +727,15 @@
 %   \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{SchrodingersCat}& \oarg{scale}\marg{case}& \SchrodingersCat{0} \\
 %   \Makro{Ninja}& \oarg{scale}\oarg{color}\oarg{headband color}\oarg{eye color}& \Ninja \\
+%   \Makro{Sleepey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{star color}& \Sleepey \\
 %   \Makro{NiceReapey} & \oarg{scale} & \NiceReapey \\
 %    \bottomrule
 % \end{longtable}
 %
 %
 %
-%
 % \end{function}
 %
 % Examples: \CreateExample{Sadey}{[][red]}
@@ -685,6 +752,12 @@
 % 
 % \verb|\textcolor{blue}{\Sey}| \textcolor{blue}{\Sey}
 %
+% \CreateExample{Sleepey} {[1][white][blue][yellow!95!black]}
+%
+% \CreateExample{SchrodingersCat} {{1}} \par
+% \CreateExample{SchrodingersCat} {{0}}\par
+% \CreateExample{SchrodingersCat} {{-1}}
+%
 % \CreateExample{Changey} {{-2}}
 % \CreateExample{Changey} {{-1.367}}
 % \CreateExample{Changey} {{-1}}
@@ -732,6 +805,7 @@
 %     \dVomey,
 %     \dNursey,
 %     \dTongey,
+%     \dSleepey,
 %     \olddWinkey
 %   }
 %
@@ -777,6 +851,7 @@
 %   \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  \\
+%   \Makro{dSleepey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{star color}& \dSleepey \\
 %    \bottomrule
 % \end{longtable}
 %
@@ -818,7 +893,7 @@
 % 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}}
+% \subsection{Other Symbols \texorpdfstring{\Moai}{Moai}}
 %
 % \begin{function}
 %   {
@@ -913,7 +988,7 @@
 % 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 
+% Furthermore those trees are pretty much stolen from the 
 % \Package{tikz} manual.
 %
 % \begin{center}
@@ -1010,9 +1085,11 @@
 %
 % \section{Nobody is perfect}
 %
-% If you find a bug please send me a mail 
+% If you find a bug please send me a mail (or report it on GitHub)
 % involving a \emph{minimal example}   
-% showing the bug and a short description. Please mention
+% showing the bug and a short description (english or german). 
+% Please mention (if you are writing 
+% a mail)
 % \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.
@@ -1021,9 +1098,6 @@
 %
 % Suggestions are also welcome.
 %
-%^^A \section{making suggestions}
-%
-%^^A Not only bug reports but also suggestions are most welcome.
 % 
 %
 %
@@ -1036,7 +1110,9 @@
 % Furthermore many thanks to my brother helping me improving 
 % the symbols.
 %
+% \section{Changes}
 %
+% See the \enquote{README.md} file.
 %
 %
 % \end{documentation}
@@ -1130,6 +1206,9 @@
 % behaviors with \pkg{todonotes}.}
 % \changes{v4.02}{2017/05/14}{Defined the tikz-style '/\_\_tikzsymbols' which is used to implement 'baseline'.}
 %
+% \changes{v4.03}{2017/08/08}{New symbols: \cs{Sleepey} and \cs{dSleepey}.}
+% \changes{v4.04}{2017/08/08}{New symbol: \cs{SchrodingersCat}.}
+%
 % The first lines are always the same: What do I need, what is the
 % package named.
 %    \begin{macrocode} 
@@ -1148,8 +1227,8 @@
   }
 \ProvidesExplPackage
   {tikzsymbols}
-  {2017/05/14}
-  {4.02}
+  {2017/09/05}
+  {4.07}
   {Some symbols created using tikz and LaTeX3.}
 \@ifpackageloaded { tikz } {} { \RequirePackage { tikz } }
 \@ifpackageloaded { xcolor } {} { \RequirePackage { xcolor } }
@@ -1171,7 +1250,6 @@
 %   \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
@@ -1182,14 +1260,12 @@
 \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}
 %
 %
@@ -1239,7 +1315,14 @@
 \tl_gset:Nn \l_@@_tikzsymbols_after_symbol_tl { \xspace }
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\tl_new:N \l_@@_used_only_once_because_no_better_idea_tl
+%    \end{macrocode}
 %
+%    \begin{macrocode}
+\fp_new:N \l_@@_global_scale_fp
+\fp_set:Nn \l_@@_global_scale_fp { 1.0 }
+%    \end{macrocode}
 %
 %
 % \begin{macro}{\tikzsymbolsaftersymbolinput}
@@ -1286,10 +1369,7 @@
 %
 %
 %
-% \begin{macro}
-%  {
-%    \l_@@_Moai_thickness_dim ,
-%  }
+% \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
@@ -1301,24 +1381,19 @@
 % \end{macro}
 %
 %
-% \begin{macro}
-%  {
-%    \g_tikzsymbols_list_of_commands_clist ,
-%    \g_tikzsymbols_list_of_english_commands_clist ,
-%  }
-%
+% \begin{macro} { \g_tikzsymbols_list_of_printing_cooking_with_argument_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}
 %
+% \begin{macro}{ \g_@@_english_commands_prop }
+%    \begin{macrocode}
+\prop_new:N \g_@@_english_commands_prop
+%    \end{macrocode}
+% \end{macro}
+%
 %
 % \subsection{Messages}
 %
@@ -1331,8 +1406,7 @@
   { 
     Option \ '#1' \ is \ obsolete. \ 
     Please \ use \ '#2' \ instead. 
-  }
-  {
+  }{
     The \ option \ you \ used \ is \ obsolete.
     \msg_see_documentation_text:n { tikzsymbols } 
   }
@@ -1346,8 +1420,7 @@
   {  
     Undefined \ Control \ sequence: \ '#1'. \
     Did \ you \ write \ the \ name \ correctly?
-  } 
-  { 
+  }{ 
     The \ command \ is \ not \ defined.
     \msg_see_documentation_text:n { tikzsymbols } 
   }
@@ -1402,19 +1475,6 @@
 %    \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}
@@ -1454,9 +1514,62 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{ SchrodingersCat  }
+%    \begin{macrocode}
+\msg_new:nnnn { tikzsymbols } { SchrodingersCat  } 
+  {  
+    \SchrodingersCat\ only \ accepts \ '-1' \ (dead), \ '0'\ (unknown)\ or \ '1'\
+    (alive) \ for \ its \ mandatroy \ argument. \ You \ have \ given \ '#1'.
+  }{
+    Your \ input \ number \ is \ not \ allowed.
+    \msg_see_documentation_text:n { tikzsymbols } 
+  }
+%    \end{macrocode}
+% \end{macro}
 %
+% \begin{macro}{ internal-message  }
+% \changes{v4.05}{2017/08/09}{New}
+%    \begin{macrocode}
+\msg_new:nnnn { tikzsymbols } { internal-message  } 
+  {  
+    This \ is \ an \ internal \ message \ and \ means \ that \
+    I \ (the \ package \ author) \ fucked \ up. \ If \ you \
+    stumble \ across \ this, \ the \ description \ message \
+    is \ '#1'.
+  }{
+    I \ apologize \ for \ that.
+    \msg_see_documentation_text:n { tikzsymbols } 
+  }
+%    \end{macrocode}
+% \end{macro}
 %
+% \begin{macro}{ package-option }
+% \changes{v4.05}{2017/08/09}{New}
+%    \begin{macrocode}
+\msg_new:nnnn { tikzsymbols } { package-option } 
+  {  
+    The \ option \ '#1' \ is \ only \ allowed \ as \ a \ package
+    \ option.
+  }{
+    This \ option \ is \ not \ allowed \ to \ be \ set \
+    using \ \tikzsymbolsset{}.
+    \msg_see_documentation_text:n { tikzsymbols } 
+  }
+%    \end{macrocode}
+% \end{macro}
 %
+% \begin{macro}{ package-option }
+% \changes{v4.05}{2017/08/09}{New}
+%    \begin{macrocode}
+\msg_new:nnnn { tikzsymbols } { symbol-name-unknown } 
+  {  
+    The \ symbol \ '#1' \ is \ not \ available \ by \ this \ package.
+  }{
+    Perhaps \ you \ have \ misspelled it.
+    \msg_see_documentation_text:n { tikzsymbols } 
+  }
+%    \end{macrocode}
+% \end{macro}
 %
 %
 %
@@ -1464,17 +1577,178 @@
 %
 %
 %
+%
+%
+%
+% \subsection{Helping Commands}
+% \label{sec:helping-commands}
+%
+% I define some macros which will help me  to write less.
+%
+%
+%
 % \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 {  }
+%\cs_new:Npn \@@_Basic_Tree_aux:nnnnn {  }
+\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}
+% \end{macro}
+%
+%^^A The command \Makro{BasicTree} is split up into two commands, named
+%^^A \texttt{on} and \texttt{off}. The helper command
+%^^A \Makro{@@_Basic_Tree_aux:nnnnn} is redefined accordingly.
+%^^A    \begin{macrocode}
+%^^A    \end{macrocode}
+%
+%
+% \begin{macro}{ \@@_symbol_scale_i:n , \@@_symbol_scale_ii:nn }
+%    \begin{macrocode}
+\cs_new:Npn \@@_symbol_scale_i:n #1
+  {
+    \@@_symbol_scale_ii:nn {#1} { 1.0 }
+  }
+\cs_new:Npn \@@_symbol_scale_ii:nn #1#2
+  {
+    \prop_get:NnNTF \g_@@_english_commands_prop {#1} \l_tmpa_tl
+      {
+        \fp_set:cn { l_@@_ \l_tmpa_tl _scale_fp } {#2}
+      }{
+        \fp_if_exist:cTF { l_@@_#1_scale_fp }
+          { \fp_set:cn { l_@@_#1_scale_fp } {#2} }
+          { \msg_error:nnn { tikzsymbols} { symbol-name-unknown } {#1} }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \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_eval: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_aux: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 
+      { 
+        \bool_if:NTF \g_@@_if_opt_draft_bool { T } { F } _ 
+        \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}{ \@@_use_savebox_aux: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}
 %
 %
+%
+%
+% \begin{macro}{\@@_provide_savebox_and_use: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 \@@_provide_savebox_and_use_aux:nT #1#2
+  {
+    \@@_if_savebox_undefined:nT {#1} {#2}
+    \@@_use_savebox:n {#1}
+  }
+\cs_set_eq:NN 
+  \@@_provide_savebox_and_use:nT 
+  \@@_provide_savebox_and_use_aux:nT
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% To make this package \pkg{todonotes} safe:
+%    \begin{macrocode}
+\pgfkeys{ /@@/.style= { baseline=default } }
+%    \end{macrocode}
+%
 % 
 % \subsection{Keys}
 % \label{sec:keys}
@@ -1492,7 +1766,6 @@
 %    \begin{macrocode}
     final .bool_gset_inverse:N = \g_@@_if_opt_draft_bool ,
     final .default:n = { true } ,
-    final .groups:n = { document } ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1514,12 +1787,11 @@
               { 
                 \msg_error:nnnn { tikzsymbols } { obsolete-option } 
                   { draft = absolute } { draft = true } 
-                  \bool_gset_true:N \g_@@_if_opt_draft_bool 
+                \bool_gset_true:N \g_@@_if_opt_draft_bool 
               }
           }
       } ,
     draft .default:n= { false } ,
-    draft .groups:n = { document } ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1533,7 +1805,6 @@
           { draftabsolute } { draft = true }
         \bool_gset_true:N \g_@@_if_opt_draft_bool
       } , 
-    draftabsolute .groups:n = { document } ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1550,9 +1821,20 @@
 %   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 .choice: , 
+    usebox/true .code:n = 
+      { 
+        \cs_set_eq:NN 
+          \@@_provide_savebox_and_use:nT
+          \@@_provide_savebox_and_use_aux:nT
+      } ,
+    usebox/false .code:n = 
+      { 
+        \cs_set_eq:NN 
+          \@@_provide_savebox_and_use:nT
+          \use_ii:nn
+      } ,
     usebox .default:n = { true } ,
-    usebox .groups:n = { package } ,
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1575,12 +1857,11 @@
     tree .choices:nn = 
       { true , on , false , off }
       {
-        \int_compare:nTF { \l_keys_choice_int <= 2 }
+        \int_compare:nNnTF { \l_keys_choice_int } < { 3 }
           { \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}
 %
@@ -1591,157 +1872,66 @@
 %    \begin{macrocode}
     after-symbol .tl_set:N = \l_@@_tikzsymbols_after_symbol_tl ,
     after-symbol .default:n= { \xspace } ,
-    after-symbol .groups:n = { document } ,
 %    \end{macrocode}
+% \end{macro}
 %
 % \begin{macro}{ baseline }
 %    \begin{macrocode}
     baseline .choice: ,
-    baseline / true .code:n = { \pgfkeys{ /@@/.style={baseline=default} } } ,
+    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{macro}{ global-scale }
 %    \begin{macrocode}
-\cs_new:Npn \@@_set_scale_abs_tl:n #1
-  {
-    \tl_set:Nx \l_@@_scale_abs_tl { \fp_to_tl:n { abs (#1) } }
-  }
+    global-scale .fp_set:N = \l_@@_global_scale_fp ,
+    global-scale .default:n = { 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.
+% This command has to be set later as
+% the command names have not been defined yet.
+% \begin{macro}{ symbol-scale }
 %    \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
+    symbol-scale .code:n =
       {
-        \vbox_to_ht:nn { \fp_to_dim:N \l_tmpb_fp } 
+        \tl_set:Nn \l_@@_used_only_once_because_no_better_idea_tl
           {
-            \hbox_to_wd:nn { \fp_to_dim:N \l_tmpa_fp } { }
+            symbol-scale = {#1} ,
           }
-      }
-    \group_end: 
-  }
+      } ,
+    symbol-scale .default:n = { } ,
 %    \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.
+%
+% Now we end the key definitions.
 %    \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.
+%
+%  We process all options. 
+% \begin{macro}{ ProcessKeyOptions }
 %    \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}
-      }
-  }
+\ProcessKeysOptions { tikzsymbols }
 %    \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{macro}{ symbol-scale }
 %    \begin{macrocode}
-\cs_new:Npn \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT #1#2
+\keys_define:nn { tikzsymbols }
   {
-    \@@_if_savebox_undefined:nT {#1} {#2}
-    \@@_use_savebox:n {#1}
+    symbol-scale .code:n = 
+      { \keyval_parse:NNn \@@_symbol_scale_i:n \@@_symbol_scale_ii:nn {#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}
@@ -1753,7 +1943,7 @@
 % 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 }
+% \begin{macro}{ \@@_if_empty:Tn , \@@_scale_if_empty:nTn }
 %   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:
@@ -1770,6 +1960,18 @@
       { \tl_set:Nn \ProcessedArgument {#1} }
       { \tl_set:Nn \ProcessedArgument {#2} }
   }
+\cs_new:Npn \@@_scale_if_empty:nTn #1#2#3
+  {
+    \tl_set:Nx \ProcessedArgument
+      {
+        \fp_eval:n
+          {
+            \tl_if_empty:nTF {#3} {#2} {#3}
+            * \l_@@_global_scale_fp 
+            * \use:c { l_@@_#1_scale_fp }
+          }
+      }
+  }
 %    \end{macrocode}
 % \end{macro}
 %
@@ -1779,10 +1981,11 @@
 %   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
+\cs_new_protected:Npn \@@_parse_command_options:nn #1#2
   {
     \clist_clear:N \l_tmpa_clist
-    \@@_parse_command_options:N #1
+    \tl_set:Nn \l_tmpa_tl {#1}
+    \@@_parse_command_options:N #2
       \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop
   }
 %    \end{macrocode}
@@ -1798,7 +2001,11 @@
     \quark_if_recursion_tail_stop:N #1
     \tl_if_eq:NNTF #1 O
       { \@@_parse_option_type_O:w #1 }
-      { \@@_parse_option_type:w #1  }
+      { 
+        \tl_if_eq:NNTF #1 S
+          { \@@_parse_option_type_S:Vw \l_tmpa_tl #1 }
+          { \@@_parse_option_type:w #1 }
+      }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -1808,6 +2015,11 @@
 %    \begin{macrocode}
 \cs_new_protected:Npn \@@_parse_option_type:w #1
   {
+    \str_case:nnF {#1}
+      {
+        { m } { }
+      }
+      { \msg_error:nnn { tikzsymbols } { internal-message } { internal-parsing } }
     \clist_put_right:Nn \l_tmpa_clist {#1}
     \@@_parse_command_options:N
   }
@@ -1826,6 +2038,18 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{ \@@_parse_option_type_S:w }
+%   The |S|  stands for \enquote{Scale}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_parse_option_type_S:nw #1#2
+  {
+    \clist_put_right:Nn \l_tmpa_clist { >{ \@@_scale_if_empty:nTn {#1} { 1 } } O{ 1 }  }
+    \@@_parse_command_options:N
+  }
+\cs_generate_variant:Nn \@@_parse_option_type_S:nw { Vw }
+%    \end{macrocode}
+% \end{macro}
+%
 %
 % \begin{macro}{ \@@_Declare_Document_Command:nnn }
 %   Main Command to define the command of this package. It runs
@@ -1836,9 +2060,9 @@
 %    \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}
+    \fp_new:c { l_@@_#1_scale_fp }
+    \fp_set:cn { l_@@_#1_scale_fp } { 1.0 }
+    \@@_parse_command_options:nn {#1} {#2}
     \exp_args:Ncx \DeclareDocumentCommand 
       { \g_@@_command_prefix_tl #1 } 
       { \clist_use:Nn \l_tmpa_clist {} } 
@@ -1859,14 +2083,13 @@
 %   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} \\
-    }
+      {
+        \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}
@@ -1888,38 +2111,12 @@
 %    \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}
 %
 %
 %
@@ -2085,9 +2282,9 @@
 %   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} }
+\@@_Declare_Document_Commands:nnnn { Kochtopf } { pot } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Kochtopf_#1 }
+    \@@_provide_savebox_and_use:nT { Kochtopf_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2115,13 +2312,13 @@
 %    \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);
+              \draw (0.45,0.1) circle [radius=0.04];
+              \draw (0.7,0.11) circle [radius=0.04];
+              \draw (0.13, 0.125) circle [radius=0.04];
+              \draw (0.3,0.2) circle [radius=0.04];
+              \draw (0.88,0.2) circle [radius=0.04];
+              \draw (0.1,0.25) circle [radius=0.04];
+              \draw (0.6,0.25) circle [radius=0.04];
             \end{tikzpicture}
           }
       }
@@ -2135,9 +2332,9 @@
 %   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} }
+\@@_Declare_Document_Commands:nnnn { Bratpfanne } { fryingpan } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Bratpfanne_#1 }
+    \@@_provide_savebox_and_use:nT { Bratpfanne_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2183,9 +2380,9 @@
 %
 % \begin{macro}{ \Schneebesen , \eggbeater }
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Schneebesen } { eggbeater } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Schneebesen } { eggbeater } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schneebesen_#1 }
+    \@@_provide_savebox_and_use:nT { Schneebesen_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2223,9 +2420,9 @@
 % 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} }
+\@@_Declare_Document_Commands:nnnn { Sieb } { sieve } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sieb_#1 }
+    \@@_provide_savebox_and_use:nT { Sieb_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2348,9 +2545,9 @@
 % \begin{macro}{ \Purierstab , \blender }
 %   Ein P\"urierstab \dots\ ja.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Purierstab } { blender } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Purierstab } { blender } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Purierstab_#1 }
+    \@@_provide_savebox_and_use:nT { Purierstab_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2382,9 +2579,9 @@
 % \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} }
+\@@_Declare_Document_Commands:nnnn { Dreizack } { trident } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Dreizack_#1 }
+    \@@_provide_savebox_and_use:nT { Dreizack_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2416,9 +2613,9 @@
 % \begin{macro}{ \Backblech , \bakingplate }
 %   With holes.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Backblech } { bakingplate } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Backblech } { bakingplate } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Backblech_#1 }
+    \@@_provide_savebox_and_use:nT { Backblech_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2438,7 +2635,7 @@
                    (\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);
+                  \fill[white] (\@@_BackblechlochX, \@@_BackblechlochY) circle [radius=0.02ex];
             \end{tikzpicture}%
           }
       }
@@ -2452,9 +2649,9 @@
 % \begin{macro}{ \Ofen , \oven }
 %   Ein Ofen. Sieht eigentlich so aus wie der zu Hause.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Ofen } { oven } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Ofen } { oven } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Ofen_#1 }
+    \@@_provide_savebox_and_use:nT { Ofen_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2471,7 +2668,7 @@
               \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);
+                \fill (\@@_Ofenschalter,2.5) circle [radius=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}%
@@ -2487,9 +2684,9 @@
 % \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} }
+\@@_Declare_Document_Commands:nnnn { Pfanne } { pan } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Pfanne_#1 }
+    \@@_provide_savebox_and_use:nT { Pfanne_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2531,9 +2728,9 @@
 %   Needed to cook things. Is pretty much looks exactly like the one
 %   at home.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Herd } { cooker } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Herd } { cooker } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Herd_#1 }
+    \@@_provide_savebox_and_use:nT { Herd_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2549,9 +2746,9 @@
               ]
               \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 (0.5,\y) circle [radius=\radius];
+              \draw (1.45,1.15) circle [radius=0.15];
+              \draw (1.45,0.45) circle [radius=0.3];
               \draw (1.05,0.95) rectangle (1.85,1.35);
             \end{tikzpicture}%
           }
@@ -2566,9 +2763,9 @@
 % \begin{macro}{ \Saftpresse , \squeezer }
 %   We have one of these, I still think its useful.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Saftpresse } { squeezer } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Saftpresse } { squeezer } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Saftpresse_#1 }
+    \@@_provide_savebox_and_use:nT { Saftpresse_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2611,9 +2808,9 @@
 %   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} }
+\@@_Declare_Document_Commands:nnnn { Schussel } { bowl } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schussel_#1 }
+    \@@_provide_savebox_and_use:nT { Schussel_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2644,9 +2841,9 @@
 % \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} }
+\@@_Declare_Document_Commands:nnnn { Schaler } { peeler } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Schaler_#1 }
+    \@@_provide_savebox_and_use:nT { Schaler_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2678,9 +2875,9 @@
 % \begin{macro}{ \Reibe , \grater }
 %   I get out of ideas to write.
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Reibe } { grater } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Reibe } { grater } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Reibe_#1 }
+    \@@_provide_savebox_and_use:nT { Reibe_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2698,7 +2895,7 @@
               \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);
+                  \fill (\x,\y) circle [radius=0.05ex];
             \end{tikzpicture}%
           }
       }
@@ -2712,9 +2909,9 @@
 % \begin{macro}{ \Flasche , \bottle }
 %   It's a bottle. Uhhhh\dots
 %    \begin{macrocode}
-\@@_Declare_Document_Commands:nnnn { Flasche } { bottle } { O{1} }
+\@@_Declare_Document_Commands:nnnn { Flasche } { bottle } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Flasche_#1 }
+    \@@_provide_savebox_and_use:nT { Flasche_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2750,9 +2947,9 @@
 %
 % 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} }
+\@@_Declare_Document_Commands:nnnn { Nudelholz } { rollingpin } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Nudelholz_#1 }
+    \@@_provide_savebox_and_use:nT { Nudelholz_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2771,7 +2968,8 @@
                 (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)
+              \draw[rounded ~ corners=0.15ex*\l_@@_scale_abs_tl] 
+                (-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];
@@ -2782,11 +2980,6 @@
 %    \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}
 %
 %
 %
@@ -2803,9 +2996,9 @@
 % \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} }
+\@@_Declare_Document_Command:nnn { Sadey } { S O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sadey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Sadey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2817,9 +3010,9 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2, line ~ width=0.1ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=0.33];
+              \fill (0.1,0.1) circle [radius=0.05];
+              \fill (-0.1,0.1) circle [radius=0.05];
               \draw (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
             \end{tikzpicture}
           }
@@ -2832,9 +3025,9 @@
 % \begin{macro}{ \dSadey }
 %   Coding the \enquote{3D} Sadey. Again, nothing special.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dSadey } { O{1} O{yellow} }
+\@@_Declare_Document_Command:nnn { dSadey } { S O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSadey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dSadey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -2846,9 +3039,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.2,-0.15) .. controls (-0.1,-0.06) and (0.1,-0.06) .. (0.2,-0.15);
             \end{tikzpicture}%
           }
@@ -2863,9 +3056,9 @@
 % \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 }
+\@@_Declare_Document_Command:nnn { Changey } { S O{white} m }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Changey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Changey_#1_#2_#3 }
       {
         \fp_compare:nT { abs(#3) > 2 } 
           { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3}  }
@@ -2879,9 +3072,9 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=0.33];
+              \fill (-0.1,0.1) circle [radius=0.05];
+              \fill (0.1,0.1) circle [radius=0.05];
               \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#3  }
               \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#3 }
               \draw 
@@ -2900,9 +3093,9 @@
 % \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 }
+\@@_Declare_Document_Command:nnn { dChangey } { S O{yellow} m }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dChangey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { dChangey_#1_#2_#3 }
       {
         \fp_compare:nT { abs(#3) > 2 } 
           { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3}  }
@@ -2916,9 +3109,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
               \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#3  }
               \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#3 }
               \draw[black]
@@ -2936,7 +3129,7 @@
 %
 %
 %\begin{macro}{ \cChangey }
-% \changes{v4.02}{2016/2017/05/14}{New.}
+% \changes{v4.02}{2017/05/14}{New.}
 % Why didn't I implement this earlier?
 %    \begin{macrocode}
 \cs_new:Npn \@@_cChangey:nnn #1 #2#3
@@ -2949,9 +3142,9 @@
     \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 }
+\@@_Declare_Document_Command:nnn { cChangey } { S O{red} O{yellow} O{green} m }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
+    \@@_provide_savebox_and_use:nT 
       { cChangey_#1_#2_#3_#4_#5 }
       {
         \fp_compare:nT { abs(#5) > 2 } 
@@ -2969,19 +3162,19 @@
               \fp_compare:nNnT {#5} < { \c_zero }
                 {
                   \@@_cChangey:nnn {#5} {#2} {#3}
-                  (0,0) circle (0.33);
+                  (0,0) circle [radius=0.33];
                 }
               \fp_compare:nNnT {#5} > { \c_zero }
                 {
                   \@@_cChangey:nnn {#5} {#4} {#3} 
-                  (0,0) circle (0.33);
+                  (0,0) circle [radius=0.33];
                 }
               \fp_compare:nNnT {#5} = { \c_zero }
                 {
-                  \filldraw [fill=#3] (0,0) circle (0.33);
+                  \filldraw [fill=#3] (0,0) circle [radius=0.33];
                 }
-              \fill (-0.1,0.1) circle (0.05);
-              \fill (0.1,0.1) circle (0.05);
+              \fill (-0.1,0.1) circle [radius=0.05];
+              \fill (0.1,0.1) circle [radius=0.05];
               \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#5  }
               \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 }
               \draw 
@@ -2997,7 +3190,7 @@
 %\end{macro}
 %
 %\begin{macro}{ \dcChangey }
-% \changes{v4.02}{2016/2017/05/14}{New.}
+% \changes{v4.02}{2017/05/14}{New.}
 % Same as above
 %    \begin{macrocode}
 \cs_new:Npn \@@_dcChangey:nnn #1 #2#3
@@ -3010,9 +3203,9 @@
     \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 }
+\@@_Declare_Document_Command:nnn { dcChangey } { S O{red} O{yellow} O{green} m }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
+    \@@_provide_savebox_and_use:nT 
       { dcChangey_#1_#2_#3_#4_#5 }
       {
         \fp_compare:nT { abs(#5) > 2 } 
@@ -3030,19 +3223,19 @@
               \fp_compare:nNnT {#5} < { \c_zero }
                 {
                   \@@_dcChangey:nnn {#5} {#2} {#3}
-                  (0,0) circle (0.33);
+                  (0,0) circle [radius=0.33];
                 }
               \fp_compare:nNnT {#5} > { \c_zero }
                 {
                   \@@_dcChangey:nnn {#5} {#4} {#3} 
-                  (0,0) circle (0.33);
+                  (0,0) circle [radius=0.33];
                 }
               \fp_compare:nNnT {#5} = { \c_zero }
                 {
-                  \shade[ball ~ color=#3] (0,0) circle (0.33);
+                  \shade[ball ~ color=#3] (0,0) circle [radius=0.33];
                 }
-              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
-              \shade[ball ~ color=black] (0.1,0.1) circle (0.05);
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
               \pgfmathsetmacro \l_tmpa_tl { -0.125 + 0.025*#5  }
               \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 }
               \draw[black]
@@ -3064,9 +3257,9 @@
 %\begin{macro}{ \Annoey }
 % An annoyed Smiley. It's annoyed.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Annoey } { O{1} O{none} }
+\@@_Declare_Document_Command:nnn { Annoey } { S O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Annoey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Annoey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3078,7 +3271,7 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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);
@@ -3094,9 +3287,9 @@
 %\begin{macro}{ \dAnnoey }
 % It's annoyed about 3D.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dAnnoey } { O{1} O{yellow} }
+\@@_Declare_Document_Command:nnn { dAnnoey } { S O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dAnnoey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dAnnoey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3108,7 +3301,7 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=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);
@@ -3130,9 +3323,9 @@
 %    \begin{macrocode}
 \bool_if:NF \g_@@_if_opt_marvosym_bool
   {
-    \@@_Declare_Document_Command:nnn { Smiley } { O{1} O{none} }
+    \@@_Declare_Document_Command:nnn { Smiley } { S O{none} }
       {
-        \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Smiley_#1_#2 }
+        \@@_provide_savebox_and_use:nT { Smiley_#1_#2 }
           {
             \@@_set_scale_abs_tl:n {#1}
             \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3144,9 +3337,9 @@
                     /@@ ,
                     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=#2] (0,0) circle [radius=0.33];
+                  \fill (-0.1,0.1) circle [radius=0.05];
+                  \fill (0.1,0.1) circle [radius=0.05];
                   \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
                 \end{tikzpicture}%
               }
@@ -3160,9 +3353,9 @@
 %\begin{macro}{ \dSmiley }
 % Again in \enquote{3D}. 
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dSmiley } { O{1} O{yellow} }
+\@@_Declare_Document_Command:nnn { dSmiley } { S O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSmiley_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dSmiley_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3174,9 +3367,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1);
             \end{tikzpicture}%
           }
@@ -3193,9 +3386,9 @@
 % \begin{macro}{ \Laughey }
 % It's laughing.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Laughey } { O{1} O{none} O{none} }
+\@@_Declare_Document_Command:nnn { Laughey } { S O{none} O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Laughey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Laughey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3207,7 +3400,7 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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] 
@@ -3224,9 +3417,9 @@
 %\begin{macro}{ \dLaughey }
 % Also in \emph{3D}!
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dLaughey } { O{1} O{yellow} O{red} }
+\@@_Declare_Document_Command:nnn { dLaughey } { S O{yellow} O{red} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dLaughey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { dLaughey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3239,7 +3432,7 @@
                 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);
+              \fill[ball ~ color=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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
@@ -3262,9 +3455,9 @@
 %
 %\begin{macro}{ \Neutrey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Neutrey } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { Neutrey } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Neutrey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Neutrey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3276,9 +3469,9 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=0.33];
+              \fill (0.1,0.1) circle [radius=0.05];
+              \fill (-0.1,0.1) circle [radius=0.05];
               \draw (-0.2,-0.1) -- (0.2,-0.1);
             \end{tikzpicture}%
           }
@@ -3290,9 +3483,9 @@
 %
 %\begin{macro}{ \dNeutrey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dNeutrey } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dNeutrey } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Neutrey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Neutrey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3304,9 +3497,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.2,-0.1) -- (0.2,-0.1);
             \end{tikzpicture}%
           }
@@ -3322,9 +3515,9 @@
 %
 %\begin{macro}{ \Winkey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Winkey } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { Winkey } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Winkey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Winkey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3336,9 +3529,9 @@
                 /@@ ,
                 x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
               ]
-              \filldraw[fill=#2] (0,0) circle (0.33);
+              \filldraw[fill=#2] (0,0) circle [radius=0.33];
               \draw(0.17,0.1) -- (0.05,0.1);
-              \fill (-0.1,0.1) circle (0.05);
+              \fill (-0.1,0.1) circle [radius=0.05];
               \draw (-0.15,-0.15) .. controls (-0.05,-0.2) and (0.15,-0.2) .. (0.19,0);
             \end{tikzpicture}%
           }
@@ -3350,9 +3543,9 @@
 %
 %\begin{macro}{ \oldWinkey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { oldWinkey } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { oldWinkey } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { oldWinkey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { oldWinkey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3364,9 +3557,9 @@
                 /@@ ,
                 x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
               ]
-              \filldraw[fill=#2] (0,0) circle (0.33);
+              \filldraw[fill=#2] (0,0) circle [radius=0.33];
               \draw(0.17,0.1) -- (0.05,0.1);
-              \fill (-0.1,0.1) circle (0.05);
+              \fill (-0.1,0.1) circle [radius=0.05];
               \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.15,-0.2) .. (0.2,0);
             \end{tikzpicture}%
           }
@@ -3378,9 +3571,9 @@
 %
 %\begin{macro}{ \dWinkey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dWinkey } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dWinkey } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dWinkey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dWinkey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3392,9 +3585,9 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=0.33];
               \draw[black] (0.17,0.1) -- (0.05,0.1);
-              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.15,-0.15) .. controls (-0.05,-0.2) and (0.15,-0.2) .. (0.19,0);
             \end{tikzpicture}%
           }
@@ -3405,9 +3598,9 @@
 %
 %\begin{macro}{ \olddWinkey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { olddWinkey } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { olddWinkey } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { olddWinkey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { olddWinkey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3419,9 +3612,9 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=0.33];
               \draw[black] (0.17,0.1) -- (0.05,0.1);
-              \shade[ball ~ color=black] (-0.1,0.1) circle (0.05);
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.15,-0.2) .. (0.2,0);
             \end{tikzpicture}
           }
@@ -3437,9 +3630,9 @@
 %
 %\begin{macro}{ \Sey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Sey } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { Sey } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Sey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Sey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3451,9 +3644,9 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=0.33];
+              \fill (0.1,0.1) circle [radius=0.05];
+              \fill (-0.1,0.1) circle [radius=0.05];
               \draw (-0.2,-0.08) .. controls (-0.0,-0.2) and (0.0,0) .. (0.2,-0.12);
             \end{tikzpicture}%
           }
@@ -3466,9 +3659,9 @@
 %
 %\begin{macro}{ \dSey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dSey } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dSey } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dSey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dSey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3480,9 +3673,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
               \draw[black] (-0.2,-0.08) .. controls (-0.0,-0.2) and (0.0,0) .. (0.2,-0.12);
             \end{tikzpicture}%
           }
@@ -3498,9 +3691,9 @@
 %
 %\begin{macro}{ \Xey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Xey } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { Xey } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Xey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Xey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3512,7 +3705,7 @@
                 /@@ ,
                 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);
+              \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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);
@@ -3526,9 +3719,9 @@
 %
 %\begin{macro}{ \dXey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dXey } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dXey } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dXey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dXey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3542,7 +3735,7 @@
                 black
               ]
               \fill[ball ~ color=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] 
-                (0,0) circle (0.33);
+                (0,0) circle [radius=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);
@@ -3560,9 +3753,9 @@
 %
 %\begin{macro}{ \Innocey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Innocey } { O{1} O{none} O{yellow} }
+\@@_Declare_Document_Command:nnn { Innocey } { S O{none} O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Innocey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Innocey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3576,9 +3769,9 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=0.33];
+              \fill (-0.1,0.1) circle [radius=0.05];
+              \fill (0.1,0.1) circle [radius=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
@@ -3605,7 +3798,7 @@
 %  because otherwise the input of \Option{after-symbol}
 %  is inserted twice.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { wInnocey } { O{1} }
+\@@_Declare_Document_Command:nnn { wInnocey } { S }
   { 
     \group_begin:
     \tl_clear:N \l_@@_tikzsymbols_after_symbol_tl
@@ -3618,9 +3811,9 @@
 %
 %\begin{macro}{ \dInnocey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dInnocey } { O{1} O{yellow} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dInnocey } { S O{yellow} O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dInnocey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { dInnocey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3635,9 +3828,9 @@
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=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).
@@ -3663,9 +3856,9 @@
 %\begin{macro}{ \Cooley }
 %  It's the coolest Smiley around.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Cooley } { O{1} O{none}  }
+\@@_Declare_Document_Command:nnn { Cooley } { S O{none}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Cooley_#1_#2 }
+    \@@_provide_savebox_and_use:nT { Cooley_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3677,7 +3870,7 @@
                 /@@ ,
                 x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1
               ]
-              \filldraw[fill=#2] (0,0) circle (0.33);
+              \filldraw[fill=#2] (0,0) circle [radius=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;
@@ -3695,9 +3888,9 @@
 %
 %\begin{macro}{ \dCooley }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dCooley } { O{1} O{yellow}  }
+\@@_Declare_Document_Command:nnn { dCooley } { S O{yellow}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dCooley_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dCooley_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3709,7 +3902,7 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=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);
@@ -3733,9 +3926,9 @@
 % 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} }
+\@@_Declare_Document_Command:nnn { Tongey } { S O{none} O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Tongey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Tongey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3747,9 +3940,9 @@
                 /@@ ,
                 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=#2] (0,0) circle [radius=0.33];
+              \fill (-0.1,0.1) circle [radius=0.05];
+              \fill (0.1,0.1) circle [radius=0.05];
               \filldraw
                 [
                   fill=#3, line ~ width=0.058ex* \l_@@_scale_abs_tl , 
@@ -3768,9 +3961,9 @@
 %
 %\begin{macro}{ \dTongey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dTongey } { O{1} O{yellow} O{red} }
+\@@_Declare_Document_Command:nnn { dTongey } { S O{yellow} O{red} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dTongey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { dTongey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3782,9 +3975,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.33];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=0.05];
               \shadedraw
                 [
                   ball ~ color=#3, draw=black,line ~ width=0.058ex* \l_@@_scale_abs_tl , 
@@ -3807,9 +4000,9 @@
 %
 %\begin{macro}{ \Nursey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Nursey } { O{1} O{none} O{none} O{} }
+\@@_Declare_Document_Command:nnn { Nursey } { S O{none} O{none} O{} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Nursey_#1_#2_#3_#4 }
+    \@@_provide_savebox_and_use:nT { Nursey_#1_#2_#3_#4 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3825,9 +4018,9 @@
               ]
               \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);
+              \filldraw[fill=#2] (0,0) circle [radius=0.3];
+              \fill (-0.1,0.1) circle [radius=0.05];
+              \fill (0.1,0.1) circle [radius=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 ] 
@@ -3844,9 +4037,9 @@
 %
 %\begin{macro}{ \dNursey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dNursey } { O{1} O{yellow} O{white} O{red} }
+\@@_Declare_Document_Command:nnn { dNursey } { S O{yellow} O{white} O{red} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dNursey_#1_#2_#3_#4 }
+    \@@_provide_savebox_and_use:nT { dNursey_#1_#2_#3_#4 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3860,9 +4053,9 @@
                 /@@ ,
                 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);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.3];
+              \shade[ball ~ color=black] (-0.1,0.1) circle [radius=0.05];
+              \shade[ball ~ color=black] (0.1,0.1) circle [radius=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
@@ -3890,9 +4083,9 @@
 %
 %\begin{macro}{ \Vomey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Vomey } { O{1} O{none} O{opacity=0} }
+\@@_Declare_Document_Command:nnn { Vomey } { S O{none} O{opacity=0} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Vomey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Vomey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3934,9 +4127,9 @@
 %
 %\begin{macro}{ \dVomey }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dVomey } { O{1} O{yellow} O{brown!10!olive}  }
+\@@_Declare_Document_Command:nnn { dVomey } { S O{yellow} O{brown!10!olive}  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dVomey_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { dVomey_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -3983,9 +4176,9 @@
 %
 %\begin{macro}{ \Walley }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Walley } { O{1} O{none} O{none} }
+\@@_Declare_Document_Command:nnn { Walley } { S O{none} O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Walley_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { Walley_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4005,7 +4198,7 @@
                     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=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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) --+
@@ -4030,9 +4223,9 @@
 %
 %\begin{macro}{ \rWalley }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { rWalley } { O{1} O{none} O{none} }
+\@@_Declare_Document_Command:nnn { rWalley } { S O{none} O{none} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { rWalley_#1_#2_#3 }
+    \@@_provide_savebox_and_use:nT { rWalley_#1_#2_#3 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4051,7 +4244,7 @@
                     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=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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 ] 
@@ -4068,9 +4261,9 @@
 %
 %\begin{macro}{ \dWalley }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dWalley } { O{1} O{yellow} }
+\@@_Declare_Document_Command:nnn { dWalley } { S O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dWalley_#1_#2 }
+    \@@_provide_savebox_and_use:nT { dWalley_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4097,7 +4290,7 @@
                 (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);
+              \shade[ball ~ color=#2] (-0.01,0) circle [radius=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);
@@ -4110,9 +4303,9 @@
 %
 %\begin{macro}{ \drWalley }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { drWalley } { O{1} O{yellow} }
+\@@_Declare_Document_Command:nnn { drWalley } { S O{yellow} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { drWalley_#1_#2 }
+    \@@_provide_savebox_and_use:nT { drWalley_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4135,7 +4328,7 @@
               \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);
+              \shade[ball ~ color=#2] (-0.01,0) circle [radius=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);
@@ -4147,16 +4340,131 @@
 %\end{macro}
 %
 %
+% \begin{macro}{ \@@_Cat:n, \@@_Cat_unknown:n, \@@_Cat_dead:n }
+%    \begin{macrocode}
+\cs_new:Npn \@@_Cat:n #1 
+  {
+    \draw (0,0) circle [radius=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 [radius=0.05];
+    \fill (0.15,.15) circle [radius=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);           
+          }
+  }
+\cs_new:Npn \@@_Cat_unknown:n #1 
+  {
+    \draw (0,0) circle [radius=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,-0.18)  circle [radius=0.04];
+    \draw
+      (0,0.06) arc[start ~angle=-90, end ~angle=180, radius=0.075]
+      (0,0.06) arc[start ~angle=90, end ~angle=360, radius=0.075];
+    \foreach \case in { 1,-1 }
+      \foreach \yi/\yii/\yiii in 
+        { 
+          -0.01/-0.05/-0.08 , 
+          -0.02/-0.12/-0.16 , 
+          -0.055/-0.15/-0.25 
+        }{
+          \draw[line ~ width=0.035ex* \l_@@_scale_abs_tl ]
+            ({0.1*\case},-0.05)..controls({\case*0.25},\yi)
+            and({0.35*\case},\yii).. ({0.4*\case},\yiii);           
+        }
+  }
+\cs_new:Npn \@@_Cat_dead:n #1 
+  {
+    \draw (0,0) circle [radius=0.3];
+    \foreach \case in { 1,-1 }
+      {
+        \draw[rounded ~ corners=0.163ex* \l_@@_scale_abs_tl ] 
+          ({\case*0.3},0) -- ({\case*0.35},0.5) -- (0,0.3);
+      }
+    \draw
+      \foreach \angle in { 45,135,225,315 }
+        {
+          (0.13,0.13) -- ({0.13+0.07*cos(\angle)},{0.13+0.07*sin(\angle)})
+          (-0.13,0.13) -- ({-0.13+0.07*cos(\angle)},{0.13+0.07*sin(\angle)})
+        }
+      ;
+    \foreach \case in { 1,-1 }
+      \draw[rounded ~ corners=0.175ex* \l_@@_scale_abs_tl ,yshift=-0.12ex] 
+        (0,0) -- (0,-0.08)   -- ({0.09*\case},-0.12);
+    \draw[rounded ~ corners=.12ex* \l_@@_scale_abs_tl ,yshift=-.15ex,
+      line ~ width=0.03em*0.9* \l_@@_scale_abs_tl ] 
+      (0,0) -- (0.1,0.07)  -- (0,0.1)-- (-0.1,0.07) -- cycle ;
+    \foreach \case in {-1,1}
+      \foreach \yi/\yii/\yiii in 
+        { 
+          -0.04/-0.09/-0.15 , 
+          -0.05/-0.18/-0.23,
+          -0.085/-0.22/-0.31
+        }{
+          \draw[line ~ width=0.035ex* \l_@@_scale_abs_tl ]
+            ({0.1*\case},-0.05) 
+            .. controls ({0.18*\case},\yi) and ({0.28*\case},\yii) .. 
+            ({0.33*\case},\yiii);           
+        }
+    \draw [transparent,line ~ width=0.035ex*\l_@@_scale_abs_tl] (-0.4,0) -- (0.4,0);
+  }
+%    \end{macrocode}
+% \end{macro}
 %
+%\begin{macro}{ \Cat }
+% It is a Ket! (sic!)
+%    \begin{macrocode}
+\@@_Declare_Document_Command:nnn { Cat } { S }
+  {
+    \@@_provide_savebox_and_use: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
+              ]
+              \@@_Cat:n {#1}
+            \end{tikzpicture}%
+          }
+      }
+  }
+%    \end{macrocode}
+%\end{macro}
 %
 %
 %
-%\begin{macro}{ \Cat }
+%\begin{macro}{ \SchrodingersCat }
 % It is a Ket! (sic!)
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Cat } { O{1} }
+\@@_Declare_Document_Command:nnn { SchrodingersCat } { S m }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Cat_#1 }
+    \@@_provide_savebox_and_use:nT { SchrodingersCat_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4170,28 +4478,13 @@
                 /@@ ,
                 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 }
+              \int_case:nnF {#2}
                 {
-                  \draw[rounded ~ corners=0.163ex* \l_@@_scale_abs_tl ] 
-                    (-\xi,0) -- (-\xii,0.5) -- (0,\xi)  (0,\xi) -- (\xii,0.5) -- (\xi,0);
+                  { 1 } { \@@_Cat:n {#1} }
+                  { 0 } { \@@_Cat_unknown:n {#1} }
+                  { -1 } { \@@_Cat_dead:n {#1} }
                 }
-              \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);           
-                  }
+                { \msg_error:nnn { tikzsymbols } { SchrodingersCat } {#2} }
             \end{tikzpicture}%
           }
       }
@@ -4203,13 +4496,12 @@
 %
 %
 %
-%
 % \begin{macro}{ \Ninja }
 % It can hide.
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Ninja } { O{1} O{black} O{red} O{white} }
+\@@_Declare_Document_Command:nnn { Ninja } { S O{black} O{red} O{white} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Ninja_#1_#2_#3_#4 }
+    \@@_provide_savebox_and_use:nT { Ninja_#1_#2_#3_#4 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4229,13 +4521,13 @@
                   }
               ]
               \tl_set:Nn \l_tmpa_tl {#2}
-              \fill[#2] (0,0) circle (0.33);
+              \fill[#2] (0,0) circle [radius=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);
+                  \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=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]  -- 
@@ -4256,7 +4548,7 @@
                 (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);
+                  \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=0.33];
                 }
             \end{tikzpicture}%
           }
@@ -4266,11 +4558,11 @@
 %\end{macro}
 %
 %
-%\begin{macro}{ \Ninja }
+%\begin{macro}{ \dNinja }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { dNinja } { O{1} O{black} O{red} O{white} }
+\@@_Declare_Document_Command:nnn { dNinja } { S O{black} O{red} O{white} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { dNinja_#1_#2_#3_#4 }
+    \@@_provide_savebox_and_use:nT { dNinja_#1_#2_#3_#4 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4299,7 +4591,7 @@
                       } , decorate, #3!50!black
                   ] 
                   \coord -- (0.26,0.21);
-              \shade[ball ~ color=#2] (0,0) circle (0.347);
+              \shade[ball ~ color=#2] (0,0) circle [radius=0.347];
               \fill
                 [
                   decoration=
@@ -4329,14 +4621,136 @@
 %
 %
 %
+% \begin{macro}{ \Sleepey }
+% It is sleeping.
+%    \begin{macrocode}
+\@@_Declare_Document_Command:nnn { Sleepey } { S O{none} O{none} O{black} }
+  {
+    \@@_provide_savebox_and_use:nT { Sleepey_#1_#2_#3_#4 }
+      {
+        \@@_set_scale_abs_tl:n {#1}
+        \bool_if:NTF \g_@@_if_opt_draft_bool
+          {
+            \@@_create_draftbox:nn 
+              { 2.084866ex * \l_@@_scale_abs_tl } 
+              { 1.5912ex * \l_@@_scale_abs_tl } 
+          }{
+            \begin{tikzpicture}
+              [
+                /@@ ,
+                x=2.04ex, y=2.04ex, line ~ width=0.102ex* \l_@@_scale_abs_tl ,
+                scale=#1
+              ]
+%              %% Hat
+              \filldraw [fill=#3]
+                (-0.33,0) arc[start~angle=180,end~angle=0,x~radius=0.45,y~radius=0.4] 
+                -- ++(0,-0.2) 
+                arc[start~angle=0,end~angle=130,x~radius=0.15,y~radius=0.24];
+%              %% face
+              \filldraw [fill=#2,rounded ~ corners=0.001ex * \l_@@_scale_abs_tl]
+                (0.33,0)  arc[start~angle=0, end~angle=-180, radius=0.33] -- cycle ;
+%              %% Pommel
+              \fill (0.55,-0.15) circle [radius=0.06];
+              \foreach \l_@@_angle_tl in {0,30,60,...,360}
+                {
+                  \draw ({0.55+0.06*cos(\l_@@_angle_tl)*1.2},
+                    {-0.15+0.06*sin(\l_@@_angle_tl)*1.2}) 
+                    circle[radius=0.02];
+                }
+%              %% Stars
+              \foreach \l_tmpa_tl/\l_tmpb_tl in { -0.14/0.12 , 0.19/0.12 , 0.05/0.26 , 0.40/0.16 }
+                {
+                  \draw [line~width=0.04ex*\l_@@_scale_abs_tl ,#4]
+                  \foreach \l_@@_angle_tl in { 0,45,90,...,360 }
+                    {
+                      (\l_tmpa_tl,\l_tmpb_tl) -- ({\l_tmpa_tl+0.07*cos(\l_@@_angle_tl)},
+                      {\l_tmpb_tl+0.07*sin(\l_@@_angle_tl)})
+                    }
+                  ;
+                }
+%              %% Mouth
+              \fill (0,-0.225) circle [radius=0.04];
+%              %% Eyes
+              \draw (-0.1,-0.09)  arc[start~angle=0, end~angle=-180,
+                x~radius=0.06,y~radius=0.08] ;
+              \draw (0.1,-0.09)  arc[start~angle=180, 
+                end~angle=360,x~radius=0.06,y~radius=0.08] ;
+            \end{tikzpicture}%
+          }
+      }
+  }
+%    \end{macrocode}
+%\end{macro}
+%
+% \begin{macro}{ \dSleepey }
+% It is sleeping.
+%    \begin{macrocode}
+\@@_Declare_Document_Command:nnn { dSleepey } { S O{yellow} O{blue} O{black} }
+  {
+    \@@_provide_savebox_and_use:nT { dSleepey_#1_#2_#3_#4 }
+      {
+        \@@_set_scale_abs_tl:n {#1}
+        \bool_if:NTF \g_@@_if_opt_draft_bool
+          {
+            \@@_create_draftbox:nn 
+              { 2.033865ex * \l_@@_scale_abs_tl } 
+              { 1.489181ex * \l_@@_scale_abs_tl } 
+          }{
+            \begin{tikzpicture}
+              [
+                /@@ ,
+                x=2.04ex, y=2.04ex, line ~ width=0.102ex* \l_@@_scale_abs_tl ,
+                scale=#1
+              ]
+%              %% Hat
+              \shade [ball ~ color=#3]
+                (-0.33,0) arc[start~angle=180,end~angle=0,x~radius=0.45,y~radius=0.4] 
+                -- ++(0,-0.2) 
+                arc[start~angle=0,end~angle=130,x~radius=0.15,y~radius=0.24];
+%              %% face
+              \shade [ball ~ color=#2,rounded ~ corners=0.001ex * \l_@@_scale_abs_tl]
+                (0.33,0)  arc[start~angle=0, end~angle=-180, radius=0.33] -- cycle ;
+%              %% Pommel
+              \fill (0.55,-0.15) circle [radius=0.06];
+              \foreach \l_@@_angle_tl in {0,30,60,...,360}
+                {
+                  \draw ({0.55+0.06*cos(\l_@@_angle_tl)*1.2},
+                    {-0.15+0.06*sin(\l_@@_angle_tl)*1.2}) 
+                    circle[radius=0.02];
+                }
+%              %% Stars
+              \foreach \l_tmpa_tl/\l_tmpb_tl in { -0.14/0.12 , 0.19/0.12 , 0.05/0.26 , 0.40/0.16 }
+                {
+                  \draw [line~width=0.04ex* \l_@@_scale_abs_tl,#4]
+                  \foreach \l_@@_angle_tl in { 0,45,90,...,360 }
+                    {
+                      (\l_tmpa_tl,\l_tmpb_tl) -- ({\l_tmpa_tl+0.07*cos(\l_@@_angle_tl)},
+                      {\l_tmpb_tl+0.07*sin(\l_@@_angle_tl)})
+                    }
+                  ;
+                }
+%              %% Mouth
+              \fill (0,-0.225) circle [radius=0.04];
+%              %% Eyes
+              \draw (-0.1,-0.09)  arc[start~angle=0, end~angle=-180,
+                x~radius=0.06,y~radius=0.08] ;
+              \draw (0.1,-0.09)  arc[start~angle=180, 
+                end~angle=360,x~radius=0.06,y~radius=0.08] ;
+            \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} }
+\@@_Declare_Document_Command:nnn { NiceReapey } { S O{black!20!white} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { NiceReapey_#1_#2 }
+    \@@_provide_savebox_and_use:nT { NiceReapey_#1_#2 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4356,13 +4770,14 @@
                  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);
+              \draw (0,-1.5) circle [ x~radius=1 , y~radius= 0.5];
+              \draw (0,-1.5) circle [ x~radius=1 , y~radius= 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);
+              \fill (1.25,1.25) circle [ x~radius=0.5 , y~radius= 0.75];
+              \fill (-1.25,1.25) circle [ x~radius=0.5 , y~radius= 0.75];
             \end{tikzpicture}%
           }
       }
@@ -4370,10 +4785,6 @@
 %    \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)}
@@ -4421,9 +4832,9 @@
 %\begin{macro}{ \Strichmaxerl }
 %    \begin{macrocode}
 \@@_Declare_Document_Command:nnn { Strichmaxerl } 
-  { O{1} O{-22} O{22} O{27} O{-27} }
+  { S O{-22} O{22} O{27} O{-27} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
+    \@@_provide_savebox_and_use:nT 
       { Strichmaxerl_#1_#2_#3_#4_#5 }
       {
         \@@_set_scale_abs_tl:n {#1}
@@ -4552,7 +4963,7 @@
               \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);
+              \draw (.15,.8) circle [radius=0.18];
             \end{tikzpicture}%
 %              }
           }
@@ -4565,7 +4976,7 @@
 %
 %\begin{macro}{ \Person }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Person } { O{1} O{-22} O{22} O{27} O{-27} }
+\@@_Declare_Document_Command:nnn { Person } { S O{-22} O{22} O{27} O{-27} }
   {
     \msg_error:nnnn 
       { tikzsymbols } 
@@ -4584,9 +4995,9 @@
 %
 %\begin{macro}{ \Candle }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Candle } { O{1} }
+\@@_Declare_Document_Command:nnn { Candle } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Candle_#1 }
+    \@@_provide_savebox_and_use:nT { Candle_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4620,9 +5031,9 @@
 %
 %\begin{macro}{ \Fire }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Fire } { O{1} }
+\@@_Declare_Document_Command:nnn { Fire } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Fire_#1 }
+    \@@_provide_savebox_and_use:nT { Fire_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4677,9 +5088,9 @@
 %    \begin{macrocode}
 \bool_if:NF \g_@@_if_opt_marvosym_bool
 {
-\@@_Declare_Document_Command:nnn { Coffeecup } { O{1} }
+\@@_Declare_Document_Command:nnn { Coffeecup } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Coffeecup_#1 }
+    \@@_provide_savebox_and_use:nT { Coffeecup_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4720,9 +5131,9 @@
 %
 %\begin{macro}{ \Chair }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Chair } { O{1} }
+\@@_Declare_Document_Command:nnn { Chair } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Chair_#1 }
+    \@@_provide_savebox_and_use:nT { Chair_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4759,9 +5170,9 @@
 %
 %\begin{macro}{ \Bed }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Bed } { O{1} }
+\@@_Declare_Document_Command:nnn { Bed } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Bed_#1 }
+    \@@_provide_savebox_and_use:nT { Bed_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4796,9 +5207,9 @@
 %\begin{macro}{ \Tribar }
 %    \begin{macrocode}
 \@@_Declare_Document_Command:nnn { Tribar } 
-  { O{1} O{opacity=0} O{opacity=0} O{opacity=0} }
+  { S O{opacity=0} O{opacity=0} O{opacity=0} }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Tribar_#1_#2_#3_#4 }
+    \@@_provide_savebox_and_use:nT { Tribar_#1_#2_#3_#4 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4840,9 +5251,9 @@
 %
 %\begin{macro}{ \Moai }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Moai } { O{1} }
+\@@_Declare_Document_Command:nnn { Moai } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Moai_#1 }
+    \@@_provide_savebox_and_use:nT { Moai_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \fp_compare:nTF { abs (#1) < 2 }
@@ -4901,9 +5312,9 @@
 % \begin{macro}{ \Snowman }
 % 
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Snowman } { O{1} }
+\@@_Declare_Document_Command:nnn { Snowman } { S }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { Snowman_#1 }
+    \@@_provide_savebox_and_use:nT { Snowman_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -4935,13 +5346,13 @@
                 ]
                 (-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);
+                \fill (0,\y) circle [radius=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);
+                \fill (0,\y) circle [radius=0.05];
+              \fill (-0.06,1.18) circle [radius=0.045];
+              \fill (0.06,1.18) circle [radius=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) ;
+                \fill (\x,\y) circle [radius=0.015]  (-\x,\y) circle [radius=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);
@@ -4957,10 +5368,6 @@
 %\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
@@ -4976,7 +5383,7 @@
 %    \begin{macrocode}
 \cs_new:Npn \@@_Basic_Tree:nnnnn #1#2#3#4#5
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT 
+    \@@_provide_savebox_and_use:nT 
       { BasicTree_#1_#2_#3_#4_#5 }
       {
         \tl_set:Nn \l_tmpa_tl {#5}
@@ -4998,7 +5405,7 @@
 % 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 }
+\@@_Declare_Document_Command:nnn { BasicTree } { S m m m m }
   {
     \@@_Basic_Tree:nnnnn {#1} {#2} {#3} {#4} {#5}
   }
@@ -5012,9 +5419,9 @@
 %
 %\begin{macro}{ \WorstTree }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { WorstTree } { O{1}  }
+\@@_Declare_Document_Command:nnn { WorstTree } { S  }
   {
-    \@@_if_savebox_undefined_define_fi_and_use_it_afterwards:nT { WorstTree_#1 }
+    \@@_provide_savebox_and_use:nT { WorstTree_#1 }
       {
         \@@_set_scale_abs_tl:n {#1}
         \bool_if:NTF \g_@@_if_opt_draft_bool
@@ -5041,9 +5448,9 @@
                  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);
+              \fill[red] (0,1) circle [radius=0.1];
+              \fill[red] (0.4,1.2) circle [radius=0.1];
+              \fill[red] (0.8,1.1) circle [radius=0.1];
             \end{tikzpicture}%
           }
       }
@@ -5059,7 +5466,7 @@
 %
 %\begin{macro}{ \Springtree }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Springtree } { O {1} }
+\@@_Declare_Document_Command:nnn { Springtree } { S }
   {
       \@@_Basic_Tree:nnnnn
       {#1}
@@ -5078,7 +5485,7 @@
 %
 %\begin{macro}{ \Summertree }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Summertree } { O {1} }
+\@@_Declare_Document_Command:nnn { Summertree } { S }
   {
       \@@_Basic_Tree:nnnnn
       {#1}
@@ -5097,7 +5504,7 @@
 %
 %\begin{macro}{ \Autumntree }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Autumntree } { O {1} }
+\@@_Declare_Document_Command:nnn { Autumntree } { S }
   {
       \@@_Basic_Tree:nnnnn
       {#1}
@@ -5116,7 +5523,7 @@
 %
 %\begin{macro}{ \Wintertree }
 %    \begin{macrocode}
-\@@_Declare_Document_Command:nnn { Wintertree } { O {1} }
+\@@_Declare_Document_Command:nnn { Wintertree } { S }
   {
       \@@_Basic_Tree:nnnnn
       {#1}
@@ -5130,7 +5537,6 @@
 %
 %
 %
-%
 % Checks if the Package \Package{marvosym} is loaded
 % if the \Option{marvosym} is set true.
 %    \begin{macrocode}
@@ -5172,15 +5578,25 @@
 %    \begin{macrocode}
 \NewDocumentCommand \tikzsymbolsset { m }
   {
-    \keys_set_groups:nnn { tikzsymbols } { document } {#1}
+    \keys_set_filter:nnnN { tikzsymbols } { package } {#1} \l_tmpa_tl
+    \tl_if_empty:NF \l_tmpa_tl
+      {
+        \keyval_parse:NNV 
+          \@@_tikzsymbolsset_msg_i:n 
+          \@@_tikzsymbolsset_msg_ii:nn 
+          \l_tmpa_tl
+      }
   }
-%\AtBeginDocument
-%  {
-%    \RenewDocumentCommand \tikzsymbolsset { }
-%      {
-%        \msg_error:nnn { tikzsymbols } { tikzsymbolsset }
-%      }
-%  }
+\cs_generate_variant:Nn \keyval_parse:NNn { NNV }
+\cs_new:Npn \@@_tikzsymbolsset_msg_i:n #1
+  {
+    \@@_tikzsymbolsset_msg_ii:nn {#1} { }
+  }
+\cs_new:Npn \@@_tikzsymbolsset_msg_ii:nn #1#2
+  {
+    \msg_error:nnn { tikzsymbols } { package-option } {#1}
+  }
+\exp_args:NV \tikzsymbolsset \l_@@_used_only_once_because_no_better_idea_tl
 %    \end{macrocode}
 %\end{macro}
 %
@@ -5195,7 +5611,7 @@
 \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);
+\draw (0.65,0.9) circle [radius=0.17];
 \end{tikzpicture}%
 \tikzsymbolsaftersymbolinput%
 }
@@ -5207,7 +5623,7 @@
 \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
+\draw (.15,.8) circle [radius=0.18];% Kopf
 \end{tikzpicture}%
 \tikzsymbolsaftersymbolinput%
 }
-- 
cgit v1.2.3

