
Estou tentando construir um tizktree que deve se parecer com o seguinte:
A partir de agora meu código látex é dado por:
\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}
O problema é que esse código está fazendo com que alguns nós se sobreponham e não tenho certeza de como rotular as setas com P^h e P^l.
Qualquer ajuda seria apreciada.
Responder1
Se forest
for uma opção, ajustará automaticamente o layout da árvore para acomodar os nós. Também permite que as árvores sejam especificadas de forma muito concisa e é muito personalizável em termos de aparência da árvore. Por exemplo:
\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}
EDITAR
Um comentário perguntou como fazer sem o nó raiz. Qualquer árvore deve ter uma raiz, porém pode ser uma árvore invisível que não ocupa espaço. Forest oferece a phantom
opção para este tipo de caso:
\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}