森林——如何让节点朝不同的方向生长

森林——如何让节点朝不同的方向生长

梅威瑟:

\documentclass{article}
\usepackage{tikz}
\usepackage[edges]{forest}

\newcommand{\nodecircle}{circle,fill,outer sep=0,inner sep=1pt}

\begin{document}

    \begin{forest}
        [,\nodecircle, alias = I, s sep=0.4cm,l sep=2cm,
        [Rain]
        [Shine]
        ] 
        \node[above] at (I){Nature}; 
    \end{forest}

\end{document}

这会产生一个有两个节点并向下生长的森林。

我知道要改变它生长的方向,我必须使用命令grow = option

但是,如何让两个子节点都增长分离方向?

具体来说,我希望第一个子节点向东生长,第二个子节点向西生长。

然而,我该如何从同一父节点? 具体来说,我希望 Rain 节点水平位于右侧(即east),而 Shine 节点位于west

这个问题提供了一个答案,甚至回答者都认为它不够优雅。我想知道是否有更新的方法来做到这一点。

答案1

此代码有效(基于方法 1这里):

\documentclass{article}
\usepackage{tikz}
\usepackage[edges]{forest}

\newcommand{\nodecircle}{circle,fill,outer sep=0,inner sep=1pt}

\begin{document}

\begin{forest}
    [,\nodecircle, alias = I, l sep=2cm, grow = east
    [,\nodecircle, before computing xy={l=3cm,s=0cm}, alias = rain]
    [,\nodecircle, before computing xy={l=-3cm,s=0cm}, alias = shine]
    ] 
    \node[above] at (I){Nature}; 
    \node[above] at (rain){Rain}; 
    \node[above] at (shine){Shine}; 
\end{forest}

\end{document}

非常欢迎更多优雅的解决方案。

相关内容