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
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:
|
|
|