% \CheckSum{146} % \iffalse meta-comment % ====================================================================== % scraddr.dtx % Copyright (c) Markus Kohm, 2006-2019 % % This file is part of the LaTeX2e KOMA-Script bundle. % % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, version 1.3c of the license. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later and of this work. % % This work has the LPPL maintenance status "author-maintained". % % The Current Maintainer and author of this work is Markus Kohm. % % This work consists of all files listed in manifest.txt. % ---------------------------------------------------------------------- % scraddr.dtx % Copyright (c) Markus Kohm, 2006-2019 % % Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, % Version 1.3c, verteilt und/oder veraendert werden. % Die neuste Version dieser Lizenz ist % http://www.latex-project.org/lppl.txt % und Version 1.3c ist Teil aller Verteilungen von LaTeX % Version 2005/12/01 oder spaeter und dieses Werks. % % Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" % (allein durch den Autor verwaltet). % % Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. % % Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. % ====================================================================== % \fi % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse %%% From File: $Id: scraddr.dtx 3262 2019-10-10 08:25:29Z kohm $ %<*dtx> \ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi \ProvidesFile{scraddr.dtx} %> %\NeedsTeXFormat{LaTeX2e}[1995/12/01] %\ProvidesFile{scraddr.drv} %\ProvidesPackage{scraddr} %<*dtx|scraddr|driver> [2013/09/30 v1.1c KOMA-Script % % package] %<*dtx|driver> Script bundle] % %<*dtx> \ifx\documentclass\undefined \input docstrip.tex \@@input scrdocstrip.tex \@@input scrstrip.inc \KOMAdefVariable{COPYRIGHTFROM}{2006} \generate{\usepreamble\defaultpreamble \file{scraddr.sty}{% \from{scraddr.dtx}{scraddr}% \from{scrlogo.dtx}{logo}% }% } \@@input scrstrop.inc \else \let\endbatchfile\relax \fi \endbatchfile % %<*driver> \documentclass{scrdoc} \usepackage[english,ngerman]{babel} \CodelineIndex \RecordChanges \GetFileInfo{scraddr.dtx} \title{Das scraddr\thanks{Diese Datei hat die Versionsnummer \fileversion, letzte Änderung vom \filedate.}-Paket zur Auswertung von Adressdateien} \author{Markus Kohm \and Jens-Uwe Morawski} \date{\filedate} \begin{document} \maketitle \tableofcontents \DocInput{scraddr.dtx} \end{document} % % \fi % % \changes{v1.1a}{2002/05/19}{Erste Version, die von \texttt{scrlettr} % losgelöst ist.} % % \section{Anleitung} % % \subsection{Rechtliches} % Es wird keinerlei Haftung übernommen für irgendwelche Schäden, % die aus der Benutzung der Programme und Dateien des hier % beschriebenen Paketes folgen. % % \subsection{Das \textsf{KOMA-Script} Paket} % % Das gesamte \textsf{KOMA-Script} Paket besteht aus mehreren Teilen. % Der Teil |scrclass.dtx| beinhaltet die Haupt-classes |scrartcl.cls|, % |scrreprt.cls| und |scrbook.cls| und |scrlttr2.cls| sowie das von % diesen benötigte package |typearea.sty|. % % Das ursprünglich in |scrlettr.dtx| enthaltene % \texttt{scraddr}-Paket liegt nun hier als |scraddr.dtx| separat % vor. Dies wurde erforderlich, das ansonsten in |scrlettr.dtx| nur % noch obsolete Teile enthalten sind. % % Die Anleitung zu diesem Paket ist in der Anleitung zu % \textsf{KOMA-Script} zu finden. Diese liegt in Deutsch und in % Englisch vor. % % \StopEventually{\PrintIndex\PrintChanges} % % \section{Implementierung} % %\iffalse % \begin{macrocode} %<*scraddr> %<*beta> \PackageWarningNoLine{scraddr} {THIS IS A BETA VERSION!\MessageBreak YOU SHOULD NOT USE THIS VERSION!\MessageBreak YOU SHOULD INSTALL THE RELEASE FROM CTAN\MessageBreak AND USE THAT INSTEAD OF THIS BETA VERSION} % % %\fi % % % \changes{v1.0}{1996/01/22}{Neues Package scraddr.} % \begin{macrocode} %<*scraddr> % \end{macrocode} % Dieses Paket liest beliebige - auch mehrere - Adressdateien im oben % beschriebenen Format ein und legt für jeden Eintrag eine Reihe von % Markos an. Bedingung dafür ist, dass das achte Element jedes % |\adrentry|-Eintrags - der Kürzeleintrag - nichtleer ist. % Dies gilt in gleicher Weise auch für das neunte Element neuerer % |\addrentry|-Einträge. % Im Falle von % identischen Kürzeleinträgen überschreiben spätere Einträge % frühere. Die Inhalte können dann über spezielle Befehle ermittelt % werden. % % \subsection{Optionen} % % \begin{option}{adrFreeIVempty} % \changes{v1.1a}{2002/05/19}{Neue Option} % \begin{option}{adrFreeIVshow} % \changes{v1.1a}{2002/05/19}{Neue Option} % \begin{option}{adrFreeIVwarn} % \changes{v1.1a}{2002/05/19}{Neue Option} % \begin{option}{adrFreeIVstop} % \changes{v1.1a}{2002/05/19}{Neue Option} % \begin{macro}{\@adrFIVerror} % \changes{v1.1a}{2002/05/19}{Neue (intern)} % Die neuen Optionen dienen der Wahl, ob die Verwendung von % \verb|\FreeIV| für einen Eintrag, der mit \verb|\adrentry| % definiert wurde, ignoriert wird, durch eine Ausgabe im Text % angezeigt wird, zu einer Warnung oder einem Fehler führt. Im Makro % wird die Einstellung gespeichert. Voreingestellt ist % \texttt{adrFreeIVshow}. % \begin{macrocode} \newcommand*{\@adrFIVerror}{} \DeclareOption{adrFreeIVempty}{\renewcommand*{\@adrFIVerror}{0}} \DeclareOption{adrFreeIVshow}{\renewcommand*{\@adrFIVerror}{1}} \DeclareOption{adrFreeIVwarn}{\renewcommand*{\@adrFIVerror}{2}} \DeclareOption{adrFreeIVstop}{\renewcommand*{\@adrFIVerror}{3}} % \end{macrocode} % \end{macro} % \end{option} % \end{option} % \end{option} % \end{option} % % \changes{v1.0a}{2001/08/07}{\cs{ExecuteOption}\cs{relax} korrigiert} % \changes{v1.1a}{2002/05/19}{Option \texttt{adrFreeIVshow} ist % Voreinstellung} % \begin{macrocode} \ExecuteOptions{adrFreeIVshow} \ProcessOptions\relax % \end{macrocode} % % \subsection{Adressdatei einlesen} % \begin{macro}{\InputAdressFile} % Mit Hilfe des Befehls |\InputAddressFile| wird die angegebene % Adressdatei eingelesen und in Adressmakros gewandelt, die dann beliebig % verwendet werden können. Die Adressmakros werden global generiert. % Andere Makros insbesondere die Definitionen von |\adrentry| und % |\addrentry| bleiben erhalten. % \changes{v1.1}{2002/05/18}{Erweitert auf \cs{addrentry} % Einträge} % \changes{v1.1b}{2002/06/02}{Falls erforderlich werden auch % \cs{addrchar} und \cs{adrchar} definiert} % \begin{macrocode} \newcommand{\InputAddressFile}[1]{\begingroup \ifcase\@adrFIVerror \def\adrentry##1##2##3##4##5##6##7{% \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{}}% \or \def\adrentry##1##2##3##4##5##6##7##8{% \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% (entry FreeIV undefined at `##8')}{##8}}% \or \def\adrentry##1##2##3##4##5##6##7##8{% \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% \PackageWarning{scraddr}{% `##8' was defined using \string\adrentry\MessageBreak so \string\FreeIV-entry is not defined}}{##8}}% \else \def\adrentry##1##2##3##4##5##6##7##8{% \addrentry{##1}{##2}{##3}{##4}{##5}{##6}{##7}{% \PackageError{scraddr}{% \string\FreeIV\space undefined at `##8'}{% `##8' was defined using \string\adrentry\MessageBreak so \string\FreeIV-entry is not defined.\MessageBreak You may continue but you should check output}}{##8}}% \fi \providecommand*{\addrchar}[1]{}% \providecommand*{\adrchar}{\addrchar}% \def\addrentry##1##2##3##4##5##6##7##8##9{% \def\@tempa{##9}\ifx\@tempa\@empty\else \expandafter\gdef\csname ##9.LN\endcsname{##1} \expandafter\gdef\csname ##9.FN\endcsname{##2} \expandafter\gdef\csname ##9.A\endcsname{##3} \expandafter\gdef\csname ##9.P\endcsname{##4} \expandafter\gdef\csname ##9.FI\endcsname{##5} \expandafter\gdef\csname ##9.FII\endcsname{##6} \expandafter\gdef\csname ##9.FIII\endcsname{##7} \expandafter\gdef\csname ##9.FIV\endcsname{##8} \fi} % \end{macrocode} % Existiert die Datei nicht, so wird ein Fehler ausgegeben, ansonsten % wird die Ladeaktion angezeigt. % \begin{macrocode} \InputIfFileExists{#1.adr} {\typeout{Load addressfile: #1.adr.}} {\PackageError{scraddr} {File #1.adr not found} {The addressfile you wanted is not available}} \endgroup} % \end{macrocode} % \end{macro} % % \subsection{Zugriff auf die Elemente der eingelesenen Adressdatei} % % Da keine Vorschriften existieren, wie genau das Kürzel aufgebaut sein % muss, können innerhalb des Kürzels theoretisch auch solche Zeichen % enthalten sein, die für Makronamen normalerweise ungeeignet sind. % Deshalb existiert ein Satz von Befehlen, über den auf die zu einem % Kürzel gehörenden Elemente zugegriffen werden kann. Dabei wird davon % ausgegangen, dass die Adressdatei dem zuvor vorgeschlagenen Aufbau % entspricht. % % \begin{macro}{\Name} % Der Name wird aus dem Vornamen (Firstname) und Nachnamen (Lastname) % zusammengesetzt, wobei einfach ein Leerzeichen dazwischen geklemmt % wird. % \begin{macrocode} \newcommand*{\Name}[1]{\FirstName{#1}\ \LastName{#1}} % \end{macrocode} % \end{macro} % \begin{macro}{\FirstName} % Der Vorname (Firstname) ist mit \emph{Kürzel}|.FN| codiert. % \begin{macrocode} \newcommand*{\FirstName}[1]{\csname #1.FN\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\LastName} % Der Nachname (Lastname) ist mit \emph{Kürzel}|.LN| codiert. % \begin{macrocode} \newcommand*{\LastName}[1]{\csname #1.LN\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\Address} % Die Adresse (Address) ist mit \emph{Kürzel}|.A| codiert. % \begin{macrocode} \newcommand*{\Address}[1]{\csname #1.A\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\Telephone} % Die Telephonnummer (Telephone/Phone) ist mit \emph{Kürzel}|.P| % codiert. % \begin{macrocode} \newcommand*{\Telephone}[1]{\csname #1.P\endcsname} % \end{macrocode} % \end{macro} % \begin{macro}{\FreeI} % \begin{macro}{\FreeII} % Es existieren zwei freie Einträge, die mit \emph{Kürzel}|.FI| und % \emph{Kürzel}.|FII| codiert sind. % \begin{macrocode} \newcommand*{\FreeI}[1]{\csname #1.FI\endcsname} \newcommand*{\FreeII}[1]{\csname #1.FII\endcsname} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\Comment} % \begin{macro}{\FreeIII} % Das dritte freie Element ist über zwei Makros erreichbar. % Das Makro |\Comment| dient zur Kompatibilität mit älteren % |\adrentry|-Einträgen, da hier der vorletzte Parameter als % Kommentar gekennzeichnet war. % Das Makro |\FreeIII| ist passend zur Definition des Makros % |\addrentry| benannt. % Die Daten sind im Makro mit \emph{Kürzel}|.FIII| kodiert. % \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Einträge} % \begin{macrocode} \newcommand*{\Comment}{} \newcommand*{\FreeIII}[1]{\csname #1.FIII\endcsname} \let\Comment\FreeIII % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\FreeIV} % Das letzte Makro gibt ebenfalls Zugriff auf ein freies Element, das mit % \emph{Kürzel}|.FIV| codiert ist. Dies wurde ebenfalls für % neue |\addrentry| Einträgen eingeführt. Bei älteren |\adrentry| % Einträgen, führt die Benutzung dieses Macros zu einer Warnung im Text. % \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Einträge} % \begin{macrocode} \newcommand*{\FreeIV}[1]{\csname #1.FIV\endcsname} % \end{macrocode} % \end{macro} % % \subsection{Ende des Pakets} % \begin{macrocode} % % \end{macrocode} % % \IndexPrologue{\clearpage % \section*{Index} % \markboth{Index}{Index} % Die kursiven Zahlen geben die Seiten an, auf denen % der entsprechende Eintrag beschrieben ist. % Die unterstrichenden Zahlen geben die Stelle der % Definition des Eintrags an. % Alle anderen Zahlen benennen Stellen, an denen der % entsprechende Eintrag verwendet ist. % \vspace{1em}\noindent} % % \GlossaryPrologue{\section*{Änderungsverzeichnis} % \markboth{Änderungsverzeichnis}{Änderungsverzeichnis} % \addcontentsline{toc}{section}{Änderungsverzeichnis} % Die erste Version des \textsf{KOMA-Script} Pakets % stammt vom 7.\,Juli~1994. Es werden nur die % Änderungen ab diesem Zeitpunkt dokumentiert.\par% % \vspace{1em}\noindent} % % \Finale % \endinput % % Ende der Datei `scraddr.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: