warcomeb” post=66918
[quote=”antonio.macrì” post=66912]Anche se ormai Claudio ti avrà corretto il codice, ho cercato una spiegazione per il problema della lingua. E l’ho trovata! 🙂
La causa risiede nel fatto che ciascun pacchetto (quindi anche babel) analizza prima le opzioni della classe e poi quelle passate al pacchetto stesso. Il risultato è che, passando italian alla classe, babel legge per prima l’opzione italian. Successivamente, analizzando le opzioni passate a babel stesso, legge english e poi di nuovo italian. Ma siccome aveva già letto italian, la ignora, e di conseguenza l’ultima lingua specificata rimane english. Così succede esattamente l’opposto di quel che si vorrebbe. Una soluzione è usare specificare esplicitamente la lingua principale, ma questo va fatto attraverso \AtBeginDocument o simili (perché babel di suo lo fa tramite \AtBeginDocument e quindi bisogna “sovrascriverlo”):
`\RequirePackage[italian,english]{babel}\ifthenelse{\boolean{univpm@english}}
{
\AtBeginDocument{\selectlanguage{english}}
}
{
\AtBeginDocument{\selectlanguage{italian}}
\RequirePackage{indentfirst}
}`
Nota che non serve mettere RequirePackage dentro l’ifthenelse (e non servono nemmeno quei %, ma vabbè è un dettaglio).Ciao,
AntonioUna classe non deve mai prevedere supporto esplicito per una o più lingue; oppure deve vietare l’uso di lingue non previste.
Solo così si evitano i pasticci di questo tipo. Vedi anche pagina 7 di questo articolo su PracTeX
Sconsiglio vivamente di usare ifthen.
Ciao
Enrico
Enrico quindi come si dovrebbe fare per il frontespizio che può essere solo in italiano o in inglese? se non specificassi la possibilità di usare solo queste due lingue quale sarebbe l’alternativa?
Grazie
Marco[/quote]
Usare nomi di opzioni che non siano “english” o “italian”. Oppure modificare il codice proposto da Antonio:
`\ifunivpm@english
\AtBeginDocument{\selectlanguage{english}}
\fi
\ifunivpm@italian
\AtBeginDocument{\selectlanguage{italian}}
\RequirePackage{indentfirst}
\fi`
in modo che se uno sceglie un’altra lingua come base non ci siano problemi.
Analogamente non si deve mai mettere in una classe il caricamento di inputenc.
Ciao
Enrico