我的森林看起来像这样,但它不适合放在一页上,这是我第一次使用这个包。我正在寻找建议,以将其放入一页中,希望它们不会太密集,因为我计划制作一棵更大的树。
\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={circle,draw, l sep=20pt}
[1,red
[2, edge label={node[midway,left] {A}}
[1,red,edge label={node[midway,left] {B}}
[2,red,edge label={node[midway,right] {C}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red,edge label={node[midway,right] {C}}
[2,red,edge label={node[midway,right] {B}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red,edge label={node[midway,right] {D}}
[2,red,edge label={node[midway,right] {B}}]
[2,red,edge label={node[midway,right] {C}}]
]
]
[2, edge label={node[midway,left] {B}}
[1,red, edge label={node[midway,left] {A}}
[2,red,edge label={node[midway,right] {C}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red, edge label={node[midway,right] {A}}
[2,red,edge label={node[midway,right] {C}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red,edge label={node[midway,right] {A}}
[2,red,edge label={node[midway,right] {C}}]
[2,red,edge label={node[midway,right] {D}}]
]
]
[2, edge label={node[midway,left] {C}}
[1,red,edge label={node[midway,left] {A}}
[2,red,edge label={node[midway,right] {B}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red,edge label={node[midway,right] {B}}
[2,red,edge label={node[midway,right] {A}}]
[2,red,edge label={node[midway,right] {D}}]
]
[1,red,edge label={node[midway,right] {D}}
[2,red,edge label={node[midway,right] {A}}]
[2,red,edge label={node[midway,right] {B}}]
]
]
[2, edge label={node[midway,left] {D}}
[1,red,edge label={node[midway,left] {A}}
[2,red,edge label={node[midway,right] {B}}]
[2,red,edge label={node[midway,right] {C}}]
]
[1,red,edge label={node[midway,right] {B}}
[2,red,edge label={node[midway,right] {A}}]
[2,red,edge label={node[midway,right] {C}}]
]
[1,red,edge label={node[midway,right] {C}}
[2,red,edge label={node[midway,right] {A}}]
[2,red,edge label={node[midway,right] {B}}]
]
]
]
\end{forest}
\end{document}
答案1
我会:
- 用来
geometry
获得更合理的利润; - 将树的一些树枝向下移动以节省空间;
- 使用方形边缘,避免树枝交叉,减少拥挤和混乱;
- 避免将标签放置在边缘处,通过稍微调整标签的位置以提高可读性;
- 使用样式来简化添加边缘标签,这使得它们的位置可以更容易地修改和更一致地确定(并节省打字),例如
my label
在下面的例子中; - 考虑为具有模式的树自动添加颜色,例如,所有最终节点都是不同的颜色或所有左侧节点或其他颜色(但这只是为了节省打字时间,显然是一个偏好问题);
- 用于
pdflscape
较大的树(这个不需要)。
以下是一个例子:
\documentclass{article}
\usepackage{geometry}
\usepackage[edges]{forest}
\begin{document}
\noindent
\begin{forest}
my label/.style={%
if n=1{%
edge label={node [midway,left] {#1}}
}{%
if n'=1{%
edge label={node [midway,right] {#1}}
}{%
edge label={node [midway,below right] {#1}}
}
},
},
for tree={circle,draw, l sep=20pt},
before typesetting nodes={
where content={}{coordinate}{},
},
forked edges,
[1,red
[2, my label={A}
[1,red,my label={B}
[2,red,my label={C}]
[2,red,my label={D}]
]
[1,red,my label={C}
[2,red,my label={B}]
[2,red,my label={D}]
]
[1,red,my label={D}
[2,red,my label={B}]
[2,red,my label={C}, tier=this]
]
]
[, tier=this, my label={B}
[2
[1,red, my label={A}
[2,red,my label={C}]
[2,red,my label={D}]
]
[1,red, my label={A}
[2,red,my label={C}]
[2,red,my label={D}]
]
[1,red,my label={A}
[2,red,my label={C}]
[2,red,my label={D}]
]
]]
[2, my label={C}
[1,red,my label={A}
[2,red,my label={B}]
[2,red,my label={D}]
]
[1,red,my label={B}
[2,red,my label={A}]
[2,red,my label={D}]
]
[1,red,my label={D}
[2,red,my label={A}]
[2,red,my label={B}, tier=this]
]
]
[, tier=this, my label={D}
[2
[1,red,my label={A}
[2,red,my label={B}]
[2,red,my label={C}]
]
[1,red,my label={B}
[2,red,my label={A}]
[2,red,my label={C}]
]
[1,red,my label={C}
[2,red,my label={A}]
[2,red,my label={B}]
]
]]
]
\end{forest}
\end{document}
答案2
由于你的树很宽,而且不太高,一种可能性是将其放置在横向页面上。pdflscape包及其landscape
环境会以横向模式创建一个新页面,它不会弄乱您的页眉,甚至可以在 PDF 查看器中正确显示:
\documentclass{article}
\usepackage{pdflscape}
\usepackage{forest}
\usepackage{lipsum} % Only for creating example text
\begin{document}
\lipsum[1-4] % Example text
\begin{landscape}
\begin{forest}
...
\end{forest}
\end{landscape}
\lipsum[5-7] % Example text
\end{document}
当然,这个解决方案会失败非常大森林。如果是这样的话,缩小整个森林(包括文本!)以适合页面可能是一个好主意。一个简单的方法是使用调整框包,它允许您将任何内容缩放到所需的大小,例如通过将宽度定义为\linewidth
:
\documentclass{article}
\usepackage{adjustbox}
\usepackage{forest}
\begin{document}
\begin{adjustbox}{width=\linewidth}
\begin{forest}
...
\end{forest}
\end{adjustbox}
\end{document}
当然,重新设计森林以适应你的页面没有重新缩放会更好,因为你可能不想在文档中出现许多不同的小字体大小。也许森林- 专家可以阐明如何以这种方式重新设计森林。