以下代码尝试绝对定位两个具有矩形轮廓的节点,然后绘制一条从一个节点的右侧到另一个节点的左侧的线,沿着垂直线段直接位于两个节点之间的正交线。但是,并没有得到那个结果,而是发生了以下情况:
我无法理解 LaTeX 和 TikZ 长度命令的工作原理。我该如何解决这里的问题?
\documentclass[a4paper]{amsart}
\usepackage{calc,fullpage,tikz}
\usetikzlibrary{arrows}
\newlength{\mylengthA}
\newlength{\mylengthB}
\newlength{\mylengthC}
\begin{document}
\begin{center}\begin{tikzpicture}
[yscale = -1]
\begin{scope} % Boxes
[ every node/.style = { draw,
rectangle,
inner sep = 3mm,
}
]
\node (a) at (0,20mm) {Apple};
\node (b) at (28mm,0) {Banana};
\end{scope}
\begin{scope} % Arrows
[->, > = angle 90, very thick]
\pgfextractx{\mylengthA}{(a.east)}
\pgfextractx{\mylengthB}{(b.west)}
\setlength{\mylengthC}{\mylengthA/2 + \mylengthB/2}
\draw (\mylengthA,20mm) -- (\mylengthC,20mm) |- (\mylengthB,0);
\end{scope}
\end{tikzpicture}\end{center}
\end{document}
答案1
这有效:
% mark the midpoint between nodes a and b
\path (a.east) -- (b.west) node[coordinate,midway] (c) {};
% Arrows
\draw[->,>=angle 90, very thick] (a.east) -| (c) |- (b.west);
您几乎永远不需要使用\pgfextract
s。相反,使用命名的坐标节点和转换。