如何定位 qtree

如何定位 qtree

假设我有 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}

在此处输入图片描述

现在树重叠了。第一棵树有一个注释“la la la”,位于一个单独的节点中。如果我没有它,我可以将两棵树放入节点并定位节点。但如何定位裸 qtree?这样它们的根就会水平匹配,第二棵树就会位于“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对第二棵树进行适当的移动:

\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}

在此处输入图片描述

相关内容