答案1
图形绘制范围内的所有节点(这里是整个 TikZ 图片)都会被“转发”到图形绘制算法,而不是直接放置。矩阵内的节点也会发生这种情况,这将使矩阵为空并成为c1
普通的图形绘制节点。
根据手册
这是在最低层实现的,即通过直接拦截使用新创建的节点
\pgfnode
。
这似乎是指延迟节点定位我可以看到它在代码中被使用(而不是\pgfnode
像我最初想的那样实际改变)。
可以使用以下方法关闭延迟节点定位
\pgfpositionnodelaterpath{\relax}
这就是我gd no matrix
在每个单元格开头的下面代码中安装的内容。
我还添加了,\pgfgdgraphdrawingscopeactivefalse
尽管我还没有检查哪里需要它。
由于图形绘图库也拦截该edge
操作,您可能无法在矩阵内使用它,或者我们也需要禁用此拦截。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{graphdrawing}
\usegdlibrary{trees}
\tikzset{
gd no matrix/.style={
every cell/.append code=%
\pgfgdgraphdrawingscopeactivefalse % maybe?
\pgfpositionnodelater{\relax}% % definitly
}}
\begin{document}
\tikz [
tree layout,
level sep = 1cm,
gd no matrix
] {
\node[] (1) {1};
\node[
draw=green,
matrix
] (2){
\node[draw=blue] (c1) {c1};
\\};
\path (1) edge (2);
}
\end{document}