这是我的代码:
\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.ortho
Qrrbrbirlbel 为 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}
更多类似替代方案请参见这里有答案。