如果我想在曲线长度的某处(比如说 40%)画一条带箭头的曲线,我可以这样写:
\draw [decoration={
markings,
mark=at position 0.4 with \arrow{>}}
,postaction=decorate]
(A) to (B);
如果我想绘制许多具有相同装饰的曲线,我可以将其中的大部分放在一个范围内,并减少每条路径需要输入的内容。
但是,如果我想绘制许多具有不同参数的曲线 - 比如,每条曲线的箭头位置都不同,并且 < 或 > 的选择可能因曲线而异。那么我似乎需要为每条曲线输入大量内容。
我想要做的是定义这样的事情:
\newcommand\arrowdata[2]{decoration={
markings,
mark=at position #1 with \arrow{#2}}
,postaction=decorate}
然后我就可以轻松地画出箭头了:
\draw [\arrowdata{0.3}{>}] (A) to (B);
\draw [\arrowdata{0.95}{<}] (C) to (D) to (E);
等等。但是,这不起作用,我不明白由此产生的错误消息。显然,我对宏在 TikZ 中的应用方式的理解太天真了。有人能帮我吗?
答案1
如果未事先扩展样式定义中的宏,则它们将不起作用。您应该定义自己的样式。
\tikzset{arrow data/.style 2 args={%
decoration={%
markings,
mark=at position #1 with \arrow{#2}},
postaction=decorate}
}%
}
用法如下:
\draw [arrow data={0.3}{>}] (A) to (B);