Я хотел бы создать дерево в TikZузлы которых сами являются деревьями.
У меня есть следующий фрагмент кода:
\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}
Проблема в том, что узлы внешнего дерева соединены неправильно:
Я думаю, причина в том, что qtree каким-то образом "все еще видит" внутренние узлы. Есть ли способ позволить TikZ "развидеть" внутренние узлы? Что-то вроде противоположности "запомнить картинку"?
Я всегда могу экспортировать внутренние узлы в отдельный PDF-файл, а затем снова включить его, но я искал более элегантный вариант, если это возможно.
решение1
Вы вкладываете tikzpicture
s,чего следует избегать. Здесь вы можете хранить внутренние tikzpicture
s в \savebox
es.
\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}