正确分布 tikz 树节点

正确分布 tikz 树节点

在绘制以通用方式声明的开花树的过程中,出现了问题。请帮我分离中间节点并在每个节点上放置带边框的框。

\begin{tikzpicture}[text width=5cm, align=flush center,node distance=70mm, level 1/.style={sibling distance =30 mm}, level 2/.style={sibling distance =30 mm}, level 3/.style={sibling distance =30 mm}]
    \node{Static}
        child { node[color=red] {Node1}}
        child { 
            node{Static}
            child[color=brown] { 
            node {Node2}
            node[color=green]{dynamic}
            child[color=brown] { node {Node3}}
            child[color=gray] { node {Rest}} 
            }
        }
            ;
\end{tikzpicture}

树

答案1

我想向你推荐强大的forest包:它建立在 TikZ 之上,并提供了更清晰、更简短的语法(以及许多其他有用的功能)。

这里有两个版本的代码:第一个版本使用你的 TikZ 树方法,第二个版本使用forest

\documentclass{article}
\usepackage{forest}
\usetikzlibrary{trees}

\begin{document}

\begin{tikzpicture}[
  every node/.style={draw,align=center}, 
  node distance=70mm, 
  level 1/.style={sibling distance =30 mm}, 
  level 2/.style={sibling distance =30 mm}, 
  level 3/.style={sibling distance =30 mm}
]
\node{Static}
        child { node[color=red] {Node1}}
        child { 
            node{Static}
            child[color=brown] { node {Node2}}
            child {
              node[color=green]{dynamic}
                child[color=brown] { node {Node3}}
                child[color=gray] { node {Rest}} 
            }
        }
            ;
\end{tikzpicture}\par\bigskip

\begin{forest}
for tree={
  draw,
  s sep=20mm
}
[Static
  [Node1,red
  ]
  [Static
    [Node2,brown]
    [Dynamic,green
        [Node3,brown]
        [Rest,gray]
    ]
  ]
]
\end{forest}

\end{document}

结果:

在此处输入图片描述

相关内容