You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

385 lines
14 KiB

% \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}
%</dtx>>
%<scraddr>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%<driver>\ProvidesFile{scraddr.drv}
%<scraddr>\ProvidesPackage{scraddr}
%<*dtx|scraddr|driver>
[2013/09/30 v1.1c KOMA-Script
%</dtx|scraddr|driver>
%<scraddr> package]
%<*dtx|driver>
Script bundle]
%</dtx|driver>
%<*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
%</dtx>
%<*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}
%</driver>
% \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}
%</beta>
%</scraddr>
%\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}
%</scraddr>
% \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: