我想使用一些图片作为图表中的节点。我认为该forest
包最适合图表。但我不能在这里使用 tikz-picture 中的字符作为树的节点。
参见以下评论:\fineMatrix{b}
用空单元格绘制(有填充但没有字符)。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{forest}
\newcommand{\fineMatrix}[1]{
\begin{tikzpicture}
\draw (0,0) grid (2, 2);
\shade[top color=yellow, bottom color=gray] (0,1) rectangle (1,2);
\shade[top color=gray, bottom color=yellow] (1,0) rectangle (2,1);
\node[anchor=center] at (0.5, 0.5) { $#1_{21}$ };
\node[anchor=center] at (1.5, 1.5) { $#1_{12}$ };
\end{tikzpicture}
}
\begin{document}
%simple tree - fine
\begin{forest}
for tree=
[A [
B
]]
\end{forest}
%some picture - fine also
\fineMatrix{c}
%tree with picture - charaters was lost :(
\begin{forest}
for tree=
[A [
{\fineMatrix{b}}
]]
\end{forest}
\end{document}
答案1
tikzpicture
不支持嵌套s。forest
是 a tikzpicture
。因此,遗憾的是,您不能指望它能正常工作。
这样的事情怎么样?
\documentclass[border=10pt]{standalone}
\usepackage{forest}
\usetikzlibrary{calc}
\forestset{%
fine Matrix/.style={
minimum height = 2cm,
minimum width = 2cm,
tikz+={
\draw (.north) coordinate (t) ++(-1,-2) coordinate (bl) rectangle ++(2,2) coordinate (tr);
\shade [top color=yellow, bottom color=gray, draw] ($(bl)!.5!(bl |- tr)$) coordinate (l) rectangle (t);
\shade [top color=gray, bottom color=yellow, draw] (bl -| t) rectangle (l -| tr) coordinate (r);
\node [anchor=center] at ($(bl)!.5!(l -| t)$) {$#1_{21}$};
\node [anchor=center] at ($(l -| t)!.5!(tr)$) {$#1_{12}$};
}
}
}
\begin{document}
\begin{forest}
[A
[, fine Matrix=b
]
]
\end{forest}
\end{document}
注意
for tree=
然后立即启动树规范不会执行任何操作,并且可能会出现问题,因为它需要一个参数。要么删除,要么说for tree={}
如果出于某种原因您想为后代保留它。