Problema con \include

  • Creatore
    Topic
  • #115461
    Massimiliano
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno a tutti,

      sto componendo un documento che risulterà molto corposo (sono una serie di dati estratti e graficati con pgfplots).
      Leggendo LaTeXpedia ho trovato il capitolo dedicato ai documenti di grandi dimensioni e ho scoperto le funzioni del comando \include. Ho provato ad usarlo ma ho un errore molto strano:
      `
      Runaway argument?
      {\contentsline {subf
      ! File ended while scanning use of \@writefile.

      \par
      l.10 \@input{28032019/28032019.aux}

      ?
      `
      Il documento 28032019.tex è dentro alla cartella 28032019 (ho già provato a cambaire nome al file pensando fosse un conflitto ma non cambia niente) e ha una struttura del tipo:
      `
      \begin{figure}[htbp!]
      \centering
      % Grafico
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=nomex,ylabel=nomey]
      \addplot table [x=nomecolonnafile, y=nomecolonnafile,col sep=space,mark=none]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      % distribuzioni
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=]
      \addplot[mark=none,blue] table [x=, y=,col sep=space]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=]
      \addplot[mark=none,blue] table [x=, y=,col sep=space]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}

      % Grafico
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=,ylabel=,legend entries={},legend pos=north west]
      \addplot[mark=none,blue] table [x=, y=,col sep=space,mark=none]{28032019/Dati/file.txt};
      \addplot[mark=none,green] coordinates{};
      \addplot[mark=none,green,forget plot] coordinates{};
      \addplot[mark=none,red] coordinates{};
      \addplot[mark=none,red,forget plot] coordinates{};
      \end{axis}
      \end{tikzpicture}}
      % distribuzioni
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=]
      \addplot[mark=none,blue] table [x=, y=,col sep=space]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=,legend entries={},legend pos=north west]
      \addplot[mark=none,blue] table [x=, y=,col sep=space]{28032019/Dati/file.txt};
      \addplot[mark=none,green] coordinates{};
      \addplot[mark=none,green,forget plot] coordinates{};
      \addplot[mark=none,red] coordinates{};
      \addplot[mark=none,red,forget plot] coordinates{};
      \end{axis}
      \end{tikzpicture}}

      % Grafico
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=,ylabel=]
      \addplot table [x=, y=,col sep=space,mark=none]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      % distribuzione
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=]
      \addplot table [x=, y=,col sep=space,mark=none]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      \subfloat[]{\begin{tikzpicture}[scale=0.65]
      \begin{axis}[xlabel=]
      \addplot table [x=, y=,col sep=space,mark=none]{28032019/Dati/file.txt};
      \end{axis}
      \end{tikzpicture}}
      \caption{}
      \end{figure}
      `
      questo ripetuto per quattro volte (mi scuso se quello postato non è un MWE ma non posso mettere quei dati su internet, se fosse necessario posso generare un set di dati casuale e postare successivamente un MWE).
      Il main file ha la seguente struttura:
      `
      \documentclass{book}
      \usepackage[italian]{babel}
      \usepackage[utf8]{inputenc}
      \usepackage[T1]{fontenc}
      \usepackage{booktabs}
      \usepackage{graphicx}
      \usepackage[italian]{varioref}
      \usepackage{subfig}
      \usepackage{pgfplots}
      \pgfplotsset{compat=1.14}
      \pgfkeys{/pgf/number format/.cd,1000 sep={\,}}
      \usepackage{siunitx}
      \usepackage[top=2cm, left=2.5cm,right=2.5cm,bottom=2.5cm]{geometry}

      % file da includere
      \includeonly{28032019/28032019,
      }

      \begin{document}

      \title{}
      \date{\today}
      \author{}
      \maketitle

      \tableofcontents

      \include{28032019/28032019}

      \end{document}
      `
      Ora arriva la cosa strana: se nel file 28032019 i gruppi di figure sono 3 la compilazione va a buon fine, se ripeto il blocco di istruzioni 4 volte mi restituisce l’errore che ho postato sopra.
      Inoltre, se uso il comando \input, non ho nessun problmema (neanche con 4 guppi di figure quindi non può essere un errore di sintassi).
      Al momento sono un abbastanza confuso e spero che possiate aiutarmi (sperando di aver esposto in modo chiaro il problema).

      Ringrazio in anticipo.

    Visualizzazione 9 filoni di risposte
    • Autore
      Risposte
      • #115462
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Difficile dire che cosa ti sia successo.
          Posso tirare ad indovinare.
          Il fatto che ti segni quell’errore alla riga 10, vuol dire che lo commette mentre legge qualche file ausiliario, per esempio il file .toc, o .lof o .lot, che servono epr comporre gli indici. Perché quel mozzicone di parola “subf” (per esempio una troncatura di subfloat) comapia da qualche parte in uno dei file ausiliri mi sfugge completamente.

          Prova a ripetere la compilazione dopo avere cancellato tutti i file ausiliari.

          Mi spiace di non saperti dire di più.

        • #115463
          Massimiliano
          Partecipante
            Up
            0
            Down
            ::


            Ciao OldClaudio,

            ho provato a fare come consigliato ma non cambia niente purtroppo.
            Siccome mi piace sperimentare ho provato a fare la seguente modifica al documento da importare: ho fatto i soliti tre grafici e poi ho aggiunto un input \input{grafico4.tex}
            Questa volta ottengo un errore diverso:
            `
            Runaway argument?
            {\contentsline {subfigure}{\numberline {(f)}{\ignorespa
            ! File ended while scanning use of \@writefile.

            \par
            l.10 \@input{28032019/28032019.aux}
            `
            Può essere colpa della distribuzione? Attualmente su questo PC ho installato TeXLive 2017 (sto aspettando il 2019 per fare l’aggiornamento).
            Posso trovare qualche altra informazione utile guardando il file .log?
            Ora farò delle prove con la mia tesi triennale (dove non ho grafici) per vedere se il problema si ripresenta e vi farò sapere.
            Intanto grazie mille per la disponibilità

          • #115464
            Massimiliano
            Partecipante
              Up
              0
              Down
              ::


              Ok, ho provato con la mia tesi ma non ricevo nessun problema… Sono davvero confuso 😕 😕 😕

            • #115465
              robitex
              Amministratore del forum
                Up
                0
                Down
                ::


                Ciao.
                Così nell’immediato direi due cose:
                1) per inserire un grafico, tanto vale inserirne il pdf, quindi usa la classe standalone + ambiente figure + \includegraphics
                2) uso quasi sempre un main file con file secondari per singola sezione/capitolo, ma non uso \include, uso direttamente il comando \input

                Un saluto.
                R.

              • #115466
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::

                  Marluxia” post=115843Ciao OldClaudio,

                  ho provato a fare come consigliato ma non cambia niente purtroppo.
                  Siccome mi piace sperimentare ho provato a fare la seguente modifica al documento da importare: ho fatto i soliti tre grafici e poi ho aggiunto un input \input{grafico4.tex}
                  Questa volta ottengo un errore diverso:
                  `
                  Runaway argument?
                  {\contentsline {subfigure}{\numberline {(f)}{\ignorespa
                  ! File ended while scanning use of \@writefile.

                  \par
                  l.10 \@input{28032019/28032019.aux}
                  `
                  Può essere colpa della distribuzione? Attualmente su questo PC ho installato TeXLive 2017 (sto aspettando il 2019 per fare l’aggiornamento).
                  Posso trovare qualche altra informazione utile guardando il file .log?
                  Ora farò delle prove con la mia tesi triennale (dove non ho grafici) per vedere se il problema si ripresenta e vi farò sapere.
                  Intanto grazie mille per la disponibilità

                  Ripeto, l’errore nasce dalla lettura di un file ausiliario. Forse manca una graffa chiusa che lì er ;ì non influisce sull’importazione della figiua, ma influisce su quanto quella sotto figura scrive nel file ausiliario, probabilmente il file .lof

                  Ricorda che \input inserisce il suo contenuto proprio ì dove metti i comando come se il programa di compilazione continuase a leggere ilsui input da un altro file (in effetti è quello che fa). Invece include è un comando che prima esegue un \cleardoublepage, e poi immette un file intero; \include va bene per immettere un intero capitolo; \input può andare bene sempre, salvo che se vuoi saltare a pagina nuova il \cleardoublepage devi darlo tu. In sostanza \include e \input non sono la stessa cosa; @robytex preferisce usare sempre \input, io uso quasi sempre \include e nei file immessi con \include, talvolta immetto altri file con \input. Con \include puoi usare anche \includeonly, con \input non c’è niente di equivalente, perché, sì, puoi commentare la riga che contiene \input, ma non puoi conservare i riferimenti alle parti che non compili più.

                  Chiaramente è una questione di gusti personali; tuttavia è bene ricordare che \include e \input hanno funzioni diverse.

                • #115467
                  Up
                  0
                  Down
                  ::


                  Strano errore. Mi piacerebbe sapere, così per curiosità, com’è andata a finire.

                  Quasi certamente, l’errore si verifica leggendo il file [tt].aux[/tt] del file principale, il quale richiama (certamente, a questo punto) alla linea 10 il file [tt]28032019/28032019.aux[/tt]. Ciò può essere confermato al di là di ogni possibile dubbio cercando, nel file [tt].log[/tt], l’ultima parentesi tonda aperta che precede il messaggio d’errore: essa indica quale sia stato l’ultimo file di input aperto prima del messaggio stesso, con il nome di tale file che segue immediatamente la parentesi stessa. Nel nostro caso, risalendo all’ultima parentesi tonda aperta prima del messaggio d’errore che è stato affisso, dovremmo trovare qualcosa come`(./Main.aux`a conferma del fatto che l’errore si verifica durante la lettura del file [tt]Main.aux[/tt] situato nella cartella di lavoro corrente. Del resto, ciò è esattamente quello che deve succedere quando si usa [tt]\include[/tt].

                  Ricordo che si può chiedere ai programmi della famiglia texmf di stampare i messaggi d’errore con un formato che indica, oltre al numero di linea, anche il nome del file in cui l’errore si verifica impostando al valore [tt]t[/tt] (true) l’opzione [tt]file_line_error_style[/tt]. Il modo più semplice di fare ciò è creare una variabile di ambiente con lo stesso nome e impostata al valore desiderato, qualcosa come
                  `export file_line_error_style=t`
                  in [tt].bashrc[/tt] (o file simile).

                  Per caso, non è che, aprendo il file [tt]28032019/28032019.aux[/tt], scopri che esso è scritto tutto su un’unica, lunghissima riga?

                  Ciao.


                  Gustavo

                • #115468
                  Massimiliano
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Ciao letteracdp,

                    è andata a finire che il tempo che stavo impiegando per risolvere l’errore era molto di più di quello che avrei mai potuto risparmiare commentando gli includeonly invece degli input quindi ho lasciato perdere (dal momento che il risultato è identico).
                    Per quanto riguarda il file .aux purtroppo su questo pc non ho il documento a portata di mano, posso provare a crearne uno fittizio e vedere se, effettivamente, il file .aux è una sola riga.
                    Ti tengo informato e grazie mille per la risposta

                  • #115469
                    Massimiliano
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Ok, ho fatto la prova che mi hai detto di fare e purtroppo no, il file Giorno.aux non è una sola riga 😐
                      Ecco qui il file Giorno.aux:
                      `
                      \relax
                      \@writefile{toc}{\contentsline {chapter}{\numberline {1}data linea}{5}}
                      \@writefile{lof}{\addvspace {10\p@ }}
                      \@writefile{lot}{\addvspace {10\p@ }}
                      \@writefile{toc}{\contentsline {section}{\numberline {1.1}Grafici prove}{5}}
                      \@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Macchina 1\relax }}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {variabile 1}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {PDF variabile 1}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {CDF variabile 1}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {variabile 2}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {PDF variabile 2}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {CDF variabile 2}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {variabile 3}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {PDF variabile 3}}}{6}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {CDF variabile 3}}}{6}}
                      \@writefile{lof}{\contentsline {figure}{\numberline {1.2}{\ignorespaces Macchina 2\relax }}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {variabile 1}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {PDF variabile 1}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {CDF variabile 1}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {variabile 2}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {PDF variabile 2}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {CDF variabile 2}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {variabile 3}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {PDF variabile 3}}}{7}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {CDF variabile 3}}}{7}}
                      \@writefile{lof}{\contentsline {figure}{\numberline {1.3}{\ignorespaces Macchine 3\relax }}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {variabile 1}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {PDF variabile 1}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {CDF variabile 1}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {variabile 2}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {PDF variabile 2}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {CDF variabile 2}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {variabile 3}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {PDF variabile 3}}}{8}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {CDF variabile 3}}}{8}}
                      \@writefile{lof}{\contentsline {figure}{\numberline {1.4}{\ignorespaces Macchina 4\relax }}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {variabile 1}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {PDF variabile 1}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {CDF variabile 1}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {variabile 2}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {PDF variabile 2}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {CDF variabile 2}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {variabile 3}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {PDF variabile 3}}}{9}}
                      \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {CD
                      `

                    • #115470
                      Up
                      0
                      Down
                      ::

                      Marluxia” post=115913Ciao letteracdp,

                      è andata a finire che il tempo che stavo impiegando per risolvere l’errore era molto di più di quello che avrei mai potuto risparmiare commentando gli includeonly invece degli input quindi ho lasciato perdere (dal momento che il risultato è identico).

                      Aspetta, aspetta, perché non ho capito bene: dici che hai rinunciato a usare [tt]\include[/tt] e hai invece ripiegato su [tt]\input[/tt]? Dunque l’errore che si presentava con [tt]\input[/tt] non si presenta più?

                      Marluxia” post=115913Per quanto riguarda il file .aux purtroppo su questo pc non ho il documento a portata di mano, posso provare a crearne uno fittizio e vedere se, effettivamente, il file .aux è una sola riga.
                      […]

                      Dici «su questo pc»: ciò conferma indirettamente quello che, però, resta ancora solo un mio sospetto («Ah, del paggio quel che ho detto…» 🙂 ). Tanti anni fa, problemi del genere potevano capitare trasferendo una cartella, completa di tutti i file ausiliari, tra computer che usano convenzioni diverse per le terminazioni di riga, per esempio da un Mac (che usa [tt][/tt]) a una macchina Unix (che usa [tt][/tt]). Non è che, sempre per caso, hai fatto qualcosa di simile?

                      Però, non mi torna il fatto che questo problema possa ancora presentarsi al giorno d’oggi…

                      Per quanto riguarda il file [tt].aux[/tt] che hai generato per prova, da quel che vedo è stato generato durante la compilazione di un file sorgente che non usava [tt]\include[/tt]; e comunque, non dovresti aver ottenuto alcun errore durante la compilazione stessa (almeno non del tipo che hai descritto). Io però non parlavo del file [tt].aux[/tt] principale, ma del file [tt].aux[/tt] relativo al file incluso (con [tt]\include[/tt]); per capirci, del file [tt]28032019/28032019.aux[/tt], nel caso descritto nella tua domanda.

                      Ciao.


                      Gustavo

                    • #115471
                      Massimiliano
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        Mi rendo conto che la situazione sia abbastanza difficile da descrivere, provo a riassumere.
                        Sto producendo delle relazioni per la ditta per cui lavoro (per questo non posso mettere la cartella con il codice che da problemi, purtroppo contiene dati che non posso condividere), essendo un lavoro piuttosto corposo avevo trovato il comando include e ho provato ad usarlo ma ho notato il seguente problema: il documento ha diversi plot (fatti con pgfplots) che sono contenuti in 3×3 subfigure; fino a 3 serie di subplot (quindi 3 volte 3×3 subfigure) il codice compila, aggiungendo il 4° si blocca anche se tutti e 4 i blocchi di codice sono uguali (fatti col copia e incolla).
                        Il problema che ho si presenta solo se uso include, con \input non da nessun problema.

                        Ora la faccenda si fa ancora più assurda: mentre stavo preparando una cartella che contenesse un MWE ho modificato il codice per togliere tutte le informazioni sensibili ed ora funziona anche con include, il problema è che non so quale delle tante cose che ho cancellato risolva il problema…

                        Questa discussione è talmente contorta che non so se possa essere utile continuarla, in ogni caso vi ringrazio tantissimo per il tempo che mi avete dedicato

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

                    Go to top