Estrarre i percorsi delle immagini da un file latex

  • Creatore
    Topic
  • #44511
    Up
    0
    Down
    ::


    Ciao a tutti,

    vorrei sapere se conoscete qualche utility capace di rintracciare tutte le immagini, flottanti e no, inserite in un file di latex e restituire i relativi percorsi nelle sottocartelle.
    Vorrei cioè ottenere un elenco di questo tipo:

    Figura 1.1
    /Animali/animale1.jpg
    ………….
    Figura 1.2
    /Vegetali/fiore3.jpg
    …………

    etc.

    Grazie,

    Marco

Visualizzazione 13 filoni di risposte
  • Autore
    Risposte
    • #44512
      Up
      0
      Down
      ::

      Ciao a tutti,

      vorrei sapere se conoscete qualche utility capace di rintracciare tutte le immagini, flottanti e no, inserite in un file di latex e restituire i relativi percorsi nelle sottocartelle.
      Vorrei cioè ottenere un elenco di questo tipo:

      Figura 1.1
      /Animali/animale1.jpg
      ………….
      Figura 1.2
      /Vegetali/fiore3.jpg
      …………

      etc.

      Cerca di essere un po’ più specifico: vuoi che questo sostituisca l’elenco delle figure o vuoi un elenco a parte? E dove vorresti inserirlo?

      La seconda domanda è importante perché metterlo alla fine del documento è un po’ più facile TeXnicamente.

      C’è una contraddizione in quello che chiedi, però: assegnare un “Figura x.y” a un’immagine non galleggiante è impossibile, non trovi?

      Ciao
      Enrico

    • #44513
      Up
      0
      Down
      ::


      se disponi di grep (quindi sei su unix/linux, osx o mingw) puoi usare

      `grep “^File: .* Graphic file .*” yourtexfile.log`

      (generato con pdfLaTeX). L’ordine in cui appaiono e’ l’ordine in cui sono nel file .tex, puoi confrontare con la list of figures per trovare le corrispondenze.

    • #44514
      Up
      0
      Down
      ::


      Ciao Enrico,

      1) Vorrei un creare un elenco a parte, in un semplice file di testo;
      2) Hai ragione, nel caso delle figure non flottanti non posso aspettarmi una numerazione, mi basta il solo percorso.

      Il motivo per cui sto facendo tutto questo è che mi ritrovo con delle cartelle piene di immagini, che solo in piccola parte ho effetivamente utilizzato nel documento. Il tutto occupa circa 2 Giga, ma vorrei mandare in tipografia le cartelle “pulite”, cioè con le sole foto effetivamente “linkate” nel documento Tex.
      Avere l’elenco di queste mi dovrebbe aiutare a fare pulizia delle altre in maniera sicura, senza rischiare di cancellare niente di utile.

      capitalaslash,
      questo pomeriggio, appena rientro a casa (dove ho il pc personale con ubuntu) provo il tuo suggerimento. Qui in ufficio ho solo Windows.

      Marco

    • #44515
      Up
      0
      Down
      ::


      il comando che ti ho dato fa il minimo indispensabile.
      se sei un po’ pratico di shell riuscirai facilmente a formattare l’output a tuo piacimento, se hai bisogno di aiuto basta chiedere!

    • #44516
      Up
      0
      Down
      ::

      Ciao Enrico,

      1) Vorrei un creare un elenco a parte, in un semplice file di testo;
      2) Hai ragione, nel caso delle figure non flottanti non posso aspettarmi una numerazione, mi basta il solo percorso.

      Il motivo per cui sto facendo tutto questo è che mi ritrovo con delle cartelle piene di immagini, che solo in piccola parte ho effetivamente utilizzato nel documento. Il tutto occupa circa 2 Giga, ma vorrei mandare in tipografia le cartelle “pulite”, cioè con le sole foto effetivamente “linkate” nel documento Tex.
      Avere l’elenco di queste mi dovrebbe aiutare a fare pulizia delle altre in maniera sicura, senza rischiare di cancellare niente di utile.

      capitalaslash,
      questo pomeriggio, appena rientro a casa (dove ho il pc personale con ubuntu) provo il tuo suggerimento. Qui in ufficio ho solo Windows.

      Marco

      Un sistema può essere quello di ridefinire \includegraphics perché scriva su un file esterno. Ma il metodo con grep mi sembra decisamente più efficiente. Del resto non ti interessa sapere davvero dove compaiono le immagini, ma solo se ci sono. Credo che esista grep anche per Windoze: shareware o freeware

      Ciao
      Enrico

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

        Ciao Enrico,

        1) Vorrei un creare un elenco a parte, in un semplice file di testo;
        2) Hai ragione, nel caso delle figure non flottanti non posso aspettarmi una numerazione, mi basta il solo percorso.

        Il motivo per cui sto facendo tutto questo è che mi ritrovo con delle cartelle piene di immagini, che solo in piccola parte ho effetivamente utilizzato nel documento. Il tutto occupa circa 2 Giga, ma vorrei mandare in tipografia le cartelle “pulite”, cioè con le sole foto effetivamente “linkate” nel documento Tex.
        Avere l’elenco di queste mi dovrebbe aiutare a fare pulizia delle altre in maniera sicura, senza rischiare di cancellare niente di utile.

        capitalaslash,
        questo pomeriggio, appena rientro a casa (dove ho il pc personale con ubuntu) provo il tuo suggerimento. Qui in ufficio ho solo Windows.

        Marco

        Scusate, ma credo si possa fare anche in un altro banalissimo modo:
        cambio il nome della/e cartella/e contenente le immagini
        lancio una compilazione (pdf)latex
        leggo il file di log con le segnalazioni dei file mancanti
        cancello la selezione inversa
        riporto i nomi delle cartelle a quelli originali.

        Funziona?

      • #44518
        Up
        0
        Down
        ::

        Ciao Enrico,

        1) Vorrei un creare un elenco a parte, in un semplice file di testo;
        2) Hai ragione, nel caso delle figure non flottanti non posso aspettarmi una numerazione, mi basta il solo percorso.

        Il motivo per cui sto facendo tutto questo è che mi ritrovo con delle cartelle piene di immagini, che solo in piccola parte ho effetivamente utilizzato nel documento. Il tutto occupa circa 2 Giga, ma vorrei mandare in tipografia le cartelle “pulite”, cioè con le sole foto effetivamente “linkate” nel documento Tex.
        Avere l’elenco di queste mi dovrebbe aiutare a fare pulizia delle altre in maniera sicura, senza rischiare di cancellare niente di utile.

        capitalaslash,
        questo pomeriggio, appena rientro a casa (dove ho il pc personale con ubuntu) provo il tuo suggerimento. Qui in ufficio ho solo Windows.

        Marco

        Scusate, ma credo si possa fare anche in un altro banalissimo modo:
        cambio il nome della/e cartella/e contenente le immagini
        lancio una compilazione (pdf)latex
        leggo il file di log con le segnalazioni dei file mancanti
        cancello la selezione inversa
        riporto i nomi delle cartelle a quelli originali.

        Funziona?

        Non se usi \graphicspath.

        Ciao
        Enrico

      • #44519
        Up
        0
        Down
        ::

        Scusate, ma credo si possa fare anche in un altro banalissimo modo:
        cambio il nome della/e cartella/e contenente le immagini
        lancio una compilazione (pdf)latex
        leggo il file di log con le segnalazioni dei file mancanti
        cancello la selezione inversa
        riporto i nomi delle cartelle a quelli originali.

        Funziona?

        funziona sicuramente.
        ma quando hai 100 immagini magari vorresti un po’ automatizzare la procedura.
        qua di sotto lo scriptino che copia solo le immagini che servono nella cartella NewFigures

        `#! /bin/bash

        TEXFILENAME=main #no extension!

        for file in $(awk '/^File: .* Graphic file .*/ { print $2 }' $TEXFILENAME.log); do
        mkdir -p NewFigures/$(dirname $file)
        cp $file NewFigures/$file
        done`

        basta sistemare la variabile TEXFILENAME al nome del file .tex (e magari cambiare NewFigures se si vuole). Attenzione alle sovrascritture!

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

          Scusate, ma credo si possa fare anche in un altro banalissimo modo:
          cambio il nome della/e cartella/e contenente le immagini
          lancio una compilazione (pdf)latex
          leggo il file di log con le segnalazioni dei file mancanti
          cancello la selezione inversa
          riporto i nomi delle cartelle a quelli originali.

          Funziona?

          funziona sicuramente.
          ma quando hai 100 immagini magari vorresti un po’ automatizzare la procedura.
          qua di sotto lo scriptino che copia solo le immagini che servono nella cartella NewFigures

          `#! /bin/bash

          TEXFILENAME=main #no extension!

          for file in $(awk '/^File: .* Graphic file .*/ { print $2 }' $TEXFILENAME.log); do
          mkdir -p NewFigures/$(dirname $file)
          cp $file NewFigures/$file
          done`

          basta sistemare la variabile TEXFILENAME al nome del file .tex (e magari cambiare NewFigures se si vuole). Attenzione alle sovrascritture!

          Certo, ma se non hai bash?
          mentre facilmente si può installare perl o lua e scrivere in uno di questi linguaggi uno script che elabori il file di log di pdftex.
          la bash è forte ma forse esiste uno scripting più evoluto.
          bye

        • #44521
          Up
          0
          Down
          ::

          [quote]Scusate, ma credo si possa fare anche in un altro banalissimo modo:
          cambio il nome della/e cartella/e contenente le immagini
          lancio una compilazione (pdf)latex
          leggo il file di log con le segnalazioni dei file mancanti
          cancello la selezione inversa
          riporto i nomi delle cartelle a quelli originali.

          Funziona?

          funziona sicuramente.
          ma quando hai 100 immagini magari vorresti un po’ automatizzare la procedura.
          qua di sotto lo scriptino che copia solo le immagini che servono nella cartella NewFigures

          `#! /bin/bash

          TEXFILENAME=main #no extension!

          for file in $(awk '/^File: .* Graphic file .*/ { print $2 }' $TEXFILENAME.log); do
          mkdir -p NewFigures/$(dirname $file)
          cp $file NewFigures/$file
          done`

          basta sistemare la variabile TEXFILENAME al nome del file .tex (e magari cambiare NewFigures se si vuole). Attenzione alle sovrascritture!

          Certo, ma se non hai bash?
          mentre facilmente si può installare perl o lua e scrivere in uno di questi linguaggi uno script che elabori il file di log di pdftex.
          la bash è forte ma forse esiste uno scripting più evoluto.
          bye[/quote]
          E Lua ce l’hanno tutti quelli che hanno installato una distribuzione recente di TeX (almeno in una versione semplificata, senza molte librerie). 🙂 A proposito, perché invece che in Perl quello script (simpdftex) non lo si scrive in Lua? Così basta chiamarlo con “texlua simpdftex”; si può anche “compilare” con texluac. Non credo che servano librerie particolari: lettura della linea di comando, chiamate al sistema operativo e poco più.

          Ciao
          Enrico

        • #44522
          Up
          0
          Down
          ::

          Certo, ma se non hai bash?
          mentre facilmente si può installare perl o lua e scrivere in uno di questi linguaggi uno script che elabori il file di log di pdftex.
          la bash è forte ma forse esiste uno scripting più evoluto.
          bye

          per fortuna non avro’ mai questo problema.
          non uso windows in nessuna forma e non mi interessa che i miei script girino su quella piattaforma nata per far perdere tempo alla gente.
          opinione personale, ovviamente… 😉
          se uno vuole proprio usarla, non posso aiutarlo.

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

            [quote][quote]Scusate, ma credo si possa fare anche in un altro banalissimo modo:
            cambio il nome della/e cartella/e contenente le immagini
            lancio una compilazione (pdf)latex
            leggo il file di log con le segnalazioni dei file mancanti
            cancello la selezione inversa
            riporto i nomi delle cartelle a quelli originali.

            Funziona?

            funziona sicuramente.
            ma quando hai 100 immagini magari vorresti un po’ automatizzare la procedura.
            qua di sotto lo scriptino che copia solo le immagini che servono nella cartella NewFigures

            `#! /bin/bash

            TEXFILENAME=main #no extension!

            for file in $(awk '/^File: .* Graphic file .*/ { print $2 }' $TEXFILENAME.log); do
            mkdir -p NewFigures/$(dirname $file)
            cp $file NewFigures/$file
            done`

            basta sistemare la variabile TEXFILENAME al nome del file .tex (e magari cambiare NewFigures se si vuole). Attenzione alle sovrascritture!

            Certo, ma se non hai bash?
            mentre facilmente si può installare perl o lua e scrivere in uno di questi linguaggi uno script che elabori il file di log di pdftex.
            la bash è forte ma forse esiste uno scripting più evoluto.
            bye[/quote]
            E Lua ce l’hanno tutti quelli che hanno installato una distribuzione recente di TeX (almeno in una versione semplificata, senza molte librerie). 🙂 A proposito, perché invece che in Perl quello script (simpdftex) non lo si scrive in Lua? Così basta chiamarlo con “texlua simpdftex”; si può anche “compilare” con texluac. Non credo che servano librerie particolari: lettura della linea di comando, chiamate al sistema operativo e poco più.

            Ciao
            Enrico[/quote]

            Mi stai tentando prof?
            lua sarebbe più facile di perl, ma come sai sto portando avanti una nuova classe basata su pstricks (di più non posso dirti per questioni di assoluta segretezza 😉 )
            ed, al contrario di capitalslash, spero possa essere presto disponibile per tutti gli utenti anche da chi usa windows (che mi pare siano tantini rispetto ad altri so).
            Lavorando con LaTeX non solo è normale, ma anche ovvio, naturale e scontato che la funzionalità sia multi-piattaforma.

            sicuro che prenderò in considerazione simpdftex in lua come prossimo progetto (si tratta proprio di rendere disponibile sotto windows una comoda utility scritta in bash, ironia della sorte)

            … a tutti gli utenti di LaTeX, ConTeXt, XeTeX ecc ecc, un doppio saluto 😀 😀

          • #44524
            Up
            0
            Down
            ::

            E Lua ce l’hanno tutti quelli che hanno installato una distribuzione recente di TeX (almeno in una versione semplificata, senza molte librerie). 🙂 A proposito, perché invece che in Perl quello script (simpdftex) non lo si scrive in Lua? Così basta chiamarlo con “texlua simpdftex”; si può anche “compilare” con texluac. Non credo che servano librerie particolari: lettura della linea di comando, chiamate al sistema operativo e poco più.

            Ciao
            Enrico

            deve disporre di una libreria per le regular expression, che non e’ tanto banale.
            con awk o grep sembra tutto piu’ semplice perche’ sono programmi molto potenti.
            mi meraviglio ogni volta a pensare di poter lavorare con un sistema operativo che non ha strumenti adeguati a fare anche le cose minime.

          • #44525
            Up
            0
            Down
            ::


            capitalaslash,

            dopo qualche tentativo (perché conosco poco Linux e ancor meno gli scripts) sono riuscito ad usare il tuo codice e mi pare funzioni proprio bene.

            Grazie a tutti ragazzi, siete forti!

            Marco

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

        Go to top