Pàgines

dimecres, 31 de juliol de 2013

Combinar i personalitzar correspondència amb KOMA-Script

Les cartes amb KOMA-Script són molt versàtils: combinació de correu

En un article anterior (Cartes amb Koma-script) hem vist com n’és de potent el paquet KOMA-Script en la formatació de les cartes. En aquest veurem, a més, com crear correspondència combinada amb una base de dades de destinataris i com personalitzar fins a cert punt les cartes.

El paquet scrlttr2 admet la incorporació de dades d’usuari des d’un fitxer amb extensió adr (destinataris.adr a l’exemple adjunt) formatat de la següent manera. Cada destinatari té associats 8 camps, dels quals alguns són obligatoris i altres optatius; vegem-ne l’estructura per a un destinatari:
\adrentry{Cognoms=#1}{Nom=#2}%
%{Adreça postal\\CP Població=#3}%
%{Telèfon=#4}%
%{h=home/d=dona=#5}{Tractament=#6}%
%{Càrrec=#7}{Clau_id}
Els camps optatius són el #5, el #6 i el #7 que, per la nostra conveniència els hem assignat a una clau per poder personalitzar després les cartes; la resta són obligatoris. El paquet permet afegir més camps optatius, però cal aleshores reanomenar el comandament d’\adrentry a \addrentry.

Què millor per aclarir-ho que un exemple:
\adrentry{Nito}{Helena}%
{13 Rue del Percebe\\75001 Paris}%
{010}%
{d}{Dra.}%
{Servei de diagnosi}{NITO}
Un cop tenim un fitxer amb tants comandaments \adrentry com destinataris ja podem  fer la combinació de correspondència. Primer hem de cridar-lo des del fitxer tex de la carta amb el comandament \input{destinataris.adr} i hem de reanomenar el comandament \adrentry:
\renewcommand*{\adrentry}[8]{\begin{letter}}...\end{letter}
Per indicar que la carta va adreçada a un conjunt de destinataris, a la carta en lloc d’usar les dades concretes d’un d’ells, utilitzem els paràmetres del comandament \adrentry: #2 pel Nom, #1 pels Cognoms, etc. Així en l’exemple que trobareu al fitxer tex font i que ha generat el PDF també adjunt l’ordre triat ha estat:
 {#6 #2 #1\\#7\\#3}
és a dir: a la primera línia del destinatari el Tractament (=#6), el Nom (=#2) i els Cognoms (=#1); a la línia de sota el Càrrec(#7) i per sota l’Adreça postal amb el CP i la Població(=#3) a baix de tot.

Quan processem el fitxer tex amb pdflatex, per exemple, obtenim un document PDF amb tantes cartes d’una o més pàgines com destinataris hi ha al fitxer d’adreces destinataris.adr.

La màgia de la personalització de les cartes ve de la mà d’una mica de programació. Fixeu-vos que les cartes dels destinataris femenins comencen per Benvolguda, mentre que les dels homes comencen per Benvolgut. Això ho hem aconseguit amb dues passes:

  1. Primer omplint el camp #5 de cada destinatari amb la lletra h quan es tracta d’un home o la d quan és una dona. 
  2. Al fitxer tex de la carta hi posem una condició segons el contingut d’aquest camp:

\ifx h#5 \opening{Benvolgut #2,} \fi
\ifx d#5 \opening{Benvolguda #2,} \fi
Quan el contingut del camp #5 és la lletra h escriu en masculí, però quan és una d escriu en femení. I LaTeX s’encarrega de fer tota la resta de feina.

Observeu en el PDF adjunt a aquest article el resultat obtingut en processar el fitxer tex font que trobareu, juntament amb el fitxer de destinataris, el logo i el fitxer de configuració, en el arxiu comprimit combinar_correspond.zip adjunt.

Publicat per primera vegada el divendres 1 de gener de 2010, dia de Cap d'any.

Cap comentari:

Publica un comentari a l'entrada