- Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 3 anni fa da .
-
Topic
-
Ho preparato un semplice script in Python per i casi in cui si utilizzi LaTex per stampare moduli precompilati (ad esempio moduli di iscrizione, oppure lettere tutte uguali per le quali cambia solo l’indirizzo, etc.) .
In questi casi, in cui il testo è sempre uguale e cambiano solo alcune variabili, potrebbe essere utile avere una maschera di inserimento dei dati, senza andare ad intaccare il file originale LaTex.
Partendo da una maschera di inserimento dei dati, viene creato un nuovo file che, partendo dall’originale, lo riproduce inserendo le variabili. A quel punto compilando il nuovo file si avrà il .pdf con le variabili inserite.Sotto inserisco un esempio, per spiegare meglio cosa intendo.
1) All’interno di una cartella creo uno script in LaTex, che, ad esempio, potremmo chiamare “template.tex”. All’interno di questo file inserisco il testo e le variabili nel punto in cui voglio che siano inserite all’interno del testo. Un semplice esempio potrebbe essere:
`\documentclass[a4paper,12pt]{letter}
\usepackage{lipsum}\newcommand{\destinatario}{\%destinatario\%}
\newcommand{\indirizzo}{\%indirizzo\%}
\newcommand{\citta}{\%citta\%}
\newcommand{\firma}{\%firma\%}\begin{document}
\begin{letter}{\destinatario \\ \indirizzo \\ \citta}
\opening{Gentile signore,}
\lipsum[1]
\closing{Distinti saluti.}{\vspace{-2cm}\hspace{8cm}\firma}
\end{letter}
\end{document}`2) in ambiente Python compilo questo semplice codice:
`input_filename = “template.tex”
output_filename = “documento.tex”with open(input_filename, “r”) as f:
template = f.read()destinatario = input(“Inserisci destinatario: “)
indirizzo = input(“Inserisci il indirizzo: “)
citta = input(“Inserisici città: “)
firma = input(“Inserisici firma: “)template = template.replace(“\%destinatario\%”, destinatario)
template = template.replace(“\%indirizzo\%”, indirizzo)
template = template.replace(“\%citta\%”, citta)
template = template.replace(“\%firma\%”, firma)with open(output_filename, “w”) as f:
f.write(template)print(f”Il file {output_filename} è stato creato con i nuovi dati.”)
`A questo punto, eseguendo il codice Python (il file deve essere salvato nella stessa cartella del file template.tex) il programma chiederà di inserire i dati richiesti e poi creerà un nuovo file, nella stessa cartella, nominato “documento.tex” che conterrà le variabili indicate. Compilando in LaTex il nuovo file documento.tex si avrà il pdf. della lettera.
Chiaramente l’utilità aumenta quando le variabili sono molte e ci sono diversi file dello stesso tipo da compilare.
Mi farebbe piacere sapere se qualcuno ha trovato un altro metodo, magari utilizzando solo Latex, di cui ho una conoscenza limitata.
- Devi essere connesso per rispondere a questo topic.