17 Novembre 2007 alle 23:04
#18886
::
Vorrei creare un comando \cmd con questo comportamento.
Se chiamo \cmd esso mi deve dare a mentre se chiamo \cmd* mi deve dare b.
Lo potrei fare con il costrutto \if\case e scrivere \cmd[0] o \cmd[1]; ma io voglio sapere se e come farlo con l’asterisco.
`\newcommand\cmd{\@ifstar\@cmds\@cmd}
\newcommand\@cmds{b}
\newcommand\@cmd{a}`
Gli eventuali argomenti devono essere nella definizione di \@cmds e \@cmd. Si può adottare una definizione abbreviata se non ci sono argomenti:
`\newcommand{\cmd}{\@ifstar{b}{a}}`
Trovi parecchi esempi in latex.ltx; tutto va fra \makeatletter e \makeatother: tu lo sapevi di certo, altri magari si troverebbero in ambasce provando. 🙂
Ciao
Enrico