在下面的tikz
节点矩阵中,红线没有画在(magic-2-2)
节点上。我怎样才能让它从(magic-1-1)
到(magic-3-3)
节点连续,并穿过(“踩踏”)节点(magic-2-2)
?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {matrix}
\begin{document}
\begin{tikzpicture}
\matrix (magic) [matrix of nodes]
{
1-1 & 1-2 & 1-3 \\
2-1 & 2-2 & 2-3 \\
3-1 & 3-2 & 3-3 \\
};
\draw[red,->] (magic-1-1) |- (magic-2-2) -| (magic-3-3);
\end{tikzpicture}
\end{document}
答案1
如果您仅使用节点名称作为坐标规范,TikZ 将自动选择节点边界上的一个点,该点位于从节点中心看到的连接线方向上。如果您希望线实际上穿过节点的中心,则需要使用锚点center
。
\draw[red,->] (magic-1-1) |- (magic-2-2.center) -| (magic-3-3);
您可以在此处使用任何锚点,因为它将阻止 TikZ 自动选择边界上的点。(在这种情况下,和都west
将east
导致相同的结果。)
代码
\documentclass[tikz, convert={density=150}]{standalone}
\usetikzlibrary {matrix}
\begin{document}
\begin{tikzpicture}
\matrix (magic) [matrix of nodes]{
1-1 & 1-2 & 1-3 \\
2-1 & 2-2 & 2-3 \\
3-1 & 3-2 & 3-3 \\
};
\draw[red,->] (magic-1-1) |- (magic-2-2.center) -| (magic-3-3);
\end{tikzpicture}
\end{document}
输出
答案2
使用@Qrrbrbirlbel 的奇妙ext.paths.ortho
库,您可以一次性画出一条线,而无需中间停下来:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{ext.paths.ortho}
\begin{document}
\begin{tikzpicture}
\matrix (magic) [matrix of nodes]
{
1-1 & 1-2 & 1-3 \\
2-1 & 2-2 & 2-3 \\
3-1 & 3-2 & 3-3 \\
};
\draw[red,->] (magic-1-1) |-| (magic-3-3);
\end{tikzpicture}
\end{document}