Gibt es eine einfache Möglichkeit, pgfkeys zu löschen? Zuerst dachte ich, dass der Befehl vielleicht die alten Werte speichert. Aber auch bei \let\mbftext\undefined
dem Wert von zB ist der Textschlüssel immer noch da. Ich möchte, dass im zweiten Myvector kein Text vorhanden ist. Das wäre natürlich text=
möglich, aber es ist kein schöner Weg.
\documentclass[10pt]{article}
\usepackage[a4paper,top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc,arrows.meta,bending,decorations.text,positioning}
\def\centerarct[#1](#2)(#3:#4:#5)% Syntax: [draw options] (center) (start angle:end angle:radius)
{ \path[#1] ($(#2)+({#5*cos(-#3+90)},{#5*sin(-#3+90)})$) arc [start angle={-#3+90}, end angle={-#4+90}, radius=#5)]; }
\pgfkeys{
myvector/.is family,
myvector,
radius/.initial=4.5cm,
line width/.initial =5mm,
color/.initial=orange,
text align/.initial=center,
text/.initial,
raise/.initial=0mm
}
\newcommand\myvectorset[1]{\pgfkeys{myvector,#1}}
\def\myvector[#1](#2){
\myvectorset{#1,
radius/.get=\mbfradius,
line width/.get=\mbflinewidth,
color/.get=\mbfcolor,
text align/.get=\mbftextalign,
text/.get=\mbftext,
raise/.get=\mbfraise
}
\centerarct[{Triangle[width=9mm,length=5mm]}-,draw=\mbfcolor,line width=\mbflinewidth,postaction={decorate,decoration={text along path,text align/.expand once=\mbftextalign,text=\mbftext,raise=\mbfraise}}](#2)(180:1:\mbfradius);
\let\mbftext\undefined
}
\begin{document}
\begin{tikzpicture}
\myvector[text align={right,right indent=1cm},raise=-1.25mm,text=Test (0,0);
\myvector[{text align={right,right indent=1cm}},raise=-1.25mm,radius=6cm](0,0);
\end{tikzpicture}
\end{document}
Antwort1
Sie sollten den \myvectorset
Aufruf in eine Gruppe einfügen, damit die PGF-Tastendefinitionen lokal für Ihr \myvector
Makro bleiben.
\def\myvector[#1](#2){
\begingroup
\myvectorset{#1,
radius/.get=\mbfradius,
line width/.get=\mbflinewidth,
color/.get=\mbfcolor,
text align/.get=\mbftextalign,
text/.get=\mbftext,
raise/.get=\mbfraise
}
\centerarct[
{Triangle[width=9mm,length=5mm]}-,
draw=\mbfcolor,
line width=\mbflinewidth,
postaction={
decorate,
decoration={
text along path,
text align/.expand once=\mbftextalign,
text=\mbftext,
raise=\mbfraise
}
}
](#2)(180:1:\mbfradius);
\endgroup % When leaving a group, local definitions are reverted.
}