在 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應該避免哪些。這裡你可以將內部的tikzpictures 儲存在\saveboxes 中。

\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}

在此輸入影像描述

相關內容