\tikzset 具有多个参数的键

\tikzset 具有多个参数的键

有时,我想在路径上添加箭头。完整的语法如下:

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}

在此处输入图片描述

相关内容