编辑

编辑

我在一个层上有许多节点。因此我已经使用了向东扩展选项。但这还不够……我想节省一点垂直空间,例如通过将两个分支稍微向右拉。或者也许拉出中间的那个会更好看……

有没有延长水平线的选项?或者有人除了缩小尺寸外,还有其他节省垂直空间的方法吗?:)

大树

这是我的代码:

\documentclass[ngerman]{scrreprt}
\usepackage[edges]{forest}
\usepackage{tikz}
\usetikzlibrary{trees}

%Defining tikz classes for tree diagrams
\tikzset{parent/.style={align=center,text width=3cm,rounded corners=3pt},
    child/.style={align=center,text width=3cm,rounded corners=3pt}
    }

\begin{document}

    \begin{center}
        \resizebox{.7\textwidth}{!}{%
            \begin{forest}
                for tree={
                    grow'=east,
                    forked edges,
                    draw,
                    rounded corners,
                    node options={
                        align=center },
                    text width=2.7cm,
                    anchor=west,
                }
                [LMS, fill=gray!25, parent
                [Funktionale \\Anforderungen, for tree={fill=brown!25, child}
                [Lerninhalte organisieren]
                [Lerninhalte erstellen]
                [Lerninhalte abfragen]
                [Kommunikation]
                [Benutzerkonten\-führung]
                [Steuerungs\-funktionen]
                ]
                [Nicht-Funktionale Anforderungen, for tree={fill=red!25,child}
                [Zuverl{\"a}ssig\-keit]
                [Skalierbar\-keit und Effizienz]
                [Benutzer\-freundlich\-keit]
                [Portierbarkeit]
                [Datenschutz / Informationssicherheit]
                [Erweiterbar\-keit]
                [Anpassbarkeit]
                ]
                [Technische Rahmen\-bedinungen, for tree={fill=blue!25, child}
                [System\-architektur]
                [Software\-kriterien]
                [Schnittstellen]
                [Wartung und Support
                [Support\-leistungen]
                [Software-Pflege]
                ]
                ]     
                ]
            \end{forest}    
        }
    \end{center}


\end{document}

答案1

我不知道这是否有帮助,但作为评论中讨论的后续,您可以通过执行以下操作使树更加紧凑:

\documentclass[ngerman]{scrreprt}
\usepackage[edges]{forest}
\tikzset{%
  parent/.style={align=center,text width=3cm,rounded corners=3pt},
  child/.style={align=center,text width=3cm,rounded corners=3pt}
}
\begin{document}
\begin{center}
  \resizebox{.7\textwidth}{!}{%
    \begin{forest}
      for tree={
        % forked edges,
        draw,
        rounded corners,
        node options={align=center,},
        text width=2.7cm,
      },
      where level=0{%
      }{%
        folder,
        grow'=0,
        if level=1{%
          before typesetting nodes={child anchor=north},
          edge path'={(!u.parent anchor) -- ++(0,-5pt) -| (.child anchor)},
        }{},
      }
      [LMS, fill=gray!25, parent
      [Funktionale \\Anforderungen, for tree={fill=brown!25, child}
      [Lerninhalte organisieren]
      [Lerninhalte erstellen]
      [Lerninhalte abfragen]
      [Kommunikation]
      [Benutzerkonten\-führung]
      [Steuerungs\-funktionen]
      ]
      [Nicht-Funktionale Anforderungen, for tree={fill=red!25,child}
      [Zuverl{\"a}ssig\-keit]
      [Skalierbar\-keit und Effizienz]
      [Benutzer\-freundlich\-keit]
      [Portierbarkeit]
      [Datenschutz / Informationssicherheit]
      [Erweiterbar\-keit]
      [Anpassbarkeit]
      ]
      [Technische Rahmen\-bedinungen, for tree={fill=blue!25, child}
      [System\-architektur]
      [Software\-kriterien]
      [Schnittstellen]
      [Wartung und Support
      [Support\-leistungen]
      [Software-Pflege]
      ]
      ]
      ]
    \end{forest}
  }
\end{center}
\end{document}

紧凑树

请注意,不建议调整包含文本的图形的大小,因为这样最终会得到各种不同大小的字体。因此,如果可以避免这样调整框的大小,那就更好了。

编辑

回答评论中的问题:

  1. “中心”实际上是模棱两可的——中心相对于什么?我建议将根与中间子节点对齐。最简单的方法可能是添加calign with current edge到相关子节点:

    [Nicht-Funktionale Anforderungen, for tree={fill=red!25,child}, calign with current edge
    

这使

对齐根

边缘可以通过多种方式控制:

  • forked edges适用于整棵树(尽管它实际上并没有做任何事情,因为它在所有情况下都被覆盖);
  • folder改变根以下所有节点的边,也就是说,所有可能有边的节点;
  • edge path'然后仅对第一级中的节点(即您尝试更改的边)进行最后的更改。

因此,要恢复第一级的默认样式,我们需要:

  • 删除forked edges;
  • 删除edge path

folder这里不会造成任何损害,因此我们可以保留它:

对角线至 1 级

如果我们希望边从一个公共点开始,我们可以重新定义parent anchor根:

  where level=0{%
    parent anchor=children,
  }{%

来自公共点的对角线

或者我们可以使用我们想要的任何类型的替代定义edge path。例如:

  where level=0{%
    parent anchor=children,
  }{%
    folder,
    grow'=0,
    if level=1{%
      before typesetting nodes={child anchor=north},
      edge path'={%
        (!u.parent anchor) -- ++(0,-5pt) -- (.child anchor)
      },
    }{},
  }

替代边缘路径

答案2

您可以将下一级的节点与以下内容对齐tier=<some name>

% arara: pdflatex

\documentclass[ngerman]{scrreprt}
\usepackage[edges]{forest}
\tikzset{%
    ,parent/.style={align=center,text width=3cm,rounded corners=3pt}
    ,child/.style={align=center,text width=3cm,rounded corners=3pt}
    }

\begin{document}    
\begin{figure}\centering
    \begin{forest}
        for tree={%
            ,scale=.78
            ,grow'=east
            ,forked edges
            ,draw
            ,rounded corners
            ,node options={align=center}
            ,text width=2.7cm
            ,anchor=west
            }
        [LMS, fill=gray!25, parent
            [Funktionale \\Anforderungen, tier=align here, for tree={fill=brown!25, child}
                [Lerninhalte organisieren]
                [Lerninhalte erstellen]
                [Lerninhalte abfragen]
                [Kommunikation]
                [Benutzerkonten\-führung]
                [Steuerungs\-funktionen]
            ]
            [Nicht-Funktionale Anforderungen, for tree={fill=red!25,child}
                [Zuverl{\"a}ssig\-keit]
                [Skalierbar\-keit und Effizienz]
                [Benutzer\-freundlich\-keit]
                [Portierbarkeit]
                [Datenschutz / Informationssicherheit]
                [Erweiterbar\-keit]
                [Anpassbarkeit, tier=align here]
            ]
            [Technische Rahmen\-bedinungen, tier=align here, for tree={fill=blue!25, child}
                [System\-architektur]
                [Software\-kriterien]
                [Schnittstellen]
                [Wartung und Support
                    [Support\-leistungen]
                    [Software-Pflege]
                ]
            ]     
        ]
    \end{forest}    
\end{figure}    
\end{document}

在此处输入图片描述

相关内容