% \CheckSum{2031} % \iffalse % % scrlettr.dtx Copyright (C) 1995-1996 Markus Kohm % % This file is part of the LaTeX2e KOMA-Script-Bundle % % It should be distributed UNCHANGED and together with all other % files in the KOMA-Script-Bundle. The file readme.txt contains a list % of all these files. % % A modified version of this file may be distributed, but it should % be distributed with a DIFFERENT name. Changed files must be % distributed TOGETHER WITH A COMPLETE AND UNCHANGED distribution % of these files. % % See also readme.txt for further information. % % This bundle is written specialy for use at german-language. So the % main documentation is german. Perhaps there'll be a time, you may % get a english documentation. If you want to write it, you may % contact me, see readme.txt. % % % Das ganze jetzt noch einmal kurz auf Deutsch: % % Diese Datei ist Teil des LaTeX2e KOMA-Script Pakets. % % Die Datei sollte nur UNVER"ANDERT und zusammen mit allen anderen % Dateien aus dem Paket weitergegeben werden. Die Datei liesmich.txt % enth"alt eine Liste all dieser Dateien. % % Eine ver"anderte Version dieser Datei darf weitergegeben werden, % aber nur, wenn sie einen ANDEREN Namen bekommt. Ver"anderte Dateien % d"urfen nur ZUSAMMEN MIT EINER KOMPLETTEN UND UNVER"ANDERTEN Version % dieser Dateien weitergegeben werden. % % Unter keinen Umst"anden ist erlaubt, durch Weitergabe oder zur Verf"ugung % stellen einer oder mehrerer Dateien aus dem KOMA-Script Paket einen % wie auch immer gearteten Gewinn zu erzielen. % % Weitere Informationen sind in liesmich.txt zu finden. % % Dieses Paket ist f"ur den deutschen Sprachraum konzipiert. Daher ist % auch die Haupt-Anleitung komplett in Deutsch. Vielleicht wird es irgendwann % auch einmal eine englische Dokumentation geben. Wer eine solche % erstellen m"ochte, kann sich gerne an mich wenden. Siehe dazu ebenfalls % liesmich.txt. % % \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{scrlettr.dtx} % %\NeedsTeXFormat{LaTeX2e}[1995/12/01] %\ProvidesFile{scrlettr.drv} %\ProvidesClass{scrlettr} %\ProvidesPackage{scraddr} %\ProvidesFile{dir.tex} %\ProvidesFile{phone.tex} %<*scrlettr|dir|phone|dtx|driver> [1996/05/31 v2.3e LaTeX2e KOMA % % document class] % [1996/01/22 v1.0 LaTeX2e KOMA package] % interactiv address-directory generation] % interactiv phone-number-directory generation] % %<*driver> Script bundle] \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@} % \begin{document} \DocInput{scrlettr.dtx} \end{document} % % \fi % % \GetFileInfo{scrlettr.dtx} % % \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 % \SpecialOptionIndex{#2}\nobreak % \fi % }% % \ignorespaces} % \let\endoption\endtrivlist % \@ifundefined{PrintOptionName} % {\def\PrintOptionName#1{\strut \MacroFont #1\ }}{} % \def\SpecialOptionIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (option)\encapchar usage}% % \index{options:\levelchar{\protect\ttfamily#1}\encapchar % usage}\@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{Die Brief-class im \textsf{KOMA-Script} Paket\thanks{Diese Datei % hat die Versionsnummer \fileversion, letzte "Anderung vom % \filedate.}} % \author{Frank Neukam\and Markus Kohm} % \date{\filedate} % \maketitle % % \tableofcontents % % \changes{v2.0e}{1994/10/28}{Erste Version, die \texttt{docstrip} verwendet.} % \changes{v2.3b}{1996/01/14}{Diverse \cs{newcommand} mit und ohne % Parameter durch \cs{newcommand*} ersetzt.} % \changes{v2.3b}{1996/01/14}{Diverse \cs{renewcommand} mit und ohne % Parameter durch \cs{renewcommand*} ersetzt.} % % \part{Anleitung} % % \section{Generelles} % % \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| sowie das von diesen ben"otigte package % |typearea.sty|. % % Die urspr"unglich ebenfalls in |komascr.dtx| enthaltene Anleitung wurde von % Harald Sommerfeldt "uberarbeitet und ist nun als getrennte Datei % |scrguide.tex| zu finden. |scrguide.tex| sollte am selben Ort verf"ugbar % sein, an dem Sie auch |scrlettr.dtx| gefunden haben. % % Die urspr"unglich in |komascr.dtx| enthaltene Brief-class |scrlettr.cls| % liegt nun hier als |scrlettr.dtx| ebenfalls separat bei. % % Zum Gesamtpaket geh"oren weitere Dateien. % Eine Aufz"ahlung finden Sie in der Installationsanleitung |liesmich.txt|. % Dort ist auch angegeben, wie die classes, packages und anderer Dateien % aus den |*.dtx|-Dateien extrahiert werden. % % % \StopEventually % % \part{"`scrlettr"'-class} % % \section{Implementierung} % % \begin{macrocode} %<*scrlettr> % \end{macrocode} % % \changes{v2.0}{1993/12/01}{Letzte "`script\_l"'-\LaTeX~2.0-Version % von Frank Neukam} % \changes{v2.0-2e}{1994/10/08}{"`script\_l"'-\LaTeXe-Version % von Axel Kielhorn} % \changes{v2.0e}{1994/10/12}{Erste "`scrlettr"'-Version im % \textsf{KOMA-Script} Paket} % \changes{v2.3e}{1996/05/31}{Faltmarken korrigiert} % Die Implementierung von |scrlettr| stammt im wesentlichen von Frank Neukam. % Axel Kielhorn hat sie nach \LaTeXe portiert, wobei die von Roland T. Lichti % modifizierte Version zugrunde gelegt wurde. Markus Kohm hat nur einige % wenige, unwesentliche "Anderungen vorgenommen. % % \subsection{Optionen} % % \begin{macrocode} \newcommand*\@ptsize{} \newif\if@bigloc % \end{macrocode} % % \subsubsection{Standardoptionen} % % \changes{v2.1a}{1994/10/29}{Meldung bei \texttt{twoside}-Option in % "`scrlettr"' ge"andert} % \begin{option}{10pt} % \begin{option}{11pt} % \begin{option}{12pt} % \begin{option}{oneside} % \begin{option}{twoside} % \begin{option}{draft} % \begin{option}{final} % \begin{macrocode} \DeclareOption{10pt}{\renewcommand*\@ptsize{0}} \DeclareOption{11pt}{\renewcommand*\@ptsize{1}} \DeclareOption{12pt}{\renewcommand*\@ptsize{2}} \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue% \ClassWarningNoLine{scrlettr}{This is no twoside-layout but openright!} } \DeclareOption{draft}{\overfullrule 5pt} \DeclareOption{final}{\setlength\overfullrule{0pt}} % \end{macrocode} % \end{option} % \end{option} % \end{option} % \end{option} % \end{option} % \end{option} % \end{option} % % \subsubsection{Optionen f"ur das Adre"sfenster} % % \begin{option}{wlocfield} % \begin{option}{slocfield} % Mit Hilfe der Optione |wlocfield| kann der Platz neben dem Adre"sfeld % vergr"o"sert werden. Mit |slocfield| wird der normale, kleine Platz % verwendet. % \begin{macrocode} \DeclareOption{wlocfield}{\@bigloctrue} \DeclareOption{slocfield}{\@biglocfalse} % \end{macrocode} % \end{option} % \end{option} % % \subsubsection{Optionenwahl} % % Standard sind bei |scrlettr| die Optionen |12pt|, |oneside|, |final| und % |slocfield|. Diese k"onnen durch explizite Optionsangabe "uberschrieben % werden. % \begin{macrocode} \ExecuteOptions{12pt,oneside,final,slocfield} \ProcessOptions \input{size1\@ptsize.clo} % \end{macrocode} % % \subsection{"`Alte"' Fontauswahlbefehle} % % \begin{macro}{\rm} % \begin{macro}{\sf} % \begin{macro}{\tt} % \begin{macro}{\bf} % \begin{macro}{\it} % \begin{macro}{\sl} % \begin{macro}{\sc} % \begin{macro}{\sfb} % \changes{v2.3b}{1996/01/14}{nicht mehr mathematisch.} % \changes{v2.3b}{1996/01/14}{Keine Unterscheidung mehr f"ur den % Kompatibilit"atsmodus.} % Die alten Font-Auswahlbefehle werden zwar noch unterst"utzt, sollten % aber in der Regel nicht mehr verwendet werden, da sie nach dem alten % Fontauswahlverfahren arbeiten. Im Kompatibilit"atsmodus wurde dies % beim nicht standardgem"a"sen Befehl |\sfb| noch verst"arkt. % \begin{macrocode} \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareOldFontCommand{\sfb}{\normalfont\sffamily\bfseries}{\@nomath\sfb} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Font-Variablen} % % \begin{macro}{\descfont} % \begin{macro}{\sectfont} % \changes{v2.3b}{1996/01/14}{\cs{sectfont} wird nun verwendet} % \begin{macro}{\pnumfont} % \begin{macro}{\headfont} % \begin{macro}{\capfont} % \begin{macro}{\caplabelfont} % Auch in der |scrlettr|-class werden verschiedene Font-Variablen verwendet. % \begin{macrocode} \newcommand*\descfont{\sffamily\bfseries} \newcommand*\sectfont{\sffamily\bfseries} \newcommand*\pnumfont{\normalfont} \newcommand*\headfont{\slshape} \newcommand*\capfont{\normalfont} \newcommand*\caplabelfont{\normalfont} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Standard-Labels} % % \changes{v2.2b}{1995/02/16}{Sprachauswahl an german.sty Version 2.5b % angepa"st} % \begin{macro}{\captionsenglish} % \begin{macro}{\captionsUSenglish} % \begin{macro}{\captionsgerman} % \changes{v2.2a}{1994/01/26}{{\cmd\subjectname} korrigiert} % \begin{macro}{\captionsaustrian} % \begin{macro}{\captionsfrench} % \begin{macro}{\captionsitalian} % \changes{v2.3e}{1996/05/31}{Sprachspende von Simone Naldi} % Bei |scrlettr| gibt es eine gro"se Anzahl von Label-Variablen, die es % in den Standard-classes nicht gibt, die also auch nicht in % Sprachanpassungen wie |german.sty| oder |german3.sty| vorhanden sind. % Deshalb ist es notwendig diese Labels hier neu zu definieren. Weil es % in fr"uheren Versionen zu Problemen damit gekommen ist, werden diese % jedoch erst bei |\begin{document}| definiert. Sollen sie nachtr"aglich % ge"andert werden, mu"s dies \emph{nach} |\begin{document}| geschehen. % % \begin{macrocode} \AtBeginDocument{ \def\captionsenglish{% \def\yourrefname{Your ref.} \def\yourmailname{Your letter of} \def\myrefname{Our ref.} \def\customername{Customer no.} \def\invoicename{Invoice no.} \def\subjectname{Subject} \def\ccname{cc} \def\enclname{encl} \def\headtoname{To} \def\datename{Date} \def\pagename{Page}} \let\captionsUSenglish=\captionsenglish \def\captionsgerman{% \def\yourrefname{Ihr Zeichen} \def\yourmailname{Ihr Schreiben vom} \def\myrefname{Unser Zeichen} \def\customername{Kundennummer} \def\invoicename{Rechnungsnummer} \def\subjectname{Betr.} \def\ccname{Kopien an} \def\enclname{Anlagen} \def\headtoname{An} \def\datename{Datum} \def\pagename{Seite}} \let\captionsaustrian=\captionsgerman \def\captionsfrench{% \def\yourrefname{Vos r\'ef\'erences} \def\yourmailname{Votre lettre du} \def\myrefname{Nos r\'ef\'erences} \def\customername{Num\'ero de client} \def\invoicename{Num\'ero de facture} \def\subjectname{Concernant} \def\ccname{Copie \`a} \def\enclname{Annexes} \def\headtoname{A} \def\datename{Date} \def\pagename{Page}} \def\captionsitalian{% \def\yourrefname{Vs./Rif.} \def\yourmailname{Vs.~lettera del} \def\myrefname{Ns./Rif.} \def\customername{Nr.~cliente} \def\invoicename{Nr.~fattura} \def\subjectname{Oggetto} \def\ccname{Per conoscenza} \def\enclname{Allegato} \def\headtoname{A} \def\datename{Data} \def\pagename{Pagina}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\dateenglish} % \begin{macro}{\dateUSenglish} % \begin{macro}{\dategerman} % \begin{macro}{\dateaustrian} % \begin{macro}{\datefrench} % \begin{macro}{\dateitalian} % \changes{v2.3e}{1996/05/31}{ich hoffe, da"s das stimmt} % Dar"uber hinaus ist auch das Datumsformat sprachabh"angig. Dies wird % hier ebenfalls beachtet. % \begin{macrocode} \def\dateenglish{\def\today{\number\day/\number\month/\number\year}} \def\dateUSenglish{\def\today{\number\month/\number\day/\number\year}} \def\dategerman{\def\today{\number\day.\,\number\month.\,\number\year}} \let\dateaustrian=\dategerman \let\datefrench=\dategerman \let\dateitalian=\dategerman % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % Zum Schlu"s findet noch die eigentliche Auswahl statt. Diese orientiert % sich nun an der Auswahl nach german.sty 2.5b und verwendet keine festen % Sprachzuordnungen mehr. Daf"ur sind nun keine Erweiterungen f"ur andere % Sprachen mehr m"oglich. % \changes{v2.2c}{1995/03/20}{Im Sprachenvergleich fehlten die "`="' hinter % {\cmd\language}} % \begin{macrocode} \captionsenglish \dateenglish \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish \captionsUSenglish \dateUSenglish \fi\fi \ifx\l@german\undefined\else\ifnum\language=\l@german \captionsgerman \dategerman \fi\fi \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian \captionsgerman \dategerman \fi\fi \ifx\l@french\undefined\else\ifnum\language=\l@french \captionsfrench \datefrench \fi\fi \ifx\l@italian\undefined\else\ifnum\language=\l@italian \captionsitalian \dateitalian \fi\fi} % \end{macrocode} % % \subsection{Seitenspiegel} % % |scrlettr| arbeitet mit einem festen Seitenspiegel, der f"ur Briefe % im A4-Format ausgelegt ist. % \changes{v2.2c}{1995/05/25}{{\cmd\headheight} und {\cmd\textheight} % ge"andert} % % \begin{macrocode} \oddsidemargin 0in \evensidemargin 0in \marginparwidth 0.9in \marginparsep 0.1in \marginparpush 0.45\baselineskip \topmargin -19mm % mk 941012, was: -15.5mm \headheight 23mm % mk 950411, was: 22mm \headsep 8mm % mk 941012, was: 9mm \footskip 20mm % mk 941012, was: 30mm \textheight 226mm % mk 950411, was: 217mm \textwidth 159.2mm \parskip 0.5\baselineskip % mk 941012 \parindent 0pt \smallskipamount=0.5\parskip \medskipamount =\parskip \bigskipamount =2\parskip \footnotesep 0.8\baselineskip \skip\footins 0.75\baselineskip plus 2pt minus 4pt \skip\@mpfootins =\skip\footins \columnsep 1cc \columnseprule 0pt % \end{macrocode} % % \subsection{Flie"sumgebungen} % % Es folgen die Einstellungen f"ur Abbildungen % \begin{macrocode} \floatsep 1\baselineskip plus 2pt minus 2pt \textfloatsep 20pt plus 2pt minus 4pt \intextsep 1\baselineskip plus 2pt minus 2pt \dblfloatsep 1\baselineskip plus 2pt minus 2pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@fptop 0pt plus 1fil \@fpsep 0.7\baselineskip plus 2fil \@fpbot 0pt plus 1fil \@dblfptop 0pt plus 1fil \@dblfpsep 0.7\baselineskip plus 2fil \@dblfpbot 0pt plus 1fil % \end{macrocode} % und f"ur Flie"stabellen % \begin{macrocode} \arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth 0.4pt \doublerulesep 2pt \fboxsep 3pt \fboxrule 0.4pt \tabbingsep \labelsep % \end{macrocode} % % \subsection{Listen-Umgebungen} % % Die Einstellungen f"ur Listenumgebungen entsprechen im Wesentlichen % den gewohnten. % \begin{macrocode} \topsep 0.25\baselineskip \partopsep 0pt \itemsep 0.25\baselineskip \parsep 0.25\baselineskip % ak: 1\baselineskip \labelsep .5em \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em \leftmarginiv 1.7em \leftmarginv 1em \leftmarginvi 1em \leftmargin\leftmargini \labelwidth\leftmargini \advance\labelwidth-\labelsep \def\@listI{\leftmargin\leftmargini} \let\@listi\@listI \def\@listii{\leftmargin\leftmarginii \labelwidth\leftmarginii\advance\labelwidth-\labelsep} \def\@listiii{\leftmargin\leftmarginiii \labelwidth\leftmarginiii\advance\labelwidth-\labelsep} \def\@listiv{\leftmargin\leftmarginiv \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} \def\@listv{\leftmargin\leftmarginv \labelwidth\leftmarginv\advance\labelwidth-\labelsep} \def\@listvi{\leftmargin\leftmarginvi \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} \@listi \@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 \@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty -\@lowpenalty \def\theenumi{\arabic{enumi}} \def\theenumii{\alph{enumii}} \def\theenumiii{\roman{enumiii}} \def\theenumiv{\Alph{enumiv}} \def\labelenumi{\theenumi.} \def\labelenumii{\theenumii)} \def\labelenumiii{\theenumiii.} \def\labelenumiv{\theenumiv.} \def\p@enumii{\theenumi} \def\p@enumiii{\theenumi\theenumii)} \def\p@enumiv{\p@enumiii\theenumiii} \def\labelitemi{$\bullet$} \def\labelitemii{\bf --} \def\labelitemiii{$\triangleright$} \def\labelitemiv{$\cdot$} % \end{macrocode} % % Es sind alle im \textsf{KOMA-Script} Paket "ublichen Listenumgebungen % vorhanden: % % \subsubsection{"`description"'-Umgebung} % \begin{macrocode} \newenvironment{description} {\list{}{\labelwidth\z@ \itemindent-\leftmargin \let\makelabel\descriptionlabel}} {\endlist} \newcommand\descriptionlabel[1]{\hspace\labelsep \descfont #1} % \end{macrocode} % % \subsubsection{"`labeling"'-Umgebung} % \begin{macrocode} \newenvironment{labeling}[2][] {\def\sc@septext{#1} \list{}{\settowidth{\labelwidth}{#2#1} \leftmargin\labelwidth \advance\leftmargin by \labelsep \let\makelabel\labelinglabel}} {\endlist} \newcommand\labelinglabel[1]{#1\hfil\sc@septext} % \end{macrocode} % % \subsubsection{"`verse"'-Umgebung} % \begin{macrocode} \newenvironment{verse} {\let\\=\@centercr \list{}{\itemsep \z@ \itemindent -1.5em% \listparindent\itemindent \rightmargin \leftmargin \advance\leftmargin 1.5em}% \item[]} {\endlist} % \end{macrocode} % % \subsubsection{"`quotation"'- und "`quote"'-Umgebung} % \begin{macrocode} \newenvironment{quotation} {\list{}{\listparindent 1em% \itemindent \listparindent \rightmargin \leftmargin \parsep \z@ \@plus\p@}% \item[]} {\endlist} \newenvironment{quote} {\list{}{\rightmargin\leftmargin}% \item[]} {\endlist} % \end{macrocode} % % \subsection{Feld-Variablen} % % \begin{macro}{\fromname} % \begin{macro}{\frombranch} % \begin{macro}{\fromsig} % \changes{2.2b}{1995/02/16}{Direkte Verwendung von {\cmd\fromname}} % \begin{macro}{\fromaddress} % \begin{macro}{\fromplace} % \begin{macro}{\fromlocation} % \begin{macro}{\frombackaddress} % \begin{macro}{\telephonenum} % \begin{macro}{\varyourref} % \begin{macro}{\varyourmail} % \begin{macro}{\varmyref} % \begin{macro}{\varcustomer} % \begin{macro}{\varinvoice} % \begin{macro}{\varrefitemi} % \begin{macro}{\varrefitemii} % \begin{macro}{\varrefitemiii} % \begin{macro}{\varrefitemnamei} % \begin{macro}{\varrefitemnameii} % \begin{macro}{\varrefitemnameiii} % \begin{macro}{\@specialmail} % \begin{macro}{\@title} % \begin{macro}{\@subject} % Es gibt in |scrlettr| verschiedene Feld-Variablen, die alle mit % einer Zeichenkette belegt werden k"onnen, aber als leer % initialisiert werden. % \begin{macrocode} \def\fromname{} \def\frombranch{} % RTL 21.04.94 \def\fromsig{\fromname} \def\fromaddress{} \def\fromplace{} \def\fromlocation{} \def\frombackaddress{} \def\telephonenum{} \def\varyourref{} \def\varyourmail{} \def\varmyref{} \def\varcustomer{} \def\varinvoice{} \def\varrefitemi{} \def\varrefitemii{} \def\varrefitemiii{} \def\varrefitemnamei{} \def\varrefitemnameii{} \def\varrefitemnameiii{} \def\@specialmail{} \def\@title{} \def\@subject{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\name} % \begin{macro}{\branch} % \begin{macro}{\signature} % \begin{macro}{\adress} % \begin{macro}{\place} % \begin{macro}{\location} % \begin{macro}{\backaddress} % \begin{macro}{\telephone} % \begin{macro}{\yourref} % \begin{macro}{\yourmail} % \begin{macro}{\myref} % \begin{macro}{\customer} % \begin{macro}{\invoice} % \begin{macro}{\refitemi} % \begin{macro}{\refitemii} % \begin{macro}{\refitemiii} % \begin{macro}{\refitemnamei} % \begin{macro}{\refitemnameii} % \begin{macro}{\refitemnameiii} % \begin{macro}{\specialmail} % \begin{macro}{\title} % \begin{macro}{\subject} % F"ur jedes dieser Felder wird ein Befehl definiert, mit dem der % Inhalt gesetzt werden kann, ohne da"s zu |\renewcommand| oder % |\def| gegriffen werden mu"s. F"ur |\fromaddress| und % |\fromlocation| kann mit |\address| bzw. % |\location| auch eine komplexe \LaTeX-Definition % gesetzt werden. F"ur die benutzerspezifischen Felder |\varrefitemi|, % |\varrefitemii|, |\varrefitemiii| kann au"serdem jeweils ein Titel % gesetzt werden. % \begin{macrocode} \def\name#1 {\def\fromname{#1}} \def\branch#1 {\def\frombranch{#1}} % RTL 21.04.94 \def\signature#1{\def\fromsig{#1}} \long\def\address#1{\def\fromaddress{#1}} \def\place#1 {\def\fromplace{#1}} \long\def\location#1{\def\fromlocation{#1}} \def\backaddress#1{\def\frombackaddress{#1}} \def\telephone#1{\def\telephonenum{#1}} \def\yourref#1 {\def\varyourref{#1}} \def\yourmail#1 {\def\varyourmail{#1}} \def\myref#1 {\def\varmyref{#1}} \def\customer#1 {\def\varcustomer{#1}} \def\invoice#1 {\def\varinvoice{#1}} \def\refitemi#1 {\def\varrefitemi{#1}} \def\refitemii#1{\def\varrefitemii{#1}} \def\refitemiii#1{\def\varrefitemiii{#1}} \def\refitemnamei#1{\def\varrefitemnamei{#1}} \def\refitemnameii#1{\def\varrefitemnameii{#1}} \def\refitemnameiii#1{\def\varrefitemnameiii{#1}} \def\specialmail#1{\def\@specialmail{#1}} \def\title#1 {\def\@title{#1}} \def\subject#1 {\def\@subject{{\bf #1}}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\firsthead} % \begin{macro}{\firstfoot} % \begin{macro}{\nexthead} % \begin{macro}{\nextfoot} % Bei der Gelegenheit werden auch gleich die Befehle zum Setzen % der Felder f"ur die Kopf- und Fu"szeilen der ersten und aller % weiterer Seiten eines Briefes definiert. % \begin{macrocode} \long\def\firsthead#1{\def\@firsthead{#1}} \long\def\firstfoot#1{\def\@firstfoot{#1}} \long\def\nexthead#1{\def\@nexthead{#1}} \long\def\nextfoot#1{\def\@nextfoot{#1}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Faltmarken, Adre"sfeld, Titel} % % Es werden Schalter f"ur Faltmarken, Adre"sfeld und Titel definiert. % \begin{macrocode} \newif\if@fold \newif\if@afield \newif\if@subj % \end{macrocode} % % \begin{macro}{\foldmarkson} % \begin{macro}{\foldmarksoff} % Die Faltmarken k"onnen mit |\foldmarkson| ein- und mit |\foldmarksoff| % abgeschaltet werden. Dies ist f"ur jeden Brief getrennt m"oglich. % \begin{macrocode} \def\foldmarkson {\@foldtrue} \def\foldmarksoff {\@foldfalse} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\addrfieldon} % \begin{macro}{\addrfieldoff} % Das Adre"sfeld f"ur Fensterumschl"age kann mit |\addrfieldon| ein- und % mit |\addrfieldoff| abgeschaltet werden. Dies ist f"ur jeden Brief % getrennt m"oglich. % \begin{macrocode} \def\addrfieldon {\@afieldtrue} \def\addrfieldoff {\@afieldfalse} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\subjecton} % \begin{macro}{\subjectoff} % Ein Betreff-Titel kann mit |\subjecton| ein- und mit |\subjectoff| % abgeschaltet werden. Dies ist f"ur jeden Brief getrennt m"oglich. % \begin{macrocode} \def\subjecton {\@subjtrue} \def\subjectoff {\@subjfalse} % \end{macrocode} % \end{macro} % \end{macro} % % Zu Berechnung der Feldpositionen werden verschiedene % Dimensions-Variablen ben"otigt. % \begin{macrocode} \newdimen\sc@temp \newdimen\sc@@temp \newdimen\foldhskip \newdimen\foldvskipi \newdimen\foldvskipii \newdimen\foldvskipiii \newdimen\addrvskip \newdimen\addrindent \newdimen\addrwidth \newdimen\addrheight \newdimen\locwidth \newdimen\refvskip \newdimen\sigindent % \end{macrocode} % % F"ur alle Positionen gibt es Standardwerte. Diese Stellen sind leider % extrem druckerabh"angig. Es ist daher "au"serst wichtig, da"s der % Druckertreiber richtig eingestellt wird. Dazu kann die Testseite aus % dem Standardpaket verwendet werden. % % Die Breite des "`locfield"'s h"angt von den Optionen |wlocfield| und % |slocfield| ab und wird entweder zu $2/3$ oder $1/2$ der Restbreite % neben dem Adre"sfeld berechnet. % % \begin{macrocode} \foldhskip 3.5mm \foldvskipi 62mm % war: 65mm RTL \foldvskipii 45mm % mk 960531 (war: 40.5mm) \foldvskipiii 54mm % mk 960531 (war: 58.5mm) \addrvskip 7.5mm \addrindent 0mm \addrwidth 70mm \addrheight 35mm \locwidth\textwidth \advance\locwidth by -\addrwidth \if@bigloc % mk 940330 \advance\locwidth by \locwidth \divide\locwidth by 3 \else \divide\locwidth by 2 \fi \refvskip 5.5mm \sigindent 0mm % \end{macrocode} % % \subsection{Serienbriefe und Adre"sdateien} % % \begin{macro}{\adrentry} % \changes{v2.2b}{1995/05/25}{{\cmd\ifx} sicherer gemacht} % \begin{macro}{\adrchar} % Serienbriefe werden mit Hilfe der Funktionen |\adrentry| und % |\adrchar| und einer Adressdatei realisiert. Dar"uber hinaus % werden mit diesen Befehlen Abk"urzungen f"ur Adressen definiert. % \begin{macrocode} \def\adrentry#1#2#3#4#5#6#7#8{\def\@tempa{#1}\ifx \@tempa\@empty \else \def\@tempa{#2}\ifx \@tempa\@empty \expandafter\def\csname #8\endcsname{#1\\#3} \else \expandafter\def\csname #8\endcsname{#2 #1\\#3} \fi \fi} \def\adrchar#1{} % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Adre"sliste oder Telefonverzeichnis} % % \iffalse % % \fi % \begin{macrocode} %<*dir|phone> % \end{macrocode} % % \changes{v2.3}{1995/06/25}{In \texttt{dir.tex} und \texttt{phone.tex} % {\cmd\@tempa} durch {\cmd\tempa} ersetzt.} % Aus der Adre"sdatei kann mit Hilfe der \LaTeX-Datei |dir.tex| eine % Adre"sliste f"ur Faltkalender erzeugt werden. Analog dazu kann mit % Hilfe der \LaTeX-Datei |phone.tex| ein Televonverzeichnis erzeugt % werden. Dazu mu"s |dir.tex| nur mit \LaTeX\ bearbeitet werden. Die % Datei mu"s dazu nicht manipuliert werden. Die gesamte Arbeit erfolgt % interaktiv. % % \begin{macrocode} %\documentclass[headsepline,10pt,twoside]{scrartcl} %\documentclass[12pt]{scrartcl} % \end{macrocode} % Ein paar Definitionen, die anschlie"send die Arbeit erleichtern % \begin{macro}{\jj} % \changes{v2.2d}{1995/05/25}{changed {\cmd\j} into {\cmd\jj} because % of dotles-j} % \changes{v2.3a}{1995/07/08}{\cs{Ask} from \texttt{docstrip} copied} % \begin{macro}{\ja} % \begin{macro}{\y} % \begin{macro}{\yes} % \begin{macro}{\ttyin} % \begin{macro}{\gobble} % \begin{macro}{\iden} % \begin{macro}{\strip} % \begin{macro}{\defpar} % \begin{macro}{\Ask} % \begin{macro}{\ifDecision} % \begin{macro}{\adrfile} % \begin{macro}{\adrtitle} % \begin{macrocode} \newcommand*\jj {j} \newcommand*\ja {ja} \newcommand*\y {y} \newcommand*\yes{yes} \newread\ttyin \newcommand*{\gobble}[1]{} \def\iden#1{#1} \def\strip#1#2 \gobble{\def #1{#2}} \def\defpar{\par} \def\Ask#1#2{% \message{#2}\read\ttyin to #1\ifx#1\defpar\def#1{}\else \iden{\expandafter\strip\expandafter#1#1\gobble\gobble} \gobble\fi} \newif\ifDecision \newcommand*\adrfile{} \newcommand*\adrtitle{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % Jetzt wird dar"uber informiert, da"s das ganze eigentlich von % Frank Neukam stammt, und von mir nur etwas ver"andert wurde. % \begin{macrocode} \typeout{^^J% % *** dir.tex v2.0 by Frank Neukam <01 Dec 1993>^^J% % *** phone.tex v2.0 by Frank Neukam <01 Dec 1993>^^J% *** LaTeX2e-changes by Markus Kohm 1994-1996^^J% ^^J% % To create a address-directory just answer the questions:^^J% % To create a phone-number-list just answer the questions:^^J% ^^J} % \end{macrocode} % Es wird gefragt und entschieden, ob die deutsche Anpassung ben"otigt % wird. % \begin{macrocode} \Ask\answer{Use german? [y/n]^^J% Mit deutscher Sprachanpassung? [j/n]} \ifx\jj \answer \Decisiontrue\else \ifx\ja \answer \Decisiontrue\else \ifx\y \answer \Decisiontrue\else \ifx\yes\answer \Decisiontrue\else \Decisionfalse\fi\fi\fi\fi \ifDecision \usepackage{german} \fi % \end{macrocode} % Nun kann noch eine Konfigurationsdatei eingelesen werden. Diese % kann z.B. dazu verwendet werden, ein Umlaut-package einzubinden, % o."a. % \changes{v2.2d}{1995/05/25}{missing \} inserted at {\cmd\InputIfFileExits}} % \begin{macrocode} %\InputIfFileExists{dir.cfg}{% %\InputIfFileExists{phone.cfg}{% \typeout{Load local configuration-file.}}{% \typeout{No local configuration-file found.}} % \end{macrocode} % % Nun wird nach der Adre"sdatei gefragt: % \begin{macrocode} \Ask\adrfile{^^J% Name of address-file (without .adr)?^^J% Name der Adressdatei (ohne .adr)?} % \end{macrocode} % Jetzt wird noch ein Titel ben"otigt: % \begin{macrocode} \Ask\adrtitle{^^J% Title of directory/list?^^J% Titel des Verzeichnisses?} % \end{macrocode} % % Der Seitenspiegel ist hier fest. Das Ergebnis mu"s dann nur noch ein % wenig zurechtgeschnitten und gefaltet werden. % \begin{macrocode} %<*dir> \newdimen\paperwidth \newdimen\leftfield \newdimen\rightfield \newdimen\adrindent \paperwidth 210mm \leftfield 40mm \rightfield 25mm \adrindent 1em \advance\leftfield by -\adrindent \textwidth 70mm \oddsidemargin -1in \evensidemargin -1in \advance\oddsidemargin by 9mm \advance\evensidemargin by \paperwidth \advance\evensidemargin by -9mm \advance\evensidemargin by -\textwidth \textheight 120mm \headheight 1\baselineskip \headsep 0.5\baselineskip \footskip 1.5\baselineskip \topmargin -1in \advance\topmargin by 8mm \marginparwidth 0in \marginparsep 0in \marginparpush 0in \parskip 0.5\baselineskip % \parindent 0in %\pagestyle{empty} % \end{macrocode} % % Jetzt beginnt das eigentliche Document: % \begin{macrocode} \begin{document} % \end{macrocode} % % F"ur die Kopfzeile wird |\sffamily\bfseries| verwendet. % \begin{macrocode} %\def\headfont{\sffamily\bfseries} % \end{macrocode} % Der |\adrchar| wird bei |dir.tex| f"ur die Kopfzeile verwendet. % Bei |phone.tex| erzeugt |\adrchar| lediglich einen kleinen vertikalen % Abstand. % \begin{macrocode} %\def\adrchar#1{\clearpage\typeout{#1}\markboth{#1}{#1}} %\def\adrchar#1{\vspace{1ex}} % \end{macrocode} % Jeder |\adrentry| erzeugt einen Eintrag in der Adre"sliste % \begin{macrocode} %<*dir> \def\adrentry#1#2#3#4#5#6#7#8{\hspace{\adrindent}% \parbox[b]{\leftfield}{\raggedright \hspace{-\adrindent}{\sc #1}% \def\tempa{#1}\ifx \tempa\empty \else , #2\fi% \def\tempa{#3}\ifx \tempa\empty \else \par #3\fi% \def\tempa{#7}\ifx \tempa\empty \else \par (#7)\fi}% \hfill% \parbox[b]{\rightfield}{\raggedright% \def\tempa{#8}\ifx \tempa\empty \else {\scriptsize #8}\par \fi #4}\par} % % \end{macrocode} % oder dem Telefonverzeichnis. % \begin{macrocode} %<*phone> \def\adrentry#1#2#3#4#5#6#7#8{\setbox0\hbox{#4} {\sc #1}% \def\tempa{#2}\ifx \tempa\empty \else , #2\fi% \def\tempa{#7}\ifx \tempa\empty \else \ (#7)\fi% \ \dotfill\ \unhbox0\par} % % \end{macrocode} % Nun wird die Adre"sdatei abgearbeitet, wenn eine solche existiert. % \begin{macrocode} \ifx\adrfile\empty \else \InputIfFileExists{\adrfile.adr}{% % \end{macrocode} % Seitenstil festlegen (keine Kopfzeile, keine Fu"szeile). % \begin{macrocode} % \pagestyle{empty} % \end{macrocode} % F"ur |dir.tex| eine Titelseite mit leerer R"uckseite erzeugen. Der Titel % wird vertikal und horizontal zentriert. % \begin{macrocode} %<*dir> \null\vfil \begin{center} {\Large \sfb \adrtitle} \end{center} \vfil\vfil\null \cleardoublepage % \end{macrocode} % Seitenstil nun mit Kopf- und Fu"szeile. % \begin{macrocode} \pagestyle{myheadings} % % \end{macrocode} % F"ur |phone.tex| eine etwas abgesetzte, gro"se, horizontal zentrierte % Titelzeile erzeugen. % \begin{macrocode} %{\LARGE \sfb \null\hfill\adrtitle\hfill\null\\[3ex]} % \end{macrocode} % Nun wird die Adre"sdatei eingelesen % \begin{macrocode} }{% % \end{macrocode} % Wenn die Adre"sdatei nicht existiert, eine Fehlermeldung ausgeben. % \begin{macrocode} \typeout{^^J% *** File \adrfile.adr not found!^^J% *** Datei \adrfile.adr nicht gefunden!^^J% ^^J} } % \end{macrocode} % Das war's dann auch schon. % \begin{macrocode} \fi \end{document} % % \end{macrocode} % % \subsection{Das scraddr-Package zur Auswertung von % Adre"sdateien} % % \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. Im Falle von % identischen K"urzeleintr"agen "uberschreiben sp"atere Eintr"age % fr"uhere. Die Inhalte k"onnen dann "uber spezielle Befehle ermittelt % werden. % % \subsubsection{Optionen} % Das Paket besitzt keine Optionen. % \begin{macrocode} \ExecuteOptions\relax \ProcessOptions\relax % \end{macrocode} % % \subsubsection{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 Definition von |\adrentry| bleiben % erhalten. % \begin{macrocode} \newcommand{\InputAddressFile}[1]{\begingroup \def\adrentry##1##2##3##4##5##6##7##8{% \def\@tempa{##8}\ifx\@tempa\@empty\else \expandafter\gdef\csname ##8.LN\endcsname{##1} \expandafter\gdef\csname ##8.FN\endcsname{##2} \expandafter\gdef\csname ##8.A\endcsname{##3} \expandafter\gdef\csname ##8.P\endcsname{##4} \expandafter\gdef\csname ##8.FI\endcsname{##5} \expandafter\gdef\csname ##8.FII\endcsname{##6} \expandafter\gdef\csname ##8.C\endcsname{##7} \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} % % \subsubsection{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} % Zum Schlu"s existiert noch ein Kommentar (Comment), der mit % \emph{K"urzel}|.C| codiert ist, aber nat"urlich auch etwas anderes als % einen klassischen, reinen Kommentar enthalten kann. % \begin{macrocode} \newcommand*{\Comment}[1]{\csname #1.C\endcsname} % \end{macrocode} % \end{macro} % % \subsubsection{Ende des Packages} % \begin{macrocode} % % \end{macrocode} % % \subsection{Adre"sdatenbankkonverter} % % \begin{macrocode} %<*addrconv|birthday> % \end{macrocode} % \BibTeX\ ist eines der am vielseitigsten einsetzbaren Tools rund um \TeX. % Der erste Anwendungszweck von \BibTeX\ liegt nat"urlich in der Verarbeitung % von Literaturdatenbanken und der Erstellung von Literaturverzeichnissen aus % den Datenbanken. % % Gerd Neugebauer hat 1994 mit dem Bibliographie-Stil \texttt{address.bst} % und der Definition eines entsprechenden Datenbankformates gezeigt, wie % einfach man \BibTeX\ au"ser f"ur Literatur- auch f"ur Adre"sdatenbanken % verwenden kann. Ausgehend von dieser Idee, stellte sich Axel Kielhorn die % Frage, ob man solche Adre"sdatenbanken nicht auch f"ur \texttt{scrlettr} % (und seine eigenen \texttt{akletter}) verwenden k"onnte. % Selbstverst"andlich kann man, was Axel auch gleich in Form von zwei % Bibliographie-Stilen in die Tat umgesetzt hat. Ich selbst habe nur eine % Umbenennung und eine kleine "Anderung vorgenommen. % % Ebenso wie die Dateien \texttt{dir.tex} und \texttt{phone.tex}, sollen die % Bibliographie-Stile keine ultimativen L"osungen darstellen, sondern % lediglich Anreiz zu eigenen Entwicklungen geben. % % \subsubsection{Der Datenbankkonverter \texttt{addrconv}} % % Der erste Konverter, tut nichts weiter als eine \BibTeX-Adre"sdatenbank % einzulesen, alphabethisch zu sortieren und im Format der Adre"sdateien f"ur % \texttt{scrlettr} wieder zu schreiben. Daf"ur ben"otigt man als erstes einen % Bibliographie-Stil, \texttt{addrconv.bst}, der ein Programm f"ur \BibTeX % darstellt. % % \begin{macrocode} %<*addrconv&bst> % The files generated from this file may be used for scrlettr.cls, % phone.tex, dir.tex from the KOMA-Script-Bundle, akletter.cls (and some % versions of myletter.cls which preceded akletter). % They will even work with Frank Neukam's old LaTeX 2.09 version of Script. ENTRY { name title organization city zip country street phone fax net note key birthday nbirthday } {} { adr.char } INTEGERS { cur.adr.char } FUNCTION {get.names} { name empty$ { organization empty$ { "{}{}" } { organization "{}" * } if$ } { "{" name #1 "{ll}" format.name$ "}" * * "{" name #1 "{ff}" format.name$ "}" * * * } if$ } FUNCTION {print.adrchr} { adr.char chr.to.int$ cur.adr.char > { newline$ "\adrchar{" adr.char "}" * * write$ newline$ adr.char chr.to.int$ 'cur.adr.char := } 'skip$ if$ } FUNCTION{address} { print.adrchr "\adrentry" write$ get.names write$ newline$ "{" street empty$ { "" } { street } if$ " \\ " * * zip empty$ { "" } { zip } if$ " " * * city empty$ { "" } { city } if$ "}{" * * phone empty$ { "" } { phone } if$ "}" * * "{}{}{}{}" * write$ newline$ } FUNCTION{presort} { name empty$ { organization empty$ { key empty$ { "No name, organization, or key to sort " cite$ * warning$ "???" } { key } if$ } { organization } if$ } { name #1 "{ll},{f }{v }{, j}" format.name$ } if$ duplicate$ 'sort.key$ := #1 #1 substring$ 'adr.char := % the adr.char is the first letter of the sort.key } READ ITERATE {presort} SORT FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ #0 'cur.adr.char := } EXECUTE {begin.bib} ITERATE {call.type$} % Print a newline and flush the write buffer FUNCTION {end.bib} { newline$ } EXECUTE {end.bib} % % \end{macrocode} % % \subsubsection{Der Datenbankkonverter \texttt{birthday}} % Alternativ haben wir noch einen zweiten Stil zu bieten, der eine % Gebutstagsliste erstellt: % \begin{macrocode} %<*birthday&bst> % This file prints the entries with birthdays only. % The entries are sorted by month and inside one month by date. ENTRY { name title organization city zip country street phone fax net note key birthday nbirthday } {} { b.month } STRINGS { cur.month num.index alpha.index} FUNCTION {get.names} { name empty$ { organization empty$ { "{}{}" } { organization "{}" * } if$ } { "{" name #1 "{ll}" format.name$ "}" * * "{" name #1 "{ff}" format.name$ "}" * * * } if$ } % \end{macrocode} % Die |\convdate| Funktion ist in \texttt{begin.bib} definiert. % \begin{macrocode} FUNCTION {print.adrchr} { b.month cur.month = 'skip$ { newline$ "\adrchar{\convdate{" b.month "}}" * * write$ newline$ b.month 'cur.month := } if$ } % \end{macrocode} % Datenbankeintr"age ohne Geburtstagseintrag, werden weggelassen. % \begin{macrocode} FUNCTION{address} { birthday empty$ 'skip$ { print.adrchr "\adrentry" write$ get.names write$ newline$ "{" street empty$ { "" } { street } if$ " \\ " * * zip empty$ { "" } { zip } if$ " " * * city empty$ { "" } { city } if$ "}{" * * phone empty$ { "" } { phone } if$ "}{}{}{" * * birthday empty$ { "" } { birthday } if$ "}{}" * * write$ newline$ } if$ } % \end{macrocode} % F"ur die Sortierung wird \texttt{nbirthday} (numerical birthday) verwendet. % \begin{macrocode} FUNCTION{presort} {nbirthday empty$ { "" } { nbirthday } if$ duplicate$ 'sort.key$ := #1 #2 substring$ 'b.month := } READ ITERATE {presort} SORT % \end{macrocode} % |\convdate| konvertiert die Eintr"age in % \begin{itemize} % \item Zahlen ohne f"uhrende 0, % \item Monatsnamen % \end{itemize} % je nach verwendeter Funktion. % \begin{macrocode} FUNCTION {begin.bib} { "\def\convdate#1{\ifcase#1 \or 1 \or 2 \or 3 \or 4 \or 5 " "\or 6 \or 7 \or 8 \or 9 \or 10 \or 11 \or 12 \fi}" * 'num.index := "\def\convdate#1{\ifcase#1 \or Januar \or Februar \or M{^^b a}rz " "\or April \or Mai \or Juni \or Juli \or August \or September " "\or November \or Dezember \fi}" * * 'alpha.index := % \end{macrocode} % Hier werden die Monatsnamen verwendet. % \begin{macrocode} % num.index write$ alpha.index write$ newline$ preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "00" 'cur.month := } EXECUTE {begin.bib} ITERATE {call.type$} FUNCTION {end.bib} { newline$ } EXECUTE {end.bib} % % \end{macrocode} % % \subsubsection{Interaktive Treiber f"ur die Datenbankkonvertierung} % Damit \BibTeX\ "uberhaupt aktiv werden kann, wird aber noch eine % \TeX-Datei ben"otigt. Mit dieser ist zun"achst ein \TeX-Lauf % durchzuf"uhren, damit \BibTeX\ anschlie"send die dabei erzeugte % \texttt{aux}-Datei einlesen und analysieren kann. % % Erst dadruch wird der Konverter aktiv und erzeugt aus der % \BibTeX-Adre"sdatenbank die gew"unschte Datenbank f"ur \texttt{scrlettr} % etc. Diese tr"agt dann noch die Endung \texttt{bbl}, die man anschlie"send % von Hand oder per Shell-Script in \texttt{adr} "andern sollte. % \begin{macrocode} %<*tex> \catcode`\@=11 \newlinechar`\^^J \message{% Now you have to typein the name of the BibTeX addressfile, you want to^^J% convert to script-address-file-format (without extension `.bib'):^^J% Geben Sie nun den Namen der BibTeX-Adressdatei ein, die sie in das^^J% Script-Adressdateiformat konvertieren wollen (ohne `.bib'):^^J% ^^J% addressfile=% } \def\skiplastspace#1 \@e@o@l@{#1} \read-1 to \addressfile \edef\addressfile{\expandafter\skiplastspace\addressfile\@e@o@l@} \newwrite\auxfile \immediate\openout\auxfile=\addressfile.aux \immediate\write\auxfile{% \string\citation{*}^^J% % \string\bibstyle{addrconv}^^J% % \string\bibstyle{birthday}^^J% \string\bibdata{\addressfile}% } \immediate\closeout\auxfile \message{% After running BibTeX rename file `\addressfile.bbl' to `\addressfile.adr'!^^J% % Run LaTeX with e. g. `dir.tex' after that.^^J% Nach dem BibTeX-Lauf benennen Sie bitte die Datei `\addressfile.bbl' in^^J% `\addressfile.adr' um!^^J% % Sie koennen die Datei dann z. B. mit `dir.tex' % weiterbearbeiten.^^J% } \ifx\@@end\undefined\let\@@end\end\fi \@@end % % % \subsubsection{Eine Beispieladre"sdatenbank im \BibTeX-Format} % Zur Verdeutlichung des Ganzen hier noch eine Beispieladre"sdatenbank: % \begin{macrocode} %<*example> @address{mustermann, name = {Hans Mustermann}, city = {Heimstatt}, zip = 01234, country = {Germany}, street = {Einbahnstra{\ss}e 1}, phone = {01234 / 5 67 89}, fax = {01234 / 5 67 89}, net = {hm{@}work.com}, note = {Alles nur Erfindung}, } @address{AxelK, name = {Axel Kielhorn}, city = {Braunschweig}, zip = 38118, street = {Stra{\ss}e des 16.~Mai 17}, phone = {0531 / 89 34 39}, net = {a.kielhorn{@}tu-bs.de}, note = {Author of the modified addressen.bst}, birthday = {16.05.1967}, nbirthday = 0516, } @address{RalfK, name = {Ralf Kielhorn}, city = {Braunschweig}, zip = 38118, street = {Stra{\ss}e des 17.~Juni 17}, phone = {0531 / 89 34 39}, net = {a.kielhorn{@}tu-bs.de}, note = {Send e-mail with subject forward to ralf}, birthday = {05.08.1967}, nbirthday = 0805, } @address{KOMA, name = {Markus Kohm}, city = {Karlsruhe}, zip = 76137, street = {Augartenstra{\ss}e 27}, net = {unlf@rz.uni-karlsruhe.de}, note = {Mails less than 32 KByte also to Markus{\_}Kohm@ka2.maus.de}, } % % \end{macrocode} % \begin{macrocode} % % \end{macrocode} % % \iffalse %<*scrlettr> % \fi % % \subsection{Die Brief-Umgebung} % % \begin{environment}{letter} % \begin{macro}{\stopletter} % Diese Umgebung ist etwas anders definiert, als normalerweise von % \LaTeX gewohnt. Mit ihr k"onnen innerhalb eines Dokuments beliebig % viele Briefe erzeugt werden. % \begin{macrocode} \long\def\letter#1{\newpage \if@twoside\ifodd\c@page\else \thispagestyle{empty}\null\newpage \fi\fi \c@page\@ne \interlinepenalty=200 \@processto{#1}} \def\stopletter{} \def\endletter{\stopletter\@@par\pagebreak\@@par} \long\def\@processto#1{\expandafter\@xproc #1\\@@@\ifx\toaddress\@empty \else\expandafter\@yproc #1@@@\fi} \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}} % \end{macrocode} % \end{macro} % \end{environment} % % \begin{macro}{\stopbreaks} % \begin{macro}{\startbreaks} % Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt. % Dadurch soll der Brieftext besser positioniert werden. % \begin{macrocode} \def\stopbreaks{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr \let\vspace\@nobreakvspace} \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} \def\startbreaks{\let\\=\@normalcr \interlinepenalty 200\def\par{\@@par\penalty 200}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@foldmarks} % F"ur die Faltmarken m"ussen nicht nur Abst"ande definiert werden, es % wird auch ein Befehl ben"otigt, um die Faltmarken zu setzen. % \begin{macrocode} \def\@foldmarks{\if@fold \bgroup \reversemarginpar\vspace{\foldvskipi} \marginpar{\hspace{\foldhskip}\rule{2mm}{.2pt}} \vspace{\foldvskipii} \marginpar{\hspace{\foldhskip}\rule{4mm}{.2pt}} \vspace{\foldvskipiii} \marginpar{\hspace{\foldhskip}\rule{2mm}{.2pt}} \vspace{-\foldvskipiii}\vspace{-\foldvskipii}\vspace{-\foldvskipi} \egroup \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\@addrfield} % Dasselbe gilt auch f"ur das Adre"sfeld f"ur Fensterumschl"age. Die % R"ucksendeadresse und die Briefart wird dabei unterstrichen. % \begin{macrocode} \def\@addrfield{\bgroup \setbox0\vbox{\hsize\addrwidth \ifx\frombackaddress\@empty \else \underline{\scriptsize \sf \frombackaddress} \fi} \setbox1\vbox{\hsize\addrwidth \ifx\@specialmail\@empty \else \underline{\@specialmail} \fi} \setbox2\vbox{\hsize\addrwidth \toname \\ \toaddress} \vskip\addrvskip \hskip\addrindent \vbox to \addrheight{% \ifx\frombackaddress\@empty \else \box0 \fi \ifx\@specialmail\@empty \else \vfil\box1 \fi \vfil\box2\vfil}\egroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\@locfield} % Das "`locfield"' wird mittels einer |minipage| gesetzt. % \begin{macrocode} \def\@locfield{\begin{minipage}[b]{\locwidth}\fromlocation\end{minipage}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@datefield} % Je nachdem, welche Felder definiert sind, mu"s eine gesch"aftsm"a"siger % Standardbrief oder ein eher pers"onliches Aussehen gew"ahlt werden. % \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum eingef"ugt} % \begin{macrocode} \newif\if@ref \def\@datefield{\@reffalse \ifx\varyourref\@empty \else \@reftrue \fi \ifx\varyourmail\@empty \else \@reftrue \fi \ifx\varmyref\@empty \else \@reftrue \fi \ifx\varcustomer\@empty \else \@reftrue \fi \ifx\varinvoice\@empty \else \@reftrue \fi \ifx\varrefitemi\@empty \else \@reftrue \fi \ifx\varrefitemii\@empty \else \@reftrue \fi \ifx\varrefitemiii\@empty \else \@reftrue \fi \vskip -\parskip \vskip \refvskip \if@ref \ifx\varyourref\@empty \else \settowidth{\sc@temp}{\varyourref} \setbox0\hbox{\scriptsize \sf \yourrefname} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varyourref}\hfill \fi \ifx\varyourmail\@empty \else \settowidth{\sc@temp}{\varyourmail} \setbox0\hbox{\scriptsize \sf \yourmailname} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varyourmail}\hfill \fi \ifx\varmyref\@empty \else \settowidth{\sc@temp}{\varmyref} \setbox0\hbox{\scriptsize \sf \myrefname} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varmyref}\hfill \fi \ifx\varcustomer\@empty \else \settowidth{\sc@temp}{\varcustomer} \setbox0\hbox{\scriptsize \sf \customername} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varcustomer}\hfill \fi \ifx\varinvoice\@empty \else \settowidth{\sc@temp}{\varinvoice} \setbox0\hbox{\scriptsize \sf \invoicename} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varinvoice}\hfill \fi \ifx\varrefitemi\@empty \else \settowidth{\sc@temp}{\varrefitemi} \setbox0\hbox{\scriptsize \sf \varrefitemnamei} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemi}\hfill \fi \ifx\varrefitemii\@empty \else \settowidth{\sc@temp}{\varrefitemii} \setbox0\hbox{\scriptsize \sf \varrefitemnameii} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemii}\hfill \fi \ifx\varrefitemiii\@empty \else \settowidth{\sc@temp}{\varrefitemiii} \setbox0\hbox{\scriptsize \sf \varrefitemnameiii} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \varrefitemiii}\hfill \fi \ifx\@date\@empty \else \settowidth{\sc@temp}{\@date} \setbox0\hbox{\scriptsize \sf \datename} \ifdim \sc@temp > \wd0 \sc@@temp\sc@temp \else \sc@@temp\wd0 \fi \parbox[t]{\sc@@temp}{\noindent \box0\par \@date} \fi \par \vspace{2.5\baselineskip} \else {\ifx\@date\@empty \else \raggedleft\fromplace\ \@date\par \fi} \vspace{1.5\baselineskip} \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\maketitle} % \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} f"ur den % \cs{title}.} % \begin{macro}{\@subjfield} % Der eigentliche Titel wir mit |\maketitle| gesetzt. Dies sollte % jedoch ebenso wie der Betreff \emph{nicht} manuell geschehen. % \begin{macrocode} \def\maketitle{\ifx\@title\@empty \else {\centering \LARGE \sectfont \@title\par} \vspace{1\baselineskip} \fi} \def\@subjfield{\if@subj% \ifx\@subject\@empty\else\subjectname: \fi \fi \@subject \par \vspace{1\baselineskip}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\opening} % Denn beim Er"offnungsgru"s mit |\opening| wird neben s"amtlichen % Feldern auch der Titel und der Betreff gesetzt. % \begin{macrocode} \def\opening#1{\thispagestyle{firstpage} \null \@foldmarks \if@afield \@addrfield \hfill \@locfield \par \fi \@datefield \maketitle \@subjfield #1\par% \vspace{0.5\baselineskip}% added by unknown \nobreak} % \end{macrocode} % \end{macro} % % \begin{macro}{\closing} % \changes{2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf {\cmd\empty} % getestet sondern direkt eingesetzt} % \changes{2.3b}{1996/01/14}{Abstand zwischen Schlu"sgru"s und Signatur % erh"oht} % Au"ser dem Er"offnungsgru"s mit |\opening| gibt es nat"urlich auch % einen Schlu"sgru"s mit |\closing|, bei dem au"serdem die % Unterschrift u."a. gesetzt wird. % \begin{macrocode} \long\def\closing#1{\par\nobreak\vspace{0.5\baselineskip} \stopbreaks \noindent \sc@temp\textwidth \advance\sc@temp by -\sigindent \hspace{\sigindent}% \parbox{\sc@temp}{\raggedright \ignorespaces #1\\[2\baselineskip] \fromsig\strut}\par \vspace{1.5\baselineskip}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ps} % Ebenfalls m"oglich ist ein Postscriptum. Dieser Befehl erwartet % das Postscriptum nicht als Argument, sondern schaltet zum Nachtext % um. % \begin{macrocode} \def\ps{\par\startbreaks} % \end{macrocode} % \end{macro} % % \begin{macro}{\cc} % Dar"uber hinaus gibt es noch einen Verteiler. Dieser wird % sauber formatiert. % \begin{macrocode} \def\cc#1{\par\noindent \parbox[t]{\textwidth}{\@hangfrom{\ccname: }% \ignorespaces #1\strut}\par} % \end{macrocode} % \end{macro} % % \begin{macro}{\encl} % Auch Anlagen werden ordentlich gesetzt. % \begin{macrocode} \def\encl#1{\par\noindent \parbox[t]{\textwidth}{\@hangfrom{\enclname: }% \ignorespaces #1\strut}\par} % \end{macrocode} % \end{macro} % % \begin{macro}{\footnoterule} % \begin{macro}{\@makefntext} % Fu"snoten werden durch eine Linie abgetrennt. Sie werden wie im gesamten % \textsf{KOMA-Script} Paket gewohnt formatiert. % \begin{macrocode} \def\footnoterule{\kern-1\p@ \hrule width 0.4\columnwidth \kern .6\p@} \long\def\@makefntext#1{\noindent \sc@temp\columnwidth% \advance\sc@temp by -1.5em \hbox to 1em{\hss$^{\@thefnmark}$}\hskip .5em% \parbox[t]{\sc@temp}{\parindent 0pt\parskip 0pt\hskip -.5em #1}} % \end{macrocode} % \end{macro} % \end{macro} % % Aufz"ahlungen werden mit arabischen Zahlen numeriert. % \begin{macrocode} \def\theequation{\arabic{equation}} % \end{macrocode} % \subsection{Verteilung von Text- und Flie"sumgebungen} % \begin{macrocode} \setcounter{topnumber}{2} \def\topfraction{.7} \setcounter{bottomnumber}{1} \def\bottomfraction{.3} \setcounter{totalnumber}{3} \def\textfraction{.2} \def\floatpagefraction{.5} \setcounter{dbltopnumber}{2} \def\dbltopfraction{.7} \def\dblfloatpagefraction{.5} % \end{macrocode} % % \subsection{Seitenstil} % % \begin{macro}{\pagestyle} % Neben den "ublichen Seitenstilen |plain|, |headings|, |myheadings|, |empty| % gibt es bei |scrlettr| noch einen Stil f"ur die erste Seite eines Briefs. % \begin{macrocode} \def\@firsthead{% \parbox[b]{\textwidth} {\begin{center} {\sc \ignorespaces \fromname}\\[-8pt] \rule{\textwidth}{.4pt}\\ \ignorespaces \fromaddress \end{center}}} \def\@firstfoot{} \def\@nexthead{% \parbox[b]{\textwidth} {{\sc \ignorespaces \fromname}\\[8pt] \headtoname\ \ignorespaces \toname \hfill \datename:\ \@date \hfill \pagename\ \thepage\\[-8pt] \rule{\textwidth}{.4pt}}} \def\@nextfoot{} \def\ps@plain{% \def\@evenhead{\sffamily\bfseries\fontsize{10pt}{12}\selectfont \hfil-- \thepage\ --\hfil}% \let\@oddhead\@evenhead% \def\@evenfoot{}% \def\@oddfoot{}} \def\ps@firstpage{% \def\@evenhead{\@firsthead}% \let\@oddhead\@evenhead% \def\@evenfoot{\@firstfoot}% \let\@oddfoot\@evenfoot} \def\ps@headings{% \def\@evenhead{\@nexthead}% \let\@oddhead\@evenhead% \def\@evenfoot{\@nextfoot}% \let\@oddfoot\@evenfoot} % \end{macrocode} % \end{macro} % % \subsection{Voreinstellungen} % % Voreingestellt sind Faltmarken, % \begin{macrocode} \@foldtrue % \end{macrocode} % Adre"sfeld, % \begin{macrocode} \@afieldtrue % \end{macrocode} % kein Betrefftitel, % \begin{macrocode} \@subjfalse % \end{macrocode} % Einfache Kopfzeilen, % \begin{macrocode} \ps@plain % \end{macrocode} % Seitennumerierung mit arabischen Zahlen, % \begin{macrocode} \pagenumbering{arabic} % \end{macrocode} % kein Abgleich des unteren Randes % \begin{macrocode} \raggedbottom % \end{macrocode} % und europ"aische Handhabung des Leerschritts. Letzteres sollte eigentlich % von der Sprachanpassung (z.B. |german.sty| oder |german3.sty| erledigt) % werden und wird in einer der n"achsten Versionen vermutlich entfernt. % \begin{macrocode} \frenchspacing % \end{macrocode} % % \subsection{Das Ende} % % \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*{"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 `scrlettr.dtx'