我有以下 MWE,我想生成一个顶部节点,然后生成2个子节点链,大致如下:
top
a1 b1
a2 b2
a3 b3
但相反,我得到的是这样的:
top
a1 b1
a2
a3 b2
b3
\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}