<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to HowTo_TestAddrEntryEmptyField</title><link>https://sourceforge.net/p/koma-script/wiki-en/HowTo_TestAddrEntryEmptyField/</link><description>Recent changes to HowTo_TestAddrEntryEmptyField</description><atom:link href="https://sourceforge.net/p/koma-script/wiki-en/HowTo_TestAddrEntryEmptyField/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 20 Jul 2021 10:12:03 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/koma-script/wiki-en/HowTo_TestAddrEntryEmptyField/feed" rel="self" type="application/rss+xml"/><item><title>HowTo_TestAddrEntryEmptyField modified by Markus Kohm</title><link>https://sourceforge.net/p/koma-script/wiki-en/HowTo_TestAddrEntryEmptyField/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="how-can-i-test-if-a-field-is-empty-when-using-an-adr-file"&gt;How can I test if a field is empty when using an &lt;code&gt;adr&lt;/code&gt; file?&lt;/h1&gt;
&lt;p&gt;Tests on empty fields are simply tests on an empty argument. Unlike tests on specific contents, which are preferably performed with &lt;code&gt;\Ifstr&lt;/code&gt;, the test on an empty field is therefore better performed with &lt;code&gt;\IfArgIsEmpty&lt;/code&gt;. Both statements are provided by package &lt;code&gt;scrbase&lt;/code&gt; and are therefore automatically available when using any KOMA-Script class.&lt;/p&gt;
&lt;p&gt;Both statements can thus be used for personalized German serial letters, for example (the example is in German, because German gendering is much more complicated than in English):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;filecontents&lt;span class="nb"&gt;}{&lt;/span&gt;&lt;span class="k"&gt;\jobname&lt;/span&gt;.adr&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;% {last name}{first name}{street}{zip code}{city}{gender}{}{abbreviation}&lt;/span&gt;
&lt;span class="k"&gt;\addrentry&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Muster&lt;span class="nb"&gt;}{}{&lt;/span&gt;Stra&lt;span class="k"&gt;\ss&lt;/span&gt; e 1&lt;span class="nb"&gt;}{&lt;/span&gt;12345&lt;span class="nb"&gt;}{&lt;/span&gt;Hier&lt;span class="nb"&gt;}{}{}{}{&lt;/span&gt;TESTA&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\addrentry&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Nachname&lt;span class="nb"&gt;}{&lt;/span&gt;Peter&lt;span class="nb"&gt;}{&lt;/span&gt;Stra&lt;span class="k"&gt;\ss&lt;/span&gt; e 2&lt;span class="nb"&gt;}{&lt;/span&gt;54321&lt;span class="nb"&gt;}{&lt;/span&gt;Dort&lt;span class="nb"&gt;}{&lt;/span&gt;m&lt;span class="nb"&gt;}{}{}{&lt;/span&gt;TESTB&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\addrentry&lt;/span&gt;&lt;span class="nb"&gt;{}{&lt;/span&gt;Petra&lt;span class="nb"&gt;}{&lt;/span&gt;Stra&lt;span class="k"&gt;\ss&lt;/span&gt; e 3&lt;span class="nb"&gt;}{&lt;/span&gt;98765&lt;span class="nb"&gt;}{&lt;/span&gt;Anderswo&lt;span class="nb"&gt;}{&lt;/span&gt;f&lt;span class="nb"&gt;}{}{}{&lt;/span&gt;TESTC&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\addrentry&lt;/span&gt;&lt;span class="nb"&gt;{}{}{&lt;/span&gt;Stra&lt;span class="k"&gt;\ss&lt;/span&gt; e 1&lt;span class="nb"&gt;}{&lt;/span&gt;12345&lt;span class="nb"&gt;}{&lt;/span&gt;Hier&lt;span class="nb"&gt;}{}{}{}{&lt;/span&gt;TESTD&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\end&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;filecontents&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\documentclass&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;scrlttr2&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\usepackage&lt;/span&gt;&lt;span class="na"&gt;[ngerman]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;babel&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\usepackage&lt;/span&gt;&lt;span class="na"&gt;[T1]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;fontenc&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;% Empfänger: #1 = Vorname, #2 = Nachname, #3 = Ersatzbezeichnung&lt;/span&gt;
&lt;span class="k"&gt;\newcommand*&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\IntelliName&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;[3]&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\IfArgIsEmpty&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#1&lt;span class="nb"&gt;}{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
    &lt;span class="k"&gt;\IfArgIsEmpty&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}{&lt;/span&gt;#3&lt;span class="nb"&gt;}{&lt;/span&gt; #2&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="nb"&gt;}{&lt;/span&gt;
    #1&lt;span class="c"&gt;%&lt;/span&gt;
    &lt;span class="k"&gt;\IfArgIsEmpty&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}{}{&lt;/span&gt;&lt;span class="k"&gt;\ &lt;/span&gt;#2&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\renewcommand&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\addrentry&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;[9]&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;letter&lt;span class="nb"&gt;}{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
      &lt;span class="k"&gt;\IntelliName&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}{&lt;/span&gt;#1&lt;span class="nb"&gt;}{&lt;/span&gt;Bewohner:in&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="k"&gt;\\&lt;/span&gt;
      #3&lt;span class="k"&gt;\\&lt;/span&gt;
      #4 #5&lt;span class="c"&gt;%&lt;/span&gt;
    &lt;span class="nb"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;\opening&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Hallo&lt;span class="k"&gt;\IntelliName&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}{&lt;/span&gt;#1&lt;span class="nb"&gt;}{}&lt;/span&gt;,&lt;span class="nb"&gt;}&lt;/span&gt;

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

    &lt;span class="k"&gt;\closing&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Mit freundlichen Grüßen&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="k"&gt;\&lt;/span&gt;
  &lt;span class="k"&gt;\end&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;letter&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\setkomavar&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;subject&lt;span class="nb"&gt;}{&lt;/span&gt;Neue Klingelanlage&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\setkomavar&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;fromname&lt;span class="nb"&gt;}{&lt;/span&gt;Ausbeuter &lt;span class="k"&gt;\&amp;amp;&lt;/span&gt; Co.&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\setkomavar&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;fromaddress&lt;span class="nb"&gt;}{&lt;/span&gt;Wir-kriegen-alle-Weg 666&lt;span class="k"&gt;\\&lt;/span&gt;77777 Freibeuting&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\setkomavar&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;signature&lt;span class="nb"&gt;}{&lt;/span&gt;Ihre Hausverwaltung&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\let\raggedsignature\raggedright&lt;/span&gt;

&lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;document&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\input&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\jobname&lt;/span&gt;.adr&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\end&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;document&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;In the definition of &lt;code&gt;\IntelliName&lt;/code&gt;, the &lt;code&gt;\IfArgIsEmpty&lt;/code&gt; tests are used to ensure that meaningful addressing can take place regardless of whether the last name and first name fields in the &lt;code&gt;adr&lt;/code&gt; file are actually assigned. If both the first name (argument 1) and the last name (argument 2) are empty, the replacement name from argument 3 is used.&lt;/p&gt;
&lt;p&gt;With the nested &lt;code&gt;\Ifstr&lt;/code&gt; test in the letter text, a gender-specific naming is ensured. For this purpose, the sixth argument of &lt;code&gt;\addrentry&lt;/code&gt; is evaluated accordingly.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Markus Kohm</dc:creator><pubDate>Tue, 20 Jul 2021 10:12:03 -0000</pubDate><guid>https://sourceforge.net1c56fdb063034d25f960fa9992de3e66055f4a39</guid></item></channel></rss>