Direkt zum Hauptbereich

mass merge bilinugal invitations with latex or xetex

After some hours of typesetting and programming this I feel that I should share it with you. One old version is here, german: Serieneinladung.

Goal was:
  • address singles, couples
  • have a landspace page with different languages left and right
  • sort some addressing out, e.g. the german "Euch" und "Dich"
  • have two different global groups for different invitations
  • have this all done by reading in a CSV file
The csv file looked like this (2nd field is the group, 3rd the addressing):

 english names;a;Euch
 english name;b;Dich
 german name;c;Dich
 german names;d;Euch

  • Group a are more than one, resulting in "Euch" as the formal addressing; also the english text is on the right, german left;
    and is invited full.
  • Group b is also english, but just one person: "Dich";
    and invited just for the party.
  • Group c is a german single with the addressing "Dich";
    and the german invitation text on the right, english on the left;
    and invited full.
  • Group d is e.g. a german family, addressed with "Euch";
    and invited just to the party.

And here the code, just play around with it.
It will create a pdf with as many pages as lines in the csv file.


 \documentclass[12pt,a4]{scrartcl}   
 \pagestyle{empty}  
 \usepackage[landscape]{geometry}  
 \geometry{a4paper,left=30mm,right=30mm, top=1.5cm, bottom=1.5cm}  
 \usepackage{fontspec}  
 \usepackage{xunicode}  
 \usepackage{xltxtra}  
 %\setmainfont[Mapping=tex-text]{TeX Gyre Chorus}  
 \setmainfont[Mapping=tex-text]{URW Chancery L}  
  \usepackage{ifthen}  
  \newcommand{\inviteA}[1]{ % english/townhall  
                      \begin{minipage}{0.5\textwidth}  
                  \begin{center}  
                  \fontsize{18pt}{18pt}\selectfont  
                  Wir möchten \Dich\\  
                  #1\\  
                  recht herzlich ...  
                  \end{center}  
                  \end{minipage}  
                      \begin{minipage}{0.5\textwidth}  
                     \begin{center}  
                     \fontsize{18pt}{18pt}\selectfont  
                     We request the pleasure of\\  
                     #1\\  
                  Townhall at ...
                     \end{center}  
                  \end{minipage}  
  }  
  \newcommand{\inviteB}[1]{ % english/church  
                      \begin{minipage}{0.5\textwidth}  
                      \begin{center}  
                      \fontsize{18pt}{18pt}\selectfont  
                      Wir möchten \Dich\\  
                      #1\\  
                   recht herzlich ...
                      \end{center}  
                   \end{minipage}  
                      \begin{minipage}{0.5\textwidth}  
                     \begin{center}  
                     \fontsize{18pt}{18pt}\selectfont  
                   We request the pleasure of\\  
                   #1\\  
                   Church at ...
                     \end{center}  
                   \end{minipage}  
  }  
   \newcommand{\inviteC}[1]{ % german/townhall  
                       \begin{minipage}{0.5\textwidth}  
                       \begin{center}  
                       \fontsize{18pt}{18pt}\selectfont  
                       We request the pleasure of\\  
                       #1\\  
                       Townhall at ...  
                       \end{center}                    
                   \end{minipage}  
                       \begin{minipage}{0.5\textwidth}\begin{center}  
                       \fontsize{18pt}{18pt}\selectfont  
                       Wir möchten \Dich\\  
                       #1\\  
                       recht herzlich ... 
                       \end{center}  
                   \end{minipage}  
   }  
   \newcommand{\inviteD}[1]{ % german/church  
                       \begin{minipage}{0.5\textwidth}  
                       \begin{center}  
                       \fontsize{18pt}{18pt}\selectfont  
                       We request the pleasure of\\  
                       #1\\  
                       Townhall at ...
                       \end{center}  
                    \end{minipage}  
                  \begin{minipage}{0.5\textwidth}  
                  \begin{center}  
                  \fontsize{18pt}{18pt}\selectfont  
                  Wir möchten \Dich\\  
                  #1\\  
                     recht herzlich ...  
                  \end{center}  
                    \end{minipage}  
   }  
  \newif\ifmore \moretrue  
  \def\chopline#1;#2;#3;#4 \\{  
  \def\names{#1}  
  \def\langplace{#2}  
  \def\Dich{#3}  
  \def\count{#4}  
  }  
  \begin{document}  
  \newread\quelle  
  \openin\quelle=GuestList.csv  
  \loop  
  \read\quelle to \zeile  
  \ifeof\quelle  
   \global\morefalse  
  \else  
   \expandafter\chopline\zeile\\  
   \ifthenelse{\equal{\langplace}{a}}  
                  {  
                  \inviteA{\names}  
                  \pagebreak  
                  }{}  
   \ifthenelse{\equal{\langplace}{b}}  
                   {  
                   \inviteB{\names}  
                   \pagebreak  
                   }{}  
   \ifthenelse{\equal{\langplace}{c}}  
                   {  
                   \inviteC{\names}  
                   \pagebreak  
                   }{}  
   \ifthenelse{\equal{\langplace}{d}}  
                   {  
                   \inviteD{\names}  
                   \pagebreak  
                   }{}  
  \fi  
 \ifmore\repeat  
 \closein\quelle  
  \end{document}  

The csv file was done in LibreOffice and with the sumif() function we calculated the headcount, having a number in each line for each party.

Hope I could help.




Kommentare

Beliebte Posts aus diesem Blog

Pflanzsack aus Jute

Nachdem ich die Bücher vom Arche Noah Verein schon vorstellte, möchte ich hier eine Topfalternative zeigen, die obendrein noch dekorativ ist. Pflanzsäcke Oder "grow bags", wenn man etwas moderner daher komme möchte bzw. mehr Suchergenisse will. Dabei wollte ich wenig Geld ausgeben, und auch nicht ganz spartan bleiben und den Blumenerdesack dafür nutzen; und bestellte mir 50 kg Jutesäcke für ca. 1,20 EUR/Stück. Nimmt man den ganzen Sack, wird der Topf schon recht groß, auch wenn man etwas des Materials nach innen oder außen faltet. Also nahm ich mir die Freiheit und nähte aus einem großen vier kleine und verbrauchte den letzten Rest unserer Erde fürs Umtopfen der Habanero. Die machte nämlich nun Platz für die sibirische Hauschili und die restlichen von beiden Sorten mischte ich zusammen und stellte sie auf die Fensterbank. Der Vorteil dieser Art von Töpfen liegt auf der Hand: sie sind billig im Vergleich zum Volumen sie sind dekorativ - wirken rustikal biet

Zuhause fast "richtig" wok-en

Vor sehr vielen Jahren, ich war noch ein Jugendlicher, wuenschte ich mir einen Wok und bekam diesen dann auch. Es war ein gusseisener Wok, also eine schwere Ausfuehrung, der aber leider uneben und somit schwer zu gebrauchen war. Meine Eltern und ich gingen dann zurueck ins Geschaeft, aber ebene Woks waren mir damals zu teuer. Nun wieder viele Jahre in die Zukunft bekam ich die Idee, doch wieder den Wok-Gedanken aufzugreifen, denn wir kochen und essen viel asiatisch. Leider sind wir deutsche nicht so bevorteilt wie die Englaender, welche mit Gas kochen. Und ein Wok auf nem E-Herd ist so sexy wie Tanz in Gummistiefeln. Es stellte sich die Frage, inwieweit ich einen Gaskocher in die Wohnung bekomme und betreiben kann. Und solltest Du danach im Internet suchen, so wirst Du feststellen, dass man fuer ein richtiges Set mit mehr als 6 kW Leistung zwischen 50 und 600 EUR bezahlen kann, vom einfachen Hockerkocher bis zum Edelstahl-Hochleistungskocher. Mit Gas kochen ist einfach etwas wu

Herrlich!

Peter Rütten synchronisiert Lanz und Wowereit: