Questa discussione non contiene off topic secondo me. Ad una prima domanda su come concatenare file multipli in un unico file si sono date diverse risposte e si è cercato di indirizzare l’utente novizio verso una procedura semplice e funzionale.
Certo sono stati emessi anche commenti sull’inutilità di mettere in pratica procedure che diano luogo a caricamento di pacchetti inutili per la compilazioni di particolari parti del documento.
Si sono anche fatte affermazioni sul fatto che l’utente novizio non ha bisogno di sapere che cosa sia un file .sty. Si è anche dimenticato che ci sono alcuni vincoli da rispettare nel caricare i pacchetti.
Si è affermato che non sarebbe improponibile che si voglia dar da leggere un capitolo alla volta a qualcun altro, ma questo sì, forse, è un po’ fuori tema, perché qualunque procedura va bene per comporre una parte alla volta.
Secondo me, non è molto importante che si usi l’accoppiata \includeonly + \include oppure il solo \input; si ottengono o si possono ottenere cose diverse e uno può scegliere a seconda delle proprie esigenze.
Invece ci si è dimenticati che LaTeX impone che i pacchetti siano caricati direttamente o indirettamente solo nel preambolo e che siano caricati una volta sola; ci si è dimenticati che se nelle direttive per il capitolo 3 si carica il pacchetto A con certe opzioni, non si può ricaricare lo stesso pacchetto con opzioni diverse per comporre il capitolo 5. Certo si può fare attenzione ad avitare cose di questo genere, ma queste sono molto più sottili che non quella di distinguere un file .tex con definizioni personali da un file con lo stesso contenuto e l’estensione .sty; anche il secondo può essere caricato con input , purché si espliciti l’estensione, che di default è solo .tex. Certo ci sono delle differenze, altrimenti non avrebbero estensioni diverse; ma in entrambi i casi si tratta di file di estensione: essi estendono le funzionalità di LaTeX con le definizioni personali.
La possibilità di fare cose esiziali separando i file da caricare è tale che tovo le soluzioni proposte assolutamente improponibili per un utente novizio, proprio perché bisognerebbe spiegargli che cosa sta facendo e i rischi che corre, e questo sarebbe più difficile che non semplicemente dirgli “carica tutti i pacchetti che ti servono con le loro opzioni e le loro configurazioni nel preambolo e scrivi nel preambolo le tue definizioni personali, oppure scrivile in un tuo file personale da immettere nel preambolo, poi usa \includeonly+\include oppure \input a tuo piacimento e commenta le righe necessarie per far compilare solo un capitolo alla volta. Questo grosso preambolo potrà essere sovrabbondante per compilare un dato capitolo, ma tanto quando comporrai il documento completo dovrai usarlo tutto. Non caricare invece pacchetti di cui non usi le funzionalità; questi sono inutili per un dato capitolo, ma restano inutili per l’intero documento.”
Mi sembra molto più semplice per l’utente novizio che non spiegargli i pericoli che corre a caricare pacchetti selettivamente a seconda del capitolo che vuole comporre; che non spiegargli il pericolo dell’option clash; che non spiegargli il fatto che anche senza option clash LaTeX non ricarica mai un pacchetto già caricato, e via di questo passo. Che con i pacchetti caricati con \usepackage si può usare il segno @ nei comandi senza usare \makeatletter, \makeatother, ma che così facendo richia di modificare comandi del nucleo di LaTeX e di combinare un pasticcio immane.
Insomma, la via maestra è quella di usare un solo preambolo fisso senza personalizzazioni per i singoli capitoli.
Poi con \includeonly + \include oppure con \input può, con risultati diversi (*), compilare un capitolo alla volta; può anche stamparlo e darlo da leggere, per esempio, al relatore.
Claudio
(*) I risultati diversi consistono nel fatto che con \includeonly+\include si mantengono i riferimenti incrociati anche dei capitoli già composti ma non ricomposti nella compilazione del capitolo corrente; con \input questo non si può fare. Altra caratteristica: \include genera sempre i comandi per svuotare le code degli oggetti mobili ancora in memoria e ricomincia a comporre su una nuova pagine, mentre \input immette subito il file specificato nel flusso di lettura del programma di composizione senza fare nessuna delle cose accessorie che fa \include.