Pàgines

dilluns, 5 d’agost del 2013

Personalitzar documents amb datatool

Una manera fàcil de combinar correspondència

Ja vam parlar en l’article Combinar i personalitzar correspondència amb KOMA-Script sobre com crear cartes personalitzades amb el paquet scrltr2 del conjunt KOMA-Script . En aquesta ocasió, però, veurem com personalitzar documents de tota mena amb el concurs del potent paquet datatool.

 datatool és capaç de crear una base de dades a partir d’un fitxer CSV, un fitxer de text on els valors estan separats per comes. En un fitxer CSV ben formatat la primera fila conté el nom dels camps separats per comes i cada fila subsegüent és un registre amb els diferents camps.  datatool aleshores importa les dades del CSV i hi treballa amb tota la potència d’una base de dades. La detallada documentació del paquet informa que és capaç de gestionar una base de dades, de crear gràfics circulars, lineals o de barres i de personalitzar documentació.

En aquest article ens centrarem en aquest darrer aspecte i per estudiar el cas hem creat un document d’ajuda al professorat que en la primera part li proporciona informació global sobre les qualificacions dels estudiants en conjunt tot calculant diferents mitjanes de notes. La segona part del document són els butlletins de qualificació a lliurar a cada estudiant. Són pàgines independents personalitzades amb el nom de cada estudiant i llurs qualificacions amb indicació de la mitjana.

Per aconseguir-ho partim d’un fitxer en format CSV (dades.csv) amb els següents camps: Nom, Cognom1, Cognom2, Genere, Dni, Email, Assignatura1, Assignatura2, Assignatura3. Aquest fitxer dades.csv s’importa al document en forma de la base de dades anomenada estudiants amb el comandament
\DTLloaddb{estudiants}{dades.csv}
El comandament que fa la màgia és
\DTLforeach{nombasedades}{assignacions}{text} 
perquè per cada registre, cada fila de la base de dades nombasedades primer fa una assignació de camps a macros per, en acabat, usar aquestes macros al text. Vegem-ne un exemple:
\DTLforeach{estudiants}{%
\cognomP=Cognom1,\cognomS=Cognom2,\nom=Nom}{%
\cognomP\\%
\cognomS\\%
\nom}
Aquest comandament agafa cada fila, cada registre de la base de dades estudiants, i assigna cada camp a una macro (a la macro \cognomP li assigna el camp Cognom1, per exemple). Aleshores escriu un a sota de l’altre el contingut de les macros amb el contingut dels camps.

Basant-nos amb aquestes iteracions podem fer que una acció es repeteixi per cada registre obtenint així i amb un sol document font tants documents finals com registres tingui el fitxer de dades. Això és el que permet crear tants documents personalitzats com persones tinguem a la llista. El codi simplificat és el següent:
\DTLforeach{estudiants}{%
\nom=Nom,\cognomP=Cognom1,\cognomS=Cognom2,\asA=Assignatura1,\asB=Assignatura2,\asC=Assignatura3,\mitj=Mitjana% }{%
\vspace*{2cm}%
Comunicació de qualificacions\par
\vspace{3cm}
D'acord amb les dades dipositades en aquesta institució,\\%
en/na \textbf{\nom\ \cognomP\ \cognomS} amb DNI \dni ha obtingut aquestes qualificacions:\par
\begin{tabular}{ccc}
\bfseries Assignatura 1 & \bfseries Assignatura 2 & \bfseries Assignatura 3\\
\asA & \asB & \asC
\end{tabular}\par
resultant una nota mitjana de \DTLround{\mitj}{\mitj}{2}\mitj \par
\vspace{7cm}
Barcelona, \today \par
\newpage}
}
Observeu que primer es fa l’assignació a macros del contingut dels camps (p.ex: \nom=Nom)i després s’escriuen les dades personals i es crea una taula on es representen les qualificacions i, finalment s’escriu la mitjana arrodonida que també calcula un comandament del paquet datatool.

Fixeu-vos que dins la iteració hi ha el comandament \newpage que és el que fa que cada cop que s’acaba un registre es generi una pàgina nova on posar les dades del registre següent.

Val la pena estudiar el document tex font adjunt a l’article per veure les diferents possibilitats amb què podem treballar. També és interessant observar el PDF que en resulta on a les dues primeres pàgines hi ha la informació pel professorat i la resta del document serien els butlletins de qualificacions a repartir als estudiants.


catalatex_logo.png
Visualització Baixa






dades.csv
Baixa






mailmerge.pdf
Visualització Baixa






mailmerge.tex
Baixa





Publicat per primera vegada el dissabte 7 de juliol de 2012.

Cap comentari:

Publica un comentari a l'entrada