numerazione delle etichette

  • Creatore
    Topic
  • #105700
    Up
    0
    Down
    ::


    Salve:grin: 😀 😀 😀 😀 😀 😀
    😛 ,quaòcuno sa aiutarmi a risolvere questo problema? quando scrivo le etichette delle figure e delle equazioni, quelle che compaiono sulla didascalia sono giuste mentre quando le richiamo con \ref{key} la numerazione è sempre molte unità indietro, per esempio la figura 1.12 diventa 1.3.Qualcuno sa spiegarmi perchè e come si fa aimpostare la numerazione corretta?? Grazie mille LaTeX users

Visualizzazione 10 filoni di risposte
  • Autore
    Risposte
    • #105701
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        cindy91″ post=105775Salve:grin: 😀 😀 😀 😀 😀 😀
        😛 ,quaòcuno sa aiutarmi a risolvere questo problema? quando scrivo le etichette delle figure e delle equazioni, quelle che compaiono sulla didascalia sono giuste mentre quando le richiamo con \ref{key} la numerazione è sempre molte unità indietro, per esempio la figura 1.12 diventa 1.3.Qualcuno sa spiegarmi perchè e come si fa aimpostare la numerazione corretta?? Grazie mille LaTeX users

        Metti sempre \label{pippo} dopo la relativa \caption{Pippo} e assicurati di non avere label ripetute.
        `\label{pippo}

        % non va!

        \label{pippo}`

      • #105702
        Up
        0
        Down
        ::


        Naturalmente, sai già benissimo che, per avere i riferimenti incrociati corretti, bisogna ricompilare (almeno) una seconda volta, dico bene? 🙂

        Ciao.


        Gustavo

      • #105703
        Up
        0
        Down
        ::


        sisi mi sono accorta! però anche così non va….la figura 1.12 me la legge come 1.5

      • #105704
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          A parte ricompilare almeno una volta perché i riferimenti incrociati siano corretti, bisogna anche ricordarsi di non duolicare i \label usando la stessa etichetta. Nel tuo caso sembrerebbe che dopo aver etichettato correttamente la terza figura del tuo capitolo uno con il comando [tt]\label{pippo}[/tt] tu abbia ri etichettato la figura 12 dello stesso capitolo con un comando identico [tt]\label{pippo}[/tt]. Se per caso avessi commesso questo errore ci sarebbe un messaggio d’errore nel file .log che si lamenta di “Duplicate labels”; apri il file .log del tuo documento e vai subito alla fine; poi cerca all’indietro la stringa “Duplicate” (senza virgolette); se c’è leggi bene il messaggio, poi continua a cercare all’indietro e troverai via via i messaggio associati a ciascuna etichetta duplicata e saprai esattamente dove andare a correggere per essere sicuro che non ci siano duplicazioni di nessun genere; insomma elimina i doppioni.
          Dopo aver corretto le etichette doppioni, ricompila due volte.

        • #105705
          Up
          0
          Down
          ::


          perchè? tanto l’ etichetta non dipende dalla didascalia, no? ma tu sei quello che ha scritto “arteLaTeX”, il primo risultato di Google se scrivi LaTex?

        • #105706
          Up
          0
          Down
          ::


          Per essere precisi, l’avvertimento (non l’errore) che compare alla fine della compilazione (tranne la prima, ovviamente, quando le etichette non sono ancora definite) è
          `LaTeX Warning: There were multiply-defined labels.`
          In corrispondenza del punto/dei punti in cui compare l’etichetta definite/le etichette definite due volte, viene anche dato un avvertmento del tipo
          `LaTeX Warning: Label `…' multiply defined.`
          Non capisco cosa intendi dicendo che «l’etichetta non dipende dalla didascalia»; se intendi che l’etichetta può essere una stringa (quasi) arbitraria di caratteri, certo che è così. Ma, ovviamente, ciascuna etichetta deve essere unica all’intenro di uno stesso file sorgente: come potrebbe essere diversamente?

          Ciao.


          Gustavo

        • #105707
          Up
          0
          Down
          ::


          era una rdomanda diretta a L. Pantieri che ha detto che, oltre non definire multiplamente lo stesso label, occorre mettere il label dopo la caption , mi sono sbagliata scusa. Ad ogni modo ora appparentemente funziona non ci sono nemmeno piu i warnings

        • #105708
          Up
          0
          Down
          ::

          cindy91″ post=105784era una rdomanda diretta a L. Pantieri che ha detto che, oltre non definire multiplamente lo stesso label, occorre mettere il label dopo la caption […]

          Ma certo, che sciocco, avrei dovuto capirlo: gli chiedevi anche se era proprio lui quello dell’Arte di scrivere con LaTeX! Ebbene sì, è proprio lui in persona. 🙂

          In quel senso, sì, il comando [tt]\label[/tt] è dipendente dalla didascalia, perché ha bisogno di sapere che valore associare all’etichetta che viene definita. Provo a dare un’idea di come funziona il meccanismo.

          Immagina una piccola lavagnetta, o una qualsiasi altra cosa che ti dia l’idea di una piccola memoria temporanea; su questa lavagnetta (o in questa memoria) si può scrivere una sola cosa per volta, che rimane scritta lì finché non ci si scrive qualcos’altro di nuovo. (Questa «lavagnetta» è la macro interna del nucleo del LaTeX2e chiamata [tt]\@currentlabel[/tt].) Esiste un comando, che si chiama [tt]\refstepcounter[/tt], il quale prende come argomento il nome di un contatore LaTeX, e il cui effetto consiste nell’incrementare di uno («step») quel contatore e di scrivere la rappresentazione testuale di quel contatore sulla nostra lavagnetta ideale (sto semplificando, omettendo un paio di dettagli importanti dei quali, però, è meglio parlare solo in un secondo momento). Per esempio, se definisci un contatore di nome [tt]pippo[/tt] dando, di solito nel preambolo, il comando`\newcounter{pippo}`puoi poi, in qualunque punto del documento, impartire il comando`\refstepcounter{pippo}`il quale avrà l’effetto seguente:

          1. per prima cosa, incrementerà di uno il valore corrente del contatore [tt]pippo[/tt];
          2. dopo di ciò, scriverà sulla «lavagnetta» (fuor di metafora, nella macro [tt]\@currentlabel[/tt]) la rappresentazione testuale del (nuovo) valore del contatore [tt]pippo[/tt], cioè quella prodotta dal comando [tt]\thepippo[/tt].

          Questa scritta rimarrà sulla lavagnetta finché il comando [tt]\refstepcounter[/tt] non verrà usato di nuovo; quando ciò avverrà, la scritta verrà cancellata e sostituita da una nuova.

          Ebbene, il comando [tt]\label[/tt] non fa altro che “scattare una foto”, per così dire, alla lavagnetta, e associare tale foto all’etichetta che esso riceve come argomento. Quando incontra un [tt]\ref[/tt] che si riferisce alla medesima etichetta, il LaTeX ricupera la foto corrispondente e inserisce, al posto di [tt]\ref{…}[/tt], la scritta che la lavagnetta mostra in tale foto.

          Ora, il LaTeX ha tutta una serie di contatori predefiniti: ci sono i contatori [tt]part[/tt], [tt]chapter[/tt], [tt]section[/tt], [tt]subsection[/tt], ecc., i quali tengono conto di quale sia la parte, il capitolo, la sezione e così via corrente; ci sono i contatori [tt]figure[/tt] e [tt]table[/tt] per il corrente numero di figura e di tabella; c’è [tt]equation[/tt] per il numero di equazione, e parecchi altri. Prendiamo, per esempio, le sezioni: una delle cose che il comando [tt]\section[/tt] fa è proprio quella di eseguire un`\refstepcounter{section}`così da incrementare il numero corrente della sezione e scriverlo sulla lavagnetta; se subito dopo si esegue`\label{piripiri}`si otterrà per l’appunto una foto, collegata all’etichetta [tt]piripiri[/tt], del numero di sezione appena incrementato. Similmente, un comando [tt]\caption[/tt] eseguirà`\refstepcounter{figure}`se usato dentro un ambiente [tt]figure[/tt], e`\refstepcounter{table}`se usato dentro un ambiente [tt]table[/tt], e un [tt]\label[/tt] che segua immediatamente fotograferà il giusto numero della figura o della tabella. Capisci bene, ora, che se usi [tt]\label[/tt] prima di usare [tt]\refstepcounter[/tt] (o un comando come [tt]\section[/tt] o [tt]\caption[/tt] che indirettamente usa [tt]\refstepcounter[/tt]), fotografi la lavagnetta con scritto su un numero sbagliato; più precisamente, poiché [tt]\refstepcounter[/tt] usa un’unica lavagnetta, quale che sia il contatore incrementato, fotografi il valore che è rimasto scritto dal suo precedente utilizzo, quale che esso sia stato; e può benissimo trattarsi di un valore che si riferisce a un contatore completamente diverso. Facciamo un esempio: supponiamo di scrivere
          `
          \section{Gli gnu in Siberia}
          \label{S:Gnu-Siberia}

          Parlo qui degli gnu in Siberia.

          \begin{figure}[tp]
          \centering
          \includegraphics[scale=.2]{FotoDiGnuSiberiano}
          \label{fig:foto-gnu-siberiano} % sbagliato: andrebbe messo dopo!
          \caption{Uno gnu siberiano}
          \end{figure}

          La figura~\ref{fig:foto-gnu-siberiano} ne mostra uno.
          `
          Ebbene, i due comandi [tt]\label[/tt] fotograferanno la stessa scritta: quella relativa al numero di sezione! Infatti, il comando [tt]\section[/tt] esegue [tt]\refstepcounter{section}[/tt], che scrive sulla lavagna appunto il numero della sezione, e quando si incontra il secondo [tt]\label[/tt] (ripeto: anche il secondo), il [tt]\refstepcounter{figure}[/tt] implicito nel comando [tt]\caption[/tt] non è ancora stato eseguito, e quindi la scritta sulla lavagnetta non è ancora stata aggiornata. Ecco perché il successivo [tt]\ref{fig:foto-gnu-siberiano}[/tt] genera un riferimento completamente sbagliato (al numero di sezione, anziché di figura).

          Perdona la lunghezza della spiegazione, ma ho cercato di essere il più chiaro possibile.

          Ciao.


          Gustavo

        • #105709
          Up
          0
          Down
          ::


          💡 però così ho capito benissimo! sapevo che doveva esistere da qualche parte un contatore , visto che il formato dei contatori è #parte.#sezione.#sottosezione…., però credevo che questo compito fosse svolto dai comandi che fanno iniziare gli ambienti, tipo \begin{ ambiente} e non dalla caption…. beh, grazie mille hehe

        • #105710
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Non avrebbe senso che figure e tabelle siano numerate dall’ambiente perché così verrebbero numerate anche le figure prive di didascalia, la quale, come ho scritto diverse volte è fatta da tre parti, di cui una obbligatoria, la seconda essenziale, anche se la si potrebbe lasciare vuota e la terza decisamente facoltativa; le rappresento qui sotto con i colori nero bold, rosso e blu rispettivamente:

            Figura 3.12 Panorama delle Alpi visto da Torino. Da sinistra a destra spiccano il Monviso, Il Gran Paradiso che copre quasi completamente il Monte Bianco, e il Monte Rosa.

            Quindi, come vedi, solo la didascalia è numerata e il numero ne fa parte integrante, se manca la didascalia, manca il numero e i riferimenti incrociati sono parzialmente errati; infatti il numero della figura recuperabile con \ref sarebbe errato, mentre il numero della pagina dove si trova la figura è corretto se il label è comunque dentro l’ambiente figure, che, essendo mobile, verrà a trovarsi in pagine diverse a seconda dove LaTeX considera tipograficamente corretto inserirla. Il numero della pagina viene assegnato solo nel momento in cui la pagina in cui è inserita la figura viene accodata al file di uscita.

            Visto che ci siamo, nota che il titolo rosso manca del verbo e non termina con un punto fermo, il quale appare solo se esiste la frase completa di verbo, quella blu, facoltativamente scritta come ulteriore descrizione della figura.

          • #105711
            Up
            0
            Down
            ::


            Si veda anche Why does an environment’s label have to appear after the caption?, su TeX.SX.

            Ciao.


            Gustavo

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

        Go to top