Der Tikz-Snake-Pfad enthält Leerzeichen vor/nach dem Knoten (MWE).

Der Tikz-Snake-Pfad enthält Leerzeichen vor/nach dem Knoten (MWE).

Ich verwende Tikz, um eine Schlangenlinienkante/einen Schlangenlinienpfad zwischen Knoten zu zeichnen, aber einige Kanten haben Leerzeichen vor/nach ihrem Start- oder Endknoten. Hier ist ein kleines Beispiel:

    \documentclass{standalone}
    \usepackage{tikz}
    \usetikzlibrary[positioning,decorations.pathmorphing]
    \begin{document}
    \begin{tikzpicture}

      \tikzstyle{enclosed} = [draw, circle, inner sep=0pt, minimum size=.15cm, fill=black]
      \tikzstyle{enclosedM} = [draw, circle, inner sep=0pt, minimum size=.15cm, fill=red]

      \node[enclosed, label={left: $x$}] (x) at (0,2) {};
      \node[enclosed, label={right: $y$}] (y) at (4,2) {};
      \node[enclosed] (w) at (2,0) {};
      \node[enclosed] (v) at (2,4) {};
      \node[enclosedM, label={above: $z$}] (z) at (2,1) {};
      \node[enclosedM, label={below: $t$}] (t) at (2,3) {};

      \draw[decorate,decoration={snake,amplitude=.2mm}]
        (x) -- (v)
        (v) -- (y)
        (x) -- (w)
        (w) -- (y)
        (x) -- (t)
        (v) -- (t)
        (y) -- (t)
        (x) -- (z)
        (w) -- (z)
        (z) -- (y);
    \end{tikzpicture}
    \end{document}

Das Ergebnis ist:PDF von dem, was oben produziert wird

Beachten Sie, dass zwischen dem unteren mittleren Knoten und dem Knoten ein Leerraum vorhanden ist.z. Außerdem gibt es Leerzeichen zwischen dem obersten Knoten und dem Knotenj.

Dies tritt auch dann noch auf, wenn „Amplitude“ auf 0 mm eingestellt ist, was meiner Meinung nach dem entspricht, wenn die Kante überhaupt nicht dekoriert ist. Das Einstellen der Optionen „Postlänge“ und „Prelänge“ mit verschiedenen Kombinationen behebt einige Kanten, verursacht dann aber dasselbe Problem mit anderen Kanten, die vorher in Ordnung waren.

Wenn ich es entferne decorate, decorations={...}und es wie gewohnt ohne Einstellungen verwende \draw, funktioniert es einwandfrei, aber die Kanten sind nicht gewellt. Wie kann ich die Leerzeichen entfernen, sodass es sich wie eine normale, aber halb gewellte Kante verhält?

Antwort1

Mit der Verzierung muss man vorsichtig umgehen. Ich weiß nicht genau, warum das passiert, aber es liegt offensichtlich daran, dass man mehrere Segmente in einen einzigen \drawBefehl einfügt.

Sie sollten \drawfür jedes Liniensegment einen separaten Code schreiben. Oder, um ihn Ihrer Originalversion ähnlich zu machen, können Sie den folgenden Code verwenden:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathmorphing}
\begin{document}

\begin{tikzpicture}

  \tikzset{
   enclosed/.style={draw, circle, inner sep=0pt, minimum size=.15cm, fill=black},
   enclosedM/.style={enclosed, fill=red}
  }

  \node[enclosed, label={left: $x$}] (x) at (0,2) {};
  \node[enclosed, label={right: $y$}] (y) at (4,2) {};
  \node[enclosed] (w) at (2,0) {};
  \node[enclosed] (v) at (2,4) {};
  \node[enclosedM, label={above: $z$}] (z) at (2,1) {};
  \node[enclosedM, label={below: $t$}] (t) at (2,3) {};

  \foreach\x in {
    (x) -- (v),
    (v) -- (y),
    (x) -- (w),
    (w) -- (y),
    (x) -- (t),
    (v) -- (t),
    (y) -- (t),
    (x) -- (z),
    (w) -- (z),
    (z) -- (y)
  }
   \draw[decorate,decoration={snake,amplitude=.2mm}] \x;

\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Zwei Kommentare (keine richtige Antwort): tikzstyleist veraltet und wenn Sie die Linien einzeln zeichnen, gibt es kein Problem. (Ich habe nicht überprüft, ob das Problem auf zurückzuführen ist tikzstyle.)AKTUALISIEREN: den Code kompaktiert und ein großes Dankeschön an @Zarko für das Auffinden der eckigen Klammern!

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
  \tikzset{Snake/.style={decorate,decoration={snake,amplitude=.2mm}},
    enclosed/.style={draw, circle, inner sep=0pt, minimum size=.15cm,
    fill=black},
    enclosedM/.style={draw, circle, inner sep=0pt, minimum size=.15cm,
    fill=red}}

  \node[enclosed, label={left:$x$}] (x) at (0,2) {};
  \node[enclosed, label={right:$y$}] (y) at (4,2) {};
  \node[enclosed] (w) at (2,0) {};
  \node[enclosed] (v) at (2,4) {};
  \node[enclosedM, label={above:$z$}] (z) at (2,1) {};
  \node[enclosedM, label={below:$t$}] (t) at (2,3) {};
  \foreach \X in {x,y,v} \draw[Snake] (t) -- (\X);
  \foreach \X in {x,y,w} \draw[Snake] (z) -- (\X);
  \foreach \X in {x,y}{\foreach \V in {v,w}  \draw[Snake] (\V) -- (\X);}    
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen