如何命名 TikZ \graph 并在其下方定位 \node?

如何命名 TikZ \graph 并在其下方定位 \node?

我想将一个节点放置\graph在 a 中的a 下方tikzpicture。但是,由于某种原因,我无法访问\graph

梅威瑟:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,graphs}
\begin{document}
    \begin{tikzpicture}
    \graph [name=graph] {a -> b};
    \node[below of=graph] {$t_1$};
    \end{tikzpicture}
\end{document}

结果是:Package pgf Error: No shape named graph is known. ^^I\node[below of=graph] {$t_1$};

\graph (name) {...};导致File ended while scanning use of \tikz@lib@graph@node@naked.

\graph {a -> b} node[below] {$t_1$};可以工作,但标签$t_1$出现在节点下方a。我可以将其移至中心吗?

(我更喜欢使用graphs库而不是graphdrawing,因为后者需要LuaLaTeX)

答案1

您可以使用local bounding box

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,graphs}
\begin{document}
    \begin{tikzpicture}
    \begin{scope}[local bounding box=graph]
     \graph  {a -> b};
    \end{scope} 
    \node[below=1ex of graph] {$t_1$};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我不知道你是否可以将整个图视为一个大节点(编辑:薛定谔的猫的答案就是这样做的),但你当然可以命名图中的每个节点,并在其余部分引用它们tikzpicture

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc, graphs, positioning}

\begin{document}

\begin{tikzpicture}
\graph {a[name=a] -> b[name=b]};
\coordinate (m) at ($(a)!0.5!(b)$); % midpoint between a and b
\node[below=0.5cm of m] {$t_1$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

请注意使用below=0.5cm of m而不是 语法below of=...,它不使用positioningTiZ 库。

还有其他可能性可以说明图上的某个特定节点应该锚定在图中某个特定位置tikzpictureanchor node=参见anchor heredesired at=锚定图表Z & PGF 手册,第 425 页左右。

其他方法也可以实现同样的效果:

\graph {a[name=a] -> b[name=b]};
\path (a) -- (b) node[pos=0.5, below=0.5cm] {$t_1$};

\graph {a[name=a] -> b[name=b]};
\path (a) -- node[pos=0.5, below=0.5cm] {$t_1$} (b);

calc最后两种技术不需要Z库。

相关内容