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
은 명령을 받도록 설계되었습니다.이름첫 번째 주장으로. 현재 이름을 구성하려면 다음을 사용해야 합니다.\expandafter
\DeclareDocumentCommand\DeclareTest{m}{%
\expandafter\DeclareDocumentCommand\csname test#1\endcsname{}{This is a test}%
}
현재 내부적으로 이를 수행하는 '변형'이 없는 이유는 '동적' 명령이 개념적 관점에서 문제가 있기 때문입니다. 의 구문은 xparse
문서에 대해 어떤 새 명령이 생성되기 시작하는지 코드 내에서 명확하게 하기 위한 것이므로 '즉시' 명령을 구성하는 것은 실제로 목표가 아닙니다. 그러나 이는 여전히 실제 사용 사례의 좋은 예를 바탕으로 논의가 필요한 영역이라고 생각합니다.