是否可以用不同的名称继承锚点?像这样:
\pgfdeclareshape{baseshape}
{
\anchor{someanchor}{...}
}
\pgfdeclareshape{subshape}
{
\inheritanchoras[from=baseshape]{someanchor}{differentanchorname}
}
用一个虚构的命令inheritanchoras
。
我对此并不热衷,所以我也很乐意找到不同的解决方案。我有一个形状,作为两个非常相似的形状的基础。这些形状几乎继承了所有内容,但交换了两个锚点(我目前在两个形状中手动定义)。
答案1
当然。定义
\def\pgf@sh@inheritanchoras[from=#1]#2#3{%
\edef\pgf@marshal{\global\let\expandafter\noexpand\csname
pgf@anchor@\pgf@sm@shape@name @#3\endcsname=\expandafter\noexpand\csname
pgf@anchor@#1@#2\endcsname}%
\pgf@marshal
}
并使用
\pgf@sh@inheritanchoras[from=baseshape]{someanchor}{differentanchorname}
应该differentanchorname
在当前的形状声明中使用baseshape
的定义someanchor
。
你当然可以说
\let\inheritanchoras\pgf@sh@inheritanchoras
不必使用@
-ridden 内部版本,但除非您\pgfdeclareshape
为此打补丁(或定义自己的版本),否则这也会\inheritanchoras
在 之外定义\pgfdeclareshape
。(其他宏如\inheritanchor
仅在 内部有效\pgfdeclareshape
。)