我有以下代码(从更大的代码中剥离出来)。
(我知道有很多问题(和答案,包括这个优秀的) 关于节点的相对定位,但它们似乎没有解决我的问题。在将我的问题标记为重复之前,请确保它确实解决了我的问题,即使用相对定位而不是绝对定位。)
\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 节。
不过,我承认我不知道你的最终图表会是什么样子。因此,你更应该对自己的选择做出判断。