TikZ:使用“节点内容”键作为图形节点

TikZ:使用“节点内容”键作为图形节点

TikZ 允许使用选项设置节点内容:

\tikz{\node[node contents=whatever];}

请注意语法,以下是不允许的:

\tikz{\node[node contents=whatever] {};}

并出现错误:

! Use of \@next doesn't match its definition.

现在,在指定图形节点时,必须使用特殊语法:

\tikz{\graph {test [color=blue]; test -> test;}}

这将自动用“测试”填充节点内容,因此在尝试

\tikz{\graph {test [node contents=passed]; test -> test;}}

我们预料到了会遇到上述错误。

我的问题是:(如何)我可以将“节点内容”选项用于图形节点?也许图形也允许经典节点规范(我没有做到这一点)?

为了避免(仅)包含解决方法或对我的目的来说过于简单的解决方案的答案:最终目标是在图形中使用多部分节点,其中一个部分具有默认文本,另一个部分可以设置。考虑处理

\tikzset{
  Thing/.style={
    circle split,
    node contents={Type\nodepart{lower}#1}
  }
}
\tikz{\node[Thing=something];}
\tikz{\graph {test [Thing=something]; test -> test;}}

答案1

Thing如果您还想在图形外部创建多部分节点,则不能使用它来在图形中创建多部分节点。但是,您可以创建类似的样式thing以在图形中使用。这需要使用as而不是node contents指定节点的内容。

例如,如果我们写

  thing/.style={
    circle split,
    graphs/as={Type\nodepart{lower}#1}
  },

然后我们可以在图表中按如下方式使用它

\tikz{\graph {test [thing=something]; (test.lower) -> (test.text);}}

有此结果

图形事物

显然不能在图表之外使用,所以如果您希望相同风格的多部分节点也可用于图表,则thing需要保留。Thing

完整代码:

\documentclass[border=10pt,tikz,multi]{standalone}
\usetikzlibrary{graphdrawing,graphs,shapes.multipart}
\begin{document}
\tikzset{
  Thing/.style={
    circle split,
    node contents={Type\nodepart{lower}#1}
  },
  thing/.style={
    circle split,
    graphs/as={Type\nodepart{lower}#1}
  },
}
\tikz{\node[Thing=something];}
\tikz{\graph {test [thing=something]; (test.lower) -> (test.text);}}
\end{document}

相关内容