我试图让pin
edge
触摸另一个人edge
,在以下影响下shorten
:
\begin{tikzpicture}[s/.style={->,shorten >=1ex,shorten <=1ex}]
\node (a) at (180:1) {$a$};
\node (b) at (270:1) {$b$};
\path[s,bend right=10] (a) edge node[pin={[pin edge={line to,-,shorten >=0ex,shorten <=0ex}]45:test}]{} (b);
\end{tikzpicture}
产量
这是因为创建的节点有一定的空间,所以我想到做一个协调风格:
\begin{tikzpicture}[s/.style={->,shorten >=1ex,shorten <=1ex}]
\node (a) at (180:1) {$a$};
\node (b) at (270:1) {$b$};
\path[s,bend right=10] (a) edge node[coordinate,pin={[pin edge={line to,-,shorten >=0ex,shorten <=0ex}]45:test}]{} (b);
\end{tikzpicture}
...这导致了这个看起来很有趣的构造,其中第一个边失去了风格s
,但保留了bend left
属性:
只是为了好玩我尝试使用coordinate
而不是node[coordinate]
\begin{tikzpicture}[s/.style={->,shorten >=1ex,shorten <=1ex}]
\node (a) at (180:1) {$a$};
\node (b) at (270:1) {$b$};
\path[s,bend right=10] (a) edge coordinate[pin={[pin edge={line to,-,shorten >=0ex,shorten <=0ex}]45:test}] (b);
\end{tikzpicture}
这显然是个坏主意
答案1
避免继承问题可能更容易,只需分两步完成即可:
\path [s, bend right] (a) edge coordinate (@aux) (b);
\path [late options={name=@aux, pin=45:test}];
坐标名称@aux
只是一个一次性的(aux
辅助的),因为您可能不会再次引用该坐标。
该late options
选项的解释如下PGF 手册在第 200f 页。
大多数这些选项都不会产生效果,因为您无法更改节点的外观,也就是说,您无法使用后期选项将红色节点更改为绿色节点。但是,在 中(直接或间接)提供
append after command
和选项确实会产生预期的效果:给定的路径会执行,并将设置为确定的节点。prefix after command
<options>
\tikzlastnode
所有这些的最终效果是,您可以提供
label
选项,例如,<options>
将标签添加到已构建的节点。同样,您可以使用选项on chain
将已成为<existing node>
链的一部分。
笔记:
pin
与 非常相似label
。\chainin [<options>] (<existing name>)
其实只是\path (<existing name>) [late options={on chain,every chain in,<options>}]
答案2
该死……整天都在断断续续地思考这个问题,就在我发布问题后,我突然有了一个主意。只需将尺寸设置为 0 即可模拟样式coordinate
,呵呵!
这当然可以通过 来完成inner sep=0, minimum size=0
。
\begin{tikzpicture}[s/.style={->,shorten >=1ex,shorten <=1ex}]
\node (a) at (180:1) {$a$};
\node (b) at (270:1) {$b$};
\path[s,bend right=10] (a) edge node[inner sep=0,minimum size=0,pin={[pin edge={line to,-,shorten >=0ex,shorten <=0ex}]45:test}]{} (b);
\end{tikzpicture}
尽管结果非常接近,但还没有达到预期。
因此我不愿意接受我自己的答案。