基本思想来自如何在 TikZ 中创建新命令?
\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}
它有效。但不幸的是,如果我使用
\myvector[text align={right,right indent=1cm},raise=-1.25mm](0,0);
结果是
! 软件包 pgfkeys 错误:我不知道键 '/pgf/decoration/text align/righ t,right indent=1cm',我将忽略它。也许您拼错了。
我读过有关密钥处理程序的信息,但没有找到出路。
答案1
在这种情况下,.expand once
处理程序很有用。在myvector
宏定义中,有某处:
text align=\mbftextalign
您想要的是设置text align
为宏的扩展\mbftextalign
。您可以使用以下命令轻松完成此操作:
text align/.expand once=\mbftextalign
当然其他需要扩展的键也应该做同样的修改。