Compilare “sottodocumenti”

  • Creatore
    Topic
  • #68566
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao a tutti,
      passo subito a spiegare il titolo criptico: sto lavorando ad una corposa relazione tecnica con tempi di compilazione troppo lunghi per visualizzare al volo il pdf con TeXWorks (l’editor con il visualizzatore interno molto pratico).
      Ho adottato una soluzione parziale: sistemare in una directory il file principale che include con \input un unico file .tex di una data singola sezione in lavorazione. Così facendo posso compilare (con un CTRL+T) ed in un istante controllare l’output.
      Terminata la fase di scrittura della sezione, è sufficiente copiare il file relativo nella directory “vera” del progetto.

      Questo modo di operare è abbastanza efficiente: si tratta di “lavorare in locale” perdendo naturalmente i riferimenti incrociati.
      Tuttavia potrebbe esistere una soluzione migliore senza ricorrere ad \includeonly che, per la mia ossidazione mentale, non vedo.

      Riassumendo i fatti:
      * un file principale basato sulla classe article include (per la precisione) 18 file .tex.
      * la compilazione del documento impiega 48 secondi
      * la scrittura di una singola sezione avviene separatamente esattamente come se il documento contenesse quell’unica sezione per permettere una compilazione più rapida

      Cosa fareste voi?

      Grazie.

    Visualizzazione 8 filoni di risposte
    • Autore
      Risposte
      • #68567
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Chiaramente userei \include e \includeonly che sono lì per essere usati proprio per quello scopo.

          Ciao
          Claudio

          PS: nella GuidaGuIT c’è scritto come scrivere la lista dentro \includeonly in modo da modificare solo la posizione dei caratteri di commento per scegliere quale sotto docoumento compilare. In più non si perdono i riferimenti incrociati, gli indici, eccetera. Non è molto diverso da quello che fai con il tuo metodo artigianale, salvo che:
          1) non perdi i riferimenti
          2) questo metodo non è adatto per includere singole sezioni ma vale per interi capitili.
          3) quando vui compilare l’intero documento ti basta sfruttare le funzioni Comment e Uncomment di TeXworks per mettere o togliere i commenti nella lista di \includeonly
          4) è il metodo che uso per compilare la GuidaGuIT che sul portatile MacBook mi richiede circa mezzo minuto di compilazione quando lo compilo per intero, mentre impiega una paio di secondi quando compilo un solo capitolo.

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

            OldClaudio” post=67680Chiaramente userei \include e \includeonly che sono lì per essere usati proprio per quello scopo.

            Ciao
            Claudio

            PS: nella GuidaGuIT c’è scritto come scrivere la lista dentro \includeonly in modo da modificare solo la posizione dei caratteri di commento per scegliere quale sotto docoumento compilare. In più non si perdono i riferimenti incrociati, gli indici, eccetera. Non è molto diverso da quello che fai con il tuo metodo artigianale, salvo che:
            1) non perdi i riferimenti
            2) questo metodo non è adatto per includere singole sezioni ma vale per interi capitili.
            3) quando vui compilare l’intero documento ti basta sfruttare le funzioni Comment e Uncomment di TeXworks per mettere o togliere i commenti nella lista di \includeonly
            4) è il metodo che uso per compilare la GuidaGuIT che sul portatile MacBook mi richiede circa mezzo minuto di compilazione quando lo compilo per intero, mentre impiega una paio di secondi quando compilo un solo capitolo.

            A blocchi di codice commentato non avevo pensato …
            Mi sembra la soluzione più rapida perché posso compilare velocemente solo la porzione a cui sto lavorando, direttamente nella directory del “progetto”. Quanto al resto, preferisco perdere i riferimenti piuttosto che usare \includeonly adatto solo per i capitoli.

            Si potrebbe anche intervenire con macro apposite:
            Definisco la lista dei nomi dei file da includere e con una seconda macro elenco il numero progressivo del file da includere, per esempio:

            `\filelist{
            intro, % 1
            criteri, % 2
            materiali, % 3
            normerif, % 4
            azioni, % 5
            geotecnica, % 6
            statica, % 7
            dinamica % 8
            }

            poi:
            \insert{8}

            oppure
            \insert{all}

            oppure ancora
            \insert{1,6-7}
            `

            Potrebbe essere un idea per un mini pacchetto magari scritto con LaTeX3.
            Grazie mille.

          • #68569
            admin
            Amministratore del forum
              Up
              0
              Down
              ::


              Forse può interessarti il pacchetto optional:

              `\documentclass{article}

              \usepackage[final]{optional}

              \begin{document}

              \opt{final}{
              \input{uno}
              \input{due}
              \input{tre}
              }

              \end{document}`
              dove uno.tex, due.tex e tre.tex sono file che possono contenere qualsiasi cosa. I riferimenti però non sono mantenuti.

              Ciao
              Orlando

            • #68570
              Up
              0
              Down
              ::


              Ciao robitex,

              non so se ho capito bene cosa intendi. Io uso TeXstudio, e quello che faccio è questo: scrivo un file .tex dove richiamo gli altri file .tex con input, in questo modo:
              `\documentclass[a4paper,11pt]{report}

              \begin{document}

              \input{file1.tex}
              \input{file1_1.tex}
              \input{file1_2.tex}

              \input{file2.tex}

              \end{document}`
              A questo punto imposto questo file .tex (che è l’unico ad avere, o richiamare, il preambolo) come ‘Documento Master’. Se devo lavorare sul file1_2.tex, commento le righe che non mi servono nel file .tex principale, in questo modo:
              `\documentclass[a4paper,11pt]{report}

              \begin{document}

              %\input{file1.tex}
              % \input{file1_1.tex}
              \input{file1_2.tex}

              %\input{file2.tex}

              \end{document}`
              In questo modo posso compilare il solo file1_2.tex. Quando ho finito, decommento e torno alla “versione completa”. Questa è una delle cose che apprezzo molto in TeXstudio.

              Spero di aver centrato quello che ti serviva. Intanto ti auguro una buona giornata,
              Marco.

            • #68571
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                TeXstudio non c’entra niente: quel lavorino si può fare con qualunque editor.

                Non è questo genere di cose che ti fa apprezzare TeXstudio; sono certamente altre, perché questa è solo ordinaria amministrazione a livello del programma di composizione: latex, pdflatex, xelatex, eccetera.

              • #68572
                Up
                0
                Down
                ::


                Ciao Claudio,

                hai ragione, quello che ho detto si può fare benissimo anche senza TeXstudio.

                In effetti, quella che ho proposto è semplicemente un’indicazione per ridurre ulteriormente i tempi e rendere i passaggi meno pesanti. Trovo comodo e celere il poter compilare direttamente da un file che non sia necessariamente quello dove c’è il preambolo. Se sto lavorando su un file .tex e ogni volta che devo compilare devo spostarmi su quello dove c’è il preambolo, per me la cosa diventa un po’ pesantina. Non mi pare che molti altri editor abbiano questa opzione.

                Ciao,
                Marco.

              • #68573
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Quasi tutti hanno facilities per definire un “project” o almeno un master file. Per esempio: TeXstudio. Ne cito alcuni: TeXShop, TeXworks, TeXstudio, Texmaker, Aquamcs, WinEdt; ce ne saranno certamente anche altri.

                  Benché le informazioni non siano tutte corrette, quanto c’è scritto nel sito http://en.wikipedia.org/wiki/Comparison_of_TeX_editors va molto al di lè delle esperienze della maggior parte di noi, ma se lo guardi vedi che quello che ti permette di fare quello che fai con TeXstudio non è esclusivo. Io uso TeXstudio molto marginalmente, perché preferisco di gran lunga lavorare con una interfaccia più “sgombra” e pulita come quelle di TeXShop e TeXworks, e ti assicuro che è persino più comodo che con TeXstudio; Una volta inserita in ogni file subalterno la riga magica che specifica il master file, non devi ricliccare ogni volta per impostare il master file come bisogna fare con TeXstudio.
                  Tuttavia, lo ammetto, certe funzionalità di altri editor dall’interfaccia grafica meno “pulita” forniscono alcune funzionalità che mancano in TeXShop e TeXworks.

                • #68574
                  Up
                  0
                  Down
                  ::


                  Ciao Claudio,

                  non sapevo che le cose stessero così. Ti ringrazio della correzione e del ragguaglio.

                  Buona giornata,
                  Marco.

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


                    Ciao a tutti.
                    Ho appena finito il documento!
                    Non ho utilizzato il pacchetto optional segnalato da ansys, perché avrei dovuto dichiarare parecchie diverse configurazioni di input, ma ho semplicemente commentato e decommentato i comandi di \input, perdendo certo i riferimenti incrociati ma non era quello lo scopo.
                    Questa modalità di compilazione veloce perché ridotta, mi ha aiutato in particolare per comporre l’indice per tentativi in quanto non riuscivo a settare correttamente il pacchetto titletoc.

                    Ho nel frattempo trasformato il documento in twoside ed ho notato un miglioramento del tempo complessivo di compilazione probabilemente perché LaTeX riesce meglio a gestire gli oggetti flottanti (105 tabelle e 102 figure).

                    Ora che ho finito ringrazio tutti inserendo nel cassetto un nuovo progetto: creare i comandi citati qulache post fa, in LaTeX3.
                    Bye

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

                Go to top