我正在尝试绘制一个双 90 度旋转箭头,连接 tikz 矩阵中的两个节点
以下是我想要做的事情:
但是我不确定如何解决这样的问题。
我尝试创建一个包含未绘制节点的节点矩阵。
因此,在上面的例子中,名为 A 的节点需要连接到名为 a 的不可见节点。然后需要在两个不可见节点之间画一条线。因此从 a 到 b。最后从 b 到 B 画一条线。
这是我的问题:
创建双旋转箭头的最好和最简单的方法是什么?
据我了解,有三种方法可以在 tikz 矩阵中的两个节点之间创建双旋转箭头
创建一个矩阵,其中一行包含不可见的节点。然后用线连接节点。
使用 calc 包找到要连接的正确坐标。(不确定如何做到这一点)。
使用带链的作用域。(同样不知道该怎么做。)
这是我的代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
backgrounds,
fit,
matrix,
positioning,
shadows}
% My tikz picture
\begin{tikzpicture}
\matrix(a)[matrix of nodes , nodes in empty cells,
nodes = {font = \small , rectangle , align = center , text width = 2cm , minimum size = 1cm},
row sep = {2cm , between origins} ,
column sep = {4cm , between origins}]{
% Matrix begins here.
& |[draw]|Documents & & \\
& & & \\
|[draw]| Directory document & |[draw]| Water document & |[draw]| Data document\\
};
%%%%%Draw arrow lines;
\draw[-{Stealth[length=4mm]}] (a-1-2) -- (a-3-2);
\draw (a-2-2) -- (a-2-3);
\draw [-{Stealth[length=4mm]}](a-2-3) -- (a-3-3);
\end{tikzpicture}
我的输出是:
答案1
如果你想修复你的代码,你可以从节点的中心而不是边缘绘制箭头:
\draw (a-2-2.center) -- (a-2-3.center);
\draw [-{Stealth[length=4mm]}](a-2-3.center) -- (a-3-3);
为了使事情变得简单,您可以使用库|-|
中的路径运算符ext.paths.ortho
:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{ext.paths.ortho}
\begin{document}
\begin{tikzpicture}
\node[draw] (a) at (0,0) {Documents};
\node[draw,below right=of a] (b) {Data};
\draw[->] (a) |-| (b);
\end{tikzpicture}
\end{document}