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

Giovario's gravatar image

Giovario
41311422
Akzeptiert: 76%

bearbeitet 03 Feb, 03:51

cis's gravatar image

cis
6.4k11141232


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, 02:25

cis's gravatar image

cis
6.4k11141232

bearbeitet 05 Feb, 04:30

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

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:

×561

Frage gestellt: 02 Feb, 15:23

Frage wurde angeschaut: 288 Mal

Zuletzt aktualisiert: 05 Feb, 04:30