
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}
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}
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}
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
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,
postaction
um Markierungen hinzuzufügen.
(Der besondere Fall ist die mark connection node
Dekoration.)
Ersetzen Sie das decorate
s durch postaction=decorate
und 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 edge
Stil:
\path[…, decoration = {…}, every edge/.append style={postaction=decorate}] …;
Ich habe nicht hinzugefügt diearrows.meta
Bibliothekim 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}