在森林中水平对齐节点

在森林中水平对齐节点

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

使用自动 <code>\strut</code>

相关内容