53

I would like to draw an image like the following.

enter image description here

This is what I've done so far (I used tikz, but any other package is welcome):

\documentclass{article}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
        \draw[fill=blue] (.5,0) rectangle (4,2);
        \draw[fill=red] (1,1) to[bend left=50] (3,1) to[bend left=50] (1,1);
        \draw[fill=red] (3,1) -- (3.5,1.5) -- (3.3,1) -- (3.5,.5) -- cycle;
        \draw[fill=white] (1.6,1.1) circle (.15cm); 
        \draw[fill=blue] (1.55,1.1) circle (.05cm);         
    \end{tikzpicture}
\end{document}

enter image description here

Edit: April 2nd, Time for explanation

In Italy (but I also think in other countries), a practical joke done on April 1st is called "pesce d'Aprile" (= April's fish, that is an April Fools' Day prank) and is often related to fishes.

The usual one is to stick a drawing of a fish on someone's back without he/she realizes it.

Some years ago a colleague of mine stuck some "pesci d'Aprile" with written below "sono disponibile" (= I'm easy) on the rear of all the cars in our company car parking. Some other colleagues didn't realize it, and they had gone around with that drawing for days.

Another funny example happened in Milan on April, 1st 1985. Someone put on the windshield of a lot of cars a false fine for illegal parking. On the fine sheet was written "per il pagamento rivolgersi agli uffici comunali di via Gadio, 2" (= for payment, please contact the municipal offices in via Gadio, 2), the address of the Civic Aquarium.

Hence, this question was simply a way to put

enter image description here

P.S. = Since I earned a lot of reputation points with this trick question, I decided to give them back to the Community awarding a bounty to the two answers posted on April, 1st.

Moreover, I accepted Robert's one since he guessed without spoiling, and I thank the other two answerers.

To the downvoters: you're probably technically right, but:

  • there's already too much sadness in the world, let's laugh now and then!
  • humor is part of the LaTeX philosophy, Prof. Knuth himself docet
  • if only serious questions are accepted, why did they create a fun tag?
  • 2
    Maybe you should switch to an ellipse for the body (more similar to the upper picture, perhaps also for the tail: two overlapping ellipses) and you could have a look at decorationswith its snake style for the wavy lines. The mouth could be a bended draw as you use it already. And I think the eye looks fine. – TeXnician Apr 1 '17 at 6:20
  • 1
    I'm just suspicious of fish. Usually, mysterious fish turn out to be religiously motivated. But perhaps I've just been unlucky. Sleep well. – cfr Apr 2 '17 at 2:08
  • 1
    @CarLaTeX, I surely couldn't know who was the user asking this question before scrolling down. But I already knew he/she was from Italy! :D – Enrico Maria De Angelis Apr 4 '17 at 19:34
  • 1
    @EnricoMariaDeAngelis You can learn it in the future and win the 200 points bounty! :):):):) – CarLaTeX Apr 4 '17 at 19:43
  • 1
    @EnricoMariaDeAngelis see Paulo's answer! – CarLaTeX Apr 5 '17 at 13:24

10 Answers 10

32

A couple of hours late:

\documentclass{article}
\usepackage{lmodern,graphicx,color}
\def\familydefault{\sfdefault}
\def\seriesdefault{\bfdefault}
\def\chihapaura#1#2?{\color{\ifcase#1red\or yellow\or blue\fi}%
       \fontsize{#2\unitlength}{0pt}\selectfont}
\begin{document}
\begin{picture}(50,50)
  \put(46,18) {\chihapaura112?E}
  \put(38,15) {\chihapaura020?C}
  \put(29,5)  {\chihapaura121?\scalebox1[2.5]{S}}
  \put(0,0)   {\chihapaura0100?$\epsilon$}
  \put(7,20)  {\chihapaura230?\rotatebox{-24}{p}}
\end{picture}%(d'aprile)
\end{document}

d'aprile

  • sweet! you got my vote :) – Georges Apr 3 '17 at 15:02
51
+100

enter image description here

Asymptote version:

// fish.asy
//
settings.outformat="pdf";
real w=600,h=400; size(h,w);
pen bgPen=rgb(0,0.647,1),
bodyPen=rgb(0.847,0.196,0.133),
whitePen=rgb(1,1,1),
eyePen=rgb(0.004,0.18,1),
mouthPen=rgb(1,1,1),
scalesPen=rgb(0.98,1,0)+12pt;
pair[][] bBody={
    {(454,270),(436,252),(443,251),},{(433,269),(424,286),(398,322),},
    {(361,352),(324,382),(276,405),},{(218,394),(160,382),(92,334),},
    {(55,295),(18,256),(12,226),},{(13,187),(14,149),(21,102),},
    {(65,66),(109,30),(189,3),},{(243,2),(296,1),(322,24),},
    {(348,46),(374,68),(398,89),},{(414,109),(430,129),(437,149),},
    {(450,143),(463,137),(481,105),},{(504,80),(526,55),(552,37),},
    {(568,40),(585,43),(592,66),},{(584,97),(576,128),(553,166),},
    {(542,181),(531,197),(531,189),},{(543,204),(555,218),(579,256),},
    {(585,286),(591,316),(578,339),},{(571,349),(563,359),(561,356),},
    {(538,338),(515,320),(472,287),},
};
pair[][] bWhite={
    {(223,261),(227,278),(209,303),},{(192,312),(174,321),(156,315),},
    {(141,304),(127,293),(115,276),},{(116,260),(118,244),(132,228),},
    {(143,222),(155,215),(162,220),},{(179,227),(195,234),(220,244),},
};
pair[][] bEye={
    {(177,256),(180,264),(177,272),},{(171,276),(164,280),(154,279),},
    {(146,276),(139,272),(135,265),},{(136,258),(138,250),(146,241),},
    {(155,241),(163,240),(173,248),},
};
pair[][] bMouth={
    {(143,104),(122,94),(95,92),},
    {(83,86),(71,81),(75,71),},
    {(81,68),(87,65),(96,69),},
    {(105,68),(115,67),(126,62),},
    {(145,74),(165,87),(194,117),},
    {(204,133),(213,150),(204,152),},
    {(192,143),(179,135),(165,115),},
};
pair[][] aScales={
    {(221,370),(236,366),(257,360),(274,346),(292,337),(310,322),(315,305),(317,292),(312,275),
        (301,264),(307,249),(319,241),(331,229),(340,222),(350,210),(352,194),(347,176),(338,163),
        (335,151),(326,144),(319,141),(307,139),(312,123),(318,110),(322,93),(322,79),(321,63),(315,56),(297,46),(288,44),},
    {(387,115),(393,123),(397,139),(399,153),(394,174),(393,180),(401,203),(403,223),(390,243),
        (373,257),(383,268),(384,281),(379,300),(360,330),(328,354),(319,359),},
    {(465,153),(472,171),(460,182),(461,195),(469,204),(470,219),(460,231),(446,237),(432,242),},
    {(513,111),(520,120),(522,131),(515,143),(507,153),(511,164),(515,174),(510,187),
        (509,205),(511,219),(509,233),(517,243),(521,251),(519,265),(512,280),(507,288),},
    {(547,68),(556,73),(559,83),(559,94),(562,106),(563,112),},
    {(574,286),(567,291),(562,297),(557,301),(563,304),(564,313),(554,318),(546,323),},
};
pen[] penList={bodyPen, whitePen, eyePen, mouthPen};
pair[][][] pointList={bBody, bWhite, bEye, bMouth};
guide buildBguide(pair[][] aPoints){
    int n=aPoints.length;  guide g=aPoints[0][0]; 
    for(int i=0;i<n-1;++i){
        g=g..controls aPoints[i][1] and aPoints[i][2]..aPoints[i+1][0]; 
    }
    return g..controls aPoints[n-1][1] and aPoints[n-1][2]..cycle; 
};
guide buildGuide(pair[] aPoints){
    guide g; for(int i=0;i<aPoints.length;++i)g=g..aPoints[i]; 
    return g;
};
fill(box(0,(w-1,h-1)),bgPen);
for(int i=0;i<pointList.length;++i){
    fill(buildBguide(pointList[i]),penList[i]);
}
for(int i=0;i<aScales.length;++i){
    draw(buildGuide(aScales[i]),scalesPen);
}

Run asy fish to get fish.pdf.

* Edit: * enter image description here

Just for a little bit more fun, with minimal touch:

// fish.asy
//
settings.outformat="pdf";
real w=600,h=400; size(h,w);
pen bgPen=rgb(0,0.647,1),
bodyPen=rgb(0.847,0.196,0.133),
whitePen=rgb(1,1,1),
eyePen=rgb(0.004,0.18,1)+opacity(0.01),
mouthPen=rgb(1,1,1),
scalesPen=rgb(0.98,1,0)+12pt;
pair[][] bBody={
    {(454,270),(436,252),(443,251),},{(433,269),(424,286),(398,322),},
    {(361,352),(324,382),(276,405),},{(218,394),(160,382),(92,334),},
    {(55,295),(18,256),(12,226),},{(13,187),(14,149),(21,102),},
    {(65,66),(109,30),(189,3),},{(243,2),(296,1),(322,24),},
    {(348,46),(374,68),(398,89),},{(414,109),(430,129),(437,149),},
    {(450,143),(463,137),(481,105),},{(504,80),(526,55),(552,37),},
    {(568,40),(585,43),(592,66),},{(584,97),(576,128),(553,166),},
    {(542,181),(531,197),(531,189),},{(543,204),(555,218),(579,256),},
    {(585,286),(591,316),(578,339),},{(571,349),(563,359),(561,356),},
    {(538,338),(515,320),(472,287),},
};
pair[][] bWhite={
    {(223,261),(227,278),(209,303),},{(192,312),(174,321),(156,315),},
    {(141,304),(127,293),(115,276),},{(116,260),(118,244),(132,228),},
    {(143,222),(155,215),(162,220),},{(179,227),(195,234),(220,244),},
};
pair[][] bEye={
    {(177,256),(180,264),(177,272),},{(171,276),(164,280),(154,279),},
    {(146,276),(139,272),(135,265),},{(136,258),(138,250),(146,241),},
    {(155,241),(163,240),(173,248),},
};
pair[][] bMouth={
    {(143,104),(122,94),(95,92),},
    {(83,86),(71,81),(75,71),},
    {(81,68),(87,65),(96,69),},
    {(105,68),(115,67),(126,62),},
    {(145,74),(165,87),(194,117),},
    {(204,133),(213,150),(204,152),},
    {(192,143),(179,135),(165,115),},
};
pair[][] aScales={
    {(221,370),(236,366),(257,360),(274,346),(292,337),(310,322),(315,305),(317,292),(312,275),
        (301,264),(307,249),(319,241),(331,229),(340,222),(350,210),(352,194),(347,176),(338,163),
        (335,151),(326,144),(319,141),(307,139),(312,123),(318,110),(322,93),(322,79),(321,63),(315,56),(297,46),(288,44),},
    {(387,115),(393,123),(397,139),(399,153),(394,174),(393,180),(401,203),(403,223),(390,243),
        (373,257),(383,268),(384,281),(379,300),(360,330),(328,354),(319,359),},
    {(465,153),(472,171),(460,182),(461,195),(469,204),(470,219),(460,231),(446,237),(432,242),},
    {(513,111),(520,120),(522,131),(515,143),(507,153),(511,164),(515,174),(510,187),
        (509,205),(511,219),(509,233),(517,243),(521,251),(519,265),(512,280),(507,288),},
    {(547,68),(556,73),(559,83),(559,94),(562,106),(563,112),},
    {(574,286),(567,291),(562,297),(557,301),(563,304),(564,313),(554,318),(546,323),},
};
guide buildBguide(pair[][] aPoints){
    int n=aPoints.length;  guide g=aPoints[0][0]; 
    for(int i=0;i<n-1;++i){
        g=g..controls aPoints[i][1] and aPoints[i][2]..aPoints[i+1][0]; 
    }
    return g..controls aPoints[n-1][1] and aPoints[n-1][2]..cycle; 
};
guide buildGuide(pair[] aPoints){
    guide g; for(int i=0;i<aPoints.length;++i)g=g..aPoints[i]; 
    return g;
};
axialshade(box(0,(w-1,h-1)),deepblue,(0,3),palegreen,(0,600));
axialshade(buildBguide(bBody),paleyellow+opacity(0.6),(0,3),deepred,(0,200));

guide gWhite=buildBguide(bWhite);
guide gEye=buildBguide(bEye);
pair whiteCenter=(max(gWhite)+min(gWhite))/2;
pair eyeCenter=(max(gEye)+min(gEye))/2;
radialshade(gWhite,white,whiteCenter,20, orange,whiteCenter,60);
radialshade(gEye,black,eyeCenter,6, deepgreen,eyeCenter,20);
fill(buildBguide(bMouth),mouthPen);

for(int i=0;i<aScales.length;++i){
    draw(buildGuide(aScales[i]),scalesPen);
}

int n=99;  real llen=20,s;
pair lpoint,ldir;
for(int i=0;i<n;++i){
    s=i/(n-2);
    lpoint=relpoint(gWhite,s);
    ldir=rotate(90)*reldir(gWhite,s);
    draw(lpoint--(lpoint+llen*sin(2*pi*s)*ldir),black);
}

* Edit-3d *

More fun, this time in 3d:

enter image description here

// fish3d.asy
//
real w=8cm,h=0.618w;
size(h,w);

import solids;
currentprojection=orthographic(
camera=(-230,60,133),up=three.Y,target=(5,21,2),zoom=0.8);
currentlight=White;

include "fish3d05.asy";

material m_Skin=material(diffusepen=gray(0), emissivepen=rgb(0.8,0,0), specularpen=gray(1),    shininess=0.15);
material m_eyeW=material(diffusepen=gray(0.001), emissivepen=gray(0.45), specularpen=gray(0.9),shininess=0.15);
material m_eyeB=material(diffusepen=gray(0.001), emissivepen=gray(0.01), specularpen=gray(0.9),shininess=0.15);

draw(surface(P),m_Skin);

triple c0=(-42,42,0);
triple c1=(-42,42,-20);
triple c2=(-42,42,22);

real R=10, r=3;
draw(surface(sphere(c1,R)),surfacepen=m_eyeW);
draw(surface(sphere(c2,R)),surfacepen=m_eyeW);

draw(surface(rotate(70,c1-(0,1,0),c1+(0,1,0))*sphere(c1-(R-r*0.62)*(three.Z),r)) ,m_eyeB);
draw(surface(rotate(-60,c2-(0,1,0),c2+(0,1,0))*sphere(c2+(R-r*0.62)*(three.Z),r)),m_eyeB);

And the shape in fish3d05.asy file:

// fish3d05.asy

triple[][][] P={
{{(-77,42,0),(-78,42,7),(-71,37,14),(-68,22,14)},
{(-98,26,0),(-98,27,7),(-91,29,7),(-89,13,7)},
{(-119,20,0),(-119,20,1),(-115,13,5),(-113,7,5)},
{(-87,18,0),(-87,18,1),(-85,13,2),(-83,7,2)},
},{
{(-16,75,0),(-16,74,14),(-11,65,29),(-9,37,30)},
{(-38,80,0),(-38,80,14),(-31,67,31),(-30,39,31)},
{(-57,57,0),(-58,58,7),(-50,45,20),(-47,30,20)},
{(-77,42,0),(-78,42,7),(-71,37,14),(-68,22,14)},
},{
{(49,26,0),(50,26,5),(51,24,9),(51,20,9)},
{(33,34,0),(34,34,5),(35,25,14),(36,22,14)},
{(7,69,0),(7,69,14),(10,63,27),(12,35,28)},
{(-16,75,0),(-16,74,14),(-11,65,29),(-9,37,30)},
},{
{(80,39,-1),(80,39,4),(84,43,9),(83,30,9)},
{(71,36,-1),(71,36,4),(75,41,10),(75,28,10)},
{(65,17,0),(66,17,5),(67,22,5),(67,18,5)},
{(49,26,0),(50,26,5),(51,24,9),(51,20,9)},
},{
{(65,26,0),(66,26,0),(66,23,0),(66,20,0)},
{(101,33,0),(102,33,0),(102,29,2),(102,26,2)},
{(89,43,-1),(89,43,4),(92,46,8),(92,32,8)},
{(80,39,-1),(80,39,4),(84,43,9),(83,30,9)},
},{
{(-87,18,0),(-87,18,1),(-85,13,2),(-83,7,2)},
{(-55,16,0),(-55,16,1),(-56,13,0),(-54,7,0)},
{(29,19,0),(30,19,0),(29,16,-2),(29,14,-2)},
{(65,26,0),(66,26,0),(66,23,0),(66,20,0)},
},{
{(-68,22,14),(-65,6,14),(-67,-20,7),(-67,-21,0)},
{(-89,13,7),(-86,-2,7),(-87,-12,6),(-86,-13,-1)},
{(-113,7,5),(-111,0,5),(-108,-14,1),(-108,-15,0)},
{(-83,7,2),(-81,1,2),(-79,-6,1),(-79,-7,0)},
},{
{(-9,37,30),(-8,9,30),(-10,-39,16),(-10,-38,2)},
{(-30,39,31),(-28,11,32),(-31,-47,16),(-30,-47,2)},
{(-47,30,20),(-45,14,20),(-48,-28,7),(-47,-29,1)},
{(-68,22,14),(-65,6,14),(-67,-20,7),(-67,-21,0)},
},{
{(51,20,9),(52,16,9),(51,10,5),(50,10,0)},
{(36,22,14),(36,18,14),(36,6,5),(35,6,1)},
{(12,35,28),(13,7,28),(10,-30,16),(11,-30,2)},
{(-9,37,30),(-8,9,30),(-10,-39,16),(-10,-38,2)},
},{
{(83,30,9),(83,16,9),(79,-14,5),(79,-14,0)},
{(75,28,10),(74,14,10),(71,-14,5),(71,-14,0)},
{(67,18,5),(67,14,5),(66,14,4),(65,14,-1)},
{(51,20,9),(52,16,9),(51,10,5),(50,10,0)},
},{
{(66,20,0),(66,18,0),(65,15,0),(65,16,0)},
{(102,26,2),(102,24,2),(100,11,0),(99,12,0)},
{(92,32,8),(92,19,9),(88,-15,5),(88,-15,0)},
{(83,30,9),(83,16,9),(79,-14,5),(79,-14,0)},
},{
{(-83,7,2),(-81,1,2),(-79,-6,1),(-79,-7,0)},
{(-54,7,0),(-52,1,0),(-50,2,2),(-50,1,0)},
{(29,14,-2),(29,11,-2),(31,19,0),(31,20,0)},
{(66,20,0),(66,18,0),(65,15,0),(65,16,0)},
},{
{(-67,-21,0),(-66,-22,-7),(-63,3,-14),(-66,18,-14)},
{(-86,-13,-1),(-85,-14,-8),(-84,-7,-9),(-87,9,-9)},
{(-108,-15,0),(-108,-16,-2),(-110,-3,-6),(-112,3,-6)},
{(-79,-7,0),(-79,-8,-1),(-81,-2,-3),(-83,4,-3)},
},{
{(-10,-38,2),(-10,-38,-12),(-7,11,-25),(-8,39,-25)},
{(-30,-47,2),(-30,-47,-12),(-26,12,-26),(-27,40,-27)},
{(-47,-29,1),(-47,-30,-6),(-42,12,-19),(-44,28,-19)},
{(-67,-21,0),(-66,-22,-7),(-63,3,-14),(-66,18,-14)},
},{
{(50,10,0),(49,10,-5),(49,16,-10),(49,20,-10)},
{(35,6,1),(34,6,-4),(33,18,-13),(33,22,-13)},
{(11,-30,2),(11,-29,-12),(13,9,-23),(11,37,-24)},
{(-10,-38,2),(-10,-38,-12),(-7,11,-25),(-8,39,-25)},
},{
{(79,-14,0),(79,-14,-5),(83,16,-10),(83,30,-10)},
{(71,-14,0),(70,-14,-5),(73,14,-11),(74,27,-11)},
{(65,14,-1),(64,14,-5),(64,13,-7),(64,17,-7)},
{(50,10,0),(49,10,-5),(49,16,-10),(49,20,-10)},
},{
{(65,16,0),(65,16,0),(65,18,0),(65,20,0)},
{(99,12,0),(99,12,0),(102,25,-2),(102,27,-2)},
{(88,-15,0),(88,-15,-5),(92,19,-9),(92,32,-9)},
{(79,-14,0),(79,-14,-5),(83,16,-10),(83,30,-10)},
},{
{(-79,-7,0),(-79,-8,-1),(-81,-2,-3),(-83,4,-3)},
{(-50,1,0),(-50,0,-1),(-52,-1,0),(-54,5,0)},
{(31,20,0),(31,20,0),(28,11,2),(28,14,2)},
{(65,16,0),(65,16,0),(65,18,0),(65,20,0)},
},{
{(-66,18,-14),(-68,34,-14),(-77,41,-7),(-77,42,0)},
{(-87,9,-9),(-89,25,-9),(-97,26,-7),(-98,26,0)},
{(-112,3,-6),(-114,9,-6),(-119,19,-1),(-119,20,0)},
{(-83,4,-3),(-85,10,-3),(-87,17,-1),(-87,18,0)},
},{
{(-8,39,-25),(-10,67,-26),(-15,75,-14),(-16,75,0)},
{(-27,40,-27),(-29,68,-27),(-38,81,-14),(-38,80,0)},
{(-44,28,-19),(-47,43,-19),(-57,56,-7),(-57,57,0)},
{(-66,18,-14),(-68,34,-14),(-77,41,-7),(-77,42,0)},
},{
{(49,20,-10),(48,24,-10),(49,26,-5),(49,26,0)},
{(33,22,-13),(33,26,-13),(33,34,-5),(33,34,0)},
{(11,37,-24),(10,66,-24),(7,69,-14),(7,69,0)},
{(-8,39,-25),(-10,67,-26),(-15,75,-14),(-16,75,0)},
},{
{(83,30,-10),(83,43,-10),(80,39,-5),(80,39,-1)},
{(74,27,-11),(74,41,-11),(71,36,-5),(71,36,-1)},
{(64,17,-7),(64,21,-7),(64,17,-5),(65,17,0)},
{(49,20,-10),(48,24,-10),(49,26,-5),(49,26,0)},
},{
{(65,20,0),(65,23,0),(65,26,0),(65,26,0)},
{(102,27,-2),(102,30,-2),(101,33,0),(101,33,0)},
{(92,32,-9),(93,46,-9),(89,43,-5),(89,43,-1)},
{(83,30,-10),(83,43,-10),(80,39,-5),(80,39,-1)},
},{
{(-83,4,-3),(-85,10,-3),(-87,17,-1),(-87,18,0)},
{(-54,5,0),(-56,11,0),(-55,15,-1),(-55,16,0)},
{(28,14,2),(28,16,2),(29,19,0),(29,19,0)},
{(65,20,0),(65,23,0),(65,26,0),(65,26,0)},
}};
  • 2
    +1, gorgeous! Did you use a tool to create this answer? See the edit of my question. – CarLaTeX Apr 2 '17 at 6:49
  • 2
    @CarLaTeX: yes, basically, InkScape to convert png to eps, pstoedit to convert eps to get the basic contours in plain asy, then mostly cleaning a bit. – g.kov Apr 2 '17 at 10:01
  • Excellent job! Sorry for the prank! :):):) – CarLaTeX Apr 2 '17 at 10:05
  • @g.kov When you used Inkscape then the way to get the picture in TeX document is more simple: export Inkscape result to PDF and include PDF image using \pdfximage (or similar tools like \includegraphics). No asymptote is needed. – wipet Apr 3 '17 at 9:48
  • 1
    @AlexG: yes, see added 3D fun version. – g.kov Apr 5 '17 at 9:55
35
+50
\documentclass{article}
\usepackage{tikz,stackengine}

\begin{document}
\savestack\fish{%
    \begin{tikzpicture}
        \draw[fill=blue] (.5,0) rectangle (4,2);
        \draw[fill=red] (1,1) to[bend left=50] (3,1) to[bend left=50] (1,1);
        \draw[fill=red] (3,1) -- (3.5,1.5) -- (3.3,1) -- (3.5,.5) -- cycle;
        \draw[fill=white] (1.6,1.1) circle (.15cm); 
        \draw[fill=blue] (1.55,1.1) circle (.05cm);         
    \end{tikzpicture}
}
\color{yellow}%
  \stackinset{c}{-2em}{c}{-.75em}{%
    \rotatebox{-150}{\scalebox{1}[.5]{\textcolor{white}{$\frown$}}}}{%
  \stackinset{c}{}{c}{}{%
    \scalebox{.7}{\rotatebox{-90}{$\frown\!\frown\!\frown$}}}{%
  \stackinset{c}{.7em}{c}{}{%
    \scalebox{.7}[.5]{\rotatebox{-90}{$\frown\!\frown\!\frown$}}}{%
  \stackinset{c}{1.3em}{c}{}{%
    \scalebox{.5}[.3]{\rotatebox{-90}{$\frown\!\frown\!\frown$}}}{%
  \stackinset{c}{2.6em}{c}{}{%
    \scalebox{.4}[.3]{\rotatebox{-90}{$\frown~\frown$}}}{%
  \stackinset{c}{2.9em}{c}{}{%
    \scalebox{.3}[.3]{\rotatebox{-90}{$\frown~~~~~~~~\frown$}}}{%
  \fish}}}}}}
\end{document}

enter image description here

  • Aw, don't be sad, turn that \frown upside down! – Jason C Apr 1 '17 at 19:38
  • +1, very creative way of using \frown! See the edit of my question! – CarLaTeX Apr 2 '17 at 6:50
  • @CarLaTeX Thank you for the bounty, and the international lesson on what we call in the US "April Fools Day". Here, we have no such fish connection, but pranks are the order of the day. – Steven B. Segletes Apr 4 '17 at 11:27
  • 1
    You're welcome. On Wikipedia they say In 1508, French poet Eloy d'Amerval referred to a poisson d’avril (April fool, literally "Fish of April"), a possible reference to the holiday. Hence I think it's connected to fishes also in France, it'd be interesting to know for which other countries is the same :):):) – CarLaTeX Apr 4 '17 at 11:35
  • 3
    @CarLaTeX To steal from one source is plagiarism...to steal from many is research. – Steven B. Segletes Apr 4 '17 at 11:52
30

A (poor) mathematical fish.

${\cdot}\kern -4pt {\subset}\kern -3pt {\rtimes}$

enter image description here

  • 5
    looks like a bomb – AlexG Apr 3 '17 at 14:06
  • @AlexG, I agree. Specially like those from Super Mario game. – Sigur Apr 3 '17 at 14:16
  • But I like it anyway, +1 – AlexG Apr 3 '17 at 14:19
  • ooh a Bullet Bill or a Banzai Bill. :) – Paulo Cereda Apr 4 '17 at 22:02
25

A Metafish, with fins...

enter image description here

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

    u = 20;
path dorso, ventro;
dorso  = ((-1/4,0) .. (0,1/2) .. (1,9/8) .. (2,5/4) .. (4,1) .. (6,2/3) .. (7.5,17/16)) scaled u;
ventro = ((0,-1/3)..(1,-1)..(4.4,-1)..(6,-1/2)..(7.5,-17/16)) scaled u;

picture eye;
eye = image(
    fill fullcircle scaled 10 withcolor white;
    draw fullcircle scaled 10;
    fill fullcircle scaled 5 shifted 1/2(-1,1);
    unfill fullcircle scaled 1 shifted (-1,1);
    fill   fullcircle scaled 1/2 shifted (-2.73,2.73);
);

path tail[]; n=16;
for t=1 upto n-1:
    tail[t] = interpath(t/n,subpath(5,6) of dorso, subpath(3,4) of ventro);
    tail[t] := tail[t] shifted (3-sqrt(abs(ypart point 0 of tail[t])),0);
endfor

path body;
body = reverse ventro .. (1/8u,-1/8u) {left} .. (-1/4u,0) & dorso
    for i=1 upto n-1: .. point 1 of tail[i] {dir -40} endfor .. cycle; 

path a,b;
a = point 3   of dorso {direction 3 of dorso rotated 72} .. point 3   of dorso shifted (1/4u,1/2u+normaldeviate);
b = point 4.5 of dorso {direction 4.5 of dorso rotated 90}     .. point 4.5 of dorso shifted (1/3u,3/4u+normaldeviate);

path f[];
for t=0 upto 32: f[t] = subpath(0,7/8-(t**5/4)/512+1/64 normaldeviate) of interpath(t/32,a,b); endfor
for t=0 upto 32: draw f[t]; endfor
draw point 1 of f[0] for t=1 upto 32: .. {dir 60} point 1 of f[t] endfor;

path a,b;
a = point 1.5   of ventro {direction 2 of ventro rotated -72} 
 .. point 1.5   of ventro shifted (1/4u,-1/2u+normaldeviate);
b = point 3 of ventro {direction 3 of ventro rotated -90}     
 .. point 3 of ventro shifted (1/3u,-3/4u+normaldeviate);

path f[];
for t=0 upto 16: f[t] = subpath(0,7/8+1/64 normaldeviate) of interpath(t/32,a,b); endfor
for t=0 upto 16: draw f[t]; endfor
draw point 1 of f[0] for t=1 upto 16: .. {dir 60} point 1 of f[t] endfor;

fill body withcolor 3/4[1/3[blue,green],white];
draw body;
for t=1 upto n-1:   draw tail[t]; endfor
draw eye rotated -10 shifted (1/2u,1/4u);
endfig;
end.
  • I like this fish best among the fish here. What a pity that it is not tikzed. – Thumbolt Dec 2 '18 at 15:42
  • Thank you! TikZ is not always the best drawing tool... I do my best to show that Metapost still has some useful features. It's also a much more interesting and entertaining language... In this drawing I found MP's interpath and normaldeviate useful. – Thruston Dec 3 '18 at 0:05
21

Let us add a shapepar answer, including ducks too:

\documentclass{article}
\usepackage[margin=2cm,landscape]{geometry}
\usepackage{shapepar}

\def\fishpar#1{\shapepar{\fishshape}#1\par}
\def\fishshape{%
{25.6127}%
{0.857843}b{50.6127}\\%
{1.59314}t{50}{0.40266}\\%
{1.71569}t{49.895}{0.47269}\\%
{2.32843}b{22.1814}t{49.3697}{0.793652}\\%
{2.45098}t{21.3235}{1.71569}t{49.2647}{0.857843}\\%
{2.57353}t{20.3431}{3.43137}t{49.183}{0.89869}\\%
{2.69608}t{19.7304}{4.77941}t{49.1013}{0.939545}\\%
{2.81863}t{19.1176}{5.94363}t{49.0196}{0.980392}\\%
{2.94118}t{18.5049}{7.10784}t{48.9379}{1.02124}\\%
{3.06373}t{17.8922}{8.33333}t{48.8562}{1.06209}\\%
{3.18627}t{16.9118}{9.92647}t{48.7745}{1.10294}\\%
{3.43137}t{16.1765}{11.3971}t{48.6111}{1.18464}\\%
{3.55392}t{15.8088}{12.1324}t{48.5294}{1.22549}\\%
{3.67647}t{15.4412}{12.8676}t{48.4314}{1.28268}\\%
{3.92157}t{14.7059}{14.3382}t{48.2353}{1.39706}\\%
{4.28922}t{13.9706}{15.9314}t{47.9412}{1.58613}\\%
{4.41176}t{13.7255}{16.4216}t{47.8431}{1.64916}\\%
{4.65686}t{13.2353}{17.402}t{47.6471}{1.77521}\\%
{4.77941}t{12.9902}{17.8309}t{47.549}{1.83824}\\%
{4.90196}t{12.7451}{18.2598}t{47.4673}{1.8893}\\%
{5.14706}t{12.2549}{19.1176}t{47.3039}{1.99142}\\%
{5.51471}t{11.5196}{20.5882}t{47.0588}{2.14461}\\%
{5.7598}t{11.0294}{21.5686}t{46.8954}{2.24673}\\%
{5.88235}t{10.7843}{22.0588}t{46.8137}{2.3012}\\%
{6.25}t{10.2328}{23.125}t{46.5686}{2.4646}\\%
{6.4951}t{9.8652}{23.8358}t{46.3904}{2.58838}\\%
{6.61765}t{9.68137}{24.2647}t{46.3012}{2.65028}\\%
{6.86275}t{9.19118}{25.2451}t{46.123}{2.77406}\\%
{7.23039}t{8.45588}{26.5319}t{45.8556}{2.95975}\\%
{7.35294}t{8.2598}{26.9118}t{45.7665}{3.02164}\\%
{7.59804}t{7.86765}{27.6307}t{45.5882}{3.14542}\\%
{7.84314}t{7.47549}{28.3497}t{45.41}{3.26921}\\%
{7.96569}t{7.31209}{28.6765}t{45.3209}{3.33111}\\%
{8.08823}t{7.14869}{29.0033}t{45.2317}{3.38959}\\%
{8.21078}t{6.98529}{5.26961}st{12.2549}{24.1013}t{45.1426}{3.44808}\\%
{8.21078}t{6.98529}{4.77941}t{12.2549}{24.1013}t{45.1426}{3.44808}\\%
{8.33333}t{6.8219}{4.57516}t{12.6225}{23.9379}t{45.0535}{3.50657}\\%
{8.45588}t{6.6585}{4.49346}t{12.8676}{23.8971}t{44.9643}{3.56506}\\%
{8.57843}t{6.4951}{4.41176}t{13.1127}{23.8562}t{44.8752}{3.62355}\\%
{8.70098}t{6.29902}{4.36274}t{13.3578}{23.8154}t{44.7861}{3.68204}\\%
{8.82353}t{6.10294}{4.49755}t{13.4191}{23.9583}t{44.697}{3.74053}\\%
{8.94608}t{5.90686}{4.63235}t{13.4804}{24.0721}t{44.6078}{3.79902}\\%
{9.06863}t{5.71078}{4.58333}t{13.7255}{24.0021}t{44.5261}{3.86321}\\%
{9.19118}t{5.51471}{4.71814}t{13.7868}{24.1159}t{44.4444}{3.92741}\\%
{9.31373}t{5.34314}{4.82843}t{13.848}{24.2297}t{44.3627}{3.9916}\\%
{9.55882}t{5}{5.04902}t{13.9706}{24.4573}t{44.1993}{4.11998}\\%
{9.68137}t{4.82843}{5.22059}t{13.9706}{24.6324}t{44.1176}{4.18417}\\%
{9.80392}t{4.65686}{5.39216}t{13.9706}{24.8162}t{44.0359}{4.24836}\\%
{9.92647}t{4.47304}{5.57598}t{13.9706}{25}t{43.9542}{4.30964}\\%
{10.049}t{4.28922}{5.69853}t{14.0319}{25.1225}t{43.8726}{4.37091}\\%
{10.1716}t{4.10539}{5.82108}t{14.0931}{25.2451}t{43.785}{4.43803}\\%
{10.2941}t{3.92157}{6.0049}t{14.0931}{25.4289}t{43.6975}{4.50514}\\%
{10.4167}t{3.77451}{6.15196}t{14.0931}{25.6127}t{43.6099}{4.57224}\\%
{10.5392}t{3.62745}{6.36029}t{14.0319}{25.8374}t{43.5224}{4.63936}\\%
{10.6618}t{3.48039}{6.56863}t{13.9706}{26.0621}t{43.4349}{4.72689}\\%
{10.9069}t{3.18627}{6.86275}t{13.9706}{26.3889}t{43.2598}{4.90196}\\%
{11.0294}t{3.00245}{7.04657}t{13.9706}{26.5523}t{43.1723}{4.9895}\\%
{11.152}t{2.81863}{7.29167}t{13.9093}{26.777}t{43.0847}{5.07703}\\%
{11.2745}t{2.6348}{7.53676}t{13.848}{27.0527}t{42.9972}{5.16457}\\%
{11.3971}t{2.45098}{7.78186}t{13.7868}{27.3284}t{42.9097}{5.2521}\\%
{11.5196}t{2.28758}{8.00654}t{13.7255}{27.6042}t{42.8221}{5.33964}\\%
{11.6422}t{2.12418}{8.41503}t{13.4804}{28.0637}t{42.7346}{5.42717}\\%
{11.7647}t{1.96078}{8.63971}t{13.4191}{28.3088}t{42.6471}{5.51471}\\%
{11.8873}t{1.79739}{8.86438}t{13.3578}{28.5539}t{42.5245}{5.63725}\\%
{12.0098}t{1.63399}{9.27288}t{13.1127}{28.9828}t{42.402}{5.7598}\\%
{12.1324}t{1.47059}{9.68137}t{12.8676}{29.4118}jt{42.2794}{5.88235}\\%
{12.2549}t{1.29902}{10.098}t{12.6225}{35.5392}\\%
{12.3775}t{1.12745}{10.6373}t{12.2549}{35.9069}\\%
{12.3775}t{1.12745}{10.6373}jt{11.7647}{36.3971}\\%
{12.7451}t{0.612745}{47.5082}\\%
{13.4804}t{0.980392}{47.0588}\\%
{13.9706}t{1.71569}{46.4052}\\%
{14.2157}t{2.04248}{46.1193}\\%
{14.7059}t{2.69608}{45.5474}\\%
{14.951}t{3.10458}{45.1797}\\%
{15.1961}t{3.51307}{38.7663}st{42.2794}{6.0049}\\%
{15.4412}t{3.92157}{38.0637}t{42.4837}{5.80065}\\%
{15.6863}t{4.27171}{37.4195}t{42.6879}{5.5964}\\%
{15.8088}t{4.44678}{37.0973}t{42.79}{5.52492}\\%
{15.9314}t{4.62185}{36.7384}t{42.8922}{5.45343}\\%
{16.299}t{5.14706}{35.6618}t{43.1373}{5.30025}\\%
{16.6667}t{5.67227}{34.5483}t{43.3824}{5.14706}\\%
{16.9118}t{6.02241}{33.806}t{43.5458}{5.01867}\\%
{17.0343}t{6.19748}{33.3859}t{43.6275}{4.95448}\\%
{17.1569}t{6.37255}{32.9657}t{43.7347}{4.86476}\\%
{17.2794}t{6.54762}{32.5455}t{43.8419}{4.77504}\\%
{17.5245}t{6.89776}{31.8277}t{44.0564}{4.59559}\\%
{17.7696}t{7.2479}{31.1099}t{44.2708}{4.42198}\\%
{18.0147}t{7.59804}{30.3922}t{44.4853}{4.24836}\\%
{18.2598}t{7.9902}{29.6324}t{44.6814}{4.09314}\\%
{18.6275}t{8.57843}{28.3088}t{44.9755}{3.89093}\\%
{18.75}t{8.76225}{27.8799}t{45.0735}{3.82353}\\%
{19.1176}t{9.31373}{26.7402}t{45.3676}{3.62132}\\%
{19.2402}t{9.49755}{26.3603}t{45.4657}{3.55392}\\%
{19.3627}t{9.68137}{25.9804}t{45.5637}{3.4909}\\%
{19.6078}t{10.049}{25.0613}t{45.7598}{3.36485}\\%
{19.8529}t{10.4779}{24.0809}t{45.9559}{3.23879}\\%
{20.098}t{10.9069}{23.1618}t{46.152}{3.11274}\\%
{20.4657}t{11.6422}{21.6912}t{46.4461}{2.8799}\\%
{20.5882}t{11.8873}{21.1397}t{46.5352}{2.8112}\\%
{20.8333}t{12.3775}{20.0368}t{46.7135}{2.6738}\\%
{20.9559}t{12.6225}{19.4853}t{46.8026}{2.61968}\\%
{21.0784}t{12.8676}{18.9542}t{46.8917}{2.56557}\\%
{21.3235}t{13.7255}{17.5245}t{47.07}{2.45735}\\%
{21.6912}t{14.5833}{15.9314}t{47.3373}{2.29501}\\%
{21.8137}t{14.9101}{15.3595}t{47.4265}{2.23652}\\%
{22.0588}t{15.5637}{13.9706}t{47.6443}{2.07993}\\%
{22.3039}t{16.6667}{11.8873}t{47.8622}{1.92334}\\%
{22.549}t{17.402}{10.049}t{48.0801}{1.76675}\\%
{22.6716}t{17.7696}{9.06863}t{48.189}{1.68845}\\%
{22.7941}t{18.5049}{7.72059}t{48.2979}{1.61016}\\%
{22.9167}t{19.1176}{6.4951}t{48.4069}{1.53186}\\%
{23.0392}t{19.7304}{5.26961}t{48.5022}{1.46718}\\%
{23.1618}t{20.8333}{3.18627}t{48.5975}{1.40251}\\%
{23.1618}t{21.5686}{1.47059}t{48.5975}{1.40251}\\%
{23.2843}e{22.3039}t{48.6928}{1.33783}\\%
{23.652}t{48.9788}{1.14379}\\%
{24.0196}t{49.2647}{0.949755}\\%
{24.6324}t{49.7753}{0.592322}\\%
{24.7549}t{49.8775}{0.490196}\\%
{25.4902}e{50.3676}%
}

\usepackage{xparse}
\ExplSyntaxOn
\newcommand{\duck}{\prg_replicate:nn {400}{duck~}}
\ExplSyntaxOff

\begin{document}
\thispagestyle{empty}
\fishpar{\duck}
\end{document}

The result:

Quack!

I am hungry. :)

  • 1
    Hahaha ducks' favorite food! – CarLaTeX Apr 5 '17 at 12:56
15

Basic

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-fun}
\begin{document}
\begin{pspicture}(6,4)
    \psFish[fillstyle=slope]
\end{pspicture}
\end{document}

enter image description here

Advanced

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-vehicle,pst-fun}

\def\V{\rput{20}(7.7,.5){\psscalebox{-1.3 1.3}{\psFish[fillstyle=slope]}}}
\def\F{cos(x)/2+x/3}

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

enter image description here

11
\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{fadings}
\tikzset{Pacman/.pic={
\fill (0,0)  to[out={1.75*#1},in={180-0.25*#1}] ({0.92*#1}:2)
 to[out={-180+0.25*#1},in={1.75*#1},looseness=0.5] (1,0) 
 to[out={-1.75*#1},in={180-0.25*#1},looseness=0.5] ({-0.92*#1}:2) 
 to [out={-180+0.25*#1},in={-1.75*#1}] cycle;
\shadedraw[ball color=yellow,thick] 
(0,0)  to[out={1.75*#1},in={180-0.25*#1}] ({0.92*#1}:2)
 arc({0.92*#1}:{360-0.92*#1}:2) to [out={-180+0.25*#1},in={-1.75*#1}]
  cycle;
\fill ({0.3-0.01*#1},1) circle (0.3);
  }
}
\begin{document}
\foreach \i in {0,...,20}
{\pgfmathsetmacro{\myangle}{60-5*abs(\i-10)}
\begin{tikzpicture}[scale=2]
%\begin{scope}[xshift={-(6.5-0.4*\i)*1cm},scale=2]
\fill (0,0)  to[out={1.75*\myangle},in={180-0.25*\myangle}] ({0.92*\myangle}:2)
to[out={-180+0.25*\myangle},in={1.75*\myangle},looseness=0.5] (1,0) 
to[out={-1.75*\myangle},in={180-0.25*\myangle},looseness=0.5]
({-0.92*\myangle}:2) to [out={-180+0.25*\myangle},in={-1.75*\myangle}]   cycle;
%\end{scope}
\pic[xscale=-1] at (5-0.30*\i,0) {Pacman=\myangle};
%\begin{scope}[xshift={-(6.5-0.4*\i)*1cm},scale=2]
\shade[postaction={path fading=east,fill=white}] [ball color=yellow,thick] 
(0,0)  to[out={1.75*\myangle},in={180-0.25*\myangle}] ({0.92*\myangle}:2)
 arc({0.92*\myangle}:{360-0.92*\myangle}:2) to [out={-180+0.25*\myangle},in={-1.75*\myangle}]
  cycle;
\fill ({0.35-0.015*\myangle},1) circle (0.3);
\shade[postaction={path fading=west,fill=white}]
[postaction={path fading=west,fading angle=45,fill=blue,opacity=.5}] 
[top color=red!20,bottom color=red,opacity=0.6] (0,2) to[out=180,in=20] (-4,1) to[out=-160,in=-20] (-5,1)
to[out=160,in=-45] (-6,1.8) to[out=-80,in=80] (-6,-1.6)
to[out=45,in=-160] (-5,-0.8) to[out=20,in=160] (-4,-0.8)
to[out=-20,in=180] (0,-2) to[out=160,in=-160] cycle;
%\end{scope}
\path[use as bounding box](-8,-2) rectangle (4,2);
\end{tikzpicture}
}
\end{document}

enter image description here

  • +1. When the killer fish opens its mouth to the maximum it seems exaggerated :0. – manooooh Aug 1 '18 at 0:33
4

An alphish

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\newcommand{\alphish}{%
  \begin{tikzpicture}[x=1em,y=1ex, every node/.style={inner sep=0 cm, outer sep=0 cm}]
    \node {\(\alpha\)} node at (-0.1,0.2) {.} node at (-0.1,-0.1) {-};
  \end{tikzpicture}
}
\begin{document}
\begin{tikzpicture}
  \node {\(\circ\)} node at (-0.2,0.1) {\(\circ\)} node at (0,0.3) {\(\circ\)} node at (-0.1,0.5) {\(\circ\)};
\end{tikzpicture}
\Huge\alphish\LARGE\alphish\normalsize\alphish\alphish\alphish
\end{document}\

Four small fishes made with the alpha symbol (\hbar=\frac{h}{2\pi}) \quad and \quad (\alphish=\frac{\alpha}{2\pi})

3

You want a fish? I'll give you three!

\documentclass{minimal}
\begin{document}
$a \quad \alpha \quad \propto$
\end{document}

and the result looks like this :)

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.