将符号传递给命令

将符号传递给命令

我打算使用用户定义的符号来打印彩色 QED。建议不要使用两个连续的可选参数来制作命令。该怎么办?有没有一种巧妙的方法来实现这一点?

\documentclass[a4paper,12pt]{article}

\usepackage{xcolor}

\ExplSyntaxOn

\definecolor{dblue}{RGB}{0,0,139}
\colorlet{celestk}{dblue}

\NewDocumentCommand{\wvQed}{O{celestk}oO{$\nabla$}}
  {
    \begingroup
      \IfNoValueTF{#2}{\color{#1}}{\color[#1]{#2}}
      \hfill{#3}
    \endgroup
  }

\ExplSyntaxOff

\begin{document}

Fundador is the Spanish Brandy \wvQed[$\alpha$]

\end{document}

答案1

键值对是什么样的?

例子

请注意,如果没有被覆盖,这些设置将会在咒语中持续存在。

平均能量损失

\documentclass{article}
\usepackage{fontspec}
\usepackage{xcolor}
\setmainfont{NotoSerif}



\definecolor{dblue}{RGB}{0,0,139}
\colorlet{celestk}{dblue}

\ExplSyntaxOn

\tl_new:N \l_wvqed_model_tl
\tl_new:N \l_wvqed_colour_tl
\tl_new:N \l_wvqed_symbol_tl

\keys_define:nn { wvqed }
  {

    colour-model .tl_set:N = \l_wvqed_model_tl,
    colour-model .default:n = {},
    colour-model .initial:n = {},

    colour .tl_set:N = \l_wvqed_colour_tl,
    colour .default:n = {celestk},
    colour .initial:n = {celestk},

    symbol .tl_set:N = \l_wvqed_symbol_tl,
    symbol .default:n = {$\nabla$},
    symbol .initial:n = {$\nabla$},

  }




\NewDocumentCommand { \wvQED } { o } {

        \tl_if_novalue:nF{#1}
        { \keys_set:nn { wvqed } { #1 } } 

        \group_begin:
        
            \tl_if_empty:NTF
                \l_wvqed_model_tl
                {
                    \color { \l_wvqed_colour_tl }
                }
                {
                    \color [ \l_wvqed_model_tl ] { \l_wvqed_colour_tl }
                }
                
            \hfill
            \l_wvqed_symbol_tl
            
        \group_end:

}           




\ExplSyntaxOff


\begin{document}

$x=y$ \wvQED

$x_2$ \wvQED[colour=red]

$x_3$ \wvQED[colour={0,200,200},colour-model=RGB]

$x_4$ \wvQED[symbol={\Large !!}]

Fundador is the Spanish Brandy \wvQED[symbol=$\alpha$]

Fundador is the Spanish Brandy \wvQED[colour=black,colour-model={}]

\end{document}

相关内容