Re: Riferimento alla Pagine nell’indice

#96499
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    Il tuo problema nasce da una “feature” di hyperref che si mescola con altre “features” di altri pacchetti.
    La parola feature viene usata per camuffare un bug in modo che sembri solo una particolarità. In realtà si tratta di un bug troppo difficile da correggere.

    Dire, però che nel tuo caso hai due soluzioni che ti indico in ordine di complessità del messaggio associato a ciascuna, non necessariamante nell’ordine che ti consiglierei.

    1) Credo che il problema nasca dal fatto che usi lo stile Roman per i numeri di pagina, invece dello stile roman. Se guardi nel file .aux quanto viene scritto per i riferimenti incrociati, troverai certamente che ogni comando \nelwlabel che faccia riferimento a qualcosa che si trova nella parte numerata in Roman, contiene il numero della pagina scritto in “cifre” romane minuscole, preceduto da un \MakeUppercase o da qualcosa simile. Quello impedisce a hyperref di creare il link corretto. Questo problema si manifesta anche quando si invoca l’opzione greek per babel, he scrie prima del numero romano il comando \textlatin e succede un pasticcio. La soluzione, dovrebbe essere semplicemente di accontentarsi dei bruttissimi numeri romani minuscoli.

    2) Per la tesi in ingegneria o in qualunque altra disciplina o per qualunque altro documento che scrivi con LaTeX, non hai nessun bisogno di usare i numeri romani nella parte inziale, questo implica il fatto di non usare né \frontmatter, né \aminmatter (se non ridefinendole) in modo da usare per la numerazione delle pagine solo le cifre arabe e senza ricominciare da 1 con la main matter. Nella classe book \frontmatter e \mainmatter sono definiti così:`\newcommand\frontmatter{%
    \cleardoublepage
    \@mainmatterfalse
    \pagenumbering{roman}}
    \newcommand\mainmatter{%
    \cleardoublepage
    \@mainmattertrue
    \pagenumbering{arabic}}`Vanno ridefiniti così nel preambolo della tua tesi o in un file di macro personali con estensione .sty che immetti nel preambolo mediante il comando \usepackage:`\makeatletter
    \newcommand\frontmatter{%
    \cleardoublepage
    \@mainmatterfalse}
    \newcommand\mainmatter{%
    \cleardoublepage
    \@mainmattertrue}
    \makeatother`I comandi \makeatletter e \makeatother servono per cambiare codice di categoria al segno @ (che si chiama “at sign” in inglese) in modo da trattarlo come una lettera dell’alfabeto ma sono necessari solo se metti questo codice direttamente nel preambolo (prima di [tt]\begin{document}[/tt]); non sono necessari se metti il codice in un tuo file di macro personali con estensione .sty che carichi con \usepakage.

    Come vedi i due comandi eliminano la formattazione dei numeri di pagina e anche, indirettamante, il ripristino al vaolre 1 quando \pagenumering{arabic} viene eseguito con il comando \mainmatter.

    Facendo in questo modo il tuo indice conterrà solo numeri arabi per i numeri delle apgine, e i riferimenti ipertestuali creati da hyperref funzionano come previsto.

    Nota che potreti conservare i numeri romani in minuscolo, in maiuscoleto, o in maiuscolo, se i comandi per formattare i numeri di pagina non li metti nel modo di rappresentare il numero di pagina, ma li metti (forse con più logica) nei comandi che gestiscono la formattazione dell’indice, e nei comandi per presentare i riferimenti incociati; io l’ho fatto qualche volta, ma è difficile, e secondo me il gioco non vale la candela.

    Atttento: la domanda che ti potresti fare è: “Ma allora perché esiste questa abitudine di numerare in cifre romane le prime pagine di un testo?”. La domanda è lecita, ma la riposta è molto semplice: come venivano composti i libri prima dell’avvento dell’elettronica? Da Gutenberg in poi, prima si componeva la main matter e si mettevano i numeri delle pagine nelle “forme” che contenvano ben allineati e giustificati i caratteri mobili metallici che l’artigiano compositore metteva a mano (poi ne XIX secolo e nella prima metà del XX secolo). In un secondo tempo componeva la parte iniziale e la parte finale (appendici, bibliografie, indici analitici) e se aveva bisogno di riferimenti alle pagine della parte principale, le andava a cercare nelle bozze tirate con quella sola parte, ma non aveva la necessità di cambiare nessuna numerazione delle pagine. Per la parte inziale, invece, che conteneva anche l’indice, non poteva usare la stessa numerazione araba della parte principale, perché la numerazione di questa parte avrebbe dovutto essere modificata per tenere conto delle pagine agginunte all’inizio. Ecco dunque il motivo di questa tradizione. Ora le motivazioni che ti ho illustrato, componendo elettronicamente con LaTeX non hanno più nessuna rilevanza, perché LaTeX cura che la numerazione complessiva e i riferimenti incrociati e quelli ipertestuali siano tutti coerenti, essendo sufficiente ricompilare una o due volte, consumando pochissime decine di secondi, non le settimane di lavoro che erano necessarie ai tempi dei caratteri mobili o dei caratteri fusi al momento con macchine del tipo delle linotype o delle monotype. Inoltre sono esclusi gli errori imani connessi con ogni operazione fatta a mano.

    Scusa la lunghezza del messaggio, ma credo di averti spiegato il perché e il percome.

    Go to top