如何强制 tikz 的中间子节点tree layout
与其父节点垂直对齐?例如,在下面的代码中,根节点的中间子节点明显位于根节点中心的左侧。
\documentclass[english]{article}
\usepackage{tikz}
\usetikzlibrary{graphdrawing,graphs}
\usegdlibrary{trees}
\begin{document}
\begin{tikzpicture}[tree layout]
\tikzset{sibling distance=0em}
\tikzset{sibling sep=0em}
\node {$+$}
child {node{$+$}
child {node{$Exp$}}
child {node{$+$}}
child {node{$Exp$}}
}
child {node{$+$}}
child {node{$Exp$}}
;
\end{tikzpicture}
\end{document}
sibling distance
请注意,如果我不设置,sibling sep
问题就会消失0em
,但我需要这些来获得一些较大的图表以适应我的文档的上下文。
答案1
如果您准备使用专业的树绘图包 Forest,那么您可以实现高度的灵活性和对输出的控制。
除了允许高度控制和支持强大的自动化选项之外,Forest 还允许非常简洁地指定树。在这种情况下,树本身由以下公式给出
[+[+[Exp][+][Exp]][+][Exp]]
虽然
[+
[+
[Exp]
[+]
[Exp]
]
[+]
[Exp]
]
由于它反映了树的空间结构,因此对于人类来说更容易阅读。
例如,
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={%
math content,
s sep=0pt,
text height/.pgfmath={height("Xpy")},
text depth/.pgfmath={depth("Xpy")},
},
where level=0{}{
if={n()==((n_children("!u")+1)/2)}{calign with current}{},
},
[+
[+
[Exp]
[+]
[Exp]
]
[+]
[Exp]
]
\end{forest}
\end{document}