Prova questo codice, negli esempi gli spazi dopo le virgole sono necessari:
`
\documentclass{article}
\makeatletter
\newcommand\lista[2][\upshape]{\def\fontlista{#1}\@lista#2,!}
\def\@lista#1,#2,#3!{\def\@tempA{#2}\def\@tempB{{\fontlista #1}}\def\@tempC{{\fontlista #1},\@lista#2,#3,!}
\ifx\@tempA\empty\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi\@tempB\@tempC}
\begin{document}
\lista[\bfseries]{pippo, pluto, paperino}
\lista[\scshape]{topo, ratto, mustelide}
\end{document}
`
In questo modo la lista ti viene formattata, tranne le virgole, in nero nel primo esempio, e in maiuscoletto nel secondo; l’importante è che il primo argomento facoltativo sia formato da una o più dichiarazioni relative ai font, tipo \large, \upshape, \itshape \sffamily, eccetera, anche più di una, ma non siano usati i relativi comandi, come per esempio \textbf, che richiedono un argomento (si potrebbe definire la macro \@lista differentemente per usare questa possibilità ma bisognrebbe usare dichiarazioni lo stesso se se ne devono usare più di una.
Poi naturalmente ti puoi deifnire dei comandi più semplici come interfaccia tra te e il comando \lista, per esempio
`
\newcommand\insiemeA{\lista[\fseries]}
\newcoomand\insiemeB{\lista[\scshape]}
\newcommand\insiemeC{\lista[\bfseries\itshape]}
…
`
scegliendo al posto di \insiemeA, \insiemeB,…, dei nomi mnemonici più adatti. Tieni presente che la lista dei nomi può contenere anche un solo nome.