Dekoration lässt Linie verschwinden

Dekoration lässt Linie verschwinden

Ich habe folgendes Diagramm:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \newcommand\rad{.75}
  \foreach \a/\r in {60/0, 0/3, 120/3, 240/3}{
    \begin{scope}[shift={(\a:\r*\rad)}]
      \draw(60+\a:\rad)  node (A\a) {} circle (.5mm) [fill];
      \draw(180+\a:\rad) node (B\a) {} circle (.5mm) [fill];
      \draw(300+\a:\rad) node (C\a) {} circle (.5mm) [fill];
    \end{scope}
  }
  \path[blue, thick, <->]
  (A60)  edge (B120)
  (B60)  edge (B240)
  (C60)  edge (B0)
  (A0)   edge [bend right] (C120)
  (A120) edge [bend right] (C240)
  (A240) edge [bend right] (C0);
\end{tikzpicture}
\end{document}

Ausgabe

Ich möchte, dass die blauen Kanten alle durchgestrichen sind, also habe ich sie mit Verzierungen geändert:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \newcommand\rad{.75}
  \foreach \a/\r in {60/0, 0/3, 120/3, 240/3}{
    \begin{scope}[shift={(\a:\r*\rad)}]
      \draw(60+\a:\rad)  node (A\a) {} circle (.5mm) [fill];
      \draw(180+\a:\rad) node (B\a) {} circle (.5mm) [fill];
      \draw(300+\a:\rad) node (C\a) {} circle (.5mm) [fill];
    \end{scope}
  }
  \path[blue, thick, <->, decoration={markings,mark=at position 0.5 with {\arrow{|}}}]
  (A60)  edge [decorate] (B120)
  (B60)  edge [decorate] (B240)
  (C60)  edge [decorate] (B0)
  (A0)   edge [decorate, bend right] (C120)
  (A120) edge [decorate, bend right] (C240)
  (A240) edge [decorate, bend right] (C0);
\end{tikzpicture}
\end{document}

Beschädigte Ausgabe

Offensichtlich habe ich hier etwas falsch gemacht. Die Kanten selbst verschwinden und die Pfeilspitzen sind ab. Die auf der Quellseite ist weg und die andere hat eine sehr seltsame Positionierung.

Ich habe ein paar andere Pfeiltypen als ausprobiert |und nur versucht, einige der Kanten zu verzieren:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \newcommand\rad{.75}
  \foreach \a/\r in {60/0, 0/3, 120/3, 240/3}{
    \begin{scope}[shift={(\a:\r*\rad)}]
      \draw(60+\a:\rad)  node (A\a) {} circle (.5mm) [fill];
      \draw(180+\a:\rad) node (B\a) {} circle (.5mm) [fill];
      \draw(300+\a:\rad) node (C\a) {} circle (.5mm) [fill];
    \end{scope}
  }
  \path[blue, thick, <->, decoration={markings,mark=at position 0.5 with {\arrow{><}}}]
  (A60)  edge [decorate] (B120)
  (B60)  edge [decorate] (B240)
  (C60)  edge (B0)
  (A0)   edge [bend right] (C120)
  (A120) edge [bend right] (C240)
  (A240) edge [decorate, bend right] (C0);
\end{tikzpicture}
\end{document}

Weitere fehlerhafte Ausgabe

Es scheint also, dass das Dekorieren mit diesem das Problem verursacht. Allerdings sehe ich ziemlich ähnlichen Code an Stellen wieHierUndHier.

Was habe ich hier falsch gemacht? Wie repariere ich meine Dekorationen?

Antwort1

Dermanuelle Zustände

Die Dekoration zerstört den Eingabepfad (außer in bestimmten Fällen, die später näher erläutert werden), was bedeutet, dass der Pfad zum Bestimmen von Positionen auf dem Pfad verwendet wird, aber nach Abschluss der Dekoration ist dieser Pfad verschwunden. Normalerweise müssen Sie ein verwenden, postactionum Markierungen hinzuzufügen.

(Der besondere Fall ist die mark connection nodeDekoration.)

Ersetzen Sie das decorates durch postaction=decorateund Sie erhalten, was Sie suchen, hoffe ich.

Das |ist nicht perfekt zentriert, weiles soll nur den Punkt berühren. Ähnliche Dinge passieren, wenn Sie danach fragen, \arrow{><}weil die (umgekehrte) Spitze <an Position 0,5 und nicht irgendwo in der Mitte platziert wird.

Wenn Sie möchten, dass alle Kanten dekoriert werden, verwenden Sie den every edgeStil:

\path[…, decoration = {…}, every edge/.append style={postaction=decorate}] …;

Ich habe nicht hinzugefügt diearrows.metaBibliothekim Code, obwohl die alten Pfeile veraltet sind, aber das Problem und die Lösung sind dieselben.

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
  \newcommand\rad{.75}
  \foreach \a/\r in {60/0, 0/3, 120/3, 240/3}{
    \begin{scope}[shift={(\a:\r*\rad)}]
      \draw(60+\a:\rad)  node (A\a) {} circle (.5mm) [fill];
      \draw(180+\a:\rad) node (B\a) {} circle (.5mm) [fill];
      \draw(300+\a:\rad) node (C\a) {} circle (.5mm) [fill];
    \end{scope}
  }
  \path[blue, thick, <->, decoration={markings,mark=at position 0.5 with {\arrow{|}}}]
  (A60)  edge [postaction=decorate] (B120)
  (B60)  edge [postaction=decorate] (B240)
  (C60)  edge (B0)
  (A0)   edge [bend right] (C120)
  (A120) edge [bend right] (C240)
  (A240) edge [postaction=decorate, bend right] (C0);
\end{tikzpicture}
\end{document}

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen