我有以下 MWE:
\documentclass[tikz,convert={size=640}]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
block/.style={draw,rectangle,minimum width=1cm,minimum height=1cm},
sum/.style={draw,circle,minimum width=0.2cm,minimum height=0.2cm}
]
\node[block] (g) {$G$};
\node[sum,above=0.25cm of g.center,right=0.5cm of g] (sum1) {};
\end{tikzpicture}
\end{document}
产生
但above=0.25cm of g.center
命令完全被忽略了。我怎样才能从不同的锚点实现 y 坐标的相对定位?
答案1
几个选项。输出的不同是因为right=of
和above right=of
改变了节点的锚点。above
设置anchor=south
,而above right
设置anchor=south west
。实际上,你会看到蓝色圆圈的底部和south west
黑色圆圈上的点位于另外两个圆圈的中心。通过添加anchor=center
后定位键所有圆圈最终都落在同一个位置。
(由于east
和center
锚点具有相同的 y 坐标,因此可以工作。但如果节点旋转,则无法工作。)
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
block/.style={draw,rectangle,minimum width=1cm,minimum height=1cm},
sum/.style={draw,circle,minimum width=0.2cm,minimum height=0.2cm},
]
\node[block] (g) {$G$};
\node[sum,above right=0.25cm and 0.5cm of g.east] (sum1) {};
\node[blue,dashed,sum,above=0.25cm of g.east,xshift=0.5cm] (sum1) {};
\node[red,sum] at ([shift={(0.5cm,0.25cm)}]g.east) {};
\path (g.east) ++(0.5cm,0.25cm) node[yellow,dashed,sum] {};
\end{tikzpicture}
\end{document}