内部ノードに子ノードが 1 つだけあるが、方向を定める必要があるツリーを描画しようとしています。
/
\
/\
\
/\
子要素が単に「ハング」する典型的な qtree の代わりに:
|
|
/ \
|
|
/ \
方向を強制するために非表示のリーフを持つことが可能かもしれないと思いますが (方法はわかりませんが)、おそらく (願わくば) もっと良い解決策があるのではないでしょうか。これは qtree または tikz-qtree のいずれかで可能です...
編集: 役に立つフォローアップの質問ですが、ノードにラベルが付いていないときに、各ブランチ (直線) を区別するにはどうすればよいでしょうか。つまり、2 番目の例のように、ツリーに複数の接続が連続している場合、それらを互いにわずかに離して、区別できない直線を形成しないようにするにはどうすればよいでしょうか。
編集2: ご返信ありがとうございます。現在、次の 2 つのツリーがあります。
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}\footnotesize
\Tree [ \edge node[midway,left] {000};
[ \edge[draw=none]; {} \edge node[midway,right] {111};
[
\edge node[midway,left] {0}; $U_2$
\edge node[midway,right] {11};
[ \edge[draw=none]; {} \edge node[midway,right] {11};
[ \edge node[midway,left] {0}; $U_1$
\edge node[midway,right] {1}; $U_3$ ] ] ] ]
\edge[draw=none]; {} ]
\end{tikzpicture}
\begin{tikzpicture}\footnotesize
\Tree [ \edge node[midway,right] {$U_1=U_2$, $U_1=U_3$};
[.. \edge node[midway,right] {$U_1=U_2$, $U_1=U_3$};
[ \edge node[midway,left] {$0$}; $U_2$
\edge node[midway,right] {$U_1\not=U_2$, $U_1 = U_3$}; [
\edge node[midway, right] {$U_1 = U_3$};
[ \edge node[midway, left] {$0$}; $U_1$
\edge node[midway, right] {$U_1\not=U_3$}; $U_3$ ] ] ] ] ]
\end{tikzpicture}
\end{document}
見た目を良くする方法はありますか?
答え1
空のノードを使用し{}
、\edge[draw=none];
その前に を配置します。
コード
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\tikzset{
n/.style={draw=none},
every node/.append style={inner ysep=+0pt,outer ysep=+0pt,minimum size=+0pt}
}
\begin{document}
\Tree
[.{}
[.{}
\edge[n];[.{} ]
[.{}
{}
[.{}
\edge[n];[.{} ]
[.{}
{}
{}
]
]
]
]
\edge[n];{}
]
\end{document}
出力(スタイル有効時と無効時every node
)
答え2
また、xshift
(およびyshift
) を使用して、ノードを配置する場所を微調整することもできます。
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}\footnotesize
\Tree [.{a}
\edge node[midway,left] {1};
[.\node[xshift=0.5cm,inner sep=0pt,minimum size=0pt] {}; \edge node[midway,left] {2}; {c} ]
]
\end{tikzpicture}