0

I need to make a diagram in which the node labels are outside of the nodes themselves, and thus the edges in the graph should go from one node label to another. A simple snippet of what I currently have is

\begin{figure}[H]
\begin{tikzpicture}
\node[circle, draw=black, label=below:F] (F) at (0, 1) {}; 
\node[circle, draw=black, label=below:T] (T) at (-1, 0) {}; 
\node[circle, draw=black, fill=red, label=below:R] (R) at (1, 0) {}; 
\node[circle, draw=black, fill=red, label=above:Tt, below=of T] (Tt)  {}; 

\draw[-] (F) -- (T);
\draw[-] (R) -- (T);
\draw[-] (R) -- (F);
\draw[-] (T) -- (Tt);
\end{tikzpicture} 
\end{figure}

which results in the following

enter image description here

Would there be any way to draw the edges so that the edge begins at T and ends at Tt?

2
  • Welcome! Just name the labels. \documentclass[tikz,border=3mm]{standalone} \usetikzlibrary{positioning} \begin{document} \begin{tikzpicture} \node[circle, draw=black, label=below:F] (F) at (0, 1) {}; \node[circle, draw=black, label={[name=LT,inner sep=1pt]below:T}] (T) at (-1, 0) {}; \node[circle, draw=black, fill=red, label=below:R] (R) at (1, 0) {}; \node[circle, draw=black, fill=red, label={[name=LTt,inner sep=1pt]above:Tt}, below=of T] (Tt) {}; \draw[-] (F) -- (T); \draw[-] (R) -- (T); \draw[-] (R) -- (F); \draw[-] (LT) -- (LTt); \end{tikzpicture} \end{document}
    – user194703
    Aug 30, 2019 at 3:45
  • Welcome to TeX.SX! Please help us help you and add a minimal working example (MWE) that illustrates your problem. Reproducing the problem and finding out what the issue is will be much easier when we see compilable code, starting with \documentclass{...} and ending with \end{document}.
    – BambOo
    Aug 30, 2019 at 8:22

1 Answer 1

2

Since a label is just another node, you can name it with the name key:

label={[name=<name>]<direction>:<text>}

However, we can get it automatically named by using \tikzlastnode and save a bit of typing. This way every label is named l-<name of parent node> (of course, this needs to be adjusted if you want to use more than one label).

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
  node distance=1.5cm,
  n/.style={
    circle, draw=black,
    label={[name/.expanded=l-\tikzlastnode]#1}
  }
]
\node[n=below:F]                        (F) at (0,  1) {}; 
\node[n=below:T]                        (T) at (-1, 0) {}; 
\node[n=below:R,  fill=red]             (R) at ( 1, 0) {}; 
\node[n=above:Tt, fill=red, below=of T] (Tt)           {}; 

\draw (l-F) -- (l-T);
\draw (l-R) -- (l-T);
\draw (l-R) -- (l-F);
\draw (l-T) -- (l-Tt);
\end{tikzpicture}
\end{document}

Output

output of code above

You must log in to answer this question.

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