- Questo topic ha 7 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 20 anni, 10 mesi fa da
lorenzo.pantieri.
-
CreatoreTopic
-
16 Febbraio 2005 alle 18:11 #5105::
Carissimi, ho notato che se mi riferisco ad un oggetto prima di averlo etichettato, LaTeX non restituisce la numerazione corretta.Per esempio, se faccio
`….vedi ad esempio la seguente figura \ref{fig:figura}:
\begin{figure}
\includegraphics{figura}
\caption{….} \ref{fig:figura}
\end{figure}
`LaTeX aumenta di 1 la numerazione della figura, rispetto a quella che dovrebbe correttamente aversi.
Perché?? 🙄
Lorenzo
-
CreatoreTopic
-
AutoreRisposte
-
-
16 Febbraio 2005 alle 18:11 #5106::
Carissimi, ho notato che se mi riferisco ad un oggetto prima di averlo etichettato, LaTeX non restituisce la numerazione corretta.
Per esempio, se faccio`….vedi ad esempio la seguente figura \ref{fig:figura}:
\begin{figure}
\includegraphics{figura}
\caption{….} \ref{fig:figura}
\end{figure}`LaTeX aumenta di 1 la numerazione della figura, che in questo modo risulta scorretta.Benedetto figliolo! E come farà mai LaTeX a sapere il numero prima di averlo generato? Hai guardato la fine del log (o i messaggi sullo schermo che ti dicono`Label(s) may have changed.
Rerun to get cross-references right`per indicarti con precisione che cosa fare?
Spero comunque sia solo un errore di battitura, ma dopo \caption ci va \label.
Ciao
Enrico
-
17 Febbraio 2005 alle 13:25 #5107
-
7 Novembre 2005 alle 10:32 #5108
-
7 Novembre 2005 alle 10:36 #5109::
Carissimi, ho notato che se mi riferisco ad un oggetto prima di averlo etichettato, LaTeX non restituisce la numerazione corretta.
Come farà mai LaTeX a sapere il numero prima di averlo generato?
Riprendo il 3D a distanza di tempo, ma c’è qualcosa che non mi convince. Non so più qual è il motivo per cui ottenevo quell’errore, ma ora tutto funziona a dovere.
In generale, penso che LaTeX permetta di riferirsi senza problemi ad un oggetto prima di aver definito la corrispondente label. Per esempio, nella stesura di un documento può capitare di dover dire “…di questo ci occuperemo nel capitolo~\ref{cap:xxx}”, dove il comando \label{cap:xxx} può essere pagine e pagine avanti.
A questo punto, però, non capisco l’obiezione di Enrico.
L.
-
7 Novembre 2005 alle 11:23 #5110::
Carissimi, ho notato che se mi riferisco ad un oggetto prima di averlo etichettato, LaTeX non restituisce la numerazione corretta.
Come farà mai LaTeX a sapere il numero prima di averlo generato?
Riprendo il 3D a distanza di tempo, ma c’è qualcosa che non mi convince. Non so più qual è il motivo per cui ottenevo quell’errore, ma ora tutto funziona a dovere.
In generale, penso che LaTeX permetta di riferirsi senza problemi ad un oggetto prima di aver definito la corrispondente label. Per esempio, nella stesura di un documento può capitare di dover dire “…di questo ci occuperemo nel capitolo~\ref{cap:xxx}”, dove il comando \label{cap:xxx} può essere pagine e pagine avanti.
A questo punto, però, non capisco l’obiezione di Enrico.
Quale obiezione?
Il sistema label-ref funziona così:
(1) all’inizio della compilazione, LaTeX legge il file .aux (se non c’è non importa)
e lo tiene in memoria, poi lo cancella;
(2) quando LaTeX incontra un comando \label scrive un’annotazione sul file .aux
(3) alla fine della compilazione paragona il nuovo file .aux con quello che ha in memoria, se i due differiscono emette il messaggio di invito alla ricompilazione; può anche avvisare di \ref a \label non definite o di \label duplicate;
(4) ogni riga del file .aux proveniente da un comando \label definisce un comando dal nome complicato che qui non importa; diciamo che \label{pippo} definisce il comando \ref@pippo che ha come espansione il valore di \thedove è l’ultimo numero generato (con un \refstepcounter) e il comando \pageref@pippo che ha come espansione il numero di pagina dove si trova il comando \label
(5) Il comando \ref{pippo} si espande come ?? se \ref@pippo non è definito, nel caso contrario come \ref@pippo; analogo per \pageref{pippo}.È più chiaro adesso? Se LaTeX incontra \ref{xx} dopo \label{xx} sa a che cosa si riferisce e lo usa. Altrimenti stampa ??. Ma può avere incontrato \label{xx} durante la prima lettura del file .aux (già come definizione di \ref@xx), e si comporterà di conseguenza, ma usando il valore ottenuto nella compilazione precedente.
Ciao
Enrico
-
7 Novembre 2005 alle 12:40 #5111::
giusto per dire la mia, in caso di documenti complicati, con diversi tipi di \ref, pageref, \vref, \eqref, con riferimenti bibliografici, indici, acronimi, float e tutte le belle cose automatiche di latex puo’ capitare di dover ricompilare diverse volte prima di ottenere il risultato corretto. in generale comunque latex scriverà tutte le informazioni necessarie nel log.
in certi casi addirittura, quando il docuemnto è totalmente dinamico, si creano delle incongruenze, vedi per esempio l’uso dell’opzione draft del pacchetto varioref.
prova anche a dare un’occhiata ai pacchetti refcheck e showkeys
ciao
f
-
8 Novembre 2005 alle 9:11 #5112::
Se LaTeX incontra \ref{xx} dopo \label{xx} sa a che cosa si riferisce e lo usa. Altrimenti stampa ??. Ma può avere incontrato \label{xx} durante la prima lettura del file .aux, e si comporterà di conseguenza, usando il valore ottenuto nella compilazione precedente.
Puo’ capitare di dover ricompilare diverse volte prima di ottenere il risultato corretto.
Beh… grazie di cuore ad entrambi! Il riassunto di tutta la questione è: usare \ref{xxx} prima di aver definito \label{xxx} si può, a patto di ricompilare un numero adeguato di volte.
Lorenzo
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.