Eu tenho um comando que aceita vários argumentos, um dos quais é uma estrela:
\NewDocumentCommand{\foo}{ s m m }{
\IfBooleanTF{#1}{Asterisk is here.}{Asterisk is not here.} #2 #3.
}
Gostaria de definir outro comando que funcione como o primeiro, mas com alguns argumentos predefinidos, como
\NewDocumentCommand{\baz}{ s m }{
\IfBooleanTF{#1}{
\foo*{#2}{a}
}{
\foo{#2}{a}
}
}
\baz
e \baz*
funciona da mesma forma, então gostaria de definir de alguma forma \baz
sem repetir a {#2}{a}
parte duas vezes. eu tentei
\NewDocumentCommand{\baz}{ s m }{
\expandafter\foo\IfBooleanT{#1}{*}{#2}{a}
}
mas não funciona. MWE completo
\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}
Responder1
Como o TeX funciona por expansão macro, não há necessidade de tertodosdos argumentos for \foo
na condicional, então podemos ter apenas a parte única:
\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}