1

I wanted to draw something :

\begin{center}
  \begin{tikzpicture}[
      >=stealth,
      bullet/.style={
        fill=black,
        circle,
        inner sep=1pt
      },
      projection/.style={
        ->,
        thick,
        shorten <=2pt,
        shorten >=2pt
      },
    ]

    \draw (0, 0) circle [x radius=1, y radius=1.7];
    \node [bullet, label=left:\(   a  \)] (a) at (0,1.2) {};
    \node [bullet, label=left:\(   b  \)] (b) at (0,0.4) {};
    \node [bullet, label=left:\(   c  \)] (c) at (0,-0.4) {};
    \node [bullet, label=left:\(   d  \)] (d) at (0,-1.2) {};
    \node[font=\large] (E) at (0, 2) {\(E\)};

    \begin{scope}[xshift=3.5cm]
      \draw (0, 0) circle [x radius=1, y radius=1.7]; 
      \node [bullet, label=right:\(    \tilde{a}     \)] (w) at (0,1.2) {};
      \node [bullet, label=right:\(    \tilde{b}     \)] (x) at (0,0.4) {};
      \node [bullet, label=right:\(    \tilde{c}     \)] (h) at (0,-0.4) {};
      \node [bullet, label=right:\(    \tilde{d}     \)] (v) at (0,-1.2) {};
      \node[font=\large] (F) at (0, 2) {\(F\)};
    \end{scope}

    \draw [projection] (a) -- (x);
    \draw [projection] (b) -- (h);
    \draw [projection] (c) -- (v);
    \draw [projection] (d) -- (x);
  \end{tikzpicture}
\end{center}

I'm already really proud of myself to succeed in doing this, but now I wanted to draw smaller arrows tips (because it doesn't look nice).

Do you know how ?

I'm struggling. I tried to change a few parameters but it is either telling me it don't know what I'm doing or that it don't change anything. I'm surely doing something wrong.

1 Answer 1

3

This is very simple with the arrows.meta library.

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
  \begin{tikzpicture}[
      >={Stealth[scale=0.5]},
      bullet/.style={
        fill=black,
        circle,
        inner sep=1pt
      },
      projection/.style={
        ->,
        thick,
        shorten <=2pt,
        shorten >=2pt
      },
    ]

    \draw (0, 0) circle [x radius=1, y radius=1.7];
    \node [bullet, label=left:\(   a  \)] (a) at (0,1.2) {};
    \node [bullet, label=left:\(   b  \)] (b) at (0,0.4) {};
    \node [bullet, label=left:\(   c  \)] (c) at (0,-0.4) {};
    \node [bullet, label=left:\(   d  \)] (d) at (0,-1.2) {};
    \node[font=\large] (E) at (0, 2) {\(E\)};

    \begin{scope}[xshift=3.5cm]
      \draw (0, 0) circle [x radius=1, y radius=1.7]; 
      \node [bullet, label=right:\(    \tilde{a}     \)] (w) at (0,1.2) {};
      \node [bullet, label=right:\(    \tilde{b}     \)] (x) at (0,0.4) {};
      \node [bullet, label=right:\(    \tilde{c}     \)] (h) at (0,-0.4) {};
      \node [bullet, label=right:\(    \tilde{d}     \)] (v) at (0,-1.2) {};
      \node[font=\large] (F) at (0, 2) {\(F\)};
    \end{scope}

    \draw [projection] (a) -- (x);
    \draw [projection] (b) -- (h);
    \draw [projection] (c) -- (v);
    \draw [projection] (d) -- (x);
  \end{tikzpicture}
\end{document}

enter image description here

2
  • ohhh thank you very much :) Can you tell me please what means shorten <=2pt, shorten >=2pt ? Apr 27, 2018 at 20:11
  • 1
    @MarineGalantin shorten <=2pt means "make the path shorter by 2pt at its start" and likewise shorten >=2pt means "make the path shorter by 2pt at its end". It has nothing to do with arrows, and I was confused by this also when I saw it some time ago. (And I guess we are not alone ;-)
    – user121799
    Apr 27, 2018 at 20:14

You must log in to answer this question.

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