tikz 中位置差异很小

tikz 中位置差异很小

我正在用 tikz 绘制一个小图,我注意到根据您定义节点位置的方式,节点的位置存在小的差异。

这是MWE:

\documentclass{article}

\usepackage{amssymb}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}[node distance=5mm and 5mm]

    %bottom row
    \node (2) {2};
    \path (2) ++(170:8) node (3) {3};

    %second row
    \node[above=of 2] (4) {4}; 
    \path (4) ++(170:6) node (5) {5}%
              ++(170:2) node (a) {6};
    \node[above=of 3] (6) {6};

    %third row
    \node[above=of 4] (7) {7};
    \path (7) ++(170:6) node (b) {$\mathbb{N}^3$}%
              ++(170:2) node (d) {3'};
    \node[above=of 5] (N) {$\mathbb{N}^3$}; 
    \node[above=of 6] (3') {3'}; 

    %top row
    \node[above=of 7] (2'') {2''}; 

    \path (2'') ++(170:2) node (C) {C}%
                ++(170:2) node (D) {D}%
                ++(170:2) node (A) {A}%
                ++(170:2) node (6') {6'};
    \node[above=of N] (A) {A};
    \node[above=of 3'] (c) {6'};
\end{tikzpicture}
\end{document}

输出如下:

在此处输入图片描述

我基本上是在画一个 4x5 平行四边形。我画了两次节点(6'、3'、6、A 和 \mathbb{N}^3),一次使用语法path,一次使用above=of。我希望它们被放置在相同的位置(或非常接近,就像 6 和 3' 的情况一样)。然而,顶行的差异有点太大,这可能是由于像素的一些数值近似造成的。在我看来,存在某种转变,有人能向我解释是什么原因造成的吗?



编辑:这是上述代码的简化版本,其中我只保留了 4 行中的 2 行,并压缩了图片。我保留了旧代码和图片,因为在我看来,顶行的偏移较大(参见字母 A)。但这里也发生了同样的现象,所以我猜它们有相同的解释。

\documentclass{article}

\usepackage{amssymb}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}



\begin{tikzpicture}[node distance=5mm and 5mm]

    \node (4) {4}; 
    \path (4) ++(170:2) node (5) {5}%
                ++(170:2) node (6) {6};
    

    \node[above=of 4] (7) {7};
    \path (7) ++(170:2) node (b) {$\mathbb{N}^3$}%
                ++(170:2) node (d) {3'};
    \node[above=of 5] (N) {$\mathbb{N}^3$}; 
    \node[above=of 6] (3') {3'}; 
\end{tikzpicture}

\end{document}

输出如下:

在此处输入图片描述

答案1

这是由默认设置引起的on grid=false。您可以阅读其文档(https://tikz.dev/tikz-shapes#pgf./tikz/on:grid) 了解更多信息。

    \path (7) ++(170:2) node (b) {$\mathbb{N}^3$}%
                ++(170:2) node (d) {3'};

节点中心之间的距离7b2cm。

但是使用on grid=false\node[above=of 5] (N) {$\mathbb{N}^3$};将节点置于N节点上方5,以便“外部”距离( 的南锚点N和 的北锚点之间的距离5)为 5 毫米。

因此当节点文本的总高度(高度 + 深度)发生变化时,位置差异也会发生变化。在 OP 的例子中, 的高度$\mathbb{N}^3$大于 的高度3', 的高度3'大于 的高度7

\documentclass{article}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\verb|on grid=false|\par
\begin{tikzpicture}[node distance=5mm and 5mm, on grid=false] % default setting
    \node (4) {4}; 
    \path (4) ++(170:2) node (5) {5}
                ++(170:2) node (6) {6};
    
    \node[above=of 4] (7) {7};
    \path (7) ++(170:2) node (b) {$\mathbb{N}^3$}%
                ++(170:2) node (d) {3'};
    
    \node[above=of 5, blue] (N) {$\mathbb{N}^3$}; 
    \node[above=of 6, blue] (3') {3'}; 
\end{tikzpicture}

\verb|on grid=true|\par
\begin{tikzpicture}[node distance=5mm and 5mm, on grid=true]
    \node (4) {4}; 
    \path (4) ++(170:2) node (5) {5}
                ++(170:2) node (6) {6};

    \node[above=of 4] (7) {7};
    \path (7) ++(170:2) node (b) {$\mathbb{N}^3$}%
                ++(170:2) node (d) {3'};
    
    \node[above=of 5, blue] (N) {$\mathbb{N}^3$}; 
    \node[above=of 6, blue] (3') {3'}; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容