% \CheckSum{155} % \iffalse % ====================================================================== % scraddr.dtx % Copyright (C) 2004 Markus Kohm and Jens-Uwe Morawski % % This file is part of the LaTeX2e KOMA-Script-Bundle % % This file can be redistributed and/or modified under the terms % of the LaTeX Project Public License Version 1.0 distributed % together with this file. See LEGAL.TXT or LEGALDE.TXT. % % This bundle is written specialy for use at german-language. So the % main documentation is german. There is also a english documentation, % but this is NOT up-to-date. % ---------------------------------------------------------------------- % scraddr.dtx % Copyright (C) 2004 Markus Kohm und Jens-Uwe Morawski % % Diese Datei ist Teil des LaTeX2e KOMA-Script-Pakets. % % Diese Datei kann nach den Regeln der LaTeX Project Public % Licence Version 1.0, wie sie zusammen mit dieser Datei verteilt % wird, weiterverbreitet und/oder modifiziert werden. Siehe dazu % auch LEGAL.TXT oder LEGALDE.TXT. % % Dieses Paket ist f"ur den deutschen Sprachraum konzipiert. Daher ist % auch diese Anleitung komplett in Deutsch. Zwar existiert auch eine % englische Version der Anleitung, diese hinkt der deutschen Anleitung % jedoch fast immer hinterher. % ====================================================================== % % \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 \~} % %<*dtx> \ProvidesFile{scraddr.dtx} % %\NeedsTeXFormat{LaTeX2e}[1995/12/01] %\ProvidesFile{scraddr.drv} %\ProvidesPackage{scraddr} %<*dtx|scraddr|driver> [2002/06/02 v1.1b LaTeX2e KOMA % % package] % interactive address-directory generation] % interactive phone-number-directory generation] % %<*dtx|driver> Script bundle] % %<*driver> \documentclass{ltxdoc} \usepackage[a4paper,BCOR15mm,DIV12]{typearea} \usepackage{german} \DoNotIndex{\.,\@@par,\@M,\@abstrtfalse,\@abstrttrue,\@addtoreset} \DoNotIndex{\@afieldfalse,\@afieldtrue,\@afterheading} \DoNotIndex{\@afterindentfalse,\@arabic,\@badmath,\@beginparpenalty} \DoNotIndex{\@biglocfalse,\@bigloctrue,\@bsphack} \DoNotIndex{\@car,\@cdr,\@centercr,\@cite,\@dblfloat,\@dotsep} \DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty,\@endpart,\@esphack} \DoNotIndex{\@finclfalse,\@fincltrue,\@float,\@fontswitch,\@foldfalse} \DoNotIndex{\@foldtrue,\@fslfalse,\@fsltrue,\@gobbletwo} \DoNotIndex{\@hangfrom,\@highpenalty,\@hinclfalse,\@hincltrue,\@hslfalse} \DoNotIndex{\@hsltrue,\@idxitem,\@ifnextchar,\@ifundefined,\@ifstar} \DoNotIndex{\@itempenalty} \DoNotIndex{\@latex@warning,\@m,\@mainmatterfalse,\@mainmattertrue} \DoNotIndex{\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse,\@mparswitchtrue} \DoNotIndex{\@ne,\@nil,\@nobreakcr,\@nobreakfalse,\@nobreaktrue} \DoNotIndex{\@nobreakvspace,\@nobreakvspacex,\@noitemerr,\@nomath,\@normalcr} \DoNotIndex{\@openbibfalse,\@openbibtrue,\@openrightfalse,\@openrighttrue} \DoNotIndex{\@plus,\@processto,\@reffalse,\@reftrue,\@restonecolfalse} \DoNotIndex{\@restonecoltrue} \DoNotIndex{\@subjfalse,\@subjtrue} \DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempswafalse,\@tempswatrue} \DoNotIndex{\@titlepagefalse,\@titlepagetrue,\@tocrmarg,\@topnewpage} \DoNotIndex{\@topnum,\@twocolumnfalse,\@twocolumntrue,\@twosidefalse} \DoNotIndex{\@twosidetrue} \DoNotIndex{\@whiledim,\@whilenum,\@xnewline,\@xproc,\\,\ } \DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength} \DoNotIndex{\addvspace,\advance,\Alph,\alph,\arabic,\Ask,\AtBeginDocument} \DoNotIndex{\begin,\begingroup,\bfseries,\bgroup,\box,\bullet} \DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth} \DoNotIndex{\cal,\cdot,\centering,\changes,\ClassWarningNoLine} \DoNotIndex{\cleardoublepage,\clearpage} \DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex,\csname} \DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction,\Decisionfalse} \DoNotIndex{\Decisiontrue,\DeclareOldFontCommand} \DoNotIndex{\DeclareOption,\def,\defpar,\DisableCrossrefs} \DoNotIndex{\divide,\documentclass,\DoNotIndex,\dotfill} \DoNotIndex{\iden,\ifdim,\else,\fi,\egroup,\empty,\em,\EnableCrossrefs,\end} \DoNotIndex{\end@dblfloat,\endcsname,\endletter} \DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage} \DoNotIndex{\everypar,\ExecuteOptions,\expandafter} \DoNotIndex{\fboxrule,\fboxsep,\fontsize,\frenchspacing} \DoNotIndex{\gdef,\global} \DoNotIndex{\hangindent,\hbox,\hfil,\hfill,\hrule,\hsize,\hskip,\hspace,\hss} \DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi} \DoNotIndex{\ifnum,\ifodd,\ifvmode,\ifx,\fi,\fi,\fi,\fi} \DoNotIndex{\ignorespaces,\input,\InputIfFileExists,\item,\itshape,\j,\ja} \DoNotIndex{\kern,\LARGE,\Large,\leavevmode,\leftmark,\leftskip,\let} \DoNotIndex{\lineskip,\list,\long} \DoNotIndex{\m@ne,\m@th,\marginpar,\marginparpush,\markboth,\markright} \DoNotIndex{\mathbf,\mathcal} \DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak,\month} \DoNotIndex{\newblock,\newcommand,\newcount,\newcounter,\newdimen} \DoNotIndex{\newenvironment,\newlength,\newpage,\nobreak,\noindent} \DoNotIndex{\normalfont,\normallineskip,\normalsize,\null,\number} \DoNotIndex{\numberline} \DoNotIndex{\OldMakeindex,\OnlyDescription,\overfullrule} \DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} \DoNotIndex{\pagenumbering,\pagestyle,\par,\paragraph,\parbox} \DoNotIndex{\PassOptionsToPackage,\pcal,\penalty,\pmit,\PrintChanges} \DoNotIndex{\PrintIndex,\ProcessOptions,\protect,\providecommand} \DoNotIndex{\ProvidesClass} \DoNotIndex{\raggedbottom,\raggedleft,\raggedright,\refstepcounter,\relax} \DoNotIndex{\renewcommand,\RequirePackage,\reset@font,\reversemarginpar} \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\Roman,\roman,\rule} \DoNotIndex{\sc@septext,\sc@temp,\sc@@temp,\scshape,\secdef,\setbox} \DoNotIndex{\setcounter,\setlength} \DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space} \DoNotIndex{\string,\strip,\strut,\subjectoff,\subjecton} \DoNotIndex{\ta@temp,\the,\thispagestyle,\triangleright,\ttfamily,\twocolumn} \DoNotIndex{\typein,\typeout} \DoNotIndex{\undefined,\underline,\unhbox,\usecounter,\usepackage} \DoNotIndex{\vadjust,\vfil,\vfill,\vspace} \DoNotIndex{\wd,\xdef,\y,\year,\yes,\z@} \CodelineIndex \begin{document} \DocInput{scraddr.dtx} \end{document} % % \fi % % \GetFileInfo{scraddr.dtx} % \RecordChanges % % \makeatletter % \def\macro{\begingroup % \catcode`\\12 % \MakePrivateLetters \m@cro@ 0} % \def\environment{\begingroup % \catcode`\\12 % \MakePrivateLetters \m@cro@ 1} % \def\option{\begingroup % \catcode`\\12 % \MakePrivateLetters \m@cro@ 2} % \long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist % \edef\saved@macroname{\string#2}% % \ifcase #1% % \edef\saved@@macroname{\expandafter\@gobble\saved@macroname} % \or % \edef\saved@@macroname{\expandafter\@gobble\saved@macroname} % \else % \let\saved@@macroname\saved@macroname % \fi % \def\makelabel##1{\llap{##1}}% % \if@inlabel % \let\@tempa\@empty \count@\macro@cnt % \loop \ifnum\count@>\z@ % \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat % \edef\makelabel##1{\llap{\vtop to\baselineskip % {\@tempa\hbox{##1}\vss}}}% % \advance \macro@cnt \@ne % \else \macro@cnt\@ne \fi % \edef\@tempa{\noexpand\item[% % \ifcase #1% % \noexpand\PrintMacroName % \or % \noexpand\PrintEnvName % \else % \noexpand\PrintOptionName % \fi % {\string#2}]}% % \@tempa % {\advance\c@CodelineNo\@ne % \ifcase #1% % \SpecialMainIndex{#2}\nobreak % \DoNotIndex{#2}% % \or % \SpecialMainEnvIndex{#2}\nobreak % \else % \SpecialMainOptionIndex{#2}\nobreak % \fi % }% % \ignorespaces} % \let\endoption\endtrivlist % \@ifundefined{PrintOptionName} % {\def\PrintOptionName#1{\strut \MacroFont #1\ }}{} % \def\SpecialMainOptionIndex#1{\@bsphack % \special@index{#1\actualchar{\string\ttfamily\space#1} % (option)\encapchar main}% % \special@index{options:\levelchar{\string\ttfamily\space#1}\encapchar % main}\@esphack} % \def\changes@#1#2#3{% % \protected@edef\@tempa{\noexpand\glossary{#1\levelchar % \ifx\saved@macroname\@empty % \space % \actualchar % \generalname % \else % \saved@@macroname % \actualchar % \string\verb\quotechar*\verbatimchar% % \saved@macroname % \verbatimchar % \fi % :\levelchar #3}}% % \@tempa\endgroup\@esphack} % \makeatother % % \title{Das scraddr\thanks{Diese Datei hat die Versionsnummer % \fileversion, letzte "Anderung vom \filedate.}-Paket zur % Auswertung von Adre"sdateien} % \author{Markus Kohm \and Jens-Uwe Morawski} % \date{\filedate} % \maketitle % % \tableofcontents % % \changes{v1.1a}{2002/05/19}{Erste Version, die von \texttt{scrlettr} % losgel"ost ist.} % % \section{Anleitung} % % \subsection{Rechtliches} % Es wird keinerlei Haftung "ubernommen f"ur irgendwelche Sch"aden, % 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"otigte package |typearea.sty|. % % Das urspr"unglich 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 - Adre"sdateien im oben % beschriebenen Format ein und legt f"ur jeden Eintrag eine Reihe von % Markos an. Bedingung daf"ur ist, da"s das achte Element jedes % |\adrentry|-Eintrags - der K"urzeleintrag - nichtleer ist. % Dies gilt in gleicher Weise auch f"ur das neunte Element neuerer % |\addrentry|-Eintr"age. % Im Falle von % identischen K"urzeleintr"agen "uberschreiben sp"atere Eintr"age % fr"uhere. Die Inhalte k"onnen dann "uber 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"ur einen Eintrag, der mit \verb|\adrentry| % definiert wurde, ignoriert wird, durch eine Ausgabe im Text % angezeigt wird, zu einer Warnung oder einem Fehler f"uhrt. 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{Adre"sdatei einlesen} % \begin{macro}{\InputAdressFile} % Mit Hilfe des Befehls |\InputAddressFile| wird die angegebene % Adre"sdatei eingelesen und in Adre"smakros gewandelt, die dann beliebig % verwendet werden k"onnen. Die Adre"smakros 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"age} % \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 Adre"sdatei} % % Da keine Vorschriften existieren, wie genau das K"urzel aufgebaut sein % mu"s, k"onnen innerhalb des K"urzels theoretisch auch solche Zeichen % enthalten sein, die f"ur Makronamen normalerweise ungeeignet sind. % Deshalb existiert ein Satz von Befehlen, "uber den auf die zu einem % K"urzel geh"orenden Elemente zugegriffen werden kann. Dabei wird davon % ausgegangen, da"s die Adre"sdatei 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"urzel}|.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"urzel}|.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"urzel}|.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"urzel}|.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"age, die mit \emph{K"urzel}|.FI| und % \emph{K"urzel}.|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 "uber zwei Makros erreichbar. % Das Makro |\Comment| dient zur Kompatibilit"at mit "alteren % |\adrentry|-Eintr"agen, 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"urzel}|.FIII| kodiert. % \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Eintr"age} % \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"urzel}|.FIV| codiert ist. Dies wurde ebenfalls f"ur % neue |\addrentry| Eintr"agen eingef"uhrt. Bei "alteren |\adrentry| % Eintr"agen, f"uhrt die Benutzung dieses Macros zu einer Warnung im Text. % \changes{v1.1}{2002/05/18}{Erweitert auf addrentry Eintr"age} % \begin{macrocode} \newcommand*{\FreeIV}[1]{\csname #1.FIV\endcsname} % \end{macrocode} % \end{macro} % % \subsection{Ende des Pakets} % \begin{macrocode} % % \end{macrocode} % % \input{scrlogo.dtx} % % \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*{"Anderungsverzeichnis} % \markboth{"Anderungsverzeichnis}{"Anderungsverzeichnis} % \addcontentsline{toc}{section}{"Anderungsverzeichnis} % Die erste Version des \textsf{KOMA-Script} Pakets % stammt vom 7.\,Juli~1994. Es werden nur die % "Anderungen ab diesem Zeitpunkt dokumentiert.\par% % \vspace{1em}\noindent} % % \Finale % \endinput % % Ende der Datei `scraddr.dtx' %%% Local Variables: %%% mode: latex %%% Text-master: scraddr.ins %%% End: