goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Positionierung von \node und dem zugehörigen Text

 

PeterPan87
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 18.01.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2017, 12:00     Titel: Positionierung von \node und dem zugehörigen Text
  Antworten mit Zitat      
Liebe LaTexler,

ich brauche bei folgendem Problem eure Hilfe. Ich habe eine Grafik mit dem zu sehenden Code programmiert. und es sind folgende Fragestellungen aufgetreten die ich mir selbst nicht mehr beantworten kann.

1.: Wie kann ich den Text "Schritt 3" über das Kreisdiagramm schreiben?

2.: Wie kann ich Ebene B über der Trennlinie positionieren? (funktionierte bis ich das Kreisdiagramm integrierte)

danke für eure Hilfe.


Code • Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\usetikzlibrary{matrix,fadings,arrows,trees,calc,positioning,decorations,automata}
\begin{document}
\begin{figure}[htbp]
   \centering
   \begin{tikzpicture}
   \node [draw, rectangle, rounded corners] (a) {Schritt 1};
   \node [draw, rectangle, rounded corners, right =of a] (b) {Schritt 2};
   \node [draw, rectangle, rounded corners, below =of b] (c) {Schritt 3  
   
   \begin{tikzpicture
}

node distance=12mm,
>=stealth, auto,
every state/.style={draw=none, inner sep=0pt}
]
\node[state] (q14) {$14$} ;
\node[state] (q12) [above right=of q14] {$12$};
\node[state] (q23) [below right=of q12] {$23$};
\node[state] (q34) [below right=of q14] {$34$};

\begin{scope}[bend left]
\path[->]   (q14) edge node {c} (q12)
(q12) edge node {c} (q23)
(q23) edge node {c} (q34)
(q34) edge node {c} (q14);
\end{scope}
   \end{tikzpicture}
   };
   \node [draw, rectangle, rounded corners, right =of c] (d) {Schritt 1};
   \node [draw, rectangle, rounded corners, right =of d] (e) {Ebene A};
   \node [draw, rectangle, rounded corners, above =of e] (f) {Ebene B};
   \draw[-, densely dashed] (-1.5,-.75) -- (14.7,-.75);
   \draw[->, >=stealth'] (a) -- (b);
   \draw[->, >=stealth'] (b) -- (c);
   \draw[->, >=stealth'] (c) -- (d);
   \end{tikzpicture}
\end{figure}
\end{document}
 
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2040
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 10.02.2017, 12:29     Titel: Re: Positionierung von \node und dem zugehörigen Text
  Antworten mit Zitat      
PeterPan87 hat Folgendes geschrieben:

1.: Wie kann ich den Text "Schritt 3" über das Kreisdiagramm schreiben?


Etwas wie

Code • Öffne in Overleaf
\node [draw, rectangle, rounded corners, below =of b,align=center] (c) {Schritt 3 \\ ...};


Beachte aber, dass man tikzpicture Umgebungen nicht schachteln sollte. Siehe dazu Wie kann ich TikZ nodes verschachteln?.

PeterPan87 hat Folgendes geschrieben:

2.: Wie kann ich Ebene B über der Trennlinie positionieren? (funktionierte bis ich das Kreisdiagramm integrierte)


Code • Öffne in Overleaf
\node [draw, rectangle, rounded corners] (f) at (e|-b) {Ebene B};
Private Nachricht senden Benutzer-Profile anzeigen

PeterPan87
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 18.01.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2017, 22:53     Titel:
  Antworten mit Zitat      
Danke dir zunächst mal recht herzlich!

Ich habe mir durchgelesen was du mir verlinkt hast und es soweit in der Theorie auch verstanden. Leider hapert es noch an der Umsetzung.
Zudem würde ich gerne den Kreis Links unten um 90 Grad drehen, so dass die Nodes in den Ecken der Umrandung sind.
Habe es bisher mit dem anchor versucht und auch folgenden Post nachgebaut:
http://tex.stackexchange.com/questi.....-tex-images-from-inkscape
Leider hat beides nicht funktionier.

Hier die Weiterentwicklung meines Codes:
Code • Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\usepackage{graphicx}
\usetikzlibrary{matrix,fadings,arrows,trees,calc,positioning,decorations,automata,fit}
\begin{document}
\begin{figure}[htbp]
   \centering
   \begin{tikzpicture}
   \node [draw, rectangle, rounded corners] (a) {Volumenmodell};
   \node[fit=(a), minimum width=2cm]{};
   \node [draw, rectangle, rounded corners, right =of a] (b) {Schnittmodell
};
   \node[fit=(b), minimum width=2cm] {};
   \node [draw, rectangle, rounded corners, below =of b] (c) {  
      \begin{tikzpicture
}
      %      node [
      %      distance=12mm,>=stealth, auto,
      %      every state/.style={draw=none, inner sep=0pt}
      %      ]
      \node[anchor=north west, draw, rectangle, rounded corners] (q14) {$Beschichten$} ;
      \node[anchor=north east, draw, rectangle, rounded corners] (q12) [above right=of q14] {$Belichten$};
      \node[anchor=south west, draw, rectangle, rounded corners] (q23) [below right=of q12] {$Aushärten$};
      \node[anchor=south east, draw, rectangle, rounded corners] (q34) [below right=of q14] {$Absenken$};
     
      \begin{scope}[bend left]
      \path[->]   (q14) edge node {} (q12)
      (q12) edge node {
} (q23)
      (q23) edge node {
} (q34)
      (q34) edge node {
} (q14);
      \end{scope
}
      \end{tikzpicture}
   };
   \node[fit=(c), minimum width=2cm]{SLM-Prozess};
   \node [draw, rectangle, rounded corners, right =of c] (d) {Physisches Bauteil};
   \node [draw, rectangle, rounded corners, right =of d] (e) {Physische Ebene};
   \node [draw, rectangle, rounded corners] (f) at (e|-b) {Virtuelle Ebene};
   \draw[-, densely dashed] (-1.5,-.75) -- (14.7,-.75);
   \draw[->, >=stealth'] (a) -- (b);
   \draw[->, >=stealth'] (b) -- (c);
   \draw[->, >=stealth'] (c) -- (d);
\end{tikzpicture}
\caption{Prinzip der Generativen ~\cite[S.25]{Gebhardt.2013}}
\label{fig:PrinzipGen}
\end{figure}
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 715
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: Windows 7 64 Bit MiKTeX 2.9 32-Bit
     Beitrag Verfasst am: 14.02.2017, 23:54     Titel:
  Antworten mit Zitat      
Ich habe mir erlaubt, Dein Beispiel etwas umzugestalten:

Code • Öffne in Overleaf
\documentclass[tikz, border=10pt]{standalone}

\usepackage{selinput}% Begründung: http://texwelt.de/wissen/fragen/5546
\SelectInputMappings{
   adieresis={ä
},
   germandbls={ß}
}

\usetikzlibrary{
   arrows,
   positioning,
   fit
}

\begin{document}
\begin{tikzpicture}[
   ->,
   >=stealth',
   box/.style={
      draw,
      rectangle,
      font=#1,
      rounded corners
   
},
   box/.default=\normalfont
]
   \node [box] (a) {Volumenmodell};
   \node [box, right=of a] (b) {Schnittmodell};

   \begin{scope}[nodes={box=\itshape}]
   \node (q12) [below=of b] {Belichten};
   \node (q14) [below left=of q12] {Beschichten};
   \node (q23) [below right=of q12] {Aushärten};
   \node (q34) [below right=of q14] {Absenken};
   \end{scope}
   \node [box, fit=(q14) (q12) (q23) (q34)] (c) {SLM-Prozess};
   \path [bend left] (q14) edge (q12)
                     (q12) edge (q23)
                     (q23) edge (q34)
                     (q34) edge (q14);
   \node [box, right=of c] (d) {Physisches Bauteil};
   \node [box, right=of d] (e) {Physische Ebene};
   \node [box] (f) at (e|-b) {Virtuelle Ebene};
   \draw[-, densely dashed] (-1.5,-.75) -- (14.7,-.75);
   \draw (a) -- (b);
   \draw (b) -- (c);
   \draw (c) -- (d);
\end{tikzpicture}
\end{document}


PeterPan87 hat Folgendes geschrieben:
Zudem würde ich gerne den Kreis Links unten um 90 Grad drehen, so dass die Nodes in den Ecken der Umrandung sind.


Für diesen Zweck müsste eine Drehung um 45 Grad erfolgen.

Wenn ich Deine Beschreibung richtig verstanden habe, dürfte eine andere Anordnung der Knoten auch zum Ziel führen.

Code • Öffne in Overleaf
\documentclass[tikz, border=10pt]{standalone}

\usepackage{selinput}
\SelectInputMappings{
   adieresis={ä
},
   germandbls={ß}
}

\usetikzlibrary{
   arrows,
   positioning,
   fit
}

\begin{document}
\begin{tikzpicture}[
   ->,
   >=stealth',
   box/.style={
      draw,
      rectangle,
      font=#1,
      rounded corners
   
},
   box/.default=\normalfont
]
   \node [box] (b) {Schnittmodell};

   \begin{scope}[
      nodes={box=\itshape},
      node distance=2cm and .5cm
   
]
   \node (q12) [below left=of b] {Belichten};
   \node (q14) [below=of q12] {Beschichten};
   \node (q23) [below right=of b] {Aushärten};
   \node (q34) [below=of q23] {Absenken};
   \end{scope}
   \node [box, inner ysep=1cm, fit=(q14) (q12) (q23) (q34)] (c) {SLM-Prozess};
   \path [bend left] (q14) edge (q12)
                     (q12) edge (q23)
                     (q23) edge (q34)
                     (q34) edge (q14);
    \draw (b) -- (c);
\end{tikzpicture}
\end{document}


Alternativ könntest Du Dein Ziel wahrscheinlich auch mit einer Matrix erreichen.
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2040
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 16.02.2017, 02:03     Titel:
  Antworten mit Zitat      
Hier ist mal noch ein Alternative, die auf dem Vorschlag von Bartmann basiert

Code • Öffne in Overleaf
\documentclass[margin=5pt]{standalone}
\usepackage{selinput}% Begründung: http://texwelt.de/wissen/fragen/5546
\SelectInputMappings{
    adieresis={ä
},
    germandbls={ß}
}

\usepackage{tikz}
\usetikzlibrary{
    arrows,
    positioning,
    fit
}

\begin{document}
\noindent
\begin{tikzpicture}[
    ->,
    >=stealth',
    box/.style={
       draw,
       rectangle,
       font=#1,
       rounded corners
   
},
    box/.default=\normalfont
]

    \path (0,0) node(q0){SLM process};
    \path [nodes={box=\itshape},node distance=.5cm and 0cm]
        node [above right = of q0,anchor = center] (q12) {Belichten}
        node [above left  = of q0,anchor = center] (q14) {Beschichten}
        node [below right = of q0,anchor = center] (q23) {Aushärten}
        node [below left  = of q0,anchor = center] (q34) {Absenken}
        ;
    \path [bend left] (q14) edge coordinate (ct) (q12)
                      (q12) edge (q23)
                      (q23) edge coordinate (cb) (q34)
                      (q34) edge (q14)
    ;

    \node [box, fit= (q14) (q12) (q23) (q34) (ct) (cb)] (c) {};

    \path [nodes = box]
        node [above = of c] (b) {Schnittmodell
}
        node [left = of b]  (a) {Volumenmodell}
        node [right=of c]   (d) {Physisches Bauteil}
        node [right=of d]   (e) {Physische Ebene}
        (e|-b) node         (f) {Virtuelle Ebene}
    ;

    \path (b) -- coordinate (temp) (c);
    \draw[-, densely dashed]
        (current bounding box.west|-temp) -- (current bounding box.east|-temp)
    ;
    \draw (a) -- (b);
    \draw (b) -- (c);
    \draw (c) -- (d);
\end{tikzpicture}
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

PeterPan87
Forum-Newbie
Forum-Newbie

Beiträge: 5
Anmeldedatum: 18.01.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2017, 19:40     Titel:
  Antworten mit Zitat      
SUPER! Vielen herzlichen Dank. Sieht fast genauso aus wie ich es mir vorgestellt habe. Very Happy

Vielleicht könnt ihr mir ja noch ein paar Anmerkungen zu folgenden Codezeilen machen, damit ich es das nächste mal selbst anwenden kann.
Ich habe hinter die jeweiligen Programmzeilen Kommentare gesetzt
Nehme auch das pgfmanual zur Hilfe.

Code • Öffne in Overleaf

    \path (0,0) node(q0){SLM process};  % "SLM prozess wird auf den Koordinatenmittelpunkt platziert!?
    \path [nodes={box=\itshape},node distance=.5cm and 0cm]
        node [above right = of q0,anchor = center] (q12) {Belichten}  %was bewirkt hier der anchor?
        node [above left  = of q0,anchor = center] (q14) {Beschichten}
        node [below right = of q0,anchor = center] (q23) {Aushärten}
        node [below left  = of q0,anchor = center] (q34) {Absenken}
        ;
    \path [bend left] (q14) edge coordinate (ct) (q12) % Was bewirkt dieser Teil des Codes?
                      (q12) edge (q23)
                      (q23) edge coordinate (cb) (q34)
                      (q34) edge (q14)
    ;

    \node [box, fit= (q14) (q12) (q23) (q34) (ct) (cb)] (c) {}; % Boxen um (q14) usw?

    \path [nodes = box]                                      % Diesen Block habe ich verstanden
        node [above = of c] (b) {Schnittmodell}
        node [left = of b]  (a) {Volumenmodell}
        node [right=of c]   (d) {Physisches Bauteil}
        node [right=of d]   (e) {Physische Ebene}
        (e|-b) node         (f) {Virtuelle Ebene}
    ;

    \path (b) -- coordinate (temp) (c); % Linie von b zu c!? was bewirkt coordinate (temp)
    \draw[-, densely dashed]
        (current bounding box.west|-temp) -- (current bounding box.east|-temp) % Hab ich nicht verstanden
 



Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2040
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 17.02.2017, 13:21     Titel:
  Antworten mit Zitat      
PeterPan87 hat Folgendes geschrieben:

Vielleicht könnt ihr mir ja noch ein paar Anmerkungen zu folgenden Codezeilen machen, damit ich es das nächste mal selbst anwenden kann.
Ich habe hinter die jeweiligen Programmzeilen Kommentare gesetzt
Nehme auch das pgfmanual zur Hilfe.


Nur als Hinweis: Es gibt in der Regel viele verschiedene Wege ein Bild mit TikZ zu erstellen. Welchen man wählt, hängt immer von der konkreten Aufgabe ab.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \path (0,0) node(q0){SLM process};  % "SLM prozess wird auf den Koordinatenmittelpunkt platziert!?
 


Ja mir erschien es hier sinnvoll den Node mit SLM process in den Ursprung zu setzen und die restliche Zeichnung relativ zu diesem zu machen.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \path [nodes={box=\itshape},node distance=.5cm and 0cm]
        node [above right = of q0,anchor = center] (q12) {Belichten}  %was bewirkt hier der anchor?
        node [above left  = of q0,anchor = center] (q14) {Beschichten}
        node [below right = of q0,anchor = center] (q23) {Aushärten}
        node [below left  = of q0,anchor = center] (q34) {Absenken}
        ;
 



Hier werden die Knoten, die auf dem "Kreis" liegen, relativ zu q0 also SLM process platziert. Mit den Angaben bei node distance sorgt above left = of q0 dafür, dass die rechte untere Ecke des einzufügenden Nodes vertikal 0,5cm und horizontal 0cm von der linken oberen Ecke des Ausgangsnodes entfernt eingefügt wird. Ergänzt man anchor=center, dann wird an der Stelle nicht die rechte untere Ecke sondern das Zentrum des neuen Nodes eingefügt. Probiere den Unterschied einfach aus.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \path [bend left] (q14) edge coordinate (ct) (q12) % Was bewirkt dieser Teil des Codes?
                      (q12) edge (q23)
                      (q23) edge coordinate (cb) (q34)
                      (q34) edge (q14)
    ;
 


Hier werden die gebogenen Pfeile zwischen den Nodes auf dem "Kreis" gezeichnet. Da der obere und untere Pfeil auch ober- bzw. unterhalb der bisherigen Nodes verlaufen, werden am höchsten bzw. tiefsten Punkt die Koordinaten ct bzw. cb gesetzt. Diese Punkte liegen jeweils in der Mitte des oberen bzw. unteren Pfeils. Es gibt dafür verschiedene Möglichkeiten: (q14) edge coordinate (ct) (q12) ist eine Abkürzung für (q14) edge coordinate [pos=.5] (ct) (q12) oder (q14) edge (q12)coordinate[pos=.5] (ct) . Im letzten Fall würde bei Weglassen des optionalen Arguments die Koordinate am Ende des Pfades eingefügt.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \node [box, fit= (q14) (q12) (q23) (q34) (ct) (cb)] (c) {}; % Boxen um (q14) usw?
 


Hier wird ein neuer Node mit dem Stil box eingefügt, dessen Größe und Position so angepasst wird, dass er die als Argument von fit angegebenen Nodes enthält. Dafür wird die fit Bibliothek benötigt.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \path (b) -- coordinate (temp) (c); % Linie von b zu c!? was bewirkt coordinate (temp)
 


Hier wird in der Mitte des Pfades, der nicht gezeichnet wird, eine Hilfskoordinate temp gesetzt. Auf dieser Höhe soll zum Schluss die gestrichelte Linie gezeichnet werden.

PeterPan87 hat Folgendes geschrieben:
Code • Öffne in Overleaf

    \draw[-, densely dashed]
        (current bounding box.west|-temp) -- (current bounding box.east|-temp) % Hab ich nicht verstanden
 


Hier wird die horizontale gestrichelte Linie gezeichnet. Um deren Position und Länge festzulegen werden der Node current bounding box (Infos in der Doku suchen) und der vorhin ermittelten Hilfskoordinate temp verwendet. Die Angabe (current bounding box.west|-temp) bezeichnet den Schnittpunkt der senkrechten Linie durch current bounding box.west und der horizontalen Linie durch temp. Siehe dazu 13.3.1 Intersections of Perpendicular Line in der Doku.
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de