
次のような 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}