如何使用 TikZ 将子节点添加到先前声明的节点?

如何使用 TikZ 将子节点添加到先前声明的节点?

这是一个简单的 TikZ 树:

\begin{tikzpicture}
  \node {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };
\end{tikzpicture}

在此示例中,子项被附加到节点。如何将 children( child) 附加到 node在稍后的声明中?

\begin{tikzpicture}
  \node (root) {root}; % declare root

  % do something else

  ... % reference root node and attach children to it
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node {child}}
    };
\end{tikzpicture}

我想这样做是因为 node是在循环中创建的。

答案1

好的,我明白了,至少我认为我明白了。以下是建议:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

  % Create first node which is the fake tree root node  
  \node (root) {root};

  % Do whatever you want

  % Call back your fake root node and place your real tree node on it
  % using \phantom to exactly copy the fake one
  
  \node at (root) {\phantom{root}}
        child   {   node {left}}
        child   {   node {right}
                    child {node {child 1}}
                    child {node {child 2}}
                };
\end{tikzpicture}

\end{document}

生成的图像相同,所以我没有添加任何内容。
所有这些,只要您将所有内容都放入相同的 中即可tikzpicture

答案2

我不确定你到底想要实现什么,但你始终可以命名节点以便以后引用它们,如下所示:

\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}

  \node (root) {root}
    child {node {left}}
    child {node {right}
      child {node {child}}
      child {node (one) {child}}
    };
    
  \draw[red] (one) to [bend right=60] (root);

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容