별표로 명령 정의

별표로 명령 정의

여러 인수를 사용하는 명령이 있는데 그 중 하나는 별표입니다.

\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}

관련 정보