Re: Come scrivere un comando con opzioni?

#23403
Up
0
Down
::

Come prima, se non commento la linea contenente \ifseingola non riesco a compilare e se lo faccio mi rimane la linea sotto la prima firma…
Ma dov’è definito \ifsingola?

Evidentemente è saltata dal copia-incolla: subito dopo \makeatletter metti \newif\ifsingola.
`\documentclass[a4paper,draft]{article}
\usepackage{lipsum,calc,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\ifsingola
\newif\iflineabase
\def\sigla{}
\define@key{firma}{sigla}{\def\sigla{#1}}
\define@key{firma}{lineabase}[false]{\@nameuse{lineabase#1}}
\makeatother

\newcommand{\firmadoppia}[5][]{\setkeys{firma}{#1}\par
% \expandafter\show\csname iflineabase\endcsname % per debug
\hbox to\hsize{%
\rlap{\sigla}\hfil
\ifsingola\expandafter\phantom\fi
{\componifirma{#2}{#3}}\hfil\componifirma{#4}{#5}}}

\newcommand{\firma}[3][]{\singolatrue\firmadoppia[#1]{}{}{#2}{#3}}
\newcommand\firmatripla[7][]{\firmadoppia[#1]{#2}{#3}{#4}{#5}
\medskip
\hbox to\hsize{\hfill\componifirma{#6}{#7}\hspace{.25\textwidth}}}

\begin{document}

\firmatripla[lineabase=true]
{Il Direttore Galattico}{Dott. Paperino Paolo}
{Il Direttore}{Dott. Paperino Paolo}
{Il Direttore}{Dott. Paperino Paolo}

\firmadoppia
{Il Direttore}{Dott. Paperino Paolo}
{Il Direttore}{Dott. Paperino Paolo}

\firma
{Il Direttore}{Dott. Paperino Paolo}

\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=true]{Il Direttore Galattico}{Lupo de Lupis}

\end{document}`
Ciao
Enrico

Go to top