actually it's an easy question, but I could find an answer with Google or the included search on StackExchange ;)

How do I add in the middle of the line a node with Tikz? I want somethink like this:

-------------->
     text

Normally I did it with an additional node at command. If I will resize the the arrow then I need to change the position of the node also.

---------->
   text

Which is not the best way for big things. I try to find something in the manual and didn't find an answer yet.

Thanks.

Best regards.

up vote 50 down vote accepted

You could also use the midway-option

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    \draw [->] (0,0) -- (5,0) node [midway, below] {Text};
    \draw [->] (0,1) -- (5,1) node [near end, below] {Text};
    \draw [->] (0,2) -- (5,2) node [pos=0.62, below] {Text};
    \draw [->] (0,3) -- (5,3) node [pos=0.2, below] {Text};
\end{tikzpicture}
\end{document}

gives

result of the given example

See the tikz manual section 16.8 “Placing Nodes on a Line or Curve Explicitly”

  • 1
    Note that if you use curved arrows, this solution will not work (the text does not end up in the middle of the arrow). You will have to use something like \draw[->,>=stealth,out=90,in=90] (A) to node[midway,above] {Text} (B) ; – Anthony Labarre Mar 14 '15 at 8:21

You can use the node construct without the at specifier:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \draw[->] (0,0) --  node[label= below:text] {} (2,0);
  \draw[->] (0,1) --  node[label= below:text] {} (3,1);
\end{tikzpicture}

\end{document}

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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