我想要一片像这样的森林:
梅威瑟:
\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
styleA/.style={top color=green!20, bottom color=green!50},
styleB/.style={top color=white, bottom color=red!20},
for tree={
rounded corners,
draw,
align=center,
top color=white,
bottom color=blue!20,
},
forked edges,
[Blablabla
[Blablabla,styleA]
[Blablabla,styleA]
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla
[Blablabla
[Blablabla]
[Blablabla,styleB]
[Blablabla]
[Blablabla
[Blablabla,styleB]
[Blablabla]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
[Blablabla
[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
]
]
]
]
\end{forest}
\end{document}
并将图像嵌入到节点/节点内部,如下所示
有办法实现这个吗?
答案1
您可以直接或使用 在节点内添加图像,也可以在绘制树后在其自己的节点中添加图像tikz
。无论哪种方式,您都可以对树中的特定节点或分配了特定样式的所有节点执行此操作。可以将图像指定为样式的一部分,也可以在使用样式时确定图像。
下面的例子展示了大部分这些可能性。
最简单的方法就是将图像添加到节点内容中。例如:
[Blablabla\\\includegraphics{info},styleA]
将在节点文本下方的一行中添加info
来自包的图像。notes
Blablabla
如果我们需要传递\includegraphics
一个可选参数,我们需要保护它免受 Forest 括号解析器的攻击:
[Blablabla {\includegraphics[scale=.5]{warn}},styleA]
也可以使用样式添加。例如,我们可以调整styleB
以包含hand
图像:
styleB/.style={%
top color=white,
bottom color=red!20,
delay={%
content/.wrap value={##1\\{\includegraphics[scale=.5]{hand}}}
}
},
那么我们的树将如下所示:
或者,我们可以在绘制树后将图像添加到它们自己的节点中。一种方法是使用 Forest 的tikz
或tikz+
键。例如,我们可以定义一个add icon
样式来方便地执行此操作,如下所示:
add icon/.style={%
!u.s sep+=5pt,
tikz+={\node [draw, circle, inner sep=1pt, fill=white] at (.south west) {\includegraphics [height=\baselineskip]{#1}};}
},
然后我们可以写
[Blablabla, add icon=warn,styleA]
[Blablabla, add icon=info,styleA]
将指定图像添加到指定节点。同样,这也可以用于修改的styleB
,例如。
styleB/.style={%
top color=white,
bottom color=red!20,
add icon=hand,
},
那么我们的树将如下所示:
完整代码:
\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
styleA/.style={top color=green!20, bottom color=green!50},
styleB/.style={%
top color=white,
bottom color=red!20,
delay={%
content/.wrap value={##1\\{\includegraphics[scale=.5]{hand}}}
}
},
for tree={
rounded corners,
draw,
align=center,
top color=white,
bottom color=blue!20,
},
forked edges,
[Blablabla
[Blablabla {\includegraphics[scale=.5]{warn}},styleA]
[Blablabla\\\includegraphics{info},styleA]
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla
[Blablabla
[Blablabla]
[Blablabla,styleB]
[Blablabla]
[Blablabla
[Blablabla,styleB]
[Blablabla]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
[Blablabla
[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
]
]
]
]
\end{forest}
\begin{forest}
add icon/.style={%
!u.s sep+=5pt,
tikz+={\node [draw, circle, inner sep=1pt, fill=white] at (.south west) {\includegraphics [height=\baselineskip]{#1}};}
},
styleA/.style={top color=green!20, bottom color=green!50},
styleB/.style={%
top color=white,
bottom color=red!20,
add icon=hand,
},
for tree={
rounded corners,
draw,
align=center,
top color=white,
bottom color=blue!20,
inner sep=5pt
},
forked edges,
[Blablabla
[Blablabla, add icon=warn,styleA]
[Blablabla, add icon=info,styleA]
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla
[Blablabla
[Blablabla]
[Blablabla,styleB]
[Blablabla]
[Blablabla
[Blablabla,styleB]
[Blablabla]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla
[Blablabla
[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
[Blablabla[Blablabla][Blablabla]]
]
]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
[Blablabla
[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]
[Blablabla[Blablabla[Blablabla[Blablabla
[Blablabla]
[Blablabla]
[Blablabla]
]]]]
]
]
]
]
]
\end{forest}
\end{document}