inclusione tutti file cartella

  • Questo topic ha 13 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 21 anni fa da Firetux.
  • Creatore
    Topic
  • #6528
    Up
    0
    Down
    ::


    Ciao a tutti, sono alle prime armi con latex e ho questo problema:
    Devo scrivere un canzoniere e percui avevo pensato di fare la seguente cosa:
    1) scrivere 1 canzone per file (dando come nome del file il titolo della canzone: titolo.tex) e metterli in una cartella (es: testi)
    2) creare il file principale del canzoniere ed includere tutti i file .tex contenuti nella cartella “testi” in ordine alfabetico

    …volevo sapere se tramite il comando \include è possibile fare questo e se per forza di cose devo fare 1 \include per ogni canzone che ho?

    grazie mille in anticipo per la risposta e per eventuali altri suggerimenti per risolvere in maniera differente il problema 😀

Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #6529
      Up
      0
      Down
      ::


      Credo che tu possa anche fare`\include{canzone1,canzone2,…}`

    • #6530
      Up
      0
      Down
      ::


      devo per forza mettere canzone1, canzone2 … ect ect? ..le canzoni sono molte e tutte le volte dovrei inserire i canti io in ordine alfabetico nella lista dell’include 🙁
      Non è possibile con 1 solo comando includere tutti i file .tex contenuti in una cartella in ordine alfabetico?

    • #6531
      Up
      0
      Down
      ::


      Direi di no. Magari con una macro, ma non saprei nemmeno da dove partire.

    • #6532
      Up
      0
      Down
      ::


      in alternativa avevo pensato a fare così
      1) dividere le canzoni come spiegato prima e metterle in una cartella (testi)
      2) tramite uno script di shell generare un file (ad esempio “elenco.tex”) contenente
      \include{canzone1,canzone2,…}
      dove canzone1 ect. ect.. sono tutti i file .tex contenuti nella cartella “testi”
      3) include nel file file principale il file “elenco.tex”
      ..così può funzionare?

    • #6533
      Gus
        Up
        0
        Down
        ::


        Direi proprio di sì! Se sai fare lo script, direi che il problema è risolto (magari insegnaci come!).
        Ciao,
        Gus

      • #6534
        Up
        0
        Down
        ::


        pensavo a uno script bash d questo tipo:
        `
        #! /bin/bash

        lista=””
        for i in testi/*.tex
        do
        if [ “$lista” = “” ]; then
        lista=”\include{”
        else
        lista=$lista”,”
        fi
        lista=$lista$i
        echo “Aggiunto '”$i”'…”
        done
        lista=$lista”}”
        echo $lista > testi.tex
        `

        che ne dite? …però avrei preferito fare tutto direttamente in latex senza scomodare altro

      • #6535
        Up
        0
        Down
        ::


        ciao,

        Ben fatto. Penso che quello sia l’unico modo per raggiungere il tuo scopo. Il motivo mi sembra intuibile (a meno di non essere prontamente e piacevolmente smentito): il file.tex, in tex/latex, è da considerarsi come un punto di partenza e mai come un punto di arrivo, nel senso che non esiste nessuna procedura in grado di generare un file.tex. Latex è pensato in modo che è il file.tex deputato a creare e gestire contenuti.
        Non so se sono stato chiaro.
        Se esite qualche cosa, interno a latex, che mi smentisce postatelo, intanto prendo nota dello script di firetux, che può essere sempre utile.

        ciao

        angelico

      • #6536
        Up
        0
        Down
        ::


        ora ho questo problema:
        nella cartella testi i nomi dei file contengono degli spazi e quando vado a fare l’include questo mi crea problemi. Cerco di spiegarmi meglio… se il nome della canzone è “A Te Vorrei Dire” il nome del file sarà “”A Te Vorrei Dire.tex” e quindi l’include che faccio io è:
        \include{testi/A Te Vorrei Dire.tex}
        ma ottengo questo errore:

        `No file 'testi/A.aux.
        ) (/usr/share/texmf-dist/tex/latex/cyrillic/ot2cmr.fd) [1{/usr/share/texmf-var/
        fonts/map/pdftex/updmap/pdftex.map}]
        ! I can't write on file `'testi/A.aux'.
        \@include …\immediate \openout \@partaux #1.aux
        \immediate \write \@partau…
        l.22 \include{'testi/A Te Vorrei Dire.tex'}

        Please type another output file name:`

        che devo fare?

      • #6537
        Up
        0
        Down
        ::


        Magari chiamarlo A_Te_Vorrei_Dire.tex

      • #6538
        Up
        0
        Down
        ::


        …vero, anche questa è una soluzione! 😀 Grazie 1000!

      • #6539
        Up
        0
        Down
        ::


        Ho apportato una piccola modifica allo script. Nell’include non serve l’estensione .tex percui la elimino
        `#! /bin/bash

        lista=””
        for i in testi/*.tex
        do
        if [ “$lista” = “” ]; then
        lista=”\include{”
        else
        lista=$lista”,”
        fi
        lista=$lista${i%.tex}
        echo “Aggiunto '”${i%.tex}”'…”
        done
        lista=$lista”}”
        echo $lista > testi.tex`
        😀

      • #6540
        Gus
          Up
          0
          Down
          ::

          il file.tex, in tex/latex, è da considerarsi come un punto di partenza e mai come un punto di arrivo, nel senso che non esiste nessuna procedura in grado di generare un file.tex.

          Io non sono informatico, ma questa cosa mi interessava per capire se TeX fosse o no un vero linguaggio di programmazione. Allora: TeX lo è, LaTeX no (si sapeva). In TeX esistono procedure per scrivere e leggere file di qualsiasi tipo (openin, closein, ecc) che sto imparando a usare.
          Quindi immagino per voi dovrebbe essere facile produre un programmino in TeX (consiglio l’ottima guida in rete gratis recensita sul sito) che ripeta quello postato sopra.
          Intanto, e scusate l’ignoranza: come si usa questo postato?!

          Ciao,

          Gus

        • #6541
          Up
          0
          Down
          ::


          lo script che ho postato io lo puoi usare in una shell bash di linux
          copi il codice in un file, gli dai i permessi di esecuzione e lo metti nella cartella del progetto latex. dopo di che lo esegui e ti crea il file testi.tex

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

      Go to top