
Предположим, у меня есть 2 qtree, которые я хочу разместить друг под другом:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-qtree,tikz-qtree-compat}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\Tree
[.{1}
[.1-1 ]
[.\node (1) {1-2}; ]
]
\node [below = 0.5cm of 1.south] (note-1) {la la la};
\draw[-]
(note-1.north) -- (1.south);
\Tree
[.{2}
[.2-1 ]
[.2-2 ]
]
\end{tikzpicture}
\end{document}
Теперь деревья перекрываются. У 1-го есть комментарий 'la la la', находящийся в отдельном узле. Если бы у меня его не было, я мог бы поместить оба дерева в узлы и расположить узлы. Но как расположить голые qtrees? Так, чтобы их корни совпадали по горизонтали, а 2-е дерево было бы ниже 'la la la'.
решение1
Помимо простого использования двух разных изображений TikZ, разделенных знаком \\
, вы можете использовать добавленный вручную узел, note-1
чтобы сместить все второе дерево вниз.
Вы также можете использовать уже определенный узел Дерева, но вам необходимо переустановить его координаты с помощью вспомогательной координаты (Код 2):
% somewhere in the tree:
[. \node (lowest node) {1-2-2-1-1}; ]
% outside of tree:
\coordinate (aux1) at (lowest node);
% The coordinate aux1 can now be used for placement, e.g.
% below=of toptree |- aux1
Гарантирует |-
, что 2
находится под 1
.
Код 1
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-qtree,tikz-qtree-compat}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\Tree
[.\node (toptree) {1};
[.1-1 ]
[.\node (1) {1-2}; ]
]
\node [below = 0.5cm of 1.south] (note-1) {la la la};
\draw[-] (note-1.north) -- (1.south);
\begin{scope}[every tree node/.append style={below=of toptree |- note-1.south}]
\Tree
[.2
[.2-1 ]
[.2-2 ]
]
\end{scope}
\end{tikzpicture}
\end{document}
Код 2
\documentclass[tikz]{standalone}
\usepackage{tikz,tikz-qtree,tikz-qtree-compat}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\Tree
[.\node (toptree) {1};
[.1-1 ]
[.1-2
[.1-2-1
[.1-2-2-1
[. \node (lowest node) {1-2-2-1-1}; ]
]
]
]
]
\coordinate (aux1) at (lowest node);
\begin{scope}[opacity=.5,every tree node/.append style={below=of toptree |- lowest node}]
\Tree
[.2
[.2-1 ]
[.2-2 ]
]
\end{scope}
\begin{scope}[every tree node/.append style={below=of toptree |- aux1}]
\Tree
[.2
[.2-1 ]
[.2-2 ]
]
\end{scope}
\end{tikzpicture}
\end{document}
Выход
решение2
scope
Для второго дерева можно использовать a с соответствующим сдвигом:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-qtree,tikz-qtree-compat}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\Tree
[.1
[.1-1 ]
[.\node (1) {1-2}; ]
]
\node [below = 0.5cm of 1.south] (note-1) {la la la};
\draw[-]
(note-1.north) -- (1.south);
\begin{scope}[yshift=-3cm]
\Tree
[.2
[.2-1 ]
[.2-2 ]
]
\end{scope}
\end{tikzpicture}
\end{document}