为什么“上方”的定位高度与“右上方”的不同?

为什么“上方”的定位高度与“右上方”的不同?

试图回答如何改善这张图片?或者有更好的想法?,我出现了我无法理解的行为。

请考虑以下 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 相同的高度。6above 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}

相关内容