[RISOLTO] \zref@newlabel

  • Creatore
    Topic
  • #86962
    OldClaudio
    Partecipante
      Up
      0
      Down
      ::


      Ho aggiornato a MacTeX 2013; per la cronaca 50 minuti di download del file MacTeX.pkg di circa 2.4GiB e 4 minuti per l’installazione.

      Ma insiemea alla nuaova versione generale ci sono molte nuove versioni di pacchetti curati dal LaTeX3 team o comunque dai Working Group del TUG.

      Fra questi sembra che sia stato fortemente aggiornato e modificato anche hyperref, tant’è che documenti che prima si compilavano normalmente ora presentano diversi problemini; uno fra i tanti hyperref usa la macro di servizio \x verso la riga 7000 e passa, ma se hyperref viene caricato dopo longtable mostra un errore su questa macro di servizio. è necessario posporre il caricamanto di longtable, e tutto sembra andare a posto, salvo che longtable mette le mani sulla definizione di \caption e \caption*, sulle qualli dovrebbe mettere le mani anche hyperref, quindi c’è qualcosa che non mi torna. Se riesco a trovare che cosa c’è che non va nell’uso di \x, lo comunico al Team.

      Ma questo messaggio si riferisce ad una nuova macro che però non mi sembra gestita bene; per esempio: il file .aux presenta le seguenti righe dopo l’iniziale \relac che è sempre presente:`\providecommand\hyper@newdestlabel[2]{}
      \providecommand\zref@newlabel[2]{}
      \zref@newlabel{footdir@1}{\abspage{9}}
      \zref@newlabel{footdir@2}{\abspage{9}}`
      Vi si vede la definizione di default di \zref@newlabel, che forse non viene ridefinito perché la definizione esiste già. poi vengono definiti due label interni formati dal prefisso footdir@ seguito da un numro (che in queste righe è formato da una sola cifra. Fin qui tutto bene.

      Peccato che quando si compila il documento (xelatex) più e più volte, e il file .aux rimane sempre lo stesso, nel file log appaiano le seguenti righe:
      `LaTeX Warning: Reference `footdir@1' on page ix undefined on input line 18.

      LaTeX Warning: Reference `footdir@2' on page ix undefined on input line 18.`e la cosa viene ripetuta per le altre centinaia di righe simili che continuano a ripetere che quei label sono sconosciuti.

      D’accordo, il file PDF non presenta errori; non ho controllato, ammesso di averne usati, che i link a determinate pagine funzionino correttamente, ma non me ne importa molto; mi disturba invece il Warning per ciascuno di questi label interni che qualcuno/qualcosa dovrebbe definire, ma che non definisce.

      Da cosa dipende? Qualche opzione di hyperref? qualche omissione di parti di codice? Forse sparisce se nel preambolo si ordina di definire questi comandi come dei NoOperation (cioè l’equivalente di quei \providecommnd fatti diventare \(re)newcommand)? Se questo fosse vero, sarebbe una brutta pezza; inoltre se quei comandi sono stati definiti, a qualcosa serviranno pure; a che cosa servono?

    Visualizzazione 2 filoni di risposte
    • Autore
      Risposte
      • #86963
        Up
        0
        Down
        ::


        Un semplice
        `\documentclass{article}
        \usepackage{longtable}
        \usepackage{hyperref}
        \begin{document}
        Boh.
        \end{document}`
        non mostra alcun errore né alcun [tt]zref[/tt] nei file ausiliari.

        Puoi proporre un esempio minimo?

        Ciao
        Enrico

      • #86964
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Per ora non sono riuscito a replicare il fatto con un EMC.

          Ci sto lavorando sopra; se per caso durante questo lavoro di analisi riesco a trovare il guasto, te lo faccio sapere; se invece non ci iresco, ma riesco a creare un EMC che replica il fattaccio, lo allego.

          Intanto grazie mille
          Claudio

        • #86965
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Ecco quanto ho trovato.

            Normalmente e se l’utente non invoca esplicitamente il pacchetto bidi, \zref@newlabel e gli altri comandi \zref non appaiono nel file .log

            l pacchetto bidi serve per mescolare la composizione da sinistra a a destra con quella da destra a sinistra; serve evidentemente per comporre brani di teso contenenti lingue con scrittura retrograda, come l’arabo, l’ebraico, il farsi eccetera.

            Questo (apparentemente) non succedeva con la versione di polyglossia e con le lingue a scrittura retrograda con TL 21012.

            IIo dunque, componendo con xelatex, avevo impostato anche la lingua hebrew con i comandi di polyglossia. ecco dunque che a mia insaputa (in realtà lo sapevo, ma non sapevo che bidi.sty carica molti altri pacchetti) l’invocazione del modulo per l’ebraico di polyglossia chiama bidi, e questo chiama zref-abspage che permette di fare tante cose, in particolare permette di avere riferimenti ai numeri assoluti delle pagiine, quando non coincidono con i numeri scritti in ogni pagina, perché, per esempio, la front matter è composta in numeri romani.

            Perché poi xelatex, e quindi i vari pacchetti dipendenti dalla presenza di una lingua a scrittura retrograda emetta dei messaggi di undefined reference ogni volta che trova un nuovo label registrato nei file aux con il comando \zref@newlabel, lo sa solo xelatex e i pacchetti menzionati, ma non me la sento di andare a trovare il perché; ho ristretto il campo di ricerca, ma ricercherò il bachetto se ne avrò tempo e voglia.

            A Enrico 😉 magari interesserebbe esaminare quel codice subito; siccome è scritto in linguaggio laTeX2e anche se le cose si potrebbero fare (probabilmente meglio) con le property list di l3exp, magari trova come rifare completamente i pacchetti di Oberdiek in pochissimo tempo e senza questo genere di bachetti. No lo sto invitando a farlo… semplicemente so che la cosa lo potrebbe attrarre.

            Ciao e grazie
            Claudio

        Visualizzazione 2 filoni di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top