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}