作为我的森林样本,我怎样才能使行宽相同,并控制行宽?

作为我的森林样本,我怎样才能使行宽相同,并控制行宽?

在此处输入图片描述

跟随我的其他问题

\documentclass{article}
\usepackage{forest}
\usetikzlibrary{backgrounds}
\usetikzlibrary{arrows.meta,shapes,positioning,shadows,trees}
%
\tikzset{
    basic/.style = {line width=1pt,draw=black},% draw=black
    L0/.style = {align=left, text width=2cm,fill=green!30},
    L1/.style = {align=left, fill=green!20,text width=6cm,},
    L2/.style = {align=left, fill=pink!60, text width=9em},
    L3/.style = {align=left, fill=pink!10, text width=5em},    
}
\begin{document}
\begin{forest}
     for tree={
        grow'=0,
        parent anchor=children,
        child anchor=parent,
        edge path={none},
        calign=first,
        l sep=0pt,
        s sep=0pt,
},
        before drawing tree={
            where n children=0{
                tikz+/.wrap pgfmath arg={
                    \scoped[on background layer]{\path [L#1, basic] (.north west) rectangle (.south east);}
                }{level()},
            }{
            tikz+/.wrap pgfmath arg={
                \scoped[on background layer]{\path [L#1, basic] (.west |- !L.south) rectangle (.east |- !F.north);}
            }{level()},
        }
    }
[OP10
    [Defining node and arrow styles
        [Setting shape
                     [my define1]
                     [my definet]
        ]
        [Choosing color
             [my definet]
        ]
        [Adding shading] ]
    [Positioning the nodes
        [Using a Matrix]
        [Relatively]
        [Absolutely] 
        [Using overlays] ]
    [Drawing arrows between nodes
        [Default arrows]
        [Arrow library]
        [Resizing tips] 
        [Shortening]
        [Bending] ] ]
\end{forest}
\end{document}

答案1

你想要这样的东西吗?

固定宽度

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\usetikzlibrary{backgrounds}
\tikzset{
  basic/.style = {line width=1pt,draw=black},
  L0/.style = {align=left,  fill=green!30},
  L1/.style = {align=left, fill=green!20,},
  L2/.style = {align=left, fill=pink!60, },
  L3/.style = {align=left, fill=pink!10},
  t0/.style={text width=2cm,},
  t1/.style={text width=6cm,},
  t2/.style={text width=9em},
  t3/.style={text width=5em},
}
% modified from Zarko's answer at http://tex.stackexchange.com/a/314181/ and my answer at http://tex.stackexchange.com/a/314249/
\begin{document}
\begin{forest}
  for tree={
    grow'=0,
    parent anchor=children,
    child anchor=parent,
    edge path={none},
    minimum width=15mm,
    l sep=0pt,
    s sep=0pt,
    if n children=0{
      minimum height=8mm,
    }{},
    node options/.wrap pgfmath arg={t#1}{level()},
  },
  before drawing tree={
    where n children=0{
      tikz+/.wrap pgfmath arg={
        \scoped[on background layer]{\path [L#1, basic] (.north west) rectangle (.south east);}
      }{level()},
    }{
      tikz+/.wrap pgfmath arg={
        \scoped[on background layer]{\path [L#1, basic] (.west |- !L.south) rectangle (.east |- !F.north);}
      }{level()},
    }
  }
  [OP10
    [Defining node and arrow styles
        [Setting shape
                     [my define1]
                     [my definet]
        ]
        [Choosing color
             [my definet]
        ]
        [Adding shading] ]
    [Positioning the nodes
        [Using a Matrix]
        [Relatively]
        [Absolutely]
        [Using overlays] ]
    [Drawing arrows between nodes
        [Default arrows]
        [Arrow library]
        [Resizing tips]
        [Shortening]
        [Bending] ] ]
\end{forest}
\end{document}

相关内容