森林对齐

森林对齐
  • 我 (目前) 对 还不是很满意forest
  • 我对节点的对齐存在问题。
  • 我哪里错了?

在此处输入图片描述

\documentclass[border=2mm]{standalone}
\usepackage{forest}

\begin{document}
\begin{forest}
    box/.style={rounded corners, 
        draw=gray!50, 
        fill=orange!20,
        font=\sffamily,
        minimum height=2em},
    [Actions, box 
        [Common shares, box
            [porte 
                [Droits de vote, box 
                    [donne droit à 
                        [Une voix à l'élection du board, box]
                    ]
                ]
            ]
            [peut donner droit à
                [Dividendes, box,name=div
                    [distribue
                        [Part des profits, box]
                    ]
                    [décidé par,name=decision
                        [Le Board, box, name=dir]
                    ]
                ]
            ]
        ]
        [Actions préférentielles, box
            [donne droit à,  name=droit]
        ]
    ]
    \draw (droit)--(div);
\end{forest}
                                    
\end{document}

PS:还有一个问题...当不在的时候,如何获得较小的字体box/.style

答案1

要对齐文本,请添加适当的text depth。要获取带框和不带框的节点的交替模式,请使用函数isodd

\documentclass[border=2mm]{standalone}
\usepackage{forest}

\begin{document}
\begin{forest}
    box/.style={rounded corners, 
        draw=gray!50, 
        fill=orange!20,
        font=\sffamily,
        },
    for tree={text depth=0.25ex,
    if={level==0||isodd(level)==1}{box,minimum height=2em}{minimum height=1.2em}}   
    [Actions
        [Common shares
            [porte 
                [Droits de vote 
                    [donne droit à 
                        [Une voix à l'élection du board]
                    ]
                ]
            ]
            [peut donner droit à
                [Dividendes, name=div
                    [distribue
                        [Part des profits]
                    ]
                    [décidé par,name=decision
                        [Le Board, name=dir]
                    ]
                ]
            ]
        ]
        [Actions préférentielles
            [donne droit à,  name=droit]
        ]
    ]
    \draw (droit)--(div);
\end{forest}
                                    
\end{document}

在此处输入图片描述

答案2

您只需定义节点的锚点:

\documentclass[border=2mm]{standalone}
\usepackage{forest}

\begin{document}
\begin{forest}
    box/.style={
        rounded corners,
        draw=gray!50,
        fill=orange!20,
        font=\sffamily,
        minimum height=2em,
        anchor=north    % or center <---- added
        },
    for tree = {
    if level =  2{}{if level = 4{}{box}}
                }
    [Actions
        [Common shares
            [porte
                [Droits de vote
                    [donne droit à
                        [Une voix à l'élection du board]
                    ]
                ]
            ]
            [peut donner droit à
                [Dividendes, name=div
                    [distribue
                        [Part des profits]
                    ]
                    [décidé par, name=decision
                        [Le Board, name=dir]
                    ]
                ]
            ]
        ]
        [Actions préférentielles
            [donne droit à,  name=droit]
        ]
    ]
    \draw (droit)--(div);
\end{forest}

\end{document}

在此处输入图片描述

编辑:forest代码中添加了规范for tree,规定了节点根据其所在级别所处的样式。

相关内容