Anche secondo me la soluzione ideale è usare opzioni “chiave-valore”. Un esempio con pgfkeys:`
\documentclass{memoir}
\usepackage{pgfkeys,pdftexcmds}
\pgfkeys{/mio cmd/.cd,
primo/.store in=\primo,
primo={},
secondo/.store in=\secondo,
secondo={}
}
\makeatletter
\newcommand{\ncomando}[2][]{
{% da notare il gruppo
\pgfkeys{/mio cmd/.cd,#1}
\ifnum\pdf@strcmp{\primo}{}=\z@%
\ifnum\pdf@strcmp{\secondo}{}=\z@%
#2
\else
\secondo\ – #2
\fi%
\else%
\ifnum\pdf@strcmp{\secondo}{}=\z@%
\primo\ – #2
\else%
\primo\ – \secondo\ – #2
\fi%
\fi%
}% end gruppo
}
\makeatother
\begin{document}
\ncomando{terzo}
\ncomando[primo=primo]{terzo}
\ncomando{terzo} % funziona perché primo è locale quindi la precedente definizione non viene propagata
\ncomando[secondo=secondo]{terzo}
\ncomando[primo=primo, secondo=secondo]{terzo}
\ncomando[secondo=secondo, primo=primo]{terzo}
\end{document}
` Il risultato:
[attachment=891]ScreenShot2014-01-20at3.23.57PM.png[/attachment]
Ciao
Claudio