TikZ 样式的可选参数

TikZ 样式的可选参数

我定义了一个 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}

在此处输入图片描述

相关内容