定義命令以使用 xparse 定義名稱使用參數的命令

定義命令以使用 xparse 定義名稱使用參數的命令

使用xparse我想建立一個定義其他命令的命令。不過,我希望輔助命令由文字組成,然後是第一個命令的參數。例如

例如下面的例子

\documentclass{article}
\usepackage{xparse}
\begin{document}

\ExplSyntaxOn
\DeclareDocumentCommand{\DeclareTest}{m}{%
%
\DeclareDocumentCommand{\csname test#1\endcsname}{}{This is a #1 test}
}
\ExplSyntaxOff

\DeclareTest{work}
\testwork

\end{document}

我希望\testwork成為一個計算結果為 的命令This is a work test。然而,當我這樣做時,我收到一個"xparse/bad-arg-spec"錯誤,我不知道為什麼。

答案1

正如 和 的情況一樣\newcommand\DeclareDocumentCommand親戚被設計來接管ta的指揮權姓名作為第一個參數。目前,如果您想建構名稱,則需要使用\expandafter

\DeclareDocumentCommand\DeclareTest{m}{%
  \expandafter\DeclareDocumentCommand\csname test#1\endcsname{}{This is a test}%
}

目前沒有可用的“變體”在內部執行此操作的原因是“動態”命令從概念的角度來看是有問題的。的語法xparse旨在在程式碼中清楚地表明為文件創建哪些新命令,因此「即時」建立它們實際上並不是目的。然而,我認為這仍然是需要根據實際用例中的好​​例子進行討論的領域。

相關內容