Rimando a dopo, adesso devo fuggire al treno. 👿
Eccomi qui. Adesso vediamo un po’ di cose: come ti ho detto, più argomenti opzionali sono da escludere. La sintassi preferibile è
`\firma{Il Direttore Galattico}{Lupo de Lupis}
\firma[sigla=/ab/cd]{Il Direttore Galattico}{Lupo de Lupis}
\firma[sigla=/ab/cd,lineabase]{Il Direttore Galattico}{Lupo de Lupis}
\firma[lineabase]{Il Direttore Galattico}{Lupo de Lupis}`
e dovrebbe essere chiaro ciò che si intende; per \firmadoppia e \firmatripla basta aggiungere gli opportuni argomenti opzionali. Ecco il codice, occorre il pacchetto xkeyval (basta anche keyval, ma conviene usare il più potente):
`\usepackage{xkeyval}
\newcommand{\stileruolo}[1]{{\fontfamily{ptm}\selectfont\textsc{#1}}}
\newcommand{\stilenominativo}[1]{#1}
\newcommand{\firmabox}[1]{\makebox[.333\textwidth]{\hss#1\hss}}
\newcommand{\componifirma}[2]{%
\begin{tabular}[t]{@{}c@{}}
\firmabox{\stileruolo{#1}}\\
\firmabox{\stilenominativo{#2}}
\iflineabase\\\rule{0pt}{1cm}\rule{.333\textwidth}{0.4pt}\fi
\end{tabular}}
\makeatletter
\newif\iflineabase
\def\sigla{}
\define@key{firma}{sigla}{\def\sigla{#1}}
\define@key{firma}{lineabase}[true]{\lineabasetrue}
\makeatother
\newcommand{\firmadoppia}[5][]{\setkeys{firma}{#1}\par
\hbox to\hsize{%
\rlap{\sigla}\hfil
\ifsingola\expandafter\phantom\fi
{\componifirma{#2}{#3}}\hfil\componifirma{#4}{#5}}}
\newcommand{\firma}[3][]{\firmadoppia[#1]{}{}{#2}{#3}}
\newcommand\firmatripla[7][]{\firmadoppia[#1]{#2}{#3}{#4}{#5}
\medskip
\hbox to\hsize{\hfill\componifirma{#6}{#7}\hspace{.25\textwidth}}}`
Non ci sono grandi differenze da quello di prima. L’unica cosa è modificare dove si pone la sigla, che viene definita tramite la chiave. Ho anche aggiunto il condizionale che è normalmente falso (quindi la linea non viene composta). Se viene data l’opzione “lineabase” invece il condizionale diventa vero e la linea esce.
Dopo tutto non è così difficile. Se hai altre opzioni si tratta di capire come realizzarle.
C’è solo un altro bieco trucco: se la firma è singola e si deve comporre la linea di base, occorre evitare che venga anche quella sulla prima; con quel \phantom si ottiene ciò che si vuole: il comando \firma attiva lo switch \ifsingola; se questo è vero entra in azione \phantom che vede il \componifirma relativo alla prima firma come argomento. Se invece siamo con \singolafalse, come è usuale, la coppia di graffe non fa male.
Non che il tutto mi piaccia tantissimo, probabilmente bisognerebbe ripensare alla faccenda da capo. Ma è un punto di partenza per capire come funziona l’interfaccia “chiave=valore”.
Ciao
Enrico