¿Existe una manera fácil de borrar/restablecer/eliminar pgfkeys? Primero pensé que tal vez el comando guarda los valores antiguos. Pero también con \let\mbftext\undefined
el valor de, por ejemplo, la clave de texto sigue ahí. Quiero que no haya texto en el segundo myvector. Por supuesto text=
que sería posible, pero no es una buena manera.
\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}
Respuesta1
Debe colocar la \myvectorset
llamada en un grupo, para que las definiciones de las claves pgf permanezcan locales en su \myvector
macro.
\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.
}