如何在 LaTeX 中用括号添加标记列表的值?

如何在 LaTeX 中用括号添加标记列表的值?

在我的 LaTeX3 代码中,我经常发现自己想要将一个标记列表(或其他变量)的值添加到另一个标记列表(或其他变量)中,但却被括号包围(一个常见的用例是我构造一个稍后要调用的命令,我需要做一些复杂的计算来构造它的参数)。

我最近有以下想法:

\cs_new_nopar:Npn \tl_put_right_braced:Nn #1#2
{
  \tl_put_right:Nn #1 {{#2}}
}

\cs_generate_variant:Nn \tl_put_right_braced:Nn {NV}

这样,我想我可以利用已经嵌入在 LaTeX3 中的变体内容,而不必自己弄清楚正确的扩展。

因此,我的问题本质上是“这样可以吗?”,附带的问题是“有没有更好的方法?”(以及可选的甜点“我应该如何称呼这个函数?”)。

答案1

执行赋值的函数应该是protected。我认为没有理由使用nopar,如果这必须是一个通用实用程序,那就更没有理由了。

如果你有多个通用实用程序,那么你应该有一个asutils可以定义(并注册)前缀的包,例如asutils。现在你的函数将是

\cs_new_protected:Nn \asutils_tl_put_right_braced:Nn
 {
  \tl_put_right:Nn #1 { { #2 } }
 }
\cs_generate_variant:Nn \asutils_tl_put_right_braced:Nn { NV, cV, cv, Nx, cx }

是否需要陪伴gput,由你来判断。

该前缀tl是为内核保留的,不应被任何其他人使用。

相关内容