\anchor 与 \deferredanchor (PGF 节点)

\anchor 与 \deferredanchor (PGF 节点)

PGF 节点的锚点和 PGF 节点的延迟锚点之间有什么区别? 3.0.1a 版的 TikZ 和 PGF 手册\deferredanchor{〈name〉}{〈code〉}如此描述该命令(第 1037 页):

此命令声明一个名为 的锚点〈name〉。其工作原理类似于\anchor。但是,与 声明的锚点不同\anchor〈name〉在形状声明期间不会展开(即 在 期间不会展开\pgfdeclareshape)。相反, 会〈name〉在实际使用节点时展开(与 一起使用\pgfnode或更可能与 一起使用\node)。如果锚点名称依赖于上下文(例如,取决于键的值),这可能会很有用。

我再重复一遍:

与通过 声明的锚点不同\anchor〈name〉在形状声明期间不会展开

但是该命令的描述\anchor{〈name〉}{〈code〉}如下(第 1036 页):

与已保存的锚点不同,〈code〉每次声明节点时都不会执行。相反,〈code〉只有在明确请求锚点时才会执行;无论是在创建节点期间锚定节点,还是将其作为稍后引用的形状中的位置。

那么有什么区别呢?这两个命令都不会在声明节点时执行,而是在创建或使用时明确请求时执行。

答案1

假设您有一个具有 n 个扩展的形状(除了具有不同的边之外,现在想不出更好的例子regular polygon),并且具有不同的形状,例如三角形、圆形和其他形状。

如果形状没有三角形扩展,或者有超过 1 个三角形,您无法在定义时计算它,则无法为三角形创建锚点。因此,对于此类情况,可以选择推迟到用户请求它们。您不太可能需要它们。

那么有什么区别呢?这两个命令都不会在声明节点时执行,而是在创建或使用时明确请求时执行。

\anchor定义明确但尚未准备好。\deferredanchor直到展开后才定义。因为它的名称仍然取决于请求的内容。

相关内容