Stampa unione con LaTeX?

  • Questo topic ha 10 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 17 anni fa da mlgdominici.
  • Creatore
    Topic
  • #12588
    gmc
      Up
      0
      Down
      ::


      Carissimi,

      è possibile realizzare una stampa unione con LaTeX?

      Esprimo meglio il problema: in un file (un txt o un csv o un db) ho dei campi (ad esempio nome, cognome, indirizzo). Creo un file tex con l’intestazione

      gentile sig. NOME COGNOME

      Vorrei che mi creasse il pdf con tante copie quante ce ne sono nel file txt e sostituendo NOME COGNOME con i vari nomi e cognomi.

      Una prima soluzione è creare il file tex nel database e far fare al db le sostituzioni, ma mi pare una soluzione “poco elegante”.

      Allora mi domando se è possibile qualcosa del genere direttamente in LaTeX? Inoltre (spero che non sia da mettere in un topic diverso) è possibile far “interfacciare” LaTeX con un db esterno?

      Grazie,
      Peppe

    Visualizzazione 9 filoni di risposte
    • Autore
      Risposte
      • #12589
        Up
        0
        Down
        ::


        Non credo di aver capito. Hai una lettera che va stampata più volte cambiando solo alcune parole da una versione all’altra? Se è così puoi definirti un comando nuovo (\newcommand) di questo tipo
        `\newcommand\lettera[1]{Voglio dei {#1} subito.}`
        da usare così
        `\lettera{pennarelli}`
        che produce

        Voglio dei pennarelli subito.

        Se hai più punti in cui inserire parole, basta che aumenti il numero dopo il nome del comando e poi usi #1, #2, …

      • #12590
        Up
        0
        Down
        ::

        Inoltre (spero che non sia da mettere in un topic diverso) è possibile far “interfacciare” LaTeX con un db esterno?

        Dovresti aprire un nuovo topic per questo argomento. Ti consiglio di dare anche qualche informazione sul tipo di database che vuoi usare.

      • #12591
        gmc
          Up
          0
          Down
          ::

          Non credo di aver capito. Hai una lettera che va stampata più volte cambiando solo alcune parole da una versione all’altra? Se è così puoi definirti un comando nuovo (\newcommand) di questo tipo
          `\newcommand\lettera[1]{Voglio dei {#1} subito.}`
          da usare così
          `\lettera{pennarelli}`
          che produce

          Voglio dei pennarelli subito.

          Se hai più punti in cui inserire parole, basta che aumenti il numero dopo il nome del comando e poi usi #1, #2, …

          Il concetto è lo stesso, però ho l’elenco delle parole in un altro file e non voglio fare “tutto a mano”. L’esempio tipico è una lettera in cui cambia solo il destinatario. Finché i destinatari sono pochi non c’è problema, ma quando sono molti sento la necessità di qualche “cosa” un po’ più automatizzata, che mi crei un pdf con tante lettere quanti sono i destinatari.

          Per chi ha usato word o simili il comando è proprio stampa unione.

          Grazie,
          Peppe

        • #12592
          gmc
            Up
            0
            Down
            ::


            Carissimi,

            una volta capito che “stampa unione” si traduce con (mail) merge basta usare google e con un po’ di tempo si arriva a qualcosa… 🙂

            Ad esempio il pacchetto csvtools è quello che desideravo

            The csvtools package allows you to repeatedly perform a set of LaTeX commands on data in each row of a comma separated variable (CSV) file (though substitution of the ‘comma’ is permitted). Such files may be used as source for mail merging, generating tables etc. Examples are given in the documentation, and the distribution also provides a package csvpie for creating a pie-chart from a CSV file.

            Ancora non ho approfondito, ma il pacchetto sembra davvero potente,

            Un saluto,
            Peppe

          • #12593
            Up
            0
            Down
            ::


            Dopo averlo usato facci sapere.

          • #12594
            gmc
              Up
              0
              Down
              ::

              Dopo averlo usato facci sapere.

              Dopo un’oretta di smanettamento sono arrivato alle seguneti conclusioni:

              Per il Mail Merging il pacchetto è semplicemente perfetto; in breve per avere 100 lettere personalizzate bisogna:

              Avere un file csv(comma separated value, valore separato da virgola), ad esempio prova.csv; i risultati migliori e veloci si ottengono mettendo nella prima riga il nome del campo; di seguito si inseriscono i dati ad esempio
              `Nome,Cognome
              Giuseppe,Giuseppini
              Andrea,Rossi
              Paolo,Verdi`

              si utilizza la classe letter, si carica csvtools

              prima di \begin{letter} si inserisce \applyCSVfile{prova.csv}{…}

              ad esempio

              `\applyCSVfile{prova.csv}{
              \begin{letter}
              \opening{Gentile Sig. \insertNome \insertCognome}

              \end{letter}}`

              A questo punto si compila il tutto e voilà si ottengono le lettere (in questo caso solo 3 🙂 )

              Inoltre il pacchetto mette a disposizione altri strumenti: si può “trasformare” il csv in una tabella (può essere utile, penso, a chi ha un po’ di dati in formato excel e li deve convertire in una tabella, per esempio dati di un esperimento. ATTENZIONE fra le varie porcate che microsoft compie 👿 c’è questa: quando si esporta in csv i valori invece di essere separati da virgola sono separati da punto e virgola… d’altronde microsoft se ne frega degli standard… comunque poco male: o si fa una bella sostituzione con un editor di testo oppure si mette il comando \setcsvseparator{;})

              Mette a disposizione uno strumento per fare grafici a torte (a colori) e infine uno script in perl per fare un merging del file csv con quello tex nel caso in cui non si voglia avere a che fare con più di un file.

              Un saluto,
              Peppe

            • #12595
              ev
              Partecipante
                Up
                0
                Down
                ::

                ATTENZIONE fra le varie porcate che microsoft compie 👿 c’è questa: quando si esporta in csv i valori invece di essere separati da virgola sono separati da punto e virgola… d’altronde microsoft se ne frega degli standard…

                Sono sicuramente così arroganti da infischiarsene tanto degli standard de facto quanto di quelli de jure, ma all’atto della creazione di un file CSV c’è la possibilità di scegliere il delimitatore (no, non chiedermi dove hanno messo il controllo perché non me lo ricordo).

              • #12596
                gmc
                  Up
                  0
                  Down
                  ::

                  ATTENZIONE fra le varie porcate che microsoft compie 👿 c’è questa: quando si esporta in csv i valori invece di essere separati da virgola sono separati da punto e virgola… d’altronde microsoft se ne frega degli standard…

                  Sono sicuramente così arroganti da infischiarsene tanto degli standard de facto quanto di quelli de jure, ma all’atto della creazione di un file CSV c’è la possibilità di scegliere il delimitatore (no, non chiedermi dove hanno messo il controllo perché non me lo ricordo).

                  Don’t worry da qunado sono passato a Debian, Open Office riconosce e scrive correttamente i file standard…

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


                    Questo è una cosa che volevo impare a fare anche io, devo seguire alla lettera le informazioni che avete lasciato.

                  • #12598
                    mlgdominici
                    Amministratore del forum
                      Up
                      0
                      Down
                      ::


                      Attento, csvtools è stato rimpiazzato da datatool (stesso autore), su distribuzioni recenti potresti quindi non trovarlo. La documentazione di datatool è buona, fornita di molti esempi.

                      Ciao,
                      Max.

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

                  Go to top