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.

What is the difference between \node and \coordinate in TikZ? Exchanging them does no visual effect in my (to be honest: still simple) pictures.

When to use what?

share|improve this question

4 Answers 4

up vote 16 down vote accepted

Well, perhaps it's interesting to look at the pgfmanual : 1) \coordinate is a shortcut for \path ... coordinate[⟨options⟩](⟨name⟩)at(⟨coordinate⟩) ...;

2) and it's the same that node[shape=coordinate][]⟨options ⟩](⟨name ⟩)at(⟨coordinate ⟩){}, where the at part might be missing.

Since nodes are often the only path operation on paths, there are two special commands for creating paths containing only a node: \node Inside {tikzpicture} this is an abbreviation for \path node. \coordinate Inside {tikzpicture} this is an abbreviation for \path coordinate.

3) pgf and TikZ define three shapes, by default: • rectangle, • circle, and • coordinate.

The coordinate shape is handled in a special way by TikZ. When a node x whose shape is coordinate is used as a coordinate (x), this has the same effect as if you had said (x.center). None of the special “line shortening rules” apply in this case. This can be useful ...

4) finally

The exact behaviour of shapes differs, shapes defined for more special purposes (like a, say, transistor shape) will have even more custom behaviors. However, there are some options that apply to most shapes.

It's why some default values like inner sep are different.

share|improve this answer
    
Thanks. Was really hard to decide the correct answer. But I took this one because it was the most detailed one. But I upvoted all others, too. –  Foo Bar Jan 14 '13 at 10:34

\node requires a caption:

\node (name) at (coordinate) {caption};

\coordinate does not use a caption:

\coordinate (name) at (coordinate);

\node can also have a shape and dimension, \coordinate is just a point

share|improve this answer
    
So, can I always use \node to be fully flexible (future changes maybe require new captions or shapes)? –  Foo Bar Jan 11 '13 at 12:01
4  
Also, a coordinate is basically just a node with the node shape coordinate, so saying \node [coordinate] (<name>) at (<coordinate>) {}; is equivalent to \coordinate (<name>) at (<coordinate>); –  Jake Jan 11 '13 at 12:02
\coordinate[⟨options⟩](⟨name⟩)at(⟨coordinate⟩) ...; 

This has the same effect as

\node[shape=coordinate][⟨options ⟩](⟨name ⟩)at(⟨coordinate ⟩){}

This can be read in the tikz documentation. It is obvious, that coordinate has no content. It's mainly used for defining coordinates for referring them with names.

\coordinate btw is a abbreviation for \path coordinate.

share|improve this answer

node introduces an inner sep and hence does not produce a geometrical point in true sense. coordinate or \node [coordinate] on the other hand, does not have inner sep.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\verb|\node|  introduces an \verb|inner sep|:

\begin{tikzpicture}
    \coordinate (cone) at (0,0);
    \node (none) at (4,0) {};
      \draw[->] (cone) -- (none);
    \draw[draw,red,->] (none) -- (0:5);
\end{tikzpicture}

\verb|\node[coordinate]| or \verb|\coordinate|  does not introduce an \verb|inner sep|:

\begin{tikzpicture}
    \coordinate (cone) at (0,0);
    \node[coordinate] (none) at (4,0) {};     %% or \coordinate (none) at (4,0);
      \draw[->] (cone) -- (none);
    \draw[draw,red,->] (none) -- (0:5);
\end{tikzpicture}

If you use \verb|\node|, you may be forced to use \verb|none.center| to get rid of the gap noticed between the two lines:

\begin{tikzpicture}
    \coordinate (cone) at (0,0);
    \node (none) at (4,0) {};
      \draw[->] (cone) -- (none.center);
    \draw[draw,red,->] (none.center) -- (0:5);
\end{tikzpicture}

Hence, when you need a geometric point, use \verb|\node[coordinate]| or \verb|\coordinate|.
\end{document}

enter image description here

Bottom line: When you need a point use coordinate.

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.