PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serienbrief: Alle Empfänger auflisten



StephanM
15-11-2011, 19:40
Hallo,

ich benutze die Serienbrieffunktion scrlttr2 von Latex (mit adr-Datei). Ist es möglich, (Z.B. im im Verteiler) auf jedem Brief - neben personalisierten Angaben - alle Empfänger aufzulisten, so dass also jeder Empfänger sieht, an wen der Brief noch gegangen ist?


Grüße
Stephan

Schweinebacke
16-11-2011, 07:52
Wenn man die adr-Datei zweimal einliest, sollte das kein Problem sein. Beispielsweise vor der Verarbeitung des Serienbriefs etwas wie (ungetestet! (http://www.mrunix.de/forums/showthread.php?t=66921)):
\makeatletter
\newcommand*{\AllNames}{}
\begingroup% Wichtig, damit die Umdefinierung von \addrentry lokal bleibt
\renewcommand*{\addrentry}[9]{%
\g@addto@macro\AllNames{#1\\}%
}
\input{meineadressen.adr}%
\endgroup
\makeatother
Es sollte dann möglich sein, einen Verteiler mit <code>\cc{\AllNames}</code> am Ende des Serienbriefs hinzuzufügen.

StephanM
16-11-2011, 21:15
Hallo,

das hat leider nicht geklappt wie gewünscht. Vielleicht habe ich deinen Code an der falschen Stellen eingefügt:

Bei folgendem Minimalbeispiel wird die Liste nur einmal über dem ersten Brief abgedruckt.


\documentclass[DIN, pagenumber=false, parskip=half,%
fromalign=right, fromphone=true,%
fromemail=true, fromurl=false,%
fromlogo=true, fromrule=afteraddress]{scrlttr2}


\usepackage[latin1]{inputenc}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\begin{document}

\makeatletter
\newcommand*{\AllNames}{}
\begingroup
\renewcommand*{\addrentry}[9]{
\g@addto@macro\AllNames{#9}
}
\input{Meine-Adressen.adr}
\endgroup
\makeatother

\AllNames

\def\adrentry#1#2#3
{
Hallo #1,

Gruß Stephan

}

\input{Meine-Adressen.adr}
\end{document}

Ich hoffe, du weißt Rat,

Gruß,
Stephan

Schweinebacke
17-11-2011, 09:18
Du verwendest schon einmal scrlttr2 ganz falsch:

Für die einzelnen Briefe verwendet man die <code>letter</code>-Umgebung.
Die Anrede setzt man immer mit <code>\opening</code>. Ohne diese Anweisung gibt es überhaupt keinen Briefbogen etc.
Den Schlussgruß sollte man immer mit <code>\closing</code> setzen.
<code>\adrentry</code> ist eine Anweisung mit 8 Argumenten. Die einfach auf eine mit 3 umzudefinieren ist nicht sinnvoll und führt zu Fehlern. Außerdem ist es sinnvoller gleich <code>\addrentry</code> umzudefinieren.
Für den Verteiler hatte ich extra <code>\cc</code> und das Ende des Briefs erwähnt!

Bitte lies das Kapitel über scrlttr2 in der KOMA-Script-Anleitung, scrguide.pdf, einmal komplett durch!

Außerdem ist Dein Code alles andere als vollständig. Wenn ich Links angebe, bitte diese auch beachten!

Hier mal ein vervollständigtes und korrigiertes Beispiel:

\RequirePackage{filecontents}% ACHTUNG Meine-Adressen.adr wird überschrieben!!!
% Ausschnitt aus Beispieladressdatei aus der KOMA-Script-Anleitung geklaut:
\begin{filecontents*}{Meine-Adressen.adr}
\adrchar{E}
\adrentry{Engel}{Gabriel}
{Wolke 3\\12345 Himmelreich}
{000\,01\,02\,03}{}{}{Erzengel}
{GABRIEL}
\adrentry{Engel}{Michael}
{Wolke 3a\\12345 Himmelreich}
{000\,01\,02\,04}{}{}{Erzengel}
{MICHAEL}
\adrentry{Engel}{Raphael}
{Wolke 3b\\12345 Himmelreich}
{000\,01\,02\,05}{}{}{Erzengel}
{RAPHAEL}
\end{filecontents*}

\documentclass[DIN, pagenumber=false, parskip=half,%
fromalign=right, fromphone=true,%
fromemail=true, fromurl=false,%
fromlogo=true, fromrule=afteraddress]{scrlttr2}


\usepackage[latin1]{inputenc}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}% nur zu Demo-Zwecken

\begin{document}

\makeatletter
\newcommand*{\AllNames}{}
\begingroup
\renewcommand*{\addrentry}[9]{
\g@addto@macro\AllNames{#1 #2\\}
}
\input{Meine-Adressen.adr}
\endgroup
\makeatother

\renewcommand\addrentry[9]{%
\begin{letter}{#1 #2\\#3}% letter-Umgebung verwenden!
\opening{Hallo #2,}% Anrede immer mit \opening!
\blindtext
\closing{Stephan}% Schlussgruß immer mit \closing
\cc{\AllNames}% Verteiler mit \cc!
\end{letter}
}

\input{Meine-Adressen.adr}
\end{document}