Posso dire a latex di compilare due volte?

  • Creatore
    Topic
  • #95065
    Up
    0
    Down
    ::


    Quando c’è la \tableofcontents e non ci sono file ausiliari, latex produce un bellissimo foglio completamente vuoto tranne che per la scritta “indice” in alto.
    Posso dirgli in qualche modo di controllare se è presente \tableofcontents e se non esiste file.toc, e in tal caso di compilare di nuovo quando ha finito?
    Mi scoccia dare due volte il comando.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #95066
      Up
      0
      Down
      ::


      Benvenuta!

      Più che una funzione del compilatore, quella che tu vuoi immagino sia una funzione dell’editor di testo. Gli editor di testo decenti permettono di automatizzare il processo di ricompilazione del documento. Quale editor di testo uso? Su quale sistema operativo?

      Inoltre esistono dei programmini esterni appositi, quelli che vanno per la maggiore sono [tt]latexmk[/tt] e [tt]arara[/tt], che servono proprio per automatizzare il processo di compilazione senza invocare manualmente il compilatore.

      Per situazioni molto più complicate può essere utile rivolgersi a un Makefile, e qui trovi una guida introduttiva, anche se i Makefile potrebbero risultare ostici ai più, quindi fai finta che non ti abbia detto nulla.

      in realtà credo che usando la shell escape non sia impossibile, per chi è in grado (quindi non io) di scrivere del codice TeX che faccia quello che richiedi, ma continuo a ritenere che la soluzione più “pulita” sia farsi aiutare dal proprio editor o da un programma esterno apposito.

    • #95067
      Up
      0
      Down
      ::


      Grazie della risposta, uso TeXworks su win8
      Mi piace la cosa delle shell escape. C’è una guida da qualche parte?
      Ho gugolato un po’ e le ho abilitate, ma ora non so usarle. Immagino che \immediate\write18{lualatex \jobname} causi un loop, qual è il modo giusto?

    • #95068
      Up
      0
      Down
      ::

      izabera” post=94696Grazie della risposta, uso TeXworks su win8

      Uhm, purtroppo non uso TeXworks e quindi non so dirti se questo possieda la funzione di cui ti parlavo sopra, a proposito degli editor di testo. Aspettiamo che arrivi qualcuno in grado di aiutarti, nel frattempo di consiglio di informarti su latexmk e arara (qui http://profs.scienze.univr.it/~gregorio/introarara.pdf trovi una introduzione a quest’ultimo) 😉

      izabera” post=94696Mi piace la cosa delle shell escape. C’è una guida da qualche parte?
      Ho gugolato un po’ e le ho abilitate, ma ora non so usarle. Immagino che \immediate\write18{lualatex \jobname} causi un loop, qual è il modo giusto?

      In realtà non volevo ispirare la tua curiosità menzionando la shell escape, non è una funzione da prendere alla leggera perché può fare molti danni, quindi ti consiglio vivamente di disattivarla e usarla con cautela 🙂

    • #95069
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Dipende da cosa vuoi fare; in generale, specialmente sulle macchine Windows, sarebbe meglio non attivare lo shell-escape.
        Questo si attiva da solo per eseguire un piccola lista di programmi sicuri, come makeindex, bibtex, kpsewhich e pochi altri.

        Per esempio, se ti serve fare un indice analitico, basta che tu legga la documentazione di imakeidx e che tu usi quel pacchetto per gestire gli indici analitici (al plurale, perché imakeidx ti permette di creare anche diversi indici analitici contemporaneamente); Lanci pdflate una sola volta e al momento opportuno imkeidx attiva lo shell-escape protetto, compila gli indici analitici, poi ripassa il cotrollo a pdflatex che li compone nel tuo documento.

        TeXworks è un ottimo editor, ma non mi pare che abbia nessuna funzione per eseguire compilazioni multiple, che sarebbero necessarie con altri programmi esterni. ma c’è arara: leggi la documentazione di arara (texdoc arara da terminale); vedrai che ti basta mettere in testa la file .tex unico o principale pochi “commenti magici” e poi arara fa tutto quel che ti serve e non hai nessun bisogno di correre rischi di sicurezza con un pdflatex abilitato indiscriminatamente ad eseguire qualunque comando di sistema attraverso lo shell-escape; al limite potreti inavvertitamente piallarti il disco rigido, cancellando tutto quanto 😡 😈

      • #95070
        Up
        0
        Down
        ::


        Ok mi piace arara! Grazie mille ad entrambi per il suggerimento.

        Ho aggiunto solo questo a inizio file:
        `% arara: lualatex
        % arara: lualatex: { synctex: yes }`
        Ora vi chiedo: c’è un modo per mettere la condizione che volevo? Cioè non mi serve di compilare due volte se file.toc esiste già, e visto che uso lualatex le compilazioni durano tipo un secolo.

      • #95071
        Up
        0
        Down
        ::

        izabera” post=94700Ok mi piace arara! Grazie mille ad entrambi per il suggerimento.

        Ho aggiunto solo questo a inizio file:
        `% arara: lualatex
        % arara: lualatex: { synctex: yes }`
        Ora vi chiedo: c’è un modo per mettere la condizione che volevo? Cioè non mi serve di compilare due volte se file.toc esiste già, e visto che uso lualatex le compilazioni durano tipo un secolo.

        Puoi usare [tt]latexmk[/tt]. Ma la trovo una perdita di tempo: quando mai compili esattamente una volta un documento?

        Ciao
        Enrico

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

    Go to top