Определение команды со звездочкой

Определение команды со звездочкой

У меня есть команда, которая принимает несколько аргументов, одним из которых является звездочка:

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

Связанный контент