80

We have tons of nice TikZ-drawn pictures on this site. Among them some great pictures of animals like cfr's cat code. But they are distributed all over the site.

As we definitely miss a place to collect them, this post asks about nice examples of animals/pets drawn with TikZ. Especially those pictures about ducks are welcome.

For all of the duck friends, quack!

Please do not close this question too early (I know it's a bit out-of-concept here, but there are other well-known showcases).

TeXnician
  • 33,589

23 Answers23

67

enter image description here

\documentclass[tikz,border=5]{standalone}
\usepackage[prefix=]{xcolor-material}
\pgfmathdeclarerandomlist{material}{%
{Red}{Blue}{Green}}
\tikzset{%
  half clip/.code={
    \clip (0, -256) rectangle (256, 256);
  },
  color/.code=\colorlet{fill color}{#1},
  color alias/.code args={#1 as #2}{\colorlet{#1}{#2}},
  colors alias/.style={color alias/.list/.expanded={#1}},
  execute/.code={#1},
  on left/.style={.. on left/.style={#1}},
  on right/.style={.. on right/.style={#1}},
  split/.style args={#1 and #2}{
    on left ={color alias=fill color as #1},
    on right={color alias=fill color as #2, half clip}
  }
}
\newcommand\reflect[2][]{%
\begin{scope}[#1]\foreach \side in {-1, 1}{\begin{scope}
\ifnum\side=-1 \tikzset{.. on left/.try}\else\tikzset{.. on right/.try}\fi
\begin{scope}[xscale=\side]#2\end{scope}
\end{scope}}\end{scope}}

\tikzset{%
cat/.pic={
\tikzset{x=3cm/5,y=3cm/5,shift={(0,-1/3)}}
\useasboundingbox (-1,-1) (1,2);
\fill [BlueGrey900] (0,-2)
  .. controls ++(180:3) and ++(0:5/4) .. (-2,0)
  arc (270:90:1/5)
  .. controls ++(0:2) and ++(180:11/4) .. (0,-2+2/5);
\foreach \i in {-1,1}
  \scoped[shift={(1/2*\i,9/4)}, rotate=45*\i]{
    \clip [overlay] (0, 5/9) ellipse [radius=8/9];
    \clip [overlay] (0,-5/9) ellipse [radius=8/9];
    \fill [BlueGrey900] ellipse [radius=1];
    \clip [overlay] (0, 7/9) ellipse [radius=10/11];
    \clip [overlay] (0,-7/9) ellipse [radius=10/11];
    \fill [Purple100] ellipse [radius=1];
  };
\fill [BlueGrey900] ellipse [x radius=3/4, y radius=2];
\fill [BlueGrey100] ellipse [x radius=1/3, y radius=1];
\fill [BlueGrey900]
  (0,15/8) ellipse [x radius=1, y radius=5/6]
  (0, 8/6) ellipse [x radius=1/2, y radius=1/2]
  {[shift={(-1/2,-2)}, rotate= 10]  ellipse [x radius=1/3, y radius=5/4]}
  {[shift={( 1/2,-2)}, rotate=-10] ellipse [x radius=1/3, y radius=5/4]};
\fill [BlueGrey500]
  (-1/9,11/8) ellipse [x radius=1/5, y radius=1/5]
  ( 1/9,11/8) ellipse [x radius=1/5, y radius=1/5];
\fill [Purple100]
  (0,12/8)     ellipse [x radius=1/10, y radius=1/5]
  (0,12/8+1/9) ellipse [x radius=1/5 , y radius=1/10];
\foreach \i in {-1,1}
  \scoped[shift={(1/2*\i,2)}, rotate=35*\i]{
    \clip [overlay] (0, 1/7) ellipse [radius=2/7];
    \clip [overlay] (0,-1/7) ellipse [radius=2/7];
    \fill [Yellow50] ellipse [radius=1];
  };
\scoped{
  \clip (-1,-2) rectangle ++(2,1);
  \fill [BlueGrey900] (0,-2) ellipse [radius=1/2];
  \fill [Grey100]
    (-1/2,-2) ellipse [x radius=1/3, y radius=1/4]
    ( 1/2,-2) ellipse [x radius=1/3, y radius=1/4];
};
\foreach \i in {-1,1}
  \foreach \j in {-1,0,1}
    \fill [Grey100, shift={(0,11/8)}, xscale=\i, rotate=\j*15,
      shift=(0:1/2)]
      ellipse [x radius=1/3, y radius=1/64];
},
duck/.pic={
\tikzset{x=3cm/100,y=3cm/100, shift={(-50,-50)}}
\fill [Amber800] (58,28)
  .. controls (56,28) and (55,27) .. (55,26)
  .. controls (55,25) and (56,16) .. (55,15)
  .. controls (54,14) and (54,12) .. (55,11)
  .. controls (56,10) and (66, 7) .. (68, 7)
  .. controls (70, 7) and (75,15) .. (73,15)
  .. controls (71,15) and (62,13) .. (60,15)
  .. controls (58,17) and (60,25) .. (60,26)
  .. controls (60,27) and (59,28) .. (58,28)
  -- cycle;
\fill [BlueGrey900] (1,57)
  .. controls ( 0,51) and ( 4,44) .. (10,42)
  .. controls (16,40) and (23,40) .. (24,47)
  -- cycle;
\begin{scope}
\clip [preaction={fill=LightGreen}] (74,96)
  .. controls (66,96) and (62,92) .. (60,88)
  .. controls (58,84) and (58,76) .. (61,68)
  -- (76,68)
  .. controls (72,72) and (74,74) .. (75,75)
  .. controls (82,75) and (88,76) .. (88,84)
  .. controls (88,92) and (82,96) .. (74,96)
  -- cycle;
\fill [Grey100] (57,68) rectangle +(20,4);
\end{scope}
\fill [BlueGrey50]
  (14,48)
  .. controls (14,34) and (32,21) .. (53,21)
  .. controls (55,21) and (57,21) .. (61,22)
  .. controls (81,27) and (92,36) .. (92,48)
  -- cycle;
\fill [Brown500] (61,68)
  .. controls (65,52) and (68,40) .. (61,22)
  .. controls (84,26) and (92,36) .. (92,48)
  .. controls (92,60) and (82,65) .. (76,68)
  -- cycle;
\fill [BlueGrey400] (56,64)
  .. controls (45,64) and (40,60) .. (32,56)
  .. controls (24,52) and ( 8,52) .. ( 8,48)
  .. controls (8, 44) and (24,36) .. (40,36)
  .. controls (56,36) and (68,44) .. (72,48)
  .. controls (76,52) and (72,56) .. (68,60)
  .. controls (64,64) and (60,64) .. (56,64)
  -- cycle;
\fill [Amber500] (88,84)
  .. controls (86,84) and ( 87,82) .. (86,81)
  .. controls (85,80) and ( 80,79) .. (83,76)
  .. controls (86,73) and ( 95,71) .. (97,71)
  .. controls (99,71) and (100,72) .. (99,73)
  .. controls (98,74) and ( 92,77) .. (91,80)
  .. controls (90,83) and ( 90,84) .. (88,84)
  -- cycle;
\fill (78,87)
  .. controls (77,85) and (80,82) .. (83,84)
  .. controls (83,87) and (80,88) .. (78,87)
  -- cycle;
\fill [Amber700] (50,25)
  .. controls (48,25) and (47,24) .. (47,23)
  .. controls (47,22) and (48,13) .. (47,12)
  .. controls (46,11) and (46, 9) .. (47, 8)
  .. controls (48, 7) and (58, 4) .. (60, 4)
  .. controls (62, 4) and (67,12) .. (65,12)
  .. controls (63,12) and (54,10) .. (52,12)
  .. controls (50,14) and (52,22) .. (52,23)
  .. controls (52,24) and (51,25) .. (50,25)
  -- cycle;},
horse/.pic={
\begin{scope}[x=3cm/448,y=3cm/448]
\fill [Brown200]
  (-128,128)
  to [bend left]  ++(-16,-128) to [bend right] ++( 32,  8)
  to [bend left]  ++(-48, -96) to [bend right] ++( 56,   8)
  to [bend left]  ++(-64, -96) to [bend right]   (  0, -96)
  (128,128)
  to [bend left] ++(32,-128) to [bend right] ++(-40,40)
  to [bend left] ++( 0, -96) to [bend right] ++(-64,96);
\reflect[
  on left ={color alias=ears as Brown600},
  on right={color alias=ears as Brown700},
  color 0/.style={ears}, color 1/.style={BlueGrey900}
]{
  \foreach \j in {0, 1}
  \fill [color \j]
  [shift={(96,120)}, rotate=45, scale=9/10-\j/3, xscale=9/10]
  (-72,0)
  .. controls ++( 90: 8) and ++(180:16) .. ( 0, 48)
  .. controls ++(  0:16) and ++( 90:12) .. (88,  0)
  .. controls ++(270:12) and ++(  0: 8) .. ( 0,-48)
  .. controls ++(180: 8) and ++(270: 8) .. cycle;
}
\reflect[split=Brown600 and Brown700]{%
  \fill [fill color] (-56,-160)
  .. controls ++( 90:176) and ++(270: 96) .. (-112,  64)
  arc (180:0: 112 and 112)
  .. controls ++(270: 96) and ++( 90:176) .. (  56,-160) -- cycle;
}
\reflect[split=Grey50 and Grey200]{%
  \fill [fill color] (0,-48)
    .. controls ++(135:48) and ++(225:48) .. (0,168)
    .. controls ++(315:48) and ++( 45:48) .. cycle;
}

\reflect[split=Brown50 and Brown100]{%
  \fill [fill color] (0,-164) ellipse [x radius=56, y radius=56];
}
\reflect[split=Brown200 and Brown300]{%
  \fill [fill color] (0,-164) ellipse [x radius=48, y radius=40];
}
\reflect[split=Brown50 and Brown100]{%
  \fill [fill color] (0,-144) ellipse [x radius=64, y radius=48];
}
\reflect[split=Brown50 and Brown100]{
  \fill [fill color]  (36, -128) ellipse [x radius=24, y radius=40];
  \fill [BlueGrey900] (36, -128) ellipse [x radius=12, y radius=24];
}
\fill [BlueGrey900]
  (-72, 64) ellipse [radius=20]
  ( 72, 64) ellipse [radius=20];
\fill [Brown200]
  (0,192)
  .. controls ++(180:64) and ++( 90:64) .. (-128, 64)
  .. controls ++( 60:16) and ++(180:16) .. ( -64,128)
   to [bend left]  (-80,88)
   to [bend right] (  0, 128)
   to [bend left]  (-16,  64)
   .. controls ++( 0:64) and ++(270:32) .. (96,144)
   .. controls ++(90:32) and ++(  0:64) .. cycle;
\end{scope}},
chimpanzee/.pic={
\tikzset{x=3cm/3.5,y=3cm/3.5, shift={(0,1/4)}}
\fill [BlueGrey700] (165:5/4 and 1) ellipse [radius=1/2];
\fill [Pink100]     (165:5/4 and 1) ellipse [radius=1/3];
\fill [BlueGrey700]
  (0,-1/2) ellipse [x radius=1, y radius=4/3]
  (0,   0) ellipse [x radius=4/3, y radius=1];
\scoped{
  \clip(0,-2) rectangle(9/5,1);
  \fill [BlueGrey900] (15:5/4 and 1) ellipse [radius=1/2];
  \fill [Pink200]     (15:5/4 and 1) ellipse [radius=1/3];
  \fill [BlueGrey900]
    (0,-1/2) ellipse [x radius=1, y radius=4/3]
    (0,   0) ellipse [x radius=4/3, y radius=1];
}
\fill [Pink100]            (  0,-2/3) ellipse [x radius=5/6, y radius=  1];
\fill [Pink100, xscale=-1] (1/2,   0) ellipse [x radius=3/5, y radius=2/3];
\fill [Pink100, xscale= 1] (1/2,   0) ellipse [x radius=3/5, y radius=2/3];
\scoped{
  \clip(0,-2) rectangle(9/5,1);
  \fill [Pink200]            (  0,-2/3) ellipse [x radius=5/6, y radius=  1];
  \fill [Pink200, xscale=-1] (1/2,   0) ellipse [x radius=3/5, y radius=2/3];
  \fill [Pink200, xscale= 1] (1/2,   0) ellipse [x radius=3/5, y radius=2/3];
}
\foreach \i in {-1,1}
  \fill [BlueGrey900, xscale=\i] (1/2,0) ellipse [radius=1/4];
\fill [Pink300]
  (-1/7,-2/3) ellipse [radius=1/9]
  ( 1/7,-2/3) ellipse [radius=1/9];
\fill [Pink300]
  (-1/2,-1) arc (180:360:1/2 and 1/8) arc (360:180:1/2 and 1/4);
},
shark/.pic={
\tikzset{x=3cm/22,y=3cm/22,shift={(-8,-11)}}
\fill [BlueGrey200]
  (2,16.75) -- ++(0.5,-1) -- ++(0.5,1) -- cycle
  (3,16.25) -- ++(0.5,-1) -- ++(0.5,1) -- cycle
  (1,17)    -- ++(0.5,-1) -- ++(0.5,1) -- cycle
  (2,15.5)  -- ++(-.5,-1) -- ++(1,0) -- cycle
  (3,15)    -- ++(-.5,-1) -- ++(1,0) -- cycle;
\fill [BlueGrey700] (6,12)
  .. controls (5,11) and (5,8)  .. (6,7)
  .. controls (7,8)  and (7,9)  .. (8,10)
  .. controls (8,11) and (7,12) .. (6,12)-- cycle;
\fill [BlueGrey500] (0,20)
  .. controls (0,19)  and (0,18)  .. (1,17)
  .. controls (3,16)  and (4,16)  .. (4,15)
  .. controls (4,14)  and (2,15)  .. (1,15)
  .. controls (2,13)  and (3,12)  .. (5,10)
  .. controls (7,8)   and (11,6)  .. (14,5)
  .. controls (14,3)  and (14,1)  .. (15,0)
  .. controls (15,2)  and (15,3)  .. (16,4)
  .. controls (17,5)  and (18,6)  .. (20,6)
  .. controls (19,7)  and (16,7)  .. (15,6)
  .. controls (14,10) and (11,15) .. (9,17)
  .. controls (7,19)  and (3,20)  .. (0,20) -- cycle;
\fill [BlueGrey100] (0,20)
  .. controls (0,19) and (0,18) .. (1,17)
  .. controls (3,16) and (4,16) .. (4,15)
  .. controls (4,14) and (2,15) .. (1,15)
  .. controls (2,13) and (3,12) .. (5,10)
  .. controls (7,8)  and (11,6) .. (14,5)
  .. controls (13,8) and (7,8)  .. (6,12)
  .. controls (5,16) and (2,19) .. (0,20) -- cycle;
\fill [BlueGrey500] (3,13)
  .. controls (2,12) and (2,9)  .. (3,8)
  .. controls (4,9)  and (4,10) .. (5,11)
  .. controls (5,12) and (4,13) .. (3,13) -- cycle;
\fill [BlueGrey500] (9,18)
  .. controls (8,18)  and (7.5,17.5) .. (7,17)
  .. controls (7,16)  and (9,14)     .. (10,14)
  .. controls (10,15) and (11,17)    .. (12,17)
  .. controls (11,18) and (10,18)    .. (9,18) -- cycle;
\fill [BlueGrey800] (6,17.5) circle [radius=0.5];
},
squid/.pic={
\begin{scope}[x=3cm/480,y=3cm/480]
\useasboundingbox (-256, -256) (256, 256);
\reflect[split={DeepOrange500 and DeepOrange700}]{
  \fill [fill color] (0,96) ellipse [x radius=96, y radius=128];
  \fill [fill color]
    (72,-16)
    .. controls ++(270:72) and ++(270:40) .. ++(108,  -16)
    .. controls ++( 90:64) and ++(270:64) .. ++(-40,128)
    .. controls ++( 90:32) and ++(270:32) .. ++( 40, 96)
    arc (180:0:4)
    .. controls ++(270: 32) and ++( 90: 32) .. ++(-24, -96)
    .. controls ++(270: 64) and ++( 90: 64) .. ++( 56,-128)
    .. controls ++(270:128) and ++(270:160) ..   (  0, -16);
  \fill [fill color]  (64, 16) circle [radius=48];
  \fill [Grey50]      (64, 16) circle [radius=32];
  \fill [BlueGrey900] (64, 16) circle [radius=12];
  \fill [fill color]  (-4, -20)
    .. controls ++(270:256) and ++(225: 64) .. (128,-192)
    arc (315:495:4)
    .. controls ++(210: 64) and ++(270:192) .. (48, -40);
}
\fill [DeepOrange900]
  (-40,-40) arc (180:360:40 and 16) arc (360:180:40 and 40);
\fill [DeepOrange300]
  (-32,108) circle [radius=16] (-40,160) circle [radius=12]
  (-20,196) circle [radius= 8]  ( 40,160) circle [radius=16]
  ( 64,120) circle [radius= 8]  ( 40,100) circle [radius=12];
\end{scope}
},
owl/.pic={
\begin{scope}[x=3cm/512,y=3cm/512]
\foreach \i in {-3,...,3}
  \fill [Brown900, shift={(0,128)}, rotate=-\i*13]
    (0,0) arc (90:450:48 and 144);
\foreach \i in {-1,...,1}
  \fill [Brown900, shift={(0,32)}, rotate=-\i*10]
    (0,0) arc (90:450:32 and 128);
\reflect[split={Brown700 and Brown800}]{
  \fill [fill color] (0,224)
  .. controls ++(180:96) and ++( 90:96) .. (-112,32)
  .. controls ++(270:96) and ++(180: 0) .. (0,-148)
  .. controls ++(  0: 0) and ++(270:96) .. ( 112,32)
  .. controls ++( 90:96) and ++(  0:96) .. cycle;
}
\reflect[
  on left ={colors alias={
    outer eye as Brown600, eyebrow as Brown800, chest as Brown100}},
  on right={colors alias={
    outer eye as Brown700, eyebrow as Brown900, chest as Brown200},
    half clip}]{
  \fill [outer eye]   (64, 128) circle [radius=80];
  \fill [Grey100]     (64, 128) circle [radius=40];
  \fill [BlueGrey900] (64, 128) circle [radius=20];
  \fill [eyebrow]  (0,112)
    .. controls ++( 90:128) and ++(270:64) .. (160,240)
    .. controls ++(270:112) and ++( 90:64) .. cycle;
  \fill [chest] 
    (0,-140)
    .. controls ++(135:32) and ++(270:32) .. (-64,-40)
    arc (180:0:64)
    .. controls ++(270:32) and ++( 45:32) .. cycle;
}
\reflect[
  on left ={colors alias={
    beak as Amber500, perch as BlueGrey800, foot as Brown600, 
    talon as Amber500}},
  on right={colors alias={
    beak as Amber700, perch as BlueGrey900, foot as Brown700, 
      talon as Amber700}, half clip}]{
  \fill [beak] (0,28)
    .. controls ++(135:32) and ++(270:16) .. (-32,64)
    arc (180:0:32)
    .. controls ++(270:16) and ++(45:32) .. cycle;
  \fill [perch]
    (-192,-128) arc (90:270:12) -- ++(384,0) arc (270:450:12) -- cycle;
  \tikzset{shift={(0, -128)}}
  \fill [foot]
    (3, 0) arc (180:0:36 and 24) -- cycle;
  \foreach \j in {-1,0,1}
    \scoped[shift={(40+20*\j,0)}]\fill [talon]
       (10,0) arc (0:180:10) -- (0,-16) -- cycle;
}
\end{scope}},
cow/.pic={
\begin{scope}[x=3cm/480,y=3cm/480]
\reflect[]{
\tikzset{shift={(32,140)}, rotate=-45}
  \fill [BlueGrey100] (0,0) arc (0:90:32 and 96) arc (90:0:96);
  \fill [BlueGrey200] (32,0) arc (0:90:64 and 96) arc (90:0:96);
}
\foreach \i in {-1, 1}\foreach \j in {0, 1}
\fill \ifnum\j=0 \ifnum \i=-1 [BlueGrey700] \else [BlueGrey800] \fi\else [BlueGrey900] \fi
  [xscale=\i, shift={(128,88)}, rotate=10, scale=1-\j/3]
  (-72,0)
  .. controls ++( 90: 8) and ++(180:16) .. ( 0, 48)
  .. controls ++(  0:16) and ++( 90:12) .. (88,  0)
  .. controls ++(270:12) and ++(  0: 8) .. ( 0,-48)
  .. controls ++(180: 8) and ++(270: 8) .. cycle;
\reflect[split={BlueGrey700 and BlueGrey800}]{%
  \fill [fill color] (-64,-160)
  .. controls ++( 90:144) and ++(270: 64) .. (-120,  64)
  arc (180:0: 120 and 112)
  .. controls ++(270: 64) and ++( 90:144) .. (  64,-160) -- cycle;
}
\reflect[split=Grey50 and Grey200]{%
  \fill [fill color](-64,-160)
    .. controls ++( 75:144) and ++(270: 64) .. (-16,  64)
    .. controls ++( 90: 32) and ++(180: 72) .. (  0, 168)
    .. controls ++(  0: 72) and ++( 90: 32) .. ( 16,  64)
    .. controls ++(270: 64) and ++(105:144) .. ( 64,-160) -- cycle;
}
\reflect[split=Pink100 and Pink200]{
  \fill [fill color] (0,-160) ellipse [x radius=64, y radius=56];
}
\fill [Pink300] (0, -160) ellipse [x radius=48, y radius=40];
\reflect[split=Pink100 and Pink200]{
  \fill [fill color] (0,-128) ellipse [x radius=80, y radius=56];
}
\fill [Pink300]
  (-32, -128) ellipse [radius=16]
  ( 32, -128) ellipse [radius=16];
\fill [BlueGrey900]
  (-64, 64) ellipse [radius=24]
  ( 64, 64) ellipse [radius=24];
\end{scope}
},
bee/.pic={
\begin{scope}[x=3cm/480,y=3cm/480, rotate=-45, shift=(270:48)]
\reflect[
  on left= {colors alias={body as BlueGrey800, stripes as Amber500}},
  on right={colors alias={body as BlueGrey900, stripes as Amber700}, half clip},
  lower wing/.style={fill=BlueGrey100}, upper wing/.style={fill=BlueGrey50}]{
  \fill [body] (0,-160)
    .. controls ++(120:64) and ++(270:64) .. (-88, -16)
    .. controls ++( 90:64) and ++(225:64) .. (  0, 128)
    .. controls ++(315:64) and ++( 90:64) .. ( 88, -16)
    .. controls ++(270:64) and ++( 60:64) .. cycle;
  \fill [body] (0,128) ellipse [x radius=80, y radius=56];
  \fill [body]
    (32,160) arc (180:90:64) -- ++(6,-6) coordinate [midway] (@)
    arc (90:180:64) -- cycle;
  \fill [body] (@) circle [radius=12];
  \begin{scope}
    \clip (0,-160)
      .. controls ++(120:64) and ++(270:64) .. (-88, -16)
      .. controls ++( 90:64) and ++(225:64) .. (  0, 128)
      .. controls ++(315:64) and ++( 90:64) .. ( 88, -16)
      .. controls ++(270:64) and ++( 60:64) .. cycle;
    \foreach \i in {0,...,2}
      \fill [stripes] (-256, -160 + \i*80) rectangle ++(512, 40);
  \end{scope}
  \foreach \s [count=\i from -1] in {lower wing, upper wing}
    \fill [style=\s, shift={(16,56)}, rotate=\i*32]
      (0,0)
      .. controls ++( 30:64) and ++(180:32) .. (128,56)
      arc (90:-90:56)
      .. controls ++(180:32) and ++(330:64) .. cycle;
}
\end{scope}},
monkey/.pic={%
\begin{scope}[x=3cm/448,y=3cm/448]
\useasboundingbox (-256, -256) (256, 256);
\reflect[
  on left ={ color alias/.list={skin as Brown700, ears as Pink100}},
  on right={ color alias/.list={skin as Brown900, ears as Pink200}, half clip }
]{
  \fill [skin] (140, 80) circle  [radius=56];
  \fill [ears] (140, 80) circle  [radius=32];
  \fill [skin] (  0, 72) ellipse [x radius=140, y radius=112];
  \fill [skin] (  0,-64) ellipse [x radius=172, y radius=112];
}
\reflect[
  on left ={color alias/.list={face as Pink100}},
  on right={color alias/.list={face as Pink200}, half clip}
  ]{
  \fill [face] (0,-64) ellipse [x radius=140, y radius=88];
  \fill [face] (40,64) ellipse [radius=64];
}
\reflect{
  \fill [BlueGrey900] (40, 64) circle [radius=24];
  \fill [Pink300]     (24,-16) circle [radius=16];
}
\fill [Pink300]
  (-96,-72) arc (180:360:96 and 32) arc (360:180:96 and 56);
\end{scope}},
donkey/.pic={
\begin{scope}[x=3cm/480,y=3cm/480]
\reflect[
  on left ={color alias=ears as BlueGrey500},
  on right={color alias=ears as BlueGrey700},
  outer ear/.style={fill=ears}, inner ear/.style={fill=BlueGrey900}
]{
  \foreach \s [count=\j from 0] in {outer ear, inner ear}
  \fill [style=\s]
  [shift={(88,120)}, rotate=75, scale=9/10-\j/3, xscale=3/2]
  (-72,0)
  .. controls ++( 90: 8) and ++(180:16) .. ( 0, 48)
  .. controls ++(  0:16) and ++( 90:12) .. (88,  0)
  .. controls ++(270:12) and ++(  0: 8) .. ( 0,-48)
  .. controls ++(180: 8) and ++(270: 8) .. cycle;
}
\reflect[split=BlueGrey500 and BlueGrey700]{%
  \fill [fill color] (-56,-160)
  .. controls ++( 90:112) and ++(270: 128) .. (-112,  48)
  arc (180:0:112 and 96)
  .. controls ++(270: 128) and ++( 90:112) .. (  56,-160) -- cycle;
}
\reflect[split=Grey500 and Grey600]{%
  \fill [fill color] (0,-164) ellipse [x radius=56, y radius=56];
}
\reflect[split=Grey700 and Grey800]{%
  \fill [fill color] (0,-164) ellipse [x radius=48, y radius=40];
}
\reflect[split=Grey500 and Grey600]{%
  \fill [fill color] (0,-144) ellipse [x radius=64, y radius=48];
  \fill [fill color]  (36, -128) ellipse [x radius=24, y radius=40];
  \fill [BlueGrey900] (36, -128) ellipse [x radius=12, y radius=24];
}
\fill [BlueGrey900]
  (-72, 40) ellipse [radius=20]
  ( 72, 40) ellipse [radius=20]
  (-8,160)
  to [bend left]  ++( 16, 32) to [bend right] ++( 16,-48)
  to [bend left]  ++( 16, 32) to [bend right] ++( 16,-48)
  to [bend right] ++(-32,-48) to [bend left]  ++(-16, 32)
  to [bend right] ++(-32,-32) to [bend left]  ++(  0, 32)
  to [bend right] ++(-32,-16) to [bend left]  ++( 16, 40)
  to [bend right] ++(-16, 32) to [bend left]  cycle;
\end{scope}},
chipmunk/.pic={
\begin{scope}[x=3cm/448,y=3cm/448]
\reflect[
  on left ={colors alias={fur as Brown500, ear as Pink100}},
  on right={colors alias={fur as Brown700, ear as Pink200}, half clip}
]{
  \begin{scope}[shift={(88,56)}, rotate=-10]
  \fill [fur] (0,0) arc (270:90:40 and 64) arc (90:-90:24 and 64);
  \fill [ear] (0,0) arc (270:90:32 and 48) arc (90:-90:16 and 48);
  \end{scope}
  \fill [fur] ( 0,  -8) ellipse [x radius=128, y radius=176];
  \fill [fur] (96,-72) ellipse [x radius= 96, y radius= 88];
}
\reflect[split={Grey300 and Grey400}]{
  \fill [fill color, shift={(72,-80)}, yscale=-1] (-96,0) 
  arc (180:270: 96 and 80) arc (270:360:112 and 88)
  to [bend left ] ++(-20,-8) 
  to [bend right] ++(12,32)
  to [bend left ] (30:96 and 80)
  arc (30:180:96 and 80) -- cycle;
  \fill [fill color] (56,16) [rotate=-5] ellipse [x radius=48, y radius=96];
}
\reflect[split={Brown100 and Brown200}]{
  \fill [Grey100] (4,-56) -- ++(0,-64) -- ++(24,0) -- ++(16,64) -- cycle;
  \fill [fill color] (0,-40) ellipse [x radius=80, y radius=48];
  \fill [fill color] (0,-48) ellipse [x radius=64, y radius=56];
}
\reflect[split={BlueGrey800 and BlueGrey900}]{
  \fill [fill color]
    (0,-56) 
    .. controls ++(  0:16) and ++(315:16) .. ( 36,0)
    .. controls ++(135:16) and ++( 45:16) .. (-36,0)
    .. controls ++(225:16) and ++(180:16) .. cycle;
  \fill [BlueGrey900] (56, 40) circle [radius=20];
}
\end{scope}},
ladybird/.pic={
\begin{scope}[x=3cm/512,y=3cm/512]
\tikzset{rotate=-45}
\reflect[split=BlueGrey800 and BlueGrey900]{
  \fill [fill color] (0,16) ellipse [x radius=96, y radius=144];
  \foreach \i [count=\n from 0] in {1,0,-1} \foreach \j in {0,1}
  \fill [fill color, shift=(40-\n*40:96 and 144), 
    rotate=30-\n*40, shift=(0:\j*60), 
    xscale=1-\j/3, yscale=1-\j/6, rotate=\i*\j*15]
    (0,4) -- ++(64,4) -- ++(0,-16) -- (0,-4) -- cycle;
}
\reflect[
  on left ={colors alias={spot as Grey800, wing as Red600}},
  on right={colors alias={spot as Grey900, wing as Red900}, half clip}
]{
\clip [preaction={fill=wing}] 
  (0,0 |- 45:128 and 144) -- (45:128 and 144) arc (45:-80:128 and 144);
\fill [spot] 
  ( 0, 96) circle [radius=32]
  (64, 64) circle [radius=16]
  (24,  0) circle [radius=24]
  (96, 16) circle [radius=12]
  (72,-64) circle [radius=20];
}
\reflect[
  on left ={colors alias={body as BlueGrey800, eye as Grey100}},
  on right={colors alias={body as BlueGrey900, eye as Grey200}, half clip}
]{
  \fill [body]
    (16,160) arc (180:90:64) -- ++(4,-4) coordinate [midway] (@)
    arc (90:180:64) -- cycle;
  \fill [body] (@) circle [radius=8];
  \clip [postaction={fill=body}] (80,128) 
    .. controls ++( 90:32) and ++(  0:32) .. (  0,192)
    .. controls ++(180:32) and ++( 90:32) .. (-80,128)
    .. controls ++(270:32) and ++(180:32) .. (  0,96)
    .. controls ++(  0:32) and ++(270:32) .. cycle;
  \fill [eye] (64,160) circle [radius=24];
}
\end{scope}},
dog/.pic={
\begin{scope}[x=3cm/480,y=3cm/480]
\useasboundingbox (-256, -256) (256, 256);
\reflect[split=Brown400 and Brown500]{
  \fill [fill color] (0,-64) ellipse [x radius=160, y radius=144];
  \fill [fill color] (0, 32) ellipse [x radius=128, y radius=112];
  \fill [fill color] (32,96)
  .. controls ++( 75:128) and ++(105:128) .. ++(192,  0)
  .. controls ++(285: 96) and ++(285: 96) .. ++(-80,-32)
  .. controls ++(105: 64) and ++( 75: 32) .. cycle;
}
\reflect[split={Grey100 and Grey200}]{
  \clip (0,-64) ellipse [x radius=160, y radius=144];
  \fill [fill color](0,-224) 
    .. controls ++(  0:64) and ++(270:64) .. ++(96,64)
    .. controls ++( 90:64) and ++(270:64) .. ++(-96,192)
    .. controls ++(270:64) and ++( 90:64) .. ++(-96,-192)
    .. controls ++(270:64) and ++(180:64) .. cycle;
}
\reflect[split={Pink100 and Pink200}]{
  \fill [fill color](0,-192) ellipse [x radius=28, y radius=32];
}
\reflect[split={BlueGrey800 and BlueGrey900}]{
  \fill [fill color](0,-144) 
    .. controls ++(  0:20) and ++(315:20) .. ++( 40,64)
    .. controls ++(135:20) and ++( 45:20) .. ++(-80, 0)
    .. controls ++(225:20) and ++(180:20) .. cycle;
  \fill [BlueGrey900] (56, 0) circle [radius=20];
  \fill [fill color] (-8,-112)
  -- ++(16,0) -- ++(0,-32) arc (180:360:24)
  arc (180:0:8) arc (360:180:40);
}
\end{scope}}
}
\begin{document}
\begin{tikzpicture}
\foreach \animal [count=\i from 0, evaluate={\x=mod(\i,3)*5; \y=-floor(\i/3)*5;}]
  in {bee,cat,chimpanzee,chipmunk,cow,dog,donkey,duck,horse,ladybird,
      monkey,owl,shark,squid}{
\pgfmathrandomitem\materialColor{material}
\scoped[shift={(\x,\y)}]{
\fill [fill=\materialColor50] circle [radius=2];
\pic {\animal};
\node [below]at (0, -2) {\ttfamily\animal};
}}
\end{tikzpicture}
\end{document}
Mark Wibrow
  • 70,437
52

Super TeX Duck

Click here for the proper soundtrack

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \definecolor{superblue}{RGB}{28,82,156}
    \definecolor{superred}{RGB}{255,70,70}
    \duck[tshirt=superblue, bill=superred!40!brown, longhair=brown!70!red!80!black, cape=superred]
    \begin{scope}[xscale=0.01, yscale=-0.01, yshift=-7200, xshift=100]
        \path[fill=yellow!70!brown,line join=miter,line cap=butt,miter limit=4.00,line width=0.280pt] 
        (19.1501,169.8999) .. controls (22.6621,185.2587) and (26.1741,200.6174) .. (29.6861,215.9762) .. controls (48.0064,202.1310) and (66.3266,188.2858) .. (84.6469,174.4406) .. controls (82.8840,171.7633) and (83.5049,166.2477) .. (79.3603,166.0137) .. controls (62.9510,164.8761) and (46.5417,163.7384) .. (30.1324,162.6008) .. controls (26.4716,165.0339) and (22.8108,167.4669) .. (19.1501,169.8999) -- cycle;
        \path[fill=superred,line join=miter,line cap=butt,miter limit=4.00,line width=0.280pt] (30.3892,160.9069) .. controls (26.0015,163.8232) and (21.6137,166.7395) .. (17.2258,169.6556) .. controls (20.9503,185.9422) and (24.6743,202.2289) .. (28.3985,218.5155) .. controls (47.8256,203.8338) and (67.2526,189.1521) .. (86.6798,174.4706) .. controls (84.9008,171.2752) and (85.0408,167.0414) .. (82.1598,164.4961) .. controls (64.9030,163.2997) and (47.6461,162.1033) .. (30.3892,160.9069) -- cycle(29.8755,164.2947) .. controls (32.3633,163.8271) and (33.8198,165.0958) .. (31.6902,167.0082) .. controls (28.9838,171.6934) and (26.2774,176.3786) .. (23.5710,181.0638) .. controls (23.1554,177.2602) and (20.9993,173.6756) .. (21.6242,169.7787) .. controls (24.3746,167.9507) and (27.1251,166.1227) .. (29.8755,164.2947) -- cycle(76.7801,167.5466) .. controls (80.4604,166.5323) and (82.8325,171.9430) .. (81.6657,174.6950) .. controls (79.5366,177.3566) and (76.2910,178.8331) .. (73.7649,181.0982) .. controls (72.5330,181.7268) and (68.5768,185.8417) .. (70.3548,182.6185) .. controls (72.4966,177.5945) and (74.6383,172.5705) .. (76.7801,167.5466) -- cycle(39.6974,171.1477) .. controls (42.2965,171.3279) and (44.8956,171.5081) .. (47.4946,171.6883) .. controls (42.6972,180.8632) and (38.3661,190.3004) .. (33.2358,199.2896) .. controls (31.4746,202.1278) and (26.2131,201.6511) .. (27.3590,197.6295) .. controls (26.4820,193.7940) and (25.6049,189.9585) .. (24.7279,186.1229) .. controls (27.6766,181.5339) and (29.9816,176.4251) .. (33.7500,172.4331) .. controls (35.4497,171.2057) and (37.6550,170.8843) .. (39.6974,171.1477) -- cycle(55.7860,172.2631) .. controls (59.7578,172.8436) and (63.9574,172.1465) .. (67.7430,173.7593) .. controls (69.7610,177.0238) and (67.0777,180.4981) .. (66.1501,183.6430) .. controls (65.7213,187.4117) and (62.3605,189.8584) .. (59.5157,191.9592) .. controls (54.5406,195.4546) and (49.8125,199.2863) .. (44.9199,202.8973) .. controls (40.7783,202.6790) and (42.3696,197.6021) .. (43.9068,195.3714) .. controls (47.1153,189.7669) and (49.8067,183.8583) .. (52.8097,178.1329) .. controls (53.8018,176.1763) and (54.7939,174.2197) .. (55.7860,172.2631) -- cycle(29.0428,204.9923) .. controls (32.9677,205.3274) and (36.8926,205.6624) .. (40.8175,205.9975) .. controls (37.3725,207.7884) and (35.2074,211.6132) .. (31.2514,212.4846) .. controls (29.5641,210.3889) and (29.9644,207.4023) .. (29.0428,204.9923) -- cycle;
        \path[draw=black,line join=miter,line cap=butt,miter limit=4.00,line width=0.280pt] (30.3892,160.9069) .. controls (26.0015,163.8232) and (21.6137,166.7395) .. (17.2258,169.6556) .. controls (20.9503,185.9422) and (24.6743,202.2289) .. (28.3985,218.5155) .. controls (47.8256,203.8338) and (67.2526,189.1521) .. (86.6798,174.4706) .. controls (84.9999,171.3774) and (84.7278,166.4000) .. (82.1598,164.4961) .. controls (64.9030,163.2997) and (47.6461,162.1033) .. (30.3892,160.9069) -- cycle(29.8755,164.2947) .. controls (31.3768,164.5060) and (34.3214,163.9495) .. (32.2315,166.0711) .. controls (29.3447,171.0687) and (26.4578,176.0663) .. (23.5710,181.0638) .. controls (23.1458,177.3914) and (20.8902,172.9885) .. (21.6242,169.7787) .. controls (24.3746,167.9507) and (27.1251,166.1227) .. (29.8755,164.2947) -- cycle(76.7801,167.5466) .. controls (80.5319,166.6672) and (81.1722,170.3187) .. (82.2166,173.1606) .. controls (81.7613,176.2320) and (78.2235,177.2884) .. (76.2097,179.2506) .. controls (74.0365,180.8929) and (71.8633,182.5353) .. (69.6901,184.1776) .. controls (72.0534,178.6339) and (74.4168,173.0903) .. (76.7801,167.5466) -- cycle(39.6974,171.1477) .. controls (42.2965,171.3279) and (44.8956,171.5081) .. (47.4946,171.6883) .. controls (42.8362,180.7076) and (38.4557,189.8707) .. (33.6002,198.7877) .. controls (31.8670,201.5779) and (26.5743,202.6315) .. (27.4439,198.0007) .. controls (26.5386,194.0414) and (25.6332,190.0822) .. (24.7279,186.1229) .. controls (27.5616,181.6166) and (29.9448,176.7409) .. (33.4174,172.6921) .. controls (35.1561,171.2620) and (37.5122,170.8656) .. (39.6974,171.1477) -- cycle(55.7860,172.2631) .. controls (59.7604,172.8439) and (63.9586,172.1470) .. (67.7430,173.7593) .. controls (70.1370,177.4786) and (66.0436,181.5940) .. (65.7890,185.4784) .. controls (63.4243,190.1696) and (58.3136,192.3876) .. (54.4844,195.6692) .. controls (51.2962,198.0785) and (48.1080,200.4879) .. (44.9199,202.8973) .. controls (40.3492,202.7990) and (42.6086,196.8794) .. (44.3878,194.7420) .. controls (48.1872,187.2490) and (51.9866,179.7561) .. (55.7860,172.2631) -- cycle(29.0428,204.9923) .. controls (32.9677,205.3274) and (36.8926,205.6624) .. (40.8175,205.9975) .. controls (37.3797,207.7837) and (35.1608,211.6508) .. (31.2514,212.4846) .. controls (29.7442,210.8968) and (29.8959,207.3157) .. (29.0428,204.9923) -- cycle;
    \end{scope}
\end{tikzpicture}

\end{document}

enter image description here enter image description here

Bat Duck

The symbol is borrowed from https://tex.stackexchange.com/a/47394/36296

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \duck[body=black!60!gray, bill=orange!50!gray,cape=black!50!gray]
    \fill[black!60!gray,rotate=210, xshift=-60, yshift=-72] (0.40,1.20)--(0.50,0.90)--(0.70,1.20);
    \fill[black!60!gray,rotate=150, xshift=-15, yshift=-97] (0.40,1.20)--(0.50,0.90)--(0.70,1.20);
    %Following logo based on https://tex.stackexchange.com/a/47394/36296
    \begin{scope}[scale=0.05, rotate=-5, xshift=270, yshift=400]
        \filldraw[fill=yellow] (0,0) ellipse (7.0 and 4.3);
    \draw[line width=0.1mm] (0,0) ellipse (6.5 and 3.8);
    \draw[line width=0.1mm,dashed,white] (0,0) ellipse (6.0 and 3.3);
        \pgfsetlinewidth{0.1mm}
        \pgfpathmoveto{\pgfpoint{0}{2.7cm}}
        \pgfpathlineto{\pgfpoint{0.5cm}{2.7cm}}
        \pgfpathlineto{\pgfpoint{1cm}{3.25cm}}
        \pgfpathcurveto{\pgfpoint{1.2cm}{1.3cm}}{\pgfpoint{1.3cm}{1cm}}{\pgfpoint{2cm}{1cm}}
        \pgfpathcurveto{\pgfpoint{3cm}{1cm}}{\pgfpoint{3cm}{2.2cm}}{\pgfpoint{2cm}{3.1cm}}
        \pgfpatharcto{6cm}{3.3cm}{0}{0}{0}{\pgfpoint{3.2cm}{-2.8cm}}
        \pgfpathcurveto{\pgfpoint{4cm}{-2cm}}{\pgfpoint{4cm}{0}}{\pgfpoint{2.2cm}{-1.8cm}}
        \pgfpathcurveto{\pgfpoint{1.5cm}{-1cm}}{\pgfpoint{1cm}{-1cm}}{\pgfpoint{0cm}{-3.2cm}}
        \pgftransformcm{-1}{0}{0}{1}{\pgfpointorigin} % This is the coordinate change from x to -x
        \pgfpathcurveto{\pgfpoint{1cm}{-1cm}}{\pgfpoint{1.5cm}{-1cm}}{\pgfpoint{2.2cm}{-1.8cm}}
        \pgfpathcurveto{\pgfpoint{4cm}{0cm}}{\pgfpoint{4cm}{-2cm}}{\pgfpoint{3.2cm}{-2.8cm}}
        \pgfpatharcto{6cm}{3.3cm}{0}{0}{1}{\pgfpoint{2cm}{3.1cm}}
        \pgfpathcurveto{\pgfpoint{3cm}{2.2cm}}{\pgfpoint{3cm}{1cm}}{\pgfpoint{2cm}{1cm}}
        \pgfpathcurveto{\pgfpoint{1.3cm}{1cm}}{\pgfpoint{1.2cm}{1.3cm}}{\pgfpoint{1cm}{3.25cm}}
        \pgfpathlineto{\pgfpoint{0.5cm}{2.7cm}}
        \pgfpathclose
        \pgfusepath{fill,stroke}   
    \end{scope}
\end{tikzpicture}

\end{document}

enter image description here

Trekkie ducks

\documentclass{standalone}

\usepackage{tikzducks}
\usepackage{fontawesome}

\definecolor{unigold}{RGB}{203,157,52}
\definecolor{uniblue}{RGB}{46,114,167}
\definecolor{unired}{RGB}{177,49,34}

\definecolor{skink}{RGB}{245,206,193}
\definecolor{skins}{RGB}{255,222,151}
\definecolor{skinu}{RGB}{146,113,96}

\newcommand*{\insignia}{\node[rotate=15] at (wing) {\color{yellow!80!brown}\faLocationArrow};}

\begin{document}

\begin{tikzpicture}
\duck[tshirt=black!60!gray, jacket=unigold, body=skink, shorthair=brown!80!black, bill=skink!60!gray]
\insignia
\end{tikzpicture}

\begin{tikzpicture}
\duck[tshirt=black!60!gray, jacket=uniblue, body=skins, shorthair=black!60!brown, bill=skins!60!gray]
\fill[skins,rotate=175, xshift=-46, yshift=-76] (0.45,1.20)--(0.50,0.80)--(0.65,1.20);
\insignia
\end{tikzpicture}

\begin{tikzpicture}
\duck[tshirt=black!60!gray, jacket=unired, body=skinu, longhair=black!60!brown, bill=skinu!70!black]
\insignia
\end{tikzpicture}
\end{document}

enter image description here

Italy duck for CarLaTeX

\documentclass{standalone}
\usepackage{tikzducks}
\usepackage{graphicx}
\begin{document}

\begin{tikzpicture}
    \duck
    \node[rotate=-20] at (2,1) {\includegraphics[width=1.5cm]{bc-ditalie.mps}};
\end{tikzpicture}   

\end{document}

enter image description here

Witch duck for cfr

"catcode" borrowed from How can we draw a Christmas tree with decorations, using TikZ?

\pdfminorversion=7
\RequirePackage[rgb,pdftex,dvipsnames,x11names]{xcolor}
\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{calc,intersections,backgrounds}
\pgfdeclarelayer{foreground}
\pgfdeclarelayer{pen}
\pgfdeclarelayer{corff}
\pgfsetlayers{background,corff,main,pen,foreground}
\makeatletter
% adapted (simplified version) from tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
  \tikzset{%
    on foreground layer/.style={%
          execute at begin scope={%
            \pgfonlayer{foreground}%
            \let\tikz@options=\pgfutil@empty%
            \tikzset{every on foreground layer/.try,#1}%
            \tikz@options%
          },
          execute at end scope={\endpgfonlayer}
    },
    on pen layer/.style={
          execute at begin scope={%
            \pgfonlayer{pen}%
            \let\tikz@options=\pgfutil@empty%
            \tikzset{every on pen layer/.try,#1}%
            \tikz@options%
          },
          execute at end scope={\endpgfonlayer}
    },
    on corff layer/.style={
          execute at begin scope={%
            \pgfonlayer{corff}%
            \let\tikz@options=\pgfutil@empty%
            \tikzset{every on corff layer/.try,#1}%
            \tikz@options%
          },
          execute at end scope={\endpgfonlayer}
    },
    stripiau cwt/.style={draw=#1, very thin, shorten >=-5mm, shorten <=-5mm, double=#1, double distance=3.5mm},
    stripiau corff/.style={very thin, draw=#1, fill=#1},
    trwyn/.style={circle, yshift=1.25mm, minimum width=2.5mm, inner sep=0pt},
    llenwi cath/.style={fill=#1},
    llygaid/.style n args=2{inner color=#1, outer color=#2, ultra thick, draw},
    pics/cath b/.style n args=5{
      code={
        [ultra thick]
        \begin{pgfonlayer}{pen}% ref. workaround from http://tex.stackexchange.com/a/218166/ (Mark Wibrow)
          \begin{scope}[very thin]% [on pen layer={very thin}]
          \path [clip]
            (0,10mm) coordinate (pen1) arc (90:65:19mm and 20mm) coordinate [pos=.75] (pp1) coordinate (pen2)
              arc (65:45:19mm and 20mm)  coordinate (pen3)
              arc (45:-60:19mm and 20mm) coordinate [pos=.05] (pp4) coordinate [pos=.4] (pp5) coordinate [pos=.45] (pp8) coordinate [pos=.75] (pp9)  coordinate (pen8)
              arc (-60:-90:19mm and 20mm) coordinate (pen10)
              arc (-90:-120:19mm and 20mm) coordinate (pen9)
              arc (-120:-225:19mm and 20mm) coordinate [pos=.25] (pp10) coordinate [pos=.55] (pp11) coordinate [pos=.6] (pp6) coordinate [pos=.95] (pp7) coordinate (pen4)
              arc (-225:-245:19mm and 20mm) coordinate (pen5)
              arc (-245:-270:19mm and 20mm) coordinate [pos=.25] (pp2)
              ;
          \path [stripiau corff=#1]
            (pp2) [out=-45, in=95] to ($(pen1) - (0,10mm)$) coordinate (pp3) [out=85, in=-135] to (pp1) |- +(5mm,5mm) -| cycle
            (pp4) [out=-135, in=25] to +(-7.5mm,-4mm) [out=-25, in=115] to (pp5) -| +(5mm,5mm) |- cycle
            (pp7) [out=-45, in=155] to +(7.5mm,-4mm) [out=-155, in=65] to (pp6) -| +(-5mm,5mm) |- cycle
            (pp8) [out=-135, in=-25] to +(-17.5mm,0mm) [out=-45, in=115] to (pp9) -| +(5mm,5mm) |- cycle
            (pp11) [out=-45, in=-155] to +(17.5mm,0mm) [out=-135, in=65] to (pp10) -| +(-5mm,5mm) |- cycle
            ;
          \end{scope}
        \end{pgfonlayer}
        \path
          (pen2) ++(4mm,7.5mm) coordinate (pen6)
          (pen5) ++(-4mm,7.5mm) coordinate (pen7);
        \path [rounded corners=1pt, llenwi cath=#2]
          (pen1) arc (90:65:19mm and 20mm)
            [out=80, in=-110] to (pen6) [out=-80, in=85] to
          (pen3) arc (45:-225:19mm and 20mm)
            [out=95, in=-100] to (pen7) [out=-70, in=100] to
          (pen5) arc (-245:-270:19mm and 20mm);
        \begin{scope}[on foreground layer={ultra thick}]
          \draw [rounded corners=1pt, ultra thick]
            (pen1) arc (90:65:19mm and 20mm)
              [out=80, in=-110] to (pen6) [out=-80, in=85] to
            (pen3) arc (45:-225:19mm and 20mm)
              [out=95, in=-100] to (pen7) [out=-70, in=100] to
            (pen5) arc (-245:-270:19mm and 20mm);
        \end{scope}
      \path [llenwi cath=#2]% corff
          (pp8) [out=35, in=100] to coordinate [pos=.075] (corff7) coordinate [pos=.1] (corff8) coordinate [pos=.2] (corff9) coordinate [pos=.225] (corff10) coordinate [pos=.325] (corff11) coordinate [pos=.35] (corff12) coordinate [pos=.45] (corff13) coordinate [pos=.475] (corff14) coordinate [pos=.575] (corff15) coordinate [pos=.6] (corff16) coordinate [pos=.7] (corff17) coordinate [pos=.725] (corff18) coordinate [pos=.825] (corff19) coordinate [pos=.86] (corff20) coordinate [pos=.96] (corff21) ++(75mm,-15mm) coordinate (corff5)
            [out=-80, in=-85] to coordinate [pos=.6] (corff6) coordinate [pos=.7] (corff22) coordinate [pos=.775] (corff23) coordinate [pos=.825] (corff24) coordinate [pos=.875] (corff27) coordinate [pos=.9] (corff25) coordinate [pos=.985] (corff26) (pen9);
         \begin{scope}[ultra thick]% stripiau'r corff
            \clip
              (pp8) [out=35, in=100] to (corff5)
                [out=-80, in=-85] to (pen9) |- cycle;
            \path [stripiau corff=#1]
              (pp8) [out=-95, in=65] to ++(7.5mm,-15mm) [out=45, in=-175] to (corff7)
              (corff8) [out=-85, in=50] to ++(7.5mm,-17.5mm) [out=45, in=-135] to (corff9)
              (corff10) [out=-90, in=60] to ++(5mm,-20mm) [out=50, in=-140] to (corff11)
              (corff12) [out=-100, in=55] to ++(2.5mm,-20mm) [out=50, in=-145] to (corff13)
              (corff14) [out=-110, in=50] to ++(0,-20mm) [out=40, in=-155] to (corff15)
              (corff16) [out=-115, in=40] to ++(-3.5mm,-18.5mm) [out=30, in=-170] to (corff17)
              (corff18) [out=-135, in=20] to ++(-7.5mm,-16.5mm) [out=10, in=-180] to (corff19)
              (corff20) [out=-170, in=-5] to ++(-10mm,-12.5mm) [out=-15, in=140] to (corff21)
              (corff26) [out=-45, in=-135] to ++(20mm,-1.5mm) [out=-115, in=45] to (corff25) -- +(-5mm,0) |- cycle
              (corff27) [out=40, in=-115] to ++(20mm,7.5mm) [out=-105, in=65] to (corff24) -- +(-5mm,0) |- cycle;
         \end{scope}
        \draw [ultra thick, name path=corff]
          (pp8) [out=35, in=100] to ++(75mm,-15mm)
            [out=-80, in=-85] to coordinate [pos=.6] (corff6) (pen9);
        \draw [ultra thick, llenwi cath=#2]% coesau
          (corff22) ++(17.5mm,12.5mm) coordinate (coes1)
          (corff23) ++(12.5mm,15mm) coordinate (coes2)
          (coes1) [out=-120, in=35] to (corff22) [out=-145, in=5] to ++(-20mm,-7.5mm) [out=-175, in=0] to ++(-5mm,0) arc (-90:90:-5mm and 3mm) coordinate (coes9) [out=0, in=-175] to ++(5mm,0) coordinate (coes11) [out=5, in=-145] to (corff23) [out=35, in=-100] to (coes2);
        \begin{pgfonlayer}{background}% ref. workaround from http://tex.stackexchange.com/a/218166/ (Mark Wibrow)
          \begin{scope}
            \draw [ultra thick, llenwi cath=#2]% coesau
              (corff23) [out=-145, in=5] to (coes11) [out=-175, in=0] to (coes9) arc (-90:90:-4mm and 2.5mm) [out=0, in=-145] to (corff24)
              ;
          \end{scope}
        \end{pgfonlayer}
        \path [llenwi cath=#2]% llenwi'r cwt
          (corff5) [out=-80, in=-15] to ($(corff6) + (0,-2.5mm)$) coordinate (cwt5)
            [out=165, in=-90] to ++(-5mm,5mm) coordinate (cwt6)
            [out=90, in=170] to ++(7.5mm,5mm) coordinate (cwt7)
            [out=-10, in=-95] to ($(corff5) + (-15mm,-2.5mm)$) coordinate (cwt8)
          ;
        \begin{scope}[ultra thick]% stripiau'r cwt
          \clip (corff5) [out=-80, in=-15] to
              coordinate [pos=.1] (cwt9)
              coordinate [pos=.15] (cwt10a)
              coordinate [pos=.25] (cwt11a)
              coordinate [pos=.345] (cwt12a)
              coordinate [pos=.44] (cwt13a)
              coordinate [pos=.53] (cwt14a)
              coordinate [pos=.62] (cwt15a)
              coordinate [pos=.71] (cwt16a)
              coordinate [pos=.805] (cwt17a)
              coordinate [pos=.9] (cwt18a)
              coordinate [pos=1] (cwt19a)
              (cwt5)
            [out=165, in=-90] to
              coordinate [pos=.45] (cwt20a)
              (cwt6)
            [out=90, in=170] to
              coordinate [pos=.65] (cwt20b)
              (cwt7)
            [out=-10, in=-95] to
              coordinate [pos=.025] (cwt19b)
              coordinate [pos=.125] (cwt18b)
              coordinate [pos=.225] (cwt17b)
              coordinate [pos=.325] (cwt16b)
              coordinate [pos=.425] (cwt15b)
              coordinate [pos=.525] (cwt14b)
              coordinate [pos=.625] (cwt13b)
              coordinate [pos=.725] (cwt12b)
              coordinate [pos=.825] (cwt11b)
              coordinate [pos=.925] (cwt10b)
              (cwt8)
            |- (corff21) -- cycle;
          \path [stripiau corff=#1]
            (corff5) [out=110, in=10] to ++(-7.5mm,-3.5mm) [out=0, in=120] to (cwt9);
          \path [llenwi cath=#1]
            (cwt20a) [out=80, in=-80] to (cwt20b) [out=170, in=90] to (cwt6) [out=-90, in=165] to cycle
            ;
          \foreach \i in {10,...,19}
            \draw [stripiau cwt=#1] (cwt\i a) [out=90, in=-60] to (cwt\i b);
        \end{scope}
        \draw [ultra thick, name path=cwt]
          (corff5) [out=-80, in=-15] to (cwt5)
            [out=165, in=-90] to (cwt6)
            [out=90, in=170] to (cwt7)
            [out=-10, in=-95] to (cwt8)
          ;
         \begin{scope}[on foreground layer={ultra thick}]
          \draw
            (pen10) -- ++(0,7.5mm) coordinate (ceg1)
              [out=-45, in=180] to +(5mm,-2.5mm) coordinate (ceg2)
              [out=0, in=-100] to +(2.5mm,3.5mm) coordinate (ceg3)
             ;
          \draw
            (ceg1)
              [out=-135, in=0] to +(-5mm,-2.5mm) coordinate (ceg4)
              [out=180, in=-80] to +(-2.5mm,3.5mm) coordinate (ceg5)
            ;
          \path (ceg1)
            node (trwyn1) [trwyn, anchor=west] {}
            node (trwyn2) [trwyn, anchor=east] {};
          \draw
            ($(trwyn1)!1/2!(trwyn2)$) coordinate (trwyn) [out=10,in=140] to +(25mm,7.5mm)
            (trwyn) [out=-10, in=120] to +(.5mm,-5mm)
            (trwyn) [out=-40, in=130] to +(-1.5mm,-5mm)
            ;
          \draw
            (trwyn) [out=170,in=40] to +(-25mm,7.5mm)
            (trwyn) [out=-170, in=60] to +(-.5mm,-5mm)
            (trwyn) [out=-140, in=50] to +(1.5mm,-5mm)
            ;
          \path (ceg1)
            node (trwyn1) [trwyn, draw, ball color=#5, anchor=west] {}
            node (trwyn2) [trwyn, draw, ball color=#5, anchor=east] {};
         \end{scope}
          \draw [llygaid={#3}{#4}]
          ({$(pen1)!2/5!(pen10)$} -| {$(pen8)!3/4!(pen4)$}) coordinate (llygad chwith)
            ++(-5mm,0) coordinate (llygad chwith 1) [out=20, in=180] to ++(6mm,2.5mm) coordinate (llygad chwith 2) [out=0, in=120] to ++(4mm,-2.5mm)
            [out=-120, in=0] to ++(-4mm,-2.5mm) [out=180, in=-20] to ++(-6mm,2.5mm)
          ;
          \draw [llygaid={#3}{#4}]
            ({$(pen1)!2/5!(pen10)$} -| {$(pen9)!3/4!(pen3)$}) coordinate (llygad de)
              ++(5mm,0) coordinate (llygad de 1) [out=160, in=0] to ++(-6mm,2.5mm) coordinate (llygad de 2) [out=180, in=40] to ++(-4mm,-2.5mm)
              [out=-40, in=180] to ++(4mm,-2.5mm) [out=0, in=-160] to ++(6mm,2.5mm)
          ;
          \fill [ball color=black] (llygad chwith 1 -| llygad chwith 2) circle (2.5mm);
          \fill [ball color=black] (llygad de 1 -| llygad de 2) circle (2.5mm);
          \begin{scope}[on foreground layer={ultra thick}]
            \draw [shorten >=1pt]
              ($(pen2)!7/10!(pen3)$) coordinate (clust1) [out=125, in=-80] to (pen6);
            \draw [shorten >=1pt]
              ($(pen5)!7/10!(pen4)$) coordinate (clust2) [out=55, in=-100] to (pen7);
          \end{scope}
          \begin{scope}% llenwi clust de
            \clip (clust1) [out=125, in=-80] to (pen6) [out=-110, in=80] to (pen2) |- cycle;
            \path [stripiau corff=#1, rounded corners=1pt]
              (clust1) [out=125, in=-80] to (pen6) [out=-110, in=80] to (pen2) arc (65:45:19mm and 20mm)
              ;
          \end{scope}
          \begin{scope}% llenwi clust chwith
            \clip (clust2) [out=55, in=-100] to (pen7) [out=-70, in=100] to (pen5) |- cycle;
            \path [stripiau corff=#1, rounded corners=1pt]
              (clust2) [out=55, in=-100] to (pen7) [out=-70, in=100] to (pen5) arc (-245:-225:19mm and 20mm)
              ;
          \end{scope}
          % dim yn ddefnyddiol ar hyn o bryd ond gobeithio bynnan nhw ar ôl iddyn nhw fix the bug!
          \coordinate (-pen) at (pen1);
          \coordinate (-clust chwith) at (pen7);
          \coordinate (-clust de) at (pen6);
        }
    },
}
\makeatother

\usepackage{tikzducks}

\begin{document}
  \colorlet{lliw llygaid3}{Chartreuse1}
  \colorlet{lliw llygaid4}{Green4}
  \colorlet{lliw trwyn1}{LightPink2}
  \colorlet{cath5}{LavenderBlush3}
  \colorlet{cath6}{LavenderBlush4}
  \begin{tikzpicture}
    \path (-8,0) rectangle (10,21);
    \begin{scope}[transform canvas={scale=8},xshift=-30pt,yshift=-10pt]
        \duck[longhair=red!80!black,jacket=black!50!gray,magicwand]
            \fill[black!50!gray,rotate=-15] (0.44,2.13) ellipse (0.75 and 0.17);    
            \fill[black!50!gray,rotate=-15] (0.05,2.2)--(0.45,3.2)--(0.82,2.2);
      \end{scope}
    \pic {cath b={cath6}{cath5}{lliw llygaid3}{lliw llygaid4}{lliw trwyn1}};
  \end{tikzpicture}
\end{document}

enter image description here

Queen duck

(code for including the crown by Ulrike Fischer)

\documentclass{standalone}

\usepackage{tikzducks}
\usepackage[LSBC5,T1]{fontenc}

\definecolor{skin}{RGB}{225,219,206}
\definecolor{bill}{RGB}{170,123,154}
\definecolor{dress}{RGB}{184,209,206}
\definecolor{crown}{RGB}{90,76,183}

\usepackage{chessfss}
\setboardfontencoding{LSBC5}%
\setboardfontcolors{%
    whiteonwhitepiecemask=crown,
    whitepiece=gray!60!white
}

\begin{document}

\begin{tikzpicture}
    \duck[body=skin,bill=bill,jacket=dress,tshirt=teal!20!dress,shorthair=gray!60!white]
    \node[rotate=-10] at (1.03,2.45) {\scalebox{2.1}{\WhiteKingOnWhite}}; 
    \fill[gray!60!white,rotate=-10] (0.6,2.18) ellipse (0.38 and 0.1);
\end{tikzpicture}

\end{document}

enter image description here

Farm animals

\documentclass{standalone}
\usepackage{tikzducks}

\definecolor{skin}{RGB}{161,140,126}
\definecolor{bill}{RGB}{238,212,191}
\definecolor{hair}{RGB}{89,72,72}

\begin{document}

\begin{tikzpicture}
    \duck[body=skin,bill=bill,shorthair=hair]
    \node[skin,rotate=45,scale=3] at (1.7,1.55) {\textsf{s}};
    \fill[hair,rotate=45] (2.4,0.13) ellipse (0.15 and 0.07);
    \begin{scope}[yshift=1]
        \clip (0.3,2.2) circle (0.4);
    \fill[skin] (0.9,2.3) circle (0.4);
  \end{scope}
    \begin{scope}[yshift=1]
        \clip (0.3,2.2) circle (0.35);
    \fill[bill] (0.9,2.3) circle (0.35);
  \end{scope}
    \begin{scope}
        \clip (1.5,2.05) circle (0.4);
    \fill[skin] (1.0,2.35) circle (0.4);
  \end{scope}
    \begin{scope}
        \clip (1.5,2.05) circle (0.35);
    \fill[bill] (1.0,2.35) circle (0.35);
  \end{scope}  
\end{tikzpicture}   

\begin{tikzpicture}
    \duck[body=bill!30!white,bill=bill,shorthair=bill]
    \fill[bill] (1.85,1.35) circle (0.2);
    \begin{scope}[yshift=1]
        \clip (0.3,2.2) circle (0.4);
    \fill[bill] (0.9,2.3) circle (0.4);
  \end{scope}
    \begin{scope}[yshift=1]
        \clip (0.3,2.2) circle (0.35);
    \fill[bill!30!white] (0.9,2.3) circle (0.35);
  \end{scope}
    \begin{scope}
        \clip (1.5,2.05) circle (0.4);
    \fill[bill] (1.0,2.35) circle (0.4);
  \end{scope}
    \begin{scope}
        \clip (1.5,2.05) circle (0.35);
    \fill[bill!30!white] (1.0,2.35) circle (0.35);
  \end{scope}  
\end{tikzpicture}   

\begin{tikzpicture}
    \duck[body=red!20!white,bill=red!40!white,shorthair=red!30!white]
    \node[red!20!white,rotate=25,scale=3] at (1.7,1.51) {\textsf{s}};
    \begin{scope}[yshift=-1]
        \clip (0.3,2.2) circle (0.35);
    \fill[red!30!white] (0.9,2.3) circle (0.35);
  \end{scope}
    \begin{scope}
        \clip (1.5,2.02) circle (0.35);
    \fill[red!30!white] (1.0,2.35) circle (0.35);
  \end{scope}  
\end{tikzpicture}       

\end{document}

enter image description here

33

Now this is community wiki, I feel comfortable starting a list of links. Please add links to this list if you're aware of other questions featuring animals on site.

We mustn't forget that human beings are also members of the animal kingdom.

Off-site:

Ignasi
  • 136,588
cfr
  • 198,882
  • @CarLaTeX Do you know any additions? I'm sure I'm forgetting some. I only found the tortoises by accident, even though I drew them :). – cfr Aug 19 '17 at 21:55
  • @CarLaTeX Please add links as appropriate - this is community wiki, after all :-). – cfr Feb 04 '18 at 19:30
  • @CarLaTeX I think I edited at the same time - sorry. – cfr Feb 04 '18 at 19:52
  • The birds at https://tex.stackexchange.com/a/46983 are nice too. But they may not get along with your cats. – Thérèse Feb 04 '18 at 20:15
  • 1
    @Thérèse Please add them. I promise not to edit for a bit so I don't overwrite you. – cfr Feb 04 '18 at 20:52
  • Being humans also part from animal kingdom, a reference to tikzpeople is missing. Examples: https://tex.stackexchange.com/a/338455/1952, https://tex.stackexchange.com/a/338434/1952 – Ignasi Feb 05 '18 at 08:07
  • @Ignasi Do please add: it is community wiki and I really did make specially careful not to overwrite Thérèse's edits after managing to overwrite CarLaTeX's. I promise not to edit for a bit to avoid overwriting yours, too. – cfr Feb 05 '18 at 19:00
31
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-vehicle,tikzducks}

\def\V{\rput(1,1.5){\psscalebox{-2 2}{\tikz{\duck[alien=red]}}}}
\def\F{cos(x)/2+x/3}

\begin{document}
\foreach \i in {0,0.2,...,8}{
\begin{pspicture}(-1,0)(11,5)   
    \psplot{-1}{11}{\F}
    \psVehicle[vehicle=\SelfDefinedVehicle,ownvehicle=\V,showSlope=false,frontwheel=\SpokesWheelB,backwheel=\SpokesWheelA,rB=1,rF=0.7,d=3]{.5}{\i}{\F}
\end{pspicture}}
\end{document}

enter image description here

Feature: The tube valve of the front wheel is rolling without "sleeping".

Display Name
  • 46,933
28

Soccer ducks

\documentclass{article}
\usepackage{tikzducks}
\usetikzlibrary{shapes.geometric}
\usepackage{subcaption}

\definecolor{verdep}{RGB}{0,100,55} \definecolor{bluinter}{RGB}{0,102,170} \definecolor{rossocagliari}{RGB}{149,20,38} \definecolor{blucagliari}{RGB}{23,52,84}

\newcommand{\aggiusto}{\clip (-.4,-.2) rectangle (2.4,2.5); \fill[cyan!30] (-.4,-.2) rectangle (2.4,2.5);}

\makeatletter

% no more needed, now included in TikZducks package %\newcommand*{\stripes}[1][]{\tikzset{/stripes/.cd,#1}\stripes@draw}

\tikzset{ /stripes/.cd, color/.code=\def\stripes@color{#1}, distance/.code=\def\stripes@distance{#1}, width/.code=\def\stripes@width{#1}, height/.code=\def\stripes@height{#1}, initialx/.code=\def\stripes@initialx{#1}, initialy/.code=\def\stripes@initialy{#1}, rotate/.code=\def\stripes@rotate{#1}, shifttype/.code=\def\stripes@shifttype{#1}, % set defaults color=black, distance=.3, width=.15cm, height=2cm, initialx=.2, initialy=1, rotate=0, shifttype=xshift, }

\def\stripes@draw{ \begin{scope} \clip \duckpathjacket; \foreach \shifta in {0,\stripes@distance,...,2.4} {\node[rectangle, fill=\stripes@color, draw=\stripes@color, inner sep=0pt, text width=\stripes@width, minimum height=\stripes@height, \stripes@shifttype=\shifta cm, rotate=\stripes@rotate] at (\stripes@initialx,\stripes@initialy) {};} \end{scope} } \makeatother

\tikzset{% pics/soccerball/.style args={#1/#2/#3}{code={% \draw[#3,fill=#1] (0,0) circle [radius=.9]; \begin{scope} \clip (0,0) circle [radius=.9]; \foreach \i in {-.4,.4} \node[regular polygon,regular polygon sides=6,fill=#2,minimum height=3.5ex] at (\i,.4) {}; \foreach \i in {-.8,0,.8} \node[regular polygon,regular polygon sides=6,fill=#2,minimum height=3.5ex] at (\i,-.4) {}; \end{scope} }} } \begin{document} \begin{figure} \centering \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=black] \stripes[color=bluinter] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={bluinter/black/white}}; \end{tikzpicture} \caption{Inter duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=black] \stripes[color=white] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={white/black/black}}; \end{tikzpicture} \caption{Juve duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=black] \stripes[color=red] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={red/black/black}}; \end{tikzpicture} \caption{Milan duck} \end{subfigure} \vspace{4ex}

\begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=green] \stripes \pic[scale=.4, transform shape] at (.2,.3) {soccerball={green/black/black}}; \end{tikzpicture} \caption{M&quot;{o}nchengladbach duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=green,jacket=verdep] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={verdep/green/green}}; \end{tikzpicture} \caption{Palmeiras duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=orange,jacket=orange] \stripes[color=yellow, shifttype=yshift, width=5cm, height=.15cm, distance=.3, initialx=0, initialy=0] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={yellow/orange/black}}; \end{tikzpicture} \caption{Van Duck's team} \end{subfigure} \vspace{4ex}

\begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=white, jacket=blucagliari] \stripes[color=rossocagliari, width=.64cm, distance=3] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={blucagliari/rossocagliari/white}}; \end{tikzpicture} \caption{Cagliari duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=blue, jacket=blue] \stripes[color=white, initialy=.65, height=.6cm, width=3cm] \stripes[color=red, initialy=.7, height=.1cm, width=3cm] \stripes[color=black, initialy=.6, height=.1cm, width=3cm] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={blue/white/black}}; \end{tikzpicture} \caption{Sampdoria duck} \end{subfigure} \begin{subfigure}{0.32\textwidth}\centering \begin{tikzpicture} \aggiusto \duck[tshirt=blue, jacket=blue] \stripes[color=white, rotate=45, width=.25cm, height=1.2cm, initialx=.12, initialy=.9, distance=3] \stripes[color=white, rotate=-70, width=.25cm, height=1.8cm,
initialx=1.26, initialy=.81, distance=3] \pic[scale=.4, transform shape] at (.2,.3) {soccerball={white/blue/black}}; \end{tikzpicture} \caption{Brescia duck} \end{subfigure}

\caption{Soccer ducks} \end{figure}

\end{document}

enter image description here

Cook duck

\documentclass{article}
\usepackage{tikzducks}
\usetikzlibrary{shapes.symbols}
\usepackage{subcaption}

\newcommand{\aggiusto}{\clip (-.6,-.2) rectangle (2.4,3);}

\tikzset{% pics/rollingpin/.style args={#1/#2}{code={% \draw[#2, fill=#1, rotate=45] (.06,.71) -- ++(0,.15) to[out=90, in=90] ++(.07,0) -- ++(0,-.15); \draw[#2, fill=#1, rotate=45] (0,0) to[bend right] ++(.2,0) -- ++(0,.7) to[bend right] ++(-.2,0) -- cycle; \draw[#2, rotate=45] (0,0) to[bend left] ++(.2,0); \draw[#2, fill=#1, rotate=-135] (-.13,0) -- ++(0,.15) to[out=90, in=90] ++(.07,0) -- ++(0,-.15); }}, pics/cookcap/.style args={#1/#2}{code={% \node[cloud,draw=#2,fill=#1, rotate=-30, text width=.4cm, aspect=2, inner ysep=0pt] at (.4,.45) {}; \draw[#2,fill=#1, rotate=-30] (-.1,.38) -- (-.1,0) to[bend right] ++(.42,0) -- ++(0,.38); }}, }

\begin{document} \begin{figure} \centering \begin{tikzpicture} \aggiusto \duck[book=\scalebox{0.35}{\bfseries\hspace{2pt}Pizzas},bookcolour=red] \pic at (.1,.7) {rollingpin={brown/black}}; \pic at (head) {cookcap={white/cyan}}; \end{tikzpicture} \caption*{Cook duck\ (no pineapple pizza on the menu)} \end{figure}

\end{document}

enter image description here

CarLaTeX
  • 62,716
28

Maxwell's demon.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width=.2cm,line cap=round]
  \draw (0,0) circle (1);
  % Eyes
  \filldraw (180:.2) ellipse (.1 and .2);
  \filldraw (180:.65) ellipse (.1 and .2);
  % Mouth
  \draw (200:1) to[out=-20,in=220] (-50:.3);
  % Feet
  \draw (250:1) -- ++(250:.5) -- ++(160:.5);
  \draw (300:1) -- ++(300:.5) -- ++(200:.5);
  % Horns
  \filldraw (120:1) to[out=160,in=-90] (120:2) to[out=-120,in=120] (160:1) arc(160:120:1) -- cycle;
  \filldraw (70:.9) to[out=20,in=-90] (60:2) to[out=-60,in=40] (20:.8) to[bend left] (70:.9) -- cycle;
  % Tail
  \draw (-30:1) to[bend right] (-10:2);
  \filldraw (-10:2) to[bend left] (-5:1.9) to[bend right] (10:2.5) to[bend left] (-12:2.2) to[bend left] (-10:2) -- cycle;
\end{tikzpicture}
\end{document}

enter image description here

Henri Menke
  • 109,596
27

Cat code demonstration for those fortunate enough to be uninitiated.

cat codes

\documentclass[border=11pt,x11names,svgnames,dvipsnames]{standalone}
\usepackage{tikz}
\usetikzlibrary{cathod,positioning}
\begin{document}
\begin{tikzpicture}
  \pic {cath eistedd={enw=bob}};
    \pic at (60mm,0)  {cath eistedd bathodyn={enw=rusty, bathodyn={\textsf{\textbf{\Huge R}}}, lliw=DarkOrange1, llenwi=DarkOrange1, stripiau=OrangeRed3, ceg=Chocolate4, llygaid mewnol=Chartreuse, llygaid allanol=DarkGoldenrod1, trwyn=Orange1, llygaid amlinellol=DarkOrange4, trwyn amlinellol=DarkOrange4, wisgers/.style={DarkOrange4}}};
  \pic [below right=-20mm and 0pt of bob] {cath gorwedd={enw=dilly, llenwi=white, stripiau=gray, llygaid mewnol=cyan, llygaid allanol=blue!50!cyan, trwyn=pink}};
\end{tikzpicture}
\end{document}

One or more of these cats have appeared in

cfr
  • 198,882
  • Your code is not compilable, we miss the cathod tikzlibrary. – CarLaTeX Aug 19 '17 at 02:20
  • @CarLaTeX As I said above, I don't know where the code here is. I used the one on my machine, but that one won't work for anybody else. More importantly, I think it exceeds the character limit. – cfr Aug 19 '17 at 02:32
  • @CarLaTeX Isn't there a 30,000 character limit? Otherwise, I could post mine. (It will only work for me as is, but it would not be hard to make it work elsewhere. Or I could post it with the thing it depends on, but, again, it is going to exceed the total limit.) Really, it could be reduced and would be better for stream-lining, but that would take a while ;). – cfr Aug 19 '17 at 02:35
  • @CarLaTeX An earlier version of the code for one of them is at https://tex.stackexchange.com/a/219610/ and should work generally. (It is not a library yet and there is much less of it.) – cfr Aug 19 '17 at 02:39
  • @CarLaTeX I found the other place - it's on meta .... – cfr Aug 19 '17 at 02:50
  • I love your cats! The way the whisker is bend they look really friendly! – samcarter_is_at_topanswers.xyz Aug 19 '17 at 10:43
  • @samcarter Thanks! Your ducks are much more professional, but I'm quite fond of my cats, I must admit ;). The code is a bit buggy. At least, the library version I'm using is. If I'm not careful, two cats get mixed up. I guess it might work for Schrödinger's cats :-). I need a way to 'flatten' each cat after it is drawn .... – cfr Aug 19 '17 at 12:50
  • 3
    If there’s tikzducks and tikzpeople, CTAN needs a tikzcats package. Please, please, please, on behalf of all crazy cat-ladies! – Thérèse Aug 19 '17 at 15:02
  • @Thérèse The trouble is that if you put one in front of another in the wrong way, they interact like an uncollapsed Schrödinger's cats. (I know he only had the one cat and you do need two to generate interference with mine, but, then, mine are all at the macro level.) I don't know how to 'flatten' them. The only idea I've had is to draw the cat in a box and then use the box. But I'm not sure how to do this without nesting tikzpictures. – cfr Aug 19 '17 at 21:50
  • I did look at @samcarter's code to see how he avoids duck interactions, but he's not drawing them the way I'm drawing the cats. – cfr Aug 19 '17 at 21:51
  • 2
    @Thérèse And my code is much less professional than the others'. You can't dress my cats up or arm them with swords or have them play soccer or ... anything. They lie there or sit there and that's it! (Maybe I could argue that's because their cats?) – cfr Aug 19 '17 at 21:53
  • @Thérèse I'll think about it .... I'll see. Might take a little while, though. – cfr Aug 19 '17 at 21:53
  • 1
    @cfr As I don't really know what I am actually doing (I don't know anything about tikz), it is actually not surprising that I draw them in another way then someone who knows tikz :) I agree with Therese, a cat package would be lovely! – samcarter_is_at_topanswers.xyz Aug 19 '17 at 22:09
  • @samcarter Liar! – cfr Aug 19 '17 at 23:16
  • 3
    Yes, they just lie or sit there because they’re cats. Beautiful cats who need no dressing up. ;-) – Thérèse Aug 20 '17 at 00:21
  • @cfr - superficially convincing explanation, but what about active cat codes? – Michael Palmer Aug 27 '17 at 01:12
  • 2
    @MichaelPalmer Aha! An argument against my needing to make a package of it - thank you :-). – cfr Aug 27 '17 at 01:25
26

(continuation from the previous answer due to lengths constraints)

Zorro duck

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \duck[cape=black,hat=black]
    \begin{scope}
        \clip (0.90,1.50) ellipse (0.50 and 0.625);
        \fill[black,rotate=-15] (-0.1,1.59) rectangle (1.3,1.88);
    \end{scope}
    \fill[white!85!yellow, rotate=-20] (0.23,1.7675) ellipse (0.0893 and 0.125);
    \fill[black, rotate=-20] (0.26,1.7575) ellipse (0.0357 and 0.0714);
    \fill[white!85!yellow, rotate=-20] (-0.06,1.74) ellipse (0.0786 and 0.1143);
    \fill[black, rotate=-20] (-0.03,1.73) ellipse (0.0286 and 0.0643);
    \node[rotate=-5] at (0.4,0.7) {\fontfamily{pzc}\selectfont zzz};
    \fill[black,rotate=24] (0.1,0.21) rectangle (1.1,0.23);
    \fill[black,rotate=24] (1.2,0.22) ellipse (0.15 and 0.03);
    \fill[black,rotate=24] (1.08,0.22) ellipse (0.03 and 0.15);
\end{tikzpicture}   

\end{document}

enter image description here

Frosty duck

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \fill[blue!15!white] (0,0) rectangle (2.2,2.5);
    \duck[body=white,eye=white,tophat=black]
    \draw[very thick] (0.9,0.3) -- (1.2,1) (1.2,1) -- (1,1.3) (1.2,1) -- (1.3,1.3) (1.2,1) -- (1.5,1.4) (1.32,1.15) -- (1.6,1.3) ;
    \fill[black] (0.53,0.75) circle (0.05);
    \fill[black] (0.5,0.6) circle (0.05);
    \fill[black] (0.47,0.45) circle (0.05);
\end{tikzpicture}   

\end{document}

enter image description here

Happy Christmas to all of you!

(The following code needs the development version of the tikzducks https://github.com/samcarter/tikzducks/blob/master/tikzducks.sty )

\documentclass{standalone}
\usepackage{tikzducks}
\definecolor{fskin}{RGB}{161,140,126}%
\definecolor{fbill}{RGB}{238,212,191}%
\definecolor{fhair}{RGB}{89,72,72}%
\definecolor{crown}{RGB}{255,220,123}
\definecolor{skin}{RGB}{255,215,146}

\begin{document}

\begin{tikzpicture}

\fill[blue!20!white] (-1.5,-0.7) rectangle (19.2,7.2);

% sheep #1
\begin{scope}[xscale=-0.6,yscale=0.6]
    \duck[body=white!80!brown, bill=white!60!brown, sheep]
\end{scope}

% donkey
\begin{scope}[xscale=-0.8,yscale=0.8,xshift=-70,yshift=10]
    \duck[body=fskin,bill=fbill,shorthair=fhair,bunny,inear=fbill]
    \node[fskin,rotate=150,scale=3] at (1.75,1.59) {\reflectbox{\small\textsf{s}}};
    \fill[fhair,rotate=45] (2.65,0.05) ellipse (0.15 and 0.07); 
\end{scope}  

% building
\begin{scope}[scale=0.038,yshift=300,xshift=-1500]
    \path[draw=brown!50!black,line width=6.000pt] (129.0546,0.7705) .. controls (122.1203,65.4904) and (113.6451,66.6461) .. (113.6451,66.6461) -- (113.6451,66.6461) (91.3013,59.3266) .. controls (92.3303,59.5764) and (93.3577,59.8332) .. (94.3832,60.0971) .. controls (139.4171,71.6830) and (180.7789,97.1457) .. (211.4045,132.1365) .. controls (242.2399,97.1582) and (283.7423,71.7125) .. (328.9019,60.0971) .. controls (329.9275,59.8333) and (330.9548,59.5765) .. (331.9838,59.3266) (294.2305,0.7705) .. controls (301.1648,65.4904) and (309.6400,66.6461) .. (309.6400,66.6461) -- (309.6400,66.6461);
\end{scope}

% Mary
\begin{scope}[xscale=-1,yshift=15,xshift=-150]
    \duck[tshirt=blue!30!gray,longhair,body=skin]
\end{scope} 

% crib
\begin{scope}[scale=0.25,xshift=650,yshift=145]
    \duck
\end{scope}
\begin{scope}[scale=0.038,yshift=1200,xshift=4100]
    \path[draw=brown,line join=miter,line cap=butt,miter limit=10.00,line width=1.275pt] (5.6693,-15.5908) -- (22.6775,-28.3468)(22.6775,-15.5908) -- (5.6693,-28.3468);
    \path[fill=brown,nonzero rule] (0.0000,-5.6693) -- (28.3468,-5.6693) -- (22.6775,-17.0082) -- (5.6693,-17.0082);
\end{scope}

% Joseph
\begin{scope}[xscale=1,yshift=10,xshift=190]
    \duck[tshirt=red!30!brown,shorthair=brown!50!black,body=skin]
\end{scope} 

% sheep #2
\begin{scope}[xscale=0.6,yscale=0.6,yshift=10,xshift=455]
    \duck[body=white!80!brown, bill=white!60!brown, sheep]
\end{scope}

% Magi #1
\begin{scope}[yshift=-20,xshift=360]
    \duck[tshirt=green!10!brown,shorthair=brown,crown=crown,body=skin,jacket=green!30!brown,buttons=green!10!brown!80!black,cake]
\end{scope}

% Magi #2   
\begin{scope}[yshift=0,xshift=420]
    \duck[tshirt=red!30!brown,shorthair=brown!45!black,crown=crown!70!yellow,body=skin!30!brown!80!black,bill=orange!50!brown!65!black,jacket=red!30!brown!80!black,beard,buttons=brown!45!black,pizza]
\end{scope}

% Magi #3   
\begin{scope}[yshift=-10,xshift=480]
    \duck[tshirt=teal!30!brown,shorthair=brown!65!red,crown=crown!80!yellow,body=skin!90!white,jacket=teal!30!brown!80!black,buttons=white!50!brown,wine]
\end{scope} 

% comet
\begin{scope}[xscale=0.03,yscale=-0.03,yshift=-7000,xshift=-2000]
    \path[fill=crown!80!yellow] (238.7832,10.0000) -- (234.8516,26.2656) -- (218.1582,27.4336) -- (230.2793,38.9707) -- (222.9434,54.0117) -- (238.9961,49.2832) -- (248.3535,63.1562) -- (252.2852,46.8906) -- (268.9785,45.7227) -- (261.8457,38.9336) .. controls (270.2556,38.8419) and (278.6830,40.2309) .. (286.5977,43.0781) .. controls (298.4672,47.3482) and (309.1501,54.8655) .. (317.1777,64.5957) .. controls (319.3767,67.2610) and (321.3804,70.0887) .. (323.1660,73.0469) -- (316.1934,49.2793) -- (325.9688,44.4219) .. controls (323.7865,42.0532) and (321.4179,39.8563) .. (318.8926,37.8574) .. controls (309.1476,30.1439) and (297.0216,25.4810) .. (284.6191,24.6797) .. controls (276.2092,24.1363) and (267.6990,25.3763) .. (259.7676,28.2207) -- (264.1934,19.1445) -- (248.1406,23.8730) -- (238.7832,10.0000) -- cycle;
\end{scope}

\end{tikzpicture}

\end{document}

enter image description here

Astro duck

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
\duck[glasses];

\begin{scope}[scale=0.7,yshift=90,xshift=10]
\fill[gray] (-2.9466,0.3003) -- (-3.1837,-0.4402) -- (-2.7744,-0.5708) -- (-2.7308,-0.4348) -- (-1.8176,-0.7262) -- (-2.6937,-2.5325) -- (-2.4891,-2.6173) -- (-1.7766,-1.1484) -- (-1.7910,-2.8438) -- (-1.5698,-2.8326) -- (-1.5560,-1.2208) -- (-0.8785,-2.6173) -- (-0.6739,-2.5325) -- (-1.5011,-0.8272) -- (-0.3532,-1.1935) -- (-0.3096,-1.0574) -- (-0.1147,-1.1196) -- (-0.0566,-0.9382) -- (-0.2516,-0.8760) -- (-0.2032,-0.7249) -- (-2.5809,0.0337) -- (-2.5373,0.1697) -- (-2.9466,0.3003) -- cycle;
\end{scope}
\end{tikzpicture}

\end{document}

enter image description here

Harlequin duck

\documentclass{standalone}

\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
\duck[harlequin,jacket=red,stripes={\stripes[color=blue, width=0.46, distance=3]}]
\end{tikzpicture}

\end{document}

enter image description here

Arara

\documentclass{standalone}

\usepackage{tikzducks}


\begin{document}

\begin{tikzpicture}[scale=4]
\duck[parrot,bill=gray!80!black]
\shade[left color=cyan!90!blue,right color=blue!70!black] \duckpathwing;
\shade[bottom color=yellow!70!brown, top color=green!40!teal] \duckpathcrazyhair;
\shade[bottom color=yellow!70!brown, top color=cyan!90!blue]
        (1.56,1.76) .. controls (1.60,1.74) and (1.62,1.72) .. (1.63,1.69) .. controls (1.67,1.63) and (1.71,1.55) .. (1.69,1.47) .. controls (1.67,1.40) and (1.65,1.31) .. (1.66,1.23) .. controls (1.66,1.20) and (1.69,1.19) .. (1.72,1.18) .. controls (1.77,1.17) and (1.82,1.19) .. (1.87,1.20) .. controls (1.94,1.22) and (2.01,1.24) .. (2.08,1.27) .. controls (2.13,1.30) and (2.16,1.35) .. (2.16,1.40) .. controls (2.15,1.45) and (2.14,1.50) .. (2.11,1.54) .. controls (2.08,1.55) and (2.09,1.50) .. (2.08,1.49) .. controls (2.06,1.42) and (2.01,1.37) .. (1.95,1.35) .. controls (1.93,1.33) and (1.97,1.36) .. (1.97,1.38) .. controls (1.99,1.44) and (1.97,1.50) .. (1.94,1.55) .. controls (1.91,1.60) and (1.89,1.64) .. (1.85,1.67) .. controls (1.83,1.68) and (1.85,1.63) .. (1.85,1.61) .. controls (1.87,1.55) and (1.87,1.48) .. (1.83,1.43) .. controls (1.83,1.50) and (1.80,1.56) .. (1.76,1.61) .. controls (1.72,1.67) and (1.67,1.71) .. (1.61,1.75) .. controls (1.61,1.76) and (1.60,1.76) .. (1.60,1.76) -- cycle;
\end{tikzpicture}

\end{document}

enter image description here

Don Camillo and Peppone

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}


\begin{tikzpicture}[xscale=-1]
    \selectcolormodel{gray}
    \duck[tshirt=white,jacket=brown!50!black,buttons=gray,hat=brown!50!black,tie=brown,stripes={
     \stripes[rotate=0,width=0.02,color=gray,distance=0.1]}]
     \begin{scope}[xshift=62,yshift=1,xscale=-1]
\fill[gray!50!black] (1.8158,1.4731) .. controls (1.5890,1.5312) and (1.5142,1.3598) .. (1.2808,1.3608) .. controls (1.1720,1.2048) and (1.9376,1.4368) .. (1.8158,1.4731) -- cycle;
\end{scope}
\end{tikzpicture}   


\begin{tikzpicture}
    \selectcolormodel{gray}
    \duck[tshirt=black,buttons=gray,laughing]
 \fill[black, start angle=0, end angle=150, radius=0.5] (1.4,1.75) arc;
   \fill[black,rotate=-15] (0.44,2.1) ellipse (0.6 and 0.1);
    \fill[white,rotate=-12] (0.32,1.) rectangle (0.43,1.15);
\end{tikzpicture}   


\end{document}

enter image description here

Zebra

\documentclass{standalone}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \fill[brown!50!white] (0,0) rectangle (3,2.6);
        \begin{scope}[yshift=-6]
            \clip[rotate=-5] (0.68,2.38) ellipse (0.3 and 0.4);
            \fill[gray!10!white,rotate=-5] (0.28,2.26) ellipse (0.3 and 0.4);
        \end{scope}
    \duck[body=gray!10!white,stripes={\stripes[distance=0.25,width=0.125,rotate=0,initialx=0.06]},horsetail,mohican=black]
        \begin{scope}[yshift=-5,xshift=1]
            \clip[rotate=-5] (0.68,2.38) ellipse (0.3 and 0.4);
            \fill[gray!10!white,rotate=-5] (1.06,2.2) ellipse (0.3 and 0.4);
        \end{scope}
\end{tikzpicture}

\end{document}

enter image description here

25

Ducks love pizza, swimming and a little diving:enter image description here

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% uncomment \def\export{} below to export animation
%% to multipage PDF a.pdf and run
%% 
%%  convert -density 300 -delay 4 -loop 0 -alpha remove a.pdf b.gif
%%
%% to get an animated GIF b.gif at 100/4 = 25 frames per s
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\export{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\ifdefined\export
  \documentclass[export]{standalone}
\else
  \documentclass{standalone}
\fi  

\usepackage{animate}
\usepackage{xsavebox}
\usepackage{tikzducks}
\usepackage{graphicx}
\usetikzlibrary{shapes.callouts,calc}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% adjustable parameter: frame number; 
%% enlarge for smoothness 
\newcommand\framefac{2} % times 72
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand\DuckSong[1]{\ifcase#1
All%
\or
my%
\or
little%
\or
ducklings,%
\or
Swimming%
\or
in%
\or
the%
\or
lake,%
\or
Heads%
\or
dunk%
\or
in%
\or
the%
\or
water,%
\or
As%
\or
little%
\or
tails%
\or
do%
\or
shake.%
\fi%
}

\ExplSyntaxOn
\let\intEval\int_eval:n
\let\intMod\int_mod:nn
\let\intComp\int_compare:nTF
\let\intCase\int_case:nnF
\ExplSyntaxOff

\begin{document}

\xsbox{Duck}{\tikz{\duck}}%
\xsbox{CarlaDuck}{\tikz{\duck[pizza,squareglasses=brown!50!black,longhair=black!70!brown]}}%
\xsbox{Boat}{\tikz{%
  \filldraw[fill=white,line width=0.1pt] (0.6,0.71)--(1,1.2)--(1.4,0.71)--(1,0.6)--cycle;
  \node[scale=0.1,rotate=10,anchor=south east] at (2.3,0.9) {\includegraphics{pauloTransp}};
  \filldraw[fill=white,line width=0.1pt] (0,0)--(2,0)--(2.4,1)--(1,0.6)--(-0.4,1)--cycle;}}%
\begin{animateinline}[autoplay, loop, controls=false]{25}
  \multiframe{\intEval{72*\framefac}}{iX=0+1}{
  \begin{tikzpicture}
    \fill[use as bounding box,white!90!blue] (-1,-1) rectangle (7.2,3);
    \node[scale=2,anchor=center,rotate=6*cos(360/(72*\framefac-1)*\iX)] at ({-3.8+\iX*13.8/(72*\framefac-1)},{0.9+0.1*sin(360/(72*\framefac-1)*\iX)}){\theBoat};
    \fill[blue!60!black] plot[variable=\x,domain=-1:7.2,samples=82] ({\x},{0.1+0.3*sin(100*(\x-0.5*\iX/10/\framefac))})--(7.2,-1)--(-1,-1)--(-1,0);
    \fill[blue] plot[variable=\x,domain=-1:7.2,samples=82] ({\x},{0.05+0.3*sin(100*(\x-\iX/10/\framefac))})--(7.2,-1)--(-1,-1)--(-1,0);
    \node[rotate=27.63*cos(100*(2.2-\iX/10/\framefac))] (duck) at ({2.2},{0.95+0.3*sin(100*(2.2-\iX/10/\framefac))}){\theCarlaDuck};
    \node[ellipse callout,text width=3.5em,align=center,draw,anchor=east,callout absolute pointer={($(duck.west)+(0.3,0.1)$)},fill=white] (song)
      at ($(duck)+(-1,1)$) {\makebox[0pt][c]{\DuckSong{\intEval{(\iX-\intMod{\iX}{4*\framefac})/(4*\framefac)}}}};
    \foreach \duckscal/\duckoff in {0.3/0,0.25/1,0.2/2,0.15/3,0.12/4}  
      \node[
        rotate=\intComp{\duckoff<4}{0}{\intComp{\iX<36*\framefac}{0}{
        \intCase{\iX}{{36*\framefac}{22.5}{36*\framefac+1}{45}{36*\framefac+2}{67.5}{72*\framefac-3}{67.5}{72*\framefac-2}{45}{72*\framefac-1}{22.5}}{90}}}
        +27.63*cos(100*(3.6+\duckoff*0.7-\iX/10/\framefac)),scale=\duckscal,anchor=south] at ({3.6+\duckoff*0.7},{0.3*sin(100*(3.6+\duckoff*0.7-\iX/10/\framefac))-0.04}){\theDuck};
    \fill[blue] plot[variable=\x,domain=-1:7.2,samples=82] ({\x},{0.3*sin(100*(\x-\iX/10/\framefac))})--(7.2,-1)--(-1,-1)--(-1,0);
    \fill[blue!60!white] plot[variable=\x,domain=-1:7.2,samples=82] ({\x},{0.3*sin(100*(\x-2*\iX/10/\framefac))-0.2})--(7.2,-1)--(-1,-1)--(-1,0);
    \draw[white,line width=1pt] (-1,-1) rectangle (7.2,3);
  \end{tikzpicture}
  }
\end{animateinline}

\end{document}

For compilation, you need ↗Paulo, the Captain. Save it as pauloTransp.png in the current directory.

By default, the code compiles to a single-page PDF with an embedded animation. It requires Acrobat Reader for viewing. For producing an animated GIF, as shown above, follow instructions in the code.

AlexG
  • 54,894
21

The following examples part of the TikZlings, now also available as package on CTAN: https://www.ctan.org/pkg/tikzlings

Teddy bear:

\documentclass{standalone}
\usepackage{tikz}

\usepackage{tikzducks}

\begin{document} \begin{tikzpicture} % mitte: x=0.925

% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!70!black] (0.925,0.75) ellipse (0.55 and 0.65); \fill[brown!50!white] (0.925,0.7) ellipse (0.35 and 0.4);

% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!70!black] (1.35,0.3) circle (0.28); \fill[brown!70!black] (0.50,0.3) circle (0.28); \fill[brown!50!white] (1.35,0.3) circle (0.17); \fill[brown!50!white] (0.50,0.3) circle (0.17);

% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!70!black] (1.30,1.95) circle (0.15); \fill[brown!70!black] (0.55,1.95) circle (0.15); \fill[brown!50!white] (1.30,1.95) circle (0.1); \fill[brown!50!white] (0.55,1.95) circle (0.1);

% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!70!black] (0.925,1.55) circle (0.5);

% Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!50!white] (0.925,1.4) ellipse (0.28 and 0.2); \fill[brown!70!white!80!red] (0.925,1.5) ellipse (0.15 and 0.08);

% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!30!black] (0.77,1.7) circle (0.05); \fill[brown!30!black] (1.08,1.7) circle (0.05);

% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \draw[brown!30!black] (1.07,1.38) arc [start angle=-20, end angle=-160, radius=0.16];

% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[brown!70!black,rotate around={-50:(1.45,0.9)}] (1.45,0.9) ellipse (0.35 and 0.15); \fill[brown!70!black,rotate around={50:(0.4,0.9)}] (0.4,0.9) ellipse (0.35 and 0.15);

\duck[invisible,tophat]

\end{tikzpicture} \end{document}

enter image description here

Pingu:

\documentclass{standalone}

\makeatletter \RequirePackage{tikz}

\newcommand*{\penguin}[1][]{% \begin{scope}% \tikzset{/penguin/.cd,#1}% \penguin@draw% \end{scope}% }

\newif\ifpenguin@name \newif\ifpenguin@threeD

\tikzset{ % % Pass unknown keys on to tikz % /penguin/.search also={/tikz,/pgf}, /penguin/.cd, name/.code = \penguin@nametrue \def\penguin@name{#1}, % % body % body/.code = \def\penguin@body{#1}, body = black, belly/.code = \def\penguin@belly{#1}, belly = white!95!black, feet/.code = \def\penguin@feet{#1}, feet = yellow!50!orange, bill/.code = \def\penguin@bill{#1}, bill = orange,
eye/.code = \def\penguin@eye{#1}, eye = white!95!black, pupil/.code = \def\penguin@pupil{#1}, pupil = black, % % options % 3D/.code = \penguin@threeDtrue, }

\def\penguin@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (0.06,0.15) rectangle (1.8,2.13); % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % switch between 2D and 3D, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifpenguin@threeD \def\penguin@part@draw##1{\shade[ball color=##1]} \else \def\penguin@part@draw##1{\fill[##1]} \fi % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \penguin@part@draw{\penguin@body,rotate around={-50:(1.5,1.2)}} (1.5,1.2) ellipse (0.38 and 0.1); \penguin@part@draw{\penguin@body,rotate around={50:(0.35,1.2)}} (0.35,1.2) ellipse (0.38 and 0.1);
% % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \penguin@part@draw{\penguin@body} (1.52,0.92) .. controls (1.52,0.26) and (1.28,0.18) .. (0.95,0.18) .. controls (0.61,0.18) and (0.32,0.26) .. (0.32,0.92) .. controls (0.32,1.58) and (0.59,2.11) .. (0.92,2.11) .. controls (1.25,2.11) and (1.52,1.58) .. (1.52,0.92) -- cycle; % % Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \penguin@part@draw{\penguin@belly} (0.925,0.6) ellipse (0.48 and 0.35); % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{scope}[xshift=4] \penguin@part@draw{\penguin@feet} (0.5319,0.3941) .. controls (0.5138,0.4505) and (0.4245,0.6014) .. (0.3275,0.6533) .. controls (0.2261,0.7075) and (0.2214,0.6369) .. (0.2428,0.5960) .. controls (0.2712,0.5416) and (0.2237,0.5302) .. (0.1952,0.5384) .. controls (0.1022,0.5653) and (0.0298,0.5169) .. (0.1131,0.4340) .. controls (0.1335,0.4137) and (0.2100,0.3557) .. (0.0982,0.3492) .. controls (0.0250,0.3450) and (0.0181,0.2680) .. (0.1082,0.2445) .. controls (0.2000,0.2206) and (0.3206,0.2043) .. (0.4571,0.2096) .. controls (0.5454,0.2131) and (0.5602,0.3059) .. (0.5319,0.3941) -- cycle; \end{scope} \begin{scope}[xshift=49,xscale=-1] \penguin@part@draw{\penguin@feet} (0.5319,0.3941) .. controls (0.5138,0.4505) and (0.4245,0.6014) .. (0.3275,0.6533) .. controls (0.2261,0.7075) and (0.2214,0.6369) .. (0.2428,0.5960) .. controls (0.2712,0.5416) and (0.2237,0.5302) .. (0.1952,0.5384) .. controls (0.1022,0.5653) and (0.0298,0.5169) .. (0.1131,0.4340) .. controls (0.1335,0.4137) and (0.2100,0.3557) .. (0.0982,0.3492) .. controls (0.0250,0.3450) and (0.0181,0.2680) .. (0.1082,0.2445) .. controls (0.2000,0.2206) and (0.3206,0.2043) .. (0.4571,0.2096) .. controls (0.5454,0.2131) and (0.5602,0.3059) .. (0.5319,0.3941) -- cycle; \end{scope} % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{scope}[xshift=2,yshift=-1] \fill[\penguin@eye, rotate=-10] (0.38,1.7675) ellipse (0.1 and 0.15); \penguin@part@draw{\penguin@pupil, rotate=-10} (0.41,1.7575) ellipse (0.0357 and 0.0714); \end{scope} \begin{scope}[xshift=-2,yshift=-1] \fill[\penguin@eye, rotate=10] (1.43,1.44) ellipse (0.1 and 0.15); \penguin@part@draw{\penguin@pupil, rotate=10} (1.4,1.43) ellipse (0.0357 and 0.0714); \end{scope}
% % Bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \penguin@part@draw{\penguin@bill} (1.2480,1.4591) .. controls (1.0717,1.3257) and (1.0316,1.4365) .. (0.9225,1.4358) .. controls (0.8205,1.4353) and (0.7596,1.3468) .. (0.6178,1.4542) .. controls (0.8470,0.9682) and (1.1004,1.1827) .. (1.2480,1.4591) -- cycle; % } \makeatother

\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture} \penguin \duck[invisible,tophat=gray!60!black] \end{tikzpicture}

\begin{tikzpicture} \penguin[3D] \end{tikzpicture}

\end{document}

enter image description here

20

Sadly, the code for Mr. Dinosaur is too long, so I have to link it externally here.

For those who are wondering who is this bloke, here is a reference background (from Peppa Pig Wiki): Mr. Dinosaur ​is George Pig's favourite toy, based on a T-Rex.

The integration with tikzducks is quite straightforward:

\begin{tikzpicture}
\duck[cap]
\node [xshift=15] at (wing) {\scalebox{.12}{\mrdinosaur}};
\end{tikzpicture}

George duck

Dinosaur! Grrrr! :)

Paulo Cereda
  • 44,220
19

A video has been made with the help of the tikzducks package.

enter image description here

The complete video is here https://vimeo.com/246256860

The code is on github (too large and too many files for an answer) https://github.com/cereda/duck-extravaganza

A few teasers:

enter image description here

enter image description here

Ulrike Fischer
  • 327,261
19

Finally, a marmot!

\documentclass[12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\usetikzlibrary{shapes.callouts}
\begin{document}
\begin{tikzpicture}
%right foot
\begin{scope}[transform canvas={xshift=-0.03cm,yshift=0.12cm},scale=0.7]
%\draw[smooth,blue,thick] plot coordinates 
\shade[smooth,upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.4,0)(2,0.08)(3,0.08)(3.6,0.3)(3,0.5)(2.4,0.65)(2,0.6)(1.6,0.4)(1.4,0)};
\end{scope}
%\draw[smooth,blue,thick] plot coordinates %left foot
\shade[smooth,upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.4,0)(2,0.08)(3,0.08)(3.6,0.3)(3,0.5)(2.4,0.65)(2,0.6)(1.6,0.4)(1.4,0)};
%\draw[smooth,blue,thick] plot coordinates %body
\shade[smooth,upper left=brown!70!black,upper right=brown,lower left=black!50!brown,upper
    right=orange,lower right=orange!50!brown,smooth] plot coordinates
{(1.8,8.85)(1.3,8)(1,7)(0.97,6)(1,5)(1.18,4)(1.25,3)(1.39,2)(1.6,1)(1.8,0.6)(2,0.4)(3,0.2)(4,0)(5,0.1)(6,0.3)(6.6,0.45)(7,0.5)%tail
(8,0.7)(8.5,1)(9,1.45)(9.3,2)(9.4,2.6)(9.35,3)(9.2,3.48)(9,3.6)(8.9,3.6)(8.6,3.5)(8.48,3)(8.4,2.4)(8.3,2)(8,1.6)(7.6,1.35)(7.4,1.3)(7.2,1.35)(6.95,1.35)%end tail
(6.82,2)(6.65,3)(6.45,4)(6.28,5)(6.22,6)(6.03,7)(5.85,8)(5.75,9)(5.55,10)(5.25,11)%ear position
(4.5,12)(4,12.1)(3,12.15)(2.5,12.15)(2,11.85)(1.1,11.3)%nose position
(0.8,11.1)(0.65,11)(0.6,10.8)(0.8,10)(1,9.6)(1.4,9.15)(1.8,8.85)};
%\draw[smooth,blue,thick] plot coordinates %face
\shade[smooth,upper left=white!90!black,upper right=white!80!black,lower
left=white!75!black,upper right=white!85!black,lower right=orange!50!brown,smooth] plot coordinates
{(2.6,8.6)(2.5,9)(2.4,9.5)(2.45,10)(2,10.8)(1.8,11)(1.1,11.3)%from now on as above
(0.8,11.1)(0.65,11)(0.6,10.8)(0.8,10)(1,9.6)(1.4,9.15)(1.8,8.85)};
%\draw[smooth,blue,thick] plot coordinates %nose
\shade[smooth,upper right=white,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.1,11.3)(0.8,11.1)(0.65,11)(0.6,10.8)(0.7,10.45)(1,10.5)(1.3,10.8)(1.3,11)(1.1,11.3)};
\shade[smooth,upper right=black!80!white,lower left=black,lower right=black,upper left=black] plot coordinates %mouth
{(0.8,10)(1.2,9.8)(1.5,10)(1.4,9.6)(1.2,9.5)(1,9.6)(0.8,10)};
\draw[smooth,black,thick,fill=white] plot coordinates %teeth
{(1,9.82)(1,9.55)(1.1,9.53)(1.11,9.73)(1.12,9.51)(1.22,9.51)(1.32,9.84)(1.33,9.86)(1,9.82)};
\draw[smooth,brown,thick] plot coordinates %chin
{(1.8,8.85)(2.6,8.6)(3,8.58)(4,8.5)};
%\draw[smooth,blue,thick] plot coordinates %ears
\shade[smooth,upper left=brown!70!black,upper right=brown!80!black,lower left=black!50!brown,upper
    right=orange!20!brown,lower right=orange!25!brown,smooth] plot coordinates
{(4.9,11.1)(5.4,11.4)(5.4,11.8)(5.2,11.95)(4.8,11.9)(4.6,11.6)(4.9,11.1)};
\shade[smooth,upper left=white](2.8,10.8) circle (0.4); %outer eye
\shade[upper right=white,lower left=black,lower right=black,upper left=black](2.74,10.8) circle (0.27); inner eye
\begin{scope}[transform canvas={xshift=-0.5cm,yshift=0}]
%\draw[smooth,black,thick] plot coordinates %left arm
\shade[upper left=brown!70!black,upper right=brown!80!black,lower left=black!50!brown,upper
    right=orange!20!brown,lower right=orange!25!brown,smooth] plot coordinates
{(3.5,5.6)(2.5,5.5)(1.35,5.85)(1.2,6)(1.3,6.3)(1.35,6.4)(2.4,6.8)(3,7)(3.5,5.6)};
%\draw[smooth,blue,thick] plot coordinates %left claws
\shade[upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(0.8,5.2)(1,5.6)(1.6,6)(1.62,6.2)(1.5,6.5)(1,6.45)(0.75,6.2)(0.6,6)(0.5,5.5)(0.75,5.65)(0.8,5.2)};
\end{scope}
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(1.5,-1)},fill=white] at (-1.4,11.3) (hallo) {I love ducks!};
\end{tikzpicture}
\end{document}

enter image description here

There are claims that marmots are very relevant to string theory...

\documentclass[border=4pt,12pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\usetikzlibrary{shapes.callouts}
\begin{document}
\begin{tikzpicture}[font=\sffamily]
%right foot
\begin{scope}[transform canvas={xshift=-0.03cm,yshift=0.12cm},scale=0.7]
%\draw[smooth,blue,thick] plot coordinates 
\shade[smooth,draw=white,upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.4,0)(2,0.08)(3,0.08)(3.6,0.3)(3,0.5)(2.4,0.65)(2,0.6)(1.6,0.4)(1.4,0)};
\end{scope}
\begin{scope}[transform canvas={yshift=-0.13cm,xshift=0.32cm}]
%\draw[smooth,blue,thick] plot coordinates %left foot
\shade[smooth,draw=white,upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.4,0)(2,0.08)(3,0.08)(3.6,0.3)(3,0.5)(2.4,0.65)(2,0.6)(1.6,0.4)(1.4,0)};
\end{scope}
%\draw[smooth,blue,thick] plot coordinates %body
\shade[smooth,upper left=brown!70!black,upper right=brown,lower left=black!50!brown,upper
    right=orange,lower right=orange!50!brown,smooth] plot coordinates
{(1.8,8.85)(1.3,8)(1,7)(0.97,6)(1,5)(1.18,4)(1.25,3)(1.39,2)(1.6,1)(1.8,0.6)(2,0.4)(3,0.2)(4,0)(5,0.1)(6,0.3)(6.6,0.45)(7,0.5)%tail
(8,0.7)(8.5,1)(9,1.45)(9.3,2)(9.4,2.6)(9.35,3)(9.2,3.48)(9,3.6)(8.9,3.6)(8.6,3.5)(8.48,3)(8.4,2.4)(8.3,2)(8,1.6)(7.6,1.35)(7.4,1.3)(7.2,1.35)(6.95,1.35)%end tail
(6.82,2)(6.65,3)(6.45,4)(6.28,5)(6.22,6)(6.03,7)(5.85,8)(5.75,9)(5.55,10)(5.25,11)%ear position
(4.5,12)(4,12.1)(3,12.15)(2.5,12.15)(2,11.85)(1.1,11.3)%nose position
(0.8,11.1)(0.65,11)(0.6,10.8)(0.8,10)(1,9.6)(1.4,9.15)(1.8,8.85)};
%\draw[smooth,blue,thick] plot coordinates %face
\shade[smooth,upper left=white!90!black,upper right=white!80!black,lower
left=white!75!black,upper right=white!85!black,lower right=orange!50!brown,smooth] plot coordinates
{(2.6,8.6)(2.5,9)(2.4,9.5)(2.45,10)(2,10.8)(1.8,11)(1.1,11.3)%from now on as above
(0.8,11.1)(0.65,11)(0.6,10.8)(0.8,10)(1,9.6)(1.4,9.15)(1.8,8.85)};
%\draw[smooth,blue,thick] plot coordinates %nose
\shade[smooth,upper right=white,lower left=black,lower right=black,upper left=black] plot coordinates
{(1.1,11.3)(0.8,11.1)(0.65,11)(0.6,10.8)(0.7,10.45)(1,10.5)(1.3,10.8)(1.3,11)(1.1,11.3)};
\shade[smooth,upper right=black!80!white,lower left=black,lower right=black,upper left=black] plot coordinates %mouth
{(0.8,10)(1.2,9.8)(1.5,10)(1.4,9.6)(1.2,9.5)(1,9.6)(0.8,10)};
\draw[smooth,black,thick,fill=white] plot coordinates %teeth
{(1,9.82)(1,9.55)(1.1,9.53)(1.11,9.73)(1.12,9.51)(1.22,9.51)(1.32,9.84)(1.33,9.86)(1,9.82)};
\draw[smooth,brown,thick] plot coordinates %chin
{(1.8,8.85)(2.6,8.6)(3,8.58)};
%\draw[smooth,blue,thick] plot coordinates %ears
\shade[smooth,upper left=brown!70!black,upper right=brown!80!black,lower left=black!50!brown,upper
    right=orange!20!brown,lower right=orange!25!brown,smooth] plot coordinates
{(4.9,11.1)(5.4,11.4)(5.4,11.8)(5.2,11.95)(4.8,11.9)(4.6,11.6)(4.9,11.1)};
\shade[smooth,upper left=white](2.8,10.8) circle (0.4); %outer eye
\shade[upper right=white,lower left=black,lower right=black,upper left=black](2.74,10.8) circle (0.27); inner eye
\begin{scope}[transform canvas={xshift=-0.5cm,yshift=0}]
%\draw[smooth,black,thick] plot coordinates %left arm
\shade[upper left=brown!70!black,upper right=brown!80!black,lower left=black!50!brown,upper
    right=orange!20!brown,lower right=orange!25!brown,smooth] plot coordinates
{(3.5,5.6)(2.5,5.5)(1.35,5.85)(1.2,6)(1.3,6.3)(1.35,6.4)(2.4,6.8)(3,7)(3.5,5.6)};
%\draw[smooth,blue,thick] plot coordinates %left claws
\shade[upper right=white!30!black,lower left=black,lower right=black,upper left=black] plot coordinates
{(0.8,5.2)(1,5.6)(1.6,6)(1.62,6.2)(1.5,6.5)(1,6.45)(0.75,6.2)(0.6,6)(0.5,5.5)(0.75,5.65)(0.8,5.2)};
\end{scope}
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(1,-0.5)},fill=white] at (-1.5,11.8) (11D) {11D
 supergravity};
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(-0.5,-0.1)},fill=white] at (7.4,12) (hetE8) {heterotic
 E$_8\times$E$_8$};
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(0.2,-0.6)},fill=white] at (8.4,5) (hetSO) {heterotic
 SO(32)};
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(0.8,-0.4)},fill=white] at (-1.4,7) (typeI) {type I};
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(1.2,-0.8)},fill=white] at (-0.8,1.4) (typeIIA) {type IIA};
\node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(1.6,-0.05)},fill=white] at (-1.4,0) (typeIIB) {type IIB};
\node(M) at (2,14){\Huge Does M stand for marmot?};
\end{tikzpicture}
\end{document}

enter image description here

18

I missed a beard for the "santa" duck.

It might not be pretty, and the code is definitely not pretty. But being a novice at LaTeX I'm happy with it!

    \begin{tikzpicture}
    \duck[santa=red!80!black, jacket=red!80!gray, tshirt=white,];

    %This prompts the beard%
    \fill[white!80!brown](1.3,1.3) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (1.2,1.15) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.5,1.05) ellipse (0.1 and 0.1);
    \fill[white!80!brown](0.525,0.90) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.525,0.75) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.65,0.65) ellipse (0.14 and 0.14);
    \fill[white!80!brown] (0.75,0.75) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.85,0.85) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.95,0.95) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (1.05,1.05) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (1.15,1.25) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (1,1.20) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.85,1.20) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.75,1.15) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.65,1.10) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.58,1.07) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.42,1.46) ellipse (0.07 and 0.07);
    \fill[white!80!brown] (0.52,1.45) ellipse (0.07 and 0.07);
    \fill[white!80!brown] (0.6,1.44) ellipse (0.07 and 0.07);
    \fill[white!80!brown] (0.68,1.40) ellipse (0.07 and 0.07);
    \fill[white!80!brown] (0.76,1.36) ellipse (0.07 and 0.07);
    \fill[white!80!brown] (0.8,1.25) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.85,1.28) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (0.38,1.44) ellipse (0.05 and 0.05);
    \fill[white!80!brown] (1,1.28) ellipse (0.12 and 0.12);
    \fill[white!80!brown] (1.3,1.3) -- (0.5,1.05) -- (0.65,0.65) -- cycle;

    %Beard ends here%

    \end{tikzpicture}

Santa duck with beard

Merry Chirstmas!

/Mihikma

Quack

Paulo Cereda
  • 44,220
16

A Ulysses butterfly made using the tikz and animate packages. The wings flap intermittently.

enter image description here

It might be possible to adapt this code to create other species of butterflies. If anyone does this please tag me to show me what you create. I'd love to see it. :)

\documentclass[a4paper,landscape]{article}
%\documentclass[export]{standalone}
% All design and code created by Ulysses. Please credit me if you use a significant portion of this anywhere.

\usepackage[margin=0.5cm]{geometry}
\usepackage{animate}
\usepackage{tikz}
\usepackage{times}
\usetikzlibrary{decorations.text}

\newcommand{\halfwing}[1]{
\begin{scope}[yscale=1,xscale=#1]
    % Lower Wing
    \filldraw[fill=black!90!white!,draw=black,thick,rounded corners=1mm] (0,0.2) -- (0,1.4) -- (-2,1.4) .. controls (-4,0.8) .. (-4.3,0.2) .. controls (-4.48,0.08) .. (-4.5,-0.15) .. controls (-4.9,-0.5) and (-4.9,-0.7) .. (-4.7,-0.9) .. controls (-4.7,-1) .. (-4.6,-1.1) .. controls (-4.9,-1.8) .. (-4.2,-2) -- (-4,-2.4) .. controls (-4.1,-3) .. (-3.6,-3.1) -- (-3.25,-3.7) .. controls (-3.5,-4.5) .. (-4.1,-5.4) .. controls (-4.2,-5.9) and (-3.6,-5.9) .. (-3.5,-5.4) .. controls (-3.55,-5.1) and (-3.4,-4.8) .. (-3,-4.1) -- (-2.6,-4.1) .. controls (-2.35,-4.35) .. (-2,-4.2) .. controls (-1.75,-4.6) and (-1.25,-4.6) .. (-1.25,-3.90) .. controls (-0.9,-4) .. (-0.6,-2.8) -- (-0.3,-1) -- (0,0.2);
    \shadedraw[top color=blue!45!cyan!,bottom color=blue!20!cyan!,draw=black,rounded corners=1mm] (-0.8,-3) .. controls (-0.5,-2) .. (-0.30,-0.95){[rounded corners=0mm] .. controls (-0.15,-0.3) .. (-0.05,0.45) -- (-0.05,0.7)} -- (-0.7,0.4) .. controls (-0.9,-2) .. (-0.8,-3);
    \shadedraw[top color=blue!60!cyan!,bottom color=blue!20!cyan!,draw=black] (-1.1,-2.9) .. controls (-1.4,2) and (0.5,2) .. (-1.1,-2.9);
    \shadedraw[top color=blue!70!cyan!,bottom color=blue!20!cyan!,draw=black] (-1.6,-2.8) .. controls (-0.9,3.7) and (0,-0.1) .. (-1.6,-2.8);
    \shadedraw[top color=blue!70!cyan!,bottom color=blue!20!cyan!,draw=black] (-2.1,-2.6) .. controls (-0.9,3.7) and (-0.3,-0.1) .. (-2.1,-2.6);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!20!cyan!,draw=black] (-2.6,-2.2) .. controls (-0.3,3.7) and (-0.3,-0.1) .. (-2.6,-2.2);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!20!cyan!,draw=black] (-3,-1.7) .. controls (0.1,3.7) and (0.1,-0.1) .. (-3,-1.7);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!20!cyan!,draw=black] (-3.4,-1.2) .. controls (0.77,3) and (0.77,-0.2) .. (-3.4,-1.2);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!20!cyan!,draw=black] (-3.6,-0.6) .. controls (0.77,2.2) and (0.77,-0.5) .. (-3.6,-0.6);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!15!cyan!,draw=black] (-3.5,0) .. controls (0.77,1.8) and (0.77,-0.2) .. (-3.5,0);
    \shadedraw[top color=blue!80!cyan!,bottom color=blue!10!cyan!,draw=black] (-2.5,0.7) .. controls (0.77,2) and (0.77,0) .. (-2.5,0.7);
    \shadedraw[top color=blue!45!cyan!,bottom color=blue!15!cyan!,draw=black] (-0.05,0.6) -- (-0.05,0.9) .. controls (-4,-0.5) and (-1.5,-2) .. (-0.05,0.6);

    % Upper Wing
    \filldraw[fill=black!90!white!,draw=black,thick] (0,1) -- (0,2.2) [rounded corners=7mm] parabola[bend at end] (-6,6) -- (-5,1) -- (0,1);
    \shadedraw[top color=blue!20!cyan!,bottom color=blue!70!cyan!,draw=black] (-4,3.5) .. controls (3,-1) and (-2,4) .. (-4,3.5);
    \shadedraw[top color=blue!15!cyan!,bottom color=blue,draw=black] (-4.1,3) .. controls (3.9,-0.5) and (-2.1,4) .. (-4.1,3);
    \shadedraw[top color=blue!15!cyan!,bottom color=blue!80!cyan!,draw=black] (-4.2,2.5) .. controls (4,-0.2) and (-2.2,3.5) .. (-4.2,2.5);
    \shadedraw[top color=blue!15!cyan!,bottom color=blue!70!cyan!,draw=black] (-4.2,1.8) .. controls (4,0.3) and (-2.2,3) .. (-4.2,1.8);
    \shadedraw[top color=cyan,bottom color=blue!60!cyan!,draw=black] (-4.2,1.2) .. controls (4.05,0.9) and (-2.2,2.4) .. (-4.2,1.2);
    \shadedraw[top color=cyan,bottom color=blue!60!cyan!,draw=black] (-0.05,1.85) -- (-0.05,1.80) .. controls (-6.5,6.5) and (-2,5.5) .. (-0.05,1.85);
    \shadedraw[top color=blue!10!cyan!,bottom color=blue!50!cyan!,draw=black] (-0.05,1.8) -- (-0.05,1.4) .. controls (-7.5,5.5) and (-2,5) .. (-0.05,1.8);
\end{scope}
}

\newcommand{\butterfly}[1]{
\begin{tikzpicture}
    % Guide lines
    %\draw[step=1cm,lightgray,very thin] (-20,-14) grid (20,14);
    %\begin{scope}[xshift=-0.35cm]
    %\draw[step=0.2cm,lightgray,very thin] (-7,-7) grid (0,2);
    %\draw[step=1cm,cyan,very thin] (-7,-7) grid (0,2);
    %\end{scope}

    % Background
    \filldraw[color=cyan!20!white!,draw=black, line width=3pt] (0,0) circle (10cm);

    % Text
    \draw (0,-7) node {\Huge Papilio Ulysses};
    \draw[decoration={text along path,text={Design and code created by Ulysses.},text align={center}},decorate,rotate=90] (0,0) circle (9.8cm);

    % Antenna
    \draw[thick] (0,2.7) parabola[bend at end] (-1.5,5.2);
    \filldraw[fill=black!80!white!,draw=black,thick] (-1.5,5.2) .. controls ++(-0.2,0.1) and ++(-0.5,-0.3) .. ++(0,0);
    \begin{scope}[yscale=1,xscale=-1]
    \draw[thick] (0,2.7) parabola[bend at end] (-1.5,5.2);
    \filldraw[fill=black!80!white!,draw=black,thick] (-1.5,5.2) .. controls ++(-0.2,0.1) and ++(-0.5,-0.3) .. ++(0,0);
    \end{scope}

    % Body
    \filldraw[fill=black!80!white!,draw=black,thick,rounded corners=2.5mm] (0,2.5) -- (0.35,2.5) -- (0.45,1.5) -- (0.45,0) -- (0.25,-2) -- (-0.25,-2) -- (-0.45,0) -- (-0.45,1.5) -- (-0.35,2.5) -- (0,2.5);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,2.24) ellipse (0.35cm and 0.24cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,1.75) ellipse (0.4cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,1.25) ellipse (0.42cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,0.75) ellipse (0.42cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,0.25) ellipse (0.42cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,-0.25) ellipse (0.4cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,-0.75) ellipse (0.35cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,-1.25) ellipse (0.3cm and 0.25cm);
    \shade[inner color=black!70!white!,outer color=black!80!white!] (0,-1.74) ellipse (0.25cm and 0.24cm);

    % Head
    \shadedraw[inner color=black!60!white!,outer color=black!80!white!,draw=black,thick,rounded corners=2mm] (0,3) -- (0.45,3) -- (0.2,2.3) -- (-0.2,2.3) -- (-0.45,3) -- (0,3);
    \shadedraw[inner color=white!60!black,outer color=black, draw=black,thick] (-0.25,2.85) circle (0.2cm);
    \shadedraw[inner color=white!60!black,outer color=black, draw=black,thick] (0.25,2.85) circle (0.2cm);

    % Wings
    \begin{scope}[xshift=-0.35cm]
    \halfwing{#1}
    \end{scope}
    \begin{scope}[xshift=0.35cm]
    \halfwing{-#1}
    \end{scope}
\end{tikzpicture}
}

\begin{document}

\begin{figure}[p]
\centering
\begin{animateinline}[autoplay,loop,scale=1]{13}
    \butterfly{1}
\newframe
    \butterfly{0.883}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.2}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.883}
\newframe
    \butterfly{1}
\newframe
    \butterfly{0.883}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.2}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.883}
\newframe
    \butterfly{1}
\newframe
    \butterfly{0.883}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.2}
\newframe
    \butterfly{0.317}
\newframe
    \butterfly{0.6}
\newframe
    \butterfly{0.883}
\newframe[1.5]
    \butterfly{1}
\end{animateinline}
\end{figure}
\end{document}
Ulysses
  • 1,933
  • 3
    Beautiful! I made an SVG version of it. Just added global option dvisvgm to article and also \pagestyle{empty}. Then, latex, finally dvisvgm --no-fonts --exact --zoom=-1 on the DVI file. – AlexG Dec 14 '18 at 11:17
15

One can also make very realistic movies. ;-)

UPDATE: Made use of a transparency group. This avoids making hidden parts visible. Presumably it is always a good idea to use a transparency group if you want to play with the opacity of a tikzling.

\documentclass[border=3.14mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{patterns,marmots,ducks,3d,shapes.callouts,calc}
\makeatletter % https://tex.stackexchange.com/a/48776/121799
\tikzoption{canvas is xy plane at z}[]{%
  \def\tikz@plane@origin{\pgfpointxyz{0}{0}{#1}}%
  \def\tikz@plane@x{\pgfpointxyz{1}{0}{#1}}%
  \def\tikz@plane@y{\pgfpointxyz{0}{1}{#1}}%
  \tikz@canvas@is@plane
}
\makeatother
%
\tikzset{
brick height/.store in=\BrickHeight, 
brick height=10pt,
brick width/.store in=\BrickWidth, 
brick width=20pt,
}

\tikzset{Wall/.style args={with colors #1 and #2}{path picture={
\fill[#1] let \p1=($(path picture bounding box.north east)-(path picture bounding
box.south west)$), \n1={int(scalar(\x1/\BrickWidth)+1))},
\n2={int(scalar(\y1/\BrickHeight)+1)} in
foreach \WallX in {1,...,\n1}
 {foreach \WallY in {1,...,\n2}
 {($(path picture bounding box.south west)+({(\WallX-2)*\BrickWidth},
 {(\WallY-1)*\BrickWidth})$) rectangle ++ (2*\BrickWidth,2*\BrickHeight)}
};
\draw[#2] let \p1=($(path picture bounding box.north east)-(path picture bounding
box.south west)$), \n1={int(scalar(\x1/\BrickWidth)+1))},
\n2={int(scalar(\y1/\BrickHeight)+1)} in
foreach \WallX in {1,...,\n1}
 {foreach \WallY in {1,...,\n2}
 {($(path picture bounding box.south west)+({(\WallX-2)*\BrickWidth},
 {(\WallY-1)*\BrickWidth})$)  -- ++ (2*\BrickWidth,0)
 ($(path picture bounding box.south west)+({(\WallX-2)*\BrickWidth},
 {(\WallY-1/2)*\BrickWidth})$)  -- ++ (2*\BrickWidth,0)
 ($(path picture bounding box.south west)+({(\WallX-2)*\BrickWidth},
 {(\WallY-1)*\BrickWidth})$)  -- ++ (0,\BrickHeight)
 ($(path picture bounding box.south west)+({(\WallX-1.5)*\BrickWidth},
 {(\WallY-1.5)*\BrickWidth})$)  -- ++ (0,\BrickHeight)}
};
}}}
\tikzset{pics/.cd,
  duck/.style={code={\duck[#1]}},
  marmot/.style={code={\marmot[#1]}}
}
%
\newcommand\QueenRhyme[1]{\ifcase#1
\or
Mirror,
\or
mirror
\or
on
\or
the
\or
wall,
\or
who
\or
is
\or
the
\or
cutest
\or
of
\or
them
\or
all?
\or
\or
\or
\fi
}
\begin{document}
\tdplotsetmaincoords{110}{-30}
\foreach \X [count=\Y] in {-1,-0.9,...,1}
{\begin{tikzpicture}[font=\sffamily]
 \path[use as bounding box] (-3,-2) rectangle (6,5);
 \pgfmathtruncatemacro{\xtest}{sign(cos(\tdplotmainphi+90))}
 \pgfmathtruncatemacro{\ytest}{sign(-cos(\tdplotmainphi))}
 \begin{scope}[tdplot_main_coords]
  \begin{scope}[canvas is xy plane at z=0,transform shape]
   \fill[brown!80!black] (0,0) rectangle (10,8);
  \end{scope}
  \begin{scope}[canvas is xz plane at y=0,transform shape]
    \draw[Wall={with colors gray!50!black and gray!60}] (0,0) rectangle (10,10);
  \end{scope}
  \begin{scope}[canvas is xz plane at y=3,transform shape]
      \pic[local bounding box=duck] at (4.5,0.5) {duck={crown,laughing, bill=red,longhair=black}};
      \ifnum\Y<13
       \node[ellipse callout,fill=white, draw,anchor=east, callout absolute
     pointer={(4.7,2)},text width=1.5cm,align=center] 
     (song) at (5.5,3.4) {\QueenRhyme{\Y}};
      \fi
  \end{scope}
  \begin{scope}[canvas is yz plane at x=0,transform shape]
   \draw[Wall={with colors gray!50!black and gray!60}] (0,0) rectangle (10,10);
   \shade[top color=blue!20,bottom color=blue!30,middle color=blue!10] (1.5,1) rectangle (5.5,5);
   \ifnum\Y>10
   \begin{scope}[transparency group,opacity=\X]
   \pic at (2.5,1.6) {marmot={whiskers,teeth}};
   \end{scope}
   \fi
  \end{scope}
 \end{scope}
\end{tikzpicture}}
\end{document}

enter image description here

14

The TikZducks got a smaller sibling, the TikZmarmots:

\documentclass{standalone}

\usepackage{tikzmarmots}
\usepackage{tikzducks}

\begin{document}

\begin{tikzpicture}
    \marmot[whiskers,teeth]
\end{tikzpicture}

\begin{tikzpicture}
    \marmot
    \duck[invisible,crown]
    \begin{scope}[scale=0.7,xshift=9,yshift=18]
        \duck[invisible,cake=red!50!violet]
    \end{scope}
\end{tikzpicture}

\end{document}

enter image description here

14

Chicken out of the egg - PSTricks:

... as a hint for a Duckling out of the egg :-)

\documentclass{standalone}
\usepackage{pstricks}
\begin{document}
\makeatletter
\def\psfs@asolid{\pst@fill{\pst@usecolor\psfillcolor eofill}}
\makeatother

%% Color Definitions
\definecolor{CouleurI}{cmyk}{0,0,0,0}
\definecolor{CouleurII}{cmyk}{.500694,.256565,.266178,0}
\definecolor{CouleurIII}{cmyk}{.00231937,.288243,.807706,0}
\definecolor{CouleurIV}{cmyk}{.000885023,.590173,.93637,0}
\definecolor{CouleurV}{cmyk}{.320531,.93048,.867948,.422095}
\definecolor{CouleurVI}{cmyk}{.163363,.0721752,.0742809,0}

\psscaleboxto(-1,-1){
\psset{unit=0.01}
\begin{pspicture}(0,0)(512,512)
%% Path : 1
\pscustom[fillstyle=solid,fillcolor=CouleurII,linestyle=none]{
\moveto(39.111,274.958)
\psline(71.111,227.556)
\psline(113.778,270.222)
\psline(170.667,241.778)
\psline(213.333,284.444)
\psline(270.222,199.111)
\psline(327.111,241.778)
\psline(369.778,227.556)
\psline(398.222,270.222)
\psline(440.889,227.556)
\psline(469.333,284.444)
\psline(440.889,384)
\psline(284.444,455.111)
\psline(128,426.667)
\psline(42.667,341.333)
\psline(39.111,274.958)
\closepath
}
%% Path : 2
\pscustom[fillstyle=solid,fillcolor=CouleurIII,linestyle=none]{
\moveto(426.041,209.237)
\psbezier(426.34,205.141)(426.667,201.074)(426.667,196.907)
\psbezier(426.667,112.384)(365.17,42.396)(284.501,28.814)
\psbezier(301.412,25.131)(313.387,21.575)(298.667,14.222)
\psbezier(282.809,6.28601)(266.937,16.057)(256.014,26.24)
\psline(255.986,26.24)
\psbezier(245.049,16.057)(229.205,6.28601)(213.333,14.222)
\psbezier(198.613,21.575)(210.588,25.131)(227.499,28.814)
\psbezier(146.844,42.396)(85.333,112.384)(85.333,196.907)
\psbezier(85.333,201.074)(85.66,205.141)(85.959,209.237)
\psbezier(79.09,303.118)(-3.68301,440.889)(256,440.889)
\psbezier(515.684,440.889)(432.896,303.118)(426.041,209.237)
\closepath
}
%% Path : 3
\pscustom[fillstyle=solid,fillcolor=CouleurIV,linestyle=none]{
\moveto(298.667,199.111)
\psbezier(298.667,222.677)(279.566,227.556)(256,227.556)
\psbezier(232.434,227.556)(213.333,222.677)(213.333,199.111)
\psbezier(213.333,175.545)(232.434,156.444)(256,156.444)
\psbezier(279.566,156.444)(298.667,175.545)(298.667,199.111)
\closepath
}
%% Path : 4
\pscustom[fillstyle=solid,fillcolor=CouleurV,linestyle=none]{
\moveto(184.889,163.556)
\psbezier(184.889,175.346)(175.346,184.889)(163.556,184.889)
\psbezier(151.765,184.889)(142.222,175.346)(142.222,163.556)
\psbezier(142.222,151.765)(151.765,142.222)(163.556,142.222)
\psbezier(175.346,142.222)(184.889,151.765)(184.889,163.556)
\closepath
}
%% Path : 5
\pscustom[fillstyle=solid,fillcolor=CouleurV,linestyle=none]{
\moveto(369.778,163.556)
\psbezier(369.778,175.346)(360.22,184.889)(348.444,184.889)
\psbezier(336.668,184.889)(327.111,175.346)(327.111,163.556)
\psbezier(327.111,151.765)(336.668,142.222)(348.444,142.222)
\psbezier(360.22,142.222)(369.778,151.765)(369.778,163.556)
\closepath
}
%% Path : 6
\pscustom[fillstyle=solid,fillcolor=CouleurVI,linestyle=none]{
\moveto(440.889,355.556)
\psline(398.222,341.333)
\psline(341.333,426.667)
\psline(298.667,355.556)
\psline(270.222,384)
\psline(213.333,355.556)
\psline(170.667,412.444)
\psline(128,327.111)
\psline(85.333,355.556)
\psline(38.485,245.12)
\psbezier(31.986,264.306)(28.444,284.672)(28.444,305.778)
\psbezier(28.444,419.684)(130.332,512)(256,512)
\psbezier(381.668,512)(483.556,419.684)(483.556,305.778)
\psbezier(483.556,288.085)(480.839,271.019)(476.203,254.62)
\psline(440.889,355.556)
\closepath
}
\end{pspicture}
}
\end{document}

enter image description here

14

Nowadays there is a trend of making things expandable. So here is an expandable duck.

\documentclass[tikz, border=0.5cm]{standalone}
\usepackage{tikzducks}
\usepgfmodule{nonlineartransformations} 
\makeatletter
\def\expandabletransformation{% similar to the pgfmanual section 103.4.2
\pgfmathsetmacro{\myx}{ifthenelse(\pgf@x<0,\pgf@x,%
ifthenelse(\pgf@x<\myxmax,10*\pgf@x,\pgf@x+(\myxmax-1)*10))}
\pgf@x=\myx pt%
} 
\makeatother
\begin{document}
\foreach \X in {0,10,...,350}
{\pgfmathsetmacro{\myxmax}{5.5+4.5*sin(\X)}
\begin{tikzpicture}
\path[use as bounding box] (-3,0) rectangle (5,4.5);
\begin{scope}
 \pgftransformnonlinear{\expandabletransformation}
 \duck[scale=2,xshift=-1.4cm]
\end{scope} 
\end{tikzpicture}}
\end{document}

enter image description here

13

At CarLaTeX's request, triggered by this question and that answer, working my way up to the \marmot command. ;-)

\documentclass[12pt]{standalone}
\usepackage{pgf,tikz}
\usetikzlibrary{shadings}
\usetikzlibrary{shapes.callouts}
\begin{document}
\begin{tikzpicture}
\shade[upper left=red,upper left=brown,lower left=black!50!brown,upper
right=orange,lower right=orange!50!brown,smooth]
plot coordinates {(8.487120635907601,5.055577303411975)  (8.653420477717171,5.393068158849042)  (8.897979068613598,5.784361904283323)  (9.054496566787309,6.151199790627962)  (9.176775862235523,6.635425800602885)  (9.31861984495545,7.222366418754307)  (9.343075704045093,7.8728922705388)  (9.308837501319593,8.293533046880652)  (9.157211174963809,8.538091637777077)  (8.85395852225224,8.391356483239223)  (8.443100089546245,7.956042191443585)  (8.076262203201606,7.579421961463089)  (7.748553691400395,7.232148762390164)  (7.4501922105067555,6.811507986048312)  (7.279001196879258,6.459343615157459)  (7.176286588702759,6.038702838815606)  (7.773848252993539,7.404007626215198)  (7.819564427995601,7.651505539157395)  (7.8264669877139506,7.867492374912536)  (7.804077433222327,8.056204334199078)  (7.727313246393903,8.254511816839173)  (7.608968458366749,8.372856604866326)  (7.465035608063454,8.414437206065056)  (7.285919172130465,8.38245212821988)  (7.0716191505677815,8.216129723424961)  (6.863716144574133,7.944256561740961)  (6.738974340977944,7.649993845565335)  (6.665408661934038,7.4548848707097575)  (6.668607169718555,7.090254983274744)  (6.646217615226932,6.610478815597094)  (6.604737979609691,6.154467171231563)  (6.5529724229494555,5.787402314913527)  (6.463559188718139,5.5756341285761994)  (6.1529658487567245,5.330924224364176)  (5.757665234260378,5.114450078330462)  (5.354877070877689,4.897975137756692)  (5.,4.5)  (4.821479324121693,4.163687330534155)  (4.6136620201907865,3.858888618102158)  (4.530535098618423,3.6372168272425243)  (4.436895027217463,3.5000557234720557)  (4.349819298957242,3.3215504805386034)  (4.317165900859659,3.1365145579856346)  (4.328050366892187,2.9471248490196547)  (4.347642405750737,2.7707964992927083)  (4.450381667535669,2.5159314321415236)  (4.532041887458237,2.3563228204746856)  (4.7881580317608385,2.2264088342342356)  (5.059121488776634,2.0779357071022933)  (5.344932258505623,1.899767954543962)  (5.484652825467143,1.8292695614504035)  (5.506329987815211,1.737194466087021)  (5.476711191510275,1.4854346974950627)  (5.617400473958722,1.0966879959927742)  (5.958016631465489,0.27106404899267567)  (6.269309791973645,-0.2515451024553113)  (6.6694882347995845,-0.7059850290542589)  (7.07644936309715,-0.96372707697605)  (7.395235580263576,-1.0315539316923108)  (7.496975862337968,-1.1400768992383281) (7.496975862337968,-1.1400768992383281)  (7.5,-1.5)  (7.35453946743382,-1.7573012771563017)  (7.0696666776255235,-1.8522588737590668)  (6.696618976686088,-1.9607818413050841)  (6.506703783480558,-2.1778277763971188)  (6.330353961218279,-2.367742969602649)  (6.316788590275027,-2.5780062192230577)  (7.083232048568776,-2.6187023320528144)  (7.754717910259759,-2.6187023320528144)  (8.236288578745212,-2.5712235337514318)  (8.453334513837248,-2.354177598659397)  (8.751772674588796,-2.0693048088511015)  (8.98916666609571,-1.8115627609293103)  (9.165516488357987,-1.540255342064267)  (9.33447506356106,-1.3968710396354151)  (9.6,-1.4)  (9.883136971295853,-1.5659555269247534)  (10.228207353518993,-1.7660963486141739)  (10.664976183641343,-1.9674263178593647)  (10.841494002882714,-2.0195793099079515)  (10.973882367313742,-2.0998146822903925)  (10.921729375265155,-2.2482501211979082)  (10.941788218360765,-2.4287797090584)  (11.142376649316867,-2.60529752829977)  (11.59570650327766,-2.653438751729235)  (12.237589482337189,-2.617332834157136)  (12.662836955964126,-2.5772151479659158)  (13.148260958877895,-2.505003312821719)  (14.344478214484807,-2.502493194173754)  (15.369243602427948,-2.3819325602980905)  (15.851486137930603,-1.759035951940496)  (16.18302788108868,-0.8548311978730202)  (15.640505028648192,-0.9151115148108518)  (15.781159101503134,-0.1515608335983167)  (15.469710797324336,0.9736717492412088)  (14.746346994070354,2.1089510515703727)  (13.741901035087823,3.0462093916695716)  (12.74202561081047,3.652194497292207)  (11.620953165408594,4.04608481594692)  (10.378683698882188,4.076384071228052)  (9.424257157526535,3.8794389119006953)  (8.833421679544463,3.833990028978998)  (8.484980243811448,4.030935188306354)  (8.257735829202957,4.364226996398804)  (8.247996636798005,4.764611473259732)  (8.487120635907601,5.055577303411975)};

\draw[thick,smooth,brown] plot coordinates { (10.970355256269126,-1.9322725401224543)  (11.047142365016613,-1.7786983226274815)  (11.215647409212487,-1.6443208823193802)  (11.492934190800634,-1.5440710458990508)  (11.787284774332665,-1.5355391449271076)  (12.077369407378725,-1.4886136895814215)  (12.416294906384667,-1.4948048149804178)  (12.799824433796168,-1.5628503762953614)  (13.090564559414563,-1.714406399224099)  (13.310166143658245,-1.8845203025114576)};

\draw[thick,smooth,fill=black] plot coordinates { (6.176715812497315,3.9442760413021656)  (6.433821047703658,3.9250890834509464)  (6.671739325058781,3.963462999153385)  (6.834828466794148,4.115039966178019)  (6.8309910752239045,4.35295824353314)  (6.712031936546342,4.475754773780944)  (6.512487574893659,4.535234343119725)  (6.3263740837368285,4.483429556921433)  (6.159447550431217,4.329933894111677)  (6.14217928836512,4.180275622872165)  (6.16136624621634,4.045966917913629)  (6.1460166799353635,3.932763866591434)};

\draw[ultra thick,smooth] plot coordinates { (4.9,3.4)  (4.867460280572349,3.253821969982106)  (4.719583397599846,3.1622025968360994)  (4.623141952182997,3.0657611514192507)  (4.507412217682777,3.138092235481887)  (4.404541342571471,3.3149015520794434)};

\draw[ultra thick,smooth] plot coordinates { (4.652234498957524,2.8886104804097017)  (4.769852024033724,2.977169558114133)  (4.9137605253034256,3.1487527711664685)  (4.978796097992618,3.2926612724361695)};

\draw[ultra thick,smooth] plot coordinates { (4.589966397446596,2.870621917750989)  (4.4751163435486605,2.945343639564103)  (4.40316209291381,3.072647313764223)  (4.378254852309438,3.220707021801319)};

 \node[ellipse callout, draw,text width=1.8cm,text centered, callout
 relative pointer={(0.5,-1)},fill=white] at (3.7,5) (hallo) {I love marmots!};
\end{tikzpicture}
\end{document}

enter image description here

13

This is more work in progress. A first attempt to adapt @samcarter's stellar tikzduck and tikzmarmot packages to draw koalas. This is the style file

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The tikzkoalas package
% A package to bring little koalas into tikz
% Maintained by ...
%
% Project repository and bug tracker:
% ...
%
% Released under the LaTeX Project Public License v1.3c or later
% See http://www.latex-project.org/lppl.txt
%
% Version 0.1
% August 29, 2018  
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesPackage{tikzkoalas}
 [2018/08/29 v0.1 Drawing koalas in TikZ]

\RequirePackage{tikzducks}

\usetikzlibrary{fadings} 

\tikzfading[name=tikzling@blush,
inner color=transparent!50,
outer color=transparent!100]



\newcommand*{\koala}[1][]{%
    \begin{scope}%
        \tikzset{/koala/.cd,#1}%
        \koala@draw%
    \end{scope}%
}

\newif\ifkoala@name
\newif\ifkoala@blush
\newif\ifkoala@whiskers
\newif\ifkoala@sleeping
\newif\ifkoala@threeD

\definecolor{koala@gray}{RGB}{160,160,160}

\tikzset{
  %
  % Pass unknown keys on to tikz
  %
  /koala/.search also={/tikz,/pgf},
  /koala/.cd,
  name/.code         = \koala@nametrue \def\koala@name{#1},
  %
  % body
  %
  body/.code         = \def\koala@body{#1},
  body               = koala@gray,
  %
  % options
  %
  blush/.code            = \koala@blushtrue,
  sleeping/.code        = \koala@sleepingtrue,
  3D/.code           = \koala@threeDtrue,
}




\def\koala@draw{%
\ifkoala@threeD
        \def\koala@part@draw[##1]{\shade[ball color=##1]}
\else
        \def\koala@part@draw[##1]{\fill[##1]}
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% minimal bounding box size 
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\path (0.3,0.1) rectangle (1.83,2.17);
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Body parts
% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\fill[\koala@body!50!black] (1.18,0.2) ellipse (0.23 and 0.09); 
\fill[\koala@body!50!black] (0.67,0.2) ellipse (0.23 and 0.09);
%
% Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\koala@part@draw[\koala@body] (1.33,2.13) ellipse (0.3 and 0.23);
\fill[\koala@body!40!white] (1.33,2.13) ellipse (0.15 and 0.12);
\koala@part@draw[\koala@body] (0.52,2.13) ellipse (0.3 and 0.23);
\fill[\koala@body!40!white] (0.52,2.13) ellipse (0.15 and 0.12);
%
% Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\koala@part@draw[\koala@body] (1.48,0.92) .. controls (1.48,0.26) and (1.28,0.18) .. (0.95,0.18) .. controls (0.61,0.18) and (0.28,0.26) .. (0.28,0.92) .. controls (0.28,1.58) and (0.59,2.17) .. (0.92,2.17) .. controls (1.25,2.17) and (1.48,1.58) .. (1.48,0.92) -- cycle;
%
% Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\koala@part@draw[\koala@body] (0.925,1.7) ellipse (0.55 and 0.45);
%
% Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\koala@part@draw[\koala@body!40!white] (1.35,0.71) .. controls (1.35,0.41) and (1.17,0.27) .. (0.92,0.27) .. controls (0.69,0.27) and (0.48,0.41) .. (0.48,0.71) .. controls (0.48,1.01) and (0.67,1.26) .. (0.91,1.26) .. controls (1.15,1.26) and (1.35,1.01) .. (1.35,0.71) -- cycle;
%
% Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\koala@part@draw[\koala@body,rotate around={-110:(0.3,1)}] (0.3,1) ellipse (0.42 and 0.13);
\fill[\koala@body!50!black,rotate around={-20:(0.18,0.65)}] (0.18,0.65) ellipse (0.12 and 0.08);
\koala@part@draw[\koala@body,rotate around={-70:(1.55,1)}] (1.55,1) ellipse (0.42 and 0.13);
\fill[\koala@body!50!black,rotate around={20:(1.67,0.65)}] (1.67,0.65) ellipse (0.12 and 0.08);
%
% Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\shade[ball color=black] (0.775,1.6) to[out=-110,in=180] (0.925,1.45)
to[out=0,in=-70] (1.075,1.6) to[out=110,in=-45] (1,1.74)
to[out=135,in=45] (0.85,1.74) to[out=-135,in=70] cycle;
%(0.925,1.6) circle (0.15);
%
% Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifkoala@sleeping
    \draw[thin] (0.59,1.77) arc (180:360:0.08 and 0.04);
    \draw[ultra thin] (0.59,1.77) arc (180:0:0.08 and 0.08);
    \draw[thin] (1.26,1.77) arc (0:-180:0.08 and 0.04);
    \draw[ultra thin] (1.26,1.77) arc (0:180:0.08 and 0.08);
    \foreach \koala@X in {-135,-112.5,-90,-67.5,-45}
     { \draw[very thin] (0.67,1.77) ++(\koala@X:0.08 and 0.04)  -- 
     ++ ({(\koala@X+90)/2-90}:0.06 and 0.03);
     \draw[very thin] (1.18,1.77) ++(\koala@X:0.08 and 0.04)  -- 
     ++ ({-90+(90+\koala@X)/2}:0.06 and 0.03);} 
\else
    \shade[ball color=black] (0.67,1.77) circle (0.08); 
    \shade[ball color=black] (1.18,1.77) circle (0.08); 
\fi
%
% Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifkoala@threeD
    \draw[black,thick] (1.02,1.42) arc [start angle=-50, end angle=-130, radius=0.16];
\else   
    \draw[\koala@body!50!black,thick] (1.02,1.42) arc [start angle=-50, end angle=-130, radius=0.16];
\fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% optional
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifkoala@blush
    \fill[red,path fading=tikzling@blush] (0.63,1.55) circle (0.1); 
    \fill[red,path fading=tikzling@blush] (1.22,1.55) circle (0.1);
\fi
%
}

And here is an MWE:

\documentclass[border={1cm 3.14mm 1cm 3.14mm}]{standalone}
\usepackage{tikzkoalas}
\begin{document}
\begin{tikzpicture}
 \node[anchor=south,align=center] at (0.925,3) {\verb|\koala|};
 \koala 
\end{tikzpicture}
\begin{tikzpicture}
 \node[anchor=south,align=center] at (0.925,3) {\verb|\koala[3D]|};
 \koala[3D] 
\end{tikzpicture}
\begin{tikzpicture}
 \node[anchor=south,align=center] at (0.925,3) {\verb|\koala[sleeping]|};
 \koala[sleeping] 
\end{tikzpicture}
\begin{tikzpicture}
 \node[anchor=south,align=center] at (0.925,3) {\verb|\koala[blush,3D]|};
 \koala[blush,3D] 
\end{tikzpicture}
\begin{tikzpicture}
 \node[anchor=south,align=center] at (0.925,3) {\verb|\koala[sleeping,3D]|};
 \koala[sleeping,3D] 
\end{tikzpicture}
\end{document}

enter image description here

13

This is just a proposal … I wanted to make this ship with some beach and some hills with forests and so on … but for now just the ship.

\documentclass[border=5pt,tikz]{standalone}
\usepackage{tikzducks}
\usetikzlibrary{calc,decorations.text}
\definecolor{Orange}{RGB}{255,178,70}
\definecolor{dunkel}{RGB}{201,45,4}
\definecolor{mast}{RGB}{255,132,22}
\definecolor{segel}{RGB}{255,249,203}
\definecolor{flagge}{RGB}{212,32,41}
\definecolor{gelb}{RGB}{255,199,76}
\definecolor{strand}{RGB}{254,246,174} %for beach
\begin{document}
    \begin{tikzpicture}
        \draw[xshift=-.1cm,fill=mast] (3.1,-2.1) -- (3.15,1.9) arc(-180:-360:.05) -- (3.3,-2.1) -- cycle;
        \draw[fill=mast,rotate=-10,xshift=2cm,yshift=.5cm,rounded corners=1pt] (0,0) rectangle (2,.1);
        \draw[fill=mast,rotate=-10,xshift=1.6cm,yshift=1.9cm,rounded corners=1pt] (0,0) rectangle (2.5,.1);
            \draw[fill=segel,xshift=1.6cm,yshift=1.9cm] (2.3,-.66) to[bend right=45] (2.55,-1.8) .. controls (.3,-.8) and (.4,-1.4) .. (.3,-1.5) to[bend left=45] (.5,-.34) -- cycle;
            \draw[fill=segel,xshift=1.5cm,yshift=.5cm] (.58,-.35) to[bend right=45] (.6,-1.8) .. controls (.2,-1.4) and (2,-1.5) .. (2.4,-2) to[bend left=30] (2.3,-.66) -- cycle;
                \draw[fill=Orange] (5.3,-1.2) -- (5.25,-1.7) .. controls (5.2,-2) and (5.4,-2.1) .. (5.5,-2.15) 
                %to[bend left=45] (5.5,-4);
                .. controls (5.8,-3) and (6,-3.5) .. (5.5,-4) .. controls (2.6,-4.5) and (2.7,-4.3) .. (.1,-3.98) to[bend right=5] (.05,-2) to[bend right=5] (.05,-1.6) to[bend right=5] (2,-1.8) to[bend right=5] (2.2,-2.1) -- (4.1,-2) to[bend right=45] (4.1,-1.2);
                    \draw[fill=dunkel] (0,-1.5) to[bend right=5] (2,-1.8) --+ (.3,-.3) --+ (2,-.2) arc(270:360+90:.25 and .4) --+ (1.3,0) --+ (1.3,-.1) --+ (.25,-.08) arc(90:270:-.15 and .4) --+ (-2,-.13) to[bend left=10] (1.95,-1.9) to[bend left=3] (0,-1.65);
                        \draw[fill=dunkel] (0,0) -- (.2,.05) to[bend right=7] (.3,-4) --+ (-.2,-.05) to[bend left=5] (0,0);
                    \fill[dunkel] (.7,-2.2) circle(.25);
                    \fill[gelb] (.7,-2.2) circle(.15);
                \foreach \x in {4.5,4.75,5}
                {
                    \fill[rounded corners=1pt,dunkel,xshift=\x cm,yshift=-2cm] (0,0) rectangle (.15,.5);
                }
        \draw[fill=dunkel,xshift=5cm,yshift=-1.2cm] (0,0) rectangle (.1,1);
        \node[minimum width=1cm,minimum height=.5cm,xshift=5.45cm,yshift=-1.27cm,above] (a) at (.05,1) {};
            \draw[fill=flagge] (a.south west) to[bend left=45] ($(a.south west)!.5!(a.south east)$) to[bend right=45] (a.south east) -- (a.north east) to[bend left=45] ($(a.north east)!.5!(a.north west)$) to[bend right=45] (a.north west) -- cycle;
        \path [xshift=1.35cm,yshift=.9cm,postaction={decorate,decoration={text along path,text align=center,text={TeX.SX}}}] (.6,-2) .. controls (.2,-1.4) and (2,-1.5) .. (2.4,-2);
        \path [rotate=180,xshift=-4.35cm,yshift=-2.2cm,postaction={decorate,decoration={text along path,text align=center,text={|\tt|@samcarter}}}] (2.55,1.8) .. controls (2.7,.8) and (1,1.4) .. (.3,1.8);
        \begin{scope}[scale=.2,xshift=2cm,yshift=-7.85cm,rotate=-20]
            \duck[speech={\scalebox{.2}{\rotatebox{-25}{Argh!!!}}}]
        \end{scope}
        \begin{scope}[scale=.2,xshift=13.6cm,xscale=-1,yshift=-10.3cm,rotate=-10]
            \duck[sunglasses=blue,speech={\scalebox{.2}{\rotatebox{15}{Nah.}}}]
        \end{scope}
        \begin{scope}[scale=.2,xshift=23cm,xscale=-1,yshift=-5.85cm,rotate=-10]
            \duck[recedinghair=white,beard,speech={\scalebox{.1}{\rotatebox{15}{Follow the sun!}}}]
        \end{scope}
        \begin{scope}[shift={(2.6,2.4)}]
            \fill[even odd rule,brown!80!black] (0,0) arc(180:360:.5) (0,0) arc(180:360:.5 and .2);
            \draw[brown!80!black,fill=white] (.5,0) circle(.5 and .2);
        \end{scope}
        \begin{scope}[scale=.2,xshift=14.5cm,yshift=11.5cm,rotate=-10]
            \duck[hat=black!70!brown!50!blue,cape=magenta,speech={\scalebox{.15}{\rotatebox{-15}{Fly away!}}}]
        \end{scope}
    \end{tikzpicture}
\end{document}

Here is the output:

Screenshot


UPDATE: This is just a little comic – feel free to complete the story!

\documentclass[border=5pt,tikz]{standalone} %article
\usepackage{tikzmarmots,tikzducks}
\usetikzlibrary{calc,shapes,positioning}
\definecolor{forest}{RGB}{34,139,34}
\definecolor{aqua}{RGB}{127,255,212}
\definecolor{ground}{RGB}{239,206,163}
\definecolor{gras}{RGB}{98,174,48}
\definecolor{sky}{RGB}{135,206,235}
\definecolor{navo}{RGB}{255,222,173}
\definecolor{water}{RGB}{64,164,223}
\begin{document}
%   \resizebox{\textwidth}{!}{
    \begin{tikzpicture}
        \begin{scope}
            \clip (-.1,-6.1) rectangle (8.06,3.1);
            \draw[shorten >=-4cm,double distance=1mm] ($(0,0)!.6!(8,.5)$) --+ (.5,-.5);
            \draw[double distance=1mm] (0,0) -- (8,.5);
                \draw[double distance=1mm] (0,-6) rectangle (8,3);
            \draw[double distance=1mm] (.06,-3) -- (7.95,-3);
        \end{scope}
        \begin{scope}
            \clip (.05,.05) -- (7.95,.57) -- (7.95,2.95) -- (.05,2.95) -- cycle;
            \foreach \x in {-1.2,-1,...,10}
            \foreach \y in {.2,.4,...,10}
            {
                \fill[red] (\x,\y) circle(1pt);
            }
            \node[minimum width=2cm,fill=white,cloud,draw,inner sep=0pt,cloud puffs=20] at (4,1.6) {\LARGE\bf BANG!};
        \end{scope}
        \begin{scope}
            \clip (.07,-.05) -- ([yshift=-.05cm]$(0,0)!.6!(8,.5)$) -- ([yshift=.05cm]7.95,-3) -- ([yshift=.05cm].07,-3) -- cycle;
%               \fill[orange!20] (0,-3) rectangle (10,3);
            \begin{scope}[yshift=-3cm]
%                   \fill[rounded corners=.2cm,aqua] (2,.07) rectangle (9,1);
                    \fill[bottom color=sky,top color=sky!40] (0,0) rectangle (8,3.5);
                            \fill[xshift=-1cm,gras] (0,1) -- (4,1) to[bend right=20] (0,1);
                            \fill[xshift=1cm,gras] (0,1) -- (4,1) to[bend right=30] (0,1);
                            \fill[xshift=2cm,gras] (0,1) -- (4,1) to[bend right=40] (0,1);
                            \fill[xshift=3.5cm,gras] (0,1) -- (4,1) to[bend right=25] (0,1);
                        \fill[yshift=1cm,rounded corners=.1cm,ground] (-1,.07) rectangle (8,-1);
                \marmot\coordinate (a) at (1,1.45);
                    \node at (6.5,.5) {\tiny\sl
                        \begin{tabular}{l}
                            Meanwhile in \\
                            \textsc{New Marmot} \ldots
                        \end{tabular}
                    };
                \node[text width=3.5cm,
                      fill=white,rectangle callout,
                      callout absolute pointer=(a.west),
                      draw] at (3.7,1.7) 
                      {\small I've got the magical letter \emph{\color{orange}k}. What should I do now?};
                    \node[rotate=-50,orange] at (.7,.65) {\emph{k}};
            \end{scope}
        \end{scope}
        \begin{scope}
            \clip ($(.35,0)!.6!(8,.4)$) -- (7.94,.45) -- (7.94,-2.75) -- cycle;
            \foreach \x in {0,.2,...,4.4}
            {
                \draw[xshift=5cm,red,ultra thick,xshift=\x cm] (60:.5) -- (240:3.1);
            }
            \node[fill=white,star,star points=10,draw] at (7,-1) {\sl Swoosh!};
        \end{scope}
        \begin{scope}
            \clip (.07,-3.05) -- (7.95,-3.05) -- (7.95,-5.93) -- (.07,-5.93) -- cycle;
                        \fill[navo,yshift=-4.4cm] ([xshift=4.25cm]0,-.4) -- ([xshift=4.25cm]0,-2) -- ([xshift=7.75cm]0,-2) -- ([xshift=7.75cm]0,-.4) arc(0:-180:1.75cm and 1.1cm) --+ (0,-2);
                    \fill[xshift=6cm,yshift=-4.8cm,navo!90!black] (0,0) circle(1.8cm and 1.1cm);
                        \draw[ultra thick,red,xshift=4.25cm,yshift=-4.5cm,navo!90!black] (0,-.4) -- (0,-2);
                        \draw[ultra thick,red,xshift=7.75cm,yshift=-4.5cm,navo!90!black] (0,-.4) -- (0,-2);
                \fill[xshift=6cm,yshift=-4.8cm,water!60] (0,0) circle(1.7cm and 1cm);
%               \begin{scope}[xshift=-3.5cm]
%                   \fill[navo!90,yshift=-4.4cm] ([xshift=4.25cm]0,-.4) -- ([xshift=4.25cm]0,-2) -- ([xshift=7.75cm]0,-2) -- ([xshift=7.75cm]0,-.4) arc(0:-180:1.75cm and 1.1cm) --+ (0,-2);
%                   \fill[xshift=6cm,yshift=-4.8cm,navo!70!brown] (0,0) circle(1.8cm and 1.1cm);
%                   \draw[ultra thick,red,xshift=4.25cm,yshift=-4.5cm,navo!70!brown] (0,-.4) -- (0,-2);
%                   \draw[ultra thick,red,xshift=7.75cm,yshift=-4.5cm,navo!70!brown] (0,-.4) -- (0,-2);
%                   \fill[xshift=6cm,yshift=-4.8cm,water!60] (0,0) circle(1.7cm and 1cm);
%               \end{scope}
%               \begin{scope}[xshift=-7cm]
%                   \fill[navo,yshift=-4.4cm] ([xshift=4.25cm]0,-.4) -- ([xshift=4.25cm]0,-2) -- ([xshift=7.75cm]0,-2) -- ([xshift=7.75cm]0,-.4) arc(0:-180:1.75cm and 1.1cm) --+ (0,-2);
%                   \fill[xshift=6cm,yshift=-4.8cm,navo!90!black] (0,0) circle(1.8cm and 1.1cm);
%                   \draw[ultra thick,red,xshift=4.25cm,yshift=-4.5cm,navo!30!brown] (0,-.4) -- (0,-2);
%                   \draw[ultra thick,red,xshift=7.75cm,yshift=-4.5cm,navo!30!brown] (0,-.4) -- (0,-2);
%                   \fill[xshift=6cm,yshift=-4.8cm,water!60] (0,0) circle(1.7cm and 1cm);
%               \end{scope}
            \begin{scope}[shift={(2,-5.75)}]
            \begin{scope}[xshift=3cm]
                \duck
                    \node[text width=3cm,rounded corners=4pt,fill=white,draw,rectangle callout,callout absolute pointer={([xshift=-.2cm]bill)}] at (-3,1) {Oh no, our beautiful letter \emph{\color{orange}k}, it's missing!};
                \end{scope}
                        \node at (5,2.4) {\tiny\sl
                            \begin{tabular}{l}
                                Somewhere else \\
                                in Duc\underline{\textcolor{white}{k}}\textcolor{forest}{\textit{city}} \ldots
                            \end{tabular}
                        };
                \end{scope}
        \end{scope}
    \end{tikzpicture}
%}
\end{document}

Here is the output:

Screenshot

current_user
  • 5,235
4

Some penguins from the tikzpingus package, stolen straight from the documentation:

\documentclass{article}
\usepackage{tikzpingus}

\begin{document}

\begin{tikzpicture} \pingu \pingu[% crown 2d=pingu@bronze, medal=pingu@purple, tie, eye patch left=teal, eye patch right=orange, right wing wave, sunglasses, glow thick=yellow, xshift=2.8cm ] \pingu[% cane left, right item flip, sign post right={Hi!}, monocle left, body=red, xshift=6cm ] \end{tikzpicture}

\end{document}

pingus

mbert
  • 4,171