
Tenho tentado fazer essa árvore com o pacote tikz-qtree. Tenho várias partes, mas não consigo traçar a linha pontilhada.
\documentclass[a4paper,12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts, amsmath, amsthm, amssymb}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[scale=1.2,every node/.style={align=center}]
\tikzset{level distance=50pt,sibling distance=5pt}
\Tree [.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ $\bullet$\\$\gamma:\rho^c$
]
[.$\beta$:$\sigma^a$ $\bullet$\\$\delta:\vartheta^c$ ] ]
\end{tikzpicture}
\end{document}
Você poderia fazer aquela linha pontilhada?
Responder1
Você pode usar tikz
para criar nós na árvore com as opções de sua preferência. Por exemplo, você poderia criar um nó com um rótulo com borda pontilhada e cantos arredondados como este:
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
No entanto, eu recomendaria forest
que oferece todo o poder do TikZ e muito mais. Se desejar, você pode colocar as linhas finais em um nó e adicionar os círculos automaticamente pelo Forest com as opções que desejar, adicionando a borda pontilhada etc. Por exemplo, você pode usar o código a seguir para o preâmbulo da árvore.
for tree={
math content,
Por padrão, os nós possuem conteúdo matemático.
parent anchor=children,
child anchor=parent,
Arrume um pouco as coisas.
},
before typesetting nodes={
Adie isso até que tudo esteja pronto para funcionar.
where n children=0{
Apenas para os nós terminais.
no edge,
Não desenhe uma vantagem para eles.
draw,
Desenhe uma borda para eles.
densely dotted,
Faça essa borda densamente pontilhada.
content/.wrap value={\strut#1},
Deixe-os todos na mesma altura.
rounded corners,
Arredonde os cantos.
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
Insira outro nó antes do nó terminal, que é apenas um pequeno círculo preenchido. Também não desenhe uma aresta para esse nó. o nó é afirmado replace by
fazendo o original com o substituto e depois append
fazendo o original. Fazemos isso mais tarde porque, caso contrário, os nós originais não serão todos salvos e poderemos perder coisas se tentarmos movê-los.
}{}
Não faça nada com nós não terminais.
}
Fim das coisas atrasadas.
Isso nos permite especificar a árvore em si de forma bastante concisa e sem mudar para o modo matemático o tempo todo.
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
Montando isso,
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
produz
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{tikz-qtree}
\usepackage{forest}
\begin{document}
\begin{tikzpicture}
[
scale=1.2,
every node/.style={align=center},
level distance=50pt,
sibling distance=5pt,
]
\Tree
[.{$\alpha(\beta)$}:$\tau^a$
[.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
]
[.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
]
]
\end{tikzpicture}
\begin{forest}
for tree={
math content,
parent anchor=children,
child anchor=parent,
},
before typesetting nodes={
where n children=0{
no edge,
draw,
densely dotted,
content/.wrap value={\strut#1},
rounded corners,
replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
}{}
}
[\alpha(\beta):\tau^a
[{\alpha:\langle\sigma^a,\tau^a\rangle}
[\gamma:\rho^c
]
]
[\beta:\sigma^a
[\delta:\vartheta^c
]
]
]
\end{forest}
\end{document}