我一直在寻找一个 TikZ 示例,它看起来类似于所附的 powerpoint 图片。我无法想象没有人做过类似的事情。我尝试改编这个例子,但失败了……
有人知道我可以在哪里找到类似的图表吗?
有没有办法将 LaTeX 表格环境添加到 TikZ 图片中?
答案1
这是一个使用 的解决方案forest
。
在这种情况下,使用浮点数是没有意义的,因此表格无法从table
环境的自动编号中受益。但是,您可以安排让它们自动编号并添加到表格列表中。为此,您需要在计数器递增时和内容行写入时多加注意。在下面的代码中,这是在标签本身排版时完成的。
表格放在常规节点中,仅被花括号包围。
虚线和级别标签是在绘制树后添加的。name
提供的键forest
用于帮助定位,并brace
使用 TiKZ 装饰来表示此处所需的线条。calc
用于计算级别标签本身的位置。
\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest}
\usetikzlibrary{decorations.pathreplacing,calc}
\begin{document}
\forestset{
my level/.style={
where n=1{
name/.wrap pgfmath arg={level ##1}{level()},
}{},
},
my circle/.style={
shape=circle,
fill,
minimum size=1.5pt,
inner sep=0pt,
outer sep=0pt,
},
my tabular/.style={
no edge,
for children={
edge={draw, ->},
},
for parent={
l sep=0pt,
for tree={
fit=band,
},
for parent={
calign=child,
calign child=2,
},
},
->,
},
my tabular label/.style={
label={\stepcounter{table}\addcontentsline{lot}{table}{\numberline {\thetable}{\ignorespaces Table \thetable}}\footnotesize Table \thetable},
},
/tikz/my label/.style={
font=\scriptsize,
midway,
},
}
\begin{forest}
for tree={
grow=east,
parent anchor=east,
child anchor=west,
anchor=center,
align=center,
where level=0{
draw,
}{
my level,
},
}
[Text, name=my root, l sep+=10pt
[, my circle, edge label={node [my label, below] {\dots}}]
[, my circle]
[, my circle
[, my circle, edge label={node [my label, below] {\dots}}]
[, my circle]
[, my circle
[{\begin{tabular}{|c|c|c|}
\hline
aaa & bbb & ccc\\\hline
& & \\\hline
& & \\\hline
\end{tabular}}, my tabular, my tabular label
[{\begin{tabular}{|c|c|c|}
\hline
aaa & bbb & ccc\\\hline
& & \\\hline
& & \\\hline
\end{tabular}}, my tabular label
]
]
]
]
]
\path [draw, dashed] (level 1.center |- current bounding box.north) +(0,10pt) -- (level 1.center |- current bounding box.south) -- +(0,-10pt) coordinate (bot);
\path [draw, decoration=brace, decorate]
(level 1.west |- bot) coordinate (c1) -- (my root.east |- bot) coordinate (c2) ;
\path [draw, decoration=brace, decorate]
(level 2.west |- bot) coordinate (c3) -- (level 1.east |- bot) coordinate (c4);
\node [anchor=north] at ($(c1)!1/2!(c2)$) {Text};
\node [anchor=north] at ($(c3)!1/2!(c4)$) {Text};
\end{forest}
\listoftables
\end{document}