pgfkeys를 지우거나 재설정하거나 삭제하는 쉬운 방법이 있습니까? 처음에는 명령이 이전 값을 저장할 수도 있다고 생각했습니다. 그러나 \let\mbftext\undefined
예를 들어 텍스트 키의 값도 여전히 존재합니다. 두 번째 myVector에는 텍스트가 없기를 원합니다. 물론 text=
가능하겠지만 좋은 방법은 아닙니다.
\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}
답변1
\myvectorset
pgf 키 정의가 매크로에 로컬로 유지되도록 호출을 그룹에 넣어야 합니다 \myvector
.
\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.
}