调整树的每一级的长度

调整树的每一级的长度

我有以下树的代码。但是,框的长度是全局设置的。我希望调整是按级别进行的。另外,我不希望字母是双行(就像代码中那样,每个框只有一行)。

代码图片如下: 调整树的每一级的长度

代码:

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \tikzset{
        my node style/.style={
            font=\tiny,
            top color=white,
            bottom color=blue!25,
            rectangle,
            rounded corners,
            minimum size=4mm,
            draw=blue!75,
            very thick,
            drop shadow,
            align=justify,
        }
    }
    \forestset{
        my tree style/.style={
            for tree={grow=east,
                parent anchor=east, % <---
                child anchor=west,  % <---
                my node style,
                l sep=1.5em,
                text width=4.6cm,
                %                   text width=5cm,
                forked edge,                % <---
                fork sep=1em,               % <---
                edge={draw=blue!50, thick},                
                if n children=3{for children={
                        if n=2{calign with current}{}}
                }{},
                %       delay={if content={}{shape=coordinate}{}},
                tier/.option=level,
            }
        }
    }
    \centering
    \begin{forest}
        my tree style
        [Inicialização de sistema Acção Y Euro Pallet
        [Inicialização de sistema Acção Y
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        ]
        [Inicialização de sistema Acção Y
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        ]
        ]
    \end{forest}

\end{document}

亲爱的 js ~Bibra,再次感谢你。问题是,当同一级别的一个框中的文本比另一个框中的文本多时,对齐效果会很差。例如,考虑以下代码:

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tikzset{
    my node style/.style={
        font=\tiny,
        top color=white,
        bottom color=blue!25,
        rectangle,
        rounded corners,
        % minimum size=4mm,
        draw=blue!75,
        very thick,
        drop shadow,
        align=justify,
        % level 2/.style={text width=3.5cm},
    }
}
\forestset{
    my tree style/.style={
        for tree={grow=east,
            parent anchor=east, % <---
            child anchor=west,  % <---
            my node style,
            l sep=1.5em,
            % text width=3.5cm,  %<---turn off all sizing
            %                   text width=5cm,
            forked edge,                % <---
            fork sep=1em,               % <---
            edge={draw=blue!50, thick},                
            if n children=3{for children={
                    if n=2{calign with current}{}}
            }{},
            %       delay={if content={}{shape=coordinate}{}},
            tier/.option=level,
        }
    }
}
\centering
\begin{forest}
    my tree style
    [Inicialização de sistema Acção Y Euro Pallet
    [Inicialização de sistema Acção Y, text width=4cm %<---changed
    [Inicialização de sistema]
    [Inicialização de sistema de sistema]
    [Inicialização de sistema]
    ]
    [Inicialização de sistema Inicialização de sistema Acção Y
    [Inicialização de sistema]
    [Inicialização Inicialização de sistema de sistema]
    [Inicialização de sistema]
    [Inicialização de sistema de sistema de sistema]
    ]
    ]
\end{forest}

\end{document}

请查看未对齐的输出图像。 在此处输入图片描述

答案1

在此处输入图片描述

正如回答前面的查询一样,可以使用全局选项,这将给出上述形状

\forestset{
        my tree style/.style={
            for tree={grow=east,
                parent anchor=east, % <---
                child anchor=west,  % <---
                my node style,
                l sep=1.5em,
                text width=3.5cm,
                %                   text width=5cm,
                forked edge,                % <---
                fork sep=1em,               % <---
                edge={draw=blue!50, thick},                
                if n children=3{for children={
                        if n=2{calign with current}{}}
                }{},
                %       delay={if content={}{shape=coordinate}{}},
                tier/.option=level,
            }

或者text width可以通过附加来在所需的级别进行操作

[Inicialização de sistema Acção Y, text width=5cm

在此处输入图片描述

最好关闭所有尺寸选项,以便节点自动采用最小宽度 - 然后如果需要,操作一个节点

最终的选择是为级别 0、1、2... 创建单独的样式,如书中所定义 -http://www.chiark.greenend.org.uk/doc/texlive-doc/latex/forest/forest.pdf

数学家协会

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \tikzset{
        my node style/.style={
            font=\tiny,
            top color=white,
            bottom color=blue!25,
            rectangle,
            rounded corners,
            % minimum size=4mm,
            draw=blue!75,
            very thick,
            drop shadow,
            align=justify,
            % level 2/.style={text width=3.5cm},
        }
    }
    \forestset{
        my tree style/.style={
            for tree={grow=east,
                parent anchor=east, % <---
                child anchor=west,  % <---
                my node style,
                l sep=1.5em,
                % text width=3.5cm,  %<---turn off all sizing
                %                   text width=5cm,
                forked edge,                % <---
                fork sep=1em,               % <---
                edge={draw=blue!50, thick},                
                if n children=3{for children={
                        if n=2{calign with current}{}}
                }{},
                %       delay={if content={}{shape=coordinate}{}},
                tier/.option=level,
            }
        }
    }
    \centering
    \begin{forest}
        my tree style
        [Inicialização de sistema Acção Y Euro Pallet
        [Inicialização de sistema Acção Y, text width=4cm %<---changed
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        ]
        [Inicialização de sistema Acção Y
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        [Inicialização de sistema]
        ]
        ]
    \end{forest}

\end{document}

相关内容