以下代码(使用 TikZ 中的自动机库)
\documentclass[11pt]{article}
\usepackage{tikz,tkz-graph}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
\node[state] (p0) {$p_0$};
\node[state] (p1) [right = of p0]{$p_1$};
\node[state] (q) [above right = 1 and 0.5 of p0]{$q$};
\end{tikzpicture}
\end{document}
没有像我希望的那样将 q 节点定位在 p_0 和 p_1 的中点之上。
- 这是为什么?
- 我如何才能从 p_0 引用 q 获得所需的结果?
答案1
q
获得状态相对于位置的期望位置p0
并不简单。最简单的方法是按如下方式计算:
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,calc,positioning}
\begin{document}
\begin{tikzpicture}
\node[state] (p0) {$p_0$};
\node[state] (p1) [right= of p0]{$p_1$};
\node[state] (q) [above= of $(p0)!0.5!(p1)$]{$q$};
\end{tikzpicture}
\end{document}
编辑:
关于您的代码,它不能像(许多人)预期的那样工作。如果节点是矩形,则节点q
从right=0.5 cm
和p0.east
从above=1 cm
(p.north
参见下图中带有蓝线的插图)。这与圆不同(参见下图中的红线)。在它被视为圆内矩形的坐标:
在上图中我已经考虑到,圆的距离必须更大
d - 2^{1/2}*d
在哪里d = 2r是圆直径:
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,calc,positioning}
\begin{document}
\begin{tikzpicture}[node distance=2cm and 2cm,
rect node/.style={draw, minimum size=1cm},
dash node/.style={draw=red, densely dashed, minimum size=0.707cm},
every state/.style={minimum size=1cm}
]
\node[rect node] (p0) {$p_0$};
\node[rect node] (p1) [right= of p0]{$p_1$};
\node[rect node] (q) [above right= 1cm and 1cm of p0]{$q$};
\draw[thick,blue] (p0.45) -| ++ (1,1);
%
\node[state] (p0) {$p_0$};
\node[state] (p1) [right= of p0]{$p_1$};
\node[state] (q) [above right= 1.293 cm and 1.293 cm of p0]{$q$};
\draw[thick,red] (p0.45) -| ++ (1.293,1.293);
% rectangle inside circle
\node[dash node] {};
\node[dash node,above right= 1.293 cm and 1.293 cm of p0] {};
\end{tikzpicture}
\end{document}
在上面的解释中,我没有考虑节点的中心位置q
。了解节点中心的正确距离的确定q
应该很简单。
但是,如果您按如下方式重新排列节点位置,则可以省略所有这些复杂性:
\begin{tikzpicture}(1,1);
\node[state] (p0) {$p_0$};
\node[state] (q) [above right=of p0]{$q$};
\node[state] (p1) [below right=of q]{$p_1$};
\end{tikzpicture}
其结果与第一幅图所示非常相似:
希望现在我能回答你的问题:)