tikz:即使使用“网格”也会出现奇怪的间距

tikz:即使使用“网格”也会出现奇怪的间距

我是一名新手,正在使用相对定位和 制作简单的流程图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|),然后在那里停止。

结果如下:

在此处输入图片描述

相关内容