森林-垂直移动一个节点

森林-垂直移动一个节点

这是一棵基本的树。

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

这样会生成以下图形,其中我希望 A 垂直于 D 上方,如手绘线所示。有没有简单且/或优雅的方法来做到这一点?

在此处输入图片描述

答案1

这是 的工作fit=band。当您将此选项置于节点时,Forest 不会计算其子树的精确轮廓,而是将其放在“带”中——包含子树的最小矩形,该矩形一直延伸到生长方向,即它占据 OP 图片中蓝线所占的空间。有关更多信息和图片,请参阅手册第 3.7.2 节。

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A, fit = band]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

在这个特殊情况下,可能需要调整s sep根节点的,以便节点 A 不会太靠北。请记住,s sep控制兄弟子树轮廓之间的距离。上面,子树 A 的轮廓是一条延伸超过 D 的“无限”带,因此根s sep有效地控制了这个距离。

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [,s sep=0
        [A, fit = band]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

PS 为了更清楚地看到距离,我喜欢在树上工作时draw在里面添加。在第二个示例中这样做可以清楚地表明 D 的北部和 A 的南部对齐,并且 A 和 D 之间任何剩余的垂直距离都归因于这些节点。for treeinner ysep

答案2

一个可能的解决方案是:

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A
            [,no edge] % <---
        ]
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

在此处输入图片描述

答案3

您可以使用以下方式创建额外的不可见节点[,phantom]

截屏

\documentclass{article}

\RequirePackage{forest}
\useforestlibrary{linguistics}

\begin{document}

\begin{forest}
    for tree = {grow' = 0, sn edges},
    [
        [A][,phantom]%<-- invisible node
        [B
            [C
                [D]
                [E]]
            [F]]]
\end{forest}

\end{document}

相关内容