如何使该 qtree 居中?

如何使该 qtree 居中?

我正在尝试使用该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}

在此处输入图片描述

相关内容