Hallo, ich habe versucht mehrere Nodes jeweils relativ zu einem der vorangegangenen zu positinieren:

Open in Online-Editor
\documentclass{scrreprt}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node (a) at    (0,0)  {a};
  \node (b) at ++(30:1)  {b};
  \node (c) at  +(90:1)  {c};
  \node (d) at ++(330:1) {d};
  \node (e) at  +(270:1) {e};
  \draw (a) -- (b) -- (d); \draw (b) -- (c); \draw (d) -- (e);
\end{tikzpicture}
\end{document}

Dabei soll (b) 1cm in 30° Richtung relativ von (a) stehen, (d) 330° relativ von (b), (c) 90° über (b) und (e) 270° unterhalb von (d). Allerdings funktionieren + und ++ nicht so wie ich es erwartet hätte. Stattdessen scheinen sie gar keinen Effekt zu haben, weil ich sie auch einfach weglassen kann und immer noch das gleiche Ergebnis bekomme, nämlich dass alle Nodes relativ von (0,0) aus berechnet wurden. Das ist zwar zufällig auch (a), aber wenn ich (a) auf z.B. (5,5) setze, werden die anderen weiterhin vom Ursprung aus gezeichnet. Gibt es irgendeinen einfachen Weg das Problem zu lösen oder muss man einen komplett anderen Ansatz wählen?

gefragt 08 Aug '15, 13:06

dontgetcaughtt's gravatar image

dontgetcaughtt
2312
Akzeptiert-Rate: 0%

bearbeitet 07 Feb '16, 11:55

saputello's gravatar image

saputello
10.8k103963


Die + und ++ beziehen sich immer nur auf Koordinaten im aktuellen Pfad. Ein neuer Pfad beginnt dabei immer mit einem Befehl wie \path, \node, \draw etc. und endet mit einem Semikolon. Du hast also mehrere Pfade mit jeweils nur einer Koordinate. Die diesen vorangestellten Pluszeichen ändern entsprechend nichts, da sie sich dann nur auf den Ursprung des jeweiligen Pfades beziehen.

Du könntest die shift Option bei den Koordinatenangaben verwenden:

Open in Online-Editor
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node (a) at (0,0) {a};
  \node (b) at ([shift={(a)}]30:1) {b};
  \node (c) at ([shift={(b)}]90:1) {c};
  \node (d) at ([shift={(b)}]330:1) {d};
  \node (e) at ([shift={(d)}]270:1) {e};
  \draw (a) -- (b) -- (d);
  \draw (b) -- (c);
  \draw (d) -- (e);
\end{tikzpicture}
\end{document}

oder für jeden Node jetzt einen passenden Pfad angeben:

Open in Online-Editor
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node (a) at (0,0) {a};
  \path (a) +(30:1) node(b){b};
  \path (b) +(90:1) node(c){c};
  \path (b) +(330:1) node(d){d};
  \path (d) +(270:1) node(e){e};
  \draw (a) -- (b) -- (d);
  \draw (b) -- (c); 
  \draw (d) -- (e);
\end{tikzpicture}
\end{document}

Oder aber Du platzierst alle Nodes in einem einzigen Pfad. Dann tun auch + und ++ genau das, was Du von ihnen erwartest.

Open in Online-Editor
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path 
    (0,0) node(a){a}
  ++(30:1) node(b){b}
   +(90:1) node(c){c}
  ++(330:1) node(d){d}
   +(270:1) node(e){e};
  \draw (a) -- (b) -- (d);
  \draw (b) -- (c);
  \draw (d) -- (e);
\end{tikzpicture}
\end{document}

Ergebnis:

alt text

Permanenter link

beantwortet 09 Aug '15, 00:24

esdd's gravatar image

esdd
15.9k164055
Akzeptiert-Rate: 63%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×688
×71
×7

gestellte Frage: 08 Aug '15, 13:06

Frage wurde gesehen: 5,520 Mal

zuletzt geändert: 07 Feb '16, 11:55