Hallo,

ich erstelle mir gerade mit tikz einen Baum. Dabei möchte ich die childnodes links und rechts anordnen. Jedoch bekomme ich probleme bezüglich meiner gesetzten Anker. Könnt ihr mir da weiterhelfen?

Öffne in Overleaf
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usetikzlibrary{calc}
\tikzset{
  my edge from parent fork down/.style={
    edge from parent path={
      (\tikzparentnode\tikzparentanchor)
      -- ($(\tikzparentnode.south)!0.5!(\tikzchildnode.north-|\tikzparentnode.south)$)
      -| (\tikzchildnode\tikzchildanchor)
    }}
  }

\begin{document}

\begin{tikzpicture}[
    nodes={
        draw, 
        rounded corners=8pt,
    },
    root/.style={%
        text centered, 
        text width=7cm, 
        minimum height=2cm,
        font=\LARGE\bfseries,
        fill=gray!50,},
    first/.style={%
        text centered, 
        text width=7cm,
        minimum height=2cm,
        anchor=north,
        fill=gray!30,
        font=\large\bfseries,},
    second/.style={%
        text centered, 
        text width=6cm,
        minimum height=2cm,
        anchor=north,
        fill=gray!30,
        font=\large,},
    third/.style={%
        anchor=west,
        grow=down, 
        xshift=1.1cm, % Horizontal position of the child node
        text centered, 
        text width=4cm,
        minimum height=1cm,
        edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}},
    level1/.style ={level distance=2cm},
    level2/.style ={level distance=4cm},
    level3/.style ={level distance=6cm},
    level4/.style ={level distance=8cm},
    level5/.style ={level distance=10cm},
    level 1/.style={sibling distance=13cm,level distance=3cm},
]
    % root
    \node[anchor=south,root]{Gesenkschmieden}
    [my edge from parent fork down]
    % Ebene 1 und 2
    child{node [first] {Gesenkschmieden\\mit teilweise\\umschlossendem Werkstück}
        child[third,level1] {node {Formrecken}}
        child[third,level2] {node {Rollen (Reckstauchen)}}
        child[third,level3] {node {Formrundkneten}}
        child[third,left, xshift=-2cm, level1] {node {Schließen im Gesenk}}
        child[third,left, xshift=-2cm, level2] {node {Formstauchen}}
        }
    child{node [first] {Gesenkschmieden\\mit ganz\\umschlossendem Werkstück}
        child[third,left, xshift=-2cm, level1] {node {Formpressen mit Grat}}
        child[third,level1] {node {Formpressen ohne Grat}}
        child[third,left, xshift=-2cm, level2] {node {Prägen im Gesenk}}
        child[third,level2] {node {Anstauchen im Gesenk}}
        }
    ;
\end{tikzpicture}
\end{document}

alt text

gefragt 02 Feb '18, 21:23

Giovario's gravatar image

Giovario
413132126
Akzeptiert-Rate: 0%

bearbeitet 03 Feb '18, 09:51

cis's gravatar image

cis
9.5k93459491


Ich weiß, dass es nicht der klassischen Konstruktion eines Baumes entspricht. Ich bin aber ein Fan davon, auch bei Baumdigrammen, die TikZ-Bibliothek matrix zu verwenden.

Das ist m.E. weit übersichtlicher und Abstände, Layout usw. sind einfacher zu manipulieren.

Damit die Matrix selbst übersichtlich bleibt, empfehle ich immer, dort keine ellenlangen Texte reinzuschreiben, sondern die Inhalte in sinnvoll benannten \def- oder \newcommand-Anweisungen abzuspreichern.

Man kann sich zunächst eine Schablone bauen, hier etwa

Öffne in Overleaf
A & B & C &  D &  E & F & G \\
A & B & C &  D &  E & F & G \\
A & B & C &  D &  E & F & G \\
A & B & C &  D &  E & F & G \\
A & B & C &  D &  E & F & G \\

und beim Ausfüllen daran orientieren. Im folgenden Beispiel sieht das dann bei mir so aus

Öffne in Overleaf
           &       &          & \Par  &          &           &           \\
           & \ParL &          &       &          & \ParR     &            \\
\ChLiL     &       & \ChLiR   &       & \ChRiL   &           & \ChRiR     \\
\ChLiiL    &       & \ChLiiR  &       & \ChRiiL  &           & \ChRiiR    \\
           &       & \ChLiiiR &       &          &           &             \\
%A & B & C &  D &  E    & F & G \\

Hier mal als Workaround:

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[german]{babel}
\usepackage{tikz}
  \usetikzlibrary{matrix}

\begin{document}

\begin{tikzpicture}[
commonstyle/.style={align=center, rectangle, draw, rounded corners},
parentstyle/.style={commonstyle, fill=lightgray, minimum width=12em, minimum height=5em, font=\bfseries},
childstyle/.style={commonstyle,  fill=none, minimum width=8em, minimum height=2em,}
]

% Inhalte
\def\Par{|[parentstyle]| Gesenkschmieden}
\def\ParL{|[parentstyle]| {Gesenkschmieden \\ mit teilweise \\ umschlossenem Werkstück}}
\def\ParR{|[parentstyle]| {Gesenkschmieden \\ mit ganz \\ umschlossenem Werkstück}}
\def\ChLiL{|[childstyle]| Bezeichnung}
\def\ChLiR{|[childstyle]| Bezeichnung}
\def\ChLiiL{|[childstyle]| Bezeichnung}
\def\ChLiiR{|[childstyle]| Bezeichnung}
\def\ChLiiiR{|[childstyle]| Bezeichnung}

\def\ChRiL{|[childstyle]| Bezeichnung}
\def\ChRiR{|[childstyle]| Bezeichnung}
\def\ChRiiL{|[childstyle]| Bezeichnung}
\def\ChRiiR{|[childstyle]| Bezeichnung}

\matrix[matrix of nodes, nodes in empty cells,
font=\footnotesize,
nodes={align=center, text width=8em, anchor=center},
inner sep=5pt, 
row sep=2em, 
%column sep=1em, 
] (m)
{
           &       &          & \Par  &          &           &           \\
           & \ParL &          &       &          & \ParR     &            \\
\ChLiL     &       & \ChLiR   &       & \ChRiL   &           & \ChRiR     \\
\ChLiiL    &       & \ChLiiR  &       & \ChRiiL  &           & \ChRiiR    \\
           &       & \ChLiiiR &       &          &           &             \\
%A & B & C &  D &  E    & F & G \\
};
% Linien
\draw 
(m-1-4) -| (m-2-2)
(m-1-4) -| (m-2-6)
%
(m-2-2) -- (m-5-2.center)
%
(m-3-1) -- (m-3-3)
(m-4-1) -- (m-4-3)
(m-5-2.center) -- (m-5-3)
%
(m-2-6) -- (m-4-6.center)
%
(m-3-5) -- (m-3-7)
(m-4-5) -- (m-4-7)
;
\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 03 Feb '18, 08:25

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 05 Feb '18, 10:30

Deine Antwort
Vorschau umschalten

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:

×730

gestellte Frage: 02 Feb '18, 21:23

Frage wurde gesehen: 5,365 Mal

zuletzt geändert: 05 Feb '18, 10:30