如何结合使用 \pgfextractx、\setlength 等来完成使用路径的任务?

如何结合使用 \pgfextractx、\setlength 等来完成使用路径的任务?

以下代码尝试绝对定位两个具有矩形轮廓的节点,然后绘制一条从一个节点的右侧到另一个节点的左侧的线,沿着垂直线段直接位于两个节点之间的正交线。但是,并没有得到那个结果,而是发生了以下情况:

替代文本

我无法理解 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);

您几乎永远不需要使用\pgfextracts。相反,使用命名的坐标节点和转换。

相关内容