diff options
author | Karl Berry <karl@freefriends.org> | 2020-06-30 21:36:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-06-30 21:36:12 +0000 |
commit | 19231c941e84eab338d693c69091cd0a16d45344 (patch) | |
tree | 48834c35b0a8fdf3182556ddf23507a4b4e3c6fe /Master | |
parent | 5dc98f26301535cf34bb616e5e29c973c6afe3ea (diff) |
tikzducks [now generic] (30jun20)
git-svn-id: svn://tug.org/texlive/trunk@55713 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
10 files changed, 217 insertions, 151 deletions
diff --git a/Master/texmf-dist/doc/latex/tikzducks/README.md b/Master/texmf-dist/doc/generic/tikzducks/README.md index 248ed49d42f..248ed49d42f 100644 --- a/Master/texmf-dist/doc/latex/tikzducks/README.md +++ b/Master/texmf-dist/doc/generic/tikzducks/README.md diff --git a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf Binary files differindex 296ff06bb1d..b0c3b26712b 100644 --- a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.pdf +++ b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf diff --git a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex index fbe6f48faef..283e60e7ab6 100644 --- a/Master/texmf-dist/doc/latex/tikzducks/tikzducks-doc.tex +++ b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex @@ -37,6 +37,7 @@ \newcommand{\tikzducks}{Ti\emph{k}Zducks\xspace} \newcommand{\miktex}{MiK\TeX\xspace} \newcommand{\texlive}{\TeX{}Live\xspace} +\newcommand{\ConTeXt}{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} % customisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \definecolor{duckblue}{RGB}{0,70,140} @@ -116,7 +117,7 @@ \url{https://github.com/samcarter/tikzducks}\\ \url{https://www.ctan.org/pkg/tikzducks} }{samcarter}} -\date{Version v1.4 \textendash{} 2020/04/22} +\date{Version v1.5 \textendash{} 2020/06/30} \begin{document} \maketitle @@ -155,7 +156,9 @@ Mihikma created the duck's beard, % Yudai Nakata helped with problems of \lstinline|\pdfrandomseed|, % -@marmot for his seemingly infinite knowledge of \TikZ which he shared with the world +@marmot for his seemingly infinite knowledge of \TikZ which he shared with the world, +% +@JairoAdelRio for contributing the \ConTeXt{} User Module % and last but not least my thanks go to Martin Schr\"oder for his feedback to the code review. @@ -164,7 +167,7 @@ The ducks mostly consist of basic geometric shapes drawn in \TikZ. Some of the m \subsection{Dependencies} -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. +The \tikzducks package loads \lstinline|expl3| and \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} @@ -266,6 +269,27 @@ For the \TeX{} purists, there is also a picture mode variant: \end{tcblisting} } +And thanks to @JairoAdelRio there is even a \ConTeXt{} User Module available (caveat: some colours might look different): + +\begin{tcolorbox}[title={\ConTeXt{} User Module}] +\begin{lstlisting}[morekeywords={usemodule,usecolors,starttext,stoptext,starttikzpicture,stoptikzpicture}] +\usemodule[tikzducks] +\usecolors[xwi] +\starttext + +\starttikzpicture +\duck[tophat,bowtie] +\stoptikzpicture + +\stoptext +\end{lstlisting} + +\tcblower +\begin{tikzpicture} +\duck[tophat,bowtie] +\end{tikzpicture} +\end{tcolorbox} + \subsection{Body parts} The various parts of the duck can also be coloured independently, i.e.\ \lstinline|body|, \lstinline|head| or \lstinline|bill|: diff --git a/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv new file mode 100644 index 00000000000..d9b24b5b057 --- /dev/null +++ b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv @@ -0,0 +1,56 @@ +% !TeX root = ./testing/context_duck.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The tikzducks package +% A package to bring rubber ducks into tikz +% Maintained by samcarter +% +% Project repository and bug tracker: +% https://github.com/samcarter/tikzducks +% +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Code for this ConTeXt User Module kindly provided by @JairoAdelRio https://github.com/samcarter/tikzducks/pull/25 +\writestatus{loading}{ConTeXt User Module / TikZDucks 2020/06/30 version v1.5 Draw rubber ducks in TikZ} +\setupcolors[state=start] +\usemodule[tikz] +\enabledirectives[colors.pgf] +\usetikzlibrary[patterns] % for the wizard hat +\usetikzlibrary[calc] +\definecolor[duck@overleafcol][x=48AC3C] +%\unprotect does not work here +\catcode`\@=11 +%So \scalebox and co. works in MkIV too +\define[2]\scalebox{\scale[factor={\ctxlua{context(3*#1)}}]{#2}} +\let\tiny\tfxx +\let\pdfrandomseed\randomseed +%Duck +\def\duck{\dosingleempty\doduck} +\def\doduck[#1]{% + \iffirstargument + \startscope% + \tikzset{/duck/.cd,#1}% + \duck@draw% + \stopscope% + \else + \startscope% + \tikzset{/duck/.cd}% + \duck@draw% + \stopscope% + \fi% +} +%Stripes +\def\stripes{\dosingleempty\dostripes} +\def\dostripes[#1]{ + \iffirstargument + \tikzset{/stripes/.cd,#1}\stripes@draw + \else + \tikzset{/stripes/.cd}\stripes@draw + \fi +} +\input tikzducks-generic.tex +\catcode`\@=12 +\endinput diff --git a/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex index aa15e471faf..8c5a996f57e 100644 --- a/Master/texmf-dist/tex/latex/tikzducks/tikzducks.sty +++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex @@ -12,20 +12,6 @@ % See http://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\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 - -\definecolor{duck@overleafcol}{RGB}{72,172,60} - -\newcommand*{\duck}[1][]{% - \begin{scope}% - \tikzset{/duck/.cd,#1}% - \duck@draw% - \end{scope}% -} \newif\ifduck@name \newif\ifduck@invisible @@ -520,7 +506,7 @@ } \def\duck@draw{ -%\begin{scope} +%\scope %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % minimal bounding box size @@ -599,9 +585,7 @@ \else % % body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\begin{pgfinterruptboundingbox} - \fill[\duck@body] \duckpathbody; -\end{pgfinterruptboundingbox} +\fill[\duck@body,overlay] \duckpathbody; % % head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifdefined\duck@head\else\let\duck@head=\duck@body\fi @@ -613,13 +597,8 @@ \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] - (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; - \end{pgfinterruptboundingbox} + \fill[\duck@bill!80!black,overlay] (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,overlay] (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; \else \ifduck@parrot \fill[\duck@bill!80!black] @@ -635,10 +614,10 @@ % Superhero mask %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % has to be behind the eyes \ifduck@mask - \begin{scope} + \scope \clip (0.90,1.50) ellipse[x radius=0.50, y radius=0.625]; \fill[\duck@mask,rotate=-15] (-0.1,1.59) rectangle (1.3,1.88); - \end{scope} + \endscope \fi% % % right eye %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -675,9 +654,7 @@ % % tshirt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@tshirt - \begin{pgfinterruptboundingbox} - \fill[\duck@tshirt] \duckpathtshirt; - \end{pgfinterruptboundingbox} + \fill[\duck@tshirt,overlay] \duckpathtshirt; \fi % % tie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -687,16 +664,12 @@ % % jacket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@jacket - \begin{pgfinterruptboundingbox} - \fill[\duck@jacket] \duckpathjacket; - \end{pgfinterruptboundingbox} + \fill[\duck@jacket,overlay] \duckpathjacket; \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} + \fill[\duck@aodai,overlay] (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; \fi % % lapel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -711,9 +684,7 @@ % % superhero cape %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@cape - \begin{pgfinterruptboundingbox} - \fill[\duck@cape] \duckpathcape; - \end{pgfinterruptboundingbox} + \fill[\duck@cape,overlay] \duckpathcape; \fi % % bowtie %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -754,57 +725,43 @@ % short hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@shorthair \path (0.1,0.1) rectangle (2.1,2.25); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathshorthair; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathshorthair; \fi % % long hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@longhair \path (0.1,0.1) rectangle (2.1,2.25); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathlonghair; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathlonghair; \fi % % crazy hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@crazyhair \path (0.1,0.1) rectangle (2.1,2.4); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathcrazyhair; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathcrazyhair; \fi % % receding hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@recedinghair \path (0.1,0.1) rectangle (2.1,2.18); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathrecedinghair; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathrecedinghair; \fi % % mohican hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@mohican \path (0.1,0.1) rectangle (2.1,2.24); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathmohican; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathmohican; \fi % % mullet hair %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@mullet \path (0.1,0.1) rectangle (2.1,2.17); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] \duckpathmullet; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] \duckpathmullet; \fi % % middle parting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@parting \path (0.1,0.1) rectangle (2.1,2.22); - \begin{pgfinterruptboundingbox} - \fill[\duck@hair] (1.4053,1.5403) .. controls (1.5524,2.2939) and (0.3739,2.5180) .. (0.4084,1.6117) .. controls (0.4248,1.8921) and (0.7860,1.9734) .. (0.7860,1.9734) .. controls (1.1125,1.5754) and (1.3375,1.4715) .. (1.4053,1.5403) -- cycle; - \end{pgfinterruptboundingbox} + \fill[\duck@hair,overlay] (1.4053,1.5403) .. controls (1.5524,2.2939) and (0.3739,2.5180) .. (0.4084,1.6117) .. controls (0.4248,1.8921) and (0.7860,1.9734) .. (0.7860,1.9734) .. controls (1.1125,1.5754) and (1.3375,1.4715) .. (1.4053,1.5403) -- cycle; \fi % % eye brow %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -927,9 +884,7 @@ % crown %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@crown \path (0.7,1.95) rectangle (1.4,2.45); - \begin{pgfinterruptboundingbox} - \fill[\duck@crown] \duckpathcrown; - \end{pgfinterruptboundingbox} + \fill[\duck@crown,overlay] \duckpathcrown; \fi % % Queen crown %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -945,17 +900,17 @@ % Bunny ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@bunny \path (0.55,1.9) rectangle (1.2,2.55); - \begin{pgfinterruptboundingbox} - \begin{scope} + \pgfinterruptboundingbox + \scope \clip[rotate=-5] (0.68,2.38) ellipse[x radius=0.3, y radius=0.4]; \fill[\duck@bunny,rotate=-5] (1.06,2.2) ellipse[x radius=0.3, y radius=0.4] (0.28,2.26) ellipse[x radius=0.3, y radius=0.4]; - \end{scope} + \endscope - \begin{scope} + \scope \clip[rotate=-5] (0.68,2.38) ellipse[x radius=0.25, y radius=0.35]; \fill[\duck@inear,rotate=-5] (1.06,2.2) ellipse[x radius=0.25, y radius=0.35] (0.28,2.26) ellipse[x radius=0.25, y radius=0.35]; - \end{scope} - \end{pgfinterruptboundingbox} + \endscope + \endpgfinterruptboundingbox \fi % % peaked cap %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -975,18 +930,14 @@ % darth vader %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@darthvader \path (0.1,0.1) rectangle (2.1,2.22); - \begin{pgfinterruptboundingbox} - \fill[\duck@darthvader] \duckpathdarthvader; - \end{pgfinterruptboundingbox} + \fill[\duck@darthvader,overlay] \duckpathdarthvader; \fi % % Harlequin duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@harlequin \path (0.19,1.85) rectangle (1.85,2.67); - \begin{pgfinterruptboundingbox} - \fill[\duck@harlequin] (0.6006,1.9719) .. controls (0.7432,1.8954) and (0.9320,1.8698) .. (0.9320,1.8698) -- (1.0404,2.3839) .. controls (0.9223,2.8873) and (0.1755,2.5634) .. (0.3019,2.2958) .. controls (0.5807,2.5024) and (0.7251,2.3376) .. (0.6006,1.9719) -- cycle; - \fill[\duck@niuqelrah] (1.2853,1.8902) .. controls (1.1177,1.8507) and (0.9278,1.8703) .. (0.9278,1.8703) -- (1.0404,2.3839) .. controls (1.3637,2.8347) and (1.9373,2.3532) .. (1.7049,2.1284) .. controls (1.5267,2.3895) and (1.3204,2.2666) .. (1.2853,1.8902) -- cycle; - \end{pgfinterruptboundingbox} + \fill[\duck@harlequin,overlay] (0.6006,1.9719) .. controls (0.7432,1.8954) and (0.9320,1.8698) .. (0.9320,1.8698) -- (1.0404,2.3839) .. controls (0.9223,2.8873) and (0.1755,2.5634) .. (0.3019,2.2958) .. controls (0.5807,2.5024) and (0.7251,2.3376) .. (0.6006,1.9719) -- cycle; + \fill[\duck@niuqelrah,overlay] (1.2853,1.8902) .. controls (1.1177,1.8507) and (0.9278,1.8703) .. (0.9278,1.8703) -- (1.0404,2.3839) .. controls (1.3637,2.8347) and (1.9373,2.3532) .. (1.7049,2.1284) .. controls (1.5267,2.3895) and (1.3204,2.2666) .. (1.2853,1.8902) -- cycle; \fill[\duck@harlequin] (1.7,2.07) circle[radius=0.1]; \fill[\duck@niuqelrah] (0.3,2.23) circle[radius=0.1]; \fi @@ -1024,9 +975,7 @@ % 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} + \fill[\duck@conicalhat,overlay] (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; \fi % % Sailor hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1188,21 +1137,21 @@ % football %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@football \fill[\duck@football] (1.2,0.33) circle[radius=0.32]; - \begin{scope} + \scope \clip (1.2,0.33) circle[radius=0.32]; \fill[black] (1.06,0.30) -- (1.01,0.17) -- (1.14,0.08) -- (1.26,0.14) -- (1.20,0.28) -- cycle (1.37,0.14) -- (1.46,0.27) -- (1.59,0.27) -- (1.41,0.04) -- cycle (1.28,0.38) -- (1.22,0.52) -- (1.33,0.61) -- (1.45,0.51) -- (1.43,0.37) -- cycle (0.87,0.44) -- (1.02,0.40) -- (1.10,0.53) -- (1.07,0.62) -- (0.94,0.57) -- cycle; - \end{scope} + \endscope \fi % % milkshake %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@milkshake \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05]; \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03]; - \begin{scope} + \scope \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); \fill[cyan!10!white, rotate=-10] (0.8,0.94) ellipse[x radius=0.18, y radius=0.4]; \fill[\duck@milkshake, rotate=-10] (0.8,0.94) ellipse[x radius=0.15, y radius=0.36]; - \end{scope} + \endscope \fill[white!85!yellow] (0.83,0.92) circle[radius=0.05] (0.88,0.9) circle[radius=0.05] (0.93,0.92) circle[radius=0.05] (0.99,0.91) circle[radius=0.05] (1.06,0.86) circle[radius=0.05] (1.13,0.87) circle[radius=0.05] (0.85,0.99) circle[radius=0.05] (0.9,0.98) circle[radius=0.07] (1.0,0.98) circle[radius=0.07] (1.1,0.95) circle[radius=0.07]; \fill[red!90!black] (1.0,1.1) circle[radius=0.05]; \fill[white!85!yellow] (0.94,1.05) circle[radius=0.05] (1.03,1.03) circle[radius=0.05]; @@ -1215,14 +1164,14 @@ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05]; \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03]; \fill[cyan!10!white, rotate=-10] (0.8,0.7) ellipse[x radius=0.03, y radius=0.2]; - \begin{scope} + \scope \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); \fill[cyan!10!white, rotate=-10] (0.8,1.1) ellipse[x radius=0.18, y radius=0.4]; - \end{scope} - \begin{scope} + \endscope + \scope \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87); \fill[\duck@wine, rotate=-10] (0.8,1.1) ellipse[x radius=0.15, y radius=0.36]; - \end{scope} + \endscope \fi % % prison duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1232,10 +1181,10 @@ \fill[\duck@prison, even odd rule] (0.72,-0.2) ellipse[x radius=0.10, y radius=0.07] (0.72,-0.2) ellipse[x radius=0.06, y radius=0.04]; \fill[\duck@prison,even odd rule,rotate=70] (0.4,-1.05) ellipse[x radius=0.1, y radius=0.07] (0.4,-1.05) ellipse[x radius=0.06, y radius=0.04] (0.2,-0.95) ellipse[x radius=0.1, y radius=0.07] (0.2,-0.95) ellipse[x radius=0.06, y radius=0.04] (0.22,-0.58) ellipse[x radius=0.1, y radius=0.07] (0.22,-0.58) ellipse[x radius=0.06, y radius=0.04]; \fill[\duck@prison,even odd rule,rotate=110](-0.33,-0.55) ellipse[x radius=0.1, y radius=0.07] (-0.33,-0.55) ellipse[x radius=0.06, y radius=0.04]; - \begin{scope} + \scope \clip[rotate=-12] (0.45,0.15) rectangle (0.63,0.25); \fill[\duck@prison,even odd rule,rotate=110](-0.07,-0.6) ellipse[x radius=0.1, y radius=0.07] (-0.07,-0.6) ellipse[x radius=0.06, y radius=0.04]; - \end{scope} + \endscope \fi % % torch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1251,10 +1200,10 @@ % % sheep %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@sheep - \begin{scope} + \scope \clip[rotate=-5] (1.2,1.7) ellipse[x radius=0.3, y radius=0.4]; \fill[\duck@bill,rotate=-5] (0.8,1.5) ellipse[x radius=0.3, y radius=0.4]; - \end{scope} + \endscope \fi % % basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1267,12 +1216,12 @@ % % easter basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@easter - \begin{scope} + \scope \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle; \fill[\duck@eggb, rotate=-5] (0.95,0.72) ellipse[x radius=0.09, y radius=0.13]; \fill[\duck@egga, rotate=10] (0.94,0.42) ellipse[x radius=0.09, y radius=0.13]; \fill[\duck@eggc, rotate=-30] (0.7,1.08) ellipse[x radius=0.09, y radius=0.13]; - \end{scope} + \endscope \fi% % % horse tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1282,17 +1231,15 @@ \fi% \ifduck@horsetail \path (0.1,0.1) rectangle (2.82,2.14); - \begin{pgfinterruptboundingbox} - \fill[\duck@horsetail] \duckpathhorsetail; - \end{pgfinterruptboundingbox} + \fill[\duck@horsetail,overlay] \duckpathhorsetail; \fi % % crozier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@crozier - \begin{scope} + \scope \clip [rotate=-20] (0.6,2.3) rectangle (1.1,1.999); \fill[even odd rule,\duck@crozier] (1.5,1.6) circle[radius=0.2] (1.5,1.6) circle[radius=0.1]; - \end{scope} + \endscope \fill[\duck@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0); \fi % @@ -1300,11 +1247,11 @@ \ifduck@stethoscope \fill[\duck@stethoscope,rounded corners=\scalingfactor*0.5,rotate=-18] (0.08,0.7) rectangle (0.13,1.24); \fill[\duck@stethoscope] (0.35,0.7) circle[radius=0.1]; - \begin{scope} + \scope \fill[\duck@stethoscope,rounded corners=\scalingfactor*0.5,rotate=-30] (0.53,1.3) rectangle (0.58,1.72); \clip[rotate=-30] (0.36,0.89) -- (0.36,1.36) -- (0.79,1.36) -- (0.79,0.89) -- (0.65,0.89) -- (0.65,0.96) -- (0.5,0.96) -- (0.5,0.89) -- cycle ; \fill [\duck@stethoscope,rounded corners=\scalingfactor*3,rotate=-30,even odd rule] (0.775,1.35) rectangle (0.375,0.9) [rounded corners=\scalingfactor*2] (0.725,1.3) rectangle (0.425,0.95); - \end{scope} + \endscope \fi % % snow duck %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1331,11 +1278,11 @@ % % Cheese %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@cheese - \begin{scope}[xshift=26,yshift=-2] + \scope[xshift=26,yshift=-2] \fill[\duck@cheese] (-0.3200,0.8058) -- (0.0608,0.7220) -- (0.0608,0.6366) -- (-0.3200,0.5410) -- (0.2143,0.4236) .. controls (0.3395,0.4810) and (0.4241,0.5627) .. (0.4117,0.6253) -- (0.4117,0.7634) .. controls (0.4261,0.8618) and (0.2607,0.8954) .. (0.1907,0.8962) -- cycle; \fill[\duck@cheese!35!white] (-0.3200,0.8057) -- (-0.3200,0.5410) -- (0.2143,0.4236) -- (0.2143,0.7381) -- cycle; \fill[\duck@cheese] (-0.23,0.71) circle[radius=0.04] (0.0,0.55) circle[radius=0.04] (-0.23,0.58) circle[radius=0.02] (-0.15,0.6) circle[radius=0.02] (-0.1,0.7) circle[radius=0.02] (0.1,0.65) circle[radius=0.02] (0,0.65) circle[radius=0.02] (0.1,0.5) circle[radius=0.02] (0.07,0.55) circle[radius=0.01] (0.12,0.6) circle[radius=0.01] (-0.08,0.54) circle[radius=0.01]; - \end{scope} + \endscope \fi % % shovel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1353,10 +1300,8 @@ % umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@umbrella \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; - \end{pgfinterruptboundingbox} + \fill[gray,overlay] (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,overlay] (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; \fi % % closed umbrella %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1397,7 +1342,7 @@ % %\draw (current bounding box.north west) rectangle (current bounding box.south east);% For debugging bounding boxes % -%\end{scope} +%\endscope }% from `\def\duck@draw{` at the very beginning %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1405,27 +1350,18 @@ % Random ducks % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ifdefined\pdfrandomseed % pdflatex -\else - \ifdefined\randomseed - \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex - \else - \let\pdfrandomseed\time % pre TL19 xelatex - \fi -\fi -\pgfmathsetseed{\number\pdfrandomseed} \pgfmathdeclarerandomlist{head}{{shorthair}{longhair}{crazyhair}{mohican}{mullet}{beard}{alien}{hat}{cap}{santa}{chef}{graduate}{beret}{magichat}{witch}{crown}{bunny}{peakedcap}{tophat}{queencrown}{kingcrown}{harlequin}{strawhat}{parting}} \pgfmathdeclarerandomlist{accessories}{{glasses}{sunglasses}{icecream}{book}{signpost}{magicwand}{cricket}{rollingpin}{lightsaber}{cake}{pizza}{hockey}{baguette}{football}{mask}{necklace}{milkshake}{wine}{prison}{cape}{torch}{crozier}{easter}{stethoscope}{neckerchief}{cheese}{shovel}{pickaxe}{crystalball}} -\newcommand{\shuffleducks}{% +\def\shuffleducks{% \pgfmathrandomitem{\head}{head}% \edef\randomhead{\head}% \pgfmathrandomitem{\accessories}{accessories}% \edef\randomaccessories{\accessories}% } -\newcommand{\randuck}{% +\def\randuck{% \shuffleducks% \duck[\randomhead, \randomaccessories]% } @@ -1440,26 +1376,26 @@ % body parts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\duckpathbody}{% +\def\duckpathbody{% (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 } -\newcommand{\duckpathgrumpybill}{% +\def\duckpathgrumpybill{% (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 } -\newcommand{\duckpathbill}{% +\def\duckpathbill{% (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 } -\newcommand{\duckpathwing}{% +\def\duckpathwing{% (1.47,0.56) .. controls (1.51,0.59) and (1.57,0.62) .. (1.60,0.66) .. controls (1.61,0.70) and (1.51,0.69) .. (1.47,0.69) .. controls (1.48,0.72) and (1.41,0.76) .. @@ -1472,14 +1408,14 @@ % clothing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\duckpathtshirt}{% +\def\duckpathtshirt{% (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 } -\newcommand{\duckpathjacket}{% +\def\duckpathjacket{% (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.880, 0.946) and ( 1.240,1.378) .. @@ -1488,7 +1424,7 @@ % hair styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\duckpathshorthair}{% +\def\duckpathshorthair{% (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) .. @@ -1496,7 +1432,7 @@ (1.3947,1.4175) -- cycle } -\newcommand{\duckpathlonghair}{% +\def\duckpathlonghair{% (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) .. @@ -1512,7 +1448,7 @@ (1.4508,0.7565) -- cycle } -\newcommand{\duckpathcrazyhair}{% +\def\duckpathcrazyhair{% (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) .. @@ -1531,7 +1467,7 @@ (0.1977,1.9023) -- cycle } -\newcommand{\duckpathrecedinghair}{% +\def\duckpathrecedinghair{% (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) .. @@ -1539,14 +1475,14 @@ (1.3385,1.4841) -- cycle } -\newcommand{\duckpathmohican}{% +\def\duckpathmohican{% (0.7632,1.7935) .. controls (0.9223,2.3084) and (1.3870,1.8580) .. (1.3920,1.5854) .. controls (1.4233,2.1466) and (0.6812,2.5808) .. (0.6725,1.8166) .. controls (0.6725,1.8166) and (0.7615,1.7926) .. (0.7632,1.7935) -- cycle } -\newcommand{\duckpathmullet}{% +\def\duckpathmullet{% (1.3723,1.2684) .. controls (1.3723,1.2684) and (1.5129,1.5571) .. (1.4435,1.7815) .. controls (1.2652,2.3572) and (0.3342,2.2633) .. (0.4106,1.5424) .. controls (0.4204,1.6825) and (0.5692,1.9195) .. @@ -1558,7 +1494,7 @@ % Acessoires %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\duckpathqueencrown}{% +\def\duckpathqueencrown{% (0.7370,2.0732) .. controls (0.6966,2.2091) and (0.6769,2.3503) .. (0.6354,2.4859) .. controls (0.6149,2.5164) and (0.5958,2.5732) .. (0.6498,2.5808) .. controls (0.6973,2.5907) and (0.7091,2.5350) .. @@ -1587,7 +1523,7 @@ (0.7370,2.0732) -- cycle } -\newcommand{\duckpathkingcrown}{% +\def\duckpathkingcrown{% (0.6572,2.0396) .. controls (0.6637,2.0838) and (0.6716,2.1289) .. (0.6684,2.1735) .. controls (0.6481,2.2496) and (0.5923,2.3131) .. (0.5818,2.3921) .. controls (0.5738,2.4607) and (0.6167,2.5343) .. @@ -1607,7 +1543,7 @@ (0.6572,2.0396) -- cycle } -\newcommand{\duckpathdarthvader}{% +\def\duckpathdarthvader{% (0.4264,1.9092) .. controls (0.4347,1.9248) and (0.4612,1.9186) .. (0.4969,1.9783) .. controls (0.5499,2.0670) and (0.7559,2.2377) .. (0.9889,2.2057) .. controls (1.2691,2.1668) and (1.4075,1.8829) .. @@ -1621,7 +1557,7 @@ (0.4264,1.9092) -- cycle } -\newcommand{\duckpathhorsetail}{% +\def\duckpathhorsetail{% (1.7248,1.3553) .. controls (2.0530,1.3369) and (2.1427,1.1604) .. (2.2915,0.9970) .. controls (2.4759,0.7946) and (2.9531,0.8890) .. (2.7668,0.9003) .. controls (2.4670,0.9184) and (2.5158,1.1488) .. @@ -1629,7 +1565,7 @@ (1.7248,1.3553) -- cycle } -\newcommand{\duckpathcape}{% +\def\duckpathcape{% (0.225,0.966) .. controls (1.314,0.961) and (2.070,0.650) .. (2.042,1.245) .. controls (1.863,1.164) and (1.844,1.173) .. (1.792,1.340) .. controls (1.635,1.235) and (1.620,1.268) .. @@ -1638,7 +1574,7 @@ (0.235,0.966) -- cycle } -\newcommand{\duckpathcrown}{% +\def\duckpathcrown{% (0.7365,2.0616) .. controls (0.7365,2.0616) and (0.7771,2.1763) .. (0.6959,2.4650) -- (0.8895,2.2378) -- (1.0391,2.3943) -- (1.1260,2.1961) -- @@ -1647,7 +1583,7 @@ (0.7365,2.0616) -- cycle } -\newcommand{\duckpathtorch}{% +\def\duckpathtorch{% (1.4338,1.0258) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.7481) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.0243) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. @@ -1655,7 +1591,7 @@ (1.4338,1.0258) -- cycle } -\newcommand{\duckpathoverleaf}{% +\def\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 } @@ -1665,7 +1601,7 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\picduck}{% +\def\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) @@ -1740,10 +1676,6 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand*{\stripes}[1][]{\tikzset{% - /stripes/.cd,#1}\stripes@draw% -} - \tikzset{ /stripes/.cd, color/.code = \def\stripes@color{#1}, @@ -1767,15 +1699,15 @@ \def\stripes@draw{% \path (0.1,0.1) rectangle (2.1,1.45); - \begin{pgfinterruptboundingbox} - \begin{scope} + \pgfinterruptboundingbox + \scope \clip \duckpathjacket; \foreach \shifta in {0,\stripes@distance,...,2.4}{% \fill[\stripes@color,rotate around={\stripes@rotate:(1.2,0.9)}] ($(\stripes@initialx,\stripes@initialy)+(\shifta,0)$) rectangle ($(\stripes@initialx,\stripes@initialy)+(\shifta,0)+(\stripes@width,\stripes@height)$); } - \end{scope} - \end{pgfinterruptboundingbox} + \endscope + \endpgfinterruptboundingbox \node at (wing) {\stripes@emblem }; } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty new file mode 100644 index 00000000000..b377387c2da --- /dev/null +++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty @@ -0,0 +1,50 @@ +% !TeX root = ./testing/test.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The tikzducks package +% A package to bring rubber ducks into tikz +% Maintained by samcarter +% +% Project repository and bug tracker: +% https://github.com/samcarter/tikzducks +% +% Released under the LaTeX Project Public License v1.3c or later +% See http://www.latex-project.org/lppl.txt +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesPackage{tikzducks}[2020/06/30 version v1.5 Draw rubber ducks in TikZ] + +\RequirePackage{expl3} +\RequirePackage{tikz} +\usetikzlibrary{patterns} % for the wizard hat +\usetikzlibrary{calc} % for the sports jerseys + +\definecolor{duck@overleafcol}{RGB}{72,172,60} + +\newcommand*{\duck}[1][]{% + \begin{scope}% + \tikzset{/duck/.cd,#1}% + \duck@draw% + \end{scope}% +} + +\ExplSyntaxOn +\ifdefined\sys_rand_seed: +\pgfmathsetseed {\sys_rand_seed:} +\else +\ifdefined\pdfrandomseed % pdflatex +\else +\ifdefined\randomseed +\let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex +\else +\let\pdfrandomseed\time % pre TL19 xelatex +\fi +\fi +\pgfmathsetseed{\number\pdfrandomseed} +\fi +\ExplSyntaxOff +\newcommand*{\stripes}[1][]{\tikzset{% + /stripes/.cd,#1}\stripes@draw% +} + +\input tikzducks-generic diff --git a/Master/texmf-dist/tex/latex/tikzducks/tikzlibraryducks.code.tex b/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex index 4c90b1f0e63..4c90b1f0e63 100644 --- a/Master/texmf-dist/tex/latex/tikzducks/tikzlibraryducks.code.tex +++ b/Master/texmf-dist/tex/generic/tikzducks/tikzlibraryducks.code.tex diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 549f5957f3d..05019619c36 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1393,6 +1393,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`); 'xkeyval', "&MAKExkeyval", 'xlop', "&MAKEflatten", 'xltabular', "&MAKEflatten", + 'xml2pmx', "die 'skipping, nontrivial compilation needed'", 'xmltex', "&MAKExmltex", 'xor', "die 'skipping, will be in xpackages when ready (Morten says)'", 'xpackages', "die 'skipping, now l3packages, etc.'", @@ -1722,6 +1723,7 @@ $standarddest = "texmf-dist"; 'texdraw', 'generic', 'texsis', 'texsis', 'textmerg', 'generic', + 'tikzducks', 'generic', 'tugboat-plain', 'plain', 'ulem', 'generic', 'uptex-base', 'uptex', @@ -2132,6 +2134,7 @@ $standardtex 'tikz-qtree', '(pgf|tikz-)(subpic|q?tree(-compat)?)\.(tex|sty)', 'tikz-sfc', '\.code\.tex$', 'tikz-trackschematic', '\.code\.tex$', + 'tikzducks', '-generic.tex$|\.mkiv$|' . $standardtex, 'tikzposter', 'tikzposter[^-].*\.tex|' . $standardtex, # tipa: we want to install all .sty except tipaman|boxchar|codelist. # i can't explain why ^(?!...), the "zero-width negative look-ahead @@ -2435,6 +2438,7 @@ $standardtex 'texsis', 'otherformats', 'textmerg', 'generic', 'textpath', 'metapost', + 'tikzducks', 'generic', 'timing', 'fonts', 'trajan', 'fonts', 'tugboat-plain', 'plain', diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index c1d87d741e6..644239480c9 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -180,7 +180,6 @@ depend clefval depend cleveref depend clipboard depend clock -depend cloze depend clrdblpg depend clrstrip depend cmdstring diff --git a/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc b/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc index 6d34ac3da46..ab2cb569d28 100644 --- a/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc @@ -11,6 +11,7 @@ depend barracuda depend bezierplot depend checkcites depend chickenize +depend cloze depend combofont depend cstypo depend ctablestack |