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}
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.