summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-04-22 20:49:51 +0000
committerKarl Berry <karl@freefriends.org>2020-04-22 20:49:51 +0000
commit631561b7942e1ab1547a224f308d55c5b00c6043 (patch)
tree24d0ac770a8e58b4e4e3421d5edcf934c91f208b
parent99923ee8bb81fc7c615f5e511aed1ef7a8d82485 (diff)
tikzducks (22apr20)
git-svn-id: svn://tug.org/texlive/trunk@54837 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdfbin439733 -> 440630 bytes
-rw-r--r--Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex584
-rw-r--r--Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty215
3 files changed, 440 insertions, 359 deletions
diff --git a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf
index cbcdb1bb3af..296ff06bb1d 100644
--- a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf
+++ b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex
index 34de5f9863a..fbe6f48faef 100644
--- a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex
+++ b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex
@@ -14,12 +14,12 @@
\documentclass[parskip=half]{scrartcl}
% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[bitstream-charter]{mathdesign}
\usepackage{tikzducks}
-\usetikzlibrary{ducks}
+\usetikzlibrary{ducks,3d}
\usepackage[most]{tcolorbox}
\usepackage[paper=a4paper,margin=3cm,foot=2cm]{geometry}
\usepackage{url}
@@ -46,37 +46,37 @@
\setlength{\footnotemargin}{0.7em}
\lstdefinestyle{duckstyle}{%
- language={[latex]TeX},
- tabsize=2,
- breaklines,
- basicstyle=\footnotesize\ttfamily,
- commentstyle={\color{green!50!black}\slshape},
- columns=fullflexible,
- emphstyle=\color{orange!70!black},
- emph=[1]{water,body,head,eye,pupil,bill,grumpy,tshirt,jacket,tie,cape,shorthair,longhair,crazyhair,recedinghair,eyebrow,beard,glasses,sunglasses,alien,hat,cap,santa,chef,cheese,graduate,tassel,beret,crown,unicorn,icecream,flavoura,flavourb,flavourc,book,bookcolour,signpost,signcolour,signback,magichat,magicstars,magicwand,witch,cricket,rollingpin,lightsaber,torch,cake,pizza,hockey,baguette,wing,football,mask,bunny,inear,necklace,milkshake,wine,peakedcap,prison,tophat,speech,bubblecolour,think,buttons,sheep,squareglasses,tail,basket,easter,egga,eggb,eggc,mohican,mullet,horsetail,darthvader,crozier,queencrown,kingcrown,wing,laughing,parrot,stethoscope,niuqelrah,harlequin,neckerchief,woggle,snowduck,invisible,strawhat,ribbon,vampire,parting,crystalball,helmet,shovel,pickaxe,bowtie,lapel,umbrella,umbrellaclosed,handbag,cocktail,viking,devil,aodai,conicalhat,overleaf},
- texcsstyle=*\color{duckblue}\bfseries,
- keywordstyle=\color{red!60!black}\bfseries,
- morekeywords={tikzpicture,picture,scope,patterns,calc,pgfinterruptboundingbox},
- moretexcs={duck,picduck,path,definecolor,duckpathjacket,duckpathbody,duckpathgrumpybill,duckpathbill,duckpathtshirt,duckpathcape,duckpathshorthair,duckpathlonghair,duckpathcrazyhair,duckpathrecedinghair,duckpathcrown,scalebox,foreach,node,draw,PassOptionsToPackage,usetikzlibrary,selectcolormodel,colorlet,insignia,stripes,color,includegraphics,mcap,setboardfontcolors,setboardfontencoding,WhiteQueenOnWhite,WhiteKingOnWhite,superstripes,shuffleducks,randuck,randomhead,randomaccessories,duckpathmohican,duckpathmullet,duckpathqueencrown,duckpathkingcrown,duckpathdarthvader,duckpathhorsetail,tikzset,duckpathwing,shade},
- delim ={[s][\ttfamily\color{green!50!black}]{$}{$}},
- moredelim=[is][\footnotesize\ttfamily\color{orange!70!black}]{|}{|},
- index=[1][emph]
+ language={[latex]TeX},
+ tabsize=2,
+ breaklines,
+ basicstyle=\footnotesize\ttfamily,
+ commentstyle={\color{green!50!black}\slshape},
+ columns=fullflexible,
+ emphstyle=\color{orange!70!black},
+ emph=[1]{water,body,head,eye,pupil,bill,grumpy,tshirt,jacket,tie,cape,shorthair,longhair,crazyhair,recedinghair,eyebrow,beard,glasses,sunglasses,alien,hat,cap,santa,chef,cheese,graduate,tassel,beret,crown,unicorn,icecream,flavoura,flavourb,flavourc,book,bookcolour,signpost,signcolour,signback,magichat,magicstars,magicwand,witch,cricket,rollingpin,lightsaber,torch,cake,pizza,hockey,baguette,wing,football,mask,bunny,inear,necklace,milkshake,wine,peakedcap,prison,tophat,speech,bubblecolour,think,buttons,sheep,squareglasses,tail,basket,easter,egga,eggb,eggc,mohican,mullet,horsetail,darthvader,crozier,queencrown,kingcrown,wing,laughing,parrot,stethoscope,niuqelrah,harlequin,neckerchief,woggle,snowduck,invisible,strawhat,ribbon,vampire,parting,crystalball,helmet,shovel,pickaxe,bowtie,lapel,umbrella,umbrellaclosed,handbag,cocktail,viking,devil,aodai,conicalhat,overleaf,sailor},
+ texcsstyle=*\color{duckblue}\bfseries,
+ keywordstyle=\color{red!60!black}\bfseries,
+ morekeywords={tikzpicture,picture,scope,patterns,calc,pgfinterruptboundingbox},
+ moretexcs={duck,picduck,path,definecolor,duckpathjacket,duckpathbody,duckpathgrumpybill,duckpathbill,duckpathtshirt,duckpathcape,duckpathshorthair,duckpathlonghair,duckpathcrazyhair,duckpathrecedinghair,duckpathcrown,scalebox,foreach,node,draw,PassOptionsToPackage,usetikzlibrary,selectcolormodel,colorlet,insignia,stripes,color,includegraphics,mcap,setboardfontcolors,setboardfontencoding,WhiteQueenOnWhite,WhiteKingOnWhite,superstripes,shuffleducks,randuck,randomhead,randomaccessories,duckpathmohican,duckpathmullet,duckpathqueencrown,duckpathkingcrown,duckpathdarthvader,duckpathhorsetail,tikzset,duckpathwing,shade,duckhookbackground,duckhookbody,duckhookclothing,duckhookhair,duckhookhat,duckhookforeground},
+ delim ={[s][\ttfamily\color{green!50!black}]{$}{$}},
+ moredelim=[is][\footnotesize\ttfamily\color{orange!70!black}]{|}{|},
+ index=[1][emph]
}
\tcbset{%
- colframe=duckblue,
- arc=2mm,
- fonttitle=\bfseries,
- sidebyside,
- listing options={style=duckstyle},
- center lower,
- righthand width=6.5cm,
- bottom=0pt,
- top=0pt,
- before lower={%
- \setlength{\parskip}{0.5cm}%
- \spaceskip=5\fontdimen2\font%
- },
+ colframe=duckblue,
+ arc=2mm,
+ fonttitle=\bfseries,
+ sidebyside,
+ listing options={style=duckstyle},
+ center lower,
+ righthand width=6.5cm,
+ bottom=0pt,
+ top=0pt,
+ before lower={%
+ \setlength{\parskip}{0.5cm}%
+ \spaceskip=5\fontdimen2\font%
+ },
}
\lstset{style=duckstyle}
@@ -87,11 +87,11 @@
\newlength{\duckoffset}
\cfoot{%
- \tikzset{external/export=false}%
- \shuffleducks
- \begin{tikzpicture}[scale=0.5]
- \duck[signpost=\scalebox{0.6}{\thepage},\randomhead]
- \end{tikzpicture}
+ \tikzset{external/export=false}%
+ \shuffleducks
+ \begin{tikzpicture}[scale=0.5]
+ \duck[signpost=\scalebox{0.6}{\thepage},\randomhead]
+ \end{tikzpicture}
}
\pagestyle{scrheadings}
\indexsetup{firstpagestyle=scrheadings}
@@ -99,24 +99,24 @@
\usetikzlibrary{external}
\ifnum\pdfshellescape=1
- \tikzexternalize[prefix=./tikzducks-doc-figures/]
+ \tikzexternalize[prefix=./tikzducks-doc-figures/]
\fi
% meta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{The \texorpdfstring{\tikzducks}{tikzducks} package}
\subtitle{using ducks in \TikZ}
\author{%
- \texorpdfstring{\texttt{samcarter} (alias
- \tikzset{external/export=false}%
- \begin{tikzpicture}[scale=0.3,baseline=3pt]
- \duck[body=yellow!50!brown!50!white,
- longhair=red!50!brown,
- jacket=blue!50!black]
- \end{tikzpicture})\\[0.8em]
- \url{https://github.com/samcarter/tikzducks}\\
- \url{https://www.ctan.org/pkg/tikzducks}
- }{samcarter}}
-\date{Version v1.3 \textendash{} 2020/01/03}
+ \texorpdfstring{\texttt{samcarter} (alias
+ \tikzset{external/export=false}%
+ \begin{tikzpicture}[scale=0.3,baseline=3pt]
+ \duck[body=yellow!50!brown!50!white,
+ longhair=red!50!brown,
+ jacket=blue!50!black]
+ \end{tikzpicture})\\[0.8em]
+ \url{https://github.com/samcarter/tikzducks}\\
+ \url{https://www.ctan.org/pkg/tikzducks}
+ }{samcarter}}
+\date{Version v1.4 \textendash{} 2020/04/22}
\begin{document}
\maketitle
@@ -126,38 +126,38 @@
\label{intro}
Rubber ducks can be made of latex, but can they also be made with \LaTeX? Yes! The \tikzducks package is a \LaTeX{} package for rubber ducks to be used in \TikZ pictures.
-This project is a continuation of an answer at TeX.Stackexchange: \href{tex.stackexchange.com/a/347458/36296}{How can we draw a duck?}.
+This project is a continuation of \href{tex.stackexchange.com/a/347458/36296}{How can we draw a duck?}.
This package is work in progress (and will probably never be really finished as there is an infinite amount of things which could be added), therefore I would be happy to hear your feedback and ideas how to improve the package.
-The head version of the source code can be found on \url{github.com/samcarter/tikzducks}, including a bug tracker -- please make constructive use of it! A more stable package version can be found on \CTAN (\url{www.ctan.org/pkg/tikzducks}) and is included in both \miktex and \texlive as \tikzducks. If you seek any other assistance (not bug reports/feature requests), I suggest using the \href{https://tex.stackexchange.com/questions/tagged/tikzducks}{\texttt{\{tikzducks\}}-tag} on TeX.Stackexchange.
+The head version of the source code can be found on \url{github.com/samcarter/tikzducks}, including a bug tracker -- please make constructive use of it! A more stable package version can be found on \CTAN (\url{www.ctan.org/pkg/tikzducks}) and is included in both \miktex and \texlive as \tikzducks. If you seek any other assistance (not bug reports/feature requests), I suggest asking a question at \url{topanswers.xyz/tex}.
\subsection{Acknowledgements}
-Without the friendly and helpful community of \href{https://tex.stackexchange.com/}{TeX.Stackexchange} this package would not exist. I would like to thank a few fellow users in particular:
+Without the friendly and helpful community of \TeX{} users this package would not exist. I would like to thank a few fellow users in particular:
First of all
%
-\href{https://tex.stackexchange.com/users/101651/carlatex}{Carla Maggi} for pointing out the overwhelming need of having a \tikzducks package and valuable contribution to the package code, in particular the \hyperref[sec:footballducks]{football ducks},
+Carla Maggi for pointing out the overwhelming need of having a \tikzducks package and valuable contribution to the package code, in particular the \hyperref[sec:footballducks]{football ducks},
%
-\href{https://tex.stackexchange.com/users/3094/paulo-cereda}{Paulo Cereda} for his contagious enthusiasm for ducks (\emph{Quack!}) and
+Paulo Cereda for his contagious enthusiasm for ducks (\emph{Quack!}) and
%
-\href{https://tex.stackexchange.com/users/2388/ulrike-fischer}{Ulrike Fischer} for her useful \TikZ advices and contributions to the package and coming to rescue for keyword highlighting in the package documentation.
+Ulrike Fischer for her useful \TikZ advices and contributions to the package and coming to rescue for keyword highlighting in the package documentation.
Many other users contributed to this package (in random order):
%
-\href{https://tex.stackexchange.com/users/4427/egreg}{Enrico Gregorio} helped to implement the \lstinline|\tikzset{}| interface which makes it much easier to adjust the properties of the ducks to fit the user needs,
+Enrico Gregorio helped to implement the \lstinline|\tikzset{}| interface which makes it much easier to adjust the properties of the ducks to fit the user needs,
%
Andrew Stacey contributed the \TikZ Library ``ducks'',
%
-\href{https://tex.stackexchange.com/users/51022/symbol-1}{Symbol~1} solved a few problems with default key values,
+Symbol~1 solved a few problems with default key values,
%
-\href{https://tex.stackexchange.com/users/148434/mihikma}{Mihikma} created the duck's beard,
+Mihikma created the duck's beard,
%
-\href{https://github.com/yudai-nkt}{Yudai Nakata} helped with problems of \lstinline|\pdfrandomseed|,
+Yudai Nakata helped with problems of \lstinline|\pdfrandomseed|,
%
-@marmot for his seemingly infinite knowledge of \TikZ which he shared with the world on TeX.SE
+@marmot for his seemingly infinite knowledge of \TikZ which he shared with the world
%
-and last but not least my thanks go to \href{https://tex.stackexchange.com/users/5763/martin-schr%c3%b6der}{Martin Schr\"oder} for his feedback to the code review.
+and last but not least my thanks go to Martin Schr\"oder for his feedback to the code review.
\pagebreak
The ducks mostly consist of basic geometric shapes drawn in \TikZ. Some of the more complex shapes (e.g.\ the different hair styles) are first drawn in \texttt{inkscape} (\url{https://inkscape.org}) and then exported to \TikZ paths using the \texttt{SVG to TikZ/PGF} extension (\url{https://github.com/kjellmf/svg2tikz}).
@@ -167,7 +167,7 @@ The ducks mostly consist of basic geometric shapes drawn in \TikZ. Some of the m
The \tikzducks package loads \TikZ, which in turn loads the \lstinline|xcolor| package (amongst others). If you require one of these packages to be loaded with some option, please consider loading it yourself before the \tikzducks package or use, e.g.
\begin{lstlisting}[morekeywords={xcolor,svgnames}]
- \PassOptionsToPackage{svgnames}{xcolor}
+ \PassOptionsToPackage{svgnames}{xcolor}
\end{lstlisting}
It also uses the \lstinline|\usetikzlibrary{patterns}| and \lstinline|\usetikzlibrary{calc}|.
@@ -183,14 +183,14 @@ The shown example ducks are purely fictional characters, any resemblance to real
The basic usage is fairly simple, to draw a duck:
\begin{tcblisting}{title={Basic duck}}
\begin{tikzpicture}
- \duck
+ \duck
\end{tikzpicture}
\end{tcblisting}
To customise this basic duck, the package uses \lstinline|pgf| keys. For almost all parts the colour can be changed using \lstinline|<shape name>=<colour name>|. For example to change the colour of the duck:
\begin{tcblisting}{title={Blue duck}}
\begin{tikzpicture}
- \duck[body=blue]
+ \duck[body=blue]
\end{tikzpicture}
\end{tcblisting}
@@ -199,13 +199,13 @@ If the keyword consists of multiples words, it works both with and without space
\clearpage
In addition to the keys defined in this package, all usual \TikZ and \lstinline|pgf| keys can also be used. For example if the size of the ducks should be changed or shifted:
-\begin{tcblisting}{title={Scaled duck and \emph{The Ugly Duckling}}, righthand width=3cm}
+\begin{tcblisting}{title={Scaled duck and \emph{The Ugly Duckling}}, righthand width=3cm}
\begin{tikzpicture}[scale=0.6]
- \duck
- \duck[xshift=90pt, scale=.3, yshift=150pt]
- \duck[xshift=60pt, scale=.3, yshift=100pt]
- \duck[body=gray!50!white,head=gray!50!white,
- xshift=80pt, scale=.3, yshift=50pt]
+ \duck
+ \duck[xshift=90pt, scale=.3, yshift=150pt]
+ \duck[xshift=60pt, scale=.3, yshift=100pt]
+ \duck[body=gray!50!white,head=gray!50!white,
+ xshift=80pt, scale=.3, yshift=50pt]
\end{tikzpicture}
\end{tcblisting}
@@ -248,7 +248,7 @@ To make the usage easier for the \TikZ-savvy users, Andrew Stacey contributed a
For everybody suffering from anatidaephobia, there is also a special option to not draw the duck:
\begin{tcblisting}{title={Invisible duck}}
\begin{tikzpicture}
- \duck[invisible]
+ \duck[invisible]
\end{tikzpicture}
\end{tcblisting}
@@ -261,7 +261,7 @@ For the \TeX{} purists, there is also a picture mode variant:
\setlength{\unitlength}{0.6mm}
\begin{tcblisting}{title={\texttt{picture} mode duck}}
\begin{picture}(42,44)
- \picduck
+ \picduck
\end{picture}
\end{tcblisting}
}
@@ -272,10 +272,10 @@ The various parts of the duck can also be coloured independently, i.e.\ \lstinli
\begin{tcblisting}{title={Harlequin duck}}
\begin{tikzpicture}
- \duck[body=yellow,
- head=yellow!50!orange,
- bill=red,
- eye=green]
+ \duck[body=yellow,
+ head=yellow!50!orange,
+ bill=red,
+ eye=green]
\end{tikzpicture}
\end{tcblisting}
@@ -283,28 +283,28 @@ Furthermore using the keywords \lstinline|grumpy|, \lstinline|laughing| or \lsti
\begin{tcblisting}{title={Grumpy duck}}
\begin{tikzpicture}
- \duck[grumpy]
+ \duck[grumpy]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[grumpy, bill=cyan]
+ \duck[grumpy, bill=cyan]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Laughing duck}}
\begin{tikzpicture}
- \duck[laughing]
+ \duck[laughing]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[laughing, bill=red]
+ \duck[laughing, bill=red]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Parrot duck}}
\begin{tikzpicture}
- \duck[parrot]
+ \duck[parrot]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[parrot, bill=blue]
+ \duck[parrot, bill=blue]
\end{tikzpicture}
\end{tcblisting}
@@ -315,77 +315,75 @@ Some duck also like to have nice hair cuts, several different hair styles are av
\begin{tcblisting}{title={Long hair duck}}
\begin{tikzpicture}
- \duck[longhair]
+ \duck[longhair]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Short hair duck}}
\begin{tikzpicture}
- \duck[shorthair]
+ \duck[shorthair]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Parting hair duck}}
\begin{tikzpicture}
- \duck[parting]
+ \duck[parting]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Crazy hair duck}}
\begin{tikzpicture}
- \duck[crazyhair]
+ \duck[crazyhair]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Receding hair duck}}
\begin{tikzpicture}
- \duck[recedinghair]
+ \duck[recedinghair]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Mohican duck}}
\begin{tikzpicture}
- \duck[mohican]
+ \duck[mohican]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Mullet duck}}
\begin{tikzpicture}
- \duck[mullet]
+ \duck[mullet]
\end{tikzpicture}
\end{tcblisting}
And of course the colour of each hair style can be adjusted:
\begin{tcblisting}{title={Coloured hair duck}}
\begin{tikzpicture}
- \duck[longhair=teal]
+ \duck[longhair=teal]
\end{tikzpicture}
\end{tcblisting}
Eyebrows and a beard are also part of the package. The colour choice is more tricky for them -- if a colour is explicitly specified (\lstinline|eyebrow=<colour name>| or \lstinline|beard=<colour name>|) this colour is of course used, but if no colour is given, it first falls back to the hair colour and only if the duck does not have any hairs, the default colour is applied.
-\enlargethispage{2\baselineskip}
-
\begin{tcblisting}{title={Eye brow duck}}
\begin{tikzpicture}
- \duck[eyebrow]
+ \duck[eyebrow]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[longhair=blue,eyebrow]
+ \duck[longhair=blue,eyebrow]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[crazyhair=red,eyebrow=blue]
+ \duck[crazyhair=red,eyebrow=blue]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Beard duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[beard=white!80!brown]
+ \duck[beard=white!80!brown]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[recedinghair=white,beard]
+ \duck[recedinghair=white,beard]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{The beard is based on an answer by Mihikma, see \url{https://tex.stackexchange.com/a/401777/36296}}
@@ -398,43 +396,43 @@ A respectable duck needs a suitable wardrobe. It can choose from several differe
\begin{tcblisting}{title={T-shirt duck}}
\begin{tikzpicture}
- \duck[tshirt=red]
+ \duck[tshirt=red]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Jacket duck}}
\begin{tikzpicture}
- \duck[jacket=blue]
+ \duck[jacket=blue]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Tie duck}}
\begin{tikzpicture}
- \duck[tshirt,
- jacket=gray,
- tie]
+ \duck[tshirt,
+ jacket=gray,
+ tie]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Bowtie duck}}
\begin{tikzpicture}
- \duck[tshirt,
- jacket=gray,
- bowtie]
+ \duck[tshirt,
+ jacket=gray,
+ bowtie]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Áo dài duck}}
\begin{tikzpicture}
- \duck[tshirt=cyan,
- aodai=blue!50!black
- ]
+ \duck[tshirt=cyan,
+ aodai=blue!50!black
+ ]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Cape duck}}
\begin{tikzpicture}
- \duck[cape]
+ \duck[cape]
\end{tikzpicture}
\end{tcblisting}
@@ -447,82 +445,88 @@ There is a multitude of things a duck might need. The following examples all als
\begin{tcblisting}{title={Swimming duck}}
\begin{tikzpicture}
- \duck[water=cyan!50!blue]
+ \duck[water=cyan!50!blue]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Alien duck}}
\begin{tikzpicture}
- \duck[alien=green!50!brown]
+ \duck[alien=green!50!brown]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Hat duck}}
\begin{tikzpicture}
- \duck[hat=red!50!black]
+ \duck[hat=red!50!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Tophat duck}}
\begin{tikzpicture}
- \duck[tophat=blue!20!black]
+ \duck[tophat=blue!20!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Strawhat duck}}
\begin{tikzpicture}
- \duck[strawhat=brown!50!white, ribbon=gray]
+ \duck[strawhat=brown!50!white, ribbon=gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Basecap duck}}
\begin{tikzpicture}
- \duck[cap=red!80!black]
+ \duck[cap=red!80!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Conical hat duck}}
\begin{tikzpicture}
- \duck[conicalhat=brown]
+ \duck[conicalhat=brown]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Santa Duck}}
\begin{tikzpicture}
- \duck[santa=red!80!black,
- beard=white!80!brown]
+ \duck[santa=red!80!black,
+ beard=white!80!brown]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Graduate duck}}
\begin{tikzpicture}
- \duck[graduate=gray!20!black,tassel=red!70!black]
-\end{tikzpicture}
+ \duck[graduate=gray!20!black,tassel=red!70!black]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Beret duck}}
\begin{tikzpicture}
- \duck[beret=red!70!black]
-\end{tikzpicture}
+ \duck[beret=red!70!black]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Peaked cap duck}}
\begin{tikzpicture}
- \duck[peakedcap=blue!50!black]
-\end{tikzpicture}
+ \duck[peakedcap=blue!50!black]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Harlequin duck}}
\begin{tikzpicture}
- \duck[harlequin=blue,
- niuqelrah=red]
-\end{tikzpicture}
+ \duck[harlequin=blue,
+ niuqelrah=red]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={Sailor duck}}
+\begin{tikzpicture}
+ \duck[sailor=white]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Crown duck}}
\begin{tikzpicture}
\duck[body=black!75!white,
- crown=yellow!70!brown]
+ crown=yellow!70!brown]
\end{tikzpicture}
\begin{tikzpicture}
@@ -535,27 +539,27 @@ There is a multitude of things a duck might need. The following examples all als
\begin{tcblisting}{title={Knight duck}}
\begin{tikzpicture}
- \duck[helmet=gray]
+ \duck[helmet=gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Viking duck}}
\begin{tikzpicture}
- \duck[viking=gray]
+ \duck[viking=gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Devil duck}}
\begin{tikzpicture}
- \duck[devil=red]
+ \duck[devil=red]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Unicorn duck}}
\begin{tikzpicture}
- \duck[body=pink,
- unicorn=magenta!60!violet,
- longhair=magenta!60!violet]
+ \duck[body=pink,
+ unicorn=magenta!60!violet,
+ longhair=magenta!60!violet]
\end{tikzpicture}
\end{tcblisting}
@@ -588,42 +592,42 @@ There is a multitude of things a duck might need. The following examples all als
\begin{tcblisting}{title={Witch duck}}
\begin{tikzpicture}
- \duck[witch=black!50!gray,
- longhair=red!80!black,
- jacket=black!50!gray,
- magicwand]
+ \duck[witch=black!50!gray,
+ longhair=red!80!black,
+ jacket=black!50!gray,
+ magicwand]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Magic duck}}
\begin{tikzpicture}
- \duck[magichat,magicwand]
+ \duck[magichat,magicwand]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[magichat=teal,
- magicstars=blue!30!cyan,
- magicwand]
+ \duck[magichat=teal,
+ magicstars=blue!30!cyan,
+ magicwand]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Glasses duck}}
\begin{tikzpicture}
- \duck[glasses=red!50!black]
+ \duck[glasses=red!50!black]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[squareglasses=blue!50!black]
+ \duck[squareglasses=blue!50!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Sunglasses duck}}
\begin{tikzpicture}
- \duck[sunglasses=blue]
+ \duck[sunglasses=blue]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Superhero duck}}
\begin{tikzpicture}
- \duck[mask=teal,cape=teal]
+ \duck[mask=teal,cape=teal]
\end{tikzpicture}
\end{tcblisting}
@@ -633,23 +637,23 @@ There is a multitude of things a duck might need. The following examples all als
\end{tikzpicture}
\begin{tikzpicture}
\duck[signpost=\scalebox{0.4}{
- \parbox{2cm}{\color{black}
- \centering Science\\ first}},
- signcolour=brown!70!gray,
- signback=white!80!brown]
+ \parbox{2cm}{\color{black}
+ \centering Science\\ first}},
+ signcolour=brown!70!gray,
+ signback=white!80!brown]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Speaking duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[speech={Bla},bubblecolour=cyan!20!white,laughing]
+ \duck[speech={Bla},bubblecolour=cyan!20!white,laughing]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Thinking duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[think={Blub},bubblecolour=white!95!yellow]
+ \duck[think={Blub},bubblecolour=white!95!yellow]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{Both the speech and thought bubble are inspired by the wonderful \href{https://www.ctan.org/pkg/ducksay}{ducksay package}}
@@ -657,23 +661,23 @@ There is a multitude of things a duck might need. The following examples all als
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Buttons duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[buttons=brown!50!black]
-\end{tikzpicture}
+ \duck[buttons=brown!50!black]
+\end{tikzpicture}
\begin{tikzpicture}
- \duck[jacket=red,buttons]
-\end{tikzpicture}
+ \duck[jacket=red,buttons]
+\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{In case the duck is wearing a jacket, the buttons are positioned a bit lower}
\begin{tcblisting}{title={Dinner jacket duck}}
\begin{tikzpicture}
- \duck[jacket=gray,lapel=black,buttons]
-\end{tikzpicture}
+ \duck[jacket=gray,lapel=black,buttons]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Book duck}}
\begin{tikzpicture}
- \duck[book=\scalebox{0.5}{\TeX}]
+ \duck[book=\scalebox{0.5}{\TeX}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[book=\scalebox{0.6}{$\pi$}, bookcolour=blue!50!black]
@@ -682,20 +686,20 @@ There is a multitude of things a duck might need. The following examples all als
\begin{tcblisting}{title={Cricket duck}}
\begin{tikzpicture}
- \duck[cricket=red!50!black]
+ \duck[cricket=red!50!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Hockey duck}}
\begin{tikzpicture}
- \duck[hockey=brown!70!black]
+ \duck[hockey=brown!70!black]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Football duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[football=white!85!yellow]
+ \duck[football=white!85!yellow]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{The football duck is simplified version from an answer by Carla Maggi, \url{https://tex.stackexchange.com/a/387126/36296}}
@@ -703,52 +707,52 @@ There is a multitude of things a duck might need. The following examples all als
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Lightsaber duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[lightsaber=red,darthvader=black!30!gray]
+ \duck[lightsaber=red,darthvader=black!30!gray]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{Dedicated to the Counter Wizard (aka Christian Hupfer)}
\begin{tcblisting}{title={Torch duck}}
\begin{tikzpicture}
- \duck[torch=black!30!gray]
+ \duck[torch=black!30!gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Prison duck}}
\begin{tikzpicture}
- \duck[prison=gray]
+ \duck[prison=gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Shepherd duck}}
\begin{tikzpicture}
- \duck[crozier=brown!80!black]
+ \duck[crozier=brown!80!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Necklace duck}}
\begin{tikzpicture}
- \duck[necklace=gray!20!white]
-\end{tikzpicture}
+ \duck[necklace=gray!20!white]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Icecream duck}}
\begin{tikzpicture}
- \duck[icecream]
+ \duck[icecream]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[icecream=brown,
- flavoura=green!50!brown,
- flavourb=white,
- flavourc=red]
+ \duck[icecream=brown,
+ flavoura=green!50!brown,
+ flavourb=white,
+ flavourc=red]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Chef duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[chef=white!95!yellow,
- rollingpin=brown!80!black]
+ \duck[chef=white!95!yellow,
+ rollingpin=brown!80!black]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{The chef duck is based on an idea by Carla Maggi, please see the following link for a more sophisticated version of the toque and the rolling pin: \url{https://tex.stackexchange.com/a/387126/36296}}
@@ -756,137 +760,137 @@ There is a multitude of things a duck might need. The following examples all als
\begin{tcblisting}{title={Cake duck}}
\begin{tikzpicture}
\duck[cake=red!50!violet!80!black]
-\end{tikzpicture}
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Pizza duck}}
\begin{tikzpicture}
\duck[pizza]
-\end{tikzpicture}
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Baguette duck}}
\begin{tikzpicture}
\duck[baguette=brown]
-\end{tikzpicture}
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Cheese duck}}
\begin{tikzpicture}
\duck[cheese=orange]
-\end{tikzpicture}
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Milkshake duck}}
\begin{tikzpicture}
- \duck[milkshake=red!20!white]
-\end{tikzpicture}
+ \duck[milkshake=red!20!white]
+\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Wine duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[wine=red!70!black]
+ \duck[wine=red!70!black]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{According to the resident Italian wine expert of the \href{https://chat.stackexchange.com/transcript/message/40103109}{ TeX.SE chatroom}, the duck is drinking a fine Brunello di Montalcino}
\begin{tcblisting}{title={Cocktail duck}}
\begin{tikzpicture}
- \duck[cocktail]
-\end{tikzpicture}
+ \duck[cocktail]
+\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Wing duck}}
\begin{tikzpicture}
- \duck[wing=yellow!90!brown]
+ \duck[wing=yellow!90!brown]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Basket duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[basket=brown]
+ \duck[basket=brown]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Easter duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[bunny,easter]
+ \duck[bunny,easter]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[bunny,easter=brown,
- egga=cyan,eggb=orange,eggc=teal]
+ \duck[bunny,easter=brown,
+ egga=cyan,eggb=orange,eggc=teal]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{The basket and Easter basket was kindly contributed by Benito van der Zander}
\begin{tcblisting}{title={Ducktor}}
\begin{tikzpicture}
- \duck[stethoscope=gray!80!black]
+ \duck[stethoscope=gray!80!black]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Neckerchief duck}}
\begin{tikzpicture}
- \duck[neckerchief=red!70!black,
- woggle=blue!60!black]
+ \duck[neckerchief=red!70!black,
+ woggle=blue!60!black]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Snow Duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[snowduck=white]
+ \duck[snowduck=white]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{The snowduck is dedicated to all Japanese \TeX\ users}
\begin{tcblisting}{title={Vampire Duck}}
\begin{tikzpicture}
- \duck[vampire=white]
+ \duck[vampire=white]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[laughing, vampire=white]
+ \duck[laughing, vampire=white]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Fortune Quacker$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[crystalball=cyan]
+ \duck[crystalball=cyan]
\end{tikzpicture}
\end{tcblisting}
-\footnotetext[\thefootnote]{The crystal ball is kindly contributed by \href{https://tex.stackexchange.com/users/121799/marmot}{@marmot}}
+\footnotetext[\thefootnote]{The crystal ball is kindly contributed by @marmot}
\begin{tcblisting}{title={Shovelling Duck}}
\begin{tikzpicture}
- \duck[shovel=gray]
+ \duck[shovel=gray]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[pickaxe=gray]
+ \duck[pickaxe=gray]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Umbrella Duck}}
\begin{tikzpicture}
- \duck[umbrella=cyan]
+ \duck[umbrella=cyan]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[umbrellaclosed=cyan]
+ \duck[umbrellaclosed=cyan]
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Handbag Duck}}
\begin{tikzpicture}
- \duck[handbag=red!70!black]
+ \duck[handbag=red!70!black]
\end{tikzpicture}
\end{tcblisting}
\addtocounter{footnote}{1}
\begin{tcblisting}{title={Overleaf Duck$^{\thefootnote}$}}
\begin{tikzpicture}
- \duck[overleaf]
+ \duck[overleaf]
\end{tikzpicture}
\end{tcblisting}
\footnotetext[\thefootnote]{added to celebrate that \tikzducks are now also available on overleaf, see \url{https://www.overleaf.com/blog/tex-live-upgrade-september-2019}}
@@ -897,7 +901,7 @@ With all these available accessories it might be hard to decide which one to cho
\begin{tcblisting}{title={Random duck}}
\begin{tikzpicture}
- \randuck
+ \randuck
\end{tikzpicture}
\end{tcblisting}
@@ -905,8 +909,8 @@ In case the duck should not be completely random, but only some of the random el
\begin{tcblisting}{title={Random head gear and accessories}}
\begin{tikzpicture}
- \shuffleducks
- \duck[\randomhead, \randomaccessories]
+ \shuffleducks
+ \duck[\randomhead, \randomaccessories]
\end{tikzpicture}
\end{tcblisting}
@@ -916,15 +920,15 @@ This package will never be able to do everything every potential user might want
\begin{tcblisting}{title={Adding things to the duck}}
\begin{tikzpicture}
- \duck
- \fill[blue] (2,0) rectangle (1,1);
+ \duck
+ \fill[blue] (2,0) rectangle (1,1);
\end{tikzpicture}
\end{tcblisting}
\begin{tcblisting}{title={Monochrome duck}}
\begin{tikzpicture}
- \selectcolormodel{gray}
- \duck
+ \selectcolormodel{gray}
+ \duck
\end{tikzpicture}
\end{tcblisting}
@@ -932,9 +936,9 @@ For convenience the more complex paths of this package are stored in macros, whi
\begin{tcblisting}{title={Redraw parts}}
\begin{tikzpicture}
- \duck
- \path[preaction={fill, red!50!black},pattern=fivepointed stars, pattern color=yellow]
- \duckpathlonghair;
+ \duck
+ \path[preaction={fill, red!50!black},pattern=fivepointed stars, pattern color=yellow]
+ \duckpathlonghair;
\end{tikzpicture}
\end{tcblisting}
@@ -943,7 +947,6 @@ In detail, the following paths are available:
\begin{lstlisting}[aboveskip=1.2em,breakindent=0pt]
\duckpathbody, \duckpathgrumpybill, \duckpathbill, \duckpathtshirt, \duckpathjacket,\duckpathcape, \duckpathshorthair, \duckpathlonghair, \duckpathcrazyhair, \duckpathrecedinghair, \duckpathcrown, \duckpathmohican, \duckpathmullet, \duckpathqueencrown, \duckpathkingcrown, \duckpathdarthvader, \duckpathhorsetail
\end{lstlisting}
-\enlargethispage*{\baselineskip}
In case one of the other shapes is needed, please have a look at the package source code, which can be found in \lstinline|tikzducks.sty|.
@@ -953,15 +956,15 @@ To ease the placement of further accessories, some particular spots of the duck
\footnotesize\ttfamily
\begin{tcblisting}{title={\normalfont\normalsize\bfseries Coordinates}}
\begin{tikzpicture}[scale=2]
- \duck
- \fill[black] (wing) circle (0.04);
- \fill[black] (head) circle (0.04);
- \fill[black] (bill) circle (0.04);
- \fill[black] (tail) circle (0.04);
- \node[xshift=15] at (wing) {Wing};
- \node[xshift=15] at (head) {Head};
- \node[xshift=18] at (bill) {Bill};
- \node[xshift=15] at (tail) {Tail};
+ \duck
+ \fill[black] (wing) circle (0.04);
+ \fill[black] (head) circle (0.04);
+ \fill[black] (bill) circle (0.04);
+ \fill[black] (tail) circle (0.04);
+ \node[xshift=15] at (wing) {Wing};
+ \node[xshift=15] at (head) {Head};
+ \node[xshift=18] at (bill) {Bill};
+ \node[xshift=15] at (tail) {Tail};
\end{tikzpicture}
\end{tcblisting}
}
@@ -970,11 +973,80 @@ To distinguish coordinates from multiple ducks in the same \lstinline|tikzpictur
\begin{tcblisting}{title={Named coordinates},listing options={style={duckstyle}, emph={name,wing}}}
\begin{tikzpicture}
- \duck[name=foo]
- \duck[name=bar,xshift=90pt,
- scale=.3,yshift=150pt]
- \draw (foo-wing) -- (bar-wing);
-\end{tikzpicture}
+ \duck[name=foo]
+ \duck[name=bar,xshift=90pt,
+ scale=.3,yshift=150pt]
+ \draw (foo-wing) -- (bar-wing);
+\end{tikzpicture}
+\end{tcblisting}
+
+Sometimes it might desirable to add things at a specific z-position, for example re-draw a t-shirt with some pattern that should be below the duck's hair and accessories. To facilitate this the \tikzducks provide a couple of hooks: \lstinline|\duckhookbackground|, \lstinline|\duckhookbody|, \lstinline|\duckhookclothing|, \lstinline|\duckhookhair|, \lstinline|\duckhookhat| and \lstinline|\duckhookforeground|.
+
+\begin{center}
+\footnotesize\ttfamily \textbackslash duckhook\dots
+
+ \begin{tikzpicture}
+ \newcommand{\planes}{\fill[gray!20!white,opacity=0.9] (-0.1,-0.1) rectangle (2.4,2.4);}
+ \newcommand{\hooks}{\draw[duckblue, rounded corners=3pt, line width=1pt] (-0.1,-0.1) rectangle (2.4,2.4);}
+ \node[font=\footnotesize\ttfamily] at (-0.8,-1.4) {\strut background};
+ \begin{scope}[canvas is zy plane at x=0]
+ \hooks
+ \end{scope}
+ \begin{scope}[canvas is zy plane at x=0.8]
+ \planes
+ \duck
+ \end{scope}
+ \node[font=\footnotesize\ttfamily] at (0.8,-1.4) {\strut body};
+ \begin{scope}[canvas is zy plane at x=1.6]
+ \hooks
+ \end{scope}
+ \begin{scope}[canvas is zy plane at x=2.4]
+ \planes
+ \duck[invisible,jacket=black!50!gray]
+ \end{scope}
+ \node[font=\footnotesize\ttfamily] at (2.4,-1.4) {\strut clothing};
+ \begin{scope}[canvas is zy plane at x=3.2]
+ \hooks
+ \end{scope}
+ \begin{scope}[canvas is zy plane at x=4.0]
+ \planes
+ \duck[invisible,longhair=red!80!black]
+ \end{scope}
+ \node[font=\footnotesize\ttfamily] at (4.0,-1.4) {\strut hair};
+ \begin{scope}[canvas is zy plane at x=4.8]
+ \hooks
+ \end{scope}
+ \begin{scope}[canvas is zy plane at x=5.6]
+ \planes
+ \duck[invisible,witch=black!50!gray];
+ \end{scope}
+ \node[font=\footnotesize\ttfamily] at (5.6,-1.4) {\strut hat};
+ \begin{scope}[canvas is zy plane at x=6.4]
+ \hooks
+ \end{scope}
+ \begin{scope}[canvas is zy plane at x=7.2]
+ \planes
+ \duck[invisible,magicwand]
+ \end{scope}
+ \node[font=\footnotesize\ttfamily] at (7.2,-1.4) {\strut foreground};
+ \begin{scope}[canvas is zy plane at x=8.0]
+ \hooks
+ \end{scope}
+ \end{tikzpicture}
+\end{center}
+
+These hooks can be defined by the user as needed:
+
+\begin{tcblisting}{title={Hooks}}
+\begin{tikzpicture}
+ \begingroup
+ \newcommand{\duckhookclothing}{\path[pattern=fivepointed stars, pattern color=yellow] \duckpathjacket;}
+ \duck[witch=black!50!gray,
+ longhair=red!80!black,
+ jacket=black!50!gray,
+ magicwand]
+ \endgroup
+\end{tikzpicture}
\end{tcblisting}
\clearpage
@@ -988,8 +1060,8 @@ A (non-representative) survey$^{\thefootnote}$\footnotetext[\thefootnote]{see th
\begin{tcblisting}{title={\texttt{stripes} macro}}
\begin{tikzpicture}
- \duck
- \stripes
+ \duck
+ \stripes
\end{tikzpicture}
\end{tcblisting}
@@ -997,47 +1069,47 @@ This may be impractical as the stripes are drawn on top of any accessories or ha
\begin{tcblisting}{title={Using \texttt{stripes} for \texttt{tikzducks}}}
\begin{tikzpicture}
- \duck[longhair,|stripes|={\stripes}]
+ \duck[longhair,|stripes|={\stripes}]
\end{tikzpicture}
\end{tcblisting}
Not all teams wear vertically stripped jerseys, therefore many parameters can be adjusted to best emulate your favourite teams jerseys. The available options are:
\begin{tabular}{@{}ll@{}}
- \lstinline|color| & colour of the stripes, default:
- \lstinline|black| \\
- \lstinline|distance| & periodicity length of the stripes, default:
- \lstinline|0.3| \\
- \lstinline|width| & stripe width, default: \lstinline|0.15| \\
- \lstinline|height| & length of the stripes, default:
- \lstinline|2.7| \\
- \lstinline|initialx| & x coordinate of staring point, default:
- \lstinline|0.1| \\
- \lstinline|initialy| & y coordinate of staring point, default:
- \lstinline|-0.3| \\
- \lstinline|rotate| & rotation angle in degree, default:
- \lstinline|-10|\\
- \lstinline|emblem| & possibility to add logos etc., default: empty\\
+ \lstinline|color| & colour of the stripes, default:
+ \lstinline|black| \\
+ \lstinline|distance| & periodicity length of the stripes, default:
+ \lstinline|0.3| \\
+ \lstinline|width| & stripe width, default: \lstinline|0.15| \\
+ \lstinline|height| & length of the stripes, default:
+ \lstinline|2.7| \\
+ \lstinline|initialx| & x coordinate of staring point, default:
+ \lstinline|0.1| \\
+ \lstinline|initialy| & y coordinate of staring point, default:
+ \lstinline|-0.3| \\
+ \lstinline|rotate| & rotation angle in degree, default:
+ \lstinline|-10|\\
+ \lstinline|emblem| & possibility to add logos etc., default: empty\\
\end{tabular}
Please note that the colour of the stripes only affects the stripes themselves, to influence the colour of the empty space between the stripes, clothe the duck with a \lstinline|tshirt| or \lstinline|jacket| of the desired colour underneath the stripes.
\begin{tcblisting}{title={\texttt{stripes} options}}
\begin{tikzpicture}
- \duck[stripes]
+ \duck[stripes]
\end{tikzpicture}
\begin{tikzpicture}
- \duck[|stripes|={
- \stripes[color=blue]}]
+ \duck[|stripes|={
+ \stripes[color=blue]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[distance=0.6]}]
+ \stripes[distance=0.6]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[width=0.03]}]
+ \stripes[width=0.03]}]
\end{tikzpicture}
\begin{tikzpicture}
@@ -1045,25 +1117,25 @@ Please note that the colour of the stripes only affects the stripes themselves,
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[height=1.0]}]
+ \stripes[height=1.0]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[initialx=1]}]
+ \stripes[initialx=1]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[initialy=0.8]}]
+ \stripes[initialy=0.8]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[rotate=45]}]
+ \stripes[rotate=45]}]
\end{tikzpicture}
\begin{tikzpicture}
\duck[|stripes|={
- \stripes[rotate=-45]}]
+ \stripes[rotate=-45]}]
\end{tikzpicture}
\end{tcblisting}
@@ -1133,8 +1205,8 @@ A few examples to see \lstinline|stripes| in action:
\begin{tcblisting}{title={Brescia duck}}
\begin{tikzpicture}
\duck[tshirt=blue, jacket=blue,|stripes|={
- \stripes[color=white, rotate=-70, width=0.22,distance=1.1, initialy=0.01]
- \stripes[color=white, rotate=40, width=0.2, distance=1.8, initialy=1.0,initialx=0.285]
+ \stripes[color=white, rotate=-70, width=0.22,distance=1.1, initialy=0.01]
+ \stripes[color=white, rotate=40, width=0.2, distance=1.8, initialy=1.0,initialx=0.285]
},football]
\end{tikzpicture}
\end{tcblisting}
diff --git a/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty
index f0d9e735ec3..aa15e471faf 100644
--- a/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty
+++ b/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty
@@ -12,20 +12,12 @@
% See http://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzducks}[2020/01/03 version v1.3 Draw rubber ducks in TikZ]
+\ProvidesPackage{tikzducks}[2020/04/22 version v1.4 Draw rubber ducks in TikZ]
\RequirePackage{tikz}
\usetikzlibrary{patterns} % for the wizard hat
\usetikzlibrary{calc} % for the sports jerseys
-%\pgfdeclarelayer{backgroundlayer}
-%\pgfdeclarelayer{bodylayer}
-%\pgfdeclarelayer{clothinglayer}
-%\pgfdeclarelayer{hairlayer}
-%\pgfdeclarelayer{hatlayer}
-%
-%\pgfsetlayers{backgroundlayer,bodylayer,clothinglayer,hairlayer,hatlayer,main}
-
\definecolor{duck@overleafcol}{RGB}{72,172,60}
\newcommand*{\duck}[1][]{%
@@ -87,6 +79,7 @@
\newif\ifduck@viking
\newif\ifduck@devil
\newif\ifduck@conicalhat
+\newif\ifduck@sailor
% Accessories %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifduck@glasses
\newif\ifduck@sunglasses
@@ -174,22 +167,22 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tshirt/.code = \duck@tshirttrue
- \duck@clothingtrue
+ \duck@clothingtrue
\def\duck@tshirt{#1},
tshirt/.default = white,
jacket/.code = \duck@jackettrue
- \duck@clothingtrue
+ \duck@clothingtrue
\def\duck@jacket{#1},
jacket/.default = blue,
tie/.code = \duck@tietrue
\def\duck@tie{#1},
tie/.default = blue,
cape/.code = \duck@capetrue
- \duck@clothingtrue
+ \duck@clothingtrue
\def\duck@cape{#1},
cape/.default = red,
stripes/.code = \duck@stripestrue
- \duck@clothingtrue
+ \duck@clothingtrue
\def\duck@stripes{#1},
stripes/.default = \stripes ,
bowtie/.code = \duck@bowtietrue
@@ -200,7 +193,7 @@
\def\duck@lapel{#1},
lapel/.default = black,
aodai/.code = \duck@aodaitrue
- \duck@clothingtrue
+ \duck@clothingtrue
\def\duck@aodai{#1},
ao dai/.forward to = /duck/aodai,
aodai/.default = blue!50!black,
@@ -336,6 +329,9 @@
\def\duck@conicalhat{#1},
conical hat/.forward to = /duck/conicalhat,
conicalhat/.default = brown!90!orange!90!white,
+ sailor/.code = \duck@sailortrue
+ \def\duck@sailor{#1},
+ sailor/.default = white!80!gray,
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Accessories
@@ -507,20 +503,20 @@
umbrella/.code = \duck@umbrellatrue
\def\duck@umbrella{#1},
umbrella/.default = cyan,
- umbrellaclosed/.code = \duck@umbrellaclosedtrue
- \def\duck@umbrellaclosed{#1},
- umbrellaclosed/.default = cyan,
- umbrella closed/.forward to = /duck/umbrellaclosed,
- handbag/.code = \duck@handbagtrue
- \def\duck@handbag{#1},
- handbag/.default = red!70!black,
- cocktail/.code = \duck@cocktailtrue,
+ umbrellaclosed/.code = \duck@umbrellaclosedtrue
+ \def\duck@umbrellaclosed{#1},
+ umbrellaclosed/.default = cyan,
+ umbrella closed/.forward to = /duck/umbrellaclosed,
+ handbag/.code = \duck@handbagtrue
+ \def\duck@handbag{#1},
+ handbag/.default = red!70!black,
+ cocktail/.code = \duck@cocktailtrue,
overleaf/.code = \duck@overleaftrue
\def\duck@body{duck@overleafcol}
\duck@graduatetrue
\def\duck@graduate{black}
\duck@squareglassestrue
- \def\duck@squareglasses{black}
+ \def\duck@squareglasses{black}
}
\def\duck@draw{
@@ -558,7 +554,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
-\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))}%
+\pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}%
\pgfmathsetmacro{\xscalefactor}{\tmpscaleA}
\pgfmathsetmacro{\yscalefactor}{\tmpscaleD}
%
@@ -567,7 +563,9 @@
% Environment
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\begin{pgfonlayer}{backgroundlayer}
+%
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookbackground\endcsname
%
% water %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@water
@@ -588,17 +586,15 @@
\fi
% Conical Hat (background) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@conicalhat
- \fill[\duck@conicalhat!50!black,rotate=-21] (0.265,1.915) ellipse[x radius=0.79, y radius=0.1];
- \fill[\duck@conicalhat!30!black] (0.5501,0.9739) -- (0.2002,1.9676) -- (0.2946,2.0008) -- (0.6445,1.0072) -- cycle;
+ \fill[\duck@conicalhat!50!black,rotate=-21] (0.265,1.915) ellipse[x radius=0.79, y radius=0.1];
+ \fill[\duck@conicalhat!30!black] (0.5501,0.9739) -- (0.2002,1.9676) -- (0.2946,2.0008) -- (0.6445,1.0072) -- cycle;
\fi
%
-%\end{pgfonlayer}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% body parts
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\begin{pgfonlayer}{bodylayer}
\ifduck@invisible
\else
%
@@ -617,9 +613,9 @@
\fill[\duck@bill] \duckpathgrumpybill;
\else
\ifduck@laughing
- \begin{pgfinterruptboundingbox}
- \fill[\duck@bill!80!black] (0.40,1.20) .. controls (0.54,1.36) and (0.65,1.31) .. (0.91,1.37) .. controls (0.45,1.06) and (0.36,1.18) .. (0.40,1.20) -- cycle;
- \fill[\duck@bill]
+ \begin{pgfinterruptboundingbox}
+ \fill[\duck@bill!80!black] (0.40,1.20) .. controls (0.54,1.36) and (0.65,1.31) .. (0.91,1.37) .. controls (0.45,1.06) and (0.36,1.18) .. (0.40,1.20) -- cycle;
+ \fill[\duck@bill]
(0.41,1.47) .. controls (0.64,1.53) and (0.54,1.30) ..
(0.91,1.37) .. controls (-0.02,1.10) and (0.28,1.37) ..
(0.41,1.47) -- cycle;
@@ -658,21 +654,23 @@
(-0.03,1.73) ellipse[x radius=0.0286, y radius=0.0643];
%
\fi % from no duck
-%\end{pgfonlayer}
+%
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookbody\endcsname
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% clothing
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\begin{pgfonlayer}{clothinglayer}
%
% Strap of the conical hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@conicalhat
- \ifduck@clothing
- \fill[\duck@conicalhat!30!black] (1.5943,1.5059) .. controls (1.4384,1.3576) and (1.2780,1.2120) .. (1.0987,1.0923) -- (1.0617,0.9549) .. controls (1.2151,1.0361) and (1.3476,1.1504) .. (1.4785,1.2630) .. controls (1.5417,1.3187) and (1.6038,1.3757) .. (1.6644,1.4344) -- cycle;
- \else
- \fill[\duck@conicalhat!30!black] (1.5943,1.5059) .. controls (1.4384,1.3576) and (1.2780,1.2120) .. (1.0987,1.0923) .. controls (0.9540,0.9995) and (0.7864,0.9875) .. (0.6358,1.0398) .. controls (0.6727,0.9043) and (0.9752,0.9113) .. (1.0617,0.9549) .. controls (1.2151,1.0361) and (1.3476,1.1504) .. (1.4785,1.2630) .. controls (1.5417,1.3187) and (1.6038,1.3757) .. (1.6644,1.4344) -- cycle;
- \fi
+ \ifduck@clothing
+ \fill[\duck@conicalhat!30!black] (1.5943,1.5059) .. controls (1.4384,1.3576) and (1.2780,1.2120) .. (1.0987,1.0923) -- (1.0617,0.9549) .. controls (1.2151,1.0361) and (1.3476,1.1504) .. (1.4785,1.2630) .. controls (1.5417,1.3187) and (1.6038,1.3757) .. (1.6644,1.4344) -- cycle;
+ \else
+ \fill[\duck@conicalhat!30!black] (1.5943,1.5059) .. controls (1.4384,1.3576) and (1.2780,1.2120) .. (1.0987,1.0923) .. controls (0.9540,0.9995) and (0.7864,0.9875) .. (0.6358,1.0398) .. controls (0.6727,0.9043) and (0.9752,0.9113) .. (1.0617,0.9549) .. controls (1.2151,1.0361) and (1.3476,1.1504) .. (1.4785,1.2630) .. controls (1.5417,1.3187) and (1.6038,1.3757) .. (1.6644,1.4344) -- cycle;
+ \fi
\fi
%
% tshirt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -694,21 +692,16 @@
\end{pgfinterruptboundingbox}
\fi
%
-% bowtie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ifduck@bowtie
- \fill[\duck@bowtie] (0.4382, 1.1105) .. controls (0.3984, 1.0671) and (0.3911, 0.9535) .. (0.4116, 0.9176) .. controls (0.4958, 0.9064) and (0.565, 0.9487) .. (0.565, 0.9487) -- (0.6448, 0.9398) .. controls (0.6448, 0.9398) and (0.6777, 0.8844) .. (0.804, 0.8689) .. controls (0.8323, 0.9056) and (0.8422, 1.0026) .. (0.8284, 1.0551) .. controls (0.7881, 1.0942) and (0.6537, 1.0285) .. (0.6537, 1.0285) -- (0.5739, 1.0374) .. controls (0.5739, 1.0374) and (0.5436, 1.0956) .. (0.4382, 1.1105) -- cycle;
-\fi
-%
% Áo dài %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@aodai
- \begin{pgfinterruptboundingbox}
- \fill[\duck@aodai] (1.819,1.419) .. controls (2.871,0.120) and (0.711,-0.145) .. (0.296,0.251) .. controls (-0.118,0.647) and (0.232,1.073) .. (0.440,1.128) -- (0.567,0.927) .. controls (0.567,0.927) and (0.543,0.906) .. (0.509,0.882) -- (0.481,0.929) -- (0.458,0.915) -- (0.487,0.868) .. controls (0.473,0.859) and (0.457,0.850) .. (0.441,0.842) -- (0.422,0.894) -- (0.397,0.885) -- (0.417,0.831) .. controls (0.404,0.826) and (0.391,0.821) .. (0.378,0.818) -- (0.364,0.869) -- (0.338,0.862) -- (0.351,0.815) .. controls (0.334,0.814) and (0.318,0.817) .. (0.304,0.825) .. controls (0.303,0.774) and (0.329,0.759) .. (0.365,0.763) -- (0.376,0.722) -- (0.402,0.729) -- (0.391,0.768) .. controls (0.405,0.772) and (0.420,0.778) .. (0.435,0.784) -- (0.447,0.750) -- (0.472,0.759) -- (0.459,0.796) .. controls (0.477,0.805) and (0.496,0.815) .. (0.512,0.825) -- (0.533,0.791) -- (0.556,0.805) -- (0.535,0.840) .. controls (0.567,0.860) and (0.590,0.877) .. (0.590,0.877) .. controls (1.011,1.168) and (0.887,0.936) .. (1.819,1.419) -- cycle;
- \end{pgfinterruptboundingbox}
+ \begin{pgfinterruptboundingbox}
+ \fill[\duck@aodai] (1.819,1.419) .. controls (2.871,0.120) and (0.711,-0.145) .. (0.296,0.251) .. controls (-0.118,0.647) and (0.232,1.073) .. (0.440,1.128) -- (0.567,0.927) .. controls (0.567,0.927) and (0.543,0.906) .. (0.509,0.882) -- (0.481,0.929) -- (0.458,0.915) -- (0.487,0.868) .. controls (0.473,0.859) and (0.457,0.850) .. (0.441,0.842) -- (0.422,0.894) -- (0.397,0.885) -- (0.417,0.831) .. controls (0.404,0.826) and (0.391,0.821) .. (0.378,0.818) -- (0.364,0.869) -- (0.338,0.862) -- (0.351,0.815) .. controls (0.334,0.814) and (0.318,0.817) .. (0.304,0.825) .. controls (0.303,0.774) and (0.329,0.759) .. (0.365,0.763) -- (0.376,0.722) -- (0.402,0.729) -- (0.391,0.768) .. controls (0.405,0.772) and (0.420,0.778) .. (0.435,0.784) -- (0.447,0.750) -- (0.472,0.759) -- (0.459,0.796) .. controls (0.477,0.805) and (0.496,0.815) .. (0.512,0.825) -- (0.533,0.791) -- (0.556,0.805) -- (0.535,0.840) .. controls (0.567,0.860) and (0.590,0.877) .. (0.590,0.877) .. controls (1.011,1.168) and (0.887,0.936) .. (1.819,1.419) -- cycle;
+ \end{pgfinterruptboundingbox}
\fi
%
% lapel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@lapel
- \fill[\duck@lapel] (0.490,1.145) .. controls (0.3984,1.13) and (0.3515,1.08) .. (0.3515,1.08) -- (0.4265,1.0192) -- (0.35,0.98) -- (0.513,0.700) -- (1.0089,0.9162) -- (0.9547,0.9868) -- (1.1194,0.9782) -- (1.0822,1.135) .. controls (0.9616,1.1) and (0.8648,1.0300) .. (0.513,0.700) -- cycle;
+ \fill[\duck@lapel] (0.490,1.145) .. controls (0.3984,1.13) and (0.3515,1.08) .. (0.3515,1.08) -- (0.4265,1.0192) -- (0.35,0.98) -- (0.513,0.700) -- (1.0089,0.9162) -- (0.9547,0.9868) -- (1.1194,0.9782) -- (1.0822,1.135) .. controls (0.9616,1.1) and (0.8648,1.0300) .. (0.513,0.700) -- cycle;
\fi
%
% stripes for football jersey %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -723,6 +716,11 @@
\end{pgfinterruptboundingbox}
\fi
%
+% bowtie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@bowtie
+ \fill[\duck@bowtie] (0.4382, 1.1105) .. controls (0.3984, 1.0671) and (0.3911, 0.9535) .. (0.4116, 0.9176) .. controls (0.4958, 0.9064) and (0.565, 0.9487) .. (0.565, 0.9487) -- (0.6448, 0.9398) .. controls (0.6448, 0.9398) and (0.6777, 0.8844) .. (0.804, 0.8689) .. controls (0.8323, 0.9056) and (0.8422, 1.0026) .. (0.8284, 1.0551) .. controls (0.7881, 1.0942) and (0.6537, 1.0285) .. (0.6537, 1.0285) -- (0.5739, 1.0374) .. controls (0.5739, 1.0374) and (0.5436, 1.0956) .. (0.4382, 1.1105) -- cycle;
+\fi
+%
% necklace (not really clothing, but needs to be below the hair) %%%%%
\ifduck@necklace
\fill[\duck@necklace] (0.5000,1.112) circle[radius=0.032] (0.5100,1.050) circle[radius=0.032] (0.5200,0.990) circle[radius=0.032] (0.5400,0.931) circle[radius=0.032] (0.5825,0.885) circle[radius=0.032] (0.6450,0.885) circle[radius=0.032] (0.7000,0.910) circle[radius=0.032] (0.7500,0.945) circle[radius=0.032] (0.8000,0.980) circle[radius=0.032] (0.8500,1.020) circle[radius=0.032] (0.9000,1.050) circle[radius=0.032] (0.9500,1.080) circle[radius=0.032] (1.0000,1.110) circle[radius=0.032] (1.0550,1.130) circle[radius=0.032] (1.1100,1.150) circle[radius=0.032] (1.1650,1.165) circle[radius=0.032] (1.2200,1.180) circle[radius=0.032] (1.2750,1.195) circle[radius=0.032] (1.3300,1.210) circle[radius=0.032];
@@ -744,13 +742,14 @@
\fi
\fi
%
-%\end{pgfonlayer}
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookclothing\endcsname
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% hair styles
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\begin{pgfonlayer}{hairlayer}
%
% short hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@shorthair
@@ -828,13 +827,14 @@
\fill[\duck@beard] (1.3,1.3) -- (0.5,1.05) -- (0.65,0.65) -- cycle;
\fi%
%
-%\end{pgfonlayer}
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookhair\endcsname
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Headgear
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\begin{pgfonlayer}{hatlayer}
%
% alien %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@alien
@@ -846,14 +846,14 @@
%
% hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@hat
- \ifdefined\duck@hair % with hair
- \fill[\duck@hat,rotate=-15] (0.44,2.1) ellipse[x radius=0.7, y radius=0.1];
- \fill[\duck@hat,rotate=-15] (0.0,2.1) rectangle (0.88,2.4);
- \fill[\duck@hat,rotate=-15] (0.44,2.4) ellipse[x radius=0.44, y radius=0.08];
+ \ifdefined\duck@hair % with hair
+ \fill[\duck@hat,rotate=-15] (0.44,2.1) ellipse[x radius=0.7, y radius=0.1];
+ \fill[\duck@hat,rotate=-15] (0.0,2.1) rectangle (0.88,2.4);
+ \fill[\duck@hat,rotate=-15] (0.44,2.4) ellipse[x radius=0.44, y radius=0.08];
\else % without hair
- \fill[\duck@hat,rotate=-15] (0.44,2.1) ellipse[x radius=0.6, y radius=0.1];
- \fill[\duck@hat,rotate=-15] (0.07,2.1) rectangle (0.81,2.4);
- \fill[\duck@hat,rotate=-15] (0.44,2.4) ellipse[x radius=0.37, y radius=0.08];
+ \fill[\duck@hat,rotate=-15] (0.44,2.1) ellipse[x radius=0.6, y radius=0.1];
+ \fill[\duck@hat,rotate=-15] (0.07,2.1) rectangle (0.81,2.4);
+ \fill[\duck@hat,rotate=-15] (0.44,2.4) ellipse[x radius=0.37, y radius=0.08];
\fi
\fi
%
@@ -1023,13 +1023,20 @@
%
% Conical Hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@conicalhat
- \path (0.19,1.4) rectangle (1.68,2.32);
- \begin{pgfinterruptboundingbox}
- \fill[\duck@conicalhat] (1.6722,1.4137) .. controls (1.6722,1.4337) and (1.3592,1.6230) .. (0.9513,1.7735) .. controls (0.5433,1.9239) and (0.1948,1.9784) .. (0.1948,1.9754) .. controls (0.2049,2.0230) and (1.1428,2.36) .. (1.1428,2.3) .. controls (1.1428,2.35) and (1.6821,1.4784) .. (1.6722,1.4137) -- cycle;
- \end{pgfinterruptboundingbox}
+ \path (0.19,1.4) rectangle (1.68,2.32);
+ \begin{pgfinterruptboundingbox}
+ \fill[\duck@conicalhat] (1.6722,1.4137) .. controls (1.6722,1.4337) and (1.3592,1.6230) .. (0.9513,1.7735) .. controls (0.5433,1.9239) and (0.1948,1.9784) .. (0.1948,1.9754) .. controls (0.2049,2.0230) and (1.1428,2.36) .. (1.1428,2.3) .. controls (1.1428,2.35) and (1.6821,1.4784) .. (1.6722,1.4137) -- cycle;
+ \end{pgfinterruptboundingbox}
\fi
%
-%\end{pgfonlayer}
+% Sailor hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@sailor
+ \fill[\duck@sailor] (1.0390,2.2743) .. controls (0.9475,2.2748) and (0.8569,2.2355) .. (0.7943,2.1690) .. controls (0.7147,2.1872) and (0.6335,2.2098) .. (0.5512,2.2029) .. controls (0.5524,2.1164) and (0.5536,2.0299) .. (0.5547,1.9434) .. controls (0.6637,1.9348) and (0.7679,1.8974) .. (0.8716,1.8653) .. controls (1.0321,1.8101) and (1.1932,1.7522) .. (1.3420,1.6697) .. controls (1.3671,1.6622) and (1.3911,1.6147) .. (1.4083,1.6518) .. controls (1.4623,1.7160) and (1.5163,1.7802) .. (1.5702,1.8444) .. controls (1.5154,1.8979) and (1.4433,1.9287) .. (1.3757,1.9624) .. controls (1.3666,2.1156) and (1.2403,2.2511) .. (1.0881,2.2707) .. controls (1.0718,2.2731) and (1.0554,2.2743) .. (1.0390,2.2743) -- cycle;
+\fi
+%
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookhat\endcsname
+%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Accessories
@@ -1333,35 +1340,35 @@
%
% shovel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@shovel
- \fill[brown!80!black,rotate around={-23:(0.91, 0.88)}] (0.87, 0.28) rectangle ++(0.1,1.4);
- \fill[\duck@shovel] (0.6133, 0.9536) .. controls (0.8388, 0.8117) and (0.9253, 0.7517) .. (1.1962, 0.6696) -- (0.8332, 0.1263) .. controls (0.6458, 0.11) and (0.5417, 0.1644) .. (0.4517, 0.3034) -- cycle;
+ \fill[brown!80!black,rotate around={-23:(0.91, 0.88)}] (0.87, 0.28) rectangle ++(0.1,1.4);
+ \fill[\duck@shovel] (0.6133, 0.9536) .. controls (0.8388, 0.8117) and (0.9253, 0.7517) .. (1.1962, 0.6696) -- (0.8332, 0.1263) .. controls (0.6458, 0.11) and (0.5417, 0.1644) .. (0.4517, 0.3034) -- cycle;
\fi
%
% pickaxe %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@pickaxe
- \fill[brown!80!black,rotate around={-23:(0.91, 0.88)}] (0.87, 0.28) rectangle ++(0.1,1.4);
- \fill[\duck@pickaxe] (-0.0085, 0.6858) .. controls (0.6422, 0.3523) and (0.7609, 0.3068) .. (1.4114, 0.1108) .. controls (0.6589, 0.1246) and (0.5556, 0.1887) .. (-0.0085, 0.6858) -- cycle;
+ \fill[brown!80!black,rotate around={-23:(0.91, 0.88)}] (0.87, 0.28) rectangle ++(0.1,1.4);
+ \fill[\duck@pickaxe] (-0.0085, 0.6858) .. controls (0.6422, 0.3523) and (0.7609, 0.3068) .. (1.4114, 0.1108) .. controls (0.6589, 0.1246) and (0.5556, 0.1887) .. (-0.0085, 0.6858) -- cycle;
\fi
%
% umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@umbrella
- \path (0.2,0.4) rectangle (2.22,2.7);
+ \path (0.2,0.4) rectangle (2.22,2.7);
\begin{pgfinterruptboundingbox}
- \fill[gray] (0.6922,0.5942) -- (0.7426,0.6103) .. controls (0.8276,0.3884) and (0.8855,0.4523) .. (0.9333,0.6543) -- (0.9334,0.6545) -- (0.9335,0.6547) .. controls (1.0347,1.0671) and (1.2906,1.9565) .. (1.2906,1.9565) -- (1.3415,1.9419) .. controls (1.3415,1.9419) and (1.0855,1.0519) .. (0.9849,0.6423) -- (0.9848,0.6420) .. controls (0.9240,0.3633) and (0.7874,0.3312) .. (0.6922,0.5942) -- cycle;
- \fill[\duck@umbrella] (0.2185,1.9927) .. controls (0.3559,2.1962) and (0.6837,2.0720) .. (0.6761,1.8240) .. controls (0.8398,2.0111) and (1.1891,1.9216) .. (1.1685,1.6915) .. controls (1.3000,1.8765) and (1.6639,1.7626) .. (1.6607,1.5356) .. controls (1.7865,1.7271) and (2.1350,1.6950) .. (2.1626,1.4589) .. controls (2.4996,2.5771) and (0.5644,3.2631) .. (0.2185,1.9927) -- cycle;
+ \fill[gray] (0.6922,0.5942) -- (0.7426,0.6103) .. controls (0.8276,0.3884) and (0.8855,0.4523) .. (0.9333,0.6543) -- (0.9334,0.6545) -- (0.9335,0.6547) .. controls (1.0347,1.0671) and (1.2906,1.9565) .. (1.2906,1.9565) -- (1.3415,1.9419) .. controls (1.3415,1.9419) and (1.0855,1.0519) .. (0.9849,0.6423) -- (0.9848,0.6420) .. controls (0.9240,0.3633) and (0.7874,0.3312) .. (0.6922,0.5942) -- cycle;
+ \fill[\duck@umbrella] (0.2185,1.9927) .. controls (0.3559,2.1962) and (0.6837,2.0720) .. (0.6761,1.8240) .. controls (0.8398,2.0111) and (1.1891,1.9216) .. (1.1685,1.6915) .. controls (1.3000,1.8765) and (1.6639,1.7626) .. (1.6607,1.5356) .. controls (1.7865,1.7271) and (2.1350,1.6950) .. (2.1626,1.4589) .. controls (2.4996,2.5771) and (0.5644,3.2631) .. (0.2185,1.9927) -- cycle;
\end{pgfinterruptboundingbox}
\fi
%
% closed umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@umbrellaclosed
\fill[gray] (1.3401,0.6996) -- (1.2872,0.7019) .. controls (1.2840,0.9395) and (1.2076,0.8995) .. (1.0930,0.7264) -- (1.0929,0.7262) -- (1.0928,0.7261) .. controls (0.8555,0.3739) and (0.9223,0.4608) .. (0.9223,0.4608) -- (0.8795,0.4920) .. controls (0.8795,0.4920) and (0.8131,0.4057) .. (1.0488,0.7554) -- (1.0489,0.7556) .. controls (1.2022,0.9963) and (1.3414,0.9793) .. (1.3401,0.6996) -- cycle;
- \fill[\duck@umbrellaclosed] (0.6827,0.1263) -- (0.8038,0.6188) -- (0.9548,0.6494) -- (0.9520,0.8231) -- (1.1945,0.6529) -- (1.0218,0.5885) -- (1.0465,0.4566) -- cycle;
+ \fill[\duck@umbrellaclosed] (0.6827,0.1263) -- (0.8038,0.6188) -- (0.9548,0.6494) -- (0.9520,0.8231) -- (1.1945,0.6529) -- (1.0218,0.5885) -- (1.0465,0.4566) -- cycle;
\fi
%
% handbag %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@handbag
- \fill[\duck@handbag] (0.7811,0.1751) -- (1.4913,0.3097) -- (1.3315,0.7086) -- (0.7832,0.6152) -- cycle;
- \fill[\duck@handbag!70!black] (0.8857,0.4354) .. controls (0.7861,0.9811) and (1.1796,1.0719) .. (1.2866,0.5155) -- (1.2043,0.4996) .. controls (1.1247,0.8952) and (0.9051,0.8883) .. (0.9676,0.4536) -- cycle;
+ \fill[\duck@handbag] (0.7811,0.1751) -- (1.4913,0.3097) -- (1.3315,0.7086) -- (0.7832,0.6152) -- cycle;
+ \fill[\duck@handbag!70!black] (0.8857,0.4354) .. controls (0.7861,0.9811) and (1.1796,1.0719) .. (1.2866,0.5155) -- (1.2043,0.4996) .. controls (1.1247,0.8952) and (0.9051,0.8883) .. (0.9676,0.4536) -- cycle;
\fi
%
% cocktail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1375,9 +1382,9 @@
\fill[red!80!black] (0.94,0.72) circle[radius=0.01];
\fi
%
-% overleaf duck
+% overleaf duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifduck@overleaf
- \fill[white] \duckpathoverleaf;
+ \fill[white] \duckpathoverleaf;
\fi
%
% wing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1385,6 +1392,8 @@
\fill[\duck@wing] \duckpathwing;
\fi
%
+% adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\csname duckhookforeground\endcsname
%
%\draw (current bounding box.north west) rectangle (current bounding box.south east);% For debugging bounding boxes
%
@@ -1399,7 +1408,7 @@
\ifdefined\pdfrandomseed % pdflatex
\else
\ifdefined\randomseed
- \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex
+ \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex
\else
\let\pdfrandomseed\time % pre TL19 xelatex
\fi
@@ -1647,7 +1656,7 @@
}
\newcommand{\duckpathoverleaf}{%
- (1.2699,0.6095) .. controls (1.2710,0.5992) and (1.2752,0.5910) .. (1.2822,0.5852) .. controls (1.2892,0.5793) and (1.2983,0.5763) .. (1.3095,0.5763) .. controls (1.3165,0.5762) and (1.3233,0.5778) .. (1.3295,0.5809) .. controls (1.3353,0.5840) and (1.3401,0.5885) .. (1.3436,0.5940) -- (1.3792,0.5940) .. controls (1.3731,0.5785) and (1.3640,0.5664) .. (1.3521,0.5578) .. controls (1.3398,0.5492) and (1.3252,0.5447) .. (1.3103,0.5449) .. controls (1.3002,0.5448) and (1.2902,0.5467) .. (1.2808,0.5505) .. controls (1.2718,0.5544) and (1.2636,0.5601) .. (1.2567,0.5672) .. controls (1.2500,0.5742) and (1.2446,0.5825) .. (1.2410,0.5915) .. controls (1.2372,0.6005) and (1.2353,0.6101) .. (1.2353,0.6198) .. controls (1.2352,0.6294) and (1.2370,0.6389) .. (1.2404,0.6479) .. controls (1.2438,0.6567) and (1.2489,0.6647) .. (1.2554,0.6715) .. controls (1.2625,0.6790) and (1.2709,0.6850) .. (1.2802,0.6892) .. controls (1.2891,0.6933) and (1.2988,0.6954) .. (1.3086,0.6955) .. controls (1.3207,0.6955) and (1.3325,0.6926) .. (1.3432,0.6871) .. controls (1.3540,0.6813) and (1.3633,0.6732) .. (1.3705,0.6634) .. controls (1.3751,0.6571) and (1.3786,0.6501) .. (1.3807,0.6427) .. controls (1.3831,0.6341) and (1.3842,0.6253) .. (1.3841,0.6164) .. controls (1.3840,0.6139) and (1.3839,0.6119) .. (1.3837,0.6092) .. controls (1.3458,0.6093) and (1.3079,0.6094) .. (1.2699,0.6095) -- cycle(1.3486,0.6358) .. controls (1.3458,0.6453) and (1.3410,0.6525) .. (1.3343,0.6575) .. controls (1.3276,0.6625) and (1.3192,0.6650) .. (1.3090,0.6650) .. controls (1.3004,0.6651) and (1.2920,0.6622) .. (1.2852,0.6570) .. controls (1.2783,0.6517) and (1.2733,0.6443) .. (1.2711,0.6359) .. controls (1.2969,0.6359) and (1.3228,0.6358) .. (1.3486,0.6358) -- cycle(1.5160,0.5487) -- (1.5160,0.5662) .. controls (1.5122,0.5593) and (1.5064,0.5538) .. (1.4992,0.5505) .. controls (1.4920,0.5471) and (1.4828,0.5455) .. (1.4715,0.5455) .. controls (1.4505,0.5455) and (1.4329,0.5527) .. (1.4187,0.5670) .. controls (1.4046,0.5814) and (1.3976,0.5993) .. (1.3975,0.6206) .. controls (1.3975,0.6303) and (1.3993,0.6401) .. (1.4029,0.6492) .. controls (1.4063,0.6580) and (1.4114,0.6661) .. (1.4180,0.6729) .. controls (1.4246,0.6801) and (1.4327,0.6857) .. (1.4416,0.6895) .. controls (1.4509,0.6932) and (1.4608,0.6950) .. (1.4708,0.6949) .. controls (1.4800,0.6951) and (1.4891,0.6933) .. (1.4976,0.6896) .. controls (1.5050,0.6862) and (1.5112,0.6807) .. (1.5156,0.6739) -- (1.5156,0.6911) -- (1.5480,0.6911) -- (1.5480,0.5485) -- (1.5160,0.5485) -- (1.5160,0.5487) -- cycle(1.4436,0.5910) .. controls (1.4513,0.5831) and (1.4619,0.5787) .. (1.4729,0.5789) .. controls (1.4833,0.5789) and (1.4926,0.5829) .. (1.5006,0.5911) .. controls (1.5083,0.5986) and (1.5126,0.6088) .. (1.5126,0.6196) .. controls (1.5127,0.6307) and (1.5084,0.6414) .. (1.5006,0.6494) .. controls (1.4926,0.6577) and (1.4833,0.6619) .. (1.4727,0.6619) .. controls (1.4618,0.6621) and (1.4514,0.6577) .. (1.4439,0.6499) .. controls (1.4361,0.6423) and (1.4318,0.6318) .. (1.4317,0.6205) .. controls (1.4315,0.6092) and (1.4355,0.5991) .. (1.4436,0.5910) -- cycle(1.6366,0.6913) -- (1.6366,0.6617) -- (1.6127,0.6617) -- (1.6127,0.5487) -- (1.5806,0.5487) -- (1.5806,0.6617) -- (1.5637,0.6617) -- (1.5637,0.6913) -- (1.5796,0.6913) -- (1.5796,0.6952) .. controls (1.5796,0.7102) and (1.5838,0.7214) .. (1.5922,0.7288) .. controls (1.6005,0.7362) and (1.6131,0.7399) .. (1.6300,0.7399) .. controls (1.6324,0.7398) and (1.6347,0.7396) .. (1.6370,0.7395) -- (1.6370,0.7097) -- (1.6347,0.7097) .. controls (1.6272,0.7097) and (1.6218,0.7084) .. (1.6186,0.7059) .. controls (1.6154,0.7034) and (1.6138,0.6993) .. (1.6138,0.6936) -- (1.6138,0.6910) .. controls (1.6214,0.6913) and (1.6290,0.6912) .. (1.6366,0.6913) -- cycle(1.1906,0.5487) -- (1.2231,0.5487) -- (1.2231,0.7374) -- (1.1906,0.7374) -- cycle(0.9820,0.6095) .. controls (0.9831,0.5992) and (0.9872,0.5910) .. (0.9943,0.5852) .. controls (1.0013,0.5793) and (1.0104,0.5763) .. (1.0216,0.5763) .. controls (1.0285,0.5762) and (1.0354,0.5778) .. (1.0416,0.5809) .. controls (1.0474,0.5839) and (1.0522,0.5885) .. (1.0556,0.5940) -- (1.0914,0.5940) .. controls (1.0854,0.5785) and (1.0763,0.5664) .. (1.0643,0.5578) .. controls (1.0522,0.5492) and (1.0382,0.5449) .. (1.0225,0.5449) .. controls (1.0124,0.5448) and (1.0024,0.5467) .. (0.9931,0.5505) .. controls (0.9840,0.5544) and (0.9758,0.5601) .. (0.9690,0.5672) .. controls (0.9622,0.5742) and (0.9569,0.5825) .. (0.9532,0.5915) .. controls (0.9495,0.6005) and (0.9475,0.6101) .. (0.9475,0.6198) .. controls (0.9475,0.6294) and (0.9492,0.6389) .. (0.9527,0.6479) .. controls (0.9560,0.6567) and (0.9611,0.6647) .. (0.9677,0.6715) .. controls (0.9747,0.6790) and (0.9830,0.6850) .. (0.9924,0.6892) .. controls (1.0012,0.6933) and (1.0109,0.6955) .. (1.0207,0.6955) .. controls (1.0327,0.6955) and (1.0446,0.6927) .. (1.0552,0.6871) .. controls (1.0660,0.6813) and (1.0753,0.6732) .. (1.0826,0.6634) .. controls (1.0871,0.6571) and (1.0906,0.6501) .. (1.0926,0.6427) .. controls (1.0949,0.6341) and (1.0960,0.6253) .. (1.0959,0.6164) .. controls (1.0959,0.6139) and (1.0957,0.6119) .. (1.0956,0.6092) .. controls (1.0577,0.6100) and (1.0199,0.6095) .. (0.9820,0.6095) -- cycle(1.0606,0.6358) .. controls (1.0578,0.6453) and (1.0531,0.6526) .. (1.0463,0.6575) .. controls (1.0397,0.6625) and (1.0312,0.6650) .. (1.0210,0.6650) .. controls (1.0124,0.6651) and (1.0041,0.6622) .. (0.9973,0.6570) .. controls (0.9903,0.6517) and (0.9853,0.6443) .. (0.9830,0.6359) .. controls (1.0089,0.6359) and (1.0348,0.6358) .. (1.0606,0.6358) -- cycle(1.1761,0.6624) .. controls (1.1632,0.6614) and (1.1542,0.6580) .. (1.1492,0.6523) .. controls (1.1441,0.6465) and (1.1415,0.6363) .. (1.1415,0.6214) -- (1.1415,0.5487) -- (1.1083,0.5487) -- (1.1083,0.6913) -- (1.1394,0.6913) -- (1.1394,0.6748) .. controls (1.1438,0.6808) and (1.1494,0.6856) .. (1.1559,0.6891) .. controls (1.1621,0.6923) and (1.1690,0.6938) .. (1.1760,0.6937) .. controls (1.1760,0.6833) and (1.1761,0.6728) .. (1.1761,0.6624) -- cycle(0.8646,0.8092) .. controls (0.8244,0.8248) and (0.6787,0.8306) .. (0.6784,0.7437) .. controls (0.6359,0.7165) and (0.6078,0.6721) .. (0.6078,0.6246) .. controls (0.6077,0.5410) and (0.7016,0.4916) .. (0.7705,0.5391) .. controls (0.8394,0.5866) and (0.8268,0.6919) .. (0.7486,0.7217) .. controls (0.7411,0.7246) and (0.7248,0.7297) .. (0.7117,0.7286) .. controls (0.6931,0.7168) and (0.6704,0.6924) .. (0.6597,0.6682) .. controls (0.6918,0.7064) and (0.7528,0.6983) .. (0.7737,0.6530) .. controls (0.7947,0.6076) and (0.7614,0.5559) .. (0.7115,0.5562) .. controls (0.6914,0.5562) and (0.6724,0.5649) .. (0.6594,0.5802) .. controls (0.6410,0.6019) and (0.6363,0.6254) .. (0.6400,0.6484) .. controls (0.6532,0.7289) and (0.7487,0.7748) .. (0.8197,0.7924) .. controls (0.7966,0.7801) and (0.7548,0.7600) .. (0.7255,0.7380) .. controls (0.8108,0.7051) and (0.8246,0.7770) .. (0.8646,0.8092) -- cycle(0.8731,0.5487) -- (0.8189,0.6913) -- (0.8542,0.6913) -- (0.8874,0.5965) -- (0.9217,0.6913) -- (0.9561,0.6913) -- (0.8991,0.5487) -- cycle
+ (1.2699,0.6095) .. controls (1.2710,0.5992) and (1.2752,0.5910) .. (1.2822,0.5852) .. controls (1.2892,0.5793) and (1.2983,0.5763) .. (1.3095,0.5763) .. controls (1.3165,0.5762) and (1.3233,0.5778) .. (1.3295,0.5809) .. controls (1.3353,0.5840) and (1.3401,0.5885) .. (1.3436,0.5940) -- (1.3792,0.5940) .. controls (1.3731,0.5785) and (1.3640,0.5664) .. (1.3521,0.5578) .. controls (1.3398,0.5492) and (1.3252,0.5447) .. (1.3103,0.5449) .. controls (1.3002,0.5448) and (1.2902,0.5467) .. (1.2808,0.5505) .. controls (1.2718,0.5544) and (1.2636,0.5601) .. (1.2567,0.5672) .. controls (1.2500,0.5742) and (1.2446,0.5825) .. (1.2410,0.5915) .. controls (1.2372,0.6005) and (1.2353,0.6101) .. (1.2353,0.6198) .. controls (1.2352,0.6294) and (1.2370,0.6389) .. (1.2404,0.6479) .. controls (1.2438,0.6567) and (1.2489,0.6647) .. (1.2554,0.6715) .. controls (1.2625,0.6790) and (1.2709,0.6850) .. (1.2802,0.6892) .. controls (1.2891,0.6933) and (1.2988,0.6954) .. (1.3086,0.6955) .. controls (1.3207,0.6955) and (1.3325,0.6926) .. (1.3432,0.6871) .. controls (1.3540,0.6813) and (1.3633,0.6732) .. (1.3705,0.6634) .. controls (1.3751,0.6571) and (1.3786,0.6501) .. (1.3807,0.6427) .. controls (1.3831,0.6341) and (1.3842,0.6253) .. (1.3841,0.6164) .. controls (1.3840,0.6139) and (1.3839,0.6119) .. (1.3837,0.6092) .. controls (1.3458,0.6093) and (1.3079,0.6094) .. (1.2699,0.6095) -- cycle(1.3486,0.6358) .. controls (1.3458,0.6453) and (1.3410,0.6525) .. (1.3343,0.6575) .. controls (1.3276,0.6625) and (1.3192,0.6650) .. (1.3090,0.6650) .. controls (1.3004,0.6651) and (1.2920,0.6622) .. (1.2852,0.6570) .. controls (1.2783,0.6517) and (1.2733,0.6443) .. (1.2711,0.6359) .. controls (1.2969,0.6359) and (1.3228,0.6358) .. (1.3486,0.6358) -- cycle(1.5160,0.5487) -- (1.5160,0.5662) .. controls (1.5122,0.5593) and (1.5064,0.5538) .. (1.4992,0.5505) .. controls (1.4920,0.5471) and (1.4828,0.5455) .. (1.4715,0.5455) .. controls (1.4505,0.5455) and (1.4329,0.5527) .. (1.4187,0.5670) .. controls (1.4046,0.5814) and (1.3976,0.5993) .. (1.3975,0.6206) .. controls (1.3975,0.6303) and (1.3993,0.6401) .. (1.4029,0.6492) .. controls (1.4063,0.6580) and (1.4114,0.6661) .. (1.4180,0.6729) .. controls (1.4246,0.6801) and (1.4327,0.6857) .. (1.4416,0.6895) .. controls (1.4509,0.6932) and (1.4608,0.6950) .. (1.4708,0.6949) .. controls (1.4800,0.6951) and (1.4891,0.6933) .. (1.4976,0.6896) .. controls (1.5050,0.6862) and (1.5112,0.6807) .. (1.5156,0.6739) -- (1.5156,0.6911) -- (1.5480,0.6911) -- (1.5480,0.5485) -- (1.5160,0.5485) -- (1.5160,0.5487) -- cycle(1.4436,0.5910) .. controls (1.4513,0.5831) and (1.4619,0.5787) .. (1.4729,0.5789) .. controls (1.4833,0.5789) and (1.4926,0.5829) .. (1.5006,0.5911) .. controls (1.5083,0.5986) and (1.5126,0.6088) .. (1.5126,0.6196) .. controls (1.5127,0.6307) and (1.5084,0.6414) .. (1.5006,0.6494) .. controls (1.4926,0.6577) and (1.4833,0.6619) .. (1.4727,0.6619) .. controls (1.4618,0.6621) and (1.4514,0.6577) .. (1.4439,0.6499) .. controls (1.4361,0.6423) and (1.4318,0.6318) .. (1.4317,0.6205) .. controls (1.4315,0.6092) and (1.4355,0.5991) .. (1.4436,0.5910) -- cycle(1.6366,0.6913) -- (1.6366,0.6617) -- (1.6127,0.6617) -- (1.6127,0.5487) -- (1.5806,0.5487) -- (1.5806,0.6617) -- (1.5637,0.6617) -- (1.5637,0.6913) -- (1.5796,0.6913) -- (1.5796,0.6952) .. controls (1.5796,0.7102) and (1.5838,0.7214) .. (1.5922,0.7288) .. controls (1.6005,0.7362) and (1.6131,0.7399) .. (1.6300,0.7399) .. controls (1.6324,0.7398) and (1.6347,0.7396) .. (1.6370,0.7395) -- (1.6370,0.7097) -- (1.6347,0.7097) .. controls (1.6272,0.7097) and (1.6218,0.7084) .. (1.6186,0.7059) .. controls (1.6154,0.7034) and (1.6138,0.6993) .. (1.6138,0.6936) -- (1.6138,0.6910) .. controls (1.6214,0.6913) and (1.6290,0.6912) .. (1.6366,0.6913) -- cycle(1.1906,0.5487) -- (1.2231,0.5487) -- (1.2231,0.7374) -- (1.1906,0.7374) -- cycle(0.9820,0.6095) .. controls (0.9831,0.5992) and (0.9872,0.5910) .. (0.9943,0.5852) .. controls (1.0013,0.5793) and (1.0104,0.5763) .. (1.0216,0.5763) .. controls (1.0285,0.5762) and (1.0354,0.5778) .. (1.0416,0.5809) .. controls (1.0474,0.5839) and (1.0522,0.5885) .. (1.0556,0.5940) -- (1.0914,0.5940) .. controls (1.0854,0.5785) and (1.0763,0.5664) .. (1.0643,0.5578) .. controls (1.0522,0.5492) and (1.0382,0.5449) .. (1.0225,0.5449) .. controls (1.0124,0.5448) and (1.0024,0.5467) .. (0.9931,0.5505) .. controls (0.9840,0.5544) and (0.9758,0.5601) .. (0.9690,0.5672) .. controls (0.9622,0.5742) and (0.9569,0.5825) .. (0.9532,0.5915) .. controls (0.9495,0.6005) and (0.9475,0.6101) .. (0.9475,0.6198) .. controls (0.9475,0.6294) and (0.9492,0.6389) .. (0.9527,0.6479) .. controls (0.9560,0.6567) and (0.9611,0.6647) .. (0.9677,0.6715) .. controls (0.9747,0.6790) and (0.9830,0.6850) .. (0.9924,0.6892) .. controls (1.0012,0.6933) and (1.0109,0.6955) .. (1.0207,0.6955) .. controls (1.0327,0.6955) and (1.0446,0.6927) .. (1.0552,0.6871) .. controls (1.0660,0.6813) and (1.0753,0.6732) .. (1.0826,0.6634) .. controls (1.0871,0.6571) and (1.0906,0.6501) .. (1.0926,0.6427) .. controls (1.0949,0.6341) and (1.0960,0.6253) .. (1.0959,0.6164) .. controls (1.0959,0.6139) and (1.0957,0.6119) .. (1.0956,0.6092) .. controls (1.0577,0.6100) and (1.0199,0.6095) .. (0.9820,0.6095) -- cycle(1.0606,0.6358) .. controls (1.0578,0.6453) and (1.0531,0.6526) .. (1.0463,0.6575) .. controls (1.0397,0.6625) and (1.0312,0.6650) .. (1.0210,0.6650) .. controls (1.0124,0.6651) and (1.0041,0.6622) .. (0.9973,0.6570) .. controls (0.9903,0.6517) and (0.9853,0.6443) .. (0.9830,0.6359) .. controls (1.0089,0.6359) and (1.0348,0.6358) .. (1.0606,0.6358) -- cycle(1.1761,0.6624) .. controls (1.1632,0.6614) and (1.1542,0.6580) .. (1.1492,0.6523) .. controls (1.1441,0.6465) and (1.1415,0.6363) .. (1.1415,0.6214) -- (1.1415,0.5487) -- (1.1083,0.5487) -- (1.1083,0.6913) -- (1.1394,0.6913) -- (1.1394,0.6748) .. controls (1.1438,0.6808) and (1.1494,0.6856) .. (1.1559,0.6891) .. controls (1.1621,0.6923) and (1.1690,0.6938) .. (1.1760,0.6937) .. controls (1.1760,0.6833) and (1.1761,0.6728) .. (1.1761,0.6624) -- cycle(0.8646,0.8092) .. controls (0.8244,0.8248) and (0.6787,0.8306) .. (0.6784,0.7437) .. controls (0.6359,0.7165) and (0.6078,0.6721) .. (0.6078,0.6246) .. controls (0.6077,0.5410) and (0.7016,0.4916) .. (0.7705,0.5391) .. controls (0.8394,0.5866) and (0.8268,0.6919) .. (0.7486,0.7217) .. controls (0.7411,0.7246) and (0.7248,0.7297) .. (0.7117,0.7286) .. controls (0.6931,0.7168) and (0.6704,0.6924) .. (0.6597,0.6682) .. controls (0.6918,0.7064) and (0.7528,0.6983) .. (0.7737,0.6530) .. controls (0.7947,0.6076) and (0.7614,0.5559) .. (0.7115,0.5562) .. controls (0.6914,0.5562) and (0.6724,0.5649) .. (0.6594,0.5802) .. controls (0.6410,0.6019) and (0.6363,0.6254) .. (0.6400,0.6484) .. controls (0.6532,0.7289) and (0.7487,0.7748) .. (0.8197,0.7924) .. controls (0.7966,0.7801) and (0.7548,0.7600) .. (0.7255,0.7380) .. controls (0.8108,0.7051) and (0.8246,0.7770) .. (0.8646,0.8092) -- cycle(0.8731,0.5487) -- (0.8189,0.6913) -- (0.8542,0.6913) -- (0.8874,0.5965) -- (0.9217,0.6913) -- (0.9561,0.6913) -- (0.8991,0.5487) -- cycle
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1657,31 +1666,31 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\picduck}{%
- % bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \qbezier(6.5,29.5)(-1,17.5)(16.8,27.3)
- \qbezier(6.5,29.5)(9,30.5)(11.4,28.0)
- \qbezier(11.4,28.0)(13.5,26.5)(16.8,27.3)
- % head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \qbezier(06.5,29.5)(6,41.5)(16.8,42.4)
- \qbezier(16.8,42.4)(29,41)(25.3,24)
- % body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \qbezier(7.8,23.2)(8,22.8)(8,22.5)
- \qbezier(8,22.5)(-5,9)(8,3)
- \qbezier(8,3)(22,-2)(35,6.5)
- \qbezier(35,6.5)(46,15)(35,28.3)
- \qbezier(35,28.3)(30,25)(25.3,24)
- % right eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \qbezier(13,32)(13.8,34.5)(16,34)
- \qbezier(16,34)(17.3,33.2)(16.7,31)
- \qbezier(16.7,31)(16,29.1)(14.5,29.3)
- \qbezier(14.5,29.3)(12.7,29.5)(13,32)
- \put(15.3,31.3){\circle*{1.8}}
- % left eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \qbezier(7.7,33.2)(8.4,35.7)(10.3,35)
- \qbezier(10.3,35)(11.2,34)(10.4,32.2)
- \qbezier(10.4,32.2)(9.7,30.7)(8.7,30.7)
- \qbezier(8.7,30.7)(7.2,30.9)(7.7,33.2)
- \put(9.5,32.7){\circle*{1.5}}
+ % bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \qbezier(6.5,29.5)(-1,17.5)(16.8,27.3)
+ \qbezier(6.5,29.5)(9,30.5)(11.4,28.0)
+ \qbezier(11.4,28.0)(13.5,26.5)(16.8,27.3)
+ % head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \qbezier(06.5,29.5)(6,41.5)(16.8,42.4)
+ \qbezier(16.8,42.4)(29,41)(25.3,24)
+ % body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \qbezier(7.8,23.2)(8,22.8)(8,22.5)
+ \qbezier(8,22.5)(-5,9)(8,3)
+ \qbezier(8,3)(22,-2)(35,6.5)
+ \qbezier(35,6.5)(46,15)(35,28.3)
+ \qbezier(35,28.3)(30,25)(25.3,24)
+ % right eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \qbezier(13,32)(13.8,34.5)(16,34)
+ \qbezier(16,34)(17.3,33.2)(16.7,31)
+ \qbezier(16.7,31)(16,29.1)(14.5,29.3)
+ \qbezier(14.5,29.3)(12.7,29.5)(13,32)
+ \put(15.3,31.3){\circle*{1.8}}
+ % left eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \qbezier(7.7,33.2)(8.4,35.7)(10.3,35)
+ \qbezier(10.3,35)(11.2,34)(10.4,32.2)
+ \qbezier(10.4,32.2)(9.7,30.7)(8.7,30.7)
+ \qbezier(8.7,30.7)(7.2,30.9)(7.7,33.2)
+ \put(9.5,32.7){\circle*{1.5}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%