TikZ에서 나무의 나무 만들기

TikZ에서 나무의 나무 만들기

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를 중첩하고 있습니다.피해야 할 것. 여기서는 내부 tikzpictures를 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}

여기에 이미지 설명을 입력하세요

관련 정보