我定义了一个 TikZ 风格的“midcircle”,它用中间的一个小圆圈来装饰路径(使用 decorations.markings 库,设置“pos=0.5”)。例如
\draw (0,0)edge[midcircle](1,0);
会画一条直线,中间有一个圆圈。现在我想通过定义另一种样式(比如“midcirclepos”)来改变圆圈的位置,例如
\draw (0,0)edge[midcircle,midcirclepos=0.7](1,0);
将在“pos=0.7”而不是“pos=0.5”处绘制圆。我想我见过这样的构造,但我找不到更多如何实现它的方法。
顺便说一句,我不能使用 TikZ 样式的通常默认参数,因为我的“midcircle”已经采用了其他也有默认值的参数。
答案1
定义一个键midcirclepos
,以一个值作为参数并将其存储在宏中\midcirclepos
。用它初始化0.5
并使用它\midcirclepos
来访问该值。
\tikzset{midcirclepos/.store in=\midcirclepos,midcirclepos=0.5}
这里有一个例子,也表明改变midcirclepos
是暂时的。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\tikzset{midcirclepos/.store in=\midcirclepos,midcirclepos=0.5}
\begin{document}
\begin{tikzpicture}[
midcircle/.style = {
postaction={decorate},
decoration = {
markings,
mark = at position \midcirclepos
with {\draw (0,0) circle (0.1);}
},
}
]
\draw (0,0) edge [midcircle] (1,0);
\draw (0,-1) edge [midcircle,midcirclepos=0.7] (1,-1);
\draw (0,-2) edge [midcircle] (1,-2);
\end{tikzpicture}
\end{document}