相对于两个不同锚点的 xy 节点定位

相对于两个不同锚点的 xy 节点定位

我有以下 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=ofabove right=of改变了节点的锚点。above设置anchor=south,而above right设置anchor=south west。实际上,你会看到蓝色圆圈的底部和south west黑色圆圈上的点位于另外两个圆圈的中心。通过添加anchor=center 定位键所有圆圈最终都落在同一个位置。

(由于eastcenter锚点具有相同的 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}

相关内容