如何使用 Geophar 等简单命令创建一棵树(森林)?

如何使用 Geophar 等简单命令创建一棵树(森林)?

我使用 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 packageforest package类似上面的代码?

答案1

forestqtree使用括号表示法来指定树,我认为这是非常标准的(或标准语法的变体)。我发现这相当直观 -例如,比 的版本直观得多。

有关语法的介绍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}

滴管

相关内容