여러 인수를 사용하는 명령이 있는데 그 중 하나는 별표입니다.
\NewDocumentCommand{\foo}{ s m m }{
\IfBooleanTF{#1}{Asterisk is here.}{Asterisk is not here.} #2 #3.
}
첫 번째 명령처럼 작동하지만 다음과 같이 미리 정의된 인수를 사용하는 또 다른 명령을 정의하고 싶습니다.
\NewDocumentCommand{\baz}{ s m }{
\IfBooleanTF{#1}{
\foo*{#2}{a}
}{
\foo{#2}{a}
}
}
\baz
같은 방식으로 작업 하기 때문에 그 부분을 두 번 반복하지 않고 \baz*
어떻게든 정의하고 싶습니다 . 나는 시도했다\baz
{#2}{a}
\NewDocumentCommand{\baz}{ s m }{
\expandafter\foo\IfBooleanT{#1}{*}{#2}{a}
}
하지만 작동하지 않습니다. MWE 완료
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\foo}{ s m m }{
\IfBooleanTF{#1}{Asterisk is here.}{Asterisk is not here.} #2 #3.
}
\NewDocumentCommand{\baz}{ s m }{
\IfBooleanTF{#1}{
\foo*{#2}{a}
}{
\foo{#2}{a}
}
}
\begin{document}
\baz{b}
\baz*{c}
\end{document}
답변1
TeX는 매크로 확장으로 작동하므로모두\foo
조건부 인수 에 대한 인수 이므로 고유한 부분만 가질 수 있습니다.
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\foo}{ s m m }{%
\IfBooleanTF{#1}{Asterisk is here.}{Asterisk is not here.} #2 #3.%
}
\NewDocumentCommand{\baz}{ s m }{%
\IfBooleanTF{#1}%
{\foo*}%
{\foo}%
{#2}{a}%
}
\begin{document}
\baz{b}
\baz*{c}
\end{document}