編集

編集

次のような tizktree を構築しようとしています。

ここに画像の説明を入力してください

現時点では、私の LaTeX コードは次のようになります。

\begin{tikzpicture}
\node {r} [grow'=right]
child {node {$C^h$}  
child {node {$C^h$} }
child {node {$C^l$}}
}
child {node {$C^l$}
child {node {$C^h$}}
child {node {$C^l$}}
};
\end{tikzpicture}

問題は、このコードによって一部のノードが重複してしまい、矢印に P^h と P^l のラベルを付ける方法がわからないことです。

ご協力いただければ幸いです。

答え1

がオプションの場合forest、ノードに合わせてツリーのレイアウトが自動的に調整されます。また、ツリーを非常に簡潔に指定でき、ツリーの外観を非常にカスタマイズできます。例:

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
  for tree={
    grow'=0,
    math content,
    tier/.wrap pgfmath arg={tier #1}{level()},
    l sep+=5mm,
  },
  before typesetting nodes={
    for tree={
      if n=1{
        edge label/.wrap value={node [midway, font=\scriptsize, above] {$#1$}}
      }{
        edge label/.wrap value={node [midway, font=\scriptsize, anchor=north] {$#1$}}
      }
    }
  }
  % now to specify the tree itself - as you see, the syntax is quite concise
  [r
    [C^h, edge label=P^h
      [C^h, edge label=P^h]
      [C^l, edge label=P^l]
    ]
    [C^l, edge label=P^l
      [C^h, edge label=P^h]
      [C^l, edge label=P^l]
    ]
  ]
\end{forest}
\end{document}

森の木

編集

コメントで、ルート ノードなしでどうすればよいかと尋ねられました。どのツリーにもルートが必要ですが、スペースを取らない目に見えないルートにすることもできます。Forest は、phantomこのようなケースのためのオプションを提供します。

\begin{forest}
  for tree={
    grow'=0,
    math content,
    tier/.wrap pgfmath arg={tier #1}{level()},
    l sep+=5mm,
  },
  before typesetting nodes={
    for tree={
      if n=1{
        edge label/.wrap value={node [midway, font=\scriptsize, above] {$#1$}}
      }{
        edge label/.wrap value={node [midway, font=\scriptsize, anchor=north] {$#1$}}
      }
    }
  }
  [, phantom
    [C^h, edge label=P^h
      [C^h, edge label=P^h]
      [C^l, edge label=P^l]
    ]
    [C^l, edge label=P^l
      [C^h, edge label=P^h]
      [C^l, edge label=P^l]
    ]
  ]
\end{forest}

ファントムルート

関連情報