如果键是字符串,我该如何使用 pgfkey 来放置锚点?
先前的答案暗示可以使用数字键来设置基于键的锚点(比如这个问题根据 pgfkey 值创建 Tikz 锚点)或布尔(“if”)键(比如这个问题如何根据参数定义位置锚点),但是我还没有找到使用字符串的类似示例,也没有修改这些示例以使用字符串。
举一个简单的例子,在(无功能)下面的代码我希望能够使用elevation
键来改变东北锚的位置(据我了解,该ifthen
包是被认为已经过时但我在这里用它是因为我认为它最清楚地表达了我所追求的行为):
\documentclass[border=10pt]{standalone}
\usepackage{tikz, ifthen}
\makeatletter
\pgfkeys{/tikz/elevation/.initial=low}
\pgfdeclareshape{myLine}{
\savedanchor{\anchorA}{
\pgf@x=3cm
\ifthenelse{\equal{low}{\pgfkeysvalueof{/tikz/elevation}}}
{\pgf@y=1cm}{}
\ifthenelse{\equal{medium}{\pgfkeysvalueof{/tikz/elevation}}}
{\pgf@y=3cm}{}
\ifthenelse{\equal{high}{\pgfkeysvalueof{/tikz/elevation}}}
{\pgf@y=5cm}{}
}
\anchor{center}{\pgfpointorigin}
\anchor{top right}{\anchorA}
\backgroundpath{
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\anchorA}
\pgfusepath{stroke}
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw [help lines, dashed, gray] (0,0) grid (5,5);
\node [myLine, elevation=value] (L) {};
\draw [red] (L.top right) circle (0.2cm);
\end{tikzpicture}
\end{document}
\node [myLine, elevation=value]
下图显示了根据提供的键产生的(期望的)行为。
答案1
示例代码确实实现了我想要的功能。显然,在尝试创建“不完整”答案的过程中,我解决了这个问题。
感谢 Rmano 和 frougon 指出我的疏忽。