Petrinet: Dekoration und XShift sind in Tikz nicht ausgerichtet

Petrinet: Dekoration und XShift sind in Tikz nicht ausgerichtet

Wenn ein neues begin{tikzpicture}[xshift=2cm]verwendet wird, erstellt es das TikZ-Bild 2 cm rechts vom vorhandenen TikZ-Bild (X-Verschiebung).

Aber irgendwie scheint das hier nicht zu funktionieren und auch die Verzierung (Schlangenlinie) ist nicht richtig ausgerichtet.

Ich habe Folgendes erwartet:

Bildbeschreibung hier eingeben

Aber ich verstehe Folgendes:

Bildbeschreibung hier eingeben

Notiz: Ich habe den gleichen Code wie im ersten TikZ-Bild verwendet, daher hat das rechte Feld auch das gleiche Diagramm. Ich werde das später ändern.

Code:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows}
\usetikzlibrary{backgrounds}
\usetikzlibrary{fit}
\usetikzlibrary{decorations.pathmorphing}

\tikzset{squarenode/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick,
    minimum height = 1cm,
    minimum width  = 1cm
}}

\tikzset{circlenode/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick,
    minimum size = 1cm
}}

\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}

\begin{document}
\begin{tikzpicture}
  [>=stealth']
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to [out=180,in=90] (r1);
  \draw[->] (r1) to [out=-90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=-90] (r2);
  \draw[->] (r2) to [bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to [out=90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=90] (r4);
  \draw[->] (r4) to [bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to [bend left=45] (r3);
  \begin{scope}[on background layer]
    \node [fill=gray!15,rounded corners,fit=(s1) (s3) (s5) (r1) (r2)] (R1) {};
  \end{scope}
\end{tikzpicture}

\begin{tikzpicture}[xshift=5cm]
  [>=stealth']
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to [out=180,in=90] (r1);
  \draw[->] (r1) to [out=-90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=-90] (r2);
  \draw[->] (r2) to [bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to [out=90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=90] (r4);
  \draw[->] (r4) to [bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to [bend left=45] (r3);
  \begin{scope}[on background layer]
    \node [fill=gray!15,rounded corners,fit=(s1) (s3) (s5) (r1) (r2)] (R2) {};
  \end{scope}
    \draw [thick,decorate,
decoration={snake,amplitude=.4mm,segment length=2mm,
pre=moveto,pre length=1mm,post length=2mm}]
(R1) -- (R2) node [above=1mm,midway,text width=3cm,align=center]
{replacement of the \textcolor{red}{capacity} by \textcolor{red}{two places}};
\end{tikzpicture}
\end{document} 

Antwort1

Das Verschieben mit xshiftoder funktioniert yshiftnur shiftinnerhalb einer einzigen tikzpictureUmgebung.

Hier hast duzweitikzpicture Umgebungen, so hat esNEINWirkung.

Es genügt, die Figur in eine Umgebung einzubinden, scopeum sie bewegen zu können.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows}
\usetikzlibrary{backgrounds}
\usetikzlibrary{fit}
\usetikzlibrary{decorations.pathmorphing}

\tikzset{squarenode/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick,
    minimum height = 1cm,
    minimum width  = 1cm
}}

\tikzset{circlenode/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick,
    minimum size = 1cm
}}

\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}

\begin{document}
\begin{tikzpicture}
  [>=stealth']
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to [out=180,in=90] (r1);
  \draw[->] (r1) to [out=-90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=-90] (r2);
  \draw[->] (r2) to [bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to [out=90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=90] (r4);
  \draw[->] (r4) to [bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to [bend left=45] (r3);
  \begin{scope}[on background layer]
    \node [fill=gray!15,rounded corners,fit=(s1) (s3) (s5) (r1) (r2)] (R1) {};
  \end{scope}

\begin{scope}[xshift=9cm]
  [>=stealth']
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to [out=180,in=90] (r1);
  \draw[->] (r1) to [out=-90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=-90] (r2);
  \draw[->] (r2) to [bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to [out=90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=90] (r4);
  \draw[->] (r4) to [bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to [bend left=45] (r3);
  \begin{scope}[on background layer]
    \node [fill=gray!15,rounded corners,fit=(s1) (s3) (s5) (r1) (r2)] (R2) {};
  \end{scope}
    \draw [thick,decorate,
decoration={snake,amplitude=.4mm,segment length=2mm,
pre=moveto,pre length=1mm,post length=2mm}]
(R1) -- (R2) node [above=1mm,midway,text width=3cm,align=center]
{replacement of the \textcolor{red}{capacity} by \textcolor{red}{two places}};
\end{scope}
\end{tikzpicture}
\end{document} 

Bildschirmfoto

Antwort2

Wie oben erwähnt, xshiftverschiebt das Bild niemals, es sei denn, Sie arbeiten mit Overlay-Bildern und absoluter Positionierung. Und das brauchen Sie fithier nicht, es ist einfacher, das nur mit zu tun local bounding box. Sie können diese lokalen Begrenzungsrahmen verschieben.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows}
\usetikzlibrary{backgrounds}
\usetikzlibrary{decorations.pathmorphing}

\tikzset{squarenode/.style = {
    shape  = rectangle,
    fill   = gray!50,
    draw   = black,
    thick,
    minimum height = 1cm,
    minimum width  = 1cm
}}

\tikzset{circlenode/.style = {
    shape  = circle,
    fill   = blue!20,
    draw   = blue,
    thick,
    minimum size = 1cm
}}

\tikzset{help lines/.style=very thin}
\tikzset{My Grid/.style={help lines,color=blue!50}}

\begin{document}
\begin{tikzpicture}[>=stealth']
 \begin{scope}[local bounding box=L]
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to[out=180,in=90] (r1);
  \draw[->] (r1) to[out=-90,in=180] (s3);
  \draw[->] (s3) to[out=0,in=-90] (r2);
  \draw[->] (r2) to[bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to[out=90,in=180] (s3);
  \draw[->] (s3) to[out=0,in=90] (r4);
  \draw[->] (r4) to[bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to[bend left=45] (r3);
\end{scope} 
\begin{scope}[on background layer]
  \fill[gray!15,rounded corners] (L.south west) rectangle (L.north east);
\end{scope}


\begin{scope}[xshift=8.5cm,local bounding box=R]
  %\draw[My Grid] (-5,-5) grid (15,15);
  \node (r1) at (-4,4) [squarenode] {r1};
  \node[right=4cm of r1] (r2) [squarenode] {r2};
  \node[below=3cm of r1] (r3) [squarenode] {r3};
  \node[right=4cm of r3] (r4) [squarenode] {r4};
  \node[right=1.5cm of r1] (s2) [circlenode] {s2};
  \node[above=1cm of s2] (s1) [circlenode] {}; %s1
  \node[below=1cm of s2] (s3) [circlenode] {s3}; %s3
  \node[above=1ex of s3,red] {$s \leq 3$};
  \node[right=1.5cm of r3] (s4) [circlenode] {s4};
  \node[below=1cm of s4] (s5) [circlenode] {}; %s5
  \draw[fill=black] (s1.center) circle [radius=0.1cm];
  \draw[fill=black] (s5.center) circle [radius=0.1cm];
  \draw[->] (r1) -- (s2);
  \draw[->] (s2) -- (r2);
  \draw[->] (r3) -- (s4);
  \draw[->] (s4) -- (r4);
  \draw[->] (s1) to [out=180,in=90] (r1);
  \draw[->] (r1) to [out=-90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=-90] (r2);
  \draw[->] (r2) to [bend right=45] node[auto,swap] {2} (s1);
  \draw[->] (r3) to [out=90,in=180] (s3);
  \draw[->] (s3) to [out=0,in=90] (r4);
  \draw[->] (r4) to [bend left=45] node[auto] {2} (s5);
  \draw[->] (s5) to [bend left=45] (r3);
\end{scope}
\begin{scope}[on background layer]
    \fill[gray!15,rounded corners] (R.south west) rectangle (R.north east);
\end{scope}
\draw [thick,decorate,
decoration={snake,amplitude=.4mm,segment length=2mm,
pre=moveto,pre length=1mm,post length=2mm}]
(L) -- (R) node [above=1mm,midway,text width=3cm,align=center]
{replacement of the \textcolor{red}{capacity} by \textcolor{red}{two places}};
\end{tikzpicture}
\end{document} 

Bildbeschreibung hier eingeben

verwandte Informationen