基本解决方案

基本解决方案

我想将一个节点相对于另一个节点上的边界锚点放置。以下代码说明了我想要执行的操作。

\begin{tikzpicture}
    \node[draw] (A) {A}
    \node[left of=(A.160)] (b) {b};
    \draw [->] (b) -- (A.160);
\end{tikzpicture}

目标是使从 b -> A 的箭头处于水平状态。

答案1

基本解决方案

你几乎已经做对了:

\documentclass[tikz]{standalone}

\begin{document}
    \begin{tikzpicture}
        \node[draw] (A) {A};
        \node[left=1cm] at (A.160) (b) {b};
        \draw [->] (b) -- (A.160);
    \end{tikzpicture}
\end{document}

结果

选择

您的代码看起来好像您正在尝试使用该positioning库。如果是这种情况,以下是使用该库的一种方法:

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}

\begin{document}
    \begin{tikzpicture}[node distance=1cm]
        \node[draw] (A) {A};
        \node[left=of A.160] (b) {b};
        \draw [->] (b) -- (A.160);
    \end{tikzpicture}
\end{document}

可能是更好的选择

我只是猜测,但也许您尝试做的只是将多个等距“输入”输入到单个节点。角度锚点的问题在于,看起来不错的角度取决于节点的纵横比。以下是使用该calc库的简单示例:

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}[node distance=1cm]
        \node[draw] (A) {A};
        \coordinate (A input 1) at ($(A.north west)!0.25!(A.south west)$);
        \coordinate (A input 2) at ($(A.north west)!0.75!(A.south west)$);
        \node[left=1cm] at (A input 1) (b) {b};
        \node[below left=0.3cm] at (A input 2) (c) {c};
        \draw [->] (b) -- (A input 1);
        \draw [->] (c) |- (A input 2);
    \end{tikzpicture}
\end{document}

其他输出

坐标规范($(A.north west)!0.25!(A.south west)$)计算的是 两个给定角之间 25% 的位置(A)。我定义坐标是为了避免输入两次数字。

相关内容