Re: Ordine di caricamento dei pacchetti

#85192
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Tommaso, sì, il testo è scarno per l’intero §3.12, compresi i suoi sotto paragrafi.

    Il 3.12.3 è forse superfluo, perché dubito che uno che cerca di documentarsi vada a cercare i file .ins e .dtx; se lo fa vuol dire che è già abbastanza esperto per scaricare direttamente da CTAN e sa come fare. se non lo spaesse, quell poche righe del §3.12.3 non sarebbero certamente sufficienti.

    Invece un paragrafo sull’ordine di caricamento peso che sia utile; direi quanto segue, nella bella forma italiana che tu sai costruire:

    1) il pacchetto hyperref va caricato sempre per ultimo, o almeno dopo qualsiasi pacchetto che definisca o ridefinisca i comandi di sezionamento i comandi per le didascalie e i comandi per i riferimenti incrociati; Siccome “almeno” è una espressione vaga, è opportuno caricarlo sempre per ultimo.

    2) Per ogni altro pacchetto di solito conviene caricare inputenc, fontenc e babel nella sequenza seguente:
    1º fontenc; 2º babel; 3º ogni eventuale altro pacchetto che carichi font diversi da quelli di default; 4º inputenc; quest’ordine è particolarmente importante se l’opzione a inputenc è utf8; questo perché non ha senso definire le decine di migliaia di comandi necessari per trattare tutti i segni che sono definiti con la codifichi unicode, ma che i vari pacchetti dei font non caricano tutti anche quelli dei glifi non contenuti in quei font.

    3) per ogni altro pacchetto per essere sicuri è meglio controllarne la documentazione leggendo quelli altri pacchetti esso carichi; sono le sue indispensabili dipendenze, senza le quali il pacchetto non potrebbe funzionare. si scelga allora un ordine tale per cui non si cerchi di caricare due volte lo stesso pacchetto. Non scegliere un ordine compatibile con le dipendenze, vuol dire probabilmente che si possano verificare errori di “option clash” oppure di comandi che non corrispondono alla loro definizione. Il primo errore indica il fatto che due pacchetti A e B caricano il pacchetto C con opzioni diverse; se un pacchetto viene chiamato due volte senza opzioni o con le stesse opzioni, la seconda volta che lo si cerca di chiamare i meccanismi interni di LaTeX evitano che la seconda chiamata venga eseguita; ma se durante questa verifica si trovano chinate con opzioni diverse si ha l’errore di inconsistenza di opzioni, in inglese option clash.

    4) alcuni pacchetti ridefiniscono comnadi già esistenti; non sempre lo scrittore di pacchetti usa i comandi giusti per controllare la necessità della ridefinizione. In questi casi è possibile che un pacchetto non venga caricato perché sarebbe una seconda definizione, ma il pacchetto chiamante potrebbe assumere che il pacchetto sia stato chiamato e cerca di definire ciò che non c’è; \renewcommand, quindi emette un messaggio d’errore. Al contrario la ridefinizione viene fatta senza ricorrere a \renewcommand, ma mediante comandi dell’interprete (comandi primitivi). In seguito altri pacchetti o l’utente stesso usano quel comando ma la sua definizione non è più consistente con quello che l’utente suppone che sia. Viene allora emesso che il comando tal dei tali è usato in modo non conforme alla sua definizione.

    Il lettore non si scoraggi; questi eventi sono abbastanza rari; tuttavia quando incontra messaggi d’errore del tipo di quelli indicati, o trova che i collegamenti ipertestuali non funzionano correttamente, allora controlli l’ordine di caricamento dei pacchetti di cui ritiene di avere bisogno; segua le indicazioni date sopra e curi con attenzione l’elenco delle dipendenze.

    Corollario di questa situazione è che meno pacchetti si caricano, meno pericoli di conflitti fra pacchetti si manifestano; e come ulteriore corollario si eviti di caricare pacchetti di cui di fatto non si usano le funzionalità, con la giustificazione che “non si sa mai, potrei averne bisogno”.

    Go to top