
Ich versuche, einen Tizktree zu erstellen, der wie folgt aussehen soll:
Ab sofort lautet mein Latex-Code:
\begin{tikzpicture}
\node {r} [grow'=right]
child {node {$C^h$}
child {node {$C^h$} }
child {node {$C^l$}}
}
child {node {$C^l$}
child {node {$C^h$}}
child {node {$C^l$}}
};
\end{tikzpicture}
Das Problem besteht darin, dass dieser Code zu einer Überlappung einiger Knoten führt und ich nicht sicher bin, wie ich die Pfeile mit P^h und P^l beschriften soll.
Jede Hilfe wäre willkommen.
Antwort1
Wenn forest
diese Option aktiviert ist, wird das Layout des Baums automatisch an die Knoten angepasst. Außerdem können Bäume sehr präzise angegeben werden und das Erscheinungsbild des Baums kann individuell angepasst werden. Beispiel:
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
grow'=0,
math content,
tier/.wrap pgfmath arg={tier #1}{level()},
l sep+=5mm,
},
before typesetting nodes={
for tree={
if n=1{
edge label/.wrap value={node [midway, font=\scriptsize, above] {$#1$}}
}{
edge label/.wrap value={node [midway, font=\scriptsize, anchor=north] {$#1$}}
}
}
}
% now to specify the tree itself - as you see, the syntax is quite concise
[r
[C^h, edge label=P^h
[C^h, edge label=P^h]
[C^l, edge label=P^l]
]
[C^l, edge label=P^l
[C^h, edge label=P^h]
[C^l, edge label=P^l]
]
]
\end{forest}
\end{document}
BEARBEITEN
In einem Kommentar wurde gefragt, wie man ohne den Stammknoten auskommt. Jeder Baum muss eine Wurzel haben, es kann jedoch eine unsichtbare sein, die keinen Platz einnimmt. Forest bietet phantom
für diesen Fall eine Option:
\begin{forest}
for tree={
grow'=0,
math content,
tier/.wrap pgfmath arg={tier #1}{level()},
l sep+=5mm,
},
before typesetting nodes={
for tree={
if n=1{
edge label/.wrap value={node [midway, font=\scriptsize, above] {$#1$}}
}{
edge label/.wrap value={node [midway, font=\scriptsize, anchor=north] {$#1$}}
}
}
}
[, phantom
[C^h, edge label=P^h
[C^h, edge label=P^h]
[C^l, edge label=P^l]
]
[C^l, edge label=P^l
[C^h, edge label=P^h]
[C^l, edge label=P^l]
]
]
\end{forest}