控制树形图分支

控制树形图分支

我有以下树:

\begin{center}
\begin{forest}
[Tests
  [Case 1
    [\text{OGL1}]
    [\text{OGL2}]
    [\text{OGL3}]
    [\text{OGL4}]    
  ]
  [Case 2
    [\text{OGL1}]
    [\text{OGL2}]
    [\text{OGL3}]
    [\text{OGL4}] 
  ]
  [Case 3
    [\text{OGL1}]
    [\text{OGL2}]
    [\text{OGL3}]
    [\text{OGL4}] 
  ]
  [Case 4
    [\text{OGL1}]
    [\text{OGL2}]
    [\text{OGL3}]
    [\text{OGL4}] 
  ]
]      
\end{forest}
\end{center}

enter image description here

然而,这棵树太宽了,超出了纸张的范围。

是否有一个好的方法可以使其适合纸张且字母之间不互相干扰?

如果有不同类型的树可以解决这个问题,那也很好了解。

谢谢你!

答案1

像这样吗?

不知道你的 \text 是做什么用的,所以删除了那些

\documentclass[a4paper,12pt]{article}

\usepackage{forest}

\begin{document}

\begin{forest}
  for tree={
    child anchor=west,
    parent anchor=east,
    grow'=east,
  %minimum size=1cm,%new possibility
  text width=4cm,%
    draw,
    anchor=west,
    edge path={
      \noexpand\path[\forestoption{edge}]
        (.child anchor) -| +(-5pt,0) -- +(-5pt,0) |-
        (!u.parent anchor)\forestoption{edge label};
    },
  }
[Tests
  [Case 1
    [{OGL1}]
    [{OGL2}]
    [{OGL3}]
    [{OGL4}]    
  ]
  [Case 2
    [{OGL1}]
    [{OGL2}]
    [{OGL3}]
    [{OGL4}] 
  ]
  [Case 3
    [{OGL1}]
    [{OGL2}]
    [{OGL3}]
    [{OGL4}] 
  ]
  [Case 4
    [{OGL1}]
    [{OGL2}]
    [{OGL3}]
    [{OGL4}] 
  ]
]      
\end{forest}

\end{document}

enter image description here

答案2

如果不知道盒子的大小,就很难给出如何将东西放入盒子的建议,但这基本上就是你要求人们做的事情。也就是说,因为你的例子不完整,我们只能猜测你选择的字体、默认字体大小、纸张大小、边距等等。更好的答案需要更完整的信息。

在下文中,我假设您使用的是article具有默认设置的类。这意味着美国信纸(216 x 279 毫米)纵向打印,使用 10pt Computer Modern serif、sans 和打字机字体,以及默认边距、跳过等。

我建议将树设置为“目录样式”。根据节点内容的潜在宽度,您可以以此方式排版整个树,或者在适当的位置切换到此样式。

如果节点的内容实际上可能更宽,则可以这样设置:

long tree for wide nodes

showframe用于标记文本块、边距等。显然,您不应该在实际文档中加载它,但这些线在这里很有用。

如果节点的内容真的很短,如示例中所示,我认为在第一个子节点之后切换看起来更好:

switched tree

这里forked edge用于获得根和其子节点之间的边的相似样式。

从 Forest 2 开始,这些样式可以使用edges库轻松实现,如下面的代码所示。

\documentclass{article}
\usepackage[edges]{forest}
\usepackage{showframe}
\begin{document}

\begin{forest}
  for tree={folder, grow'=0}
  [Tests
    [Case 1
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4]    
    ]
    [Case 2
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
    [Case 3
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
    [Case 4
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
  ]      
\end{forest}

\begin{forest}
  where level>=1{if level=1{forked edge}{}, folder, grow'=0}{}
  [Tests
    [Case 1
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4]    
    ]
    [Case 2
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
    [Case 3
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
    [Case 4
      [OGL1]
      [OGL2]
      [OGL3]
      [OGL4] 
    ]
  ]      
\end{forest}

\end{document}

相关内容