Re: estrarre le opzioni delle classi standard

#1640
Up
0
Down
::


Ecco, questa è una macro che estrae le opzioni a4paper,10pt,11pt,12pt,oneside,twoside da una qualinque lista separata da virgole.

`
\def\controllo#1,#2\fine{%
\def\temp@b{#1}%
\def\temp@c{a4paper}
\ifx\temp@b\temp@c
%il documento è a4

\fi
\def\temp@c{12pt}%
\ifx\temp@b\temp@c
%il documento è 12pt

\else
\def\temp@c{11pt}
\ifx\temp@b\temp@c
%il documento è 11pt

\else
\def\temp@c{10pt}
\ifx\temp@b\temp@c
%il documento è 10pt

\fi
\fi
\fi
\def\temp@c{oneside}
\ifx\temp@b\temp@c
%il documento è oneside

\else
\def\temp@c{twoside}
\ifx\temp@b\temp@c
%il documento è twoside

\fi
\fi
\def\temp@a{#2}%
\ifx\temp@a\@empty
\let\next\relax
\else
\def\next{\controllo#2\fine}%
\fi
\next
}
`

a parte riciclare quanto mi ha detto E. non è che ci abbia messo tanto del mio, ma commento lo stesso il codice:

`
\def\controllo#1,#2\fine{%
\def\temp@b{#1}%
\def\temp@c{a4paper}
\ifx\temp@b\temp@c
%il documento è a4
\fi
`

si suppone che la lista sia costituita da almeno un elemento, se ne salva il valore in \temp@b e si controlla se è uguale a a4paper.
controllo ha anche un secondo elemento, il secondo della lista, che eventualemnte può essere vuoto (lista costituita da un solo elemento).

`
\def\temp@c{12pt}%
\ifx\temp@b\temp@c
%il documento è 12pt

\else
\def\temp@c{11pt}
\ifx\temp@b\temp@c
%il documento è 11pt

\else
\def\temp@c{10pt}
\ifx\temp@b\temp@c
%il documento è 10pt

\fi
\fi
\fi
`

analogamente a quanto sopra, ma si controlla l’opzione della dimensione del carattere

`
\def\temp@c{oneside}
\ifx\temp@b\temp@c
%il documento è oneside

\else
\def\temp@c{twoside}
\ifx\temp@b\temp@c
%il documento è twoside

\fi
\fi
`

ora è il momento di oneside e twoside

`
\def\temp@a{#2}%
\ifx\temp@a\@empty
\let\next\relax
`

si controlla se l’elemnto successivo a quello controllato è vuoto e in tal caso si esce

`
\else
\def\next{\controllo#2\fine}%
\fi
\next
}
`

se la lista ha ancora degli elementi questi vengono ripassati in coda al comando \controllo, che ricomincia un altro ciclo.

grazie mille E. sei stato provvidenziale.
ora vado a mangià…
ciao a tutti
f

Go to top