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, 15:46

Tischa's gravatar image

Tischa
92531953
Akzeptiert: 71%

geschlossen 08 Feb '15, 16:08

saputello's gravatar image

saputello
18.4k22352

1

Eine nahezu identische Frage hatten wir bereits. Daher geschlossen.

(08 Feb '15, 16:09) saputello

Hast Recht, danke für den Link.

(08 Feb '15, 16:32) Tischa

Die Frage wurde aus folgenden Grund geschlossen: "Duplikat einer anderen Frage" durch saputello 08 Feb '15, 16: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, 16:04

Henri's gravatar image

Henri
10.0k31730

bearbeitet 08 Feb '15, 18: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, 16:33) Tischa

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

(08 Feb '15, 18: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.

(08 Feb '15, 19:19) Tischa

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
×31

Frage gestellt: 08 Feb '15, 15:46

Frage wurde angeschaut: 2,394 Mal

Zuletzt aktualisiert: 08 Feb '15, 19:19