Я пытаюсь нарисовать дерево, имеющее внутренние узлы только с одним дочерним узлом, но которое должно быть ориентировано.
/
\
/\
\
/\
Вместо типичного qtree, где указанные дочерние элементы просто «висят»:
|
|
/ \
|
|
/ \
Я думаю (но не знаю как), что можно было бы использовать невидимые листья, чтобы задать направление, но, возможно (надеюсь) есть лучшее решение? Это может быть либо в qtree, либо в tikz-qtree...
РЕДАКТИРОВАТЬ: дополнительный вопрос, который был бы полезен: как можно сделать так, чтобы каждая ветвь (на прямой линии) была различима, когда узлы не помечены, т. е. когда дерево имеет несколько соединений подряд, как во втором примере, как можно расположить их на небольшом расстоянии друг от друга, чтобы они не образовывали прямую неразличимую линию?
ПРАВКА 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}