缩短 Tikz 节点之间的边

缩短 Tikz 节点之间的边

我正在为论文制作简单的有限状态机。我的代码如下:

%\usetikzlibrary{arrows,automata} in the preamble
\begin{tikzpicture}[>=stealth', auto,node distance=2.75cm]
  \node[state] (start)      {};
  \node[state]         (s1) [right of=start, align=left]  {isProvider\\Enabled};
  \node[state]         (s2) [right of=s1] {};
  \node[state]         (s3) [right of=s2] {};
  \path[->] (start)  edge      node {} (s1)
        (s1) edge              node[text width=1cm,align=center, pos=.4] {requestLocation\\Updates} (s2)
        (s2) edge              node[text width=1cm,align=center, pos=.3 ]{addGps\\StatusListener} (s3);
\end{tikzpicture}

我想将节点起始点到节点 s1 的距离减小到 1 厘米……但节点之间的距离只能是这个距离。所有其他边缘应保持 2.75 厘米。任何想法或建议都值得赞赏。

答案1

right您可以使用库提供的增强功能(和类似功能) positioning(请参阅第节16.5.3 高级放置选项手册中的pgf内容):

\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,automata}

\begin{document}
\begin{tikzpicture}[>=stealth', auto,node distance=2.75cm]
  \node[state] (start)      {};
  \node[state]         (s1) [right=1cm of start, align=left]  {isProvider\\Enabled};
  \node[state]         (s2) [right of=s1] {};
  \node[state]         (s3) [right of=s2] {};
  \path[->] (start)  edge      node {} (s1)
        (s1) edge              node[text width=1cm,align=center, pos=.4] {requestLocation\\Updates} (s2)
        (s2) edge              node[text width=1cm,align=center, pos=.3 ]{addGps\\StatusListener} (s3);
\end{tikzpicture}

\end{document}

您需要更正标签的位置;因为它们现在与文本重叠。

相关内容