РЕДАКТИРОВАТЬ

РЕДАКТИРОВАТЬ

У меня есть шесть состояний в рисунке автомата:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata}

\begin{document}
\begin{tikzpicture}[node distance=5cm,thick,every state/.style={minimum size=3cm}]
  \node[state,draw=blue,fill=blue!20] (A) {A};
  \node[state,draw=red,fill=red!20] (B) [right of=A] {B};
  \node[state,draw=red,fill=red!20] (E) [below of=B] {E};
  \node[state,draw=blue,fill=blue!20] (C) [right of=B] {C};
  \node[state,draw=green!50!black,fill=green!20] (D) [below of=A] {D};
  \node[state,draw=red,fill=red!20] (F) [below of=C] {F};
  \path[-,violet,line width=1mm]
  (A) edge node [color=black,sloped,above] {G1,G2,G3} (E)
  edge node [color=black,sloped,above] {G1} (B)
  (D) edge node [color=black,sloped,above] {G4} (E)
  (C) edge node [color=black,sloped,above] {G5} (E)
  edge node [color=black,sloped,above] {G5} (F)
  (E) edge node [color=black,sloped,above] {G5} (F)
  (B) edge node [color=black,sloped,above] {G1} (E);
\end{tikzpicture}
\end{document}

который производит это

введите описание изображения здесь

Теперь мне нужно нарисовать большую стрелку, касающуюся всех узлов с текстом.

Этот пример просто потрясающий.но я понятия не имею, как его модифицировать, чтобы он проходил через узлы.

Я хочу что-то вроде этого:

введите описание изображения здесь

Но выглядит лучше (и с TiKZ, предыдущее изображение было сделано в Inkscape)

решение1

Это демонстрирует один из способов наложения пути с текстом, изогнутым вдоль него. Широкий путь рисуется с помощью толстой полупрозрачной линии. Декорирование text along pathиспользуется для добавления текста после того, как линия нарисована в postaction. Наконец, пути придаются непрозрачные края путем рисования двух дополнительных путей поверх первого с помощью тонких окантовочных линий.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{automata,calc,positioning,decorations.text}

\begin{document}
  \begin{tikzpicture}
    [
      node distance=5cm,
      thick,
      every state/.style={minimum size=3cm},
      every edge/.append style={
        every node/.append style={text=black, sloped, above}
      },
    ]
    \node[state,draw=blue,fill=blue!20] (A) {A};
    \node[state,draw=red,fill=red!20] (B) [right=of A.center] {B};
    \node[state,draw=red,fill=red!20] (E) [below=of B.center] {E};
    \node[state,draw=blue,fill=blue!20] (C) [right=of B.center] {C};
    \node[state,draw=green!50!black,fill=green!20] (D) [below=of A.center] {D};
    \node[state,draw=red,fill=red!20] (F) [below=of C.center] {F};
    \path[-,violet,line width=1mm]
    (A)  edge node  {G1,G2,G3}
    (E)  edge node [below]  {G1} (B)
    (D)  edge node  {G4} (E)
    (C)  edge node  {G5} (E)
         edge node  {G5} (F)
    (E)  edge node  {G5} (F)
    (B)  edge node  {G1} (E);
    \path
    [
      line width=7.5mm,
      draw=violet!25,
      opacity=.75,
    ] ($(B.north)!1/2!(E.south)$) coordinate (c) circle (75mm and 40mm);
    \path
    [
      thick,
      draw=violet,
    ] (c) circle (78.75mm and 43.75mm) circle (71.25mm and 36.25mm)
    ;
    \path
    [
      postaction={
        decorate,
        opacity=1,
        decoration={
          text along path,
          text={|\LARGE\sffamily|Some text here Some text here ||},
          raise=-5pt,
          pre length=200mm,
          text color=black,
          reverse path=true,
          pre=moveto
        }
      }
    ]  (c) circle (75mm and 40mm);
  \end{tikzpicture}
\end{document}

изогнутый текст

РЕДАКТИРОВАТЬ

Вот пример, немного похожий на тот, на который вы ссылались в своем вопросе. Он использует толстые стрелки с текстовыми украшениями.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{automata,calc,positioning,decorations.text,arrows.meta,bending}

\begin{document}
  \begin{tikzpicture}
    [
      node distance=5cm,
      thick,
      every state/.style={minimum size=3cm},
      every edge/.append style={
        every node/.append style={text=black, sloped, above}
      },
      my arrow/.style={line width=7.5mm, draw=violet, {Triangle Cap[reversed,bend]}-{Triangle Cap[bend]}},
    ]
    \node[state,draw=blue,fill=blue!20] (A) {A};
    \node[state,draw=red,fill=red!20] (B) [right=of A.center] {B};
    \node[state,draw=red,fill=red!20] (E) [below=of B.center] {E};
    \node[state,draw=blue,fill=blue!20] (C) [right=of B.center] {C};
    \node[state,draw=green!50!black,fill=green!20] (D) [below=of A.center] {D};
    \node[state,draw=red,fill=red!20] (F) [below=of C.center] {F};
    \path[-,violet,line width=1mm]
    (A)  edge node  {G1,G2,G3}
    (E)  edge node [below]  {G1} (B)
    (D)  edge node  {G4} (E)
    (C)  edge node  {G5} (E)
         edge node  {G5} (F)
    (E)  edge node  {G5} (F)
    (B)  edge node  {G1} (E);
    \path [my arrow]  ($(B.north)!1/2!(E.south)$) coordinate (c) +(75mm,0) arc (0:-90:75mm and 40mm);
    \path [my arrow] (c) +(0,-40mm) arc (270:180:75mm and 40mm);
    \path
    [
      my arrow,
      postaction=decorate,
      decoration={
        text along path,
        text={|\LARGE\sffamily|Some text here Some text here ||},
        text color=white,
        raise=-5pt,
        pre length=10mm,
        pre=moveto
        }
    ] (c) +(-75mm,0) arc (180:90:75mm and 40mm);
    \path
    [
      my arrow,
      postaction=decorate,
      decoration={
        text along path,
        text={|\LARGE\sffamily|More text here More text here ||},
        text color=white,
        raise=-5pt,
        pre length=10mm,
        pre=moveto
        }
    ]  (c) +(0,40mm) arc (90:0:75mm and 40mm);
  \end{tikzpicture}
\end{document}

стрелки на автоматах

Связанный контент