将 tikz 节点移动到相对定位的下方

将 tikz 节点移动到相对定位的下方

我有以下代码(从更大的代码中剥离出来)。

(我知道有很多问题(和答案,包括这个优秀的) 关于节点的相对定位,但它们似乎没有解决我的问题。在将我的问题标记为重复之前,请确保它确实解决了我的问题,即使用相对定位而不是绝对定位。)

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{automata,positioning}

\begin{document}

\begin{tikzpicture}[node distance=40.0mm, auto]
  \node[state] (3) {3}; 
  \node[state] (1) [above left=of 3]  {1}; 
  \node[state] (2) [above right=of 3] {2}; 
\end{tikzpicture}

\end{document}

输出如下所示。

在此处输入图片描述

我想将节点 3 移动到其当前位置的下方一点。我尝试过使用相对定位(而不是使用绝对定位)来实现此目的的多种方法,但都没有成功。我该怎么做?

答案1

仅总结以上评论并让未来的读者对所讨论的答案有一个概述:

先决条件

\usetikzlibrary{positioning}

每个节点距离定义:

\node (id) [below left=<x-value> and <y-value> of <reference>] {<text>};

全球的距离定义:

\begin{tikzpicture}[node distance=<x-value> and <y-value>]
 \node (id) [below left=of <reference>] {<text>};
 % ...

答案2

对于这种将许多节点相互关联在一起的图表,一种matrix方法可能更合适。您必须使用\usetikzlibrary{matrix}并将节点声明为矩阵的元素。行和列分隔、节点样式等可以通过 声明\tikzset。您可以使用矩阵的名称引用这些节点,例如 (m),(m-1-1)其中(m-2-3) 2 是行,3 是列(索引)。

以下是示例代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix,automata}   %% load the library

\begin{document}

\begin{tikzpicture}
  \tikzset{   %%% define the parameters for once
    mstyle/.style={column sep=4cm, row sep=6cm,nodes={state},font=\bfseries},
    line/.style={draw,very thick,blue,-latex},
  }
  \matrix(m)[matrix of nodes,ampersand replacement=\&,mstyle]{
    1 \&  \& 2  \\
      \& 3 \&   \\
    4 \& 5 \& 6  \\
  };
    \draw[line](m-1-1.east)-- (m-1-3.west);
\end{tikzpicture}

\end{document}

在此处输入图片描述

在内row sep = 2cm\mstyle我们得到

在此处输入图片描述

凭借我们的技术\\[2cm],我们

\matrix(m)[matrix of nodes,ampersand replacement=\&,mstyle]{
    1 \&  \& 2  \\[2cm]
      \& 3 \&   \\
    4 \& 5 \& 6  \\

在此处输入图片描述

有关更多详细信息,请参阅pgfmanual第 654 页(在我的 v3 副本中)第 57 节。

不过,我承认我不知道你的最终图表会是什么样子。因此,你更应该对自己的选择做出判断。

相关内容