我想将一个节点相对于另一个节点上的边界锚点放置。以下代码说明了我想要执行的操作。
\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)
。我定义坐标是为了避免输入两次数字。