Tengo un comando que toma múltiples argumentos, uno de los cuales es una estrella:
\NewDocumentCommand{\foo}{ s m m }{
\IfBooleanTF{#1}{Asterisk is here.}{Asterisk is not here.} #2 #3.
}
Me gustaría definir otro comando que funcione como el primero, pero con algunos argumentos predefinidos, como
\NewDocumentCommand{\baz}{ s m }{
\IfBooleanTF{#1}{
\foo*{#2}{a}
}{
\foo{#2}{a}
}
}
\baz
y \baz*
funcionan de la misma manera, por lo que me gustaría definir de alguna manera \baz
sin repetir la {#2}{a}
parte dos veces. Yo he tratado
\NewDocumentCommand{\baz}{ s m }{
\expandafter\foo\IfBooleanT{#1}{*}{#2}{a}
}
pero no 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}
Respuesta1
Como TeX funciona mediante expansión macro, no es necesario tenertodode los argumentos a favor \foo
en el condicional, por lo que solo podemos tener la 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}