/tikz/shape
在 3.0.1a 版 TikZ 和 PGF 手册第 216 页的节点选项描述中指出:
最初没有默认值
rectangle
它继续解释这个选项选择
当前节点的形状,或者当此选项未在节点内部而是在外部某处给出时,当前范围内所有节点的形状。
具有默认值的选项与具有初始特定值的选项之间有什么区别?如果不是最初是默认rectangle
的,其行为和使用方式会发生什么变化?/tikz/shape
rectangle
有人可以用一个简单的例子来解释并说明其中的差异吗?
当前的问题类似于这个。但是那个问题涉及 PGF(我不熟悉),而当前的问题涉及 TikZ。
PGF 和 TikZ 是两个不同的级别。请考虑手册中的以下引述(第 221 页):
PGF 和 TikZ 都支持这种多部分节点。在较低级别,PGF 提供了一个系统来指定形状由多个部分组成。在 TikZ 级别,您可以使用以下命令指定不同的节点部分:
\nodepart[<options>]{<part name>}
这句话的目的是为了表明,相同的特征在 PGF 和 TikZ 中可以有不同的表现形式,并且可以合理地询问某个特征在一个级别上如何表现以及在另一个级别上如何表现,这将构成两个不同的问题,就像关于 TikZ\nodepart
命令的问题可以与关于 PGF 用于指定形状由多个部分组成的系统的问题共存,而这些问题中任何一个都不是另一个问题的重复。
我的问题是:是否可以仅使用 TikZ 概念和语法来解释差异并给出一个最小示例,而无需诉诸低级 PGF?从只了解 TikZ 的高级用户的角度来看,这种差异是可以察觉的吗?(我就是这样的用户。)
答案1
这个答案是为了解释 TikZ/PGF 手册中关键字的默认/初始值的含义。它可能与以下方面有关系,也可能没有关系:.default
和.initial
键的使用取决于具体实现。
例如shape:
no default
意味着你不能说\node[shape, red]{...}
因为没有默认值(在这种情况下,键被定义为必须有一个参数,所以如果你这样做就会出错;谢谢@percusse)。例如,如果它有
circle
默认情况下,这意味着您可以使用上述命令来获得一个圆形节点;initial
意思是如果你说\node[color=red] {...}
没有提到
shape
你将有一个rectangle
。
另一个例子可能是(直接来自手册):
/pgf/tips=value
(默认true
,最初on draw
)别名/tikz/tips
此键控制在什么情况下将箭头添加到路径。允许使用以下值:
true
(未指定值时使用的值)proper
on draw
(如果密钥尚未使用,则为初始值)on proper draw
never
或false
(效果相同)[...]
(虽然我不明白最后一项的评论是什么意思---只是那样never
并且false
是一样的吗?)
答案2
在这种情况下,问题听起来似乎与键有关,但它shape
是一个非常遗留的关键字,并且定义方式非常简单。
\tikzoption{shape}{\edef\tikz@shape{#1}}
(\tikzoption
后来变成了\tikzset
。所以不要使用它)
然后在 TikZ 包初始化时我们看到
\def\tikz@shape{rectangle}%
请注意,这是全局范围,因此如果你不摆弄它,每个 TikZ 图片都会继承此默认值。这是不是/.initial
与问题相关/.default
。手册的分类使得它看起来像是关键问题。
在手册中,如果您看到no default
这意味着您需要提供一个值。如果您看到no value
,那么...好吧...您不需要提供值。如果您坚持提供一个值,有时您会得到一个错误,有时不会。
例子,
\node[matrix of math nodes={4}{5}] {\tan \\ \sin};
不会出错。因为每个样式/代码处理程序本质上都接受参数。如果/.value forbidden
处理程序未明确设置,则不会发生任何事情。
Initially <...>
方法如果你不提供其他任何东西,我将使用 <...>
。
与往常一样,也有例外……
最后再说一下 TikZ/PGF 的区别。所有 TikZ 都转换为 PGF 代码,因此没有单独的功能。这是语法问题。