我正在尝试使用该tikz-qtree
包绘制一棵树,但是我遇到了树的节点不在中心的问题。
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\node{\Tree
[.{ABC}
[.\textbf{D}
[.AA BB ] ]
[.\textbf{E}
[.CC DD ]
[.EEEEEE FF ] ]
[.\textbf{F}
[.GG HH ] ]
]};\\
\end{tikzpicture}
\end{document}
输出结果如下:
如何让树正确地居中其节点?我尝试使用包中的一些选项,例如
[level 1/.style={node distance=40mm}]
然而,这并没有产生任何结果,树也没有改变。有人知道如何解决这个问题吗?
答案1
树中的间距是经过设计的。该包试图最小化树的总宽度。如果您将节点 E 居中,则必须将 F 进一步向右移动,从而使整个树变大。即使您使用[sibling distance=30pt]
(作为示例) 将节点进一步分开,它仍会为您提供一个有角度的中间分支。这样,AA/CC 之间的空间相当于 EEEEEE/GG 之间的空间。
如果您确实想要一个垂直的中间条,您可以手动调整导致问题的节点(在本例中是 CC 和 EEEEEE 之间的不平衡)。但这会使 AA/CC 和 EEEEEE/GG 之间的空间不再相等。因此,无论哪种方式,您最终都会在树中出现一些不对称现象。
我还从您的示例中删除了一些不必要的代码。整棵树不需要放在 a 中\node
,您也不需要加载tikzlibrary{trees}
即可使用tikz-qtree
(它使用低级 pgf 方法进行树构建。)
\documentclass[10pt]{article}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
% no adjustment
\Tree
[.{ABC}
[.\textbf{D}
[.AA BB ] ]
[.\textbf{E}
[.CC DD ]
[.EEEEEE FF ] ]
[.\textbf{F}
[.GG HH ] ]
]
% Manually adjusted tree
\begin{scope}[xshift=3in]
\Tree
[.{ABC}
[.\textbf{D}
[.AA BB ] ]
[.\textbf{E}
[.\node[minimum width=4.75em] {CC}; DD ]
[.EEEEEE FF ] ]
[.\textbf{F}
[.GG HH ] ]
]
\end{scope}
\end{tikzpicture}
\end{document}
答案2
具有自动调节功能
\documentclass{article}
\usepackage{tikz-qtree}
\usepackage{calc}
\begin{document}
\begin{tikzpicture}
\Tree
[.{ABC}
[.\textbf{D}
[.AA BB ] ]
[.\textbf{E}
[.\makebox[\widthof{EEEEEE}]{CC} DD ]
[.EEEEEE FF ] ]
[.\textbf{F}
[.GG HH ] ]
]
\end{tikzpicture}
\end{document}