Eu gostaria de criar uma árvore no TikZcujos nós são as próprias árvores.
Eu tenho o seguinte trecho de código:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\tikzset{%
every picture/.append style={
grow'=up,
sibling distance=.5em
}
}
\begin{document}
\begin{tikzpicture}[baseline=-.3em]
\node[draw] {
\begin{tikzpicture}
\Tree
[. $+$
\node[draw]{
\begin{tikzpicture}
\Tree
[. $+$ [. $+$ $a$ $b$ ]
[. $+$ $c$ $d$ ] ]
\end{tikzpicture}
};
\node[draw]{
\begin{tikzpicture}
\Tree
[. $+$ $e$
$f$ ]
\end{tikzpicture}
};
]
\end{tikzpicture}
};
\end{tikzpicture}
\end{document}
O problema é que os nós da árvore externa não estão conectados corretamente:
Acho que a razão é que o qtree de alguma forma "ainda vê" os nós internos. Existe uma maneira de permitir que o TikZ "desveja" os nós internos? Algo como o oposto de "lembrar da imagem"?
Sempre posso exportar os nós internos como um PDF separado e depois incluí-lo novamente, mas estava procurando uma opção mais elegante, se possível.
Responder1
Você está aninhando tikzpicture
,que deve ser evitado. Aqui você pode armazenar os tikzpicture
arquivos internos \savebox
.
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tikz-qtree}
\tikzset{%
every picture/.append style={
grow'=up,
sibling distance=.5em
}
}
\newsavebox\TreeA
\newsavebox\TreeB
\begin{document}
\savebox\TreeA{\begin{tikzpicture}
\Tree
[. $+$ [. $+$ $a$ $b$ ]
[. $+$ $c$ $d$ ] ]
\end{tikzpicture}
}
\savebox\TreeB{\begin{tikzpicture}
\Tree
[. $+$ $e$
$f$ ]
\end{tikzpicture}
}
\begin{tikzpicture}[baseline=-.3em]
\node[draw] {
\begin{tikzpicture}
\Tree
[. $+$
\node[draw]{\usebox\TreeA};
\node[draw]{\usebox\TreeB};
]
\end{tikzpicture}
};
\end{tikzpicture}
\end{document}