是否有与 expl3 中的 \providecommand 等效但允许:c
说明符的东西?给定一个字符串作为命令名称,我需要按以下方式定义新命令:
- 如果命令存在,则不定义它
- 如果该命令不存在,则定义它,但当用户再次尝试定义该命令时,该定义将被直接覆盖而不会引发错误。
这样做的原因是我希望在包中提供一些快捷宏,但我希望“悄悄地”执行此操作,即不覆盖现有的宏,也不阻止用户定义自己的版本。我知道有一个\ProvideDocumentCommand
,但它似乎只接受:N
参数作为命令名称。
答案1
下一个 latex 版本(已pdflatex-dev
在 texlive 中提供)将允许您使用
\documentclass{article}
\ExpandArgs{c}\ProvideDocumentCommand{zzz}{m}{abc#1xyz}
\begin{document}
\zzz{123}
\end{document}