summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-08-03 21:09:37 +0000
committerKarl Berry <karl@freefriends.org>2017-08-03 21:09:37 +0000
commit8fcb0c5c689043e5e4ab34ffe816bab9cf95e382 (patch)
tree37dd683ff71e154deb7ff2e141c7840354d89a1e /Master
parentff587f620cc7c6d0068c33b27a8e554bce2b08fe (diff)
tikzducks (3aug17)
git-svn-id: svn://tug.org/texlive/trunk@44943 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/tikzducks/README.md11
-rw-r--r--Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdfbin0 -> 202973 bytes
-rw-r--r--Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex332
-rw-r--r--Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty424
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-pictures.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/tikzducks.tlpsrc0
7 files changed, 769 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/tikzducks/README.md b/Master/texmf-dist/doc/latex/tikzducks/README.md
new file mode 100644
index 00000000000..cb0ce8573bc
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tikzducks/README.md
@@ -0,0 +1,11 @@
+# tikzducks
+
+This is a little LaTeX package for ducks to be used in *TikZ* pictures. The project is a continuation of https://tex.stackexchange.com/a/347458/36296
+
+This project is licensed under the LaTeX Project Public License (LPPL), see http://www.latex-project.org/lppl.txt
+
+The project repository, including a bug tracker, can be found at https://github.com/samcarter8/tikzducks/issues
+
+### A few examples:
+
+![tikz ducks](https://user-images.githubusercontent.com/8226363/28897479-36cb96ac-77e1-11e7-865f-2fcdd262ad03.png)
diff --git a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf
new file mode 100644
index 00000000000..98aa200f4a5
--- /dev/null
+++ 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
new file mode 100644
index 00000000000..6bf75c71c02
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex
@@ -0,0 +1,332 @@
+\documentclass{ltxdockit}
+\usepackage{btxdockit}
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[bitstream-charter]{mathdesign}
+\usepackage{tikzducks}
+\usepackage{xspace}
+\usepackage[most]{tcolorbox}
+
+\KOMAoptions{numbers=noenddot}
+\addtokomafont{title}{\sffamily}
+\addtokomafont{paragraph}{\spotcolor}
+\addtokomafont{section}{\spotcolor}
+\addtokomafont{subsection}{\spotcolor}
+\addtokomafont{subsubsection}{\spotcolor}
+\addtokomafont{descriptionlabel}{\spotcolor}
+\setkomafont{caption}{\bfseries\sffamily\spotcolor}
+\setkomafont{captionlabel}{\bfseries\sffamily\spotcolor}
+
+\makeatletter
+\patchcmd{\paragraph}
+ {3.25ex \@plus1ex \@minus.2ex}{-3.25ex\@plus -1ex \@minus -.2ex}{}{}
+\patchcmd{\paragraph}{-1em}{1.5ex \@plus .2ex}{}{}
+\makeatother
+
+\title{The tikzducks package}
+\subtitle{using ducks in tikz}
+\author{samcarter}
+
+\newcommand{\tikzducks}{\texttt{tikzducks}\xspace}
+\definecolor{duckblue}{rgb}{0.0,0.2,0.4}
+\lstloadlanguages{[LaTeX]Tex}
+
+\tcbset{%
+ colframe=duckblue,
+ arc=2mm,
+ fonttitle=\bfseries,
+ sidebyside,
+ listing options={language={[latex]TeX}, tabsize=2,breaklines}, righthand width=6.5cm
+}
+
+\begin{document}
+
+\begin{center}
+ {\LARGE \textbf{The \texttt{tikzducks} Package (version 0.2)}}
+
+ \large using ducks in \texttt{tikz}
+
+ samcarter (alias
+ \begin{tikzpicture}[scale=0.3,baseline=5pt]
+ \duck[body=yellow!50!brown!50!white,
+ longhair=red!50!brown,
+ jacket=blue!50!black]
+ \end{tikzpicture}%
+ )
+
+ \url{https://github.com/samcarter8/tikzducks}
+
+ \today
+\end{center}
+
+\section{Introduction}
+\label{intro}
+
+The \tikzducks package is a latex package for ducks to be used in \texttt{tikz} pictures. This project is a continuation of an answer at TeX.Stackexchange (\url{https://tex.stackexchange.com/a/347458/36296}).
+
+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 source code can be found on \url{https://github.com/samcarter8/tikzducks}, including a bug tracker, please make constructive use of it!
+
+\subsection{License}
+
+Copyright \textcopyright\ \texttt{samcarter}. Permission is granted to copy, distribute and\slash or modify this software under the terms of the LaTeX project public licence, version 1.3c \url{http://www.latex-project.org/lppl.txt}
+
+The shown example ducks are purely fictional characters, any resemblance to real persons is purely coincidental and no copyright infringement is intended.
+
+\subsection{Acknowledgements}
+
+I would like to thank a few fellow user from \href{https://tex.stackexchange.com/}{TeX.Stackexchange}: \href{https://tex.stackexchange.com/users/101651/carlatex}{CarLaTeX} for pointing out the overwhelming need of having a \tikzducks package,
+\href{https://tex.stackexchange.com/users/3094/paulo-cereda}{Paulo Cereda} for his contagious enthusiasm for ducks (\emph{Quack!}),
+\href{https://tex.stackexchange.com/users/4427/egreg}{egreg} for his help to implement the \texttt{\tikzset{}} interface which makes it much easier to adjust the properties of the ducks to fit the user needs and last but not least \href{https://tex.stackexchange.com/users/5763/martin-schr%c3%b6der}{Martin Schr\"oder} for his feedback to the code review
+
+\bigskip\noindent
+Without them, this package would not exist!
+
+\newpage
+\section{Usage}
+
+The basic usage is fairly simple, to draw a duck
+\begin{tcblisting}{title={basic duck}}
+\begin{tikzpicture}
+ \duck
+\end{tikzpicture}
+\end{tcblisting}
+
+To customise this basic duck, the package uses \texttt{pgf} keys. For almost all parts the colour can be changed using \verb|<shape name>=<colour name>|. For example to change the colour of the duck:
+\begin{tcblisting}{title={blue duck}}
+\begin{tikzpicture}
+ \duck[body=blue]
+\end{tikzpicture}
+\end{tcblisting}
+
+If the size of the ducks should be changed:
+\begin{tcblisting}{title={scaled duck}, righthand width=3cm}
+\begin{tikzpicture}[scale=0.6]
+ \duck
+ \begin{scope}[xshift=90pt, scale=.3, yshift=150pt]
+ \duck
+ \end{scope}
+ \begin{scope}[xshift=60pt, scale=.3, yshift=100pt]
+ \duck
+ \end{scope}
+ \begin{scope}[xshift=80pt, scale=.3, yshift=50pt]
+ \duck
+ \end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Body parts}
+
+The various parts of the duck body can also be coloured independently, i.e. \texttt{body}, \texttt{head} and \texttt{bill}
+\begin{tcblisting}{title={harlequin duck}}
+\begin{tikzpicture}
+ \duck[body=yellow,
+ head=yellow!50!orange,
+ bill=red]
+\end{tikzpicture}
+\end{tcblisting}
+
+Furthermore using the keyword \texttt{grumpy} the shape of the bill can be changed:
+\begin{tcblisting}{title={grumpy duck}}
+\begin{tikzpicture}
+ \duck[grumpy]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Hair styles}
+
+Some duck also like to have nice hair cuts, several different hair styles are available:
+\begin{tcblisting}{title={hairy duck}}
+\begin{tikzpicture}
+ \duck[longhair]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[shorthair]
+\end{tikzpicture}
+
+\begin{tikzpicture}
+ \duck[crazyhair]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[recedinghair]
+\end{tikzpicture}
+\end{tcblisting}
+
+And of course the colour of each hair styles can be adjusted:
+\begin{tcblisting}{title={coloured hair duck}}
+\begin{tikzpicture}
+ \duck[longhair=teal]
+\end{tikzpicture}
+\end{tcblisting}
+
+Eyebrows are also part of the package. The colour choice is a bit complicate for them - if a colour is explicitly specified \verb|eyebrow=<colour name>| this colour is of coursed used. But if no colour is given, it falls first back to the hair colour and only if the duck does not have any hairs, the default colour is applied.
+\begin{tcblisting}{title={eye brow duck}}
+\begin{tikzpicture}
+ \duck[eyebrow]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[longhair=blue,
+ eyebrow]
+\end{tikzpicture}
+
+\begin{tikzpicture}
+ \duck[crazyhair=red,
+ eyebrow=blue]
+\end{tikzpicture}
+\end{tcblisting}
+
+\newpage
+\subsection{Clothing}
+
+A respectable duck needs a suitable wardrobe. It can choose from a \texttt{tshirt}, a \texttt{jacket} and a \texttt{tie}.
+
+\begin{tcblisting}{title={dressed duck}}
+\begin{tikzpicture}
+ \duck[tshirt]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[jacket]
+\end{tikzpicture}
+
+\begin{tikzpicture}
+ \duck[tie]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[tshirt=lightgray,
+ jacket=blue!50!black,
+ tie=blue!80!black,
+ shorthair]
+\end{tikzpicture}
+\end{tcblisting}
+
+\subsection{Accessoire}
+
+There is a multitude of things a duck might need. All these examples also work without specifying a colour, but giving both examples with and without explicit colour just makes this overview unnecessary long.
+
+\begin{tcblisting}{title={swimming duck}}
+\begin{tikzpicture}
+ \duck[water=cyan!50!blue]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={alien duck}}
+\begin{tikzpicture}
+ \duck[alien=green!50!brown]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={hat duck}}
+\begin{tikzpicture}
+ \duck[hat=red!50!black]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={unicorn duck}}
+\begin{tikzpicture}
+ \duck[body=pink,
+ unicorn=magenta!60!violet,
+ longhair=magenta!60!violet]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={glasses duck}}
+\begin{tikzpicture}
+ \duck[glasses=red!50!black]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={sunglasses duck}}
+\begin{tikzpicture}
+ \duck[sunglasses]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={book duck}}
+\begin{tikzpicture}
+ \duck[book=\scalebox{0.5}{\TeX}]
+\end{tikzpicture}
+\begin{tikzpicture}
+\duck[book=\scalebox{0.6}{$\pi$}, bookcolour=blue!50!black]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={magic duck}}
+\begin{tikzpicture}
+ \duck[magichat,
+ magicwand]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[magichat=teal,
+ magicstars=cyan,
+ magicwand]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={icecream duck}}
+\begin{tikzpicture}
+ \duck[icecream]
+\end{tikzpicture}
+\begin{tikzpicture}
+ \duck[icecream=brown, flavoura=brown, flavourb=white, flavourc=red]
+\end{tikzpicture}
+\end{tcblisting}
+
+\section{Examples}
+
+Some examples how the \tikzducks can be customised:
+\begin{tcblisting}{title={samcarter duck}, righthand width=3cm}
+\begin{tikzpicture}
+ \duck[body=yellow!50!brown!50!white,
+ longhair=red!50!brown,
+ jacket=blue!50!black]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={Brazil duck}, righthand width=3cm}
+\begin{tikzpicture}
+\definecolor{brazilgreen}{RGB}{0,155,58}
+\definecolor{brazilyellow}{RGB}{254,223,0}
+\definecolor{brazilblue}{RGB}{0,39,118}
+ \duck[body=brazilyellow,
+ shorthair=brazilgreen]
+ \path[preaction={fill, brazilblue},pattern=fivepointed stars, pattern color=white]
+ (0.500,1.145) .. controls (0.267, 1.102) and (-0.125,0.657) ..
+ (0.289,0.261) .. controls (0.704,-0.135) and ( 2.863,0.130) ..
+ (1.818,1.419) .. controls (0.938, 0.946) and ( 1.240,1.378) ..
+ (0.513,0.700) -- cycle;
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={duck in black}, righthand width=3cm}
+\begin{tikzpicture}
+ \duck[grumpy, body=yellow!50!brown!50!white, tshirt=white, jacket=black, tie=black, hat=black, sunglasses=black]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={Prof. van Duck}, righthand width=3cm}
+\begin{tikzpicture}
+ \duck[body=yellow!50!brown!40!white,
+ crazyhair=gray!50!white,
+ eyebrow,
+ glasses=brown!70!black,
+ book=\scalebox{0.2}{$E=mc^2$},
+ bookcolour=red!20!brown]
+\end{tikzpicture}
+\end{tcblisting}
+
+\begin{tcblisting}{title={DEK}, righthand width=3cm}
+\begin{tikzpicture}
+ \duck[body=yellow!50!red!20!white,
+ recedinghair=gray!50!white,
+ eyebrow,
+ tshirt=white!93!black,
+ jacket=red!50!black,
+ glasses=brown!70!lightgray,
+ book=\scalebox{0.5}{\TeX},
+ bookcolour=black!20!brown]
+\end{tikzpicture}
+\end{tcblisting}
+
+\end{document}
+
diff --git a/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty
new file mode 100644
index 00000000000..5ddf01db5da
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty
@@ -0,0 +1,424 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The tikzducks package
+% A package to bring rubber ducks into tikz
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter8/tikzducks
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+% Version 0.2
+% Aug 2, 2017
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesPackage{tikzducks}
+
+\RequirePackage{xcolor}
+\RequirePackage{tikz}
+\usetikzlibrary{patterns} % for the wizard hat
+
+\newcommand*{\duck}[1][]{\tikzset{/duck/.cd,#1}\duck@draw}
+
+\newif\ifduck@grumpy
+\newif\ifduck@shorthair
+\newif\ifduck@longhair
+\newif\ifduck@crazyhair
+\newif\ifduck@recedinghair
+\newif\ifduck@eyebrow
+\newif\ifduck@tshirt
+\newif\ifduck@jacket
+\newif\ifduck@tie
+\newif\ifduck@glasses
+\newif\ifduck@sunglasses
+\newif\ifduck@alien
+\newif\ifduck@hat
+\newif\ifduck@unicorn
+\newif\ifduck@water
+\newif\ifduck@icecream
+\newif\ifduck@book
+\newif\ifduck@magichat
+\newif\ifduck@magicwand
+
+\tikzset{
+ /duck/.cd,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Environment
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ water/.code = \duck@watertrue \def\duck@water{#1},
+ % setting default
+ water/.default = blue,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % body parts
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body/.code = \def\duck@body{#1},
+ head/.code = \def\duck@head{#1},
+ eye/.code = \def\duck@eye{#1},
+ pupil/.code = \def\duck@pupil{#1},
+ bill/.code = \def\duck@bill{#1},
+ grumpy/.code = \duck@grumpytrue,
+ % setting defaults %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ body = yellow!70!brown,
+ eye = white!85!yellow,
+ pupil = black,
+ bill = orange!50!brown,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % clothing
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ tshirt/.code = \duck@tshirttrue \def\duck@tshirt{#1},
+ jacket/.code = \duck@jackettrue \def\duck@jacket{#1},
+ tie/.code = \duck@tietrue \def\duck@tie{#1},
+ % setting default %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ tshirt/.default = white,
+ jacket/.default = blue,
+ tie/.default = blue,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % hair styles
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ shorthair/.code = \duck@shorthairtrue \def\duck@hair{#1},
+ longhair/.code = \duck@longhairtrue \def\duck@hair{#1},
+ crazyhair/.code = \duck@crazyhairtrue \def\duck@hair{#1},
+ recedinghair/.code = \duck@recedinghairtrue \def\duck@hair{#1},
+ eyebrow/.code = \duck@eyebrowtrue \def\duck@eyebrow{#1},
+ % setting defaults %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ shorthair/.default = brown,
+ longhair/.default = brown,
+ crazyhair/.default = brown,
+ recedinghair/.default = brown,
+ eyebrow/.default = brown,
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %
+ % Accessories
+ %
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ glasses/.code = \duck@glassestrue \def\duck@glasses{#1},
+ sunglasses/.code = \duck@sunglassestrue \def\duck@sunglasses{#1},
+ alien/.code = \duck@alientrue \def\duck@alien{#1},
+ hat/.code = \duck@hattrue \def\duck@hat{#1},
+ unicorn/.code = \duck@unicorntrue \def\duck@unicorn{#1},
+ icecream/.code = \duck@icecreamtrue \def\duck@cone{#1},
+ flavoura/.code = \def\duck@flavoura{#1},
+ flavourb/.code = \def\duck@flavourb{#1},
+ flavourc/.code = \def\duck@flavourc{#1},
+ book/.code = \duck@booktrue \def\duck@book{#1},
+ bookcolour/.code = \def\duck@bookcolour{#1},
+ magichat/.code = \duck@magichattrue \def\duck@magichat{#1},
+ magicstars/.code = \def\duck@magicstars{#1},
+ magicwand/.code = \duck@magicwandtrue,
+ % setting defaults %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ glasses/.default = black,
+ sunglasses/.default = black,
+ alien/.default = green,
+ hat/.default = brown,
+ unicorn/.default = pink,
+ icecream/.default = brown!70!black,
+ flavoura = brown!50!black,
+ flavourb = white!70!brown,
+ flavourc = red!50!white,
+ bookcolour = brown,
+ magichat/.default = violet,
+ magicstars = yellow!80!brown,
+}
+
+\def\duck@draw{
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Environment
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% water %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@water
+ \path[draw=\duck@water, line width=5]
+ (1.00,0.40) ellipse (0.80 and 0.28);
+ \path[draw=\duck@water, line width=3]
+ (1.00,0.40) ellipse (1.00 and 0.45);
+ \path[draw=\duck@water, line width=2]
+ (1.00,0.40) ellipse (1.20 and 0.60);
+ \path[draw=\duck@water, line width=1]
+ (1.00,0.40) ellipse (1.40 and 0.75);
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% body parts
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path[fill=\duck@body]
+ (0.513,1.145) .. controls (0.267, 1.102) and (-0.125,0.657) ..
+ (0.289,0.261) .. controls (0.704,-0.135) and ( 2.863,0.130) ..
+ (1.818,1.419) .. controls (0.938, 0.946) and ( 1.240,1.379) ..
+ (0.513,1.145) -- cycle;
+%
+% head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifdefined\duck@head\else\let\duck@head=\duck@body\fi
+\path[fill=\duck@head]
+ (0.90,1.50) ellipse (0.50 and 0.625);
+%
+% bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@grumpy
+ \path[fill=\duck@bill]
+ (0.406,1.472) .. controls (0.643,1.530) and (0.643,1.530) ..
+ (0.800,1.300) .. controls (0.083,0.850) and (0.269,1.369) ..
+ (0.406,1.472) -- cycle;
+\else
+ \path[fill=\duck@bill]
+ (0.406,1.472) .. controls (0.643,1.530) and (0.541,1.303) ..
+ (0.910,1.370) .. controls (0.083,0.850) and (0.269,1.369) ..
+ (0.406,1.472) -- cycle;
+\fi
+%
+% right eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path[fill=\duck@eye, rotate=-20]
+ (0.23,1.7675) ellipse (0.0893 and 0.125);
+\path[fill=\duck@pupil, rotate=-20]
+ (0.26,1.7575) ellipse (0.0357 and 0.0714);
+%
+% left eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\path[fill=\duck@eye, rotate=-20]
+ (-0.06,1.74) ellipse (0.0786 and 0.1143);
+\path[fill=\duck@pupil, rotate=-20]
+ (-0.03,1.73) ellipse (0.0286 and 0.0643);
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% clothing
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% tshirt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@tshirt
+ \path[fill=\duck@tshirt]
+ (0.490,1.145) .. controls (0.267, 1.102) and (-0.125,0.657) ..
+ (0.289,0.261) .. controls (0.704,-0.135) and ( 2.863,0.130) ..
+ (1.818,1.419) .. controls (0.938, 0.976) and ( 1.240,1.279) ..
+ (0.590,1.000) -- cycle;
+\fi
+%
+% tie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@tie
+ \draw[line width=3,color=\duck@tie] (0.60,1.00) -- (0.50,0.60);
+\fi
+%
+% jacket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@jacket
+ \path[fill=\duck@jacket]
+ (0.500,1.145) .. controls (0.267, 1.102) and (-0.125,0.657) ..
+ (0.289,0.261) .. controls (0.704,-0.135) and ( 2.863,0.130) ..
+ (1.818,1.419) .. controls (0.938, 0.946) and ( 1.240,1.378) ..
+ (0.513,0.700) -- cycle;
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% hair styles
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% short hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@shorthair
+ \path[fill=\duck@hair]
+ (1.3947,1.4175) .. controls (1.4546,1.4518) and (1.4699,1.6566) ..
+ (1.4343,1.7992) .. controls (1.2528,2.5033) and (0.2339,2.2710) ..
+ (0.4151,1.5907) .. controls (0.4345,1.8709) and (0.7421,2.0999) ..
+ (0.9494,1.9054) .. controls (1.2241,1.6476) and (1.3316,1.3814) ..
+ (1.3947,1.4175) -- cycle;
+\fi
+%
+% long hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@longhair
+ \path[fill=\duck@hair]
+ (1.4508,0.7565) .. controls (1.5146,0.7888) and (1.5854,0.8216) ..
+ (1.6247,0.8831) .. controls (1.5859,0.8847) and (1.4726,0.9457) ..
+ (1.5587,0.9706) .. controls (1.6317,0.9685) and (1.7016,1.0046) ..
+ (1.7314,1.0734) .. controls (1.7931,1.1660) and (1.6616,1.1176) ..
+ (1.6277,1.1566) .. controls (1.6853,1.1741) and (1.7840,1.1829) ..
+ (1.8123,1.2244) .. controls (1.7022,1.2488) and (1.5688,1.2663) ..
+ (1.5063,1.3739) .. controls (1.4619,1.5143) and (1.4696,1.6649) ..
+ (1.4340,1.8076) .. controls (1.2524,2.5117) and (0.2335,2.2794) ..
+ (0.4148,1.5991) .. controls (0.4341,1.8793) and (0.6629,2.1130) ..
+ (0.9011,1.9578) .. controls (1.2427,1.7382) and (1.3350,1.4214) ..
+ (1.0905,1.0610) .. controls (1.0897,1.0109) and (1.1103,0.9166) ..
+ (1.1805,0.8670) .. controls (1.2507,0.8174) and (1.3503,0.7853) ..
+ (1.4508,0.7565) -- cycle;
+\fi
+%
+% crazy hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@crazyhair
+ \path[fill=\duck@hair]
+ (0.1977,1.9023) .. controls (0.2633,2.0599) and (0.4819,2.0547) ..
+ (0.4713,2.0879) .. controls (0.4647,2.2106) and (0.2516,2.2392) ..
+ (0.2516,2.2392) .. controls (0.4352,2.2933) and (0.7427,1.9304) ..
+ (0.5743,2.3885) .. controls (0.6017,2.3633) and (0.8307,2.1739) ..
+ (0.8082,2.4245) .. controls (0.8271,2.2885) and (0.9195,2.0400) ..
+ (0.9933,2.2673) .. controls (1.0814,2.6593) and (0.9688,2.0034) ..
+ (1.3350,2.3615) .. controls (1.3657,2.3292) and (1.1627,2.1043) ..
+ (1.3424,2.1387) .. controls (1.3102,1.8312) and (1.5049,2.2623) ..
+ (1.5049,2.2623) .. controls (1.5049,2.2623) and (1.4675,2.0493) ..
+ (1.4287,1.9560) .. controls (1.4287,1.9560) and (1.6830,1.9470) ..
+ (1.7178,1.8823) .. controls (1.1926,1.8054) and (2.0160,1.7277) ..
+ (1.4923,1.7275) .. controls (1.5366,1.6685) and (1.3013,1.6009) ..
+ (1.6500,1.5946) .. controls (0.8836,1.5797) and (1.2764,1.9221) ..
+ (0.8957,2.0442) .. controls (0.5516,2.0958) and (0.5228,1.8527) ..
+ (0.4695,1.7963) .. controls (0.4825,1.9607) and (0.3601,1.9095) ..
+ (0.1977,1.9023) -- cycle;%
+\fi
+%
+% receding hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@recedinghair
+ \path[fill=\duck@hair]
+ (1.3385,1.4841) .. controls (1.4243,1.4529) and (1.4877,1.7127) ..
+ (1.3964,1.8658) .. controls (1.1071,2.3511) and (0.5189,2.1609) ..
+ (0.4381,1.6816) .. controls (0.4575,1.9618) and (0.9007,2.2059) ..
+ (1.1308,2.0390) .. controls (1.4703,1.7469) and (1.0343,1.5949) ..
+ (1.3385,1.4841) -- cycle;%
+\fi
+%
+% eye brow %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\duck@test{brown}
+\ifx\duck@eyebrow\duck@test
+ \ifdefined\duck@hair\let\duck@eyebrow=\duck@hair\fi
+\fi%
+\ifduck@eyebrow
+ \draw[line width=2,color=\duck@eyebrow,line cap=round]
+ (0.96,1.70) -- (0.82,1.77);
+ \draw[line width=2,color=\duck@eyebrow,line cap=round]
+ (0.50,1.81) -- (0.60,1.82);
+\fi
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Accessories
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% sunglasses %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@sunglasses
+ \path[draw=\duck@sunglasses,line width=1]
+ (0.93,1.62) -- (1.30,1.50);
+ \draw[line width=1,color=\duck@sunglasses]
+ (0.73,1.67) arc (65:92:0.20);
+ \path[fill=\duck@sunglasses, line width=1,rotate=-20]
+ (0.23,1.7675) circle (0.125);
+ \path[fill=\duck@sunglasses,line width=1,rotate=-20]
+ (-0.06,1.74) circle (0.1143);
+\fi
+%
+% glasses %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@glasses
+ \path[draw=\duck@glasses,line width=1]
+ (0.93,1.62) -- (1.30,1.50);
+ \draw[line width=1,color=\duck@glasses]
+ (0.73,1.67) arc (65:92:0.20);
+ \path[draw=\duck@glasses, line width=1,rotate=-20]
+ (0.23,1.7675) circle (0.125);
+ \path[draw=\duck@glasses,line width=1,rotate=-20]
+ (-0.06,1.74) circle (0.1143);
+\fi
+%
+% alien %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@alien
+ \draw[line width=2,color=\duck@alien] (1.00,1.83) -- (1.20,2.30);
+ \draw[line width=2,color=\duck@alien] (0.65,1.92) -- (0.60,2.35);
+ \path[fill=\duck@alien] (1.20,2.30) circle (0.07);
+ \path[fill=\duck@alien] (0.60,2.35) circle (0.07);
+\fi
+%
+% hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@hat
+ \path[fill=\duck@hat] (0.90,1.95) ellipse (0.46 and 0.0893);%
+ \path[fill=\duck@hat] (0.90,2.20) ellipse (0.25 and 0.0714);%
+ \path[fill=\duck@hat] (1.15,2.20) rectangle (0.65,1.95);%
+\fi
+%
+% unicorn %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@unicorn
+ \path[draw=\duck@unicorn,fill=\duck@body,line width=1,rotate=25]
+ (1.50,1.4375)--(1.60,1.8375)--(1.70,1.4375);%
+\fi
+%
+% icecream %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@icecream
+ \path[draw=\duck@cone,fill=\duck@cone!50!white,
+ line width=0.5,rotate=-20]
+ (0.35,1.20)--(0.50,0.60)--(0.75,1.20);
+ \path[draw=\duck@cone,fill=\duck@cone!50!white,
+ rotate=-20,line width=0.5]
+ (0.55,1.20) ellipse (0.20 and 0.09);
+ \path[fill=\duck@flavoura] (0.82,1.03) circle (0.12);
+ \path[fill=\duck@flavourb] (1.02,0.95) circle (0.12);
+ \path[fill=\duck@flavourc] (0.95,1.06) circle (0.12);
+\fi
+%
+% book %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@book
+ \path[fill=\duck@bookcolour,rotate=-20]
+ (0.40,1.20) rectangle (0.80,0.60);
+ \node[rotate=-20, color=white] at (0.88,0.70) {\duck@book};%
+\fi
+%
+% magic hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@magichat
+ \path[preaction={fill, \duck@magichat},rotate=-5,
+ pattern=fivepointed stars, pattern color=\duck@magicstars]
+ (0.36,1.95)--(0.86,2.95)--(1.20,1.85);
+\fi
+%
+% magic wand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifduck@magicwand
+ \draw[line width=2.5,color=black] (0.90,0.90) -- (0.60,0.40);
+ \draw[line width=2.5,color=white] (0.85,0.8167) -- (0.80,0.7333);
+\fi
+%
+}% from `\def\duck@draw{` at the very beginning
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 32237378723223
+% 23737232212232237822
+% 3282232232232232232<3723
+% 382232232232232232232232232
+% 72232322323323223223223223282
+% 7503223223522332322322322322372
+% 9hklke23232<252<2322322322322323
+% 9jzltrg22320fklke23232232232232232
+% 0lzp ye252qkzliuk92323223223223223
+% 2dkfaw233<fzl, .g623232232232232282
+% 3<<432325<eklits9232322322322322322
+% ++#@o$;<32329edw22322322322322322323
+% o++oo@oooo%::12<<<<123223223223223223 328
+% o++o+oo+o+oooooO@=*:<32232232232232232 323782282
+% +o+oo+o+oooooo%-:12232232232232232232 23237322322373
+% ++@+++o o+%-:<32232232232232232232232 32237822322322322322
+% +oOoo&><<32232232232232232232232232282822322322322322322372
+% 37232232232232232232232232232232232232232232232232232237<
+% 728282232232232232232232232232232232232232232232232232232232
+% 282232232232232232232232232232232232232232232232232232232232232
+% 282232232232232232232232232232232232232232232232232232232232232282
+% 7322322322322322322322322322322322322322322322322322322322322322322
+% 23223223223223223223223223223223223223223223223223223223223223223223
+%322322322322322322322322322322322322322322322322322322322322322322322
+%322322322322322322322322322322322322322322322322322322322322322322322
+%232232232232232232232232232232232232232232232232232232232232232232282
+%82232232232232232232232232232232232232232232232232232232232232232282
+%3223223223223223223223223223223223223223223223223223223223223223282
+%273223223223223223223223223223223223223223223223223223223223223723
+% 273223223223223223223223223223223223223223223223223223223223723
+% 228223223223223223223223223223223223223223223223223223228232
+% 2822322322322322322322322322322322322322322322322378232
+% 2378223223223223223223223223223223223223223782232
+% 322378282232232232232232232232282878223223
+% 223232232282828282322322323223
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 6a6a18741d2..3eecf1d08b1 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -605,7 +605,7 @@ my @TLP_working = qw(
tikz-bayesnet tikz-cd tikz-3dplot tikz-dependency tikz-dimline
tikz-feynman tikz-inet tikz-kalender
tikz-opm tikz-optics tikz-palattice tikz-qtree tikz-timing
- tikzcodeblocks tikzinclude tikzmark tikzorbital
+ tikzcodeblocks tikzducks tikzinclude tikzmark tikzorbital
tikzpagenodes tikzpeople tikzpfeile tikzposter tikzscale tikzsymbols
timetable timing-diagrams tinos tipa tipa-de tipfr
titlecaps titlefoot titlepages titlepic titleref titlesec titling
diff --git a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
index 9968b3d1523..63e6d5b8e61 100644
--- a/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pictures.tlpsrc
@@ -135,6 +135,7 @@ depend tikz-palattice
depend tikz-qtree
depend tikz-timing
depend tikzcodeblocks
+depend tikzducks
depend tikzinclude
depend tikzmark
depend tikzorbital
diff --git a/Master/tlpkg/tlpsrc/tikzducks.tlpsrc b/Master/tlpkg/tlpsrc/tikzducks.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/tikzducks.tlpsrc