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, 07:06

dontgetcaughtt's gravatar image

dontgetcaughtt
232
Akzeptiert: 100%

bearbeitet 07 Feb, 05:55

saputello's gravatar image

saputello
18.4k22352


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 08 Aug '15, 18:24

esdd's gravatar image

esdd
14.2k53251

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×51
×4

Frage gestellt: 08 Aug '15, 07:06

Frage wurde angeschaut: 1,368 Mal

Zuletzt aktualisiert: 07 Feb, 05:55