我使用 Geopharhttp://sourceforge.net/projects/geophar/有了这个程序,我可以轻松制作一棵树。使用代码
||Tirage 1|Tirage 2|Tirage 3
omega
>A:0,7
>>B:0,2
>>C:0,8
>&A:0,3
>>E:0,1
>>>F
>>>G
>>>H
>>&E:0,9
我怎样才能编写简单的代码tree package
或forest package
类似上面的代码?
答案1
forest
qtree
使用括号表示法来指定树,我认为这是非常标准的(或标准语法的变体)。我发现这相当直观 -例如,比 的版本直观得多。
有关语法的介绍forest
和包的一些基本用法,请参阅我的答案它试图提供一种基本的入门指导。
在下面的例子中,请注意树的规范非常简洁。缩进使得从代码中“读取”树结构更加容易。
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
/tikz/every node/.append style={font=\sffamily},
my edge/.style={%
if n=1{
edge label={node [midway, above, font=\scriptsize, sloped, anchor=south] {#1}},
}{
edge label={node [midway, below, font=\scriptsize, sloped, anchor=north] {#1}},
}
},
toss/.style={
before drawing tree={
tikz/.wrap pgfmath arg={\node at ([yshift=10pt].center |- h.north) {Tirage ##1};}{level()},
}
},
tosses/.style={
for ancestors'={if level=0{}{toss}},
before packing={
!1.tikz={\node at ([yshift=10pt].center |- h.north) {Outcomes};}
}
},
for tree={
grow'=0,
parent anchor=east,
child anchor=west,
anchor=west,
tier/.wrap pgfmath arg={tier #1}{level()},
l sep+=20pt,
font=\sffamily,
math content,
},
[\Omega
[A, my edge=0.7
[B, name=h, my edge=0.8]
[C, my edge=0.2]
]
[\overline{A}, my edge=0.3
[E, my edge=0.1
[F]
[G]
[H, tosses]
]
[\overline{E}, my edge=0.9
]
]
]
\end{forest}
\end{document}