TikZ 定位中节点间距不一致(MWE)

TikZ 定位中节点间距不一致(MWE)

我有以下 MWE,我想生成一个顶部节点,然后生成2个子节点链,大致如下:

     top

a1         b1

a2         b2

a3         b3

但相反,我得到的是这样的:

     top

a1         b1
a2           
a3         b2

           b3

生成 PDF

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
        every node/.style={
            text width=.2\linewidth,
            draw,
        },
    ]
    \node(top){top};

    \node(a1)[below left=of top]{a1};
    \node(a2)[below of=a1]{a2};
    \node(a3)[below of=a2]{a3};

    \node(b1)[below right=of top]{b1};
    \node(b2)[below=of b1]{b2};
    \node(b3)[below=of b2]{b3};
\end{tikzpicture}

\end{document}

这是正确的吗?我只是理解错了什么,还是 TikZ 出了问题?有解决方法吗?我使用的是 Ubuntu 22.04(版本 2021.20220204-1)中打包的 TexLive。

答案1

让我将我的评论延伸到答案......

  • 在您的示例中,您混合了用于确定纯 Ti 节点位置的语法Z ( below of=a1) 和positioning库 ( below=of b1)。
  • 第一个已弃用,用于确定节点中心之间的距离,第二个用于确定节点边界之间的距离。
  • 如果您出于某些原因希望根据节点中心定位节点,那么您应该on grid在图像前言中使用选项(正如@Qrrbrbirlbel 在其评论中所述)。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
    \begin{tikzpicture}[
node distance =7mm and 3mm,
every node/.style={draw, text width=0.2\linewidth},
    ]
\node(top){top};

\node(a1)[below left=of top]    {a1};
\node(a2)[below=of a1]          {a2};
\node(a3)[below=of a2]          {a3};

\node(b1)[below right=of top]   {b1};
\node(b2)[below=of b1]          {b2};
\node(b3)[below=of b2]          {b3};
    \end{tikzpicture}

\vskip 7ex 
    \begin{tikzpicture}[
node distance = 0.1\linewidth and 0.25\linewidth,   % <--- observe that nodes distance is changed 
on grid,                        % <---
every node/.style={draw=red, text width=0.2\linewidth},
    ]
\node(top){wirh option \verb+on grid+};

\node(a1)[below left=of top]    {a1};
\node(a2)[below=of a1]          {a2};
\node(a3)[below=of a2]          {a3};

\node(b1)[below right=of top]   {b1};
\node(b2)[below=of b1]          {b2};
\node(b3)[below=of b2]          {b3};
    \end{tikzpicture}
    
\end{document}

在此处输入图片描述

相关内容