如何使用 l3keys 的 .cs_set:Np 键属性?

如何使用 l3keys 的 .cs_set:Np 键属性?

文档l3keys说:

.cs_set:Np ⟨key⟩ .cs_set:Np = ⟨control sequence⟩ ⟨arg. spec.⟩

定义⟨key⟩设置⟨control sequence⟩⟨arg. spec.⟩替换文本 ⟨value⟩

但我不明白如何.cs_set:Np使用这个关键属性。事实上,在以下 MCE 中:

  • key-one .code:n = \__mymodule_ditto:n #1给出了预期的结果,
  • key-two .cs_set:Np = \__mymodule_ditto:n #1给出一个空的结果。

您能解释一下如何使用.cs_set:Np关键属性吗?

\documentclass{article}
\begin{document}
\ExplSyntaxOn
\keys_define:nn { mymodule }
{
  key-one .code:n    = \__mymodule_ditto:n #1 ,
  key-two .cs_set:Np = \__mymodule_ditto:n #1
}
\cs_set:Npn \__mymodule_ditto:n #1
  {
    #1
  }
\begin{enumerate}
\item \keys_set:nn { mymodule } { key-one = { Once~ upon~ a~ time,~ ... } }
\item \keys_set:nn { mymodule } { key-two = { Once~ upon~ a~ time,~ ... } }
\end{enumerate}
\ExplSyntaxOff
\end{document}

在此处输入图片描述

答案1

该键定义/重新定义命令:

\documentclass{article}
\begin{document}
\ExplSyntaxOn
\keys_define:nn { mymodule } { 
  key-two .cs_set:Np = \__mymodule_ditto:nn #1 #2
 } 

\keys_set:nn { mymodule } { key-two = { Once~ upon~ a~ time,~ #1,~#2 
    ... } } 

\__mymodule_ditto:nn{hallo}{world}\par

\keys_set:nn { mymodule } { key-two = { #1!!!} }

\__mymodule_ditto:nn{hallo}{world}

\ExplSyntaxOff
\end{document}

在此处输入图片描述

相关内容