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를 es에 저장할 수 있습니다 \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}