TikZ:用正交线结束路径

TikZ:用正交线结束路径

这是我的代码:

\documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
  \tikzstyle{node}=[rectangle,draw=black,text width=3cm,inner sep=0.2cm,text centered]
  \begin{tikzpicture}
    \node (A) [node] {A};
    \node (B) [node, below left=3cm of A] {B};
    \draw[->] (B.north) -- +(0,1cm) -- +(5cm,1cm) -- (A.south);
  \end{tikzpicture}
\end{document}

呈现如下:

现在我显然希望最后一行是正交的。我知道类似的东西(B.north|-A.south),但这不适用于这里。将最后一个更改--|-也无法产生所需的结果,因为箭头会继续沿着的边界延伸A。我怎样才能使箭头的最后一部分正交?

答案1

Tikz 运算符|-并不是所有这些正交线情况的唯一符号。它实际上非常具体,它描述了一条先垂直|然后水平的线-

因此,此特定运算符不适用于您的情况,因为您要寻找的角度首先是水平的,然后是垂直的。因此,您应该改用-|

\draw[->] (B.north) -- +(0,1cm) -| (A.south);

这将为您提供到节点中心的正交线。但是,如果您希望路径在坐标处停止但仍然正交,那么您可以这样做:

\draw[->] (B.north) |- +(5cm,1cm) coordinate (a) -- (a|-A.south);

正如您所看到的,我删除了坐标,-- +(0,1cm)因为它在这条路径上是多余的。

答案2

另一种方法是使用paths.orthoQrrbrbirlbel 为 tikz 开发的库,可以在以下位置找到:路径.ortho-hvvh.tex路径.ortho-udlr.tex. 由此看来解决方案很简单:

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{paths.ortho}
\usetikzlibrary{positioning}

\begin{document}
  \tikzstyle{node}=[rectangle,draw=black,text width=3cm,inner sep=0.2cm,text centered]
  \begin{tikzpicture}
    \node (A) [node] {A};
    \node (B) [node, below left=3cm of A] {B};
    \draw[thick,->] (B.north) |-| (A.south);
  \end{tikzpicture}
\end{document}

更多类似替代方案请参见这里有答案

在此处输入图片描述

相关内容