Riferimenti incrociati tra file diversi

  • Creatore
    Topic
  • #96532
    Up
    0
    Down
    ::


    Ciao a tutti,

    Sto scrivendo con la mia tesi con una classe thesis. Ho creato un file main.tex dove ho incluso tutti i pacchetti utilizzati, e includo, tramite il comando input, tutti i capitoli ed appendici che sto compilando in file.tex esterni.

    Vorrei fare un riferimento, tramite il comando ref, nel capitolo 2 di una tabella presente nell’appendice (ad ogni oggetto è stata data una label diversa).
    Purtroppo, tramite il comando ref non mi appare la tabella in questione non mi appare. Ho provato anche con il pacchetto [xr] ma non sono riuscito ad arrivare a capo del problema.

    Mi potreste gentilmente dare un aiuto?

    Grazie Mille,

    Matteo

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #96533
      Up
      0
      Down
      ::

      matteo1234″ post=96242Ciao a tutti,

      Sto scrivendo con la mia tesi con una classe thesis. Ho creato un file main.tex dove ho incluso tutti i pacchetti utilizzati, e includo, tramite il comando input, tutti i capitoli ed appendici che sto compilando in file.tex esterni.

      Vorrei fare un riferimento, tramite il comando ref, nel capitolo 2 di una tabella presente nell’appendice (ad ogni oggetto è stata data una label diversa).
      Purtroppo, tramite il comando ref non mi appare la tabella in questione non mi appare. Ho provato anche con il pacchetto [xr] ma non sono riuscito ad arrivare a capo del problema.

      Mi potreste gentilmente dare un aiuto?

      Grazie Mille,

      Matteo

      Il metodo che segui non risolve i riferimenti incrociati, purtroppo. Per avere quello che chiedi devi utilizzare il metodo di [tt]\include[/tt] e [tt]\includeonly[/tt]. Come fare?

      Nel preambolo scrivi
      `\includeonly{capitolo1.tex,%
      capitolo2.tex,%
      … ,%
      capitoloN.tex}`
      In altre parole, nell’argomento di [tt]\includeonly[/tt] elenchi tutti i file che vuoi comporre.

      Poi, a [tt]\input[/tt] sostituisci [tt]\include[/tt].

      Componi il tuo documento il numero di volte necessario perché tutto funzioni. A questo punto, escludi il file o i file che non vuoi ricomporre commentandoli nell’elenco che hai fatto nel preambolo. Ricomponi il documento e tutto dovrebbe essere a posto.

      Ciao
      Tommaso

    • #96534
      Up
      0
      Down
      ::

      illinguista1972″ post=96243

      Ciao a tutti,

      Sto scrivendo con la mia tesi con una classe thesis. Ho creato un file main.tex dove ho incluso tutti i pacchetti utilizzati, e includo, tramite il comando input, tutti i capitoli ed appendici che sto compilando in file.tex esterni.

      Vorrei fare un riferimento, tramite il comando ref, nel capitolo 2 di una tabella presente nell’appendice (ad ogni oggetto è stata data una label diversa).
      Purtroppo, tramite il comando ref non mi appare la tabella in questione non mi appare. Ho provato anche con il pacchetto [xr] ma non sono riuscito ad arrivare a capo del problema.

      Mi potreste gentilmente dare un aiuto?

      Grazie Mille,

      Matteo

      Il metodo che segui non risolve i riferimenti incrociati, purtroppo.

      Forse ho interpretato male quello che hai scritto, ma vuoi dire che includendo i file con [tt]\input[/tt] non si possono realizzare i riferimenti incrociati?


      @matteo1234
      : potresti fornire un esempio minimo e compilabile? Hai compilato (almeno) due volte il file principale dopo aver inserito le etichette che richiami?

      Se ho capito bene (e correggimi in caso contrario), tu vuoi fare riferimenti a un altro file ma sempre appartenenti dello stesso documento. A me questo esempio minimo funziona senza problemi e senza caricare il pacchetto [tt]xr[/tt], inutile in questo caso.

      File principale:
      `\documentclass{book}
      \begin{document}
      \input{capitolo1}
      \appendix
      \input{appendice}
      \end{document}`
      File [tt]capitolo1.tex[/tt]:
      `\chapter{Titolo del capitolo}
      \label{cha:titolo-del-capitolo}

      Guarda che bella la tabella~\ref{tab:tabella}.`
      File [tt]appendice.tex[/tt]:
      `\chapter{Appendice}
      \label{cha:appendice}

      \begin{table}
      \centering
      \caption{Tabella}
      \label{tab:tabella}
      \begin{tabular}{c}
      contenuto della tabella
      \end{tabular}
      \end{table}`
      Compilando due volte tutto funziona senza problemi.

    • #96535
      Up
      0
      Down
      ::

      matteo1234″ post=96242Ciao a tutti,

      Sto scrivendo con la mia tesi con una classe thesis. Ho creato un file main.tex dove ho incluso tutti i pacchetti utilizzati, e includo, tramite il comando input, tutti i capitoli ed appendici che sto compilando in file.tex esterni.

      Vorrei fare un riferimento, tramite il comando ref, nel capitolo 2 di una tabella presente nell’appendice (ad ogni oggetto è stata data una label diversa).
      Purtroppo, tramite il comando ref non mi appare la tabella in questione non mi appare. Ho provato anche con il pacchetto [xr] ma non sono riuscito ad arrivare a capo del problema.

      Mi potreste gentilmente dare un aiuto?

      Grazie Mille,

      Matteo

      Non capisco il problema. Spezzare il documento in varie parti richiamate con [tt]\input[/tt] è esattamente come se il documento fosse unico. Perciò [tt]\ref{etichetta}[/tt] funzionerà qualunque sia il file che contiene [tt]\label{etichetta}[/tt].

      Puoi fare un esempio minimo?

      Ciao
      Enrico

    • #96536
      Up
      0
      Down
      ::


      Ciao A tutti,

      Innanzitutto, io sto usando la classe thesis che ho trovato come template al sito http://www.latextemplates.com/.

      Il file l’ho già fatto girare molte volte e purtroppo non sono ancora giunto alla soluzione.

      \documentclass[12pt, a4paper, oneside]{thesis} % Paper size, default font size and one-sided paper

      \graphicspath{{./Pictures/}} % Specifies the directory where pictures are stored

      \usepackage[round,comma,sort&compress]{natbib} % Use the natbib reference package – read up on this to edit the reference style; if you want text (e.g. Smith et al., 2012) for the in-text references (instead of numbers), remove ‘numbers’
      \usepackage[english]{babel}
      \usepackage{hyperref}
      \hypersetup{urlcolor=black, linkcolor=black, citecolor=black}
      \usepackage{fancyhdr}
      \usepackage{amsmath}
      \usepackage{amsfonts}
      \usepackage{amssymb}
      \usepackage[section]{placeins}
      \usepackage{textcomp}

      \input{./Chapters/introduction}
      \input{./Chapters/Chapter1}
      \input{./Chapters/Chapter2}
      \input{./Chapters/Chapter3}
      \input{./Chapters/conclusion}

      \input{./Appendices/AppendixA}
      \input{./Appendices/AppendixB}

      Mentre ad esempio sto scrivendo nel Chapter 2 voglio fare un riferimento ad una tabella dell’AppendixA. Come potete vedere dallo screenshot se sono nel Chapter 2 e digito \ref{} vedo solo le label presenti nel file Chapter 2.tex ma non quelle degli altri file.

      Nel file main.tex (dove ho tutto il premabolo e gli input, file che compilo dopo aver scritto negli altri.tex) con il comando \ref{} posso vedere tutte le tabelle che ho inserito nelle appendici e nei capitoli, cosa che non succede nel caso voglia inserire una tabella dell’appendice B nella appendice A. (vd PDF).

      Grazie a tutti per i commenti.

      Matteo
      [attachment]C:\fakepath\RIFERIMENTO.pdf[/attachment]

      [attachment]C:\fakepath\RIFERIMENTO.pdf[/attachment]

      Attachments:
      You must be logged in to view attached files.
    • #96537
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Innanzi tutto thesis non è una classe sulla quale i soci e i frequenatori del GuIT hanno poco da dire, visto che non è piuma delle nostre piuma; Qui sul sito abbiamo parlato di saptesi, suftesi, toptesi, classicthesis, tesimoderna, tesiclassic; tutte scritte da gente che frequenta questo sito.

        D’altra parte non vedo perché thesis dovrebbe fare eccezione rispetto al comportamanto delle altre classi.

        Quello che invece non vedo nel codice che presenti lo staement \begin{document, e nemmeno \end{document}; qualunque cosa contengano i file die capitoli, quegli statemente sono essenziali.

        Quindi finché non metti il tuo file sorgente in una fomra LaTeX compatibile non ottieni nulla di buono.
        Nasconder gli statement \begin{cocument} e \end{document} dentro i file inclusi con \input forse funaziona ma è una pessima idea; ti è già stato mostrato un esempio minimo compatibile che funzione; ti è già stato detto che usare \input non c’entra niente con i riferimenti a contenuti di altri capitoli o appendici; ti è già stato detto che puoi eseguire la compilazione selettiva di alcuni e on tutti i capitolo usando al tecnica di \includeonly e \include, come è descritti nell’arte di scrivere con LaTeX; hai controllato quel testo? hai capito quale sia lo scopo della compilazione selettiva? eseguito con \input oppure ‘include? hai capito che il file principale lavora bene con entrambi i metodi quando includi tutti i file, ma lavora bene con la compliazione selettiva di alcuni file solo se usi al tecnica di \incudeonly e \include?

        Se non l’hai cpaito ma vuoi fare ugualmente la compilazione selettiva, rileggi l’Arte; ti potrei dire di documentarti anche su altre guide, ma comincia con l’Arte.

      • #96538
        Up
        0
        Down
        ::


        Ciao @OldClaudio,

        ti ringrazio per la tua risposta.

        Nel copiare il file main.tex (che ho comunque allegato) al messaggio, ho saltato alcune parti perché dato che ho 226 righe non volevo inondare tutta la pagina con il mio script che magari nessuno si sarebbe degnato di leggere.

        In un primo momento ho utilizzato il comando input, e anche utilizzando \include non sono arrivato al risultato insperato. Come già spiegato, nel file main vedo tutte le labels mentre nei singoli file no, questo problema mi impedisce di fare un riferimento a tabelle e figure presenti nelle appendici.

        Riguarderò con attenzione l’arte di scrivere.

        Grazie mille

        Matteo

      • #96539
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Il punto è un altro.

          Quando usi \include vengono generati i file aux per ogni file incluso, che restano disponibili per i riferimenti incrociati anche se non compili il relativo sorgente.

          Con \input NON vengono generati i file aux per ciascun file introdotto con \input, ma i riferimenti incrociati vanno a finire nell’unico aux relativo al main file. dunque se compili un solo file introdotto con \input i suoi riferimenti, i comandi \newlabel che servono per i riferimenti incrociati, vanno in quell’unico file, e alla secondo compilazione li puoi usare e il programma di composizione te li risolve, mettendoci il numero giusto e magari, se usi hyperref ti mette crea anche il collegamento ipertestuale, ma i newlabel dei file che non hai introdotti non ci sono da nessuna parte, quindi non vi puoi fare riferimento.

          Ecco perché devi usare l’accoppiata di \includeonly e \include e non devi usare \input; \includeonly ti permette di eseguire la compilazione selettiva elencando solo in file che vuoi includere, come dice chiaramente il nome, mentre \include, il cui statement non deve venire commentato quando si riferisce ad un file da non ricompilare, ordina però la lettura del suo file aux così che i suoi newlabel restano disponibili per i riferimenti incrociati.

          Quando ti ho chiesto se avevi capito la differenza fra i due metodi di inclusione, avevo il sospetto che non l’avessi capita; il tuo messaggio a cui sto rispondendo mi dimostra che non l’hai capita. Spero che la mia spiegazione sopra ti aiuti a capirla.

        • #96540
          Up
          0
          Down
          ::

          matteo1234″ post=96299Ciao @OldClaudio,

          ti ringrazio per la tua risposta.

          Nel copiare il file main.tex (che ho comunque allegato) al messaggio, ho saltato alcune parti perché dato che ho 226 righe non volevo inondare tutta la pagina con il mio script che magari nessuno si sarebbe degnato di leggere.

          In un primo momento ho utilizzato il comando input, e anche utilizzando \include non sono arrivato al risultato insperato. Come già spiegato, nel file main vedo tutte le labels mentre nei singoli file no, questo problema mi impedisce di fare un riferimento a tabelle e figure presenti nelle appendici.

          Riguarderò con attenzione l’arte di scrivere.

          Grazie mille

          Matteo

          Ciao, non so se ho capito bene la tua problemantica, ma non vorrei che il tuo fosse un falso problema…
          il fatto che tu nei singoli capitoli veda tutte le lables che hai creato in quel capitolo, è solo un aiuto che ti da l’editor (es. texmaker fa questa cosa) per creare velocemente le labels, ma l’editor in se non ha nulla a che vedere con la compilazione che spetta al compilatore di latex.
          fai pure riferimento alle labels che hai in altri file, se non le vedi è perchè sono in un altro file e l’editor non le porta in memoria (come fa nel main dato che è il tronco da cui si dipartono tutti i rami e quindi può gestire tutte le labels che trova nei file che includi). La potenza di Latex è anche in quest’aspetto di poter citare equazioni, tabelle, capitoli , immagini ecc… fuori dal capitolo che stai scivendo.

          Mi spiego meglio….

          ammettiamo che nel capitolo1 tu abbia una cosa del genere

          `\begin{figure}
          \centering
          \includegraphics{figura1.eps}
          \caption{immagine}\label{fig_cap_1}
          \end{figure}`

          e nel capitolo due una cosa del tipo

          `\begin{figure}
          \centering
          \includegraphics{figura2.eps}
          \caption{immagine}\label{fig_cap_2}
          \end{figure}`

          se provi nel capitolo due a fare un rifermento all’immagine figura2.eps tramite la sua label, quando richiami il riferimento tramite \ref l’editor ti mostrerà solo il riferimento alla label fig_cap_2 perché è stata creata nello stesso file .tex che tu stai editando tramite l’editor, ma è solo un aiuto che ti viene dato, nulla di più; nulla ti vieta di scrivere a mano (anzi è così che si fa) nel file del capitolo due un riferimento del tipo ref{fig_cap_1}, anche se non ti viene data come scelta dall’editor.

          Quando compilerai, ad esempio tramite pdflatex avrai bisogno di più compilazioni perché la prima crea i vari file .aux che servono per creare i riferimenti, la seconda per aggiornare i riferimenti nel pdf. (detto malissimo chiedo venia!)

          Dopo la prima compilazione il pdf lo ottieni già con le figure e la formattazione che hai scelto, ma al posto dei riferimenti che hai creato avrai una cosa del tipo vedi fig.?? perchè non avendo ancora l’aux a diposizione il compilatore non ha gli strumenti per fare i riferimenti incrociati; alla seconda compilazione il compilatore legge dal file aux che si è creato prima e toglie i ?? e ci sostituisce il riferimento giusto!

          Spesso per i nuovi arrivati nel mondo latex, le funzioni aggiuntive dei compilatori, che sono si molto user-friendly possono far perdere di vista come effettivamente lavora e compila latex.
          Una buona palestra per allenarsi alla scrittura in latex alla cieca senza aiuti da parte dell’editor è scrivere direttamente il sorgente in un normale editor di testo tipo blocco note e salvarlo come .tex e poi compilare da terminale.

        • #96541
          Up
          0
          Down
          ::


          Ciao Scroll 86.

          Hai perfettamente ragione ho inserito il riferimento a mano e tutto quadra!!!

          Grazie infinite per la tua precisa risposta.

          Un saluto

          Matteo

        • #96542
          Up
          0
          Down
          ::

          matteo1234″ post=96318Ciao Scroll 86.

          Hai perfettamente ragione ho inserito il riferimento a mano e tutto quadra!!!

          Grazie infinite per la tua precisa risposta.

          Un saluto

          Matteo

          Ma figurati, felice di esserti stato di aiuto!!!

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

      Go to top