Re: Template PhD-UNIVPM non funzionante

#66455
Up
0
Down
::

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).

Fonti: qua e qua.

Ciao,
Antonio

Una 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

Go to top