summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty')
-rw-r--r--graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty186
1 files changed, 186 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty b/graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty
new file mode 100644
index 0000000000..ae2bf3d937
--- /dev/null
+++ b/graphics/pgf/contrib/tikzmarmots/tikzmarmots.sty
@@ -0,0 +1,186 @@
+% !TeX root = ./testing/test.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzmarmots package
+% A package to bring little marmots into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/tikzmarmots
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 1.0
+% Nov 8, 2018
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{tikzmarmots}
+ [2018/11/09 v1.0 Drawing marmots in TikZ]
+
+\PackageWarning{tikzmarmots}{The TikZmarmots package was merged into the TikZlings package, please load the package `tikzlings-marmots` or the more general `tikzlings` package instead}
+
+\RequirePackage{tikz}
+\usetikzlibrary{shadows.blur}
+\usetikzlibrary{fadings}
+
+\tikzfading[name=marmot@blush,
+inner color=transparent!50,
+outer color=transparent!100]
+
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+
+\ifluatex
+ \let\pdfrandomseed\randomseed
+\fi
+
+\ifxetex
+ \pgfmathsetseed{\time}
+\else
+ \pgfmathsetseed{\number\pdfrandomseed}
+\fi
+
+\newcommand*{\marmot}[1][]{%
+ \begin{scope}%
+ \tikzset{/marmot/.cd,#1}%
+ \marmot@draw%
+ \end{scope}%
+}
+
+\newif\ifmarmot@blush
+\newif\ifmarmot@whiskers
+\newif\ifmarmot@teeth
+\newif\ifmarmot@threeD
+\newif\ifmarmot@shadow
+\newif\ifmarmot@askphil
+
+\tikzset{
+ %
+ % Pass unknown keys on to tikz
+ %
+ /marmot/.search also={/tikz,/pgf},
+ /marmot/.cd,
+ %
+ % body
+ %
+ body/.code = \def\marmot@body{#1},
+ body = brown,
+ %
+ % options
+ %
+ blush/.code = \marmot@blushtrue,
+ whiskers/.code = \marmot@whiskerstrue \def\marmot@whiskers{#1},
+ whiskers/.default = gray,
+ teeth/.code = \marmot@teethtrue,
+ 3D/.code = \marmot@threeDtrue,
+ shadow/.code = \marmot@shadowtrue,
+ askphil/.code = \marmot@askphiltrue,
+ ask phil/.forward to=/marmot/askphil,
+}
+
+\def\marmot@draw{%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% minimal bounding box size
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path (0.3,0.1) rectangle (1.83,2.17);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% switch between 2D and 3D, from
+% https://chat.stackexchange.com/transcript/message/45991801#45991801
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@threeD
+ \def\marmot@part@draw##1{\shade[ball color=##1]}
+\else
+ \def\marmot@part@draw##1{\fill[##1]}
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% shadow
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\ifmarmot@askphil
+ \pgfmathparse{int(random(1,120))}
+ \let\marmot@random=\pgfmathresult
+ \ifnum\marmot@random>17
+ \marmot@shadowtrue
+ \fi
+\fi
+%
+\ifmarmot@shadow
+ \fill[opacity=0,blur shadow,rotate=-80] (-0.25,1.3) ellipse (0.28 and 0.8);
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Body parts (center: x=0.925)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black} (1.18,0.2) ellipse (0.23 and 0.09);
+\marmot@part@draw{\marmot@body!50!black} (0.67,0.2) ellipse (0.23 and 0.09);
+%
+% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black} (1.18,2.03) ellipse (0.09 and 0.13);
+\marmot@part@draw{\marmot@body!50!black} (0.67,2.03) ellipse (0.09 and 0.13);
+%
+% Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black} (1.81,0.67) .. controls (1.79,0.40) and (1.27,0.24) .. (1.26,0.44) .. controls (1.24,0.56) and (1.37,0.51) .. (1.50,0.53) .. controls (1.62,0.54) and (1.81,0.72) .. (1.81,0.67) -- cycle;
+%
+% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body} (1.52,0.92) .. controls (1.52,0.26) and (1.28,0.18) .. (0.925,0.18) .. controls (0.57,0.18) and (0.33,0.26) .. (0.33,0.92) .. controls (0.32,1.58) and (0.59,2.11) .. (0.925,2.11) .. controls (1.26,2.11) and (1.53,1.58) .. (1.52,0.92) -- cycle;
+%
+% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!white} (1.35,0.71) .. controls (1.35,0.41) and (1.17,0.37) .. (0.925,0.37) .. controls (0.68,0.37) and (0.5,0.41) .. (0.5,0.71) .. controls (0.5,1.01) and (0.7,1.26) .. (0.925,1.26) .. controls (1.15,1.26) and (1.35,1.01) .. (1.35,0.71) -- cycle;
+%
+% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black,rotate around={70:(1.31,0.93)}} (1.31,0.93) ellipse (0.24 and 0.13);
+\marmot@part@draw{\marmot@body!50!black,rotate around={-70:(0.54,0.93)}} (0.54,0.93) ellipse (0.24 and 0.13);
+%
+% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!white} (0.925,1.47) ellipse (0.23 and 0.13);
+%
+% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black} (0.925,1.6) circle (0.08);
+%
+% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\marmot@part@draw{\marmot@body!50!black} (0.77,1.77) circle (0.05);
+\marmot@part@draw{\marmot@body!50!black} (1.08,1.77) circle (0.05);
+%
+% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\draw[\marmot@body!50!black] (1.07,1.51) arc [start angle=-20, end angle=-160, radius=0.16];
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% optional
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@blush
+ \fill[red,path fading=marmot@blush] (0.63,1.6) circle (0.1);
+ \fill[red,path fading=marmot@blush] (1.22,1.6) circle (0.1);
+\fi
+%
+% Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@whiskers
+ \foreach \X in {10,20,33}{%
+ \filldraw[line width=0pt,\marmot@whiskers] (0.925,1.6) + (\X:0.08) to[out=\X,in={180-\X}] ++({\X-20}:0.3) --++(0,0.005) to[out={180-\X},in=\X] cycle (0.925,1.6) + ({180-\X}:0.08) to[out={180-\X},in=\X] ++({200-\X}:0.3) --++(0,0.005) to[out=\X,in={180-\X}] cycle;
+ }
+\fi
+%
+% Teeth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifmarmot@teeth
+ \draw[very thin,fill=white] (0.88,1.41) -- (0.88,1.38) to[out=-5,in=-175] (0.97,1.38) -- (0.97,1.41) to[out=-170,in=-10] cycle;
+ \draw[very thin] (0.925,1.405) -- (0.925,1.38);
+\fi
+%
+}
+