相对于一个节点的Tikz坐标

相对于一个节点的Tikz坐标

同时使用calc|-可以方便地引用节点的“内部相对坐标”,其中

  • (0, 0)意义node.center
  • (0, 1)意义node.east
  • (.3, -.5)意思是位于东南角的某个精确的(但是相对的)。

然而,正如所描述的这里那里,以下坐标未解析:

($(node.center)!.3!(node.east)$ |- $(node.center)!-.5!(node.north)$)

因此以下便利宏不起作用:

\newcommand{\relativeToNode}[3]{($(#1.center)!#2!(#1.east)$ |- $(#1.center)!#3!(#1.north)$)}

如果能这样写该有多好:

\node (inner) at (\relativeToNode{outer}{.3}{-.5}) {hey!};

有机会让它发挥作用吗?
有没有不涉及定义中间宏或坐标(必须选择其名称)的解决方法ETC。)?

答案1

对于您的用例,您甚至不需要该calc库。您可以定义relative to node=<node name>相应移动和缩放坐标系的样式:

\tikzset{
    relative to node/.style={
        shift={(#1.center)},
        x={(#1.east)},
        y={(#1.north)},
    }
}

然后你可以将你的节点放在

\path[relative to node=outer] (-0.4,-0.5) node {Hello};

梅威瑟:

\documentclass[tikz,margin=2mm]{standalone}

\tikzset{
    relative to node/.style={
        shift={(#1.center)},
        x={(#1.east)},
        y={(#1.north)},
    }
}

\begin{document}
    \begin{tikzpicture}
        \node[minimum width=2cm,minimum height=3cm,draw=red] (outer) at (3,3) {};

        % Only for the grid
        \begin{scope}[relative to node=outer]
            \foreach \ratio in {-1,-0.8,...,1}{
                \draw[help lines] (-1,\ratio) -- (1,\ratio);
                \draw[help lines] (\ratio,-1) -- (\ratio,1);
            }
            \draw (-1,0) -- (1,0);
            \draw (0,-1) -- (0,1);
        \end{scope}

        \path[relative to node=outer] (-0.4,-0.5) node {Hello};

    \end{tikzpicture}
\end{document}

导致

在此处输入图片描述

相关内容