试图回答如何改善这张图片?或者有更好的想法?,我出现了我无法理解的行为。
请考虑以下 MWE:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,calc}
\begin{document}
\begin{tikzpicture}[
thick, node distance=1cm]
\node (n1) {1};
\node [below right of=n1] (n2) {2};
\node [below right of=n2] (n3) {3};
\node [right of=n3] (n4) {4};
\node [above of=n4] (n5) {5};
\node [above right of=n4] (n6) {6?};
\begin{scope}[->]
\draw (n1) -- (n2);
\draw (n2) -- (n3);
\draw (n3) -- (n4);
\draw (n4) -- (n5);
\draw[red] (n2) -- node[above]{???} (n5);
\end{scope}
\end{tikzpicture}
\end{document}
并给出输出:
我假设节点5
(即4)将位于与节点(即4)above of
相同的高度,并且实际上位于与 2 相同的高度。6
above right of
为什么会发生这种情况?我想也许positioning
包试图将节点放在它们之间的相同距离...我尝试将节点放在 $\sqrt{2}$ 上方,但仍然不起作用。还是我只是感到困惑?
是否有一些选项可以positioning
将节点放在网格上?
答案1
这里有两件事需要考虑:
- 您正在使用旧的定位语法
below right of = n1
。使用该positioning
库时,您应该使用below right = of n1
。 - 为了使事物保持在网格上,您应该设置
node distance=1cm and 1cm
而不是仅仅设置node distance=1cm
。这指定节点应该1cm
在垂直和水平方向上分开,而不是1cm
欧几里得距离
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,calc}
\begin{document}
\begin{tikzpicture}[
thick, node distance=0.7cm and 0.7cm]
\node (n1) {1};
\node [below right = of n1] (n2) {2};
\node [below right = of n2] (n3) {3};
\node [right = of n3] (n4) {4};
\node [above = of n4] (n5) {5};
\node [above right = of n4] (n6) {6?};
\begin{scope}[->]
\draw (n1) -- (n2);
\draw (n2) -- (n3);
\draw (n3) -- (n4);
\draw (n4) -- (n5);
\draw[red] (n2) -- node[above]{???} (n5);
\end{scope}
\end{tikzpicture}
\end{document}