有时,我想在路径上添加箭头。完整的语法如下:
postaction=decorate,decoration={markings,mark={between positions <1> and <2> step <3> with {\arrow{latex}}}}
其中,<1>
<2>
<3>
我表示此装饰的参数,必须是 0 到 1 之间的两个数字和一个长度。目前,我有:
\tikzset{repmidarrow/.style={postaction=decorate,decoration={markings,mark={between positions 0.05 and 1 step #1 with {\arrow{latex}}}}}}
不幸的是,这不允许我指定任何东西,这就是指定和的<3>
原因,它们是我刚画的图片中的一个特殊情况。将来,如果我想要不同的位置,我必须设计另一个键或将完整的语法放在图片代码中,这会使代码变得更加混乱。不幸的是,据我所知,TikZ 键只能有一个参数。我当时想使用辅助键来提供额外的参数,并希望得到一些东西,使用:<1>
<2>
\draw[repmidarrow={from=<1>,to=<2>,step=<3>}] <path>;
给出:
\draw[postaction=decorate,decoration={markings,mark={between positions <1> and <2> step <3> with {\arrow{latex}}}} <path>;
有什么办法可以实现这个吗?PS:我希望我上面的牙套是匹配的。
我上面提到的图片是:
\begin{tikzpicture}
\draw[repmidarrow=25pt] (-2,0) -- (2,0) -- (0,2) -- cycle;
\clip (-2,0) -- (2,0) -- (0,2) -- cycle;
\draw[repmidarrow=25pt] (-.02,0) -- (-1.02,.98);
\draw[repmidarrow=25pt] (.98,.98) -- (.02,0);
\draw[repmidarrow=25pt] (-.98,1.02) -- (1.02,1.02);
\draw[repmidarrow=25pt,red] (0,0) -- (1,1) -- (-1,1) -- cycle;
\end{tikzpicture}
\tikzset
当然,编译时会用到上述内容和 TikZ 包。结果:
答案1
你已经快到了。如果要有多个参数,你可以使用显式style n args
处理程序在括号内连续提供所有参数,也可以使用自己的风格style args
(代码处理程序也是如此):
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\tikzset{
repmidarrownargs/.style n args={3}{
postaction=decorate,
decoration={
markings,
mark={between positions #1 and #2 step #3 with \arrow{latex}}
}
},
repmidarrowargs/.style args={#1and#2with step#3}{% Better to keep the spaces minimal
postaction=decorate,
decoration={
markings,
mark={between positions #1 and #2 step #3 with \arrow{latex}}
}
}
}
\begin{document}
\begin{tikzpicture}
\draw[style=help lines] (-1,-1) grid[step=1cm] (2,2);
\draw[repmidarrownargs={0.5}{1}{25pt}] (-.02,0) -- (-1.02,.98); % N args
\draw[repmidarrowargs=0.1 and 0.9 with step 5pt] (.98,.98) -- (.02,0);% args
\end{tikzpicture}
\end{document}