我打算使用用户定义的符号来打印彩色 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}