我正在尝试使用 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}
答案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}