感谢egreg
的回答这里我创建了一个涉及键/值样式拆分可选参数的命令。
该expl3
语法允许指示每个键的默认值。
我的可选参数中的默认值分别是:
x.initial:n = -74,
y.initial:n = 0,
sa.initial:n = 8,
ea.initial:n = 150,
r.initial:n = 110,
我想知道是否可以以这样的方式编程命令,以便我能够在调用它时使用相对值,即,如果默认值是 150 并且您需要 150.1 的值,那么您只需指示 0.1 的相对值。
由于这一点,我就不必记住默认值,而只需要考虑相对于我视觉上认为的标准设置的转变。
MWE中给出的原始命令是:
\coolphase[x=-72,y=2,sa=8.1,ea=152.3,r=109.9]{nab}
现在,我希望能够输入以下内容:
\coolphase[x=2,y=2,sa=0.1,ea=2.3,r=-0.1]{nab}
平均能量损失
\documentclass{article}
\usepackage[linguistics]{forest}
\NewDocumentCommand{\coolphaseaux}{mmmmmm}{%
\draw[dotted,thick]([xshift=#1pt,yshift=#2pt]#6) arc[start angle=#4,end angle=#5,radius=#3cm];
}
\ExplSyntaxOn
\NewDocumentCommand{\coolphase}{O{}m}
{
\group_begin:
\keys_set:nn{coolphase}{#1}
\coolphase:VVVVVn
\coolphase_x
\coolphase_y
\coolphase_sa
\coolphase_ea
\coolphase_r
{#2}
\group_end:
}
\keys_define:nn{coolphase}
{
x.tl_set:N = \coolphase_x,
y.tl_set:N = \coolphase_y,
sa.tl_set:N = \coolphase_sa,
ea.tl_set:N = \coolphase_ea,
r.tl_set:N = \coolphase_r,
x.initial:n = -74,
y.initial:n = 0,
sa.initial:n = 8,
ea.initial:n = 150,
r.initial:n = 110,
}
\cs_set_eq:NN\coolphase:nnnnnn\coolphaseaux
\cs_generate_variant:Nn\coolphase:nnnnnn{VVVVV}
\ExplSyntaxOff
\begin{document}
\begin{forest}
[ASP[\textit{subject}][Asp
[asp][POL
[AdvP[\textit{non},roof]][Pol
[pol, name=nab][aP
[~][a'
[a][root]]]]]]]
\coolphase[x=-75,y=2,ea=150.1,sa=8.1,r=109.9]{nab}
\end{forest}
\end{document}