在制作树形图时,我遇到了以下问题:
在一棵向下生长的树中,如果子树的身高不同,它们就不会排成一行。
示例 1:'foo' 的子元素名为 'A' 和 'a'。小元素 'a' 与大元素 'A' 顶部对齐。
\begin{tikzpicture}
\tikzset{grow'=down}
\tikzset{every tree node/.style={align=center,anchor=north}}
\tikzset{edge from parent/.style={draw, edge from parent path={(\tikzparentnode.south) -- +(0,-8pt)-| (\tikzchildnode)}}}
\Tree [.foo [.A ]
[.a ]]
\end{tikzpicture}
导致:
现在,最简单的方法是将锚点从 改为anchor=north
,anchor=south
这样效果很好如果子节点仅由一行组成。(然后分支的垂直长度会发生变化,这没问题。)
但是如何让后面的子元素按行对齐呢?
\begin{tikzpicture}
\tikzset{grow'=down}
\tikzset{every tree node/.style={align=center,anchor=north}}
\tikzset{edge from parent/.style={draw, edge from parent path={(\tikzparentnode.south) -- +(0,-8pt)-| (\tikzchildnode)}}}
\Tree [.foo [.A\\A ]
[.a\\a ]]
\end{tikzpicture}
导致
答案1
用来\strut
让两个字母具有相同的高度和深度,或者测量的高度A
并使其a
具有相同的高度。
\documentclass{article}
\usepackage{tikz-qtree}
\begin{document}
\tikzset{grow'=down}
\tikzset{every tree node/.style={align=center,anchor=north}}
\tikzset
{edge from parent/.style=
{draw,
edge from parent path=
{(\tikzparentnode.south) -- +(0,-8pt)-| (\tikzchildnode)
}
}
}
\begin{tikzpicture}
\Tree [.foo [.\strut A\\A ]
[.\strut a\\a ]]
\end{tikzpicture}
%
\newlength\heightA
\settoheight\heightA{A}
\newcommand\strutA{\rule{0pt}{\heightA}}
\begin{tikzpicture}
\Tree [.foo [.A\\A ]
[.\strutA a\\a ]]
\end{tikzpicture}
\end{document}