diff options
Diffstat (limited to 'graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty')
-rw-r--r-- | graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty | 123 |
1 files changed, 67 insertions, 56 deletions
diff --git a/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty b/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty index 5ce10d34be..47f868b0b7 100644 --- a/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty +++ b/graphics/pgf/contrib/tikzlings/tikzlings-rhinos.sty @@ -9,10 +9,10 @@ %% https://github.com/samcarter/tikzlings %% %% Released under the LaTeX Project Public License v1.3c or later -%% See http://www.latex-project.org/lppl.txt +%% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-rhinos}[2022/06/17 version v1.0 Drawing rhinos in TikZ] +\ProvidesPackage{tikzlings-rhinos}[2025/01/05 version v2.2 Drawing rhinos in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,12 +26,13 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname rhinohookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifrhino@threeD \newif\ifrhino@back \newif\ifrhino@contour +\newif\ifrhino@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -47,34 +48,38 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% body/.store in = \rhino@body, - body = gray, + body = gray!55!white, toes/.store in = \rhino@toes, - toes = \rhino@body!55!white, + toes = \rhino@body, eye/.store in = \rhino@eye, - eye = white, + eye = white, pupil/.store in = \rhino@pupil, - pupil = black, + pupil = black, mouth/.store in = \rhino@mouth, - mouth = \rhino@body!70!black, + mouth = \rhino@body!50!black, + horn/.store in = \rhino@horn, + horn = white!95!yellow, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + openmouth/.code = \rhino@openmouthtrue, + open mouth/.forward to = /rhino/openmouth, 3D/.code = \rhino@threeDtrue - \def\rhino@mouth{black}, - back/.code = \rhino@backtrue, + \def\rhino@mouth{black}, + back/.code = \rhino@backtrue, contour/.code = \rhino@contourtrue \def\rhino@contour{#1} \def\rhino@mouth{#1}, - contour/.default = black, - outline/.forward to = /rhino/contour, + contour/.default = black, + outline/.forward to = /rhino/contour, } \def\rhino@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.625, 2.17); @@ -91,7 +96,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -109,7 +114,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -117,25 +122,22 @@ \csname tikzlinghookbackground\endcsname % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \rhino@part@draw[\rhino@body] (-0.1772, 2.0686) .. controls (-0.2057, 2.1602) and (-0.3552, 2.2076) .. (-0.3552, 2.1922) .. controls (-0.3552, 2.1922) and (-0.3694, 1.9615) .. (-0.2855, 1.9615) .. controls (-0.2264, 1.9462) and (-0.1772, 1.9462) .. (-0.1772, 2.0686) -- cycle; - \rhino@part@draw[\rhino@body] (0.1772, 2.0686) .. controls (0.2057, 2.1602) and (0.3552, 2.2076) .. (0.3552, 2.1922) .. controls (0.3552, 2.1922) and (0.3694, 1.9615) .. (0.2855, 1.9615) .. controls (0.2264, 1.9462) and (0.1772, 1.9462) .. (0.1772, 2.0686) -- cycle; + \rhino@part@draw[\rhino@body!70!black] (-0.1772, 2.0686) .. controls (-0.2057, 2.1602) and (-0.3552, 2.2076) .. (-0.3552, 2.1922) .. controls (-0.3552, 2.1922) and (-0.3694, 1.9615) .. (-0.2855, 1.9615) .. controls (-0.2264, 1.9462) and (-0.1772, 1.9462) .. (-0.1772, 2.0686) -- cycle; + \rhino@part@draw[\rhino@body!70!black] (0.1772, 2.0686) .. controls (0.2057, 2.1602) and (0.3552, 2.2076) .. (0.3552, 2.1922) .. controls (0.3552, 2.1922) and (0.3694, 1.9615) .. (0.2855, 1.9615) .. controls (0.2264, 1.9462) and (0.1772, 1.9462) .. (0.1772, 2.0686) -- cycle; % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifrhino@back - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \rhino@part@draw[\rhino@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \end{scope} + \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; \fi% back % % Nose if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifrhino@back - \rhino@part@draw[\rhino@body!80!white] (0, 1.55) ellipse[x radius=0.36, y radius=0.2]; + \rhino@part@draw[\rhino@body!83!black] (0, 1.55) ellipse[x radius=0.36, y radius=0.2]; \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \rhino@part@draw[\rhino@body!55!white] ( 0.55, 0.8 ) .. controls ( 0.55 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.55 , 0.4) .. (-0.55, 0.8 ) .. controls (-0.55 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.55 , 1.3) .. ( 0.55, 0.75) -- cycle; + \rhino@part@draw[\rhino@body] ( 0.55, 0.8 ) .. controls ( 0.55 , 0.4) and ( 0.35, 0.19) .. ( 0.0, 0.19) .. controls (-0.35, 0.19) and (-0.55 , 0.4) .. (-0.55, 0.8 ) .. controls (-0.55 , 1.3) and (-0.35, 1.65) .. ( 0.0, 1.65) .. controls ( 0.35, 1.65) and ( 0.55 , 1.3) .. ( 0.55, 0.75) -- cycle; % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname rhinohookbelly\endcsname @@ -143,12 +145,12 @@ % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifrhino@back - \rhino@part@draw[\rhino@body] (0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90]; - \rhino@part@draw[\rhino@body] (-0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90]; + \rhino@part@draw[\rhino@body!70!black] (0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90]; + \rhino@part@draw[\rhino@body!70!black] (-0.3,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=-90]; \fi% back % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \rhino@part@draw[\rhino@body!55!white] (0, 1.76) circle[radius=0.36]; + \rhino@part@draw[\rhino@body] (0, 1.76) circle[radius=0.36]; % % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifrhino@back @@ -167,26 +169,27 @@ \fi% contour % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \rhino@part@draw[\rhino@body!80!white] (0, 1.55) ellipse[x radius=0.36, y radius=0.2]; + \rhino@part@draw[\rhino@body!83!black] (0, 1.55) ellipse[x radius=0.36, y radius=0.2]; % % Horn %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \rhino@part@draw[white!95!yellow] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle; + \rhino@part@draw[\rhino@horn] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ; + \ifrhino@openmouth + \filldraw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; + \else + \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; + \fi % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \rhino@part@draw[\rhino@body] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@body] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@toes] (0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \end{scope} + \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.2,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.1] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.32,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@toes] (0.08,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@toes] (0.2,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.1] -- cycle; + \rhino@part@draw[\rhino@toes] (0.32,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; % \fi% back % @@ -208,52 +211,60 @@ % %\subsection{Package name} % -%\begin{tcolorbox}[lower separated=false, lefthand width=.8\linewidth] -%\vspace*{0.5cm} -%\lstinline|\usepackage{tikzlings-rhinos}| -%\vspace*{0.5cm} +%\begin{tcolorbox}[title={Package usage}] +%\begin{samcode} +%\usepackage{tikzlings-rhinos} +%\end{samcode} %\end{tcolorbox} % %\subsection{Basic Usage} % -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Basic rhino}} %\rhino %\end{tcblisting} % %\subsection{Options} % %The basic rhino can be modified by changing its colour: -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Body colour}} %\rhino[body=blue] %\end{tcblisting} % %In addition to the colour of the body, the colour of various body parts can be adjusted: -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Eye colour}} %\rhino[eye=red] %\end{tcblisting} -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Pupil colour}} %\rhino[pupil=red] %\end{tcblisting} -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Mouth colour}} %\rhino[mouth=red] %\end{tcblisting} +%\begin{tcblisting}{title={Horn colour}} +%\rhino[horn=red] +%\end{tcblisting} +% +% The rhino can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\rhino[openmouth] +%\end{tcblisting} % %The hippo can also do its nails: -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Toe colour}} %\rhino[toes=red] %\end{tcblisting} % %To view the rhino from behind: -%\begin{tcblisting}{} +%\begin{tcblisting}{title={Back view}} %\rhino[back] %\end{tcblisting} % -%The key \lstinline|3D| will make the rhino 3-dimensional: -%\begin{tcblisting}{} +%The key \saminline|3D| will make the rhino 3-dimensional: +%\begin{tcblisting}{title={3D view}} %\rhino[3D] %\end{tcblisting} % -%And finally the \lstinline|contour| key will only draw the outlines: -%\begin{tcblisting}{} +%And finally the \saminline|contour| key will only draw the outlines: +%\begin{tcblisting}{title={Contours}} %\rhino[contour=black] %\end{tcblisting} |