Duplikat zu: Wie kann ich in einer TikZ Node einen Zeilenumbruch vornehmen?


Hallo,

ich hätte gerne folgendes Beispiel zentriert auf einer Seite - textwidth. Leider gelingt mir das nicht richtig. Zum Einen fände ich gleich große Nodes ansprechender, daher der Wunsch nach Umbrüchen und die Linien sind leider auch falsch.

Open in Online-Editor
\documentclass{scrartcl}  
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning} 
\usetikzlibrary{mindmap}

 \begin{document}
\begin{figure}
\begin{tikzpicture}[node distance=0.3cm, auto] 
\tikzset{
    mynode/.style={rectangle,rounded corners,draw=white, top color=white, bottom color=black!95,very thick, inner sep=1em, minimum size=1em, text centered},
    myarrow/.style={->, >=latex', shorten >=1pt, thick},
    mylabel/.style={text width=8em, text centered} 
}  
\node[mynode] (manufacturer) {Handeln zur Gefahrenabwehr durch};  
\node[below=2.0cm of manufacturer] (dummy) {}; 
\node[mynode, left=of dummy] (retailer1) {Realakte};  
\node[mynode, left=of retailer1] (retailer3) {Verwaltungsakte};  
\node[mynode, right=of dummy] (retailer2) {verwaltungsrechtliche Verträge};
\node[mynode, right=of retailer2] (retailer4) {ordnungsbehördliche Verordnungen};
\node[mynode, below=of retailer3] (retailer5) {Erlaubnisse};
% The text width of 7em forces the text to break into two lines.

\draw[myarrow] (manufacturer.south) -- ++(-.5,0) -- ++(0,-1) -|  (retailer1.north); 
\draw[myarrow] (manufacturer.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer2.north);
\draw[myarrow] (manufacturer.south) -- ++(-.5,0) -- ++(0,-1) -|  (retailer4.north); 
\draw[myarrow] (manufacturer.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer3.north);
\draw[myarrow] (retailer3.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer5.north);
\end{tikzpicture} 
\end{figure}

\end{document}

gefragt 08 Feb '15, 21:46

Tischa's gravatar image

Tischa
1.4k27102128
Akzeptiert-Rate: 15%

geschlossen 08 Feb '15, 22:08

saputello's gravatar image

saputello
11.1k154365

1

Eine nahezu identische Frage hatten wir bereits. Daher geschlossen.

(08 Feb '15, 22:09) saputello

Hast Recht, danke für den Link.

(08 Feb '15, 22:32) Tischa

Die Frage wurde aus folgenden Grund "Duplikat einer anderen Frage" geschlossen saputello 08 Feb '15, 22:08


Über text width kann man steuern wir breit die Node sein darf. Der TeX-Umbruchsalgorithmus macht den Rest… sofern die richtigen Trennmuster geladen sind, dazu braucht man babel. Wenn man seltsame zusammengesetzte Wörter verwendet wir z.B. ordnungsbehördliche sollte man mit "| die Wortfuge markieren, damit TeX dort trennen kann, also ordnungs"|behördliche.

Ohne Zusätze

Ich hab mir mal die Freiheit genommen die Farbe so zu verändern, dass man was lesen kann.

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenx}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}

\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}[node distance=0.3cm, auto] 
    \tikzset{
      mynode/.style={rectangle,rounded corners,draw, top color=white,
        bottom color=black!30,very thick, inner sep=.5em, minimum size=1em,
        align=center,text width=2.8cm},
      myarrow/.style={->, >=latex', shorten >=1pt, thick},
      mylabel/.style={text width=8em, text centered} 
    }  
    \node[mynode] (manufacturer) {Handeln zur Gefahrenabwehr durch};  
    \node[below=2.5cm of manufacturer] (dummy) {}; 
    \node[mynode, left=of dummy] (retailer1) {Realakte};  
    \node[mynode, left=of retailer1] (retailer3) {Verwaltungsakte};  
    \node[mynode, right=of dummy] (retailer2) {verwaltungs"|rechtliche Verträge};
    \node[mynode, right=of retailer2] (retailer4) {ordnungs"|behördliche Verordnungen};
    \node[mynode, below=of retailer3] (retailer5) {Erlaubnisse};

    \draw[myarrow] (manufacturer.south) -- ++(-.5,0) -- ++(0,-1) -|  (retailer1.north); 
    \draw[myarrow] (manufacturer.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer2.north);
    \draw[myarrow] (manufacturer.south) -- ++(-.5,0) -- ++(0,-1) -|  (retailer4.north); 
    \draw[myarrow] (manufacturer.south) -- ++(.5,0) -- ++(0,-1) -|  (retailer3.north);
    \draw[myarrow] (retailer3.south) -- ++(1.7,0) -- ++(0,-1.3) -|  (retailer5.south);
  \end{tikzpicture} 
\end{figure}

\end{document}

alt text

tree

Ein tree ist hier vermutlich eleganter.

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[utf8]{inputenx}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows,trees}

\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}[
    level distance=2cm,
    sibling distance=3.7cm,
    edge from parent fork down,
    edge from parent/.style={->,>=latex',thick,draw},
    every node/.style = {
      anchor=north,
      draw,top color=white,bottom color=black!30,
      rounded corners,very thick,
      inner sep=.5em,align=center,text width=2.8cm},
    ]
    \node {Handeln zur Gefahrenabwehr durch}
    child {node {Verwaltungsakte}
      child {node {Erlaubnisse}}}
    child {node {Realakte}}
    child {node {verwaltungs"|rechtliche Verträge}}
    child {node {ordnungs"|behördliche Verordnungen}};
    \end{tikzpicture} 
\end{figure}

\end{document}

alt text

graphsdrawing

Mit luatex kann man die graphdrawing Bibliothek von TikZ benutzen.

Open in Online-Editor
\documentclass{scrartcl}
\usepackage{fontspec,polyglossia}
\setmainlanguage{ngerman}
\usepackage{tikz}
\usetikzlibrary{arrows,calc,graphs,graphdrawing,trees}
\usegdlibrary{trees}

\tikzset{
  |-|/.style={
    to path={
      (\tikztostart) |- ($(\tikztostart.south)!.5!(\tikztotarget.north)$) -| (\tikztotarget)
      \tikztonodes
    }
  }
}

\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}
    \graph[
    tree layout,
    level distance=2.5cm,
    edges = {|-|,->,>=latex',thick,draw},
    nodes = {
      anchor=north,
      draw,top color=white,bottom color=black!30,
      rounded corners,very thick,
      inner sep=.5em,align=center,text width=2.8cm},
    ] { 
      Handeln zur Gefahrenabwehr durch -> {
        Verwaltungsakte -> Erlaubnisse,
        Realakte,
        verwaltungsrechtliche Verträge,
        ordnungsbehördliche Verordnungen
      }
    };
    \end{tikzpicture} 
\end{figure}

\end{document}

alt text

Permanenter link

beantwortet 08 Feb '15, 22:04

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 09 Feb '15, 00:23

Danke @Henri. Kannst Du mir noch kurz helfen, die nodes bündig zur ersten Zeile zu setzen? Wie Du siehst, hab ich auch mit den Pfeilen noch Schwierigkeiten.

(08 Feb '15, 22:33) Tischa

@Tischa Siehe meine aktualisierte Antwort. Ich hab meine urpsrüngliche Antwort nicht angepasst. Wenn dies doch gewünscht ist, bitte kommentieren.

(09 Feb '15, 00:25) Henri

@Henri. Vielen, vielen Dank für deine tollen Vorschläge. Sieht gut aus. Der sichere Umgang mit Nodes ist das Nächste, das ich mit Latex angehen muß. Dank fr Deine Hilfe.

(09 Feb '15, 01:19) Tischa

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:

×728
×76
×44

gestellte Frage: 08 Feb '15, 21:46

Frage wurde gesehen: 10,709 Mal

zuletzt geändert: 09 Feb '15, 01:19