node liegt mit bend left/right + shorten nicht auf der Kurve

Tabellen und Grafiken erstellen und anordnen


markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

node liegt mit bend left/right + shorten nicht auf der Kurve

Beitrag von markusv »

Hallo liebe LaTeX-Gemeinde.

Ich habe eine Frage zur Positionierung von nodes bzw. coordinates in Verbindung mit bend/shorten.

Konkret möchte ich, dass eine node auf einer Kurve liegt, die ich mit bend biege und mit shorten kürze. Mein Problem ist, dass die node in diesem Fall nicht mehr auf der Kurve liegt, da die Positionierung offensichtlich Start- und Endpunkt als Referenz nutzt, und nicht die tatsächlich gezeichnete Linie.

Ich hoffe, mein Problem ist einigermaßen zu verstehen. Anbei noch ein Beispiel, was den Sachverhalt nochmal verdeutlicht:

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[red,bend left] (-2,0) to coordinate[pos=0.3] (A) (2,0);
\draw[red,fill] (A) circle (1pt);%liegt auf der Kurve
\draw[blue,bend left, shorten <=.5cm] (-2,0) to coordinate[pos=.3] (B) (2,0);
\draw[blue] (B) circle (1pt);%liegt neben der Kurve
\end{tikzpicture}
\end{document}
Da schließt sich noch eine Frage an, die ich frecherweise gleich noch anhänge, da sie das Problem ebenfalls beheben würde: Gibt es eine Möglichkeit, die Kurve so zu beschneiden, dass der Verlauf nicht verändert wird?
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Wenn keine Pfeile an die Enden des blauen Pfades kommen, ginge etwas wie

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\tikzset{
  shorten/.style n args={3}{
    postaction={#1, decorate,
      decoration={curveto,
        pre=moveto, pre length=#2,
        post=moveto, post length=#3
  }}},
}

\begin{document} 
\begin{tikzpicture} 
\draw[red,bend left] (-2,0) to coordinate[pos=0.3] (A) (2,0); 
\draw[red,fill] (A) circle (1pt);
\path[blue,bend left, shorten={draw}{.5cm}{0cm}] (-2,0) to coordinate[pos=.3] (B) (2,0); 
\draw[blue] (B) circle (1pt);
\end{tikzpicture} 
\end{document}
Beachte, dass bei der blauen Linie erst die Dekoration gezeichnet wird und deshalb an der Stelle \path verwendet wird.

Antworten