如何使用带有三个或四个参数的“style n args”

如何使用带有三个或四个参数的“style n args”

在接下来的代码中,我想使用三个或四个参数。我试过了

[add/.style args={#1 and #2 with #3}{to path={% ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)% \tikztonodes coordinate[pos=-.25](#3)}}]

但我希望该with #3部分是可选的。

\documentclass{standalone} 
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document} 

\begin{tikzpicture}[add/.style args={#1 and #2}{to path={%
 ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)%
  \tikztonodes coordinate[pos=-.25](x)}}]

\coordinate (A) at (0,0);
\coordinate (B) at (3,2);
\draw[add=.5 and .5](A) to (B);
\foreach \point in {A,B,x}
\fill [red,opacity=.5] (\point) circle (2pt);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

您可能想尝试一种略有不同的方法。只需使用一个参数,但它是键的列表。这样,即使您稍后决定添加一些选项/键,语法也将始终相同。这些键可以具有默认/初始值,可以随意更改。您可以将这些键存储在目录中(我Alain在这里选择,但您当然会更改它),这样您就永远不会用尽名称空间。

\documentclass{standalone} 
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{tikzpicture}[
  add/.style={
    Alains settings={#1},
    to path={%
      ($(\tikztostart)!-\pv{first}!(\tikztotarget)$)--($(\tikztotarget)!-\pv{second}!(\tikztostart)$)%
      \tikztonodes coordinate[pos=\pv{pos}](\pv{coord})%
    }
  },
  Alains settings/.code={
    \tikzset{Alain/.cd,#1}
    \def\pv##1{\pgfkeysvalueof{/tikz/Alain/##1}}
  },
  Alain/.cd,
    first/.initial=0.5,
    second/.initial=0.5,
    coord/.initial=x,
    pos/.initial=-0.25
]
  \coordinate (A) at (0,0);
  \coordinate (B) at (3,2);
  \draw[add](A) to (B);
  \foreach \point in {A,B,x}
  {\fill [red,opacity=.5] (\point) circle[radius=2pt] node[above]{\point};}

 \begin{scope}[xshift=5cm]
  \coordinate (A) at (0,0);
  \coordinate (B) at (3,2);
  \draw[add={first=0.3,second=0.8,coord=y,pos=-0.4}](A) to (B);
  \foreach \point in {A,B,y}
  {\fill [red,opacity=.5] (\point) circle[radius=2pt] node[above]{\point};}
 \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

在左侧部分,键采用其初始/默认值,但在右侧部分,它们会发生改变。

我个人发现用法也更容易记住。

相关内容