Re: keyval e \DeclareOption

#27436
Up
0
Down
::

Grazie mille Enrico.

Purtroppo ho ancora dei problemi.
Prendiamo questo codice:

`
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{sapthesis}[2009/01/01 Sapienza University of Rome Ph.D. thesis class]

\DeclareOption{draft}{\typeout{sapthesis option 'draft' used} \PassOptionsToClass{\CurrentOption}{book}}
\DeclareOption{10pt}{\typeout{sapthesis option '10pt' used} \PassOptionsToClass{10pt}{book}}
\DeclareOption{11pt}{\typeout{sapthesis option '11pt' used} \PassOptionsToClass{11pt}{book}}
\DeclareOption{12pt}{\typeout{sapthesis option '12pt' used} \PassOptionsToClass{12pt}{book}}
\DeclareOption*{\PassOptionsToPackage{layaureo}{\CurrentOption}}
\ExecuteOptions{11pt}
\ProcessOptions\relax
\LoadClass[a4paper]{book}

\RequirePackage{layaureo}
`

Quando richiamo la classe, le opzioni draft e 12pt funzionano, l’opzione 10pt viene ignorata (viene stampato il messaggio nel log ma viene comunque usato il corpo a 11pt).
Se aggiungo alle opzioni della classe binding=1cm, anche questa opzione, inizialmente sconosciuta e che dovrebbe essere passata a layaureo, in realtà viene ignorata.

Posso aggirare il problema del 10pt, usando comandi come:
`
\newcommand{\@fontsize}{}

\DeclareOption{10pt}{\typeout{sapthesis option '10pt' used} \renewcommand{\@fontsize}{10pt}}

`

Però mi piacerebbe capire se c’è qualcosa di sbagliato in quello che ho scritto o in generale come usare i comandi “standard”.

Il problema dell’opzione 10pt è molto sottile. La classe book esegue il comando
`\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,final,openright}`
La tua esegue sempre le opzioni 11pt e a4paper, che passa a book.cls; se dai nel tuo documento l’opzione 10pt hai l’esecuzione delle opzioni

letterpaper
10pt
twoside
onecolumn
final
openright
11pt
a4paper
10pt

ma l’ultima è già stata data e quindi non ha effetto. Occorre qualche trucco molto più complesso per avere come default 11pt e però poter scegliere anche il corpo 10. Provo a pensarci.

Sulle opzioni da passare a layaureo per ora passo.

Ciao
Enrico

Go to top