编写一个键/值样式的可选参数(expl3 命令),使得必须使用相对值

编写一个键/值样式的可选参数(expl3 命令),使得必须使用相对值

感谢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}

相关内容