Latex 中的场景树

Latex 中的场景树

我知道这有点乏味,但是有人可以为我写出下面树的乳胶代码吗?

以下是我的开始

\documentclass{article}
\usepackage{amsmath}
\usepackage{forest}
\tikzset{
  dot/.style={circle,draw,inner sep=1.2,fill=black},
  }
 \begin{document}
 \begin{forest}
 [ ,name=a,for tree={s sep=60pt,l sep=2cm,dot,grow=0},
   [ ,name=b,edge 
      [ ,name=c, ]
      [,name=d,]    
   ]
  [ ,name=e, edge
     [ ,name=f,]
     [,name=g, ]
     [ ,name=h,]
  ]
]
\end{forest}
\end{document}

我尝试过多次在此基础上构建我想要的树,但我无法得到正确的树枝。谢谢!在此处输入图片描述

答案1

确实,forest树枝有点难以正确处理,我建议您下次先尝试构建下部,然后复制并粘贴以制作上部(应用更改以适合您所需的输出)。

由于您使用节点来表示点,因此您无法像平常一样输入文本。如果您这样做,结果如下:

图1

因此,为了解决这个问题,您可以使用标签命令,其工作方式如下(\cdots 是点的命令):

[ ,name=g, label={right:$\cdots$}] 

因此标签放在右边,因为这片森林生长在东边。

输出

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{amsmath}
\usepackage{forest}
\tikzset{
  dot/.style={circle,draw,inner sep=1.2,fill=black},
  }
 \begin{document}
 \begin{forest}
    for tree={s sep=60pt,l sep=2cm,dot,grow=0}
%
[ ,name=root
    [ ,name=below
    [ ,name=a
        [ ,name=c, label={right:$\cdots$}] 
        [ ,name=d, label={right:$\cdots$}] 
        [ ,name=e, label={right:$\cdots$}] 
    ]
    [ ,name=f
        [ ,name=g, label={right:$\cdots$}] 
        [ ,name=h, label={right:$\cdots$}] 
    ] ]
    [ ,name=above
    [ ,name=i
        [ ,name=k, label={right:$\cdots$}] 
        [ ,name=l, label={right:$\cdots$}] 
    ] 
    [ ,name=m
        [ ,name=n, label={right:$\cdots$}] 
        [ ,name=o, label={right:$\cdots$}] 
        [ ,name=p, label={right:$\cdots$}] 
    ] ]
]
\end{forest}
\end{document}

答案2

如果您更喜欢少输入一些内容 ;),您可以forest自动标记最终节点并自动命名所有节点。为了更容易确定哪个名称与哪个节点匹配,您可以使用 TikZforeach循环临时标记它们。

\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest}
\tikzset{
  dot/.style={circle,draw,inner sep=1.2,fill=black},
}
\begin{document}
  \newcounter{mynode}
  \setcounter{mynode}{0}
  \renewcommand*\themynode{\alph{mynode}}
  \begin{forest}
    for tree={
      if n children=0{label=right:$\dots$}{},
      grow=0,
      dot,
      fit=band,
      TeX={\stepcounter{mynode}},
      name/.expanded={\themynode},
      s sep+=5pt
    }
    [
      [
        [
          [ ]
          [ ]
          [ ]
        ]
        [
            [ ]
            [ ]
        ]
      ]
      [
        [
            [ ]
            [ ]
        ]
        [
          [ ]
          [ ]
          [ ]
        ]
      ]
    ]
    \foreach \i in {a,...,q} {\node [text=red, text opacity=.25, font=\tiny, yshift=-5pt] at (\i) {\i};};
  \end{forest}
\end{document}

自动树

一旦您完成了所有事情,您可以删除或注释掉标签行。

去标签树

相关内容