diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pgf/contrib/tikzsymbols |
Initial commit
Diffstat (limited to 'graphics/pgf/contrib/tikzsymbols')
-rw-r--r-- | graphics/pgf/contrib/tikzsymbols/README.md | 107 | ||||
-rw-r--r-- | graphics/pgf/contrib/tikzsymbols/tikzsymbols.dtx | 6034 | ||||
-rw-r--r-- | graphics/pgf/contrib/tikzsymbols/tikzsymbols.ins | 52 | ||||
-rw-r--r-- | graphics/pgf/contrib/tikzsymbols/tikzsymbols.pdf | bin | 0 -> 543601 bytes |
4 files changed, 6193 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikzsymbols/README.md b/graphics/pgf/contrib/tikzsymbols/README.md new file mode 100644 index 0000000000..ad77b09f66 --- /dev/null +++ b/graphics/pgf/contrib/tikzsymbols/README.md @@ -0,0 +1,107 @@ + +tikzsymbols +=========== + +Overview +-------- + +The *tikzsymbols* package v4.10c (2019/02/08) contains symbols created using tikz. + +This package provides: + * various emoticons + * cooking symbols + * trees + * other symbols (e.g. Penrose-Triangle (Triban), chair, coffeecup, etc.) + +FAQ +------- +See documentation + +Changes +------- +* v1.6 Several bugs fixed and some options added. +* v1.7 New symbols and some `bugs` fixed +* v2.0 + - Bug fixed, now option `tree=on/off` is working again, + - new symbols: `\Triban`, improved BasicTree code. + - New option: `marvsoym` (see documentation for more details). +* v2.2 + - Included `\@ifpackageloaded`, now symbols can have negative scale, + - Did something else, I can't remember. +* v2.25 Changed some code +* v2.5 + - New option: `draftabsolute` (symbols are replaced by text and LateX becomes faster again). Changed manual a bit. +* v3.0 + - Symbols are stored inside a save-box and are used via `\usebox`, + - New option: `draft=absolute` (old option is still useable, but obsolete), + - Changed output of `draft=absolute`, + - New option: `prefix=<prefix>`, adds a `<prefix>` to all commands, + - New option: `usebox=true/false` If false the symbols aren't stored inside a box, + - See manual for more changes. +* v3.0a New cooking-symbols: `\grater`, `\bottle` +* v3.0b Deleted some non-ASCII characters. +* v3.0g + - Removed a bug caused by me messing up with commands. + - Removed package `calc` and replaced `\setlength` with `\pgfmathsetlength` + - Reworked some code of the symbols. + - Did not change the manual. +* v3.0h Created a bug in the process of fixing the last bug, added the forgotten \\fi. +* v3.01alpha Copied the 2e code and started rewriting the code in LaTeX3. +* v3.38 Nearly finished rewriting. +* v3.40 Now everything is coded in LaTeX3. +* v3.40-v3.95 Various fixes and changes. +* v3.95 New emoticon `\(d)Changey`. +* v4.0 Finished reworking the code. +* v4.01 + - Added a known problem to the documentation. + - New Symbol: `\rollingpin` (and of course the german equivalent `\Nudelholz`) +* v4.02 + - Added option `baseline=true/false` to fix a bug occurring with `todonotes` + - New Symbols: `\cChangey` and `\dcChangey` +* v4.06 + - New Emoticon: `\(d)Sleepey`. + - New Emoticon: `\SchrodingersCat`. + - New option: `global-scale`. + - New option: `symbol-scale`. + - `\tikzsymbolsset` now raises a warning if a load-time option is used. + - Some minor fixes. +* v4.07 Option `usebox` is now usable during the document. +* v4.10 + - Added FAQ. + - All files are now derived from the .dtx file. + - New option: `append-style`. + - New option: `remember-picture`. + - Internal change: `baseline`. + - Deleted invisible sign. + - New symbolpair: `\Knoblauchpresse` and `\garlicpress`. + - Option `draft` and `final` now set the internal draft boolean locally. + - Reworked sizes of the plain vanilla draft boxes. +* v4.10a Bugfix: Forgot to remove colors from `\Strichmaxerl` +* v4.10b Bugfix: Replace deprecated `\c_zero` by `0` +* v4.10c Bugfix: Added dimension to `xshift` and `yshift` for `\Fire`, `\Candle` and `\(d)Laughey` + +Requirements +------------ + + * expl3 & xparse + * tikz + * xcolor + * xspace + * l3keys2e + +This file contains +------------------ + + * README + * tikzsymbols.pdf + * tikzsymbols.dtx + * tikzsymbols.ins + +License +------- +This material is subject to the LATEX Project Public License 1.3c. See + + http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html + +for the details of that license. + diff --git a/graphics/pgf/contrib/tikzsymbols/tikzsymbols.dtx b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.dtx new file mode 100644 index 0000000000..e845b8342f --- /dev/null +++ b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.dtx @@ -0,0 +1,6034 @@ +% \iffalse meta-comment +% !TEX encoding = UTF-8 Unicode +% !TEX program = pdfLaTeX +% +% +%<*internal> +\iffalse +%</internal> +%<*readme> + +tikzsymbols +=========== + +Overview +-------- + +The *tikzsymbols* package v4.10c (2019/02/08) contains symbols created using tikz. + +This package provides: + * various emoticons + * cooking symbols + * trees + * other symbols (e.g. Penrose-Triangle (Triban), chair, coffeecup, etc.) + +FAQ +------- +See documentation + + +Changes +------- +* v1.6 Several bugs fixed and some options added. +* v1.7 New symbols and some `bugs` fixed +* v2.0 + - Bug fixed, now option `tree=on/off` is working again, + - new symbols: `\Triban`, improved BasicTree code. + - New option: `marvsoym` (see documentation for more details). +* v2.2 + - Included `\@ifpackageloaded`, now symbols can have negative scale, + - Did something else, I can't remember. +* v2.25 Changed some code +* v2.5 + - New option: `draftabsolute` (symbols are replaced by text and LateX becomes faster again). Changed manual a bit. +* v3.0 + - Symbols are stored inside a save-box and are used via `\usebox`, + - New option: `draft=absolute` (old option is still useable, but obsolete), + - Changed output of `draft=absolute`, + - New option: `prefix=<prefix>`, adds a `<prefix>` to all commands, + - New option: `usebox=true/false` If false the symbols aren't stored inside a box, + - See manual for more changes. +* v3.0a New cooking-symbols: `\grater`, `\bottle` +* v3.0b Deleted some non-ASCII characters. +* v3.0g + - Removed a bug caused by me messing up with commands. + - Removed package `calc` and replaced `\setlength` with `\pgfmathsetlength` + - Reworked some code of the symbols. + - Did not change the manual. +* v3.0h Created a bug in the process of fixing the last bug, added the forgotten \\fi. +* v3.01alpha Copied the 2e code and started rewriting the code in LaTeX3. +* v3.38 Nearly finished rewriting. +* v3.40 Now everything is coded in LaTeX3. +* v3.40-v3.95 Various fixes and changes. +* v3.95 New emoticon `\(d)Changey`. +* v4.0 Finished reworking the code. +* v4.01 + - Added a known problem to the documentation. + - New Symbol: `\rollingpin` (and of course the german equivalent `\Nudelholz`) +* v4.02 + - Added option `baseline=true/false` to fix a bug occurring with `todonotes` + - New Symbols: `\cChangey` and `\dcChangey` +* v4.06 + - New Emoticon: `\(d)Sleepey`. + - New Emoticon: `\SchrodingersCat`. + - New option: `global-scale`. + - New option: `symbol-scale`. + - `\tikzsymbolsset` now raises a warning if a load-time option is used. + - Some minor fixes. +* v4.07 Option `usebox` is now usable during the document. +* v4.10 + - Added FAQ. + - All files are now derived from the .dtx file. + - New option: `append-style`. + - New option: `remember-picture`. + - Internal change: `baseline`. + - Deleted invisible sign. + - New symbolpair: `\Knoblauchpresse` and `\garlicpress`. + - Option `draft` and `final` now set the internal draft boolean locally. + - Reworked sizes of the plain vanilla draft boxes. +* v4.10a Bugfix: Forgot to remove colors from `\Strichmaxerl` +* v4.10b Bugfix: Replace deprecated `\c_zero` by `0` +* v4.10c Bugfix: Added dimension to `xshift` and `yshift` for `\Fire`, `\Candle` and `\(d)Laughey` + +Requirements +------------ + + * expl3 & xparse + * tikz + * xcolor + * xspace + * l3keys2e + + +This file contains +------------------ + + * README + * tikzsymbols.pdf + * tikzsymbols.dtx + * tikzsymbols.ins + +License +------- +This material is subject to the LATEX Project Public License 1.3c. See + + http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html + +for the details of that license. + +%</readme> +%<*internal> +\fi +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +%</internal> +%<*install> +\input l3docstrip.tex +%\keepsilent +\askforoverwritefalse +\preamble + + Copyright (C) 2013--2019 by Ben Vitecek (current Maintainer) + + 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.md, tikzsymbols.dtx, + tikzsymbols.ins and the derived files tikzsymbols.sty. + +\endpreamble +%\postamble + +%\endpostamble +\usedir{tex/latex/tikzsymbols} +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} +%</install> +%<install>\endbatchfile +%<*internal> +\usedir{source/latex/tikzsymbols} +\generate{ + \file{\jobname.ins}{\from{\jobname.dtx}{install}} +} +\nopreamble\nopostamble +\usedir{doc/latex/tikzsymbols} +\generate{ + \file{README.md}{\from{\jobname.dtx}{readme}} +} +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +%</internal> +%<*driver> +\documentclass[onlydoc,11pt,english]{l3doc} +%: documentclass +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{babel} +\usepackage{marvosym} +\usepackage{microtype} +\usepackage{longtable} +\usepackage{booktabs} +\usepackage{mathtools} +\usepackage{tikzsymbols} +\usepackage{xparse} +\usepackage{marginnote} + +\usepackage{cleveref} + + +\EnableCrossrefs +%\CodelineIndex +\RecordChanges +\AtEndDocument { \PrintChanges \PrintIndex } + +\makeatletter +\ExplSyntaxOn + + +\newcommand\tikzsymbols{\Package{tikzsymbols}} + +\NewDocumentCommand{\definedBasicTree} { O{1} m m m m } + { + \group_begin: + \__tikzsymbols_Basic_Tree_off:nnnnn {#1} {#2} {#3} {#4} {#5} + \group_end: + } + + +\newcommand{\Package}{\pkg} +\newcommand{\Option}{\texttt} +\newcommand{\opt}{\texttt} +\newcommand{\Makro}{\cs} +\newcommand{\mycs}{\cs} +\newcommand{\makrouse}[1]{\use:c{#1}} +\newcommand{\Meta}[1]{\meta{#1}} + +\colorlet{mybracegreen}{green!50!black} +\renewcommand\marg[1]{\textcolor{mybracegreen}{\texttt{\char`\{}}% + \meta{#1}% + \textcolor{mybracegreen}{\texttt{\char`\}}}% +} + + +\hfuzz=500pt +\vbadness=\maxdimen +\hbadness=\maxdimen + + +\cs_new:Npn \CreateExample #1#2 + { + \tl_set_rescan:Nnn \l_tmpa_tl + { + \char_set_catcode_other:N \{ + \char_set_catcode_other:N \} + } + {#2} + \Makro{#1\l_tmpa_tl} \space \use:c {#1}#2 + } + +\clist_new:N \printclist + +\cs_new:Npn \MapinTable + { + \clist_use:Nn \printclist { } + } + +\clist_gset_eq:NN \printclist \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist + +\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:}% + }{ + + } + +%\tikzsymbolsset { marvosym=true } + + +\ExplSyntaxOff +\makeatother + + + +\begin{document} +\DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% +% +% \iffalse meta-comment +%: Changes +% \fi +% +% +% +% +% \GetFileInfo{\jobname.sty} +% +% \iffalse meta-comment +%: DoNotIndex +% \fi +% +%\DoNotIndex {\begin{tikzpicture},\end{tikzpicture}} +%\DoNotIndex {\verb, \DeclareRobustCommandx} +%\DoNotIndex {=\verb} +%\DoNotIndex {\verb||} +%\DoNotIndex {\draw,\fill,\DeclareRobustCommand, \colorlet,\shade} +%\DoNotIndex {\xspace,\begin,\end} +% +% +% +% +% \begin{documentation} +% +% \title{The \Package{\jobname} package\thanks{This document corresponds to \textsf{\jobname}~\fileversion, dated~\filedate.}} +% +%\author{Ben Vitecek \\ +% \href{mailto:b.vitecek@gmx.at}{b.vitecek@gmx.at} \\ +% \href{https://github.com/Vidabe/tikzsymbols}{GitHub} +% } +% +%^^A \date{August 19, 2017} +% +% \maketitle{} +% +% +% +% \begin{abstract} \centering +% Some symbols created using \Package{tikz}. +% +% For differences between the releases +% see \cref{sec:important-changes}. +% +% English is (still) not my native language so there (still) might be some +% errors\footnote{They are -- of course -- on purpose (expect for +% \enquote{avaiable} (sic!)).} \Winkey. +% \end{abstract} +% +% \tableofcontents +% +% +% \section{Introduction} +% \label{sec:intro} +% +% \begin{comment} +% As far as I can remember this package is a result of me writing a cooking book. +% I wasn't able to find the symbols I wanted on CTAN and so I used \Package{tikz} +% and my (sadly) very humble skills to 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 +% and wrote +% +% Well, +% \end{comment} +% +% +% As far as I can remember this package is the result of me writing a +% cooking book\footnote{Well, it's one result, the other one is a cooking book.}. +% Back then I wasn't able to find the cooking symbols I wanted and +% using time, \Package{tikz}, lot's of magic +% (also known as \enquote{programming}, but only if the respective person +% knows what's going on) and a documentation in bad grammar\footnote{Not that it' now any better.} I somehow ended up with this package. +% +% During time \LaTeX3 became known to me and I started experimenting +% and programming in this (I would say due to its simplicity compared to \LaTeXe\ +% far superior) language. Well, long story short: I was impressed. +% And so the idea of writing my package in \LaTeX3 was born. +% +% I finally took my time and started rewriting my code using \LaTeX3. +% This process can be summarized as: \enquote{What \emph{does} this command?}, +% \enquote{Why did I define \emph{this} command?} and +% more generally \enquote{\emph{What} have I done?!} +% Well, let's hope my code (and grammar) is better this time\footnote{Looking at own risk. +% You have been warned.}. +% +% Well \dots\ that's it, have fun! +% +% +% +% \section{Important changes} +% \label{sec:important-changes} +% +% The package should behave the same way as the \enquote{old} \LaTeXe\ release. +% +% \begin{description} +% \item[2018] Option \opt{draft} and \opt{final} are now local. +% \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} +% +% ^^A All options but \Option{after-symbols} can be set as load-time +% ^^A options and can be given inside the optional argument of +% ^^A \Makro{usepackage}: +% +% +% Options can either be set as package options or using +% \Makro{tikzsymbolsset}. Some options can only be set as package +% options, those are described in \cref{sec:glob-opt}. +% +% It is recommended to use the option \Option{draft=true} while +% working on the document. +% +% \begin{function}{\tikzsymbolsset} +% \begin{syntax} +% \Makro{tikzsymbolsset} \marg{keys = values} +% \end{syntax} +% +% Most keys, except +% for the load-time options (\cref{sec:glob-opt}), can be +% set using this command. +% +%^^A This command can only be used in the preamble and most keys, except +%^^A for the load-time options (\cref{sec:glob-opt}), can be +%^^A set using this command. +% \end{function} +% +% +% +% \subsection{Load-time Options} +% \label{sec:glob-opt} +% +% The following options \emph{cannot} be set using \Makro{tikzsymbolsset}. +% +% \subsubsection{marvosym (true/false)} +% \label{sec:marvosym} +% +% \begin{syntax} +% marvosym = true / false +% \end{syntax} +% +% Please load \tikzsymbols\ +% \emph{after} \Package{marvosym}. +% +% \Package{marvosym} also defines \Makro{Smiley} and +% \Makro{Coffeecup}. If you prefer those symbols (\mvchr{169}, \mvchr{75}) over the +% \tikzsymbols\ ones (\Smiley, \Coffeecup) you can use this option. If set to true +% \Package{tikzsymbols} cancels the definition of its +% \Makro{Smiley} and \Makro{Coffeecup}: +% +% \begin{center} +% \begin{tabular}{ c c } +% \toprule +% Without option \enquote{marvosym}: \Smiley \Coffeecup & With +% option \enquote{marvosym}: \mvchr{169} \mvchr{75}\\ \midrule +% \verb|\usepackage{marvosym}| & \verb|\usepackage{marvosym}|\\ +% \verb|\usepackage{tikzsymbols}| & +% \verb|\usepackage[marvosym]{tikzsymbols}| \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% +% This option raises an error if set \Option{true} without loading package \Package{marvosym}. +% +% Can only be set as load-time option. +% +% You may also use the option \Option{prefix} (\cref{sec:prefix}). +% +% +% \subsubsection{prefix (\meta{string})} +% \label{sec:prefix} +% +% This option takes a string as value: \Option{prefix=\meta{string}} and +% adds this prefix to every command defined by this package. So +% setting \Option{prefix=\meta{prefix}} adds \meta{prefix} to all commands of +% this package: \Makro{\meta{prefix}command}. +% +%\meta{prefix} should neither contain +% any special characters (e.g., \"a, \"u, \ss, etc.) nor spaces. +% +% By default it is empty, so no prefix is given, if this option is given +% without an argument \meta{prefix} is set to \Option{tikzsymbols}. +% +% Can only be set as a load-time option. +% +% For example: +% +% \begin{center} +% \Makro{usepackage[prefix=tikzsym]\{tikzsymbols\}} +% \end{center} +% +% defines \Makro{Smiley} as \Makro{tikzsymSmiley}, \Makro{Kochtopf} as +% \Makro{tikzsymKochtopf}, \Makro{pot} as \Makro{tikzsympot}, etc. +% +% If you use this option or think about using this option the +% following command may be handy: +% +% \begin{function}{\tikzsymbolsuse} +% \begin{syntax} +% \Makro{tikzsymbolsuse}\marg{Symbolname} +% \end{syntax} +% This command takes the name of the symbol \emph{without} +% backslash and prints the symbol (or raises an error if the symbol +% is not defined). Using this command you don't have to worry about +% a \meta{prefix}, just write the command name and this command adds +% automatically the given prefix to the command name. +% +% +% \end{function} +% +% +% \begin{myexample} +% \Makro{tikzsymbolsuse\{Smiley\}[2]} \tikzsymbolsuse{Smiley}[2] +% +% \Makro{tikzsymbolsuse\{BasicTree\}[1.2]\{black\}\{red!50!black\}\{red\}\{leaf\}} +% \tikzsymbolsuse{BasicTree}[1.2]{black}{red!50!black}{red}{leaf} +% +% +% \Makro{tikzsymbolsuse\{Ofen\}} \tikzsymbolsuse{Ofen} +% +% \Makro{tikzsymbolsuse\{Fire\}[-1.3]} \tikzsymbolsuse{Fire}[-1.3] +% +% etc. +% \end{myexample} +% +% \subsection{Normal Options} +% \label{sec:pream-opt} +% +% 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 = \meta{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 approximately the same height and width as +% the symbols) which are faster to +% create. +% +% You can also set this option during the document. +% +% The old option \Option{draft=absolute} is +% obsolete and should therefore not be used. +% +% \end{function} +% +% \subsubsection{final (true/false)} +% \label{sec:final} +% +% \begin{function}{final} +% \begin{syntax} +% final= \meta{true/false} +% \end{syntax} +% +% This key has the opposite behavior of the option \Option{draft}. +% +% It is a boolean key and therefore accepts only \Option{true} or +% \Option{false} and is set to \Option{true} by default. Setting it to +% \Option{true} prints all symbols normally. Setting it to +% \Option{false} prints plain vanilla draft-boxes instead which speeds +% up the compile-process. +% +% \end{function} +% +% +% +% +% \subsubsection{tree (true/false/on/off)} +% \label{sec:tree} +% +% \begin{function}{tree} +% \begin{syntax} +% tree= \meta{true/on/false/off} +% \end{syntax} +% +% This key accepts \Option{true}, \Option{false} and furthermore +% \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 its derivates (\Makro{Springtree}, \Makro{Summertree}, +% \Makro{Autumntree} and \Makro{Wintertree}) and substitutes them with +% \Package{tikz} drawn boxes. +% +% So while \Option{draft=true} replaces the output of \emph{all} commands with simple +% black boxes, \Option{tree=true/on} only replaces the output of +% \enquote{tree}-commands with boxes. +% +% It is recommended to use \Option{draft=true}, but if you want you +% can use this option. +% +% \end{function} +% +% +% +% +% \subsubsection{after-symbol (\meta{string or command})} +% \label{sec:after-symbol} +% +% \begin{function}{after-symbol} +% Is more stable if set using \Makro{tikzsymbolsset}. +% \begin{syntax} +% after-symbol = \marg{string or command} +% \end{syntax} +% The value of this key is inserted after every command of this +% package. By default it is set to \Makro{xspace}. +%^^A This command is more robust +%^^A if used with \Makro{tikzsymbolsset} +% \end{function} +% +% +% \subsubsection{global-scale (\meta{number}) \\ +% symbol-scale (\meta{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{append-style (\meta{tikz' keyval})} +% \label{sec:append-style} +% +% \begin{function}{append-style} +% \begin{syntax} +% append-style = \marg{tikz' keyval} +% \end{syntax} +% +% With this option you can append \pkg{tikz}' \meta{keyval} +% to \pkg{tikzsymbols} internal style. +% +% \begin{mynote} +% The style is called \verb|__tikzsymbols| and while the name +% will probably not change, you are discouraged to use it directly +% unless it is \emph{really} necessary (e.g.\ if I did something wrong). +% \end{mynote} +% \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} +% +% +% +% \subsubsection{baseline (true/false)} +% \label{sec:baseline} +% +% \begin{function}{baseline} +% \begin{syntax} +% baseline = \marg{true/false} +% \end{syntax} +% This option mainly exists to let the commands of this package work inside +% \pkg{todonotes}' \cs{todo} command. If 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{remember-picture (true/false)} +% \label{sec:rem-picture} +% +% \begin{function}{remember-picture} +% \begin{syntax} +% remember-picture = \marg{true/false} +% \end{syntax} +% +% Adds to each symbol created by this package the \pkg{tikz} +% option \opt{remember picture=\meta{true/false}}. +% It is not added by default. +% +% \end{function} +% +% +% +% +% +% +% +% \section {Symbols} +% +% +% In this section the symbols are introduced. +% { They \Kochtopf \tiny all \dInnocey \Huge change \Moai \small automatically \Wintertree \large with \oven \normalsize text-size \Strichmaxerl. } +% +% +% +% +% +% +% \subsection{Cooking-symbols \texorpdfstring{\Kochtopf}{Kochtopf}} +% +% \begin{function} +% { +% \Kochtopf, +% \pot, +% \Bratpfanne, +% \fryingpan, +% \Schneebesen, +% \eggbeater, +% \Sieb, +% \sieve, +% \Purierstab, +% \blender, +% \Dreizack, +% \trident, +% \Backblech, +% \bakingplate, +% \Ofen, +% \oven, +% \Pfanne, +% \pan, +% \Herd, +% \cooker, +% \Saftpresse, +% \squeezer, +% \Schussel, +% \bowl, +% \Schaler, +% \peeler, +% \Reibe, +% \grater, +% \Flasche, +% \bottle, +% \Nudelholz, +% \rollingpin , +% \Knoblauchpresse , \garlicpress +% } +% +% The following table shows all available cooking-symbols and their +% respective commands. +% The first column shows the command-names (german \& english), +% the second the optional parameter(s). +% The optional parameter(s) are for both the german and the +% english commands the same. +% +% \Meta{scale} can be a number between (not exactly) $-1400$ and +% (also not exactly) $1400$, default is $1$. +% +% +% Da Umlaute nicht in Befehlsnamen vorkommen dürfen, werden die Umlaute +% \"o, \"a, \"u durch o, a, u ersetzt. +% +% \begin{longtable}{l l c@{~~}c} +% \multicolumn{2}{l}{German \& English Commands} & Optional +% parameter(s) & Output \\\toprule\endhead +% \\ \bottomrule \endfoot +% \MapinTable +% \bottomrule +% \end{longtable} +% +% +% +% +% \end{function} +% +% +% +% +%\subsection{Emoticons \texorpdfstring{\Smiley}{Smiley}} +% +%\subsubsection{\enquote{Normal} Emoticons \texorpdfstring{\Cat}{Cat}} +% +% +% +% \begin{function} +% { +% \Smiley, +% \Sadey, +% \Neutrey, +% \Changey, +% \cChangey, +% \Annoey, +% \Laughey, +% \Winkey, +% \oldWinkey, +% \Sey, +% \Xey, +% \Innocey, +% \wInnocey, +% \Cooley, +% \Tongey, +% \Nursey, +% \Vomey, +% \Walley, +% \rWalley, +% \Cat, +% \SchrodingersCat, +% \Ninja, +% \Sleepey, +% \NiceReapey +% } +% +% First column shows the commands, the second the (optional) +% parameter(s), the third the default-output (the only command with +% a mandatory argument is \Makro{Changey}). +% +% \Meta{scale} can be a number between (not exactly) $-2000$ and (not +% exactly) $2000$, ^^A{Do you even need so large symbols?}, +% default is $1$. +% +% \Meta{color} can be every defined color. Note: The color names +% shouldn't contain special characters like \ss, \"a, \"o, \dots +% +% \Makro{Changey}'s \Meta{mood} has to be between $-2$ and $2$ +% ($1$ equals \Makro{Smiley}, $-1$ \Makro{Sadey} and $0$ \Makro{Neutrey}). +% +% \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 +% +% \bottomrule\endfoot +% +% +% \Makro{Smiley}& \oarg{scale}\oarg{color} & \Smiley \\ +% \Makro{Sadey}& \oarg{scale}\oarg{color} & \Sadey \\ +% \Makro{Neutrey}& \oarg{scale}\oarg{color} & \Neutrey \\ +% \Makro{Changey}& \oarg{scale}\oarg{color}\marg{mood} & \Changey{2} \\ +% \Makro{cChangey}& \oarg{scale}\oarg{color1}\oarg{color2}\oarg{color3}\marg{mood} & \cChangey{2} \\ +% \Makro{Annoey}& \oarg{scale}\oarg{color} & \Annoey \\ +% \Makro{Laughey}& \oarg{scale}\oarg{color}\oarg{mouth color} & \Laughey \\ +% \Makro{Winkey}& \oarg{scale}\oarg{color} & \Winkey \\ +% \Makro{oldWinkey}& \oarg{scale}\oarg{color} & \oldWinkey \\ +% \Makro{Sey}& \oarg{scale}\oarg{color} & \Sey \\ +% \Makro{Xey}& \oarg{scale}\oarg{color} & \Xey \\ +% \Makro{Innocey}& \oarg{scale}\oarg{color}\oarg{halo color} & \Innocey \\ +% \Makro{wInnocey}& \oarg{scale} & \wInnocey \\ +% \Makro{Cooley}& \oarg{scale}\oarg{color} & \Cooley \\ +% \Makro{Tongey}& \oarg{scale}\oarg{color}\oarg{tongue color} & \Tongey \\ +% \Makro{Nursey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{cross color} &\Nursey \\ +% \Makro{Vomey}& \oarg{scale}\oarg{color}\oarg{vomit color} & \Vomey \\ +% \Makro{Walley}& \oarg{scale}\oarg{color}\oarg{wall color} & \Walley \\ +% \Makro{rWalley}\marginnote{\enquote{r} for \enquote{random generated cracks}.}& \oarg{scale}\oarg{color}\oarg{wall color} & \rWalley \\ +% \Makro{Cat}& \oarg{scale}& \Cat \\ +% \Makro{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]} +% +% \CreateExample{Cooley} {[-3][cyan]} +% +% \CreateExample{Vomey}{[1.5][green!80!black][olive]} +% +% \CreateExample{Nursey}{[][yellow][blue][red]}. +% +% \CreateExample{Ninja}{[1.3][][violet][red]}. +% +% \verb|\colorbox{yellow}{\Winkey \Annoey[-1]\Neutrey}|\colorbox{yellow}{\Winkey \Annoey [-1]\Neutrey} +% +% \verb|\textcolor{blue}{\Sey}| \textcolor{blue}{\Sey} +% +% \CreateExample{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}} +% \CreateExample{Changey} {{0}} +% \CreateExample{Changey} {{1}} +% \CreateExample{Changey} {{1.41}} +% \CreateExample{Changey} {{2}} +% +% \CreateExample{cChangey} {{2}} +% \CreateExample{cChangey} {{1}} +% \CreateExample{cChangey} {{0.5}} +% \CreateExample{cChangey} {{0.1}} +% \CreateExample{cChangey} {{0}} +% \CreateExample{cChangey} {{-0.5}} +% \CreateExample{cChangey} {{-1}} +% \CreateExample{cChangey} {{-2}} +% +% \CreateExample{cChangey} {[][][blue]{-1}} +% \CreateExample{cChangey} {[][][blue]{0.5}} +% +% If you intent to change the color of \cs{cChangey} you may define a new command +% so that you do not have to write those brackets each time. +% +% +% \subsubsection{\enquote{3D} Emoticons \texorpdfstring{\dSmiley\dSadey[-1]}{dSmiley dSadey}} +% +% +% \begin{function} +% { +% \dSmiley, +% \dSadey, +% \dNeutrey, +% \dChangey, +% \dcChangey, +% \dAnnoey, +% \dLaughey, +% \dWinkey, +% \dSey, +% \dXey, +% \dInnocey, +% \dCooley, +% \dNinja, +% \drWalley, +% \dWalley, +% \dVomey, +% \dNursey, +% \dTongey, +% \dSleepey, +% \olddWinkey +% } +% +% +% +% First column shows the commands (note: the \enquote{3D} Emoticons +% begin with \Makro{d\dots}), the second shows the (optional) +% parameter(s), the third shows the default-output (the only command +% with a mandatory argument is \Makro{dChangey}). +% +% \Meta{scale} can be a number between a small number (under +% $-500$ for sure) and a large number (over 500 for sure), +% default is $1$. +% +% \Meta{color} can be every defined color (see examples below). Note: +% The color names shouldn't contain special characters like \ss, \"a, +% \"o, \dots +% +% \Makro{Changey}'s \meta{mood} has to be between $-2$ and $2$ +% ($1$ equals \Makro{dSmiley}, $-1$ \Makro{dSadey} and $0$ \Makro{dNeutrey}). +% +% \begin{longtable}{llc} +% Commands & Optional parameter(s) & Output \\\toprule\endhead +% +% \bottomrule\endfoot +% +% \Makro{dSmiley}& \oarg{scale}\oarg{color} & \dSmiley \\ +% \Makro{dSadey}& \oarg{scale}\oarg{color} & \dSadey \\ +% \Makro{dNeutrey}& \oarg{scale}\oarg{color} & \dNeutrey \\ +% \Makro{dChangey}& \oarg{scale}\oarg{color}\marg{mood} & \dChangey{2} \\ +% \Makro{dcChangey}& \oarg{scale}\oarg{color1}\oarg{color2}\oarg{color3}\marg{mood} & \dcChangey{2} \\ +% \Makro{dLaughey}& \oarg{scale}\oarg{color}\oarg{mouth color} & \dLaughey \\ +% \Makro{dAnnoey}& \oarg{scale}\oarg{color} & \dAnnoey \\ +% \Makro{dWinkey}& \oarg{scale}\oarg{color} & \dWinkey \\ +% \Makro{olddWinkey}& \oarg{scale}\oarg{color} & \olddWinkey \\ +% \Makro{dSey}& \oarg{scale}\oarg{color} & \dSey \\ +% \Makro{dXey}& \oarg{scale}\oarg{color} & \dXey \\ +% \Makro{dInnocey}& \oarg{scale}\oarg{color}\oarg{halo color} & \dInnocey \\ +% \Makro{dCooley}& \oarg{scale}\oarg{color} & \dCooley \\ +% \Makro{dTongey}& \oarg{scale}\oarg{color}\oarg{tongue color} & \dTongey \\ +% \Makro{dNursey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{cross color} & \dNursey \\ +% \Makro{dVomey}& \oarg{scale}\oarg{color}\oarg{vomit color} & \dVomey \\ +% \Makro{dWalley}& \oarg{scale}\oarg{color}\oarg{wall color} & \dWalley \\ +% \Makro{drWalley}\marginnote{\enquote{r} for \enquote{random generated cracks}.}& \oarg{scale}\oarg{color}\oarg{wall color}& \drWalley \\ +% \Makro{dNinja}& \oarg{scale}\oarg{color}\oarg{headband color}\oarg{eye color} & \dNinja \\ +% \Makro{dSleepey}& \oarg{scale}\oarg{color}\oarg{cap color}\oarg{star color}& \dSleepey \\ +% \bottomrule +% \end{longtable} +% +% \end{function} +% +% +% Examples: +% \CreateExample{dSadey}{[][red]} +% +% \CreateExample{dCooley}{[-3][cyan]} +% +% \CreateExample{dVomey}{[1.5][green!70!black][olive]} +% +% \CreateExample{dNursey}{[][yellow][blue][red]}. +% +% \CreateExample{dNinja}{[1.3][][violet][red]}. +% +% \CreateExample{dChangey} {{-2}} +% \CreateExample{dChangey} {{-1.367}} +% \CreateExample{dChangey} {{-1}} +% \CreateExample{dChangey} {{0}} +% \CreateExample{dChangey} {{1}} +% \CreateExample{dChangey} {{1.41}} +% \CreateExample{dChangey} {{2}} +% +% +% \CreateExample{dcChangey} {{2}} +% \CreateExample{dcChangey} {{1}} +% \CreateExample{dcChangey} {{0.5}} +% \CreateExample{dcChangey} {{0.1}} +% \CreateExample{dcChangey} {{0}} +% \CreateExample{dcChangey} {{-0.5}} +% \CreateExample{dcChangey} {{-1}} +% \CreateExample{dcChangey} {{-2}} +% +% \CreateExample{dcChangey} {[][][blue]{-1}} +% \CreateExample{dcChangey} {[][][blue]{0.5}} +% +% If you intent to change the color of \cs{dcChangey} you may define a new command +% so that you do not have to write those brackets each time. +% +% \subsection{Other Symbols \texorpdfstring{\Moai}{Moai}} +% +% \begin{function} +% { +% \Strichmaxerl, +% \Candle, +% \Fire, +% \Coffeecup, +% \Chair, +% \Bed, +% \Tribar, +% \Moai, +% \Snowman +% } +% +% \Makro{Strichmaxerl}'s optional parameters 2--5 (\Meta{left arm} to +% \Meta{right leg}) can be a number +% between $-360$ and $360$ (of course the number can be even +% greater or even smaller.). The parameters are +% the angles between the body and the separate parts of +% \Makro{Strichmaxerl} (see examples). +% +% \Meta{scale} can be a very great and a very small negative number (but I +% don't think, that you need so large symbols). +% +% \Meta{color} can be every defined color. Note: The color names +% shouldn't contain special characters like \ss, \"a, \"o, \dots. +% +% \begin{longtable}{llc} +% Commands & Optional parameter(s) & Output \\\toprule\endhead +% +% \bottomrule\endfoot +% +% \Makro{Strichmaxerl} & \oarg{scale}\oarg{left arm}\oarg{right arm}\oarg{left leg}\oarg{right leg} &\Strichmaxerl\\ +% \Makro{Candle} & \oarg{scale} & \Candle\\ +% \Makro{Fire} & \oarg{scale} & \Fire\\ +% \Makro{Coffeecup} & \oarg{scale} & \Coffeecup\\ +% \Makro{Chair} & \oarg{scale} & \Chair\\ +% \Makro{Bed} & \oarg{scale} & \Bed\\ +% \Makro{Moai} & \oarg{scale} & \Moai\\ +% \Makro{Tribar} &\oarg{scale}\oarg{color 1}\oarg{color 2}\oarg{color 3} & \Tribar\\ +% \Makro{Snowman} &\oarg{scale} & \Snowman\\ +% \bottomrule +% \end{longtable} +% +% +% \end{function} +% +% \CreateExample{Tribar}{[-10][blue][red][green]} +% +% \CreateExample{Tribar}{[2.1][blue][blue!50][blue!20]} +% +% \vspace{1ex} +% +% \CreateExample{Strichmaxerl}{[1][10][30][40][4]} , +% +% \CreateExample{Strichmaxerl}{[1.4][210][310][10][90]} , +% +% \CreateExample{Strichmaxerl}{[2][510][110][190][990]} , +% +% \CreateExample{Strichmaxerl}{[0.9][54][28][95][16]} +% +% \CreateExample{Strichmaxerl}{[][54][28]} +% +% \CreateExample{Strichmaxerl}{[][45][45][45][45]} +% +% +% \begin{function} +% { +% \BasicTree , +% \Springtree , +% \Summertree , +% \Wintertree , +% \WorstTree , +% } +% +% \subsection{Trees \texorpdfstring{\BasicTree{blue!60!black}{red}{green}{leaf}}{BasicTree}}\label{Trees} +% +% \Meta{scale} can be a number between (not exactly) $-900$ and (again +% not exactly) $900$, default is +% $1$. +% +% \Meta{color} can be every defined color (see examples below). Note: +% The color names shouldn't contain special characters like \ss, \"a, +% \"o, \dots. +% +% \marg{leaf} uses the colors of \marg{leaf color a} +% and \marg{leaf color b}, you can leave this one empty if you don't +% want leaves (\verb|\Wintertree| is without \emph{leaf}, see examples +% below). +% +% If you are using those trees, \LaTeX{} needs longer to produce the +% output. So you may use the package option \Option{tree=off}, +% or (better) \Option{draft=true} (see section +% \cref{sec:draft} and \cref{sec:tree}) to make \LaTeX{} faster. +% +% Furthermore those trees are pretty much stolen from the +% \Package{tikz} manual. +% +% \begin{center} +% \begin{tabular}{@{}llc@{}} +% Commands & Optional/Needed parameter(s) & Output +% \\\toprule +% +% +% \Makro{BasicTree} & \oarg{scale}\marg{trunk color}\marg{leaf color a}\marg{leaf color b}\marg{leaf} & see below \\ +% +% \Makro{Springtree} & \oarg{scale} & \Springtree \\ +% \Makro{Summertree} & \oarg{scale} & \Summertree \\ +% \Makro{Autumntree} & \oarg{scale} & \Autumntree \\ +% \Makro{Wintertree} & \oarg{scale} & \Wintertree \\ +% \Makro{WorstTree} & \oarg{scale} & \WorstTree \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% \end{function} +% +% \paragraph{\Makro{BasicTree} examples} Some \enquote{normal} trees: +% +% \verb|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}}|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}} +% +% \CreateExample{BasicTree}{[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf}} +% +% \CreateExample{BasicTree}{[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{}} +% +% \CreateExample{BasicTree}{[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf}} +% +% \verb|\colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}| +% \colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}} +% +% \paragraph{draftbox \Makro{BasicTree} examples} Some \enquote{draftbox} trees +% (using \Option{tree=false}): +% +% \dots and using the same trees with \Option{tree=off/false} or \Option{draft}(\Option{=true}): +% +% \verb|\colorbox{green}{\BasicTree{red}{orange}{yellow}{leaf}}| +% \colorbox{green}{\definedBasicTree{red}{orange}{yellow}{leaf}} +% +% \verb|\BasicTree[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf}| +% \definedBasicTree[5]{orange!95!black}{orange!80!black}{orange!70!black}{leaf} +% +% \verb|\BasicTree[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{}| +% \definedBasicTree[2]{blue!65!white}{cyan!50!white}{cyan!50!white}{} +% +% \verb|\BasicTree[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf}| +% \definedBasicTree[-1.54]{green!20!black}{green!50!black}{green!70!black}{leaf} +% +% \verb|\colorbox{black}{\BasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}}| \colorbox{black}{\definedBasicTree[3.75]{gray!80}{gray!50}{gray!40}{leaf}} +% +% \bigskip +% +% I think it's better if you define your own trees using \verb|\newcommand| and \verb|\BasicTree|: +%\begin{verbatim} +% \newcommand{\Myicetree}[1][1]{% +% \BasicTree[#1]{blue!65!white}{cyan!50!white}{cyan!50!white}{}} +% \end{verbatim} +% +% +% \begin{comment} +% \section{Known errors \& Problems} +% +% \subsection*{marvosym} +% Make sure you load \Package{marvosym} \emph{before} +% \Package{tikzsymbols} because both packages define \verb|\Smiley|, +% \Package{marvosym} via \verb|\newcommand| \tikzsymbols\ via +% \Makro{DeclareDocumentCommand}. +% +% If you load \Package{marvosym} \emph{after} \tikzsymbols, +% \LaTeX{} generates an error-message because \verb|\Smiley| has +% already been defined. +% +% If you load \Package{marvosym} \emph{before} \tikzsymbols, +% \Package{tikzsymbols} will overwrite \Package{marvosym}'s Smiley (and Coffeecup) and no +% error-message is generated (if you like the \verb|\Smiley| from +% marvosym more, use the \tikzsymbols{} option \verb|marvosym| +% or \Option{prefix}). +% +% \subsection*{babel} +% +% If you encounter an error message like +% \begin{verbatim} +% Argument of \pgffor@next has an extra } +% \end{verbatim} +% while using \pkg{babel} with e.g. language \enquote{francais} +% and for example \cs{Cooley} you may add +% \begin{verbatim} +% \usetikzlibrary{babel} +% \end{verbatim} +% to your preamble. This should (hopefully) fix the problem. +% +% \end{comment} +% +% +% +% +% +% +% \section{FAQ (Known errors and problems)} +% +% Or \enquote{Questions I assume would be frequently asked, if people would +% frequently ask questions}. +% +% \subsection{How to get rid of the space after each symbol?} +% +% By default the package adds \cs{xspace} after each command. +% To remove it use the option \opt{after-symbol}. Using +% \begin{verbatim} +% \tikzsymbolsset{after-symbol={}} +% \end{verbatim} +% removes the \cs{xspace} command and thus the unwanted space. +% +%^^A This was done way back and today I most probably wouldn't do it anymore, +%^^A but it stayed now for around $4$ years and I don't know if I really should get +%^^A rid of it by default. +% +% +% +% +% \subsection{Using the symbols causes unwanted \meta{problem}. How could I get rid of it?} +% +% This could have something to do with question \ref{sec:Q:store-symbol} +% (after you made sure that the symbols cause the problem). +% Try using setting the option \opt{usebox=false} and recompile a few +% times. If the problem persists, please send a bug report (\cref{sec:bug}). +% +% \subsection{I am getting the error-message \texttt{Argument of \textbackslash pgffor@next has an extra \}}} +% +% If you encounter an error message like +% \begin{verbatim} +% Argument of \pgffor@next has an extra } +% \end{verbatim} +% while using \pkg{babel} with e.g. language \enquote{francais} +% and for example \cs{Cooley} you may add +% \begin{verbatim} +% \usetikzlibrary{babel} +% \end{verbatim} +% to your preamble. This should (hopefully) fix the problem. +% +% +% \subsection{Another package I load already defines \meta{symbol}.} +% +% You can override pretty much every symbol simply by loading +% \pkg{tikzsymbols} last as it defines the symbols via +% \cs{DeclareDocumentCommand} (see \pkg{xparse}). +% +% If you want to use the symbols of both packages you may have +% a look at option \opt{prefix}. +% +% +%^^A \subsection{Why is it important to know that this package stores symbols in boxes +%^^A and reuses them instead of creating a new picture every time?} +% \subsection{Does this package store symbols in boxes +% and reuses them instead of creating a new picture every time?} +% \label{sec:Q:store-symbol} +% +% Yes, it does. It can become a problem if \LaTeX\ runs out of boxes. If this happens, +% use \opt{usebox=false}. +% +% Furthermore, \pkg{tikz} allows to reference pictures using e.g.\ +% \opt{remember picture}. This also influences the symbols +% of \pkg{tikzsymbols}. As those symbols are stored and +% copied for printing, labels attached to the symbols get repeated. +% In this case, also try using \opt{usebox=false} (or try the option +% \opt{remember-picture=false}). +% +%^^A Another problem is that if a label is added to a symbol +%^^A (for example by the \pkg{tikz} option \opt{remember picture}) +%^^A then this label is repeated every time the symbol is used. If you have +%^^A already used the symbol \emph{before} the label is added, nothing happens +%^^A as a copy of the symbol without the label is used. If it is used the first time, +%^^A then the label is also stored and repeated every time the symbol is used later. +%^^A This behavior can also be fixed by \opt{usebox=false} or adding +%^^A a \pkg{tikz} style by \opt{append-style}. +% +% +% \subsection{Are the symbols created with the environment \texttt{tikzpicture}?} +% +% Yes, they are. +% +% +% +% +% +% +% +% +% \section{Nobody is perfect} +% \label{sec:bug} +% +% 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 (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. +% This can also be the reason why I may need some time to answer +% the mail. +% +% As I am also new to GitHub, I also may take longer to answer, at least until I +% figured out how to get a mail if a new issue is created. +% +% Suggestions are also welcome. +% +% +% +% +% +% \section{Danksagung} +% +% I would like to thank all users for providing bug reports +% and helping to improve this package. +% +% Furthermore many thanks to my brother helping me improving +% the symbols. +% +% \section{Changes} +% +% See the \enquote{README.md} file. +% +% +% \end{documentation} +% \begin{implementation} +% +% \iffalse meta-comment +%: subsec: Code +% \fi +% +% There is not much to see, all this symbols were created with \Package{tikz}. +% But it may helps you (somehow). +% +% PS. Enter at own risk, bad code and grammar up ahead. +% +% +% +% +% +% +% \section{\LaTeX3 code} +% +% +% +% \begin{macrocode} +%<@@=tikzsymbols> +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% +%\changes {v1.0} {2013/01/19} {Initial version} +%\changes {v1.05} {2013/02/13} {Deleted a \enquote{t} in the BasicTree-code, shortened the trunk from the tree a bit, renamed some codes, made an index} +%\changes {v1.6} {2013/02/14} {Now \enquote{Person} can be used in sections, etc.} +%\changes {v1.6} {2013/02/14} {Now an error message is generated if the last parameter of \enquote{BasicTree} is neither \enquote{leaf} nor empty.} +%\changes {v1.6} {2013/02/14} { New options: draft and final. If in documentclass the option \enquote{draft} is defined, the package recognizes it. Plus some warnings if you use class option draft/final with package option tree=on/off.} +%\changes {v1.6} {2013/02/14} { Renamed \enquote{tikzsymbolsaftersymbolinput} to \enquote{tikzsymbolsaftersymbolinput}} +%\changes {v1.61} {2013/02/17} {Made an invisible box in BasicTree.} +%\changes {v1.65} {2013/02/17} {Improved BasicTree; New symbols \enquote{Schaler/peeler}, Laughey, Walley, Ninja; but didn't improve the source-description} +%\changes {v1.7} {2013/02/28} {New symbols, etc.} +%\changes {v2.0} {2013/03/07} {Fixed Bugs, improved BasicTree, new option \enquote{marvosym}, new symbol} +%\changes {v2.2} {2013/03/23} {Now you can use negative scaling. Include \Makro{@ifpackageloaded}. Did something else, I can't remember} +%\changes {v2.5} {2013/04/18} {New option: draftabsolute, changed the documentation a bit} +%\changes {v3.0} {2013/07/21} {Changed the documentation} +%\changes {v3.0} {2013/07/21} {Replaced \cs{let} by \cs{tikzsymbols@let}} +% \changes{v3.0}{2013/07/21}{Changed symbol code} +% \changes{v3.0}{2013/07/26}{Using \cs{changes{}{}{}} correctly (hopefully)} +% \changes{v3.0}{2013/07/21}{Changed output of \enquote{absolute} option} +% \changes{v3.0b}{2014/10/19}{Deleted non ASCII characters in der .sty file.} +% \changes{v3.0d}{2014/10/29}{\cs{tikzsymbolsscl} to \cs{tikzsymbols@scl}} +% \changes{v3.0e}{2014/10/29}{\cs{tikzsymbolsDeclareRobustCommand} to \cs{tikzsymbols@Declare@Robust@Command}} +% \changes{v3.0f}{2014/10/29}{\cs{tikzsymbolsbxPrmtrstore} to \cs{tikzsymbols@bx@Prmtrstore}} +% +% \changes{v3.0g}{2015/10/01}{Deleted package \Package{calc}, using now \cs{pgfmathsetlength} instead of \cs{setlength}.} +% +% \changes{v3.0h}{2015/10/13}{Added a missing \cs{fi} into the code. } +% +% \changes{v3.01alpha}{2015/10/03}{Started from new using \LaTeX3} +% +% \changes{v3.38}{2015/10/03}{Nearly finished translating the code to +% \LaTeX3. Himmel! Das war einfach nur zach! Muss aber noch den +% \LaTeXe\ Code löschen.} +% +% \changes{v3.40}{2015/10/03}{Now everything is written in \LaTeX3.} +% +% \changes{v3.50}{2015/10/03}{Now it compiles without error (without +% using any command or options.)} +% +% \changes{v3.58}{2015/10/04}{Fixed every error occurring while using +% the symbols without optional arguments and package +% options. Something is still wrong with \cs{@@_Basic_Tree_off:nnnnn}} +% +% \changes{v3.60}{2015/10/05}{Fixed \cs{@@_Basic_Tree_off:nnnnn}} +% +% \changes{v3.70}{2015/10/05}{Now every draftbox has the correct +% size.} +% +% \changes{v3.75}{2015/10/05}{\cs{tikzsymbolsuse} works now.} +% +% \changes{v3.9}{2015/10/8}{Various fixes, new command \Makro{tikzsymbolsuse} and started to write a new documentation.} +% \changes{v3.95}{2016/03/20}{Removed the only-preambility of \Makro{tikzsymbolsset}.} +% \changes{v3.95}{2016/03/20}{Changed name of key-group from 'preamble' to +% 'document'.} +% +% \changes{v3.9}{2016/04/04}{Added \Makro{@ifackagelater}.} +% \changes{v3.99}{2016/04/04}{As advised undid my version-resetting.} +% \changes{v4.0}{2016/03/20}{Finished reworking the code.} +% \changes{v4.0}{2016/26/12}{Added \cs{Nudelholz} bzw. \cs{rollingpin}.} +% +% \changes{v4.02}{2017/05/14}{Added option 'baseline=true/false' to fix a some strange +% behaviors with \pkg{todonotes}.} +% \changes{v4.02}{2017/05/14}{Defined the tikz-style '/\_\_tikzsymbols' which is used to implement 'baseline'.} +% +% \changes{v4.03}{2017/08/08}{New symbols: \cs{Sleepey} and \cs{dSleepey}.} +% \changes{v4.04}{2017/08/08}{New symbol: \cs{SchrodingersCat}.} +% +% \changes{v4.10}{2018/04/11}{New option: \opt{append-style}.} +% \changes{v4.10}{2018/04/11}{New option: \opt{remember-picture}.} +% \changes{v4.10}{2018/04/11}{Change how \opt{baseline} works (internal).} +% \changes{v4.10}{2018/04/11}{Delete invisible sign (I \emph{hate} those).} +% \changes{v4.10}{2018/04/11}{New symbolpair: \cs{Knoblauchpresse} and \cs{garlicpress}.} +% \changes{v4.10}{2018/04/11}{Option \opt{draft} and \opt{final} are local now.} +% +% \changes{v4.10a}{2018/05/16}{Removed colors from \cs{Strichmaxerl}.} +% \changes{v4.10b}{2019/02/07}{Replaced \cs{c_zero} by \texttt{0}.} +% \changes{v4.10c}{2019/02/08}{Fixed \texttt{xshift} and \texttt{yshift} by adding dimensions. Fixes \cs{Fire}, \cs{Candle} and \cs{(d)Laughey}.} +% +% The first lines are always the same: What do I need, what is the +% package named. +% \begin{macrocode} +\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}} +\@ifpackageloaded{expl3}{}{\RequirePackage{expl3}} +\@ifpackagelater{expl3}{2018/02/21} + {} + {% + \PackageError { tikzsymbols }{ Support~package~expl3~too~old } + {% + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~tikzsymbols~will~abort! + }% + \endinput + } +\ProvidesExplPackage + {tikzsymbols} + {2019/02/08} + {4.10c} + {Some symbols created using tikz and LaTeX3.} +\@ifpackageloaded { tikz } {} { \RequirePackage { tikz } } +\@ifpackageloaded { xcolor } {} { \RequirePackage { xcolor } } +\@ifpackageloaded { xspace } {} { \RequirePackage { xspace } } +\@ifpackageloaded { l3keys2e } {} { \RequirePackage { l3keys2e } } +% \end{macrocode} +% +% Furthermore we need to load some libraries from \Package{tikz}, I +% hope these \Makro{ExplSyntax...} don't break anything. +% \begin{macrocode} +\ExplSyntaxOff +\usetikzlibrary {arrows,decorations.pathmorphing,trees} +\ExplSyntaxOn +% \end{macrocode} +% +% +% \begin{macro}{ +% \l_@@_if_scale_negative_bool , +% \g_@@_if_opt_tree_print_bool , +% \l_@@_if_opt_draft_bool , +% \g_@@_if_opt_marvosym_bool , +% } +% Booleans we later need, \cs{l_@@_if_scale_negative_bool} is set true +% in symbols which need some extra code if the scaling is negative +% (like \verb|\Chair|). The other booleans are used for the package +% options and are therefor globally. +% \begin{macrocode} +\bool_new:N \l_@@_if_scale_negative_bool +\bool_new:N \g_@@_if_opt_tree_print_bool +\bool_new:N \l_@@_if_opt_draft_bool +\bool_new:N \g_@@_if_opt_marvosym_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 +% \end{macrocode} +% +% +% +% +% \begin{macro}{ +% \g_@@_command_prefix_tl , +% \l_@@_tikzsymbols_after_symbol_tl , +% \g_@@_current_situation_tl , +% \g_@@_scale_abs_tl , +% \c_@@_leaf_tl , +% \c_@@_black_tl , +% } +% +% I think the names speak for themselves, +% \cs{g_@@_command_prefix_tl} is used in the option \Option{prefix} +% and adds its content to the command names as a prefix, by default +% it is empty. +% +% \Makro{g_tikzsymbols_after_symbol_tl} adds its content to the +% document after the symbol is used. +% +% In \Makro{l_@@_current_situation} is a storage for the +% current font-size and color-configurations which is needed when +% defining boxes. +% +% \Makro{l_@@_scale_abs_tl} safes absolute scaling of a symbol; +% could have used \Makro{l_tmpa_tl}. It is a \texttt{tl} because +% using a \texttt{fp} would have required me to use +% \Makro{fp_use:N} every time. I'm lazy, I know. +% +% The last two are constants and are used to check user specific +% input at some commands (\Makro{BasicTree} and \Makro{Ninja} I believe). +% \begin{macrocode} +\tl_clear_new:N \g_@@_command_prefix_tl +\tl_new:N \l_@@_tikzsymbols_after_symbol_tl +\tl_new:N \l_@@_current_situation_tl +\tl_new:N \l_@@_scale_abs_tl +\tl_const:Nn \c_@@_leaf_tl { leaf } +\tl_const:Nn \c_@@_black_tl { black } +% \end{macrocode} +% \end{macro} +% +% Setting the default value and yes, I know that you maybe should not +% use \Makro{xspace}, but I do it anyway: +% \begin{macrocode} +\tl_set:Nn \l_@@_tikzsymbols_after_symbol_tl { \xspace } +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \l_@@_save_global_scale_for_later_because_no_better_idea_tl +% \end{macrocode} +% +% \begin{macrocode} +\tl_new:N \l_@@_symbol_name_tl +\tl_new:N \l_@@_symbol_options_clist +% \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} +% An obsolete macro. Is not defined anymore. +% \begin{macrocode} +%\cs_set_eq:NN \tikzsymbolsaftersymbolinput {} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ +% \l_@@_Strichmaxerl_x_LA_fp , +% \l_@@_Strichmaxerl_x_RA_fp, +% \l_@@_Strichmaxerl_x_LB_fp, +% \l_@@_Strichmaxerl_x_RB_fp, +% \l_@@_Strichmaxerl_y_LA_fp, +% \l_@@_Strichmaxerl_y_RA_fp, +% \l_@@_Strichmaxerl_y_LB_fp, +% \l_@@_Strichmaxerl_y_RB_fp, +% \@@_Strichmaxerl_x_max_fp, +% \@@_Strichmaxerl_x_min_fp, +% } +% +% Needed for the plain vanilla boxes of \Makro{Strichmaxerl} for +% the length (\texttt{x}) and height (\texttt{y}). +% \begin{macrocode} +\fp_new:N \l_@@_Strichmaxerl_x_LA_fp +\fp_new:N \l_@@_Strichmaxerl_x_RA_fp +\fp_new:N \l_@@_Strichmaxerl_x_LB_fp +\fp_new:N \l_@@_Strichmaxerl_x_RB_fp +% \end{macrocode} +% \begin{macrocode} +\fp_new:N \l_@@_Strichmaxerl_y_LA_fp +\fp_new:N \l_@@_Strichmaxerl_y_RA_fp +\fp_new:N \l_@@_Strichmaxerl_y_LB_fp +\fp_new:N \l_@@_Strichmaxerl_y_RB_fp +% \end{macrocode} +% \begin{macrocode} +\fp_new:N \@@_Strichmaxerl_x_max_fp +\fp_new:N \@@_Strichmaxerl_x_min_fp +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% \begin{macro} { \l_@@_Moai_thickness_dim } +% +% It is used inside \Makro{Moai}. I figured that depending +% on the scaling the line-thickness of \Makro{Moai} should change +% its value (bad explained, please just look at the code). +% +% \begin{macrocode} +\dim_new:N \l_@@_Moai_thickness_dim +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro} { \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist } +% Store every command defined by this package. I may delete them. +% \begin{macrocode} +\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} +% +% +% \begin{macro}{\l_@@_tmpa_tl } +% Some scratch variables +% \begin{macrocode} +\tl_new:N \l_@@_tmpa_tl +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Messages} +% +% Nothing special happens in this subsection. +% +% \begin{macro}{ obsolete-option } +% Message for obsolete options. +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { obsolete-option } + { + Option \ '#1' \ is \ obsolete. \ + Please \ use \ '#2' \ instead. + }{ + The \ option \ you \ used \ is \ obsolete. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{undefined-command} +% Message for undefined commands used by \Makro{tikzsymbolsuse}. +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { undefined-command } + { + Undefined \ Control \ sequence: \ '#1'. \ + Did \ you \ write \ the \ name \ correctly? + }{ + The \ command \ is \ not \ defined. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ obsolete-command } +% Message for obsolete commands (\Makro{Person}, etc.) +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { obsolete-command } + { + Command \ '#1' \ is \ obsolete. \ + Please \ use \ '#2' \ instead. + } + { + The \ command \ you \ used \ is \ obsolete. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ tree } +% Error message for \Makro{BasicTree}. I hope the text is understandable. +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { tree } + { + Parameter \ '#1' \ cannot \ be \ used. \ + The \ last \ parameter \ has \ either \ to \ be \ + 'leaf' \ or \ has \ to \ be \ empty. + } + { + The \ fourth \ mandatory \ argument \ of \ '\protect\BasicTree' \ + has \ either \ to \ be \ leaf \ or \ empty. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ marvosym } +% Message if option \Option{marvosym} is used, but the package not +% loaded at all. +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { marvosym } + { + Use \ option \ 'marvosym' \ only\ + if \ you \ load \ package \ 'marvosym'. \ + }{ + Either \ load \ package \ 'marvosym' \ or \ + delete \ the \ tikzsymbols \ option \ 'marvosym'. \ + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ Changey-number-too-large } +% \changes{v3.95}{2016/03/20}{New} +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { Changey-number-too-large } + { + Changey's \ mood \ has \ to \ be \ between \ + -2 \ and \ 2 \ (currently:\ '#1' ). + }{ + Given \ number \ is \ too \ large \ (small), \ please + \ use \ an \ number \ between \ -2 \ and \ 2. + \msg_see_documentation_text:n { tikzsymbols } + } +\msg_new:nnnn { tikzsymbols } { cChangey-number-too-large } + { + cChangey's \ mood \ has \ to \ be \ between \ + -2 \ and \ 2 \ (currently:\ '#1' ). + }{ + Given \ number \ is \ too \ large \ (small), \ please + \ use \ an \ number \ between \ -2 \ and \ 2. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ tikzsymbolsaftersymbolinput } +% \changes{v3.95}{2016/03/20}{New} +% \begin{macrocode} +\msg_new:nnnn { tikzsymbols } { tikzsymbolsaftersymbolinput } + { + The \ command \ \exp_not:N\tikzsymbolsaftersymbolinput is \ + obsolete. \ Please \ use \ the \ option \ 'after-symbol' \ instead. + }{ + \exp_not:N\tikzsymbolsaftersymbolinput is \ not \ supported \ anymore. + \msg_see_documentation_text:n { tikzsymbols } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ 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}{ symbol-name-unknown } +% \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} +% +% +% +% +% +% +% +% +% +% +% \subsection{Helping Commands} +% \label{sec:helping-commands} +% +% I define some macros which will help me to write less. +% +% +% +% +%^^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:Nn \l_@@_scale_abs_tl { \fp_abs: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. +% +% Note to self: DO NOT USE DIM! Multiplications do not work. +% \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}{ \@@_provide_savebox:nn } +% \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 \@@_provide_savebox:nn #1#2 + { + \tl_set:Nx \l_@@_current_situation_tl + { + \bool_if:NTF \l_@@_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_default:nn, +% \@@_provide_savebox_and_use:nn } +% 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_default:nn #1#2 + { + \@@_provide_savebox:nn {#1} {#2} + \@@_use_savebox:n {#1} + } +\cs_set_eq:NN \@@_provide_savebox_and_use:nn + \@@_provide_savebox_and_use_default:nn +% \end{macrocode} +% \end{macro} +% +% +% To make this package \pkg{todonotes} safe: +% \begin{macrocode} +\pgfkeys{ /@@/baseline /.style= { baseline=default } } +\pgfkeys{ /@@/.style= { /@@/baseline } } +% \end{macrocode} +% +% +% \subsection{Keys} +% \label{sec:keys} +% +% Now let's define the keys for this package. Using \LaTeX3 makes the +% whole thing a bit easier. All keys (or most) are in a group. I may +% delete it because it may be not necessary. +% \begin{macrocode} +\keys_define:nn { tikzsymbols } + { +% \end{macrocode} +% +% \begin{macro}{ final } +% Its the final option, deddepi, deedidbtutp. Nothing special. +% \begin{macrocode} + final .bool_set_inverse:N = \l_@@_if_opt_draft_bool , + final .default:n = { true } , +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ draft } +% This option can be set to three values: true, false and absolute. I +% decided that \Option{draft=absolute} is obsolete and that +% \Option{draft=true} replaces this option. Of course, the 'absolute' is +% still available, but gives a warning when used. +% \begin{macrocode} + draft .choices:nn = + { true , false , absolute } + { + \int_case:nn { \l_keys_choice_int } + { + { 1 } { \bool_set_true:N \l_@@_if_opt_draft_bool } + { 2 } { \bool_set_false:N \l_@@_if_opt_draft_bool } + { 3 } + { + \msg_error:nnnn { tikzsymbols } { obsolete-option } + { draft = absolute } { draft = true } + \bool_set_true:N \l_@@_if_opt_draft_bool + } + } + } , + draft .default:n= { false } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ draftabsolute } +% Obsolete option. Old name for \Option{draft=absolute} which is +% itself an old name for \Option{draft=true}. Don't use this option. +% \begin{macrocode} + draftabsolute .code:n = + { + \msg_error:nnnn { tikzsymbols } { obsolete-option } + { draftabsolute } { draft = true } + \bool_set_true:N \l_@@_if_opt_draft_bool + } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ marvosym } +% Sets the marvosym-boolean to it respective value. +% \begin{macrocode} + marvosym .bool_gset:N = \g_@@_if_opt_marvosym_bool , + marvosym .default:n = { true } , + marvosym .groups:n = { only-package } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ usebox } +% Don't want to speed up the code due to random reasons? Set this +% option to 'false'. +% \begin{macrocode} + usebox .choice: , + usebox/true .code:n = + { + \cs_set_eq:NN + \@@_provide_savebox_and_use:nn + \@@_provide_savebox_and_use_default:nn + } , + usebox/false .code:n = + { + \cs_set_eq:NN + \@@_provide_savebox_and_use:nn + \use_ii:nn + } , + usebox .default:n = { true } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ prefix } +% Sets the prefix of the commands. If for example \Option{prefix} is +% set to \Option{tikz} this prefix is added to the command +% names. \Makro{Sieb} will be \Makro{tikzSieb}. +% \begin{macrocode} + prefix .tl_gset:N = \g_@@_command_prefix_tl , + prefix .default:n = { tikzsymbols } , + prefix .groups:n = { only-package } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ tree } +% An old option, you should use \Option{draft=true} instead, but it +% is not obsolete. For historic reasons this key still accepts 'on' +% and 'off'. +% \begin{macrocode} + tree .choices:nn = + { true , on , false , off } + { + \int_compare: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 } , +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ after-symbol } +% Available as package option, but should be used +% using \Makro{tikzsymbolsuse}. +% \begin{macrocode} + after-symbol .tl_set:N = \l_@@_tikzsymbols_after_symbol_tl , + after-symbol .default:n= { \xspace } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ append-style } +% \begin{macrocode} + append-style .code:n = { \pgfkeys{ /@@/.append ~ style= {#1} } } , + append-style .default:n = { } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ baseline } +% \begin{macrocode} + baseline .choice: , + baseline / true .code:n = { \pgfkeys{ /@@/baseline/.style={ baseline=default } } } , + baseline / false .code:n = { \pgfkeys{ /@@/baseline/.style={ } } } , + baseline .default:n = { true } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ remember-picture } +% \begin{macrocode} + remember-picture .choice: , + remember-picture / true .meta:n = { append-style = { /tikz/remember~picture = true } } , + remember-picture / false .meta:n = { append-style = { /tikz/remember~picture = false } } , + remember-picture .default:n = { false } , +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ global-scale } +% \begin{macrocode} + global-scale .fp_set:N = \l_@@_global_scale_fp , + global-scale .default:n = { 1 } , +% \end{macrocode} +% \end{macro} +% +% This command has to be set later as +% the command names have not been defined yet. +% \begin{macro}{ symbol-scale } +% \begin{macrocode} + symbol-scale .code:n = + { + \tl_set:Nn \l_@@_save_global_scale_for_later_because_no_better_idea_tl + { + symbol-scale = {#1} , + } + } , + symbol-scale .default:n = { } , +% \end{macrocode} +% \end{macro} +% +% +% +% +% Now we end the key definitions. +% \begin{macrocode} + } +% \end{macrocode} +% +% +% +% We process all options. +% \begin{macro}{ ProcessKeyOptions } +% \begin{macrocode} +\ProcessKeysOptions { tikzsymbols } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ symbol-scale } +% \begin{macrocode} +\keys_define:nn { tikzsymbols } + { + symbol-scale .code:n = + { \keyval_parse:NNn \@@_symbol_scale_i:n \@@_symbol_scale_ii:nn {#1} } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \subsubsection{DeclareDocumentCommand Helpers} +% \label{sec:declaredocumenthelpers} +% +% I define my own \Makro{DeclareDocumentCommand} (well, I am still +% using \Makro{DeclareDocumentCommand}, but I am wrapping some other +% commands around) to be able to add a prefix to the command-name and to +% be able to write \Makro{Command}[] (note the empty brackets, you +% don't need to insert a '1' inside, it is done automatically). +% +% \begin{macro}{ \@@_if_empty:Tn , \@@_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: +% The option has been defined by 'O{none}', so the value inserted if +% no brackets are given is 'none'. If empty brackets are given, +% normally nothing is inserted (and not 'none'). Using this command +% if empty brackets are given 'none' is inserted automatically. This +% safes some error messages. \Makro{ProcessedArgument} is defined in +% the manual of \Package{xparse}. +% \begin{macrocode} +\cs_new:Npn \@@_if_empty:Tn #1#2 + { + \tl_if_empty:nTF {#2} + { \tl_set:Nn \ProcessedArgument {#1} } + { \tl_set:Nn \ProcessedArgument {#2} } + } +\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} +% +% \begin{macro}{ \@@_parse_command_options:n } +% This command helps setting the default value if empty brackets are +% given. The code is copied from the \Package{xparse} package and +% edited to fit my purpose. This command gets the input from the +% options-definition. +% \begin{macrocode} +\cs_new_protected:Npn \@@_parse_command_options:nn #1#2 + { + \clist_clear:N \l_@@_symbol_options_clist + \tl_set:Nn \l_@@_symbol_name_tl {#1} + \@@_parse_command_options:N #2 + \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ \@@_parse_command_options:N } +% This command (also copied) goes through the option-definitions (in +% my case only 'm' and 'O\{...\}') character for character. If 'O' +% is found a (somehow) special command is used. +% \begin{macrocode} +\cs_new_protected:Npn \@@_parse_command_options:N #1 + { + \quark_if_recursion_tail_stop:N #1 + \tl_if_eq:NNTF #1 O + { \@@_parse_option_type_O:w #1 } + { + \tl_if_eq:NNTF #1 S + { \@@_parse_option_type_S:Vw \l_@@_symbol_name_tl #1 } + { \@@_parse_option_type:w #1 } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ \@@_parse_option_type:w } +% Just saves the input in a clist. Does nothing more. +% \begin{macrocode} +\cs_new_protected:Npn \@@_parse_option_type:w #1 + { + \str_case:nnF {#1} + { + { m } { } + } + { \msg_error:nnn { tikzsymbols } { internal-message } { internal-parsing } } + \clist_put_right:Nn \l_@@_symbol_options_clist {#1} + \@@_parse_command_options:N + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ \@@_parse_option_type_O:w } +% Used if an optional argument is found. Saves the default value of +% the optional argument in \Makro{@@_if_empty:nn}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_parse_option_type_O:w #1#2 + { + \clist_put_right:Nn \l_@@_symbol_options_clist + { >{ \@@_if_empty:Tn {#2} } O{#2} } + \@@_parse_command_options:N + } +% \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_@@_symbol_options_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 +% through the second input (argument specifications), stores the +% arguments in a \verb|\l_@@_symbol_options_clist| and adds +% \verb|>{ \@@_if_empty:Tn {#2} }| if an optional argument is +% found. Yeah. I think the rest is self-explaining. +% \begin{macrocode} +\cs_new:Npn \@@_Declare_Document_Command:nnn #1#2#3 + { + \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_@@_symbol_options_clist { } } + { + \cs_if_exist:NT \tikzsymbolsaftersymbolinput + { + \msg_error:nn { tikzsymbols } { tikzsymbolsaftersymbolinput } + } + #3 + \tl_use:N \l_@@_tikzsymbols_after_symbol_tl + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ \@@_Declare_Document_Commands:nnnn } +% Needed for cooking-symbols. Automatically defines the english name +% given in the second argument. +% \begin{macrocode} +\cs_new:Npn \@@_Declare_Document_Commands:nnnn #1#2#3#4 + { + \clist_gput_right:Nn + \g_tikzsymbols_list_of_printing_cooking_with_argument_commands_clist + { + \cs{#1} & \cs{#2} & \oarg{scale} & \tikzsymbolsuse{#1} \\ + } + \prop_gput:Nnn \g_@@_english_commands_prop {#2} {#1} + \@@_Declare_Document_Command:nnn {#1} {#3} {#4} + \@@_let:nn {#2} {#1} + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% +% +% +% \begin{macro}{ \@@_let:nn } +% Used to define the english commands. It's a simple +% \Makro{cs_set_eq:cc} adding the prefix to the command-name. +% \begin{macrocode} +\cs_new:Npn \@@_let:nn #1#2 + { + \cs_set_eq:cc { \g_@@_command_prefix_tl #1 } { \g_@@_command_prefix_tl #2 } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% +%\subsection{Tree commands} +%\label{sec:tree-commands} +% +% +% +% \begin{macro}{ \c_@@_tikz_set_tl } +% First I define \verb|\c_@@_tikz_set_tl|, it contains the setup for +% the tree. This definition is pretty much the definition from the +% \Package{tikz} package. +% \begin{macrocode} +\tl_const:Nn \c_@@_tikz_set_tl + { + \pgfkeys + { + /tikz/.cd , + @@_ld/.style={ level ~ distance=#1ex }, + @@_lw/.style={ line ~ width=#1ex }, + level ~ 1/.style={ @@_ld=0.60, @@_trunk, @@_lw=0.1 ,sibling ~ angle=60 }, + level ~ 2/.style={ @@_ld=0.20, @@_trunk!80!@@_leaf ~ a, @@_lw=.073,sibling ~ angle=70 }, + level ~ 3/.style={ @@_ld=0.25, @@_trunk!60!@@_leaf ~ a, @@_lw=.05,sibling ~ angle=70 }, + level ~ 4/.style={ @@_ld=0.10, @@_trunk!40!@@_leaf ~ a, @@_lw=.025,sibling ~ angle=60 }, + level ~ 5/.style={ @@_ld=0.15, @@_trunk!20!@@_leaf ~ a, @@_lw=.02,sibling ~ angle=60 }, + level ~ 6/.style={ @@_ld=0.08, @@_leaf ~ a, @@_lw=.021,sibling ~ angle=60 }, + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ \@@_Basic_Tree_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_set:Npn \@@_Basic_Tree_aux:nnnnn + { + \bool_if:NTF \l_@@_if_opt_draft_bool + { \@@_Basic_Tree_draft:nnnnn } + { + \bool_if:NTF \g_@@_if_opt_tree_print_bool + { \@@_Basic_Tree_on:nnnnn } + { \@@_Basic_Tree_off:nnnnn } + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ \@@_Basic_Tree_off:nnnnn } +% This command creates not only the plain vanilla draftbox, but also a box +% drawn by \Package{tikz} using the colors of the tree to color the +% lines. If the last argument is 'leaf', the box has a bottom line, if +% it is empty the bottom line disappears. +% \begin{macrocode} +\cs_new:Npn \@@_Basic_Tree_draft:nnnnn #1#2#3#4#5 + { + \group_begin: + \@@_set_scale_abs_tl:n { #1pt + 0.02ex } + \tl_set:Nn \l_tmpa_tl {#5} + \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl + { + \@@_create_draftbox:nn + { (1.669825ex+0.4pt) * \l_@@_scale_abs_tl } + { (1.412645 ex + 0.2pt) * \l_@@_scale_abs_tl } %% 0.2pt = -0.2pt+0.4pt + }{ + \@@_create_draftbox:nn + { (1.39223ex +0.4pt) * \l_@@_scale_abs_tl } + { (1.27265ex + 0.2pt) * \l_@@_scale_abs_tl } %% 0.2pt = -0.2pt+0.4pt + } + \group_end: + } +\cs_new:Npn \@@_Basic_Tree_off:nnnnn #1#2#3#4#5 + { + \group_begin: + \@@_set_scale_abs_tl:n { #1pt + 0.02ex } + \tl_set:Nn \l_tmpa_tl {#5} + \begin{tikzpicture}[ /@@ , scale=#1+0.02ex,x=1ex,y=1ex, + line ~ width=0.4pt * \l_@@_scale_abs_tl] + \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl + { + \draw[#2] (-0.8386,0+0.2pt) -- (-0.8386,1.42); + \draw[#3] (-0.8386,1.42) -- (0.8386,1.42); + \draw[#4] (0.8386,1.42) -- (0.8386,0+0.2pt); + \draw[#3] (0.8386,0+0.2pt) -- (0,0+0.2pt); + \draw[#4] (0,0+0.2pt) -- (-0.8386,0+0.2pt); + }{ + \draw[#2] (-0.6998,0+0.2pt) -- (-0.6998,0.68+0.6); + \draw[#3] (-0.6998,0.68+0.6) -- (0.6998,0.68+0.6); + \draw[#4] (0.6998,0.68+0.6) -- (0.6998,0+0.2pt); + } + \end{tikzpicture}% + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{ \@@_Basic_Tree_on:nnnnn } +% Prints the tree in all its glory. Again, this code is more or less +% \Makro{l_@@_scale_negative_bool} is used in here. +% copy and pasted from the \Package{tikz} manual. +% \begin{macrocode} +\cs_new:Npn \@@_Basic_Tree_on:nnnnn #1#2#3#4#5 + { + \group_begin: + \@@_set_scale_abs_tl:n {#1} + \fp_compare:nNnT {#1} < { 0 } { \bool_set_true:N \l_@@_scale_negative_bool } + \tl_set:Nn \l_tmpa_tl {#5} + \tl_use:N \c_@@_tikz_set_tl + \colorlet { @@_trunk } {#2} + \colorlet { @@_leaf ~ a } {#3} + \colorlet { @@_leaf ~ b } {#4} + \begin{tikzpicture}[ /@@ , x=1ex , y=1ex , line ~ width=0.07ex] + \pgfarrowsdeclare{leaf}{leaf} + { \pgfarrowsleftextend { -0.1ex } \pgfarrowsrightextend { -0.05ex } } + { + \pgfpathmoveto { \pgfpoint { -0.01ex } { 0ex } } + \pgfpatharc { 150 } { 30 } { 0.08ex } + \pgfpatharc {-30 } {-150 } { 0.08ex } + \pgfusepathqfill + } + \tl_if_eq:NNTF \c_@@_leaf_tl \l_tmpa_tl + { + \draw[transparent , scale=#1+0.02ex , line ~ width=0.4pt* \l_@@_scale_abs_tl ] + (-0.8386,0+0.2pt) rectangle (0.8386, 1.42); + }{ + \draw[transparent , scale=#1+0.02ex , line ~ width=0.4pt* \l_@@_scale_abs_tl ] + (-0.6998,0+0.2pt) rectangle (0.6998,0.68+0.6); + } + \pgflowlevel { \pgftransformscale { #1 + 0.02ex } } + { + \coordinate (root) [grow ~ cyclic , rotate=90] child + { + child [line ~ cap=round] foreach \a in { 0 , 1 , 2 } + { + child ~ foreach \b in { 0 , 1 } + { + child ~ foreach \c in { 0 , 1 , 2 } + { child ~ foreach \d in { 0 , 1 } + { + child ~ foreach ~ \leafcolor in { @@_leaf ~ a , @@_leaf ~ b } + { edge ~ from ~ parent ~ [color=\leafcolor,-#5]} + } + } + } + } + edge ~ from ~ parent [shorten ~ >=-0.05ex, serif ~ cm- , line ~ cap=butt] + }; + } + \end{tikzpicture} + \bool_set_false:N \l_@@_scale_negative_bool + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% Thats the end of our tree drawing commands. \Makro{BasicTree} +% itself is defined later. +% +% \subsection{cooking utensils} +% +% Now let's define the cooking utensils (or cooking tools, +% whatever). +% +% \begin{macro}{ \Kochtopf , \pot } +% I think this was my first cooking utensil I made. It's a pot +% containing boiling water. To create the german and english command +% at the same time I use \Makro{@@_Declare_Document_Commands:nnnn}. +% The buildup of this commands, as you saw ob subsection above, is +% alway the same. First is the definition of the savebox. Inside the +% absolute scaling value is safed and then checked if the plain +% vanilla draft-boxes or the tool itself should be printed. The +% draftbox is created via \Makro{@@_create_draftbox:nn} and contains +% the necessary dimensions so that the output of the surroundings of +% the symbol doesn't change\footnote{English, B\"a\"ahh!}. The +% symbol is created using the 'tikzpicture' environment. Yup. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Kochtopf } { pot } { S } + { + \@@_provide_savebox_and_use:nn { Kochtopf_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.47001ex * \l_@@_scale_abs_tl } + { 1.577ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture}[ /@@ , x=2ex, y=2.2ex, + line ~ width=0.07ex * \l_@@_scale_abs_tl , + scale=#1 ] +% \end{macrocode} +% Let's draw the pot. +% \begin{macrocode} + \draw[rounded ~ corners=0.2ex * \l_@@_scale_abs_tl] (0,0.5) -- (0,0) -- (1,0) -- (1,0.5); + \draw (0,0.4) arc [start ~ angle=90, end ~ angle=270, radius=0.1]; + \draw (1,0.4) arc [start ~ angle=90, end ~ angle=-90, radius=0.1]; + \draw (0,0.5) -- (1,0.5) .. controls (1,0.6) and (0,0.6) .. (0,0.5); + \draw (0.6,0.585) arc [start ~ angle=0, end ~ angle=180, radius=0.1]; +% \end{macrocode} +% Let's draw the water. +% \begin{macrocode} + \draw[decorate, decoration= + { snake , amplitude=0.12ex*\l_@@_scale_abs_tl , segment ~ length=0.93ex * \l_@@_scale_abs_tl } ] + (0,0.35) -- (1,0.35); +% \end{macrocode} +% Now the bubbles are printed. +% \begin{macrocode} + \draw (0.45,0.1) circle [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} + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{ \Bratpfanne , \fryingpan } +% I think I wont add text to every command because I think a +% description is not really necessary. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Bratpfanne } { fryingpan } { S } + { + \@@_provide_savebox_and_use:nn { Bratpfanne_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 3.55349ex * \l_@@_scale_abs_tl } + { 1.4525ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.7ex , y=1.4ex , line ~ width=0.07ex * \l_@@_scale_abs_tl, + scale=#1 , decoration= + { + snake , amplitude = 0.05ex * \l_@@_scale_abs_tl , + segment ~ length = 0.408ex * \l_@@_scale_abs_tl + } + ] +% \end{macrocode} +% Drawing the actual fryingpan. +% \begin{macrocode} + \draw[rounded ~ corners = 0.07ex * \l_@@_scale_abs_tl] + (-1,0) -- (1,0) -- (1.5,0.4) -- (-1.5,0.4) -- cycle; + \draw[line ~ width = 0.037ex * \l_@@_scale_abs_tl , rounded ~ corners=0.023ex * \l_@@_scale_abs_tl] + (-1.4,0.3) -- (-3.5,0.3) -- (-3.5,0.25) -- (-1.3,0.25); + \draw[line ~ width=0.023ex * \l_@@_scale_abs_tl ] + (-1.1,0.1) -- (1.1,0.1); +% \end{macrocode} +% The following code prints the \dots\ ahm \dots\ Hitzwellen die aus +% der Pfanne aufsteigen (oder so). +% \begin{macrocode} + \foreach \l_tmpa_tl in { -0.3, 0.3, -1 , 1 } + \draw[line ~ width=0.035ex * \l_@@_scale_abs_tl, decorate] ( \l_tmpa_tl , 0.5 ) -- ( \l_tmpa_tl , 1 ); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Schneebesen , \eggbeater } +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Schneebesen } { eggbeater } { S } + { + \@@_provide_savebox_and_use:nn { Schneebesen_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.56969 ex * \l_@@_scale_abs_tl } + { 1.57985ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + y=2.1ex,x=1.4ex, scale=#1, + line ~ width = 0.01ex * \l_@@_scale_abs_tl * 0.97 + ] + \foreach \l_tmpa_fp in { -0.2 , -0.15, -0.1, -0.05, 0, 0.05, 0.1, 0.15, 0.2 } + \draw (0,0) .. controls ( \l_tmpa_fp , 0.0) and ( \l_tmpa_fp ,0.2) .. (0,0.4); + \fill + [ + line ~ width = 0.05ex * \l_@@_scale_abs_tl , + rounded ~ corners=0.07ex* \l_@@_scale_abs_tl + ] + (-0.05,0.37) -- (0.05,0.37) -- (0.05,0.75) -- (-0.05,0.75) -- cycle; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Sieb , \sieve } +% A sieve, now the lines are not drawn manually, but using the power +% of trigonometric functions and \Package{tikz}. Wasn't really +% necessary, but I did it anyway. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Sieb } { sieve } { S } + { + \@@_provide_savebox_and_use:nn { Sieb_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 3.47799 ex * \l_@@_scale_abs_tl } + { 1.17501 ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.8ex, y=2.8ex,line ~ width=0.02ex * \l_@@_scale_abs_tl , scale=#1 + ] +% \end{macrocode} +% Drawing a simple line to hold the sieve. +% \begin{macrocode} + \draw[line ~ width=0.09ex* \l_@@_scale_abs_tl ] (-0.2,0) -- (1.01,0); +% \end{macrocode} +% Drawing halved circles with decreasing radius. +% \begin{macrocode} + \foreach \l_tmpa_fp in { 0.2 , 0.25 , ... , 0.551 } + \draw (\l_tmpa_fp,0) arc [start ~ angle=180, end ~ angle=360, radius=0.6-\l_tmpa_fp]; +% \end{macrocode} +% Drawing the vertical lines of the sieve. Ahm, I may should explain +% how this code works. \Makro{l_tmpa_fp} (again misused I think) +% contains the starting point of the lines which will go from top to +% bottom. +% +% Our sieve is looking like this at the moment: +% +%\begin{center} +%\begin{tikzpicture}[scale=5] +% \draw[very thick] +% (-0.2,0) node [ anchor=east ]{-0.2} -- (1.01,0) node [ anchor=west ]{1.01}; +% \draw[dashed] (0.6,-0.5) -- (0.6,0.1); +% \draw (0.6,0) node [anchor=south west] {0.6}; +% \foreach \x in { 0.2 , 0.25 , ... , 0.551 } +% \draw (\x,0) arc [start angle=180, end angle=360, radius=0.6-\x]; +%\end{tikzpicture} +%\end{center} +% +% The largest circle end at the coordinate (1,0) and so its radius is $r=0.4$. +% Now we want to draw a line from the beginning of a smaller circle +% to the largest circle. We take for example the next smaller circle: +% +% \begin{center} +%\begin{tikzpicture}[scale=5] +% \draw[very thick] (-0.2,0) node [ anchor=east ]{-0.2} -- (1.01,0) node [ anchor=west ]{1.01}; +% \draw[dashed] (0.6,-0.5) -- (0.6,0.1); +% \draw (0.6,0) node [anchor=south west] {0.6}; +% \draw[dashed] (0.2,0) arc [start angle=180, end angle=360, radius=0.4]; +% \draw (0.3,0) node[above=1pt]{0.3} arc [start angle=180, end angle=360, radius=0.6-0.3] node [above]{0.9}; +% \draw[brown,dashed,->] (0.6,0) -- node[right]{0.4} ( {0.6 - cos ( 45 ) *0.4 },{ sin ( -45 )*0.4 }); +%\end{tikzpicture} +% \end{center} +% +% The dashed line shows the largest circle. The only things we know are +% the length $l$ from the middle of the circle (0.6 , 0) to the starting point (0.9 , 0): +% $l=0.9-0.6$ and we know the radius of the circle: $r=0.4$. The next picture \dots +% pictures this: +% +% \begin{center} +%\begin{tikzpicture}[scale=5] +% \draw[thick] (-0.2,0) -- (1.01,0) ; +% \draw[dashed] (0.6,-0.5) -- (0.6,0.1); +% \draw[dashed] (0.2,0) arc [start angle=180, end angle=360, radius=0.4]; +% \draw (0.3,0) arc [start angle=180, end angle=360, radius=0.6-0.3] ; +% \draw[green,very thick] (0.6,0) -- node [above,fill=white] {$l= 0.9-0.6=0.3$} (0.9,0); +% \draw[red,very thick] (0.9,0) -- node [right,fill=white] {$h=?$} ( 0.9, { -0.4 * sin( acos( ( 0.9 - 0.6 ) /0.4) ) } ); +% \draw[brown] (0.6,0) -- node [left=8pt,fill=white] {$r=0.4$} ( 0.9, { -0.4 * sin( acos( ( 0.9 - 0.6 ) /0.4) ) } ); +% \draw[orange,very thick] (0.8,0) node [anchor=north east] {$\alpha$} arc [start angle=0, end angle={-acos( ( 0.9 - 0.6 ) /0.4)}, radius=0.2]; +%\end{tikzpicture} +% \end{center} +% +% We have the length and the radius and need the height $h$. The easiest way would +% be the use of the sinus: $\sin(\alpha)=\frac{h}{r}$, but we don't have $\alpha$, +% so we have to make an extra calculation: +% +%\begin{align} +% \cos(\alpha) &= \frac{ l }{ r } = \frac{0.9-0.6}{0.4} && / \arccos(...) \\ +% \alpha &= \arccos\bigg( \frac{0.9-0.6}{0.4} \bigg) +%\end{align} +% +% Now we have the angle $\alpha$ and can calculate the height $h$: +% +%\begin{align} +% -\sin(\alpha) &= \frac { h } { 0.4 } && / \cdot 0.4 \\ +% h &= -0.4 \cdot \sin(\alpha) && / \alpha = ... \\ +% h &= -0.4 \cdot \sin\bigg[\arccos\bigg( \frac{0.9-0.6}{0.4} \bigg)\bigg] +%\end{align} +% +% And to use it as a overall formula: +% +%\begin{equation} +% h = -0.4 \cdot \sin\bigg[\arccos\bigg( \frac{ \backslash l\_tmpa\_fp -0.6 }{0.4} \bigg)\bigg] +%\end{equation} +% +% Using this formula we can draw the line (\textbackslash l\_tmpa\_fp,0) -{}- (\textbackslash l\_tmpa\_fp,h): +% +% Something similar is used for the horizontal lines. +% +% \begin{macrocode} + \foreach \l_tmpa_fp in { 0.95,0.9,...,0.249 } + \draw (\l_tmpa_fp,0) -- + ( \l_tmpa_fp, { -0.4 * sin( acos( ( \l_tmpa_fp - 0.6 ) /0.4) ) } ); + \foreach \y in { -0.05 , -0.1 , ... , -0.351 } + \pgfmathsetmacro{\x}{0.4*cos( asin( \y /0.4 ) )} + \draw ({0.6 - \x },\y) -- ({ 0.6 +\x},\y); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% I hope I was able to explain it. +% \end{macro} +% +% +% +% +% \begin{macro}{ \Purierstab , \blender } +% Ein P\"urierstab \dots\ ja. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Purierstab } { blender } { S } + { + \@@_provide_savebox_and_use:nn { Purierstab_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.76ex * \l_@@_scale_abs_tl } + { 1.575ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.3ex , y=2.2ex, line ~ width=0.07ex * \l_@@_scale_abs_tl ,scale = #1 + ] + \draw[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ] + (0,0) -- (0.3,0) -- (0.15,0.1) --cycle; + \fill[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ] + (0.15,0.3) -- (0.24,0.4) -- (0.24,0.7) -- (0.06,0.7) -- (0.06,0.4) -- cycle; + \draw (0.15,0.4) -- (0.15,0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Dreizack , \trident } +% A trident, an important tool to check if potatoes are cooked enough. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Dreizack } { trident } { S } + { + \@@_provide_savebox_and_use:nn { Dreizack_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.265ex * \l_@@_scale_abs_tl } + { 1.575ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.3ex , y=2.2ex , line ~ width=0.035ex * \l_@@_scale_abs_tl , scale = #1 + ] + \fill[ rounded ~ corners=0.07ex * \l_@@_scale_abs_tl * 0.99 ] + (0,0) -- (0,0.4) -- (0.1,0.4) -- (0.1,0.0) -- cycle; + \draw (0.05,0) -- (0.05,0.7); + \draw[rounded ~ corners=0.07ex * \l_@@_scale_abs_tl *( 1 - \l_@@_scale_abs_tl /50 ] + (0,0.7) -- (0,0.55) -- (0.05,0.55) -- (0.1,0.55) -- (0.1,0.7); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Backblech , \bakingplate } +% With holes. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Backblech } { bakingplate } { S } + { + \@@_provide_savebox_and_use:nn { Backblech_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.31545ex * \l_@@_scale_abs_tl } + { 1.57ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=6.53ex , y=5ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale = #1 + ] + \filldraw[rounded ~ corners=0.09ex * \l_@@_scale_abs_tl ] (0,0) rectangle (0.3,0.3); + \foreach \xI/\xII in { 0.1/-0.025 , 0.2/0.325 } + \draw[rounded ~ corners=0.07ex * \l_@@_scale_abs_tl , line ~ width=0.03ex* \l_@@_scale_abs_tl ] + (\xI,0) -- (\xII,0) -- (\xII,0.3) -- (\xI,0.3); + \foreach \@@_BackblechlochX in { 0.007 , 0.293 } + \foreach \@@_BackblechlochY in { 0.007 , 0.293 } + \fill[white] (\@@_BackblechlochX, \@@_BackblechlochY) circle [radius=0.02ex]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Ofen , \oven } +% Ein Ofen. Sieht eigentlich so aus wie der zu Hause. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Ofen } { oven } { S } + { + \@@_provide_savebox_and_use:nn { Ofen_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.07ex * \l_@@_scale_abs_tl } + { 1.57ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.50ex , y=0.5ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1 + ] + \draw (0,0) rectangle (4,3); + \draw (0.25,0.25) rectangle (3.75,2); + \foreach \@@_Ofenschalter in {0.5,1.1,2.9,3.5} + \fill (\@@_Ofenschalter,2.5) circle [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}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Pfanne , \pan } +% A pan with a wave-decoration. Resembles the one at home. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Pfanne } { pan } { S } + { + \@@_provide_savebox_and_use:nn { Pfanne_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 3.034ex * \l_@@_scale_abs_tl } + { 0.78ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.3ex , y=2.3ex , line ~ width=0.09ex * \l_@@_scale_abs_tl , scale=#1 + ] + \draw [rounded ~ corners = 0.023ex * \l_@@_scale_abs_tl ] + (0,0) -- (0.9,0) -- (1,0.3) -- (-0.1,0.3) -- cycle; + \draw (-0.2,0.22) -- (-0.08,0.22); + \draw (0.97,0.22) -- (1.08,0.22); + \draw + [ + decorate , decoration= + { + snake,amplitude =.046ex* \l_@@_scale_abs_tl , + segment ~ length = 0.82ex* \l_@@_scale_abs_tl + }, + line ~ width=0.05ex* \l_@@_scale_abs_tl + ] + (-0.05,0.1) -- (0.95,0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Herd , \cooker } +% Needed to cook things. Is pretty much looks exactly like the one +% at home. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Herd } { cooker } { S } + { + \@@_provide_savebox_and_use:nn { Herd_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.08ex * \l_@@_scale_abs_tl } + { 1.58ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex , y=1ex , line ~ width= 0.04ex * \l_@@_scale_abs_tl , scale = #1 + ] + \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) rectangle (2,1.5); + \foreach \y/\radius in { 0.45/0.35 , 0.45/0.2 , 1.15/0.21 } + \draw (0.5,\y) circle [radius=\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}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Saftpresse , \squeezer } +% We have one of these, I still think its useful. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Saftpresse } { squeezer } { S } + { + \@@_provide_savebox_and_use:nn { Saftpresse_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.87ex * \l_@@_scale_abs_tl } + { 1.62ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1.2ex , y=1ex, line ~ width=0.07ex * \l_@@_scale_abs_tl ,scale=#1 + ] + \draw[rounded ~ corners=0.1ex * \l_@@_scale_abs_tl ] + (0,0) rectangle (1.5,0.85) -- cycle; + \draw (0,0.7) -- (1.5,0.7); + \foreach \xi/\xii in { 0.3/1.2 , 0.45/1.05 , 0.65/0.85 } + \draw[rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] + (\xi,0.7) -- (0.75,1.55) -- (\xii,0.7); + \draw + [ + line ~ width=0.05ex* \l_@@_scale_abs_tl , decorate, + decoration= + { + snake,amplitude=0.05ex * \l_@@_scale_abs_tl , + segment ~ length=0.48ex * \l_@@_scale_abs_tl + } + ] (0,0.3) -- (1.5,0.3); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Schussel , \bowl } +% A bowl. The edge was an accident, but I thought that it looks good +% and so I keeped it. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Schussel } { bowl } { S } + { + \@@_provide_savebox_and_use:nn { Schussel_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.32ex * \l_@@_scale_abs_tl } + { 1.47ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex , y=1ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1 + ] + \draw[rounded ~ corners=0.5ex* \l_@@_scale_abs_tl ] + (-0.02,1.4) -- (0,1.4) -- (0,0.05) -- (1.5,0.05) -- (1.5,1.4) -- (1.52,1.4); + \draw (0.35,0) -- (1.15,0); + \draw[transparent] (-0.4,0) -- (1.85,0); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Schaler , \peeler } +% Again an image of on I use to peel for example potatoes. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Schaler } { peeler } { S } + { + \@@_provide_savebox_and_use:nn { Schaler_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.15ex * \l_@@_scale_abs_tl } + { 1.565ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.7ex , y=2.3ex , line ~ width=0.07ex * \l_@@_scale_abs_tl , scale=#1 + ] + \draw[rounded ~ corners=0.07ex* \l_@@_scale_abs_tl ] + (0,0.4) -- (0,0.1) arc [start ~ angle=0, end ~ angle=180, radius=-0.1] -- (0.2,0.4) -- + (0.3,0.5) -- (0.3,0.65) -- (0.2,0.65) -- (0.2,0.5) -- (0,0.5) -- (0,0.65) -- + (-0.1,0.65) -- (-0.1,0.5) -- cycle; + \draw[line ~ width=0.03ex* \l_@@_scale_abs_tl ] (0,0.58) rectangle (0.2,0.6); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Reibe , \grater } +% I get out of ideas to write. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Reibe } { grater } { S } + { + \@@_provide_savebox_and_use:nn { Reibe_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.08ex * \l_@@_scale_abs_tl } + { 1.58ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex , y=1ex , line ~ width=0.08ex * \l_@@_scale_abs_tl , scale=#1 + ] + \draw (0,0) rectangle (1,1.2); + \draw[rounded ~ corners=0.04ex] (0.05,1.2) rectangle (0.95,1.5); + \foreach\x in { 0.2, 0.4 , 0.6 , 0.8} + \foreach\y in { 0.2 , 0.4, 0.6 , 0.8, 1} + \fill (\x,\y) circle [radius=0.05ex]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{ \Flasche , \bottle } +% It's a bottle. Uhhhh\dots +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Flasche } { bottle } { S } + { + \@@_provide_savebox_and_use:nn { Flasche_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.78ex * \l_@@_scale_abs_tl } + { 1.58ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex,y=1ex, line ~ width=0.08ex* \l_@@_scale_abs_tl , + rounded ~ corners=0.08ex* \l_@@_scale_abs_tl , scale=#1 + ] + \draw (0, 1.5) -- (0,1.2) -- (-0.15,0.8) -- (-0.15,0) --++ + (0.6,0) --++ (0,0.8) --++ (-0.15,0.4) --++ (0,0.3) -- cycle; +% \draw (-0.15,0.8) -- (0.45,0.8); +% \draw (-0.15,0.3) -- (0.45,0.3); + \draw[transparent] (-0.2,0) --++ (0.7,0); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% \begin{macro}{ \Nudelholz , \rollingpin } +% You know what that is\dots +% +% For the draftbox the calculation of the length is \verb|(1.26ex + 4.25ex)*0.8 + 0.1ex|. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Nudelholz } { rollingpin } { S } + { + \@@_provide_savebox_and_use:nn { Nudelholz_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 4.516ex * \l_@@_scale_abs_tl }%% + { 0.9ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.8ex, y=0.8ex, scale=#1, line ~ width=0.1ex * \l_@@_scale_abs_tl , + ] + \draw[rounded ~ corners=0.10ex*\l_@@_scale_abs_tl] (0,0) rectangle (3,1); + \draw[rounded ~ corners=0.15ex*\l_@@_scale_abs_tl] + (3,0.75) -- (3.25,0.6) -- (3.75,0.7) -- (4.25,0.6) + (3,0.25) -- ( 3.25,0.4 ) -- (3.75,0.3) -- (4.25,0.4); + \draw (4.25,0.5) ellipse [x ~ radius=0.01, y ~ radius=0.1]; + \draw[rounded ~ corners=0.15ex*\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]; + \end{tikzpicture} + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ \Knoblauchpresse \garlicpress } +% I always forget that the line width is added only once to the +% draft box. +% +% The design is similar to the one I own. +% \begin{macrocode} +\@@_Declare_Document_Commands:nnnn { Knoblauchpresse } { garlicpress } { S } + { + \@@_provide_savebox_and_use:nn { Knoblauchpresse_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 4.3ex * \l_@@_scale_abs_tl } + { 1.6ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex, y=1ex, scale=#1, line ~ width=0.1ex * \l_@@_scale_abs_tl , + ] + \draw[rounded ~ corners = 0.1ex*\l_@@_scale_abs_tl] + (1, 0) -- (4, 0) -- (4,-0.2) -- (1, -0.2) + (-0.1, 0.5) -- (4, 0.5) -- (4,0.3) -- (0, 0.3); + \draw [rounded ~ corners = 0.21ex*\l_@@_scale_abs_tl] + (0,0) -- (0,-1) -- (1,-1) -- (1,0); + \draw (1,0) -- (0,0) -- (0,0.4) ; + \draw (0,-0.85) -- (-0.2, -0.6) -- (-0.2, 0.4); + \draw (-0.1,0.4) circle[radius=0.1]; + \draw (0.3, 0) rectangle +(0.4, 0.3); + \end{tikzpicture} + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% \subsection{Emoticonscode} +% +% Now the emoticons are coded. +% +% +% +% +% \begin{macro}{ \Sadey } +% I don't know why Sadey is the first and not Smiley, probably for reasons. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Sadey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Sadey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.684ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex , y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl , scale = #1 + ] + \filldraw[fill=#2, line ~ width=0.1ex* \l_@@_scale_abs_tl ] (0,0) circle [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} + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{ \dSadey } +% Coding the \enquote{3D} Sadey. Again, nothing special. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dSadey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dSadey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl , scale = #1 + ] + \shade[ball ~ color=#2] (0,0) circle [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}% + } + } + } +% \end{macrocode} +% \end{macro} +% +% +% +%\begin{macro}{ \Changey } +% \changes{v0.95}{2016/03/20}{New.} +% Thanks to Marcel for the request. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Changey } { S O{white} m } + { + \@@_provide_savebox_and_use:nn { Changey_#1_#2_#3 } + { + \fp_compare:nNnT { abs(#3) } > { 2 } + { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3} } + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [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 + ( -0.2 , \l_tmpa_tl ) .. controls + ( -0.1 , \l_tmpb_tl ) and + ( 0.1 , \l_tmpb_tl ) .. + ( 0.2 , \l_tmpa_tl ) ; + \end{tikzpicture} + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \dChangey } +% \changes{v3.95}{2016/03/20}{New.} +% Thanks to Marcel for the request. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dChangey } { S O{yellow} m } + { + \@@_provide_savebox_and_use:nn { dChangey_#1_#2_#3 } + { + \fp_compare:nNnT { abs(#3) } > { 2 } + { \msg_error:nnn { tikzsymbols } { Changey-number-too-large } {#3} } + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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] + ( -0.2 , \l_tmpa_tl ) .. controls + ( -0.1 , \l_tmpb_tl ) and + ( 0.1 , \l_tmpb_tl ) .. + ( 0.2 , \l_tmpa_tl ) ; + \end{tikzpicture} + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +%\begin{macro}{ \cChangey } +% \changes{v4.02}{2017/05/14}{New.} +% Why didn't I implement this earlier? +% \begin{macrocode} +\cs_new:Npn \@@_cChangey:nnn #1 #2#3 + { + \fp_set:Nn \l_tmpa_fp { abs (#1/2) * 100 } + \@@_cChangey_aux:xnn { \fp_use:N \l_tmpa_fp } {#2} {#3} + } +\cs_new:Npn \@@_cChangey_aux:nnn #1 #2#3 + { + \filldraw[fill=#2!#1!#3] + } +\cs_generate_variant:Nn \@@_cChangey_aux:nnn { x } +\@@_Declare_Document_Command:nnn { cChangey } { S O{red} O{yellow} O{green} m } + { + \@@_provide_savebox_and_use:nn + { cChangey_#1_#2_#3_#4_#5 } + { + \fp_compare:nNnT { abs(#5) } > { 2 } + { \msg_error:nnn { tikzsymbols } { cChangey-number-too-large } {#5} } + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \fp_compare:nNnT {#5} < { 0 } + { + \@@_cChangey:nnn {#5} {#2} {#3} + (0,0) circle [radius=0.33]; + } + \fp_compare:nNnT {#5} > { 0 } + { + \@@_cChangey:nnn {#5} {#4} {#3} + (0,0) circle [radius=0.33]; + } + \fp_compare:nNnT {#5} = { 0 } + { + \filldraw [fill=#3] (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*#5 } + \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 } + \draw + ( -0.2 , \l_tmpa_tl ) .. controls + ( -0.1 , \l_tmpb_tl ) and + ( 0.1 , \l_tmpb_tl ) .. + ( 0.2 , \l_tmpa_tl ) ; + \end{tikzpicture} + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \dcChangey } +% \changes{v4.02}{2017/05/14}{New.} +% Same as above +% \begin{macrocode} +\cs_new:Npn \@@_dcChangey:nnn #1 #2#3 + { + \fp_set:Nn \l_tmpa_fp { abs (#1/2) * 100 } + \@@_dcChangey_aux:xnn { \fp_use:N \l_tmpa_fp } {#2} {#3} + } +\cs_new:Npn \@@_dcChangey_aux:nnn #1 #2#3 + { + \shade [ball ~ color=#2!#1!#3] + } +\cs_generate_variant:Nn \@@_dcChangey_aux:nnn { x } +\@@_Declare_Document_Command:nnn { dcChangey } { S O{red} O{yellow} O{green} m } + { + \@@_provide_savebox_and_use:nn + { dcChangey_#1_#2_#3_#4_#5 } + { + \fp_compare:nNnT { abs(#5) } > { 2 } + { \msg_error:nnn { tikzsymbols } { cChangey-number-too-large } {#5} } + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \fp_compare:nNnT {#5} < { 0 } + { + \@@_dcChangey:nnn {#5} {#2} {#3} + (0,0) circle [radius=0.33]; + } + \fp_compare:nNnT {#5} > { 0 } + { + \@@_dcChangey:nnn {#5} {#4} {#3} + (0,0) circle [radius=0.33]; + } + \fp_compare:nNnT {#5} = { 0 } + { + \shade[ball ~ color=#3] (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*#5 } + \pgfmathsetmacro \l_tmpb_tl { \l_tmpa_tl - 0.1*#5 } + \draw[black] + ( -0.2 , \l_tmpa_tl ) .. controls + ( -0.1 , \l_tmpb_tl ) and + ( 0.1 , \l_tmpb_tl ) .. + ( 0.2 , \l_tmpa_tl ) ; + \end{tikzpicture} + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +%\begin{macro}{ \Annoey } +% An annoyed Smiley. It's annoyed. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Annoey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Annoey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex * \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +%\begin{macro}{ \dAnnoey } +% It's annoyed about 3D. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dAnnoey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dAnnoey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +% \begin{macro}{ \Smiley } +% This command is not defined if the option \Option{marvosym} +% is set to true. +% \begin{macrocode} +\bool_if:NF \g_@@_if_opt_marvosym_bool + { + \@@_Declare_Document_Command:nnn { Smiley } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Smiley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl , scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [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}% + } + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dSmiley } +% Again in \enquote{3D}. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dSmiley } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dSmiley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.1ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +% \begin{macro}{ \Laughey } +% It's laughing. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Laughey } { S O{none} O{none} } + { + \@@_provide_savebox_and_use:nn { Laughey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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.06ex] + (-0.22,-0.0) .. controls (-0.13,-0.23) and (0.13,-0.23) .. (0.22,-0.0) -- cycle; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dLaughey } +% Also in \emph{3D}! +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dLaughey } { S O{yellow} O{red} } + { + \@@_provide_savebox_and_use:nn { dLaughey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1, + black + ] + \fill[ball ~ color=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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 + [ + ball ~ color=#3, rounded ~ corners=0.1ex* \l_@@_scale_abs_tl , + yshift=-0.028ex + ] + (-0.25,-0.0) .. controls (-0.13,-0.26) and (0.13,-0.26) .. (0.25,-0.0) -- cycle; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Neutrey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Neutrey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Neutrey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2,line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dNeutrey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dNeutrey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { Neutrey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Winkey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Winkey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Winkey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [radius=0.33]; + \draw(0.17,0.1) -- (0.05,0.1); + \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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \oldWinkey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { oldWinkey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { oldWinkey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [radius=0.33]; + \draw(0.17,0.1) -- (0.05,0.1); + \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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dWinkey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dWinkey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dWinkey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [radius=0.33]; + \draw[black] (0.17,0.1) -- (0.05,0.1); + \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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \olddWinkey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { olddWinkey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { olddWinkey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [radius=0.33]; + \draw[black] (0.17,0.1) -- (0.05,0.1); + \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} + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Sey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Sey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Sey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +%\begin{macro}{ \dSey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dSey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dSey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Xey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Xey } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Xey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] (0,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dXey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dXey } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dXey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1, + black + ] + \fill[ball ~ color=#2, line ~ width=0.12ex* \l_@@_scale_abs_tl ] + (0,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Innocey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Innocey } { S O{none} O{yellow} } + { + \@@_provide_savebox_and_use:nn { Innocey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.73ex * \l_@@_scale_abs_tl } + { 1.90899 ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl, scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [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 +% lines surrounding the colored line and completing the halo. +% \begin{macrocode} + \draw[#3, line ~ width=0.095ex* \l_@@_scale_abs_tl ] + (0.32,0.31) arc + [start ~ angle=0, end ~ angle=360, x ~ radius = 0.32 , y ~ radius=0.1]; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] + (0.3,0.31) arc + [start ~ angle=0, end ~ angle=360, x ~ radius = 0.3 , y ~ radius=0.07]; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] + (0.35,0.31) arc + [start ~ angle=0, end ~ angle=360, x ~ radius = 0.35 , y ~ radius=0.12]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% \begin{macro}{ \wInnocey } +% A white one. I clear \Makro{g_@@_tikzsymbols_after_symbol_tl} +% because otherwise the input of \Option{after-symbol} +% is inserted twice. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { wInnocey } { S } + { + \group_begin: + \tl_clear:N \l_@@_tikzsymbols_after_symbol_tl + \tikzsymbolsuse { Innocey } [#1] [none] [white] + \group_end: + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dInnocey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dInnocey } { S O{yellow} O{yellow} } + { + \@@_provide_savebox_and_use:nn { dInnocey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.73ex * \l_@@_scale_abs_tl } + { 1.84898ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1, + black + ] + \shade[ball ~ color=#2] (0,0) circle [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). +% \begin{macrocode} + \draw[color=#3!97!black, line ~ width=0.1ex* \l_@@_scale_abs_tl ] + (0.32,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.32 , y ~ radius=0.1]; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] + (0.3,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.3 , y ~ radius=0.07]; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] + (0.35,0.31) arc [start ~ angle=0, end ~ angle=360, x ~ radius = 0.35 , y ~ radius=0.12]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Cooley } +% It's the coolest Smiley around. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Cooley } { S O{none} } + { + \@@_provide_savebox_and_use:nn { Cooley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [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; + \draw (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1); + \draw (0.02,0.1) -- (-0.02,0.1); + \draw (-0.2,0.1) -- (-0.3,0.13); + \draw (0.2,0.1) -- (0.3,0.13); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dCooley } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dCooley } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dCooley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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); + \foreach \xi/\xii in { 0.24/0.01 , -0.24/-0.01 } + \shade[ball ~ color=black,rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] + (\xi,0.15) -- (\xii,0.15) -- (\xii,0) -- (\xi,0) -- cycle; + \draw[black] (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Tongey } +% Habe mir vorgenommen das hier zu verbessern, wird aber wohl noch +% etwas brauchen. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Tongey } { S O{none} O{none} } + { + \@@_provide_savebox_and_use:nn { Tongey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.704ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2] (0,0) circle [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 , + rounded ~ corners=0.12ex* \l_@@_scale_abs_tl + ] + (0,-0.09) -- (0.05,-0.2) -- (0.16,-0.23) -- (0.2,-0.15) -- (0.19,-0.03); + \draw[line ~ width=0.07ex* \l_@@_scale_abs_tl , yshift=0.21ex] + (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dTongey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dTongey } { S O{yellow} O{red} } + { + \@@_provide_savebox_and_use:nn { dTongey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_squared_draftbox:n { 1.584ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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 , + rounded ~ corners=0.12ex* \l_@@_scale_abs_tl + ] + (0,-0.09) -- (0.05,-0.2) -- (0.16,-0.23) -- (0.2,-0.15) -- (0.19,-0.03); + \draw[black, line ~ width=0.07ex* \l_@@_scale_abs_tl , yshift=0.21ex] + (-0.2,-0.1) .. controls (-0.1,-0.2) and (0.1,-0.2) .. (0.2,-0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Nursey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Nursey } { S O{none} O{none} O{} } + { + \@@_provide_savebox_and_use:nn { Nursey_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.5ex * \l_@@_scale_abs_tl } + { 2.19ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.3ex, y=2.3ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \fill[fill=#3,rounded ~ corners=.023ex* \l_@@_scale_abs_tl ] + (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- (0.3,0); + \filldraw[fill=#2] (0,0) circle [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 ] + (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- (0.3,0); + \draw[#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] + (0,0.35) -- (0,0.5) (-0.05,0.45) -- (0.05,0.45) ; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dNursey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dNursey } { S O{yellow} O{white} O{red} } + { + \@@_provide_savebox_and_use:nn { dNursey_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.38ex * \l_@@_scale_abs_tl } + { 1.98001ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.3ex, y=2.3ex, line ~ width=0.12ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade[ball ~ color=#2] (0,0) circle [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 + [ + ball ~ color=#3, rounded ~ corners=.023ex* \l_@@_scale_abs_tl , + yshift=-0.09ex + ] + (-0.3,0) -- (-0.3,0.3) -- (0,0.6) -- (0.3,0.3) -- + (0.3,0) arc [start ~ angle=0, end ~ angle=180, radius=0.3]; + \shade[ball ~ color=#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] + (-0.01,0.31) -- (-0.01,0.46) -- (0.01,0.46) -- (0.01,0.31)--cycle; + \shade[ball ~ color=#4,line ~ width=.046ex* \l_@@_scale_abs_tl ] + (-0.05,0.4) -- (0.05,0.4) -- (0.05,0.42) -- (-0.05,0.42) -- cycle; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Vomey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Vomey } { S O{none} O{opacity=0} } + { + \@@_provide_savebox_and_use:nn { Vomey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 3.03335ex * \l_@@_scale_abs_tl } + { 1.743ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.58ex,y=0.58ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \filldraw[fill=#2,rounded ~ corners=0.05ex* \l_@@_scale_abs_tl ] + (0,0) arc [start ~ angle=15, end ~ angle=330, radius=1] -- (-0.6,-0.3) -- cycle; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (-0.5,0.3) -- (-0.3,0.1); + \fill (-0.45,0.27) arc [start ~ angle=100, end ~ angle=350, radius=0.1]; + \fill[#3] (1.8,-0.5) .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) .. + controls (3,-1) and (3,-1.7) .. (2,-1.5) .. + controls (1.7,-2) and (1,-2) .. (1,-1.5) .. + controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9); + \fill[#3] (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1) .. + controls (1.7,-1.2) and (1.3,-1.2) .. (1,-1) .. + controls (0.8,-0.7) and (0.5,-0.5) .. (0,-0.4); +% \draw (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1); +% \draw (0,-0.4) .. controls (0.5,-0.5) and (0.8,-0.7) .. (1,-1); + \draw[rounded ~ corners=0.1ex* \l_@@_scale_abs_tl ] + (1,-1) .. controls (0.8,-0.7) and (0.5,-0.5) .. + (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1); + \draw (1.8,-0.5) .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) .. + controls (3,-1) and (3,-1.7) .. (2,-1.5) .. controls (1.7,-2) + and (1,-2) .. (1,-1.5) .. controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \dVomey } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dVomey } { S O{yellow} O{brown!10!olive} } + { + \@@_provide_savebox_and_use:nn { dVomey_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.94336 ex * \l_@@_scale_abs_tl } + { 1.653ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.58ex,y=0.58ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \shade + [ + ball ~ color=#2!90!brown, + rounded ~ corners=0.03ex * \l_@@_scale_abs_tl , + ] + (0,0) arc [start ~ angle=15, end ~ angle=330, radius=1] -- (-0.6,-0.3) -- cycle; + \draw[black, line ~ width=0.05ex* \l_@@_scale_abs_tl ] + (-0.5,0.3) -- (-0.3,0.1); + \shade[ball ~ color=black] + (-0.45,0.27) arc [start ~ angle=100, end ~ angle=350, radius=0.1]; + \shade[ball ~ color=#3] + (1.8,-0.5) .. controls (2.5,-0.3) and (2.8,-0.7) .. (2.5,-1) .. + controls (3,-1) and (3,-1.7) .. (2,-1.5) .. + controls (1.7,-2) and (1,-2) .. (1,-1.5) .. + controls (0.5,-1.9) and (0.3,-1) .. (0.7,-0.9); + \shade[ball ~ color=#3] + (0,-0.4) .. controls (1,0) and (2,-1) .. (2,-1) .. controls + (1.7,-1.2) and (1.3,-1.2) .. (1,-1) .. controls + (0.8,-0.7) and (0.5,-0.5) .. (0,-0.4); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Walley } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Walley } { S O{none} O{none} } + { + \@@_provide_savebox_and_use:nn { Walley_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.341ex * \l_@@_scale_abs_tl } + { 1.674ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1, + decoration= + { +% random ~ steps, + segment ~ length=0.15ex* \l_@@_scale_abs_tl , + amplitude=0.1ex* \l_@@_scale_abs_tl + } + ] + \filldraw[fill=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [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) --+ + +(0.03,-0.02) --++(0.03,0.1) --++(0.03,0.02) -- (0.5,0.25); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.28,0) --++(0.06,-0.02) --++(0.04,0.06) --++ + (0.0,-0.08) --++(0.08,0.06) --++(0.03,-0.02) --+ + (0.08,0.02) -- (0.6,0.0); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.28,0) --++(0.03,-0.02) --++(0.03,-0.07) --+ + +(0.03,-0.01) --++(0.01,-0.07) --++(0.06,0.01) --++ + (0.03,-0.08) -- (0.5,0.-0.25); + \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05); + \draw[rotate=-20] (0.27,-0.1) .. controls (0.2,-0.072) + and (0.1,-0.06) .. (0.,-0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \rWalley } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { rWalley } { S O{none} O{none} } + { + \@@_provide_savebox_and_use:nn { rWalley_#1_#2_#3 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.341ex * \l_@@_scale_abs_tl } + { 1.674ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1, + decoration= + { + random ~ steps, segment ~ length=0.15ex* \l_@@_scale_abs_tl , + amplitude=0.1ex* \l_@@_scale_abs_tl + } + ] + \filldraw[fill=#2, line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [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 ] + (0.28,0) -- (\x,\y); + \draw[rotate=-20] (0.12,0.1) -- (0.2,0.05); + \draw[rotate=-20] (0.27,-0.1) .. controls (0.2,-0.072) + and (0.1,-0.06) .. (0.,-0.1); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \dWalley } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dWalley } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { dWalley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.42879ex * \l_@@_scale_abs_tl } + { 1.6008ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl ,scale=#1, + black + ] + \shade[ball ~ color=orange!80!black] (0.298,-0.33) rectangle (0.692,0.337); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.28,0) --++(0.05,0.07) --++(0.03,0.02) --+ + +(0.03,-0.02) --++(0.03,0.1) --++(0.03,0.02) -- (0.5,0.25); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.28,0) --++(0.06,-0.02) --++(0.04,0.06) --++ + (0.0,-0.08) --++(0.08,0.06) --++(0.03,-0.02) --+ + (0.08,0.02) -- (0.6,0.0); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.28,0) --++(0.03,-0.02) --++(0.03,-0.07) --++ + (0.03,-0.01) --++(0.01,-0.07) --++ + (0.06,0.01) --++(0.03,-0.08) -- (0.5,0.-0.25); + \shade[ball ~ color=#2] (-0.01,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \drWalley } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { drWalley } { S O{yellow} } + { + \@@_provide_savebox_and_use:nn { drWalley_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.42879ex * \l_@@_scale_abs_tl } + { 1.6008ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl , + scale=#1, black, decoration= + { + random ~ steps,segment ~ length=0.15ex* \l_@@_scale_abs_tl , + amplitude=0.1ex* \l_@@_scale_abs_tl + } + ] + \shade[ball ~ color=orange!80!black] (0.298,-0.33) rectangle (0.692,0.337); + \foreach \x/\y in { 0.5/0.25 , 0.6/0 , 0.5/-0.25 } + \draw[decorate, line ~ width=0.06ex* \l_@@_scale_abs_tl ] + (0.298,0) -- (\x,\y); + \shade[ball ~ color=#2] (-0.01,0) circle [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); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\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:nn { Cat_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.89899ex * \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}{ \SchrodingersCat } +% It is a Ket! (sic!) +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { SchrodingersCat } { S m } + { + \@@_provide_savebox_and_use:nn { SchrodingersCat_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.89899ex * \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 + ] + \int_case:nnF {#2} + { + { 1 } { \@@_Cat:n {#1} } + { 0 } { \@@_Cat_unknown:n {#1} } + { -1 } { \@@_Cat_dead:n {#1} } + } + { \msg_error:nnn { tikzsymbols } { SchrodingersCat } {#2} } + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% \begin{macro}{ \Ninja } +% It can hide. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Ninja } { S O{black} O{red} O{white} } + { + \@@_provide_savebox_and_use:nn { Ninja_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.149ex * \l_@@_scale_abs_tl } + { 1.717ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl , + scale=#1, decoration= + { + random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl , + amplitude=0.1ex* \l_@@_scale_abs_tl + } + ] + \tl_set:Nn \l_tmpa_tl {#2} + \fill[#2] (0,0) circle [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 [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] -- + (0.2,0.23)-- (0.31,0.0) -- cycle; + \fill[#3] (-0.3465,0) arc [start ~ angle=0, end ~ angle=-42, x ~ radius=-0.34, y~ radius=-0.345] -- + (-0.2,0.23)-- (-0.31,0.0) -- cycle; + \fill[#4] (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05]; + \fill[#4] (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05]; + \foreach \x in { (0.5,0.35) , (0.53,0.1) } + \draw + [ + decorate,decoration= + { + snake,amplitude=.1ex* \l_@@_scale_abs_tl , + segment ~ length=0.55ex* \l_@@_scale_abs_tl + } , #3 + ] + (0.26,0.21) -- \x; + \tl_if_eq:NNF \c_@@_black_tl \l_tmpa_tl + { + \draw[line ~ width=0.08ex* \l_@@_scale_abs_tl ] (0,0) circle [radius=0.33]; + } + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{ \dNinja } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { dNinja } { S O{black} O{red} O{white} } + { + \@@_provide_savebox_and_use:nn { dNinja_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 2.1498ex * \l_@@_scale_abs_tl } + { 1.7178ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=2.4ex, y=2.4ex, line ~ width=0.09ex* \l_@@_scale_abs_tl , + scale=#1, decoration= + { + random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl , + amplitude=0.1ex* \l_@@_scale_abs_tl + } + ] + \foreach \length/\coord in { 0.55/{(0.5,0.35)} , 0.5/{(0.53,0.1)} } + \draw + [ + decorate,decoration= + { + snake,amplitude=.1ex* \l_@@_scale_abs_tl , + segment ~ length=\length ex* \l_@@_scale_abs_tl + } , decorate, #3!50!black + ] + \coord -- (0.26,0.21); + \shade[ball ~ color=#2] (0,0) circle [radius=0.347]; + \fill + [ + decoration= + { + random ~ steps,segment ~ length=0.1ex* \l_@@_scale_abs_tl , + amplitude=0.01ex* \l_@@_scale_abs_tl + } , ball ~ color=#3 + ] + decorate {(-0.33,0) -- (0.3465,0) } + {arc [start ~ angle=0, end ~ angle=42, x ~ radius=0.34,y~ radius=0.345]} + decorate {-- (-0.25,0.24)} + { arc [start ~ angle=-42, end ~ angle=0, x ~ radius=-0.375,y~ radius=-0.345]}; +% Frag mich nicht, was das macht. +% \shade[ball ~ color=#4] (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05]; +% \shade[ball ~ color=#4] (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05]; + \shade[top ~ color=#4!80!black, bottom ~ color=#4] + (0.129,0.1425) arc [start ~ angle=55, end ~ angle=-180, radius=0.05]; + \shade[top ~ color=#4!80!black, bottom ~ color=#4] + (-0.129,0.1425) arc [start ~ angle=-55, end ~ angle=180, radius=-0.05]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% \begin{macro}{ \Sleepey } +% It is sleeping. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Sleepey } { S O{none} O{none} O{black} } + { + \@@_provide_savebox_and_use:nn { Sleepey_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_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:nn { dSleepey_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_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 } { S O{black!20!white} } + { + \@@_provide_savebox_and_use:nn { NiceReapey_#1_#2 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { (1.10667em + 0.07ex) * \l_@@_scale_abs_tl } + { (0.693em+0.07ex) * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.11em,y=0.11em, line ~ width=0.07ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \draw (1.7,-1) arc [start ~ angle=360, end ~ angle=180, x ~ radius=1.7, y ~ radius=2] + arc [start ~ angle=260, end ~ angle=110, x ~ radius=1.5,y ~ radius=2] + .. controls (-1,3.3) and (1,3.3) .. (1.9,2.97) + arc [start ~ angle=260, end ~ angle=100, x ~ radius=-1.3, y ~ radius=-2] -- cycle; + \filldraw[fill=#2] (3,-3) -- (3,3) .. controls (5,3) and + (6,2) .. (7,1.5) -- (3,1.5) -- cycle; + \draw (0,-1.5) circle [ 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 [ x~radius=0.5 , y~radius= 0.75]; + \fill (-1.25,1.25) circle [ x~radius=0.5 , y~radius= 0.75]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% \subsection{Other symbols(s)} +% +%\begin{macro}{ \@@_Strichmaxerl_x_check:N } +% A helper command. This command checks if the length is greater then +% the radius of the circle. +% \begin{macrocode} +\cs_new:Npn \@@_Strichmaxerl_x_check:N #1 + { + \fp_compare:nNnTF {#1} > { 0 } + { + \fp_compare:nNnTF {#1} < { 0.18 } + { \fp_zero:N #1 } + { \fp_set:Nn #1 { #1 - 0.18 } } + } + { + \fp_compare:nNnTF {#1} > { - 0.18 } + { \fp_zero:N #1 } + { \fp_set:Nn #1 { #1 + 0.18 } } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \@@_Strichmaxerl_if_smaller_zero_set_zero:N } +% Again to write less. +% \begin{macrocode} +\cs_new:Npn \@@_Strichmaxerl_if_smaller_zero_set_zero:N #1 + { + \fp_compare:nNnT {#1} < { 0 } { \fp_zero:N #1 } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Strichmaxerl } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Strichmaxerl } + { S O{-22} O{22} O{27} O{-27} } + { + \@@_provide_savebox_and_use:nn + { Strichmaxerl_#1_#2_#3_#4_#5 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { +% \end{macrocode} +% +% Now we have to calculate the length and the height of the separate +% parts of the \verb|\Strichmaxerl|. +% +% At first the lengths (they have all an \verb|x| in the name). \par +% \verb|LA| for \enquote{linker Arm} (\emph{left arm}). \par +% \verb|RA| for \enquote{rechter Arm} (\emph{right arm}). \par +% \verb|LB| for \enquote{linkes Bein} (\emph{left leg}). \par +% \verb|RB| for \enquote{rechtes Bein} (\emph{right leg}). \par +% \begin{macrocode} + \fp_set:Nn \l_@@_Strichmaxerl_x_LA_fp { -0.27 * cosd (#2) } + \fp_set:Nn \l_@@_Strichmaxerl_x_RA_fp { 0.27 * cosd (#3) } + \fp_set:Nn \l_@@_Strichmaxerl_x_RB_fp { 0.34 * sind (#4) } + \fp_set:Nn \l_@@_Strichmaxerl_x_LB_fp { 0.34 * sind (#5) } +% \end{macrocode} +% +% Now the height (\verb|y|): \par +% \verb|LA| for \enquote{linker Arm} (\emph{left arm}). \par +% \verb|RA| for \enquote{rechter Arm} (\emph{right arm}). \par +% \verb|LB| for \enquote{linkes Bein} (\emph{left leg}). \par +% \verb|RB| for \enquote{rechtes Bein} (\emph{right leg}). \par +% \begin{macrocode} + \fp_set:Nn \l_@@_Strichmaxerl_y_LA_fp { 0.27 * sind (#2) } + \fp_set:Nn \l_@@_Strichmaxerl_y_RA_fp { 0.27 * sind (#3) } + \fp_set:Nn \l_@@_Strichmaxerl_y_RB_fp { 0.34 * cosd (#4) } + \fp_set:Nn \l_@@_Strichmaxerl_y_LB_fp { 0.34 * cosd (#5) } +% \end{macrocode} +% Well then, lets start our calculations. Firstly the length. +% +%^^A X +% +% \begin{macrocode} + \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_LA_fp + \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_RA_fp + \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_LB_fp + \@@_Strichmaxerl_x_check:N \l_@@_Strichmaxerl_x_RB_fp +% \end{macrocode} +% +% +% +% +% +% +% \begin{macrocode} + \fp_set:Nn \@@_Strichmaxerl_x_max_fp + { + max + ( + 0 , \l_@@_Strichmaxerl_x_LA_fp , \l_@@_Strichmaxerl_x_RA_fp, + \l_@@_Strichmaxerl_x_LB_fp , \l_@@_Strichmaxerl_x_RB_fp + ) + } + \fp_set:Nn \@@_Strichmaxerl_x_min_fp + { + min + ( + 0 , \l_@@_Strichmaxerl_x_LA_fp , \l_@@_Strichmaxerl_x_RA_fp, + \l_@@_Strichmaxerl_x_LB_fp , \l_@@_Strichmaxerl_x_RB_fp + ) + } +% \end{macrocode} +% +%^^A Y +% +% Finished the length. Now we calculate our height. Arms and legs more +% or less separate. +% +% Arms: First we subtract $0.2$ (= adding $-0.2$) (torso length) +% +% \begin{macrocode} + \fp_set:Nn \l_@@_Strichmaxerl_y_LA_fp { \l_@@_Strichmaxerl_y_LA_fp - 0.2 } + \fp_set:Nn \l_@@_Strichmaxerl_y_RA_fp { \l_@@_Strichmaxerl_y_RA_fp - 0.2 } +% \end{macrocode} +% Arms and Legs: if they are smaller than $0$, make them $0$. +% \begin{macrocode} + \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_LA_fp + \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_RA_fp + \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_LB_fp + \@@_Strichmaxerl_if_smaller_zero_set_zero:N \l_@@_Strichmaxerl_y_RB_fp +% \end{macrocode} +% +% And find the greatest number. +% \begin{macrocode} + \fp_set:Nn \@@_Strichmaxerl_y_max + { + max + ( + 0 , \l_@@_Strichmaxerl_y_LA_fp , \l_@@_Strichmaxerl_y_RA_fp, + \l_@@_Strichmaxerl_y_LB_fp , \l_@@_Strichmaxerl_y_RB_fp + ) + } +% \end{macrocode} +% +% +% +% +% +% +% \begin{macrocode} + \@@_create_draftbox:nn + { + ( + 0.60597ex +1.35ex * \@@_Strichmaxerl_x_max_fp + -1.35ex * \@@_Strichmaxerl_x_min_fp + ) * \l_@@_scale_abs_tl + }{ + ( 1.173ex + 1.35ex * \@@_Strichmaxerl_y_max + ) * \l_@@_scale_abs_tl + } + }{ + \begin{tikzpicture} + [ + /@@ , + line ~ width=0.12ex* \l_@@_scale_abs_tl , scale=#1, x=1.35ex, y=1.35ex + ] + \char_set_catcode_other:N : + %% LB + \draw[rotate \space around= { #5 \token_to_str:N : ( 0.15 , 0.2 ) } ] (0.15,0.2) -- (0.15,-0.14); + %% RB + \draw[rotate \space around= { #4 \token_to_str:N : ( 0.15 , 0.2 ) } ] (0.15,0.2) -- (0.15,-0.14); + \draw (.15,.2) -- (.15,.4); + %% RA + \draw[rotate \space around={ #3 \token_to_str:N : ( 0.15 , 0.4) } ] (0.15,0.4) -- (0.42,0.4); + %% LA + \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 [radius=0.18]; + \end{tikzpicture} + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +%\begin{macro}{ \Person } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Person } { S O{-22} O{22} O{27} O{-27} } + { + \msg_error:nnnn + { tikzsymbols } + { obsolete-command } + { \Person } + { \Strichmaxerl } + \tikzsymbolsuse { Strichmaxerl } [#1] [#2] [#3] [#4] [#5] + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Candle } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Candle } { S } + { + \@@_provide_savebox_and_use:nn { Candle_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.63998ex * \l_@@_scale_abs_tl } + { 1.754993ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex, y=1ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl + ] + \draw[rounded ~ corners=0.04ex* \l_@@_scale_abs_tl ] + (0,0) -- (0.2,0) -- +(0,1) -- (0,1) -- cycle; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (0.1,1) -- (0.1,1.2); + \foreach \x in { -0.2 , 0.4 } + \draw[line ~ width=0.04ex* \l_@@_scale_abs_tl ] + (0.1,1.1) .. controls (\x,1.3) and (0.1,1.5) .. (0.1,1.7); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Fire } +% Not quite happy with the |xshift| and |yshift| and |rotate|, +% but it works. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Fire } { S } + { + \@@_provide_savebox_and_use:nn { Fire_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.576ex * \l_@@_scale_abs_tl } + { 1.640942ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex, y=1ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl , + rotate=45, + ] + \fill (-0.05,0) -- (0.05,0) -- (0.05,0.95) -- (-0.05,0.95) -- cycle; + \fill (-0.74,0.7) -- (0.19,0.7) -- (0.19,0.8) -- (-0.74,0.8) -- cycle; + \fill[rotate=-20, xshift=-0.275ex, yshift=-0.02ex] + (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle; + \fill[rotate=-70, xshift=-0.7ex, yshift=-0.49ex] + (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle; + \fill[rotate=135, xshift=0.53ex, yshift=-0.805ex] + (-0.05,0.07) -- (0.05,0.07) -- (0.05,0.9) -- (-0.05,0.9) -- cycle; + \draw + [ + rotate=-45, xshift=-0.56ex, yshift=0.32ex, + line ~ width=0.04ex* \l_@@_scale_abs_tl , x=0.5ex, y=0.5ex + ] + (-0.1,0.29) .. controls (-0.7,0.6) and (0,1.2) .. (0.05,1.7); + \draw + [ + rotate=-45, xshift=-0.455ex,yshift=0.32ex, + line ~ width=0.04ex* \l_@@_scale_abs_tl , x=0.5ex, y=0.5ex + ] + (-0.1,0.29) .. controls (0.7,0.6) and (-0.1,1.2) .. (-0.15,1.7); + \draw[rotate=-45, xshift=-0.53ex] (-0.1,0.29) .. controls + (-0.7,0.6) and (0,1.2) .. (0,1.5); + \draw[rotate=-45, xshift=-0.424ex] (-0.1,0.29) .. controls + (0.7,0.6) and (-0.1,1.2) .. (-0.1,1.5); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Coffeecup } +% \begin{macrocode} +\bool_if:NF \g_@@_if_opt_marvosym_bool +{ +\@@_Declare_Document_Command:nnn { Coffeecup } { S } + { + \@@_provide_savebox_and_use:nn { Coffeecup_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.82ex * \l_@@_scale_abs_tl } + { 1.705ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.7ex,y=0.7ex, scale=#1, + line ~ width=0.07ex* \l_@@_scale_abs_tl , decoration= + { + snake,amplitude=.05ex* \l_@@_scale_abs_tl , + segment ~ length=0.408ex* \l_@@_scale_abs_tl + } + ] + \draw (0,0) arc [start ~ angle=180, end ~ angle=270, x ~ radius=0.8,y ~ radius=1] --++ + (0.5,0) arc [start ~ angle=270, end ~ angle=360, x ~ radius=0.8,y ~ radius=1] -- cycle; + \draw (2.1,-0.15) -- (2.2,-0.15) arc [start ~ angle=90, end ~ angle=-90, radius=0.3] -- (1.85, -0.75); + \foreach \x in {0.4,1,1.6} + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl , decorate] + (\x,0.3) -- +(0,1); + \draw (0,-1.05) -- (2.1,-1.05); + \end{tikzpicture}% + } + } + } +} +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Chair } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Chair } { S } + { + \@@_provide_savebox_and_use:nn { Chair_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 0.97ex * \l_@@_scale_abs_tl } + { 1.69ex * \l_@@_scale_abs_tl } + }{ + \fp_compare:nNnT {#1} < { 0 } { \bool_set_true:N \l_@@_if_scale_negative_bool } + \begin{tikzpicture} + [ + /@@ , + x=0.9ex,y=0.9ex, scale=#1, line ~ width=0.07ex* \l_@@_scale_abs_tl + ] + \draw (0,-0.5) -- (0,0.7) -- (0.5,1) -- (0.5,0.25); + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] (0,0.4) -- (0.5,0.7); + \draw (0,0) -- (0.5,0.3) -- (1,0) --(1,-0.5); + \bool_if:NT \l_@@_if_scale_negative_bool + { \draw (0.5,0.3) -- +(0,-0.5); } + \draw (0.5,-0.3) -- (0.5,-0.8); + \draw (1,0) -- (0.5,-0.3) -- (0,0); + \end{tikzpicture}% + } + \bool_set_false:N \l_@@_if_scale_negative_bool + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Bed } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Bed } { S } + { + \@@_provide_savebox_and_use:nn { Bed_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 3.08ex * \l_@@_scale_abs_tl } + { 1.68ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex , y=1ex , scale=#1 , line ~ width=0.08ex*\l_@@_scale_abs_tl + ] + \draw (0,0) -- (0,1.6); + \draw (3,0) -- (3,1.2); + \draw (0,0.5) -- (3,0.5); + \draw (0,0.35) -- (3,0.35); + \draw (0.7,0.5) arc [start ~ angle=0, end ~ angle=90, radius=0.7]; + \draw (0.7,0.5) arc [start ~ angle=180, end ~ angle=30, x ~ radius=1.231,y ~ radius=0.6]; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Tribar } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Tribar } + { S O{opacity=0} O{opacity=0} O{opacity=0} } + { + \@@_provide_savebox_and_use:nn { Tribar_#1_#2_#3_#4 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.71746ex * \l_@@_scale_abs_tl } + { 1.68497ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.65ex,y=0.65ex,scale=#1, + rounded ~ corners=0.03ex* \l_@@_scale_abs_tl , + line ~ width=0.06ex* \l_@@_scale_abs_tl + ] + \fill[#2] (0.15,0.3) -- (-0.15,-0.3) -- (1.75,-0.3) -- ++ (-0.15,-0.3) + -- (-0.65,-0.6) -- (0.35,1.3) -- +(0.15,-0.3); + \fill[#3] (0,0) -- (1.3,0) -- (0.35,1.9) -- (0.65,1.9) -- + (1.75,-0.3) -- (-0.1,-0.3); + \fill[#4] (1,0) -- (0.35,1.3) -- (-0.65,-0.6) -- ++ + (-0.15,0.3) -- (0.35,1.9) -- (1.3,0); + \draw (0,0) -- (1,0) -- (0.5,1) -- cycle; + \draw (0.15,0.3) -- (-0.15,-0.3) -- (1.75,-0.3) -- ++ (-0.15,-0.3) + -- (-0.65,-0.6) -- (0.35,1.3) -- (0.8,.4); + \draw (0.9,0) -- (1.3,0) -- (0.35,1.9) -- (0.65,1.9) -- + (1.75,-0.3) -- +(-0.05,-0.1); + \draw (-0.6,-0.6) -- (-0.65,-0.6) -- ++ (-0.15,0.3) -- (0.35,1.9) -- (0.4,1.9); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Moai } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Moai } { S } + { + \@@_provide_savebox_and_use:nn { Moai_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \fp_compare:nNnTF { \l_@@_scale_abs_tl } < { 2 } + { + \dim_set:Nn \l_@@_Moai_thickness_dim { 0.05ex } + }{ + \fp_compare:nNnTF { \l_@@_scale_abs_tl } < { 5 } + { \dim_set:Nn \l_@@_Moai_thickness_dim { 0.035ex } } + { \dim_set:Nn \l_@@_Moai_thickness_dim { 0.03ex } } + } + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { ( 1.00102ex + \l_@@_Moai_thickness_dim ) * \l_@@_scale_abs_tl } + { ( 1.66404ex + \l_@@_Moai_thickness_dim ) * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=.13ex, y=.13ex, rounded ~ corners=0.01ex* \l_@@_scale_abs_tl , + scale=#1, + line ~ width= \dim_use:N \l_@@_Moai_thickness_dim * \l_@@_scale_abs_tl + ] + \draw (-2.6,-4.25) -- (-2.5,-5.8) + ..controls (-2,-6.8) and (1.5,-6.8) .. (2.2,-5.8) -- (2.4,-3.95); + \draw (-2.5,2.5) .. controls (-2.9,4.6) and (2,5) .. (3.3,2.5) -- (2.9,-3.4) + .. controls (2,-5) and (-4,-5) .. (-3.1,-3) -- cycle; + \draw (-2.5,3) -- (-2,5) .. controls (0,6) and (2,5.8) .. (3.1,4.7) -- (3.3,2.5); + \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] + (-2.2,-1.8) .. controls (-1,-1.3) and (0,-1.7) .. (1,-2); + \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] + (-2.2,-1.8) .. controls (-1,-1) and (0,-1.4) .. (1,-2); + \draw[line ~ width=0.02ex* \l_@@_scale_abs_tl ] + (-2.2,-1.8) .. controls (-1,-2) and (0,-2) .. (1,-2); + \draw (-0.8,4) .. controls (-0.8,3) and (-0.8,2) .. (-1.6,0.5) -- (-1.8,-0.4) + .. controls (-1,0.2) and (0,0.2) .. (0.6,-0.4) -- (0.7,0.4) + .. controls (0,1) and (0,2) .. (0.8,4); + \draw (-1.8,-0.36) .. controls (-0.5,-0.5) and (0,-0.5) .. (0.6,-0.36); + \draw (3.2,3.5) -- (3.7,3.5) .. controls (3.5,2) + and (3.5,2) .. (3.6,-1.5) -- (3,-1.9); + \draw (-2.5,3) .. controls (-2.7,2) and (-3,1) .. (-2.88,-1); + \draw (-2.5,2.8) .. controls (-2,2.5) and (-1,3) .. (-0.8,3.1); + \draw (0.5,3.3) .. controls (1,3) and (1,2.5) .. (3.3,2.4); + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +% \begin{macro}{ \Snowman } +% +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Snowman } { S } + { + \@@_provide_savebox_and_use:nn { Snowman_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.545ex * \l_@@_scale_abs_tl } + { 1.77157ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=0.9ex,y=0.9ex,line ~ width=0.07ex* \l_@@_scale_abs_tl , scale=#1 + ] + \draw (0,0) circle [x ~ radius = 0.4 , y~radius=0.35]; + \draw[line ~ width=0.06ex* \l_@@_scale_abs_tl ] (0,0.64) circle [x ~ radius = 0.3 , y~radius=0.28]; + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (0,1.14) circle [x ~ radius = 0.2 , y~radius=0.2]; + \draw + [ + rounded ~ corners=0.1ex* \l_@@_scale_abs_tl , + line ~ width=0.05ex* \l_@@_scale_abs_tl , + rotate ~ around={-30 \token_to_str:N : (0,1.14)} , + ] + (-0.2,1.15) -- ++(0,0.35) -- +(0.4,0) -- (0.2,1.14); + \draw + [ + rounded ~ corners=0.07ex * \l_@@_scale_abs_tl , + line ~ width=0.05ex * \l_@@_scale_abs_tl , + rotate ~ around={-30 \token_to_str:N : (0,1.14)} , + ] + (-0.2,1.19) arc [start ~ angle=270, end ~ angle=90, radius=0.1]; + \foreach \y in { 0.78 , 0.63 , 0.48 } + \fill (0,\y) circle [radius=0.04]; + \foreach \y in { 0.2 , 0 , -0.2 } + \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 [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); + \foreach\x in {-0.85, -0.75,-0.65,-0.55,-0.45} + \draw[line ~ width=0.05ex* \l_@@_scale_abs_tl ] (-0.65,1) -- (\x,1.3); + \foreach \y/\x/\z in { 0.7/0.75 , 0.9/0.8 , 1/0.6/0.55 } + \draw (0.6,0.8) -- (\x,\y) (-0.6,0.8) -- (-\z,\y) ; + \end{tikzpicture}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% \subsection{Trees} +% Many great ideas are stolen. Don't know who said that, but it's +% true. +% +% +% +%\begin{macro}{ \@@_Basic_Tree:nnnnn } +% Let's define the \Makro{@@_Basic_Tree:nnnnn} command. +% Like every symbol it also is saved inside a box. +% If the fifth argument is neither empty nor \enquote{leaf} +% it \dots\ does (?) an error message. +% \begin{macrocode} +\cs_new:Npn \@@_Basic_Tree:nnnnn #1#2#3#4#5 + { + \@@_provide_savebox_and_use:nn + { BasicTree_#1_#2_#3_#4_#5 } + { + \tl_set:Nn \l_tmpa_tl {#5} + \bool_lazy_or:nnTF + { \tl_if_eq_p:NN \l_tmpa_tl \c_@@_leaf_tl } + { \tl_if_empty_p:n {#5} } + { \@@_Basic_Tree_aux:nnnnn {#1} {#2} {#3} {#4} {#5} } + { \msg_error:nnn { tikzsymbols } { tree } {#5} } + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{ \BasicTree } +% Well, thats the final \Makro{BasicTree} command. +% More or less copy \& pasted from the \Package{tikz} manual. +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { BasicTree } { S m m m m } + { + \@@_Basic_Tree:nnnnn {#1} {#2} {#3} {#4} {#5} + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \WorstTree } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { WorstTree } { S } + { + \@@_provide_savebox_and_use:nn { WorstTree_#1 } + { + \@@_set_scale_abs_tl:n {#1} + \bool_if:NTF \l_@@_if_opt_draft_bool + { + \@@_create_draftbox:nn + { 1.64ex * \l_@@_scale_abs_tl } + { 1.84ex * \l_@@_scale_abs_tl } + }{ + \begin{tikzpicture} + [ + /@@ , + x=1ex,y=1ex, line ~ width=0.04ex* \l_@@_scale_abs_tl ,scale=#1 + ] + \fill[brown] (-0.3,0) .. controls (0.2,0.3) and (0.2,0.7) .. (0.2,1) -- (0.5,1) .. + controls (0.5,0.7) and (0.5,0.3) .. (1,0); + \draw (-0.3,0) .. controls (0.2,0.3) and (0.2,0.7) .. (0.2,1) -- (0.5,1) .. + controls (0.5,0.7) and (0.5,0.3) .. (1,0) ; + \fill[green] (0.2,0.8) -- (0,0.8) .. controls (-0.4,0.7) and (-0.4,1) .. (-0.3,1.2) .. + controls (-0.3, 1.6) and (-0.1,1.6) .. (0.1,1.5) .. + controls (0.3,1.8) and (0.6,1.6) .. (0.7,1.5) .. + controls (1.1, 1.6) and (1,1.4) .. (1,1.2) .. + controls (1.2,1) and (1.2,0.7) .. (0.8,0.8) -- (0.5,0.8); + \draw (0.214,0.8) -- (0,0.8) .. controls (-0.4,0.7) and (-0.4,1) .. (-0.3,1.2) .. + controls (-0.3, 1.6) and (-0.1,1.6) .. (0.1,1.5) .. + controls (0.3,1.8) and (0.6,1.6) .. (0.7,1.5) .. controls (1.1, 1.6) and (1,1.4) .. + (1,1.2) .. controls (1.2,1) and (1.2,0.7) .. (0.8,0.8) -- (0.486,0.8); + \fill[red] (0,1) circle [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}% + } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +% +%\begin{macro}{ \Springtree } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Springtree } { S } + { + \@@_Basic_Tree:nnnnn + {#1} + { brown!70!black } + { green!90!black } + { green!80!black } + { leaf } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Summertree } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Summertree } { S } + { + \@@_Basic_Tree:nnnnn + {#1} + { brown!50!black } + { green!80!black } + { red!80!green } + { leaf } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Autumntree } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Autumntree } { S } + { + \@@_Basic_Tree:nnnnn + {#1} + { red!30!black } + { red!75!black } + { orange } + { leaf } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +% +% +%\begin{macro}{ \Wintertree } +% \begin{macrocode} +\@@_Declare_Document_Command:nnn { Wintertree } { S } + { + \@@_Basic_Tree:nnnnn + {#1} + { black!80!white } + { black!50 } + { black!25 } + { } + } +% \end{macrocode} +%\end{macro} +% +% +% +% Checks if the Package \Package{marvosym} is loaded +% if the \Option{marvosym} is set true. +% \begin{macrocode} +\AtBeginDocument + { + \bool_if:NT \g_@@_if_opt_marvosym_bool + { + \@ifpackageloaded { marvosym } { } + { + \msg_error:nn { tikzsymbols } { marvosym } + } + } + } +% \end{macrocode} +% +% +% \begin{macro}{ \tikzsymbolsuse } +% If the english command name is used, the german one +% is inserted, don't exactly know why. +% \begin{macrocode} +\NewDocumentCommand \tikzsymbolsuse { m } + { + \prop_get:NnNTF \g_@@_english_commands_prop {#1} \l_tmpa_tl + { + \use:c { \g_@@_command_prefix_tl \l_tmpa_tl } + }{ + \cs_if_exist:cTF { \g_@@_command_prefix_tl #1 } + { \use:c { \g_@@_command_prefix_tl #1 } } + { \msg_error:nnn { tikzsymbols } { undefined-command } {#1} } + } + } +% \end{macrocode} +%\end{macro} +% +% +% +% +%\begin{macro}{ \tikzsymbolsset } +% \begin{macrocode} +\NewDocumentCommand \tikzsymbolsset { m } + { + \keys_set_filter:nnnN { tikzsymbols } { only-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 + } + } +\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_@@_save_global_scale_for_later_because_no_better_idea_tl +% \end{macrocode} +%\end{macro} +% +% +%^^A\iffalse +%<*ignore> +\tkzsymbls@Declare@Robust@Command{@@@@@@@@Keep@Cool@@@@I}{% +\begin{tikzpicture}[ /@@ ,x=1em, y=1em, line ~ width=0.03em] +\fill[decorate,decoration={snake,amplitude=.02em,segment ~ length=0.4em},cyan!20!] +(0,0) -- (0,1) -- (1,1) -- (1,0) -- cycle; +\draw (0.3,0.3) -- (0.55,0.7);% Körper +\draw (0.05,0.4) -- (0.3,0.3) -- (0.1,0.1); +\draw (0.3,0.8) -- (0.5,0.61); +\draw (0.49,0.61) -- (0.8,0.65); +\draw (0.65,0.9) circle [radius=0.17]; +\end{tikzpicture}% +\tikzsymbolsaftersymbolinput% +} +\tkzsymbls@Declare@Robust@Command{@@@@@@@@@@@Keep@Cool@@@@@II}{% +\begin{tikzpicture}[ /@@ ,x=1em,y=1em] +\fill[decorate,decoration={snake,amplitude=.02em,segment ~ length=0.6em},cyan!20!] (-0.3,-0.3) rectangle (0.5,1); +\draw (0,-0.1) -- (0.15,0.2) -- (0.3,-0.1);% Beine +\draw (.15,.2) -- (.15,.4);% Körper +\draw (.15,.4) -- (.4,.5);% Rechter Arm +\draw (.15,.4) -- (-0.1,.5);% Linker Arm +\draw (.15, .4) -- (.15, .53);% Hals +\draw (.15,.8) circle [radius=0.18];% Kopf +\end{tikzpicture}% +\tikzsymbolsaftersymbolinput% +} +%</ignore> +%^^A\fi +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \end{implementation} +% +% +% +% \endinput +% +% +% +% Local Variables: +% mode: doctex +% TeX-master: t +% End: diff --git a/graphics/pgf/contrib/tikzsymbols/tikzsymbols.ins b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.ins new file mode 100644 index 0000000000..9b22e1b434 --- /dev/null +++ b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.ins @@ -0,0 +1,52 @@ +%% +%% This is file `tikzsymbols.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tikzsymbols.dtx (with options: `install') +%% +%% Copyright (C) 2013--2019 by Ben Vitecek (current Maintainer) +%% +%% 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.md, tikzsymbols.dtx, +%% tikzsymbols.ins and the derived files tikzsymbols.sty. +%% +\input l3docstrip.tex +\askforoverwritefalse +\preamble + + Copyright (C) 2013--2019 by Ben Vitecek (current Maintainer) + + 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.md, tikzsymbols.dtx, + tikzsymbols.ins and the derived files tikzsymbols.sty. + +\endpreamble + +\usedir{tex/latex/tikzsymbols} +\generate{ + \file{\jobname.sty}{\from{\jobname.dtx}{package}} +} +\endbatchfile +\endinput +%% +%% End of file `tikzsymbols.ins'. diff --git a/graphics/pgf/contrib/tikzsymbols/tikzsymbols.pdf b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.pdf Binary files differnew file mode 100644 index 0000000000..f075506ba3 --- /dev/null +++ b/graphics/pgf/contrib/tikzsymbols/tikzsymbols.pdf |