Re: modifica packages

#14176
Up
0
Down
::

Ciao Enrico, ho un dubbio: che cosa succede se il pacchetto originale contiene impostazioni incompatibili con quelle “personalizzate”? Per esempio, supponiamo che il pacchetto originale usi i pacchetti ccaption e subfigure, e io voglia invece usare il pacchetto caption, con opzioni diverse, e subfig. Viene “data la precedenza” alle opzioni personalizzate?

No, così non si può. La scelta di quali altri pacchetti caricare è stata fatta dall’autore del pacchetto che, evidentemente, ne usa le funzionalità.

Ammettiamo di voler modificare il pacchetto “pack” che carica “ccaption”, ma noi vogliamo “caption”; creiamo allora “modpack.sty”
`\ProvidesPackage{modpack}
\global\expandafter\let\csname ver@ccaption.sty\expandafter\endcsname
\csname ver@\@currname.\@currext\endcsname
\RequirePackage{pack}
\RequirePackage{caption}

\endinput`
Il
dovrà prendersi cura che ciò che è definito in pack.sty usando le funzionalità di ccaption sia ridefinito usando quelle di caption.

La formula magica che comincia con \global impedisce che venga caricato ccaption; infatti, quando si carica il pacchetto “xxx”, LaTeX definisce il comando \ver@xxx.sty; se questo è già definito, altre richieste di \usepackage{xxx} o \RequirePackage{xxx} verranno (quasi) ignorate. Il quasi è per motivi che sarebbe lungo discutere.

A questo punto, tanto vale riscrivere il pacchetto “pack”, probabilmente.

Uno dei difetti di classicthesis è che ne carica troppi, senza usarli veramente. Così impedisce le scelte all’utente.

Ciao
Enrico

Go to top