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:
And here the code, just play around with it.
It will create a pdf with as many pages as lines in the csv file.
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.
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
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
Kommentar veröffentlichen