pgfkeys zurücksetzen / pgfkeys löschen

pgfkeys zurücksetzen / pgfkeys löschen

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\undefineddem 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 \myvectorsetAufruf in eine Gruppe einfügen, damit die PGF-Tastendefinitionen lokal für Ihr \myvectorMakro 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.
}

verwandte Informationen