使用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
旨在在程式碼中清楚地表明為文件創建哪些新命令,因此「即時」建立它們實際上並不是目的。然而,我認為這仍然是需要根據實際用例中的好例子進行討論的領域。