我是一名新手,正在使用相对定位和 制作简单的流程图on grid
。我的图表很简单,所以我希望一切都能轻松排列。但我得到了这个:
我尝试绘制从最右侧节点到右侧边缘一些不可见占位符节点的箭头(使用[coordinate]
),并将它们相对于中心线对齐。但有些地方不太对劲。
我是否遗漏了一些基本的东西? 我的代码:
\documentclass[letterpaper,11pt,reqno]{amsart}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes.geometric}
\begin{document}
\begin{tikzpicture}[nodes = {draw,font=\ttfamily\footnotesize, inner sep = 1pt}, on grid]
% nodes on the main line + coordinate placeholders
\node [circle] (1) {1};
\node [circle, right=10mm of 1] (2) {2};
\node [coordinate, right=10mm of 2] (3g) { };
\node [circle, right=10mm of 3g] (6) {6};
\node [coordinate, right=10mm of 6] (7g) { };
\node [coordinate, right=10mm of 7g] (8g) { };
\node [coordinate, right=10mm of 8g] (9g) { };
% other nodes
\node [circle, below=1cm of 3g] (3) {3};
\node [circle, below=1cm of 7g] (7) {7};
\node [circle, above=1cm of 8g] (8) {8};
\node [circle, below=2cm of 9g] (9) {9};
% right edge coordinate placeholders
\node [coordinate, right=10mm of 9g] (edge) { };
\node [coordinate, above=1cm of edge] (edge_above) { };
\node [coordinate, below=1cm of edge] (edge_below1) { };
\node [coordinate, below=2cm of edge] (edge_below2) { };
% paths
\path[draw]
(1) -- (2)
(2) -- (6)
(2) |- (3)
(3) -- (7)
(7) |- (9)
(6) |- (8);
% right arrows
\path[draw, ->] (8) -> (edge_above);
\path[draw, ->] (6) -> (edge);
\path[draw, ->] (7) -> (edge_below1);
\path[draw, ->] (9) -> (edge_below2);
\end{tikzpicture}
\end{document}
答案1
我想您的方案可能会有一些改进,但为了解决您的问题,这里有解决方案:删除坐标,并重写最后的箭头,如下所示:
\draw[->] (8) -- ++ (2.5,0) coordinate (eight);
\draw[->] (6) -- (6-|eight);
\draw[->] (7) -- (7-|eight);
\draw[->] (9) -- (9-|eight);
基本上,第一个箭头(顶部箭头)会继续前行2.5cm
并在该点建立坐标eight
。然后,使用 TikZ 运算符,-|
我们可以从其他节点绘制箭头,水平方向( )继续前行,-
直到它们到达相同的垂直位置eight
(|
),然后在那里停止。
结果如下: