How to draw the following picture in Latex/Tikz:enter image description here

  • Take one of my drawing (!) from tex.stackexchange.com/q/681418/245790 and check for "hair", "horn", "eye" etc. Then you can vary the line from straight to curved. See the tikz manual for modifying arrow tips.
    – MS-SPO
    Apr 2, 2023 at 14:10
  • Start to read basic TikZ tutorial. Then propose your partial solution and we will help you to go beyond.
    – projetmbc
    Apr 2, 2023 at 14:18
  • Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer.
    – Community Bot
    Apr 2, 2023 at 14:22

4 Answers 4


No need for an AI to draw something like this.

S between two dots


            inner sep=0pt,
            outer sep=1pt,
            minimum width=4pt,
        \node[dot] (1) at (0,0) {};
        \node[dot] (2) at (0,-5) {};
        \draw[thick,->] (1) .. controls ++ (3,-2) and ++ (-3,2) .. (2);
  • It it possible to have more than one control point? Apr 2, 2023 at 19:19
  • 1
    Alternative: \draw[thick, ->] (1) to[out=-30, in=150, looseness=2] (2);. Apr 2, 2023 at 20:39
  • 2
    @JeanRobert There already is two control points on this curve. One for each vertex. If you want more flexibility, you'll have to define more vertices, then add control points around them. You could find more info by searching for Bezier curve.
    – SebGlav
    Apr 3, 2023 at 7:54

For what it's worth, an alternative with Metapost.

z1 = -z2 = 30 up;
draw z1 withpen pencircle scaled 3;
draw z2 withpen pencircle scaled 3;
drawarrow z1 {dir -20} .. z2 {dir -20}
    cutbefore fullcircle scaled 7 shifted z1
    cutafter  fullcircle scaled 7 shifted z2;

Compile with lualatex to get:

enter image description here


Since it seems you're drawing a commutative diagram, a solution with tikz-cd:

\tikzset{mydot/.style={% style copied from SebGlav's answer 
            inner sep=0pt,
            outer sep=1pt,
            minimum width=4pt,
        every matrix/.append style={
            nodes in empty cells, 
        row sep=3cm,

enter image description here


For anybody out there - who like me does not know so much about TikZ - here is the answer I got from an AI:



  \draw[thick, ->, shorten <= 4pt, shorten >= 4pt] 
    (0.5,0) .. controls (0.25,-0.5) 
    (-0.25,0.5) .. (-0.5,0) 
    node[pos=0.5, above left] {$f$}; 
    (-0.5,0) circle (1pt) node[above] {$A$};   
  \filldraw[black] (0.5,0)
    circle (1pt) node[below] {$B$};


From this example, it's easy to see how basic curved arrows work, and how to build them in general.

  • 1
    How was the question that you made to the generator?
    – Andre
    Apr 2, 2023 at 15:23
  • 1
    I asked for an S-shaped curve between two vertical points. I took some subsequent suggestions, but I got there eventually. Apr 2, 2023 at 15:39
  • 3
    Why would you rotate everything by 90 degrees and not define the coordinates directly in a proper way? The mysteries of artificial intelligence ... Apr 2, 2023 at 20:36

Not the answer you're looking for? Browse other questions tagged .