我正在尝试使用包 forest 构建水平树,尽管我无法使节点很好地对齐。这是一个示例和 MWE:
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
calign=center,
grow'=east, % tree direction
parent anchor=east, child anchor=west, % edge anchors
rounded corners, draw,
}
[A [B [C [D [E[F]]] [D' [E' [F']]] ]]]
\end{forest}
\begin{forest}
for tree={
calign=center,
grow'=east, % tree direction
parent anchor=east, child anchor=west, % edge anchors
rounded corners, draw,
}
[g [B [g [D [E[F]]] [D' [E' [F']]] ]]]
\end{forest}
\end{document}
我想要得到的是类似于第一棵树的东西,而正如你从第二棵树中看到的那样,节点中的文本会影响它们的对齐。
答案1
明确设置text height
和text depth
,使得无论字母的外观如何,所有节点都具有相同的高度和基线。
\documentclass[border=1mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
calign=center,
grow'=east, % tree direction
parent anchor=east, child anchor=west, % edge anchors
rounded corners, draw,
text height=1.4ex, text depth=0.2ex % <<<<<<<<<<<<<
}
[g [B [g [D [E[F]]] [D' [E' [F']]] ]]]
\end{forest}
\end{document}
答案2
您可以自动将 添加\strut
到节点的内容中,并稍微减少 ,inner ysep
这样节点就不会变得太高。您可能仍需要进行一些微调,但默认结果可能比其他结果更好。
\documentclass[tikz,border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
calign=center,
grow'=east, % tree direction
parent anchor=east, child anchor=west, % edge anchors
rounded corners, draw,
inner ysep=1pt
},
before typesetting nodes={
for tree={
content/.wrap value={\strut #1},
}
}
[g [B [g [D [E[F]]] [D' [E' [F']]] ]]]
\end{forest}
\end{document}