Menu

HowTo_TestAddrEntryEmptyField

Wie kann ich bei Verwendung einer adr-Datei testen, ob ein Feld leer ist?

Tests auf leere Felder sind einfach nur Tests auf ein leeres Argument. Im Gegensatz zu Tests auf bestimmte Inhalte, die vorzugsweise mit \Ifstr durchgeführt werden, führt man den Test auf ein leeres Feld daher besser mit \IfArgIsEmpty durch. Beide Anweisungen werden von Paket scrbase bereitgestellt und sind deshalb bei Verwendung jeder KOMA-Script-Klasse automatisch verfügbar.

Beide Anweisungen können so beispielsweise für personalisierte Serienbriefe verwendet werden:

\begin{filecontents}{\jobname.adr}
% {Nachname}{Vorname}{Straße}{Postleitzahl}{Ort}{Geschlecht}{}{}{Kürzel}
\addrentry{Muster}{}{Stra\ss e 1}{12345}{Hier}{}{}{}{TESTA}
\addrentry{Nachname}{Peter}{Stra\ss e 2}{54321}{Dort}{m}{}{}{TESTB}
\addrentry{}{Petra}{Stra\ss e 3}{98765}{Anderswo}{f}{}{}{TESTC}
\addrentry{}{}{Stra\ss e 1}{12345}{Hier}{}{}{}{TESTD}
\end{filecontents}

\documentclass{scrlttr2}

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

% Empfänger: #1 = Vorname, #2 = Nachname, #3 = Ersatzbezeichnung
\newcommand*{\IntelliName}[3]{%
  \IfArgIsEmpty{#1}{%
    \IfArgIsEmpty{#2}{#3}{ #2}%
  }{
    #1%
    \IfArgIsEmpty{#2}{}{\ #2}%
  }%
}

\renewcommand{\addrentry}[9]{%
  \begin{letter}{%
      \IntelliName{#2}{#1}{Bewohner:in}\\
      #3\\
      #4 #5%
    }
    \opening{Hallo\IntelliName{#2}{#1}{},}

    wir teilen Ihnen hiermit mit, dass das Haus demnächst
    mit einer Videoklingelanlage.
    Jede\Ifstr{#6}{m}{r Bewohner}{%
      \Ifstr{#6}{f}{ Bewohnerin}{ Person, die hier wohnt,}%
    }
    erhält einen eigenen Zugangscode für unsere geniale
    SmartPhone-App \texttt{WatchMeEveryWhery}.

    \closing{Mit freundlichen Grüßen}\
  \end{letter}
}

\setkomavar{subject}{Neue Klingelanlage}
\setkomavar{fromname}{Ausbeuter \& Co.}
\setkomavar{fromaddress}{Wir-kriegen-alle-Weg 666\\77777 Freibeuting}
\setkomavar{signature}{Ihre Hausverwaltung}
\let\raggedsignature\raggedright

\begin{document}
\input{\jobname.adr}
\end{document}

In der Definition von \IntelliName wird mit den \IfArgIsEmpty-Tests dafür gesorgt, dass eine sinnvolle Ansprache unabhängig davon stattfinden kann, ob die Felder für Nachname und Vorname in der adr-Datei tatsächlich belegt sind. Sind sowohl der Vorname (Argument 1) als auch der Nachname (Argument 2) leer, so wird auf die Ersatzbezeichnung aus Argument 3 zurückgegriffen.

Mit dem verschachtelten \Ifstr-Test im Brieftext wird eine geschlechtsspezifische Bezeichnung sichergestellt. Dazu wird das sechste Argument von \addrentry entsprechend ausgewertet.


Related

Wiki (Deutsch): HowTo_Letter

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.