Die Grundidee stammt vonWie kann ich in TikZ neue Befehle erstellen?
\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=Label,
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=\mbftextalign,text=\mbftext,raise=\mbfraise}}](#2)(180:1:\mbfradius);
}
\begin{document}
\begin{tikzpicture}
\myvector[text align=right,raise=-1.25mm](0,0);
\end{tikzpicture}
\end{document}
Es funktioniert. Aber leider, wenn ich benutze
\myvector[text align={right,right indent=1cm},raise=-1.25mm](0,0);
Das Ergebnis ist
! Fehler im Paket pgfkeys: Ich kenne den Schlüssel „/pgf/decoration/text align/righ t,right indent=1cm“ nicht und werde ihn ignorieren. Vielleicht haben Sie ihn falsch geschrieben.
Ich habe über Schlüsselhandler gelesen, aber keinen Ausweg gefunden.
Antwort1
In diesem Fall .expand once
ist der Handler nützlich. In der myvector
Makrodefinition steht irgendwo:
text align=\mbftextalign
text align
Sie möchten die Erweiterung des Makros festlegen \mbftextalign
. Dies können Sie ganz einfach mit folgendem Befehl tun:
text align/.expand once=\mbftextalign
Natürlich sollten Sie die gleiche Änderung mit den anderen Schlüsseln vornehmen, bei denen eine Erweiterung erforderlich ist.