Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I understand that this post may cause some down votes because it seems a bit off-topic, but having seen the discussion on Christmas Tree with LaTeX I am still willing to try.

My Girlfriend's birthday is coming (OK, actually less than 12 hrs!).

I would like to write her a little love note. Both of us have just started our PhD. So I suddenly come up with this idea of drawing a red cute love heart to her using LaTeX. It must be of a lot of fun!

Come on! Show your romantics, TeX geeks and gurus! Who says we only know about technology?! We do understand love! :D

share|improve this question
11  
“Both of us have just started our PhD.” I am sure that you will leave the graphic representation up to her, then. Equations are good enough: mathworld.wolfram.com/HeartCurve.html –  Harold Cavendish Oct 20 '13 at 17:00
8  
@HaroldCavendish Could be a PhD in the humanities... –  Jubobs Oct 20 '13 at 21:57
2  
Better still, make her a love-heart acrostic: tex.stackexchange.com/questions/121440/… –  Steven B. Segletes Oct 20 '13 at 23:59
    
@StevenB.Segletes Awesome suggestion! –  Farticle Pilter Oct 21 '13 at 6:07
2  
You also have a Valentine's heart in TeXample.net –  Ignasi Oct 21 '13 at 6:28

12 Answers 12

Use shapepar to write your note:

\documentclass[svgnames]{article}
\usepackage{fontspec,microtype,shapepar,xcolor}
\setmainfont{TeX Gyre Chorus}
\begin{document}
\textcolor{Crimson}{\heartpar{Lorem ipsum dolor sit amet, consectetuer
    adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
    laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim
    veniam, quis nostrud exerci tation ullamcorper suscipit lobortis
    nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure
    dolor in hendrerit in vulputate velit esse molestie consequat, vel
    illum dolore eu feugiat nulla facilisis at vero eros et accumsan
    et iusto odio dignissim qui blandit praesent luptatum zzril
    delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
    dolor sit amet, consectetuer adipiscing elit, sed diam nonummy
    nibh euismod tincidunt ut laoreet dolore magna aliquam erat
    volutpat.}}
\end{document}

The longer your note, and the shorter or more “hyphenatable” your words toward the end of the note, the more likely it is that shapepar will produce a pleasing shape, without rivers or the underfull lines seen in my image; I recommend microtype for the same reason.

enter image description here

share|improve this answer
    
Why I end up with this error? I am using TexMaker XeLaTeX. ! Undefined control sequence.<argument> \c_keys_code_root_tlfontspec/Ligatures/Historic ...tureoption{Ligatures}{Historic}{Historical} and ! fontspec error: "font-not-found"!! The font "TeX Gyre Chorus" cannot be found.!! See the fontspec documentation for further information.!! For immediate help type H <return>.!............................................... \setmainfont{TeX Gyre Chorus} –  Farticle Pilter Oct 21 '13 at 6:50
4  
+1: Combine it with a love poem and you have a truely romantic love heart! –  Daniel Oct 21 '13 at 9:40
    
@perfectionm1ng TeX Gyre Chorus does not have the hlig feature, only the dlig (use Ligatures=Rare or Ligatures=Discretionary). But that wouldn’t account for the “font-not-found.” Which operating system do you use? –  Thérèse Oct 21 '13 at 10:05
    
@perfectionm1ng shapepar doesn't require any particular fonts, or xetex, so you can experiment with any fonts you normally use. –  David Carlisle Oct 22 '13 at 1:56
1  
@perfectionm1ng -- What David means is you can simply not load fontspec and (therefore) skip the \setmainfont command. If you are using regular pdflatex, simply add \usepackage[T1]{fontenc} (recommended) and choose a font from the LaTeX font catalogue. –  jon Oct 22 '13 at 5:03

Still version:

enter image description here

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

\def\x(#1){sin(#1)^3}
\def\y(#1){(13*cos(#1)-5*cos(2*#1)-2*cos(3*#1)-cos(4*#1))/16}

\psset{algebraic,plotpoints=100}

\begin{document}

\begin{pspicture}[showgrid=bottom](-2,-2)(2,2)
    \psparametricplot[origin={0,0.15}]{0}{\psPiTwo}{\x(t)|\y(t)}
\end{pspicture}

\end{document}

Animated version:

enter image description here

\documentclass[border=12pt,pstricks]{standalone}
\usepackage{pst-plot}
\usepackage[nomessages]{fp}
\FPeval\Delta{round(2*pi/30:2)}

\def\x(#1){sin(#1)^3}
\def\y(#1){(13*cos(#1)-5*cos(2*#1)-2*cos(3*#1)-cos(4*#1))/16}

\psset{algebraic,plotpoints=100}

\begin{document}
\multido{\n=0.00+\Delta}{31}{%
\begin{pspicture}[showgrid=false](-1.5,-1.5)(1.5,1.5)
    \psparametricplot[origin={0,0.15},linecolor=red]{0}{\n}{\x(t)|\y(t)}
\end{pspicture}}

\end{document}

Photo Clipper

\documentclass[border=12pt,pstricks]{standalone}
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics{pretty}}
\usepackage{pst-plot}

\def\x(#1){sin(#1)^3}
\def\y(#1){(13*cos(#1)-5*cos(2*#1)-2*cos(3*#1)-cos(4*#1))/16}

\psset
{
    algebraic,
    plotpoints=100,
    xunit=.5\wd\IBox,
    yunit=.5\ht\IBox,
}

\usepackage{mathtools}
\begin{document}

\begin{pspicture}[showgrid=false](-1,-1)(1,1.5)
\begin{psclip}{\psparametricplot[origin={0,0.15}]{0}{\psPiTwo}{\x(t)|\y(t)}}
\rput(0,0){\usebox\IBox}
\end{psclip}
\rput(0,1.25){%
    \color{red}\large
    $\displaystyle\!
    \begin{aligned}
        x(t)&=\sin^3 t\\
        y(t)&=(13\cos t -5\cos 2t -2\cos 3t -\cos 4t)/16
    \end{aligned}$}
\rput(0,1){HAPPY BIRTHDAY}
\end{pspicture}

\end{document}

enter image description here

PDF animated version

Compile it with pdflatex -shell-escape filename as there are some \immediate\write18{} in my code below.

\documentclass[preview,border=12pt]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{heart.tex}
\documentclass[border=12pt,pstricks]{standalone}
\usepackage{graphicx}
\newsavebox\IBox
\savebox\IBox{\includegraphics[scale=3]{example-grid-100x100pt}}
\usepackage{pst-plot}

\def\x(#1){sin(#1)^3}
\def\y(#1){(13*cos(#1)-5*cos(2*#1)-2*cos(3*#1)-cos(4*#1))/16}

\psset
{
    algebraic,
    plotpoints=1000,
    xunit=.5\wd\IBox,
    yunit=.5\ht\IBox,
    linewidth=10pt,
}

\usepackage[nomessages]{fp}
\FPeval\Delta{round(2*pi/30:2)}
\usepackage{mathtools}
\begin{document}

\multido{\n=0.00+\Delta}{31}{%
\begin{pspicture}[showgrid=false](-1,-1)(1,1.5)
\begin{psclip}{\psparametricplot[origin={0,0.15}]{0}{\psPiTwo}{\x(t)|\y(t)}}
\rput(0,0){\usebox\IBox}
\end{psclip}
\rput(0,1.25){%
    \color{red}\large
    $\displaystyle\!
    \begin{aligned}
        x(t)&=\sin^3 t\\
        y(t)&=(13\cos t -5\cos 2t -2\cos 3t -\cos 4t)/16
    \end{aligned}$}
\rput(0,1){HAPPY BIRTHDAY}
\psparametricplot[origin={0,0.15},linecolor=red]{0}{\n}{\x(t)|\y(t)}
\end{pspicture}}

\end{document}
 \end{filecontents*}

\usepackage{animate}
\immediate\write18{latex heart}
\immediate\write18{dvips heart}
\immediate\write18{ps2pdf heart.ps}
\begin{document}
\animategraphics[controls,autoplay,loop,scale=1]{7}{heart}{}{}
\end{document}

enter image description here

share|improve this answer
3  
Mein Gott! Danke shoen! I like the animated one! –  Farticle Pilter Oct 20 '13 at 16:59
10  
As usual, please focus on the code rather than on the dummy picture. –  Please don't touch Oct 20 '13 at 18:16
8  
Sorry I can't do that. I don't even see the browser window :) –  percusse Oct 20 '13 at 22:36
4  
Yes I will marry her. Wait, what question... :) –  Paulo Cereda Oct 21 '13 at 0:51
4  
@Marienplatz no, they didn't (but I did:-) –  David Carlisle Oct 22 '13 at 1:54

A three-dimensional version- nice to have an application of volumes of revolution

screenshot

% arara: pdflatex
% !arara: indent: {overwrite: on}
\documentclass{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=1.9}
\pgfplotsset{
    /pgfplots/colormap={pink}{color(0cm)=(purple); color(1cm)=(pink!80!purple); color(2cm)=(pink!90); color(3cm)=(pink) }
}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            view={0}{10},
            axis equal,
            axis lines=none,
            colormap name =pink, 
        ]
        \addplot3[
            surf,
            shader=faceted,
            samples=50,
            domain=0:2*pi,y domain=0:2*pi,
            z buffer=sort,
        opacity=0.15]
        (
        {(sin(deg(x)))^3*cos(deg(y))},
        {(sin(deg(x)))^3*sin(deg(y))},
        {(13*cos(deg(x))-5*cos(2*deg(x))-2*cos(3*deg(x))-cos(4*deg(x)))/16}
        );
    \end{axis}
\end{tikzpicture}

\end{document}
share|improve this answer
2  
For my wife :) Maybe this will convince her to learn LaTeX and join the site? –  cmhughes Oct 21 '13 at 1:57
1  
Beautiful! She will definitely learn and join Anyway, she will need it to write thesis LOL –  Farticle Pilter Oct 21 '13 at 2:09
2  
Ah Ah AAAAhhh! No words! –  Harish Kumar Oct 21 '13 at 5:44
3  
Love is best expressed in three dimensions. Be careful, the bottom cusp is rather sharp (infinitely sharp, actually - don't touch it). –  Thomas Oct 21 '13 at 10:51
    
Beautiful plot! I added it to the PGFplots example gallery. –  Stefan Kottwitz Mar 17 at 11:18

This may be cheesy and slightly off-topic, but here goes... Because my girlfriend's present still hadn't arrived on her birthday, I had to improvise; I made a coupon similar to the following, which she really liked. Perhaps that could give you ideas...

Of course, don't forget to buy her a real present. Most women don't like cheapskates :)

enter image description here

\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{pgfornament}

\newcommand\mycoupon{%
    \begin{tikzpicture}[color=Maroon,
                        every node/.style={inner sep=0pt}]
     %\draw[help lines] (-6,-3) grid (6,3);
     \node[minimum width=12cm, minimum height=6cm](vecbox){};
     \draw[thin, gray!20]
          (vecbox.north west)
       -- (vecbox.north east)
       -- (vecbox.south east)
       -- (vecbox.south west)
       -- cycle;
     \node[anchor=north west] at (vecbox.north west)
          {\pgfornament[width=2cm]{61}};
     \node[anchor=north east] at (vecbox.north east)
          {\pgfornament[width=2cm,symmetry=v]{61}};
     \node[anchor=south west] at (vecbox.south west)
          {\pgfornament[width=2cm,symmetry=h]{61}};
     \node[anchor=south east] at (vecbox.south east)
          {\pgfornament[width=2cm,symmetry=c]{61}};
        \node at (0,0)
        {
            \LARGE
            \begin{tabular}{c}
            Coupon for one snuggle time\                with \textbf{Farticle Pilter}
            \end{tabular}
        };
        \node at (0,-2.7)
        {
            \tiny
            \begin{tabular}{c}
            Coupon redeemable by \textbf{insert name} only, whenever she wants.\                Issued on \textbf{insert date}. Does not expire\ldots{} ever!
            \end{tabular}
        };
    \end{tikzpicture}
}

\begin{document}

\pagestyle{empty}
\noindent
\mycoupon\\[1em]
\mycoupon\\[1em]
\mycoupon


\end{document}
share|improve this answer
2  
dude it's sweet! Thanks! BTW, your advice on real present helps. haha! –  Farticle Pilter Oct 20 '13 at 17:07
    
How fo I handle this error? ! LaTeX Error: File `pgfornament.sty' not found. Thanks! –  Farticle Pilter Oct 20 '13 at 17:16
1  
@perfectionm1ng You must install Alain Matthes's pgfornament package. I don't think it's part of any distribution yet. You can download it from there. –  Jubobs Oct 20 '13 at 17:19

a beating heart ...

\documentclass[border=12pt,pstricks]{standalone}
\usepackage{pst-plot,multido}
\psset{algebraic,plotpoints=1000,unit=5,linewidth=10pt}
\begin{document}

\multido{\iA=20+20}{4}{%
  \begin{pspicture}(-1,-1.1)(1,0.8)
  \psparametricplot[linecolor=red!50,fillstyle=solid,
    fillcolor=red!\iA,linejoin=1]{0}{\psPiTwo}%
    {sin(t)^3 | (13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t))/16}
\end{pspicture}}

\end{document}

enter image description here

for the animation:

convert -delay 10 -loop 0 -density 300 -scale 300 -alpha remove heart.pdf heart.gif

And the same as a 3D cardioid:

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d}
\begin{document}

\multido{\iA=20+20,\iB=10+20,\iC=150+10}{4}{%
\begin{pspicture}(-4,-4)(4,4)% the main 2D area
\psset{lightsrc=viewpoint,viewpoint=50 -20 20 rtp2xyz,Decran=\iC}
\defFunction[algebraic]{heart}(u,v)
   { sin(u)^3*cos(v) }%                               x=f(u,v)
   { sin(u)^3*sin(v) }%                               y=f(u,v)
   { (13*cos(u)-5*cos(2*u)-2*cos(3*u)-cos(4*u))/16 }% z=f(u)
\psSolid[object=surfaceparametree,linecolor=red!\iB,
 base=0 pi pi 4 div neg 5 pi mul 2 div,
 fillcolor=red!\iA,function=heart,linewidth=0.1\pslinewidth,ngrid=40]
\end{pspicture}}

\end{document}

enter image description here

share|improve this answer
16  
+1: I hope she does not suffer from epilepsy. By the way, pst-plot automatically loads multido. –  Please don't touch Oct 20 '13 at 18:45
    
Cool! I like it a lot! –  Farticle Pilter Oct 21 '13 at 2:09
1  
+1 but could you slow it down a bit? :) –  cmhughes Oct 21 '13 at 2:47
3  
no, I am so nervous that you may like it .... ;-) –  Herbert Oct 21 '13 at 4:53
    
I am compiling it with XeLaTeX, texmaker. The heart is seperated into 4 pages, each page showing a static heart with one color. Any idea? –  Farticle Pilter Oct 21 '13 at 7:00

Here's a TikZing heart!

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
  \draw[red,fill=red] (0,0) .. controls (0,0.75) and (-1.5,1.00) .. (-1.5,2)  arc (180:0:0.75)  -- cycle;
  \draw[red,fill=red] (0,0) .. controls (0,0.75) and ( 1.5,1.00) .. ( 1.5,2)  arc (0:180:0.75) -- cycle;
\end{tikzpicture}
\end{document}

enter image description here

share|improve this answer
    
Nice! Simple and classic! Thanks! Where should I touch if I wanna make it bigger w.r.t. the A4 paper? –  Farticle Pilter Oct 20 '13 at 17:37
    
You can pass x=2cm,y=2cm as an option to the tikzpicture environment. –  A.Ellett Oct 20 '13 at 17:46
    
@perfectionm1ng have a look at the standalone documentclass- it was made for images :) –  cmhughes Oct 21 '13 at 16:58

Unicode has many to choose from: xetex '\font\tenrm="Symbola:color=DD0000" at 3cm \rm ♥ ❤ ♡ \char"1F497\ \char"1F493\ \char"1F498 \bye'

enter image description here

share|improve this answer
    
I'm new. Any reason you're using XeTex rather than the standard LaTeX? –  jvriesem Feb 8 at 8:31
1  
@jvriesem: I rarely use LaTeX; when I need something so complicated that I think it's not worth the effort to do in plain XeTeX/LuaTeX, I go for ConTeXt. But note that you can do the same thing as in this example with XeLaTeX or LuaLaTeX: the only requirements are a Unicode-aware engine and a font which includes the glyphs. Though, you'd want to use an abstraction layer for the font-loading (ie. package fontspec) so you can use the features of LaTeX New Font Selection Scheme (NFSS). Oh, and warm welcome to tex.se! :-) –  morbusg Feb 8 at 8:51
    
Thanks! I appreciate your explanation. –  jvriesem Feb 13 at 22:46

I know this is a bit late, but for reference, OP didn't say what sort of PhD...

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[yscale=-1]
\draw[fill=red!30!white](.456,3.236)
    .. controls (.422,4.168) and (.408,5.095) .. (.461,6.046)
    .. controls (.475,6.228) and (.365,6.400) .. (.379,6.601)
    -- (.819,11.816)
    .. controls (.843,12.194) and (.838,13.389) .. (.900,13.972)
    .. controls (.943,14.340) and (2.870,14.340) .. (2.903,13.972)
    .. controls (2.927,13.699) and (2.932,13.436) .. (2.903,13.169)
    -- (1.847,5.401)
    .. controls (1.914,4.627) and (2.033,3.924) .. (2.129,3.193)
    .. controls (2.177,2.906) and (.441,2.863) .. (.456,3.236) ;
\draw[fill=red!30!white] (.456,3.236)
    .. controls (.422,4.168) and (.408,5.095) .. (.461,6.046)
    .. controls (.475,6.228) and (.365,6.400) .. (.379,6.601)
    -- (.819,11.816)
    .. controls (.843,12.194) and (.838,13.389) .. (.900,13.972)
    .. controls (.943,14.340) and (2.870,14.340) .. (2.903,13.972)
    .. controls (2.927,13.699) and (2.932,13.436) .. (2.903,13.169)
    -- (1.847,5.401)
    .. controls (1.914,4.627) and (2.033,3.924) .. (2.129,3.193)
    .. controls (2.177,2.906) and (.441,2.863) .. (.456,3.236) ;
\draw[fill=red!60!white] (.303,6.697)
    .. controls (-.161,7.442) and (-.022,9.641) .. (.484,11.118)
    .. controls (.795,12.022) and (1.297,12.414) .. (2.062,12.801)
    .. controls (3.429,13.513) and (5.112,13.714) .. (6.598,13.795)
    .. controls (9.495,13.957) and (9.738,11.735) .. (8.974,8.967)
    .. controls (8.744,8.126) and (8.123,7.815) .. (7.917,7.222)
    .. controls (7.683,6.606) and (7.310,5.999) .. (6.598,5.420)
    .. controls (5.570,4.579) and (1.230,5.210) .. (.303,6.697) ;
\fill[fill=red!25!white] (2.540,6.405)
    .. controls (2.296,6.257) and (1.890,6.300) .. (1.608,6.424)
    .. controls (1.274,6.577) and (1.101,6.802) .. (1.001,7.151)
    .. controls (.858,7.652) and (1.025,8.293) .. (1.106,8.795)
    .. controls (1.149,9.072) and (1.149,9.402) .. (1.254,9.684)
    .. controls (1.278,9.746) and (1.278,9.823) .. (1.360,9.870)
    .. controls (1.426,9.909) and (1.412,9.732) .. (1.460,9.651)
    .. controls (1.747,9.144) and (2.210,8.346) .. (2.502,7.834)
    .. controls (2.602,7.657) and (2.631,7.437) .. (2.531,7.303)
    .. controls (2.411,7.146) and (2.206,6.883) .. (2.306,6.768)
    .. controls (2.382,6.682) and (2.621,6.453) .. (2.540,6.405) ;
\fill[fill=red!25!white] (4.204,6.606)
    .. controls (5.413,6.434) and (5.327,7.543) .. (5.466,7.796)
    .. controls (5.599,8.054) and (6.350,8.785) .. (6.498,9.029)
    .. controls (6.646,9.273) and (7.282,9.947) .. (7.067,10.616)
    .. controls (6.847,11.290) and (5.776,11.582) .. (5.212,11.429)
    .. controls (4.643,11.271) and (3.773,10.941) .. (3.166,11.113)
    .. controls (2.559,11.280) and (1.350,10.793) .. (1.790,10.052)
    .. controls (2.225,9.311) and (3.640,6.692) .. (4.204,6.606) ;
\draw[fill=yellow] (1.307,3.107)
    .. controls (1.675,3.107) and (1.976,3.169) .. (1.976,3.250)
    .. controls (1.976,3.327) and (1.675,3.394) .. (1.307,3.394)
    .. controls (.934,3.394) and (.633,3.327) .. (.633,3.250)
    .. controls (.633,3.169) and (.934,3.107) .. (1.307,3.107) ;
\draw[fill=blue!20!red!80!white] (1.307,3.107)
    .. controls (1.675,3.107) and (1.976,3.169) .. (1.976,3.250)
    .. controls (1.976,3.327) and (1.675,3.394) .. (1.307,3.394)
    .. controls (.934,3.394) and (.633,3.327) .. (.633,3.250)
    .. controls (.633,3.169) and (.934,3.107) .. (1.307,3.107) ;
\fill[fill=red!10!white] (1.024,14.000)
    .. controls (.991,13.929) and (.924,12.146) .. (1.039,12.323)
    .. controls (1.120,12.452) and (1.498,12.753) .. (1.870,12.767)
    .. controls (2.004,12.777) and (1.918,14.129) .. (1.875,14.163)
    .. controls (1.789,14.230) and (1.110,14.173) .. (1.024,14.000) ;
\fill[fill=red!10!white] (.618,3.432)
    -- (.618,6.247)
    .. controls (.852,5.941) and (1.086,5.745) .. (1.345,5.578)
    .. controls (1.364,5.033) and (1.368,4.125) .. (1.345,3.556)
    .. controls (1.096,3.556) and (.862,3.518) .. (.618,3.432) ;
\draw[fill=white] (4.872,5.215)
    .. controls (4.944,5.607) and (4.891,5.884) .. (4.595,6.061)
    .. controls (4.389,6.185) and (3.749,6.013) .. (3.864,5.664)
    .. controls (3.974,5.339) and (4.088,5.081) .. (4.346,4.923)
    .. controls (4.533,4.813) and (4.858,5.119) .. (4.872,5.215) ;

\draw[fill=red!80!blue] (5.662,5.665)
    .. controls (5.643,5.732) and (5.624,5.803) .. (5.604,5.880)
    .. controls (5.944,6.076) and (6.355,6.640) .. (6.522,7.314)
    .. controls (6.699,8.031) and (6.336,8.284) .. (5.853,8.796)
    .. controls (5.523,9.154) and (5.313,9.541) .. (5.303,10.014)
    .. controls (5.485,9.106) and (5.844,8.958) .. (6.030,8.877)
    .. controls (6.278,8.767) and (6.221,9.221) .. (6.159,10.029)
    .. controls (6.341,9.412) and (6.298,8.944) .. (6.274,8.752)
    .. controls (6.245,8.561) and (6.589,8.370) .. (6.685,8.093)
    .. controls (6.799,7.777) and (6.924,8.069) .. (6.991,8.208)
    .. controls (7.153,8.547) and (7.311,8.681) .. (7.263,8.987)
    .. controls (7.096,10.033) and (6.780,10.387) .. (6.250,10.650)
    .. controls (6.728,10.492) and (6.833,10.373) .. (6.976,10.230)
    .. controls (6.991,10.440) and (6.900,10.870) .. (6.962,11.209)
    .. controls (6.957,10.669) and (7.277,9.197) .. (7.469,9.044)
    .. controls (7.579,8.953) and (8.296,9.632) .. (8.372,10.139)
    .. controls (8.458,10.698) and (8.936,11.535) .. (8.716,12.213)
    .. controls (8.970,11.458) and (8.535,10.636) .. (8.635,10.445)
    .. controls (8.778,10.641) and (9.060,11.037) .. (9.027,11.257)
    .. controls (8.994,11.477) and (9.170,11.874) .. (9.094,12.333)
    .. controls (9.228,11.883) and (9.065,11.702) .. (9.118,11.377)
    .. controls (9.166,11.052) and (8.979,10.626) .. (8.836,10.359)
    .. controls (8.549,9.828) and (7.889,9.187) .. (7.373,8.595)
    .. controls (7.708,8.796) and (8.535,9.077) .. (8.487,9.369)
    .. controls (8.434,9.661) and (8.860,9.900) .. (9.027,10.306)
    .. controls (8.903,9.928) and (8.587,9.656) .. (8.568,9.321)
    .. controls (8.554,8.982) and (8.023,8.815) .. (7.889,8.762)
    .. controls (7.995,8.752) and (8.253,8.748) .. (8.348,8.834)
    .. controls (8.444,8.920) and (8.702,9.097) .. (8.912,9.044)
    .. controls (8.539,9.044) and (8.463,8.671) .. (8.286,8.657)
    .. controls (8.109,8.647) and (7.641,8.566) .. (7.531,8.470)
    .. controls (7.015,8.016) and (6.599,7.223) .. (6.819,7.271)
    .. controls (7.344,7.381) and (7.899,7.471) .. (8.377,7.988)
    .. controls (8.023,7.567) and (7.999,7.562) .. (7.478,7.314)
    .. controls (7.091,7.137) and (6.537,6.979) .. (6.355,6.511)
    .. controls (6.250,6.229) and (5.887,5.789) .. (5.662,5.665) ;
\draw[fill=red!80!blue] (3.387,5.951)
    .. controls (3.779,7.003) and (2.665,8.600) .. (1.857,9.866)
    .. controls (1.384,10.607) and (1.704,11.157) .. (2.364,11.305)
    .. controls (2.842,11.410) and (4.515,11.004) .. (4.993,11.023)
    .. controls (5.480,11.037) and (5.604,10.856) .. (5.882,10.559)
    .. controls (5.815,10.894) and (5.256,11.305) .. (4.997,11.209)
    .. controls (4.735,11.114) and (4.199,11.229) .. (3.975,11.338)
    .. controls (4.280,11.425) and (4.787,11.401) .. (5.179,11.601)
    .. controls (5.571,11.802) and (5.920,11.750) .. (6.159,11.300)
    .. controls (6.140,11.730) and (5.538,11.955) .. (5.126,11.783)
    .. controls (4.715,11.616) and (3.736,11.434) .. (3.401,11.434)
    .. controls (3.176,11.429) and (3.009,11.468) .. (2.617,11.563)
    .. controls (3.324,11.635) and (4.252,12.084) .. (5.165,12.304)
    .. controls (5.863,12.471) and (6.680,12.452) .. (6.790,12.189)
    .. controls (6.895,11.946) and (7.072,11.840) .. (7.473,11.793)
    .. controls (7.000,12.008) and (6.866,12.156) .. (6.814,12.438)
    .. controls (7.015,12.490) and (7.411,12.256) .. (7.626,12.457)
    .. controls (7.846,12.658) and (8.439,12.653) .. (8.864,12.381)
    .. controls (8.386,12.730) and (7.770,12.710) .. (7.607,12.557)
    .. controls (7.445,12.405) and (7.077,12.553) .. (6.862,12.591)
    .. controls (6.647,12.634) and (6.446,12.644) .. (5.891,12.548)
    .. controls (5.714,12.620) and (5.657,12.715) .. (5.867,12.792)
    .. controls (6.082,12.835) and (6.537,12.806) .. (7.014,12.806)
    .. controls (7.258,12.806) and (7.430,12.935) .. (7.631,12.811)
    .. controls (7.832,12.682) and (8.033,12.873) .. (8.324,13.016)
    .. controls (7.999,12.906) and (7.746,12.768) .. (7.660,12.897)
    .. controls (7.574,13.031) and (7.263,12.916) .. (7.163,12.940)
    .. controls (7.292,12.992) and (7.493,12.935) .. (7.507,13.136)
    .. controls (7.526,13.337) and (8.057,13.284) .. (7.999,13.652)
    .. controls (7.923,13.294) and (7.540,13.423) .. (7.406,13.179)
    .. controls (7.277,12.940) and (6.885,13.055) .. (6.680,13.031)
    .. controls (6.250,12.973) and (5.557,13.074) .. (5.461,12.639)
    .. controls (5.217,12.600) and (4.921,12.514) .. (4.682,12.419)
    .. controls (4.687,12.538) and (5.103,13.026) .. (5.461,13.102)
    .. controls (5.815,13.174) and (6.532,13.155) .. (6.699,13.681)
    .. controls (6.345,13.174) and (5.614,13.356) .. (5.294,13.260)
    .. controls (4.978,13.160) and (4.213,12.285) .. (3.898,12.189)
    .. controls (3.583,12.099) and (3.272,11.922) .. (3.157,11.989)
    .. controls (3.062,12.084) and (3.119,12.600) .. (3.583,12.581)
    .. controls (4.046,12.562) and (4.362,12.882) .. (4.620,13.356)
    .. controls (4.271,12.897) and (3.721,12.615) .. (3.358,12.744)
    .. controls (2.990,12.868) and (2.823,11.936) .. (2.598,11.812)
    .. controls (2.373,11.683) and (1.594,11.377) .. (1.503,11.042)
    .. controls (1.465,11.377) and (2.106,11.903) .. (2.043,12.677)
    .. controls (1.953,11.922) and (1.522,11.783) .. (1.317,11.377)
    .. controls (1.111,10.966) and (1.212,10.555) .. (1.417,9.991)
    .. controls (1.422,9.971) and (3.836,6.267) .. (2.588,5.985)
    .. controls (2.235,5.904) and (1.981,5.813) .. (1.757,5.660)
    .. controls (1.871,4.489) and (2.187,2.481) .. (2.650,2.405)
    .. controls (3.176,2.314) and (4.185,2.878) .. (4.175,3.289)
    .. controls (4.166,3.724) and (3.817,4.766) .. (3.994,5.201)
    .. controls (3.759,5.397) and (3.277,5.617) .. (3.387,5.951) ;
\fill[fill=red!90!blue!70!white] (2.942,5.378)
    .. controls (2.875,5.339) and (2.736,5.378) .. (2.722,5.459)
    .. controls (2.712,5.535) and (2.741,5.583) .. (2.779,5.674)
    .. controls (3.013,6.066) and (3.200,6.716) .. (2.980,7.266)
    .. controls (2.803,7.720) and (2.564,8.226) .. (2.296,8.661)
    .. controls (2.048,9.068) and (1.627,9.670) .. (1.565,10.363)
    .. controls (1.579,10.105) and (1.837,9.737) .. (1.952,9.512)
    .. controls (2.263,8.905) and (3.071,7.815) .. (3.214,7.180)
    .. controls (3.362,6.534) and (3.243,5.875) .. (3.071,5.597)
    .. controls (3.066,5.540) and (3.028,5.425) .. (2.942,5.378) ;
\fill[fill=red!90!blue!70!white] (2.793,2.424)
    .. controls (2.253,3.542) and (2.115,3.948) .. (2.014,5.712)
    .. controls (2.019,5.784) and (2.349,5.903) .. (2.339,5.841)
    .. controls (2.301,4.665) and (2.650,3.289) .. (3.138,2.486)
    .. controls (3.032,2.447) and (2.870,2.419) .. (2.793,2.424) ;
\draw (2.526,6.104)
    .. controls (2.990,5.937) and (2.541,6.688) .. (2.545,6.673)
    .. controls (2.454,6.831) and (2.521,6.869) .. (2.564,6.922)
    .. controls (2.717,7.123) and (2.932,7.165) .. (2.660,7.471) ;
\draw (.461,3.241)
    .. controls (.576,3.657) and (2.187,3.657) .. (2.129,3.198) ;
\draw[fill=red!30!white] (3.687,5.731)
    .. controls (3.520,6.229) and (5.541,6.616) .. (5.556,6.214)
    .. controls (5.570,5.827) and (5.790,5.325) .. (5.800,4.919)
    .. controls (5.809,4.584) and (4.480,4.250) .. (4.308,4.517)
    .. controls (4.084,4.866) and (3.854,5.249) .. (3.687,5.731) ;
\draw (4.299,4.531)
    .. controls (4.189,4.885) and (5.752,5.315) .. (5.800,4.961) ;
\draw[fill=blue!20!red!80!white] (5.097,4.594)
    .. controls (5.436,4.694) and (5.699,4.823) .. (5.680,4.919)
    .. controls (5.656,5.009) and (5.360,5.000) .. (5.020,4.899)
    .. controls (4.681,4.799) and (4.428,4.675) .. (4.452,4.584)
    .. controls (4.475,4.493) and (4.757,4.493) .. (5.097,4.594) ;
\end{tikzpicture}

\end{document}

enter image description here

share|improve this answer
1  
Beautiful answer! I wish I had a similar control using controls. You should try to answer: Holiday contest! Drawing a picture of Krampus for Yule. :) –  OSjerick Dec 13 '13 at 3:36
3  
They're not my paths - they're from clip art, with some filters to convert .eps paths to tikz paths. For Krampus, I'd have to find the vector artwork to do the conversion. –  Andrew Kepert Dec 13 '13 at 3:45
    
+1 Love Heart for Dr.Love :) –  texenthusiast Dec 13 '13 at 3:47
    
Nice work! I'm really impressed. How did you get all of those points? –  jvriesem Feb 8 at 8:34
    
@jvriesem - They're not my points - they're from clip art, with some filters to convert .eps points to tikz points. –  Andrew Kepert Feb 9 at 7:56

And then there's Knuth's METAFONT heart, adapted here for Metapost. See p.134 of the METAFONT book.

prologues := 3;
outputtemplate := "heart.eps";
beginfig(1);
path heart, p;
heart = (100,162) .. (140,178){right} .. (195,125){down}
     .. (100,0){curl 0} .. (100,0){curl 0} .. {up}(5,125) .. {right}(60,178) .. (100,162);
p = (100,200) -- (200,200) -- (200,100) -- (200,0) -- (0,0) -- (0,100) -- (0,200) -- (100,200);
for n=0 upto 10: draw interpath(n/10,p,heart) withcolor .987red; endfor
endfig;
end.

enter image description here

share|improve this answer
\documentclass{standalone}
\usepackage{arev}
\usepackage{xcolor}
\begin{document}
\rule[-2pt]{0pt}{10pt}
\textcolor{red}{$\varheart$}
\rule{0pt}{10pt}
\end{document}

heart

share|improve this answer
1  
Red color with arrow missing otherwise perfect –  texenthusiast Oct 20 '13 at 17:11
    
What's with the struts? –  Werner Oct 20 '13 at 17:11
    
The struts prevent standalone from chopping off the top of the heart; I tried without them and it looked even worse. –  Benjamin McKay Oct 20 '13 at 17:13
    
\documentclass[preview,border=12pt]{standalone} \usepackage{arev} \usepackage{xcolor} \usepackage{graphicx} \begin{document} \scalebox{10}{\textcolor{red}{$\varheart$}} \end{document} is my suggestion. –  Please don't touch Oct 20 '13 at 18:13

Joining late the party!!!

A very simple heart beat proposal with hobby and some shading:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{hobby,shadows}

\makeatletter
\pgfdeclareradialshading[tikz@ball]{heart}{\pgfpoint{-0.275cm}{0.4cm}}{%
  color(0cm)=(tikz@ball!60!white);
  color(0.4cm)=(tikz@ball!85!white); 
  color(0.7cm)=(tikz@ball); 
  color(0.9925cm)=(tikz@ball!75!black); 
  rgb(1cm)=(1,1,1)
}
\tikzoption{heart on color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{heart on}\tikz@addmode{\tikz@mode@shadetrue}}

\pgfdeclareradialshading[tikz@ball]{heart}{\pgfpoint{-0.275cm}{0.4cm}}{%
  color(0cm)=(tikz@ball!80!white);
  color(0.4cm)=(tikz@ball!90!white); 
  color(0.7cm)=(tikz@ball); 
  color(0.9925cm)=(tikz@ball!75!black); 
  rgb(1cm)=(1,1,1)
}
\tikzoption{heart color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{heart}\tikz@addmode{\tikz@mode@shadetrue}}
\makeatother

% original code by Daniel:
% http://tex.stackexchange.com/questions/55806/tikzpicture-in-beamer#55849
\tikzset{
    invisible/.style={opacity=0,text opacity=0},
    visible on/.style={alt=#1{}{invisible}},
    alt/.code args={<#1>#2#3}{%
      \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} 
    },
}

% original code in
% http://tex.stackexchange.com/questions/84513/highlighting-in-beamer-using-tikz-nodes#84608
\tikzset{
  background shade/.style={#1},
  shade on/.style={alt=#1{}{background shade}},
  background shade/.default={shading=heart,heart color=red}
}

\begin{document}
\begin{frame}
\begin{tikzpicture}[scale=4]
\path[drop shadow,heart on color=red,shade on=<{2,4,6,8,9,12,13}>] 
(0,0) to[curve through={(0.25,0.4) .. (0.5,0.6) .. (0.5,1.2) .. (0.4,1.25)}]  (0,1) 
(0,1) to[curve through={(-0.4,1.25)..(-0.5,1.2) .. (-0.5,0.6).. (-0.25,0.4)}](0,0);
\end{tikzpicture}
\end{frame}
\end{document}

The result:

enter image description here

share|improve this answer
    
\draw[use Hobby shortcut] ([out angle=85,in angle=85]0,0) .. (1,0) .. ([Hobby finish]0,-2) .. ([out angle=95,in angle=95]-1,0) .. (0,0); –  Loop Space Oct 22 '13 at 11:42
    
@AndrewStacey: definitely more elegant :) But my twisted mind prefers coordinates... –  Claudio Fiandrino Oct 22 '13 at 11:50
    
+1 this reminds me of Jessica Rabbit :) –  cmhughes Feb 25 at 16:51

From TeXample.net, the author is Alain Matthes:

% Valentine heart
% Author: Alain Matthes
\documentclass{article}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \draw[ball color=BrickRed,shading=ball] (4,1) ..controls +(120:2cm)
        and +(90:2cm) .. (0,0) .. controls  +(-90:2cm) and +(90:3cm) ..
        (4,-8) .. controls +(90:3cm) and +(-90:2cm) ..(8,0)  .. controls
        +(90:2cm) and  +(60:2cm) .. (4,1);
\end{tikzpicture}
\end{document}

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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