Wie bekomme ich so ein Schema mit ordentlichen Abständen, zentrierten Texten und GLEICH großen Boxen in TikZ gesetzt?

BILD

Mein erster Absatz war das über "Trees" zu machen. Dabei kam aber nur Murks raus. Sprich verschiedene Boxen, Abstände die nicht gepasst haben etc. Ich suche nach einer Möglichkeit solche Übersichten generell schnell & automatiersiert zu erstellen... kann jemand helfen? Danke!!

gefragt 07 Sep '14, 10:17

wiewowas's gravatar image

wiewowas
28921831
Akzeptiert: 80%

bearbeitet 08 Sep '14, 12:37

Ijon%20Tichy's gravatar image

Ijon Tichy
4.4k618


Hier sind mal noch zwei weitere Vorschläge. Die Breite der child Nodes ist dabei immer gleich text width zuzüglich dem doppelten des inner sep. Die Höhe beträgt mindestens minimum height, d.h. minimum height muss von Hand so gewählt werden, dass auch der längste Inhalt in die Box passt.

Als Baum

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
    nodes={draw,fill=red!10!green!55!blue!30,rounded corners=8pt,inner sep=.5em,
      font=\bfseries\sffamily,align=center},
    every child node/.style={minimum height=1.8cm,text width=2.5cm},
    level distance=2.5cm,
    sibling distance=3.2cm,
    edge from parent path={
      (\tikzparentnode\tikzparentanchor) --+(0,-1.4cm)-| (\tikzchildnode\tikzchildanchor)}
  ]
  \node[node font=\Large,inner sep=1em]{Fügetechnologien}
    child{node{Mechanisches Fügen}}
    child{node{Fügen durch Umformen}}
    child{node{Thermisches Fügen}}
    child{node{Kleben}}
    child{node{Hybridfügen}}
  ;
\end{tikzpicture}
\end{document}

alt text

Als Matrix

Open in writeLaTeX
\documentclass[margin=10pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}[
    treebox/.style={draw,fill=red!10!green!55!blue!30,rounded corners=8pt,inner sep=.5em,
      font=\bfseries\sffamily,align=center}
  ]
  \node[treebox,node font=\large,inner sep=1em](root){Fügetechnologien};
  \matrix(children)[
      matrix of nodes,
      anchor=north,inner sep=0pt,
      column sep=10pt,
      nodes={treebox,minimum height=1.8cm,text width=2.5cm,anchor=center}
    ]at([yshift=-1cm]root.south){
      Mechanisches Fügen&
      Fügen durch Umformen&
      Thermisches Fügen&
      Kleben&
      Hybridfügen\\
    };
  \foreach \i in {1,...,5}
    \draw(root.south)--+(0,-.75)-|(children-1-\i.north);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Sep '14, 14:42

esdd's gravatar image

esdd
14.2k53251

Optimal! Genau so habe ich das gesucht. Vorallem weil man damit ähnliche Übersichten im Handumrehen erstellen kann =)

(07 Sep '14, 15:22) wiewowas

Über die beiden Optionen text width und minimum size lässt sich die Größe der Nodes leicht fixieren. Nodes die exorbitant viel Text beinhalten wachsen aber dennoch über die gegebenen Parameter hinaus, damit es nicht komisch aussieht (eine Option maximum size gibt es übrigens nicht).

Den |-| Pfad habe ich von TeX.SX: Vertical and horizontal lines in pgf-tikz

Von Hand mit Nodes

Open in writeLaTeX
\documentclass[landscape]{article}
\usepackage[utf8]{inputenx}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}[
  every node/.style={draw,fill=cyan,rounded corners,minimum size=8em,text width=8em,align=center},
  node distance=1em,
  |-|/.style={
    to path={
      (\tikztostart) |- ($(\tikztostart)!.5!(\tikztotarget)$) -| (\tikztotarget)
      \tikztonodes
    }
  },
  ]
  \node (root) {Fügetechnologien};
  \node[below=of root] (child1) {Thermisches Fügen};
  \node[right=of child1] (child2r) {Kleben};
  \node[left=of child1] (child2l) {Fügen durch Umformen};
  \node[right=of child2r] (child3r) {Hybridfügen};
  \node[left=of child2l] (child3l) {Mechanisches Fügen};
  \foreach \p in {child1,child2r,child2l,child3r,child3l} {
    \draw (root) to[|-|] (\p);
  }
\end{tikzpicture}
\end{document}

alt text

Mit graphdrawing

Benötigt LuaLaTeX

Open in writeLaTeX
\documentclass[landscape]{article}
\usepackage{fontspec,tikz}
\usetikzlibrary{graphs,graphdrawing,calc}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[
  every node/.style={draw,fill=cyan,rounded corners,minimum size=8em,text width=8em,align=center},
  |-|/.style={
    to path={
      (\tikztostart) |- ($(\tikztostart)!.5!(\tikztotarget)$) -| (\tikztotarget)
      \tikztonodes
    }
  },
  ]
  \graph [tree layout] {
    Fügetechnologien --[|-|] {
      Mechanisches Fügen,
      Fügen durch Umformen,
      Thermisches Fügen,
      Kleben,
      Hybridfügen
    }
  };
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Sep '14, 10:48

Henri's gravatar image

Henri
10.0k31730

bearbeitet 07 Sep '14, 10:58

Danke! Die andere Antwort trifft es etwas besser =)

(07 Sep '14, 15:20) wiewowas
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
×6
×5

Frage gestellt: 07 Sep '14, 10:17

Frage wurde angeschaut: 4,669 Mal

Zuletzt aktualisiert: 08 Sep '14, 12:37