使用带边标签的森林的水平概率树

使用带边标签的森林的水平概率树

我正在尝试使用 Forest 包制作如下图所示的水平概率树。 在此处输入图片描述

目前,我可以使用以下代码获取常规森林树

\usepackage{forest}
\begin{document}
\begin{forest}
    [A
        [B[D][E]]
        [C[F][G]]
    ]
\end{forest}
\end{document}

我还知道您可以通过指定以下方式手动添加边缘标签:

[D;edge label = {node[midway,above]{$\frac{3}{5}$}}]

但是,由于我会经常制作这些树,我希望边缘标签能够自动放置在上方或下方。此外,每个节点可能有两个以上的分支,其中边缘标签应默认位于顶部。

我见过如下代码:

[D;$\frac{3}{5}$]

但我不太清楚如何实现这一点。

答案1

请提供可编译的代码,并确保您的示例演示了问题。例如,如果您需要具有超过 2 个分支的案例,则需要提供一个示例,其中某些案例具有超过 2 个分支。由于您的代码不完整,因此很难看出您是否有一棵树朝着您想要的方向生长,或者这对您来说是否也是一个问题。通常,这一切都有点不明确。

下面是一个基于您提供的代码的示例,它是根据您的要求指定的语法的修改版本(我认为在这里选择分号并不好,因为分号在 Ti 中无处不在Z 的语法)和目标图片。根据个人喜好进行调整。

\documentclass[border=10pt]{standalone}
\usepackage{forest}
\forestset{
  ptree/.style={
    for tree={
      grow'=0,
      parent anchor=children,
      child anchor=parent,
    },
    before typesetting nodes={
      for tree={
        split option={content}{:}{content, my edge label},
      },
    },
  },
  my edge label/.style={
    if={
      > O_= {n'}{1}
    }{
      edge label={node [midway, below, font=\footnotesize] {$\frac#1$} }
    }{
      edge label={node [midway, above, font=\footnotesize] {$\frac#1$} }
    },
  }
}
\begin{document}
\begin{forest}
  ptree
  [A
    [B:12
    [D:{3}{5}][E:{2}{5}]
    ]
    [C:12
      [F:{1}{4}][G:{3}{4}]
    ]
  ]
\end{forest}
\end{document}

<code>ptree</code> 结果

答案2

Peraphs 这个替代解决方案是否适合您?

在此处输入图片描述

\documentclass[a4paper,12pt]{article}

\usepackage{tikz-cd}
\usepackage{mathtools}

\begin{document}
\begin{tikzcd}
 &  & D \\
 & B \arrow[ru, "\dfrac35", no head] \arrow[r, "\tfrac25"', no head] & E \\
A \arrow[ru, no head] \arrow[rd, "\dfrac12"', no head] &  & F \\
 & C \arrow[ru, "\dfrac14", no head] \arrow[rd, "\dfrac34"', no head] &  \\
 &  & G
\end{tikzcd}
\end{document}

相关内容