diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrclass.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrclass.dtx | 12466 |
1 files changed, 12466 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrclass.dtx b/Master/texmf-dist/source/latex/koma-script/scrclass.dtx new file mode 100644 index 00000000000..b9ecef2d564 --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/scrclass.dtx @@ -0,0 +1,12466 @@ +% \CheckSum{11211} +% \iffalse +% ====================================================================== +% scrclass.dtx +% Copyright (C) 1995-2004 Markus Kohm +% +% 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. +% ---------------------------------------------------------------------- +% scrclass.dtx +% Copyright (C) 1995-2004 Markus Kohm +% +% 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 fuer 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{scrclass.dtx} +%</dtx> +%<class|package>\NeedsTeXFormat{LaTeX2e}[1995/12/01] +%<driver>\ProvidesFile{scrclass.drv} +%<class>\ProvidesClass{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% +%<class> } +%<package>\ProvidesPackage{% +%<typearea> typearea% +%<scrlfile> scrlfile% +%<package> } +%<lco>\ProvidesFile{% +%<DIN> DIN% +%<DINmoretext> DINmtext% +%<SN> SN% +%<SNold> SNold% +%<SwissLeft> SNleft% +%<KOMAold> KOMAold% +%<lco> .lco} + [2004/09/16 v2.9t LaTeX2e KOMA +%<beta> BETA-VERSION +%<class> document class] +%<package> package] +%<lco> letter-class-option] +% +%<*driver> + Script bundle] +\documentclass{ltxdoc} +\usepackage[a4paper,BCOR15mm,DIV12]{typearea} +\usepackage{german} +% +% Fuer den Fall von |\EnableCrossrefs| +% +\DoNotIndex{\.,\@M,\@abstrtfalse,\@abstrttrue,\@addtoreset,\@afterheading} +\DoNotIndex{\@afterindentfalse,\@arabic,\@badmath,\@beginparpenalty} +\DoNotIndex{\@car,\@cdr,\@centercr,\@cite,\@dblfloat,\@dotsep} +\DoNotIndex{\@dottedtocline,\@empty,\@endparpenalty,\@endpart} +\DoNotIndex{\@finclfalse,\@fincltrue,\@float,\@fontswitch,\@fslfalse} +\DoNotIndex{\@fsltrue,\@gobbletwo} +\DoNotIndex{\@hangfrom,\@highpenalty,\@hinclfalse,\@hincltrue,\@hslfalse} +\DoNotIndex{\@hsltrue,\@idxitem,\@ifnextchar,\@ifundefined,\@itempenalty} +\DoNotIndex{\@latex@warning,\@m,\@mainmatterfalse,\@mainmattertrue} +\DoNotIndex{\@medpenalty,\@minus,\@mkboth,\@mparswitchfalse} +\DoNotIndex{\@mparswitchtrue} +\DoNotIndex{\@ne,\@nil,\@nobreakfalse,\@nobreaktrue,\@noitemerr,\@nomath} +\DoNotIndex{\@openrightfalse,\@openrighttrue} +\DoNotIndex{\@plus,\@restonecolfalse,\@restonecoltrue} +\DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempswafalse,\@tempswatrue} +\DoNotIndex{\@titlepagefalse,\@titlepagetrue,\@tocrmarg,\@topnewpage} +\DoNotIndex{\@topnum,\@twocolumnfalse,\@twocolumntrue,\@twosidefalse} +\DoNotIndex{\@twosidetrue} +\DoNotIndex{\@whiledim,\@whilenum,\\,\ } +\DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength} +\DoNotIndex{\addvspace,\advance,\@Alph,\@alph,\@arabic} +\DoNotIndex{\begin,\begingroup,\bfseries,\box,\bullet} +\DoNotIndex{\c@figure,\c@page,\c@secnumdepth,\c@table,\c@tocdepth} +\DoNotIndex{\cdot,\centering,\changes,\cleardoublepage,\clearpage} +\DoNotIndex{\cmd,\col@number,\CurrentOption,\CodelineIndex} +\DoNotIndex{\day,\dblfloatpagefraction,\dbltopfraction} +\DoNotIndex{\DeclareOldFontCommand,\DeclareOption,\def,\DisableCrossrefs} +\DoNotIndex{\divide,\DoNotIndex} +\DoNotIndex{\ifdim,\else,\fi,\empty,\em,\EnableCrossrefs,\end} +\DoNotIndex{\end@dblfloat} +\DoNotIndex{\end@float,\endgroup,\endlist,\endquotation,\endtitlepage} +\DoNotIndex{\everypar,\ExecuteOptions,\expandafter} +\DoNotIndex{\fboxrule,\fboxsep} +\DoNotIndex{\gdef,\global} +\DoNotIndex{\hangindent,\hbox,\hfil,\hrule,\hsize,\hskip,\hspace,\hss} +\DoNotIndex{\if@tempswa,\ifcase,\or,\fi,\fi} +\DoNotIndex{\ifnum,\ifodd,\ifx,\fi,\fi,\fi} +\DoNotIndex{\input,\InputIfFileExists,\item,\itshape} +\DoNotIndex{\kern,\leavevmode,\leftmark,\leftskip,\let,\lineskip} +\DoNotIndex{\list,\long} +\DoNotIndex{\m@ne,\m@th,\marginpar,\markboth,\markright,\mathbf,\mathcal} +\DoNotIndex{\mathit,\mathnormal,\mathrm,\mathsf,\mathtt,\MessageBreak} +\DoNotIndex{\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} +\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rmfamily,\@Roman,\@roman} +\DoNotIndex{\scshape,\secdef,\setbox,\setcounter,\setlength} +\DoNotIndex{\settowidth,\sfcode,\sffamily,\skip,\sloppy,\slshape,\space} +\DoNotIndex{\string} +\DoNotIndex{\ta@temp,\the,\thispagestyle,\triangleright,\ttfamily} +\DoNotIndex{\twocolumn,\typeout} +\DoNotIndex{\undefined,\usecounter} +\DoNotIndex{\vfil,\vfill,\vspace} +\DoNotIndex{\wd,\xdef,\year,\z@} +\CodelineIndex +% +\begin{document} + \DocInput{scrclass.dtx} +\end{document} +%</driver> +% \fi +% +% \GetFileInfo{scrclass.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} +% \def\Length{\begingroup +% \catcode`\\12 +% \MakePrivateLetters \m@cro@ 3} +% \def\Counter{\begingroup +% \catcode`\\12 +% \MakePrivateLetters \m@cro@ 4} +% \def\KOMAvar{\begingroup +% \catcode`\\12 +% \MakePrivateLetters \m@cro@ 5} +% \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 +% \or +% \noexpand\PrintOptionName +% \or +% \noexpand\PrintLengthName +% \or +% \noexpand\PrintCounterName +% \or +% \noexpand\PrintKOMAvarName +% \fi +% {\string#2}]}% +% \@tempa +% {\advance\c@CodelineNo\@ne +% \ifcase #1% +% \SpecialMainIndex{#2}\nobreak +% \DoNotIndex{#2}% +% \or +% \SpecialMainEnvIndex{#2}\nobreak +% \or +% \SpecialMainOptionIndex{#2}\nobreak +% \or +% \SpecialMainLengthIndex{#2}\nobreak +% \or +% \SpecialMainCounterIndex{#2}\nobreak +% \or +% \SpecialMainKOMAvarIndex{#2}\nobreak +% \fi +% }% +% \ignorespaces} +% \let\endoption\endtrivlist +% \providecommand*{\PrintOptionName}[1]{\strut \MacroFont #1\ } +% \providecommand*{\PrintLengthName}[1]{\strut \MacroFont \char`\\#1\ } +% \providecommand*{\PrintCounterName}[1]{\strut \MacroFont #1\ } +% \providecommand*{\PrintKOMAvarName}[1]{\strut \MacroFont #1\ } +% \newcommand*{\ttbksp}{\texttt{\char`\\}} +% \newcommand*{\SpecialMainOptionIndex}[1]{\@bsphack +% \special@index{#1\actualchar{\string\ttfamily\space#1} +% (Option)\encapchar main}% +% \special@index{Optionen:\levelchar{\string\ttfamily\space#1}\encapchar +% main}\@esphack} +% \newcommand*{\SpecialMainLengthIndex}[1]{\@bsphack +% \special@index{#1\actualchar{\string\ttfamily\string\ttbksp\space#1} +% (L"ange)\encapchar main}% +% \special@index{L"angen:\levelchar{\string\ttfamily\string\ttbksp\space +% #1}\encapchar +% main}\@esphack} +% \newcommand*{\SpecialMainCounterIndex}[1]{\@bsphack +% \special@index{#1\actualchar{\string\ttfamily\space#1} +% (Z"ahler)\encapchar main}% +% \special@index{Z"ahler:\levelchar{\string\ttfamily\space#1}\encapchar +% main}\@esphack} +% \newcommand*{\SpecialMainKOMAvarIndex}[1]{\@bsphack +% \special@index{#1\actualchar{\string\ttfamily\space#1} +% (Variable)\encapchar main}% +% \special@index{KOMA-Script +% Variablen:\levelchar{\string\ttfamily\space +% #1}\encapchar +% main}\@esphack} +% \renewcommand*{\changes@}[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 +% \MacroIndent=2em +% +% \title{Die Haupt-classes und -packages des \textsf{KOMA-Script} +% Pakets\thanks{Diese Datei hat die Versionsnummer \fileversion, +% letzte "Anderung \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.3}{1995/06/25}{Change-Glossary aufger"aumt} +% \changes{v2.3a}{1995/07/08}{\texttt{0pt} jeweils durch \cs{z@} ersetzt} +% \changes{v2.3a}{1995/07/08}{Verwendung von \cs{cs} statt \cs{cmd} im +% Change Glossary} +% \changes{v2.3a}{1995/07/08}{Die Mehrzahl der \cs{newcommand} mit +% Parameter durch \cs{newcommand*} ersetzt} +% \changes{v2.3a}{1995/07/08}{\cs{hbox to} durch \cs{hb@xt@} ersetzt} +% \changes{v2.3a}{1995/07/08}{\cs{reset@font} durch \cs{normalfont} +% ersetzt} +% \changes{v2.3g}{1996/01/14}{Diverse weitere \cs{newcommand} mit und +% ohne Parameter durch \cs{newcommand*} +% ersetzt} +% \changes{v2.3g}{1996/01/14}{Diverse \cs{renewcommand} mit und ohne +% Parameter durch \cs{renewcommand*} +% ersetzt} +% \changes{v2.7b}{2001/01/05}{Implementierungsdokumentation verbessert +% und bessert geordnet +% (Gliederungsbefehle)} +% \changes{v2.8q}{2001/11/13}{diverse \texttt{pt} durch \cs{p@} und +% \texttt{0pt} durch \cs{z@} 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. +% Dieser 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 gleichen +% Ort verf"ugbar sein, an dem Sie auch |scrclass.dtx| gefunden haben. +% +% Urspr"unglich war in |komascr.dtx| eine Brief-Klasse +% enthalten. Die Klasse |scrlettr.cls| wurde dann jedoch als +% |scrlettr.dtx| abgetrennt. Inzwischen ist die neue Brief-Klasse +% |scrlttr2.cls| wieder enthalten. +% +% 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 andere Dateien aus den |*.dtx|-Dateien extrahiert werden. +% +% Das \textsf{KOMA-Script} Paket entspricht dem Stand nach den +% Standard \LaTeX Document Classes Version 1.3q [1995/12/20]. +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \part{Implementierung} +% \changes{v2.9}{2002/06/21}{Release} +% +% \section{Generell} +%\iffalse +% \begin{macrocode} +%<*beta> +%<*package> +\PackageWarningNoLine{% +%<typearea> typearea% +%<scrlfile> scrlfile% + } +%</package> +%<*class> +\ClassWarningNoLine{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% +%<scrlettr> scrlttr2% + } +%</class> +%<*lco> +\GenericWarning{(% +%<DIN> DIN% +%<DINmoretext> DINmtext% +%<SN> SN% +%<SNold> SNold% +%<SwissLeft> SNleft% +%<KOMAold> KOMAold% + .lco)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces}{% + Letter-class-option +%<DIN> DIN +%<DINmoretext> DINmtext +%<SN> SN +%<SNold> SNold +%<SwissLeft> SNleft +%<KOMAold> KOMAold + Warning:\space +%</lco> +%<class|package> {% +%<*class|package|lco> + 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% +%<lco> \@gobble% +} +%</class|package|lco> +%</beta> +% \end{macrocode} +%\fi +% +% +% \section{"`scrlfile"'-package} +% +% Dieser Abschnitt ist englisch dokumentiert. Ich bitte daf"ur um +% Verst"andnis. +% +% \subsection{Let's start} +% +% \begin{macrocode} +%<*scrlfile> +\typeout{Package scrlfile, \csname ver@scrlfile.sty\endcsname% + ^^J\@spaces\@spaces\@spaces\@spaces\space\space + Copyright (C) Markus Kohm^^J} +% +% +% \subsection{Options} +% +% Currently there are no options. +% \begin{macrocode} +\ExecuteOptions{} +\ProcessOptions\relax +% \end{macrocode} +% +% +% \subsection{The macros} +% +% \begin{macro}{\InputIfFileExists} +% \LaTeX{} uses this macro for loading files with +% \cs{input}\marg{filename}, \cs{include}, \cs{LoadClass}, +% \cs{LoadClassWithOptions}, \cs{documentclass}, \cs{documentstyle}, +% \cs{RequirePackage}, \cs{usepackage}. Only +% \cs{input}~\meta{filename} loads \meta{filename} without using +% \cs{InputIfFileExists}. +% +% Because of this, it's very easy to add stuff before and after +% loading a file. We simply change this macro and add to +% macros\,---\,one before loading the file and one after loading the +% file. But before we redefine the macro, we test, if the macro was +% defined like we expected. \LaTeX{} will warn, if not. +% \begin{macrocode} +\CheckCommand{\InputIfFileExists}[2]{% + \IfFileExists{#1}% + {#2\@addtofilelist{#1}\@@input \@filef@und}} +% \end{macrocode} +% Now we can redefine the macro like described above: +% \begin{macrocode} +\renewcommand{\InputIfFileExists}[2]{% + \IfFileExists{#1}{% + \scr@load@hook{before}{#1}% + #2\@addtofilelist{#1}\@@input \@filef@und + \scr@load@hook{after}{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scr@load@hook} +% This macro simply calls a load-file-hook, either the \emph{before} +% or the \emph{after} one, if the hook exists. After calling the hook +% it will be deleted. First argument is the type of hook +% (\meta{before} or \meta{after}), second argument is a filename. +% \begin{macrocode} +\newcommand*{\scr@load@hook}[2]{% + \@ifundefined{#2-@#1}{}{% + \@nameuse{#2-@#1}% + \expandafter\let\csname #2-@#1\endcsname=\relax}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scr@set@load@hook} +% This command adds stuff to a load-file-hook, either the +% \emph{before} or the \emph{after} one. First argument is the type of +% hook (\meta{before} or \meta{after}), second is a filename. There's +% a third argument not parsed by the macro itself but +% \cs{g@addto@macro}. This third argument is the stuff, which will be +% added to the hook. Because of using \cs{g@addto@macro} the hook must +% be defined. So we define it, if it isn't. +% \begin{macrocode} +\newcommand*{\scr@set@load@hook}[2]{% + \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}% + \expandafter\g@addto@macro\csname #2-@#1\endcsname} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BeforeFile} +% \begin{macro}{\AfterFile} +% \begin{macro}{\BeforeClass} +% \begin{macro}{\AfterClass} +% \changes{v2.9f}{2002/08/29}{Sternvariante funktioniert jetzt} +% \begin{macro}{\@AfterClass} +% \begin{macro}{\@sAfterClass} +% \begin{macro}{\BeforePackage} +% \begin{macro}{\AfterPackage} +% \changes{v2.9f}{2002/08/29}{Sternvariante funktioniert jetzt} +% \begin{macro}{\@AfterPAckage} +% \begin{macro}{\@sAfterPackage} +% These macros add stuff to a load-file-hook of a file, class or +% package. First argument is the name of the file (with extension), +% class (without extension) or package (without extension). There's a +% second argument parsed by wether the macros themself nor +% \cs{scr@set@load@hook} but \cs{g@addto@macro}. See +% \cs{scr@set@load@hook} for more information. The star-forms +% \cs{AfterClass*} and \cs{AfterPackage*} does the action immediate, +% if the class or package was already loaded. +% \begin{macrocode} +\newcommand*{\BeforeFile}{\scr@set@load@hook{before}} +\newcommand*{\AfterFile}{\scr@set@load@hook{after}} +\newcommand*{\BeforeClass}[1]{% + \scr@set@load@hook{before}{#1.\@clsextension}} +\newcommand*{\AfterClass}{% + \@ifstar {\@sAfterClass}{\@AfterClass}} +\newcommand*{\@AfterClass}[1]{% + \scr@set@load@hook{after}{#1.\@clsextension}} +\newcommand*{\@sAfterClass}[1]{% + \begingroup + \@ifclassloaded{#1}{% + \aftergroup\@secondoftwo + }{% + \aftergroup\@AfterClass + }% + \endgroup + {#1}% +} +\newcommand*{\BeforePackage}[1]{% + \scr@set@load@hook{before}{#1.\@pkgextension}} +\newcommand*{\AfterPackage}{% + \@ifstar {\@sAfterPackage}{\@AfterPackage}} +\newcommand*{\@AfterPackage}[1]{% + \scr@set@load@hook{after}{#1.\@pkgextension}} +\newcommand*{\@sAfterPackage}[1]{% + \begingroup + \@ifpackageloaded{#1}{% + \aftergroup\@secondoftwo + }{% + \aftergroup\@AfterPackage + }% + \endgroup + {#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% That's all +% \begin{macrocode} +%</scrlfile> +% \end{macrocode} +% +% +% \section{"`typearea"'-package} +% +% \begin{macrocode} +%<*typearea> +% \end{macrocode} +% \changes{v2.0e}{1994/07/07}{Auf \LaTeXe umgestellt} +% \changes{v2.0e}{1994/09/02}{\cs{ProvideClass} durch +% \cs{ProvidePackage} ersetzt} +% \changes{v2.0e}{1994/09/02}{\cs{endinput} angeh"angt} +% \changes{v2.1a}{1994/10/29}{Auf doc/docstrip umgestellt} +% \changes{v2.1b}{1994/12/31}{Letzte Version f"ur 1994 fertiggestellt} +% Zuerst einmal zeigen, was es ist: +% \begin{macrocode} +\typeout{Package typearea, \csname ver@typearea.sty\endcsname% + ^^J\@spaces\@spaces\@spaces\@spaces\space\space + Copyright (C) Frank Neukam, 1992-1994% + ^^J\@spaces\@spaces\@spaces\@spaces\space\space + Copyright (C) Markus Kohm, 1994-2002^^J} +% \end{macrocode} +% +% \subsection{Befehle vor den Optionen} +% +% \begin{macro}{\SetDIVList} +% \changes{v2.1a}{1994/10/28}{neu eingef"uhrt.} +% \changes{v2.6}{2000/01/04}{\cs{ta@divlist} enth"alt Werte f"ur +% Schriftgr"o"sen ab 1pt.} +% Der Befehl |\SetDIVList| tut nichts weiter als die innere Variable +% f"ur die schriftgr"o"senabh"angige \emph{DIV}-Liste |\ta@divlist| neu +% zu definieren. Dabei k"onnen \emph{DIV}-Werte f"ur Gr"o"sen ab 10\,pt +% gesetzt werden. +% \begin{macrocode} +\newcommand*\SetDIVList[1]{\def\ta@divlist{{}{}{}{}{}{}{}{}{}#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SetXDIVList} +% \changes{v2.6}{2000/01/04}{neu eingef"uhrt.} +% Da mit \cs{SetDIVList} aus Kompatibilit"atsgr"unden nur Werte f"ur +% Gr"o"sen ab 10\,pt gesetzt werden k"onnen, wird f"ur Werte ab 1\,pt +% ein neuer Befehl ben"otigt. +% \begin{macrocode} +\newcommand*\SetXDIVList[1]{\def\ta@divlist{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ta@bcor} +% \changes{v2.2a}{1995/01/25}{Definition der Dimension wegen der +% Option \texttt{BCOR} vorgezogen} +% \changes{v2.7g}{2001/04/17}{\cs{newlength} and Stelle von +% \cs{newdimen} f"ur die Definition +% verwendet} +% Dimension f"ur die Bindekorrektur reservieren. Diese wird implizit +% zu 0pt initialisiert. +% \begin{macrocode} +\newlength{\ta@bcor} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifnumber} +% Dieses Makro testet, ob ein "ubergebener Parameter eine positive, +% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter +% ausgef"uhrt, sonst der dritte. +% \begin{macrocode} +\providecommand\ifnumber[3]{ + \begingroup\@tempswafalse\let\scr@next\test@number + \expandafter\scr@next#1\scr@next + \if@tempswa\endgroup#2\else\endgroup#3\fi +} +% \end{macrocode} +% F"ur den eigentlichen Test wird der erste Parameter Token f"ur Token +% gescannt und beurteilt. +% \begin{macro}{\test@number} +% \begin{macrocode} +\newcommand*{\test@number}[1]{ + \ifx \scr@next#1 + \let\scr@next\relax + \else +% \end{macrocode} +% Dabei wird f"ur einen schnelleren Vergleich die Tatsache genutzt, da"s +% Ziffernzeichen immer im selben durchg"angigen Bereich liegen +% \begin{macrocode} + \@tempcnta=\expandafter\expandafter\expandafter\number + \expandafter`#1\relax + \ifnum \@tempcnta>47\relax + \ifnum \@tempcnta<58\relax + \@tempswatrue + \else\@tempswafalse\fi + \else\@tempswafalse\fi +% \end{macrocode} +% Das zeichenweise scannen und parsen kann nat"urlich nicht einfach +% abgebrochen werden. Stattdessen ist der Parameterrest noch zu +% entfernen. +% \begin{macrocode} + \if@tempswa\else\let\scr@next\gobble@till@next\fi\fi + \scr@next} +% \end{macrocode} +% \begin{macro}{\gobble@till@next} +% Das geschieht mit einem einzigen "`Leermacro"'. +% \begin{macrocode} +\newcommand*{\gobble@till@next}{} +\def\gobble@till@next#1\scr@next{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\ifdimen} +% Dieses Makro testet, ob ein "ubergebener Parameter eine Dimension +% ist und f"uhrt in Abh"angigkeit davon den zweiten oder dritten +% Parameter aus. +% \begin{macrocode} +\newcommand{\ifdimen}[3]{ + \begingroup\@tempswatrue\let\scr@next\test@posdimen + \expandafter\test@dimen#1\scr@next + \if@tempswa\endgroup#2\else\endgroup#3\fi +} +% \end{macrocode} +% \begin{macro}{\test@dimen} +% Als erste mu"s ein Vorzeichen entfernt werden. +% \begin{macrocode} +\newcommand*{\test@dimen}[1]{\ifx -#1\else\ifx +#1\else + \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi\scr@next} +% \end{macrocode} +% \begin{macro}{\test@posdimen} +% Dann mu"s getestet werden, ob es sich beim Rest um eine Dimension +% handelt. Dabei werden der einfachheit halber mehrere Dezimalkomma +% und -punkte erlaubt. Nat"urlich k"onnte man es auch wirklich richtig +% machen, aber das w"are nochmal etwas aufwendiger. Ist das wirklich +% notwendig? +% \begin{macrocode} +\newcommand*{\test@posdimen}[1]{ + \ifx \scr@next#1 + \@tempswafalse\let\scr@next\relax + \else + \if .#1\else\if ,#1\else + \@tempcnta=% + \expandafter\expandafter\expandafter\number\expandafter`#1\relax + \ifnum \@tempcnta>47\relax + \ifnum \@tempcnta<58\relax + \else\def\scr@next{\test@dimunt#1}\fi + \else\def\scr@next{\test@dimunt#1}\fi\fi\fi\fi + \scr@next} +% \end{macrocode} +% \begin{macro}{\testdimunt} +% \begin{macro}{\test@trueunt} +% Au"ser einer Gleitkomma- bzw. Gleitpunktzahl mu"s auch noch die Einheit +% behandelt werden. Dabei sind sowohl die neun Standardeinheiten als auch +% deren "`true"'-Variante zu ber"ucksichtigen. Deshalb wird zuerst ein +% eventuelles "`\texttt{true}"' weggeworfen. +% \begin{macrocode} +\newcommand*{\test@dimunt}{} +\def\test@dimunt#1\scr@next{% + \expandafter\test@trueunt#1truetrue\test@trueunt} +\newcommand*{\test@trueunt}{} +\def\test@trueunt#1true#2true#3\test@trueunt{ + \edef\@tempa{#1} + \ifx\@tempa\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi} +% \end{macrocode} +% \begin{macro}{\test@@ifdimunt} +% Anschlie"send wird dann getestet, ob es sich um eine der neun "ublichen +% Einheiten handelt. +% \begin{macrocode} +\newcommand*\test@@ifdimunt[1]{ + \@tempswafalse + \ifstr{#1}{pt}{\@tempswatrue}{} + \ifstr{#1}{pc}{\@tempswatrue}{} + \ifstr{#1}{in}{\@tempswatrue}{} + \ifstr{#1}{bp}{\@tempswatrue}{} + \ifstr{#1}{cm}{\@tempswatrue}{} + \ifstr{#1}{mm}{\@tempswatrue}{} + \ifstr{#1}{dd}{\@tempswatrue}{} + \ifstr{#1}{cc}{\@tempswatrue}{} + \ifstr{#1}{sp}{\@tempswatrue}{}} +% \end{macrocode} +% \begin{macro}{\ifstr} +% Dieses Macro wird oben ben"otigt und vergleicht zwei +% Tokenfolgen. +% \begin{macrocode} +\newcommand\ifstr[4]{ + \begingroup\edef\@tempa{#1}\edef\@tempb{#2} + \ifx\@tempa\@tempb\endgroup#3\else\endgroup#4\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@BCOR} +% \begin{macro}{\@@BCOR} +% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch Mustererkennung +% ersetzt.} +% Das Makro |\@BCOR| wird sp"ater ben"otigt, um die Option +% |BCOR|\emph{BCOR} zu erkennen. Die Option wird "uber ihr Muster +% erkannt. +% \begin{macrocode} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{ +% \end{macrocode} +% Handelt es sich um die Option |BCOR|, so ist der erste Parameter leer. +% \begin{macrocode} + \edef\@tempa{#1}\ifx\@tempa\@empty +% \end{macrocode} +% Au"serdem ist der dritte Parameter dann |BCOR|. +% \begin{macrocode} + \edef\@tempa{#3}\def\@tempb{BCOR}\ifx\@tempa\@tempb +% \end{macrocode} +% Der zweite Parameter sollte dann die Gr"o"se enthalten. Ist dies +% nicht der Fall, wird ein Fehler gemeldet (Fehlerzeile ist dann +% |\ProcessOptions|). +% \begin{macrocode} + \ifdimen{#2}{\setlength{\ta@bcor}{#2}}{\ta@opt@err} +% \end{macrocode} +% In allen anderen F"allen ist es nicht diese Option, dann wird ein Fehler +% ausgegeben. Stattdessen k"onnte hier auch auf weitere Optionen getestet +% werden. +% \begin{macrocode} + \else\ta@opt@err\fi + \else\ta@opt@err\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ta@div} +% \changes{v2.2a}{1995/01/25}{Definition wegen der Option \texttt{DIV} +% vorgezogen} +% Z"ahler f"ur \emph{DIV} reservieren. Dieser wird implizit zu +% 0 initialisiert. +% \begin{macrocode} +\newcount\ta@div +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@DIV} +% \begin{macro}{\@@DIV} +% \changes{v2.5}{1997/06/17}{Einzelzeichenscanner durch Mustererkennung +% ersetzt.} +% Die grunds"atzliche Funktion ist die gleiche wie bei |\@BCOR|, |\@@BCOR|. +% \begin{macrocode} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{ + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \ifnumber{#2}{\ta@div=#2\relax}{\ta@opt@err} + \else\ta@opt@err\fi +% \end{macrocode} +% Der Unterschied liegt darin, da"s bei einem Fehlschlag der +% Mustererkennung kein Fehler vorliegt, sondern u.\,U. noch auf |BCOR| +% getestet werden mu"s. +% \begin{macrocode} + \else\@BCOR\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@headlines} +% \begin{macro}{\@@headlines} +% \changes{v2.7g}{2001/04/17}{Neue Mustererkennung f"ur die Anzahl der +% Kopfzeilen} +% Das Macro \cs{@headlines} wird ben"otigt, um die Option +% \texttt{headlines} zu erkennen. +% \begin{macrocode} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \setlength{\@tempdima}{#1\baselineskip} + \def\ta@hh{#1\baselineskip} + \else\@DIV\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\x@paper} +% \begin{macro}{\x@@paper} +% \changes{v2.5}{1997/06/17}{Neue Mustererkennung f"ur die Papiergr"o"se.} +% Diese Makros werden ebenfalls sp"ater ben"otigt, wenn die Papiergr"o"se +% festgelegt wird. +% +% \begin{macro}{\isopaper} +% \changes{v2.5}{1997/06/17}{Neuer Befehl zur Berechnung unterschiedlicher +% ISO/DIN-Papierformate.} +% Da das Makro |\isopaper| in der Mustererkennung f"ur die Papiergr"o"se +% ben"otigt wird, wurde dieses Makro ebenfalls vorgezogen. +% \begin{macrocode} +\newcommand\isopaper[2][a]{% +% \end{macrocode} +% Das Makro kennt zwei Parameter, von denen der erste und optionale die +% Grundgr"o"se angibt. Die Angabe erfolgt "uber einen Kleinbuchstaben. +% M"oglich ist +% \begin{description} +% \item[a] ISO/DIN-A-Format +% \item[b] ISO/DIN-B-Format +% \item[c] ISO/DIN-C-Format +% \end{description} +% Der zweite Paremeter gibt dann die Skalierung an. +% +% Als Grundgr"o"se wird jeweils die 0-Gr"o"se eingesetzt. +% \begin{macrocode} + \ifx a#1 + \setlength{\paperwidth}{841sp}\setlength{\paperheight}{1189sp} + \else\ifx b#1 + \setlength{\paperwidth}{1000sp}\setlength{\paperheight}{1414sp} + \else\ifx c#1 + \setlength{\paperwidth}{917sp}\setlength{\paperheight}{1297sp} + \else\ifx d#1 + \setlength{\paperwidth}{771sp}\setlength{\paperheight}{1090sp} +% \end{macrocode} +% Wurde ein anderer Buchstabe angegeben, ist ein Fehler auszugeben. +% \changes{v2.5a}{1997/06/22}{Ausgabe der gew"ahlten Papiergr"o"se +% entfernt} +% \begin{macrocode} + \else + \PackageError{typearea} + {Unknown ISO/DIN-papersize-letter #1} + {There are only four defined paperscalings:\MessageBreak + a = ISO/DIN-A, b = ISO/DIN-B, c = ISO/DIN-C, d = ISO/DIN-D\MessageBreak + Read KOMA-Script-documentation for further information.} + \setlength{\paperwidth}{841sp}\setlength{\paperheight}{1189sp} + \fi\fi\fi\fi +% \end{macrocode} +% Es d"urfte aufgefallen sein, da"s bei der Gr"o"senfestlegung statt +% der Einheit "`mm"' die Einheit "`sp"' geschrieben wurde. Die Ma"se +% sind also um ein Vielfaches zu klein und m"ussen sp"ater noch mit +% 186468 multiplitziert werden, um auf Millimeter zu kommen. Dieser +% Trick ist jedoch notwendig, weil die Norm vorschreibt, da"s bei der +% nun folgenden $n$-fachen Halbierung der Seiten ($n = +% \texttt{Skalierung} + 1$) jeweils auf ganze Millimeter abgerundet +% werden mu"s. +% \begin{macrocode} + \@tempcnta=#2\relax + \@whilenum\@tempcnta>0 + \do{\setlength{\@tempdima}{\paperwidth} + \setlength{\paperwidth}{.5\paperheight} + \setlength{\paperheight}{\@tempdima} + \advance\@tempcnta by\m@ne} +% \end{macrocode} +% Zum Schlu"s mu"s nun die genannte Multiplitkation erfolgen. Da +% "`mm"' kein ganzzahliges Vielfaches von "`sp"' ist, beinhaltet diese +% Multiplikation eigentlich einen Fehler und eine Abweichung von der +% Norm. Da jedoch "`sp"' die Rechengenauigkeit von {\TeX} darstellt, +% stellt auch die Angabe eines ganzzahligen Millimeterwertes bereits +% einen solchen Fehler dar. +% \begin{macrocode} + \multiply\paperwidth by186468\relax + \multiply\paperheight by186468\relax} +% \end{macrocode} +% \end{macro} +% +% Zur"uck zur Mustererkennung. Diese ist tats"achlich etwas einfacher als +% die in den beiden F"allen zuvor. +% \begin{macrocode} +\newcommand*{\x@paper}{\expandafter\x@@paper\CurrentOption paper\x@@paper} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{ + \edef\@tempa{paper}\edef\@tempb{#3}\ifx\@tempa\@tempb + \ifnumber{#2}{ + \ifx a#1\isopaper[a]{#2} + \else\ifx b#1\isopaper[b]{#2} + \else\ifx c#1\isopaper[c]{#2} + \else\ifx d#1\isopaper[d]{#2} + \else\ta@opt@err\fi\fi\fi\fi + }{\ta@opt@err} + \else\@headlines\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ta@opt@err} +% Falls die zu"atzliche Option nicht \texttt{BCOR}, \texttt{DIV} oder eine +% bekannte Papiergr"o"se ist, ist eine Fehlermeldung f"allig. +% \begin{macrocode} +\newcommand*{\ta@opt@err}{ + \PackageError{typearea} + {Unknown option \CurrentOption} + {You've used an unknown option.\MessageBreak + Read the KOMA-Script-documentation for further + information.}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Optionen} +% +% \subsubsection{Kopf-, Fu"s-, Rand- und Textbereich} +% +% \begin{option}{headinclude} +% \begin{option}{headexclude} +% Diese Optionen bestimmen, ob der Seitenkopf bereits zum Textbereich +% geh"ort. Der Zustand selbst wird in einem Schalter gespeichert. +% \begin{macro}{\if@hincl} +% \begin{macro}{\@hincltrue} +% \begin{macro}{\@hinclfalse} +% \begin{macrocode} +\newif\if@hincl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{headinclude}{\@hincltrue} +\DeclareOption{headexclude}{\@hinclfalse} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{footinclude} +% \begin{option}{footexclude} +% Diese Optionen bestimmen, ob die Fu"szeilen noch zum Textbereich +% geh"oren. Der Zustand selbst wird in einem Schalter gespeichert. +% \begin{macro}{\if@hincl} +% \begin{macro}{\@hincltrue} +% \begin{macro}{\@hinclfalse} +% \begin{macrocode} +\newif\if@fincl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{footinclude}{\@fincltrue} +\DeclareOption{footexclude}{\@finclfalse} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{mpinclude} +% \changes{v2.8q}{2002/03/28}{Neue Option} +% \begin{option}{mpexclude} +% \changes{v2.8q}{2002/03/28}{Neue Option} +% Es gibt Dokumente mit sehr ausf"uhrlichen Randnotizen, bei denen die +% Randnotizen bei der Satzspiegelberechnung in den Satzspiegel +% eingerechnet werden sollten. Diese Optionen bestimmen, ob dies der +% Fall ist. +% \begin{macro}{\if@mincl} +% \begin{macro}{\@mincltrue} +% \begin{macro}{\@minclfalse} +% Der Zustand wird in einem Schlater gespeichert. \textbf{Achtung:} +% Bei Verwendung dieser Option m"ussen gr"ossere DIV-Werte verwendet +% werden. Siehe dazu weiter unten. +% \begin{macrocode} +\@ifundefined{mincltrue}{\newif\if@mincl}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{mpinclude}{\@mincltrue} +\DeclareOption{mpexclude}{\@minclfalse} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \subsubsection{Papiergr"o"sen-Optionen} +% +% \begin{option}{dvips} +% \changes{v2.7g}{2001/04/17}{Neu} +% \changes{v2.8m}{2001/09/04}{\cs{AtBeginDocument} eingef"ugt} +% Diese Option sorgt daf"ur, dass die Seitengr"o"se als \cs{special} +% f"ur \texttt{dvips} in die DVI-Datei geschrieben wird. Da +% \verb|\AtBeginDvi| im Gegensatz zu \verb|\AtBeginDocument| das +% Argument sofort expandiert, das special aber erst nach dem Laden von +% \texttt{typearea} ausgef"uhert werden darf, wird \verb|\AtBeginDvi| +% einfach innerhalb von \verb|\AtBeginDocument| aufgerufen. +% \begin{macrocode} +\DeclareOption{dvips}{\AtBeginDocument{\AtBeginDvi{% + \special{papersize=\the\paperwidth,\the\paperheight}}}} +% \end{macrocode} +% \end{option} +% +% \begin{option}{pdftex} +% \changes{v2.7g}{2001/04/17}{Neu} +% Diese Option sorgt daf"ur, dass die Seitengr"o"se mit {pdf\TeX} +% ebenfalls in der PDF-Datei landet. +% \begin{macrocode} +\DeclareOption{pdftex}{\AtBeginDocument{% + \pdfpagewidth=\paperwidth \pdfpageheight=\paperheight}} +% \end{macrocode} +% \end{option} +% +% \begin{macro}{\ifpdfoutput} +% \changes{v2.7g}{2001/04/17}{Neu} +% \changes{v2.8q}{2001/10/19}{\cs{pdfoutput} wird nicht mehr zu +% \cs{relax}, wenn zuvor undefiniert} +% \changes{v2.8q}{2001/10/19}{darf bereits definiert sein} +% \changes{v2.8q}{2001/10/19}{Verwendung von \cs{scr@ifpdfoutput}} +% \begin{macro}{\scr@ifpdfoutput} +% \changes{v2.8q}{2001/10/19}{Neu zur internen Verwendung} +% \changes{v2.8q}{2001/11/13}{funktioniert} +% ifthenelse-Konstrukt, um abh"angig davon, ob als pdf ausgegeben wird +% oder nicht, Befehle auszuf"uhren. Dieses Macro wird f"ur die +% Deklaration der Option \texttt{pagesize} ben"otigt. +% \begin{macrocode} +\newcommand{\scr@ifpdfoutput}[2]{% + \begingroup\@ifundefined{pdfoutput}{\endgroup #2}{\endgroup% + \ifnum\pdfoutput>0\relax #1\else #2\fi}}% +\@ifundefined{ifpdfoutput}{% + \let\ifpdfoutput\scr@ifpdfoutput% + }{% + \PackageInfo{typearea}{% + \string\ifpdfoutput\space already defined.\MessageBreak + If \string\ifpdfoutput\space does not behave like\MessageBreak + is is described at the KOMA-Script manual, try to\MessageBreak + load `typearea.sty' earlier or find out at which\MessageBreak + package or class \string\ifpdfoutput\space was defined.}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{option}{pagesize} +% \changes{v2.7g}{2001/04/17}{Neu} +% \changes{v2.8q}{2001/10/19}{\cs{scr@ifpdfoutput} statt +% \cs{ifpdfoutput}} +% Diese Option wiederum arbeitet je nachdem, ob eine PDF- oder eine +% DVI-Ausgabe erfolgt, wie \texttt{dvips} oder \texttt{pdftex}. +% \begin{macrocode} +\DeclareOption{pagesize}{\AtBeginDocument{% + \scr@ifpdfoutput + {\pdfpagewidth=\paperwidth\pdfpageheight=\paperheight} + {\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}}}} +% \end{macrocode} +% \end{option} +% +% +% Diese Optionen bestimmen die Papiergr"o"se. Aus der Papiergr"o"se wird +% sp"ater mit |\typearea| der Seitenspiegel berechnet. Dar"uber hinaus +% w"are das eine passende Gelegenheit |\SetDIVList| anzuwenden, darauf +% wird aber verzichtet (da die Verwendung der Liste ohnehin als +% veraltete Methode betrachtet werden kann. +% +% \begin{option}{a4paper} +% \changes{v2.5}{1997/06/17}{explizite Default-Option als Sonderfall.} +% \begin{macrocode} +\DeclareOption{a4paper}{\isopaper{4}} +% \end{macrocode} +% \begin{option}{a5paper} +% \changes{v2.5}{1997/06/17}{zur Verwendung als globale Option mit den +% Standard-Classes als Sonderfall.} +% \begin{macrocode} +\DeclareOption{a5paper}{\isopaper{5}} +% \end{macrocode} +% \begin{option}{b5paper} +% \changes{v2.5}{1997/06/17}{keine explizite Option mehr.} +% ISO/DIN-A-, -B-, -C- und D-Formate werden per Mustererkennung +% ermittelt. Dies erfolgt bei den Satzspiegeloptionen. Die Berechnung +% selbst ist weiter oben zu finden. Die Optionen |a4paper| und +% |a5paper| wurden lediglich als Sonderfall explizit definiert. Dies +% ist notwendig, damit die |typearea| mit den Standard-Classes besser +% zusammenarbeitet. W"aren die beiden Optionen nicht definiert, +% w"urden die "ublichen Papierformatoptionen nicht in gewohnter Weise +% als gobale Optionen funktionieren. Bei den un"ublichen "ubrigen +% Formaten kann verlangt werden, da"s sie beim Package explizit +% angegeben werden. +% \end{option} +% \end{option} +% \end{option} +% \begin{option}{letterpaper} +% ISO letter: +% \begin{macrocode} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +% \end{macrocode} +% \end{option} +% \begin{option}{legalpaper} +% ISO legal: +% \begin{macrocode} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +% \end{macrocode} +% \end{option} +% \begin{option}{executivepaper} +% executive: +% \begin{macrocode} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +% \end{macrocode} +% \end{option} +% +% \subsubsection{landscape} +% +% \begin{option}{landscape} +% \changes{v2.5}{1997/06/17}{Vertauschung verz"ogert} +% Mit der Option |landscape| werden |\paperheight| und |\paperwidth| +% vertauscht. Damit wird das entsprechende Querformat erreicht. Leider +% kann das nicht sofort erfolgen, weil die Papiergr"o"se u.\,U. noch +% nicht festliegt. Au"serdem ben"otigt man noch einen entsprechenden +% Drucker oder einen |DVI|-Treiber, der mit einer speziellen Option +% eine um 90\,Grad gedrehte Ausgabe erstellen kann. +% \begin{macro}{\if@landscape} +% \begin{macro}{\@landscapetrue} +% \begin{macro}{\@landscapefalse} +% \begin{macrocode} +\newif\if@landscape +\DeclareOption{landscape}{\@landscapetrue} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% +% \subsubsection{Satzspiegeloptionen} +% +% \begin{option}{BCOR} +% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar} +% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus} +% \begin{option}{DIV} +% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar} +% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus} +% F"ur die neu hinzugekommenen Optionen |BCOR| und |DIV| mu"s eine +% Sonderbehandlung durchgef"uhrt werden. Diese Sonderbehandlung mu"s +% die Optionen scannen und Fehler zur"uckweisen. Daf"ur werden die +% oben definierten Befehle |\@...BCOR| und |\@...DIV| sowie +% |\ta@TraceError| verwendet. Damit die Optionen zeichenweise +% gescannt werden k"onnen, wird die Expansion von |\CurrentOption| +% erzwungen. +% \begin{option}{DIVcalc} +% Zuvor wird jedoch noch die Sonderbehandlung f"ur |DIVcalc| eingebaut. +% Vor Version 2.8q wurde das durch eine einfache Option realisiert, +% "uber die die Default-DIV-Liste so manipuliert wird, da"s +% automatisch nach einem guten DIV-Wert gesucht wird: +% \begin{verbatim} +% \providecommand\ta@divlist{}\def\ta@divlistelse{1} +% \end{verbatim} +% Neuerdings wird stattdessen der Z"ahler |\ta@div| gesetzt. +% \changes{v2.4g}{1996/11/04}{Neue Option \texttt{DIVcalc}} +% \changes{v2.8q}{2001/11/06}{die Option ver"andert nicht mehr die +% \texttt{DIV}-Liste} +% \begin{macrocode} +\DeclareOption{DIVcalc}{\ta@div=1\relax} +% \end{macrocode} +% \end{option} +% \begin{option}{DIVclassic} +% Alternativ gibt es auch noch eine Sonderbehandlung fuer |DIVclassic|. +% Auch dabei wurde fr"uher die Default-DIV-Liste benutzt: +% \begin{verbatim} +% \providecommand\ta@divlist{}\def\ta@divlistelse{3} +% \end{verbatim} +% Gesucht wird dabei nach einem DIV-Wert, mit dem der Satzspiegel der +% Kreismethode m"oglichst gut erreicht wird. +% \changes{v2.4n}{1997/05/28}{Neue Option \texttt{DIVclassic}.} +% \begin{macrocode} +\DeclareOption{DIVclassic}{\ta@div=3\relax} +% \end{macrocode} +% \end{option} +% Ansonsten also die Behandlung f"ur |BCOR|\emph{Wert}, +% |DIV|\emph{Wert} und |a|\emph{Wert}|paper|, |b|\emph{Wert}|paper|, +% |c|\emph{Wert}|paper| sowie |d|\emph{Wert}|paper|. +% \begin{macrocode} +\DeclareOption*{\x@paper} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \subsection{Konfigurationsdatei} +% +% \changes{v2.0e}{1994/10/28}{Konfigurationsdatei +% \texttt{typearea.cfg} zur Definition +% weiterer Optionen bzw. Papiergr"o"sen} +% Es ist m"oglich in einer Datei |typearea.cfg| z.B. weitere Optionen +% zu definieren, die dann automatisch eingeladen werden. +% \begin{macrocode} +\InputIfFileExists{typearea.cfg} + {\typeout{***************************************^^J% + * Local config file typearea.cfg used^^J% + ***************************************}} + {} +% \end{macrocode} +% +% \subsection{Standardeinstellungen} +% Als Standardoptionen sind |headexclude|, |footexclude| und die +% Papiergr"o"se |a4paper| eingestellt. Diese Optionen k"onnen +% selbstverst"andlich durch explizite Angaben "uberladen werden. +% \changes{v2.3h}{1995/01/19}{\cs{relax} nach \cs{ProcessOptions} +% erg"anzt.} +% \begin{macrocode} +\ExecuteOptions{headexclude,footexclude,a4paper} +\ProcessOptions\relax +% \end{macrocode} +% +% \changes{v2.5}{1997/06/17}{Landscape per Schalter aktivieren} +% Das ist jetzt der richtige Zeitpunkt f"ur die Landscape-Aktivierung. +% \begin{macrocode} +\if@landscape + \setlength\@tempdima {\paperheight} + \setlength\paperheight {\paperwidth} + \setlength\paperwidth {\@tempdima} +\fi +% \end{macrocode} +% +% \begin{macro}{\ta@divlist} +% \changes{v2.0e}{1994/10/28}{neue interne Definition} +% \changes{v2.6}{2000/01/04}{die Liste umfa"st nun Werte ab 1\,pt statt +% ab 10\,pt.} +% \begin{macro}{\ta@divlistelse} +% \changes{v2.6}{2000/01/04}{neue interne Definition} +% Au"serdem mu"s an dieser Stelle noch f"ur die Standardeinstellung +% der |DIV|-Liste gesorgt werden, falls eine solche noch nicht +% definiert wurde. +% \begin{macrocode} +\providecommand\ta@divlist{{}{}{}{}{}{}{}{}{}{8}{10}{12}} +% \end{macrocode} +% \end{macro} +% Wenn kein Defaultwert definiert ist, wird dieser Wert verwendet: +% \begin{macrocode} +\providecommand\ta@divlistelse{1} +% \end{macrocode} +% \end{macro} +% +% \subsection{Einige interne Register} +% +% \begin{Length}{ta@hblk} +% \begin{Length}{ta@vblk} +% \begin{Length}{ta@temp} +% Diese Gr"o"senparameter und Z"ahler werden intern f"ur verschiedene +% Befehle ben"otigt. (|\ta@bcor| und |\ta@div| werden bereits bei der +% Optionenauswertung ben"otigt und sind deshalb vorgezogen.) +% \begin{macrocode} +\newlength{\ta@hblk} +\newlength{\ta@vblk} +\newlength{\ta@temp} +% \end{macrocode} +% \end{Length} +% \end{Length} +% \end{Length} +% +% +% \subsection{Die Berechnung des Seitenspiegels} +% +% \begin{macro}{\typearea} +% Die Berechnung des Seitenspiegels, wie sie im Hauptteil der +% Anleitung beschrieben ist, findet mit Hilfe des Befehls |\typearea| +% statt, der hier definiert wird. Die Berechnung selbst findet in +% mehreren Stufen statt. +% \begin{macro}{\@typearea} +% \changes{v2.4n}{1997/05/28}{Eigentliche Satzspiegelberechnung in +% \cs{@typearea} ausgegliedert.} +% Die eigentliche Satzspiegelberechnung geschieht "uber das Hilfsmakro +% |\@typearea|, das dann auch von |\typearea| genutzt wird. Dieses +% Hilfsmakro ben"otigt keine Parameter, da diese bereits zuvor von +% |\typearea| in die entsprechenden Variablen geschrieben wurden. +% \begin{macrocode} +\newcommand*\@typearea{ +% \end{macrocode} +% Zun"achst werden die horizontalen Ma"se berechnet. Dazu wird als +% erstes die Gr"o"se einer horizontalen L"angeneinheit (\emph{HLE}) +% ermittelt: +% \begin{macrocode} + \ta@hblk \paperwidth + \advance \ta@hblk by -\ta@bcor + \divide\ta@hblk by \ta@div +% \end{macrocode} +% Die Gr"o"se des Bereichs f"ur die Randnotizen ist ebenfalls von der +% Streifenbreite abh"angig. +% \changes{v2.8q}{2002/03/28}{Textbreite ber"ucksichtigt Option +% \texttt{mpinclude}} +% \begin{macrocode} + \if@mincl + \marginparwidth \ta@hblk + \advance\marginparwidth -\marginparsep + \else + \if@twoside + \marginparwidth 1.5\ta@hblk + \else + \marginparwidth \ta@hblk + \fi + \fi +% \end{macrocode} +% Der linke und rechte Rand wird relativ zur benutzbaren Seitenbreite +% berechnet. Dabei mu"s auch der Rand ber"ucksichtigt werden, der vom +% Druckertreiber standardm"a"sig hinzugef"ugt wird. Au"serdem ist der +% Rand abh"angig davon, ob es sich um ein einseitiges oder +% beidseitiges Layout handelt. Bei Option \texttt{mpinclude} sind im +% beidseitigen Satz zus"atzlich die Randnotizen zu beachten. +% \begin{macrocode} + \oddsidemargin -1in + \evensidemargin -1in + \if@twoside + \advance\oddsidemargin by \ta@hblk + \advance\oddsidemargin by \ta@bcor + \advance\evensidemargin by 2\ta@hblk + \if@mincl + \advance\evensidemargin by \marginparwidth + \advance\evensidemargin by \marginparsep + \fi + \else + \advance\oddsidemargin by 1.5\ta@hblk + \advance\oddsidemargin by \ta@bcor + \evensidemargin\oddsidemargin + \fi +% \end{macrocode} +% Der Rest steht nun f"ur den Textbereich zur Verf"ugung: +% \begin{macrocode} + \textwidth \paperwidth + \advance\textwidth by -\ta@bcor + \advance\textwidth by -3\ta@hblk +% \end{macrocode} +% Falls die Randnotizen f"ur die Satzspiegelberechnung zum Textbereich +% gehoeren, muessen sie zusammen mit ihrem Abstand vom Text nun von +% diesem abgezogen werden. Es wird dabei davon ausgegangen, dass die +% Randnotizen immer au"sen gesetzt werden. Sollte der Textbereich f"ur +% Randnotizen zu schmal sein, so wird der Bereich der Randnotizen so +% lange verkleinert, bis dies nicht mehr der Fall ist. Am einfachsten +% geht dies, indem gegebenfalls die Breiten vertauscht werden. +% \begin{macrocode} + \if@mincl + \advance\textwidth by -\marginparwidth + \advance\textwidth by -\marginparsep + \ifdim\textwidth <\marginparwidth + \PackageWarningNoLine{typearea}{% + Width of text (\the\textwidth) less than width of\MessageBreak + marginpar (\the\marginparwidth) while using option\MessageBreak + `mpinclude'.\MessageBreak + Because of this, I'm exchanging the values.\MessageBreak + You should increase DIV to avoid such problems.\MessageBreak + } + \@tempdima \marginparwidth + \marginparwidth \textwidth + \textwidth \@tempdima + \fi + \fi +% \end{macrocode} +% +% Danach folgen die vertikalen Ma"se. Auch daf"ur wird zun"achst die H"ohe +% eines Streifens ben"otigt. +% \begin{macrocode} + \ta@vblk \paperheight + \divide\ta@vblk by \ta@div +% \end{macrocode} +% Davon ausgehend kann der obere Rand berechnet werden, wobei zu +% ber"ucksichtigen ist, da"s {\TeX} diesen selbst"andig um ein Inch +% vergr"o"sert. +% \begin{macrocode} + \topmargin -1in + \advance\topmargin by \ta@vblk +% \end{macrocode} +% Au"serdem ist zu ber"ucksichtigen, ob der Kopf zum Textbereich oder +% zum Rand geh"ort. +% \begin{macrocode} + \if@hincl \else + \advance\topmargin by -\headheight + \advance\topmargin by -\headsep + \fi +% \end{macrocode} +% Bei der Berechnung des Textbereichs sind von der Papierh"ohe die R"ander +% abzuziehen und ebenfalls zu ber"ucksichtigen, ob Kopf- und Fu"s zu den +% R"andern oder zum Textbereich selbst gez"ahlt werden. +% \begin{macrocode} + \ta@temp \paperheight + \advance\ta@temp by -3\ta@vblk + \if@hincl + \advance\ta@temp by -\headheight + \advance\ta@temp by -\headsep + \fi + \if@fincl + \advance\ta@temp by -\footskip + \fi +% \end{macrocode} +% Als Sonderbedingung ist dann noch zu beachten, da"s die Gr"o"se des +% Textbereichs nicht zu einer vertikalen Aufweitung f"uhrt. +% \begin{macrocode} + \textheight \topskip + \@whiledim\textheight<\ta@temp + \do{\advance\textheight by \baselineskip} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ta@modiv} +% Dieses Hilfsmakro wird weiter unten ben"otigt. Es dividiert den +% ersten Parameter durch den zweiten und liefert das gerundete +% Ergebnis in |\ta@div| zur"uck. F"ur die Berechnung werden +% |\@tempdima| und |\@tempdimb| verwendet. +% \begin{macrocode} +\newcommand*\ta@modiv[2]{ + \setlength{\@tempdima}{#1} + \divide\@tempdima by#2\relax + \ta@div\@tempdima + \ifnum \ta@div<4\relax + \ta@div=4\relax + \else + \setlength{\@tempdimb}{#1} + \divide\@tempdimb\ta@div + \addtolength{\@tempdima}{\@tempdima} + \addtolength{\@tempdima}{-\@tempdimb} + \advance\ta@div\@ne + \setlength{\@tempdimb}{#1} + \divide\@tempdimb\ta@div +% \end{macrocode} +% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.} +% \begin{macrocode} + \ifdim \@tempdima<\@tempdimb + \advance\ta@div by\m@ne + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ta@temp@goodwidth} +% Dieses Makro setzt die Hilfdimension |\ta@temp| auf den Wert einer +% optimalen Zeilenbreite in der aktuellen Schrift. Voraussetzung f"ur +% diese Berechnung ist, da"s Zeilenbreiten von ca. 66 bis 72 Zeichen +% optimal sind. Zur Vereinfachung wird mit dem Mittelwert 69 +% gerechnet. Eine solche Zeile besteht dann aus 66 durchschnittlichen +% Klein- und 3 durchschnittlichen Gro"sbuchstaben. +% \changes{v2.7i}{2001/05/17}{Berechnung ist robuster gegen +% arithmetischen "Uberlauf bei sehr gro"sen Schriften} +% \changes{v2.8q}{2002/03/06}{\cs{normalfont}\cs{normalsize} +% hinzugef"ugt} +% \begin{macrocode} +\newcommand*\ta@temp@goodwidth{ + \settowidth{\ta@temp}{\normalfont\normalsize + abcdefghijklmnopqrstuvwxyz} + \ifdim\ta@temp >200\p@ + \divide\ta@temp by 26 + \multiply\ta@temp by 3 + \settowidth{\@tempdima}{\normalfont\normalsize + ABCDEFGHIJKLMNOPQRSTUVWXYZ} + \divide\@tempdima by 26 + \multiply\@tempdima by 3 + \addtolength{\ta@temp}{\@tempdima} + \else + \multiply\ta@temp by 66 + \settowidth{\@tempdima}{\normalfont\normalsize + ABCDEFGHIJKLMNOPQRSTUVWXYZ} + \multiply\@tempdima by 3 + \addtolength{\ta@temp}{\@tempdima} + \divide\ta@temp by 26 + \fi +} +% \end{macrocode} +% \end{macro} +% \changes{v2.4g}{1996/11/04}{"Uberfl"ussigen Kommentar gel"oscht} +% \changes{v2.7g}{2001/04/17}{die neuen Werte \texttt{current}, +% \texttt{default}, \texttt{calc} und +% \texttt{classic} werden verstanden} +% \changes{v2.8q}{2001/11/06}{der Wert \texttt{last} wird verstanden} +% Die symbolischen Werte f"ur das obligatorische Argument haben +% folgende Bedeutung: +% \begin{center}\begin{tabular}{lll} +% Symbol & Wert & Bedeutung \\\hline\\[-1.6ex] +% \texttt{calc} & 2 & guten Wert berechnen \\ +% \texttt{classic} & 3 & mittelalterlicher Buchseitenkanon \\ +% \texttt{current} & --- & aktuellen Wert beibehalten \\ +% \texttt{default} & 0 & Wert aus der Liste verwenden \\ +% \texttt{last} & --- & Argument des letzten Aufrufs verwenden \\ +% \end{tabular}\end{center} +% \begin{macrocode} +\newcommand*\typearea[2][\z@]{ + \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else + \setlength{\ta@bcor}{#1} + \fi + \edef\@tempa{#2} + \def\@tempb{last}\ifx\@tempa\@tempb\let\@tempa=\@lastdiv\fi + \def\@tempb{current}\ifx\@tempa\@tempb\else + \def\@tempb{default}\ifx\@tempa\@tempb\ta@div=0\relax\else + \def\@tempb{calc}\ifx\@tempa\@tempb\ta@div=2\relax\else + \def\@tempb{classic}\ifx\@tempa\@tempb\ta@div=3\relax\else + \ta@div=\@tempa\relax + \fi + \fi + \fi + \fi + \edef\@lastdiv{\the\ta@div} +% \end{macrocode} +% Nun mu"s festgestellt werden, ob die H"ohe des Kopfbereichs bereits +% vorgegeben ist, oder ob diese selbst berechnet werden soll. Im Falle der +% Berechnung wird als H"ohe f"ur den Kopf das 1.25-Fache des +% Grundzeilenabstandes gew"ahlt. Damit sollte auch noch genug Raum f"ur die +% optionale Trennlinie vorhanden sein. +% \changes{v2.4n}{1997/05/28}{Berechnete Kopfh"ohe vom Grundzeilenabstand +% abh"angig.} +% \begin{macrocode} + \@ifundefined{ta@hh}{\headheight 1.25\baselineskip}{\headheight\ta@hh} +% \end{macrocode} +% Auch der Abstand zwischen Kopf und Text ist immer gleich. +% Verschiedene Typographen geben hier verschiedene Werte an. Ein guter +% Wert sollte erreicht werden, wenn dadurch eine Kopfzeile in das +% normale Zeilenraster eingepa"st wird. Der Abstand soll aber auch +% nicht zu gro"s, werden. Optimal ist angeblich ein Wert von einer +% Zeile. Dies f"uhrt jedoch zu einem klaren Konflikt bei +% unterstrichenen Kopfzeilen. Deshalb wird ein Kompromi"s gebildet. +% \begin{macrocode} + \headsep 1.5\baselineskip +% \end{macrocode} +% Es folgen die restlichen von |DIV| und |BCOR| unabh"angigen Werte. +% \begin{macrocode} + \footskip 3.5\baselineskip + \marginparsep 1cc + \marginparpush 0.45\baselineskip +% \end{macrocode} +% \changes{v2.4g}{1996/11/04}{\texttt{DIV}=0 versucht den Wert aus der +% Default-Liste zu verwenden.} +% Vor der eigentlichen Berechnung des Satzspiegels wird nun zun"achst +% "uberpr"uft, ob der "ubergebene |DIV|-Wert 0 ist. Da Werte von 0 bis +% 3 nicht m"oglich sind (Minimum sind drei Teile Rand und ein Teil +% Text), wird der Wert 0 daf"ur verwendet, den Defaultwert aus der +% Liste zu ermitteln, falls ein solcher vorhanden ist. +% \changes{v2.5h}{1999/12/29}{Text der Warnung korrigiert.} +% \begin{macrocode} + \ifnum\ta@div=\z@ + \@ifundefined{@ptsize}{% + \@tempdima=\f@size pt\relax + \advance\@tempdima by.5pt + \ta@div=\@tempdima + \divide\ta@div by65536\relax + \advance\ta@div by-10\relax + \xdef\@ptsize{\the\ta@div}% + \PackageWarningNoLine{typearea}{% + \string\@ptsize\space not defined! + \MessageBreak + Fontsize ist \f@size.\MessageBreak + Defining \string\@ptsize\space to \@ptsize}% + }{} + \ta@divfor{\@ptsize}% + \fi +% \end{macrocode} +% \changes{v2.4n}{1997/05/28}{Optionale, klassische Kreisberechnung f"ur +% \texttt{DIV}.} +% Als zweiter Sonderfall wird f"ur einen |DIV|-Wert von 3 die +% \emph{Kreisberechnung} durchgef"uhrt. Dabei wird versucht, den +% Textbereich genau so hoch zu w"ahlen, wie das Papier breit ist. Ein +% solches Verh"altnis wird bei klassischen Papierformaten als +% harmonisch betrachtet. +% \begin{macrocode} + \ifnum\ta@div=3 + \typeout{DIV calculation for classic typearea.} + \setlength{\ta@temp}{\paperwidth} + \addtolength{\ta@temp}{-\ta@bcor} +% \end{macrocode} +% Bei der Berechnung des vertikal ben"otigten Platzes, ist zu +% beachten, ob Kopf und Fu"s zum Textbereich oder zu den R"andern +% geh"oren. +% \begin{macrocode} + \if@hincl\else + \addtolength{\ta@temp}{\headheight} + \addtolength{\ta@temp}{\headsep} + \fi + \if@fincl\else + \addtolength{\ta@temp}{\footskip} + \fi +% \end{macrocode} +% Wird vertikal mehr Platz ben"otigt, als vorhanden ist, wird eine andere +% Berechnung versucht, die weiter unten erfolgt. +% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.} +% \begin{macrocode} + \ifdim \ta@temp>\paperheight + \PackageWarningNoLine{typearea} + {No classic typearea with this papersize!\MessageBreak + Using calculated DIV} + \ta@div=\@ne +% \end{macrocode} +% Ansonsten wird mittels des belegten Textbereichs und der Papierh"ohe der +% obere und untere Rand zusammen, +% \begin{macrocode} + \else + \setlength{\ta@temp}{\paperheight} + \addtolength{\ta@temp}{-\paperwidth} + \addtolength{\ta@temp}{\ta@bcor} +% \end{macrocode} +% daraus die Streifenh"ohe +% \begin{macrocode} + \divide\ta@temp 3\relax +% \end{macrocode} +% und schlie"slich erneut mit Hilfe der Papierh"ohe der genaue |DIV|-Wert +% berechnet. +% \begin{macrocode} + \ta@modiv{\paperheight}{\ta@temp} + \fi +% An dieser Stelle muss \texttt{mpinclude} nicht ber"ucksichtigt +% werden, da nicht die Breite des Textbereichs, sonder die Breite des +% Papiers als Kriterium verwendet wird. + \fi +% \end{macrocode} +% Wurde bisher kein Wert gefunden oder ein |DIV|-Wert von 1 bis 2 +% angegeben, so wird nun ein m"oglichst optimaler |DIV|-Wert +% ermittelt. +% \changes{v2.4n}{1997/05/28}{Optimale \texttt{DIV}-Berechnung +% verbessert} +% \begin{macrocode} + \ifnum\ta@div<4 + \typeout{DIV calculation for typearea with good linewidth.} +% \end{macrocode} +% Zun"achst k"onnte die Textbreite die gesamte Sichtbare Papierbreite +% einnehmen. +% \begin{macrocode} + \setlength{\textwidth}{\paperwidth} + \addtolength{\textwidth}{-\ta@bcor} +% \end{macrocode} +% Als Sollbreite wird hier die ideale Zeilenf"ullung verwendet +% \begin{macrocode} + \ta@temp@goodwidth +% \end{macrocode} +% Im Zweispaltenmodus besteht jede Zeile aus zwei solchen Spalten +% zuz"uglich dem Spaltenabstand. +% \changes{v2.8q}{2001/12/13}{DIVcalc liefert im zweispaltigen Satz +% (wie dokumentiert) breitere Spalten} +% \begin{macrocode} + \if@twocolumn + \addtolength{\ta@temp}{\ta@temp} + \addtolength{\ta@temp}{\columnsep} + \fi +% \end{macrocode} +% In fr"uheren Versionen erfolgte nun eine iterative Ann"aherung an den +% optimalen |DIV|-Wert. Je nach {\TeX}-Implementierung und +% Papierformat, kann das aber recht lange dauern. Die obere Berechnung +% zum Vorbild nehmend, wird deshalb nun ebenfalls versucht, den +% optimalen Wert direkt zu berechnen. Dazu wird zun"achst wie oben die +% Gr"o"se der horizontalen R"ander zusammen ermittelt: +% \begin{macrocode} + \setlength{\ta@hblk}{\paperwidth} + \addtolength{\ta@hblk}{-\ta@temp} +% \end{macrocode} +% Daraus dann die Breite eines Streifens. +% \begin{macrocode} + \divide\ta@hblk by 3 +% \end{macrocode} +% Ist die Breite negativ, so wird die Mindestbreite von 5mm eingesetzt. +% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}.} +% \begin{macrocode} + \ifdim \ta@hblk<\z@\relax + \setlength{\ta@hblk}{5mm} + \fi +% \end{macrocode} +% Nun kann wieder der |DIV|-Wert ermittelt werden. +% \changes{v2.8q}{2002/03/28}{Ber"uchsichtigung von Option +% \texttt{mpinclude} bei der \texttt{DIV}-Berechnung} +% Im Falle der Option \texttt{mpinclude} gilt allgemein, dass +% der Nenner mit $\frac{3}{3+m}$ zu multiplizieren ist. Dabei ist $m$ +% die Anzahl an L"angeneinheiten, die f"ur die Randnotizen verwendet +% werden sollen. Mit $m=1$ ist also der Faktor $\frac{3}{4}=0.75$ zu +% verwenden. Schwieriger wird es, wenn hier nicht die Anzahl +% L"angeneinheiten, sondern ein konkreter Wert f"ur die Breite der +% Randnotizen verwendet wird. +% \begin{macrocode} + \if@mincl + \setlength{\ta@temp}{.75\ta@hblk} + \else + \setlength{\ta@temp}{\ta@hblk} + \fi +% \begin{macrocode} + \ta@modiv{\paperwidth}{\ta@temp} +% \end{macrocode} +% Als Erschwernis kommt jetzt jedoch hinzu, da"s nun zwar der +% |DIV|-Wert f"ur die Breite optimal ist, jedoch u.\,U. zu einer zu +% gro"sen H"ohe f"uhrt. Deshalb wird zun"achst ein Satzspiegel f"ur +% diesen |DIV|-Wert berechnet. +% \begin{macrocode} + \@typearea +% \end{macrocode} +% Nun wird "uberpr"uft, ob die vertikalen Ausma"se in Ordnung +% sind. Auch hier ist wieder eine minimale Streifenbreite +% vorteilhaft. Die Streifenbreite ergibt sich direkt aus dem oberen +% Rand. Wobei jedoch noch das {\TeX}-Offset von 1in zu +% ber"ucksichtigen ist. +% \changes{v2.5a}{1997/06/22}{\cs{ifdim} statt \cs{ifnum}} +% \begin{macrocode} + \setlength{\ta@temp}{-1in} + \addtolength{\ta@temp}{5mm} + \ifdim\topmargin<\ta@temp +% \end{macrocode} +% Ist der Minimalrand nicht eingehalten, so wird f"ur diesen ein neuer +% |DIV|-Wert ermittelt. Dabei mu"s ebenfalls ber"ucksichtigt werden, +% ob Kopf- und Fu"sbereich zum Text oder zum Rand geh"oren. +% \changes{v2.5b}{1997/06/29}{Bei der Mindestrandbetrachtung +% \texttt{headinclude} und +% \texttt{footinclude} ber"ucksichtigen} +% \begin{macrocode} + \setlength{\ta@temp}{15mm} + \if@hincl\else + \addtolength{\ta@temp}{\headheight} + \addtolength{\ta@temp}{\headsep} + \fi + \if@fincl\else + \addtolength{\ta@temp}{\footskip} + \fi + \divide\ta@temp by3\relax + \ta@modiv{\paperheight}{\ta@temp} + \fi +% \end{macrocode} +% Dieser Sonderfall ist somit abschlie"send behandelt. +% \begin{macrocode} + \fi +% \end{macrocode} +% Damit steht jetzt also der |DIV|-Wert fest, und die eigentliche +% Berechnung kann folgen. +% \begin{macrocode} + \@typearea +% \end{macrocode} +% \changes{v2.0e}{1994/10/28}{Die Seitenaufteilung wird in die log-Datei +% geschrieben.} +% \changes{v2.4i}{1996/11/11}{Die Seitenaufteilung wird etwas sp"ater in +% die log-Datei geschrieben.} +% \changes{v2.4i}{1996/11/11}{Am Ende von \cs{typearea} wird noch +% \cs{@typeare@end} ausgef"uhrt.} +% \changes{v2.4j}{1996/12/04}{Bei der Seitenaufteilung wird \cs{textheight} +% nicht mehr doppelt, daf"ur zus"atzlich +% \cs{baselineskip} ausgegeben.} +% \changes{v2.5}{1997/06/17}{"`arithmetic overflow"' bei landscape +% behoben} +% Zum Schlu"s soll die Seitenaufteilung noch in die |log|-Datei +% geschrieben werden. +% \begin{macrocode} + \ta@temp@goodwidth + \if@twocolumn + \addtolength{\ta@temp}{\ta@temp}% + \addtolength{\ta@temp}{\columnsep}% + \fi + \setlength{\@tempdima}{\ta@temp}% + \addtolength{\ta@temp}{-\textwidth}% + \divide\@tempdima 100\relax + \divide\ta@temp\@tempdima + \@tempcnta\ta@temp + \ifnum\@tempcnta<5\relax + \ifnum\@tempcnta>-5\relax + \@tempcnta=0 + \else + \advance\@tempcnta 4 + \fi + \else + \advance\@tempcnta -4 + \fi + \ifnum\@tempcnta<-15\relax + \PackageWarningNoLine{typearea} + {Bad DIV-value!\MessageBreak + You should decrease DIV, increase fontsize or\MessageBreak + change papersize} + \else\ifnum\@tempcnta>15\relax + \PackageWarningNoLine{typearea} + {Bad DIV-value!\MessageBreak + You should increase DIV, decrease fontsize or\MessageBreak + change papersize} + \fi\fi + \ifnum\ta@div<6\relax + \PackageWarningNoLine{typearea} + {Very low DIV-value!\MessageBreak + DIV-values less than 6 result in textwidth/-height\MessageBreak + smaller than total marginwidth/-height.\MessageBreak + You should increase DIV, increase fontsize or\MessageBreak + change papersize} + \fi + \PackageInfo{typearea}{% + These are the values describing the layout:\MessageBreak + DIV\space\space=\space\number\ta@div\MessageBreak + BCOR\space=\space\the\ta@bcor\MessageBreak + \string\paperwidth\space\space\space\space\space\space=% + \space\the\paperwidth\MessageBreak + \space\string\textwidth\space\space\space\space\space\space=% + \space\the\textwidth\MessageBreak + \space\string\columnwidth\space\space\space\space=% + \space\the\columnwidth\MessageBreak + \space\string\columnsep\space\space\space\space\space\space=% + \space\the\columnsep\MessageBreak + \space DIV-departure\space\space\space=% + \space\the\@tempcnta/100\MessageBreak + \space\string\evensidemargin\space=% + \space\the\evensidemargin\MessageBreak + \space\string\oddsidemargin\space\space=% + \space\the\oddsidemargin\MessageBreak + \string\paperheight\space\space\space\space\space=% + \space\the\paperheight\MessageBreak + \space\string\textheight\space\space\space\space\space=% + \space\the\textheight\MessageBreak + \space\string\topmargin\space\space\space\space\space\space=% + \space\the\topmargin\MessageBreak + \space\string\headheight\space\space\space\space\space=% + \space\the\headheight\MessageBreak + \space\string\headsep\space\space\space\space\space\space\space\space=% + \space\the\headsep\MessageBreak + \space\string\topskip\space\space\space\space\space\space\space\space=% + \space\the\topskip\MessageBreak + \space\string\footskip\space\space\space\space\space\space\space=% + \space\the\footskip\MessageBreak + \space\string\baselineskip\space\space\space=% + \space\the\baselineskip\MessageBreak + } + \@typearea@end} +% \end{macrocode} +% +% \begin{macro}{\@typearea@end} +% Das Makro |\@typearea@end| wird verwendet, um mit einem gewaltigen +% Hack die "Anderung des Satzspiegels innerhalb eines Dokuments zu +% erm"oglichen. +% +% Zun"achst ist das Makro leer, weil in der Pr"aambel nichts weiter zu tun +% ist. +% \begin{macrocode} +\newcommand\@typearea@end{} +% \end{macrocode} +% +% Am Anfang des Dokuments mu"s das Makro jedoch so umdefiniert werden, da"s +% alle Berechnungen, die |\begin{document}| f"ur die Ausgabedimensionen +% durchf"uhrt auch noch von |\typearea| durchgef"uhrt werden. +% \begin{macrocode} +\AtBeginDocument{% + \renewcommand\@typearea@end{% +% \end{macrocode} +% Als erstes wird jedoch eine Warnung ausgegeben, weil es wirklich sehr +% unsauber ist, so zu verfahren. Das ganze ist absolut abh"angig von der +% \LaTeX-Version. +% \begin{macrocode} + \PackageWarning{typearea} + {Typearea changed!\MessageBreak + You should do this only at preamble, because only\MessageBreak + \protect\begin{document} calculates output dimensions!\MessageBreak + Trying to calculate new output dimensions, but\MessageBreak + this is only a dirty hack} +% \end{macrocode} +% Sicherheitshalber werden jetzt die Gleitobjekte ausgegeben und eine neue +% Seite begonnen. +% \begin{macrocode} + \clearpage +% \end{macrocode} +% Dann k"onnen endlich die Dimensionen, die z.\,B. von der Ausgaberoutine +% ben"otigt werden, neu berechnet werden. +% \begin{macrocode} + \@colht\textheight + \@colroom\textheight \vsize\textheight + \columnwidth\textwidth + \if@twocolumn + \advance\columnwidth -\columnsep + \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue + \fi + \hsize\columnwidth \linewidth\hsize + }} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\areaset} +% \changes{v2.1b}{1994/12/31}{\cs{headheight} von \cs{@ptsize} +% abh"angig gemacht} +% \changes{v2.4i}{1996/11/11}{Am Ende von \cs{typearea} wird noch +% \cs{@typeare@end} ausgef"uhrt.} +% \changes{v2.6}{2000/01/04}{\cs{headheight} von \cs{f@size} statt von +% \cs{@ptsize} abh"angig gemacht} +% \changes{v2.7g}{2001/04/17}{Auch hier existiert der symbolische Wert +% \texttt{current} f"ur BCOR} +% Zur Berechnung eines Seitenspiegels mit fester Breite und +% H"ohe dient der Befehl |\areaset|. Der Algorithmus ist "ahnlich dem +% vorherigen Verfahren, aber einfacher. +% \begin{macrocode} +\newcommand*\areaset[3][\z@]{ + \edef\@tempa{#1}\edef\@tempb{current}\ifx\@tempa\@tempb\else + \setlength{\ta@bcor}{#1} + \fi + \textwidth #2 + \textheight #3 + \ta@hblk \paperwidth + \advance\ta@hblk by -\ta@bcor + \advance\ta@hblk by -\textwidth + \divide\ta@hblk by 3 + \oddsidemargin -1in + \evensidemargin -1in + \if@twoside + \advance\oddsidemargin by \ta@hblk + \advance\oddsidemargin by \ta@bcor + \advance\evensidemargin by 2\ta@hblk + \else + \advance\oddsidemargin by 1.5\ta@hblk + \advance\oddsidemargin by \ta@bcor + \evensidemargin\oddsidemargin + \fi + \headheight 15\p@ + \advance\headheight by\f@size\p@ + \advance\headheight by-10\p@ + \headsep 1.5\baselineskip + \footskip 3.5\baselineskip + \ta@vblk \paperheight + \advance\ta@vblk by -\textheight + \divide\ta@vblk by 3 + \if@hincl + \advance\textheight by -\headheight + \advance\textheight by -\headsep + \fi + \if@fincl + \advance\textheight by -\footskip + \fi + \topmargin \ta@vblk + \advance\topmargin by -1in + \if@hincl \else + \advance\topmargin by -\headheight + \advance\topmargin by -\headsep + \fi + \if@twoside + \marginparwidth 1.5\ta@hblk + \else + \marginparwidth \ta@hblk + \fi + \marginparsep 1cc + \marginparpush 0.45\baselineskip + \@areaset@end} +% \end{macrocode} +% +% \begin{macro}{\@areaset@end} +% Da die Schlu"s-Berechnungen und auch die Ausgabe von |\@areaset@end| +% und |\@typearea@end| identisch sind, wird hier genau daf"ur gesorgt. +% Dazu kann nat"urlich nicht |\let| verwendet werden, weil sich die +% Definition von |\@typarea@end| ja im Laufe der Zeit "andert. +% \begin{macrocode} +\newcommand\@areaset@end{\@typearea@end} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Berechnung des Standardseitenspiegels} +% +% \begin{macro}{\ta@divfor} +% Der Standardseitenspiegel ist abh"angig von den mit |\SetDIVList| +% vorgegebenen Einstellungen. Dazu mu"s aus einer eventuell vorhandenen +% inneren Liste |ta@divlist| der von der Schriftgr"o"se abh"angige +% \textsf{DIV}-Wert ausgelesen werden. Dies geschieht mit Hilfe des +% |\ta@divfor|-Befehls, der sich wiederum einiger interner Befehle +% zur Listenbearbeitung bedient. +% \changes{v2.4g}{1996/11/04}{Der Satzspiegel wird nicht mehr direkt +% berechnet, sondern nur der +% \texttt{DIV}-Wert aus der Defaultliste +% ermittelt.} +% \changes{v2.6}{2000/01/04}{Ber"ucksichtigung der erweiterten Liste} +% \changes{v2.8q}{2002/03/28}{Ber"ucksichtigung der Option +% `mpinclude'} +% \changes{v2.9e}{2002/08/25}{zweimal \cs{relax} eingef"ugt} +% \begin{macrocode} +\newcommand*{\ta@divfor}[1]{ + \if@mincl + \PackageInfo{typearea}{% + With option `mpinclude' there are no predefined\MessageBreak + DIV-values. Using DIV calculation for good line\MessageBreak + width} + \ta@div=2 + \else + \xdef\@tempa{\ta@divlist{}} + \ta@div=#1\relax + \@whilenum \ta@div >-9 \do {% + \ifx\@tempa\empty \relax% + \else \xdef\@tempa{\expandafter\@cdr\@tempa\@nil}% + \fi + \advance\ta@div by -1 + } + \ifx\@tempa\empty +% \end{macrocode} +% Wenn keine Voreinstellung gefunden werden konnte, so wird immer +% der Optimalwert berechnet. Mit einer Warnung wird darauf hingewiesen. +% \begin{macrocode} + \ta@div=10\advance\ta@div by#1\relax + \PackageWarningNoLine{typearea}{% + DIV for \the\ta@div pt and used papersize\MessageBreak + not defined!\MessageBreak + Using DIV=\ta@divlistelse} + \ta@div=\ta@divlistelse\relax + \else +% \end{macrocode} +% Ansonsten wird der vorgegebene Wert verwendet. +% \begin{macrocode} + \xdef\@tempa{\expandafter\@car\@tempa\@nil} + \ifx\@tempa\empty + \ta@div=\ta@divlistelse\relax + \else + \ta@div=\@tempa\relax + \fi + \fi + \fi} +% \end{macrocode} +% \end{macro} +% \changes{v2.8q}{2001/11/06}{Initialisierung mit Hilfe der +% symbolischen Werte \texttt{current}} +% Nun fehlt nur noch die eigentliche Initialisierung. Dazu wird einfach der +% Satzspiegel mit den getroffenen Voreinstellungen berechnet. Da der +% |DIV|-Wert 0 f"ur einen Wert aus der Default-Liste steht, bleibt die +% Kompatibilit"at zu "alteren Versionen erhalten. Der aktuelle Wert +% f"ur |DIV| und |BCOR| wurde "uber die Optionen bereits +% gesetzt. Dabei kann abweichend zu sonst der aktuelle Wert auch 0, 1, +% 2 oder 3 sein. Die Initialisierung des Pakets ist damit sehr einfach. +% \begin{macrocode} +\typearea[current]{current} +% \end{macrocode} +% +% \subsection{Fast das Ende} +% +% \begin{macrocode} +%</typearea> +% \end{macrocode} +% +% \section{"`scrartcl"'-class, +% "`scrreprt"'-class, +% "`scrbook"'-class, +% "`scrlttr2"'-class} +% +% Alle drei Haupt-\emph{classes} haben viele Teile gemeinsam. Die +% gr"o"sten Gemeinsamkeiten bestehen dabei zwischen |scrreprt| und +% |scrbook|. |scrartcl| unterscheidet sich in mehreren Punkten von den +% beiden "ubrigen Haupt-\emph{classes}. +% +% |scrlttr2| unterscheidet sich in vielen Punkten grundlegend von den +% drei Haupt-\emph{classes}. Dennoch wird sie ab Version 2.8n +% ebenfalls hier implementiert. +% +% \begin{macrocode} +%<*class> +% \end{macrocode} +% +% \changes{v2.0e}{1994/07/07}{Erste Version von "`scrartcl"', "`scrreprt"' +% und "`scrbook"'.} +% \changes{v2.0e}{1994/08/10}{\cs{sectdef} "uberall in "`scrreprt"' und +% "`scrbook"' durch \cs{secdef} ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} in "`scrreprt"' und +% "`scrbook"' durch \cs{addcontentsline} +% ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} an zwei Stellen in +% "`scrreprt"' und "`scrbook"' durch +% \cs{@makeschapterhead} ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} in "`scrreprt"' und +% "`scrbook"' durch \cs{@afterheadings} +% ersetzt.} +% \changes{v2.1b}{1994/12/31}{Letzte Version f"ur 1994 +% fertiggestellt.} +% \changes{v2.8m}{2001/09/08}{"`scrlttr2"' zur"uck in "`scrclass.dtx"'} +% +% Die Implementierung "ahnelt in vielen Punkten der der Standard-classes. +% Deshalb werden hier allenfalls grobe Unterschiede behandelt. +% +% \subsection{Optionen} +% +% \subsubsection{Optionen mit Hilfe von \texttt{keyval}} +% +% Die neue Briefklasse (und derzeit nur diese) verwendet das +% \texttt{keyval}-Paket f"ur die Auswertung der Optionen. Dabei wird +% schlicht jede Option "uber \cs{DeclareOption*} ausgewertet. +% \begin{macrocode} +%<*scrlettr> +\RequirePackage{keyval} +% \end{macrocode} +% +% \begin{macro}{\KOMA@key} +% \begin{macro}{\KOMAoptions} +% \changes{v2.8q}{2001/10/08}{Neu} +% \begin{macro}{\scr@save@KV@errx} +% \changes{v2.8q}{2001/10/15} +% Ein paar Abk"urzungen und Erleichterungen sowohl f"ur mich als auch +% f"ur den Anwender. Das erste Makro dient der Definition eines neuen +% \texttt{keyval}-Schl"ussels. Das zweite ruft \cs{setkeys} auf. +% \begin{macrocode} +\newcommand*{\KOMA@key}{\define@key{KOMA}} +\newcommand*{\KOMAoptions}[1]{% + \@ifundefined{scr@save@KV@errx}{% + \let\scr@save@KV@errx=\KV@errx + \renewcommand*{\KV@errx}[1]{% + \ClassError{% + scrlttr2% + }{unknown KOMA option `#1'}{% + You've tried to use the KOMA option `#1'.\MessageBreak + But there is no KOMA option with that name.\MessageBreak + See the manual of KOMA-Script for information about known koma + options.}}% + \setkeys{KOMA}{#1}% + \let\KV@errx=\scr@save@KV@errx + \let\scr@save@KV@errx=\relax + }{% + \setkeys{KOMA}{#1}% + }\ignorespaces% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\AfterProcessOptions} +% \begin{macro}{\AfterProcessOptions@hook} +% \changes{v2.8q}{2001/10/08}{Neu} +% Au"serdem existiert ein interner \emph{hook}, um aufgrund von +% Optionen unmittelbar nach \cs{ProcessOptions} Aktionen auszul"osen. +% \begin{macrocode} +\newcommand*{\AfterProcessOptions@hook}{} +\newcommand*{\AfterProcessOptions}[1]{% + \g@addto@macro{\AfterProcessOptions@hook}{#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@setif} +% \changes{v2.8q}{2001/10/08}{Neu} +% Es wird ebenfalls ein Makro ben"otigt, mit dem man einen Schalter +% "uber die symbolischen Werte \texttt{true}, \texttt{false}, +% \texttt{on} und \texttt{off} setzen kann. +% \begin{macro}{\@setif@alsoerr} +% \changes{v2.8q}{2001/10/09}{Neu} +% \begin{macrocode} +\newcommand*{\@setif}[3][]{% + \begingroup% + \edef\@tempa{#1} + \ifx\@tempa\@empty\def\@tempc{@#2}\else\def\@tempc{#1}\fi + \edef\@tempa{#3}\def\@tempb{on}\ifx\@tempa\@tempb + \def\@tempa{true}% + \else\def\@tempb{off}\ifx\@tempa\@tempb + \def\@tempa{false}% + \fi\fi% + \@ifundefined{\@tempc\@tempa}{% + \ClassError{% + scrlttr2% + }{You've used an unknown switch or value}{% + You've tried to set switch `#2' to value `#3', but there's + either no\MessageBreak% + switch `#2' defined or `#3' is not a switch + value.\MessageBreak% + Allowed switch values are `true', `false', `on', + `off'\@setif@alsoerr.} + \let\@tempa\endgroup + }{% + \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc\@tempa}} + } + \@tempa + \let\@setif@alsoerr=\@empty + } +\newcommand*{\@setif@alsoerr}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@setxif} +% \changes{v2.8q}{2001/10/08}{Neu} +% Es existiert eine Variante von obigem Makro, bei der die Werte f"ur +% \texttt{true} und \texttt{false} explizit angegeben werden. Diese +% sind dann Parameter 3 (\texttt{true}) und 4 (\texttt{false}). +% \begin{macrocode} +\newcommand*{\@setxif}[5][]{% + \begingroup% + \edef\@tempa{#1} + \ifx\@tempa\@empty\def\@tempc{@#2}\else\def\@tempc{#1}\fi + \@ifundefined{\@tempc true}{% + \ClassError{% + scrlttr2% + }{You've used an unknown switch}{% + You've tried to set switch `#2' to value `#3', but + there's no\MessageBreak + switch `#2' defined.} + \let\@tempa\endgroup + }{% + \edef\@tempa{#3}\edef\@tempb{#4}\ifx\@tempa\@tempb + \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc true}} + \else\def\@tempb{#5}\ifx\@tempa\@tempb + \edef\@tempa{\endgroup\noexpand\@nameuse{\@tempc false}} + \else + \ClassError{% + scrlttr2% + }{You've used an unknown switch value}{% + You've tried to set switch `#2' to value `#3', but allowed + switch\MessageBreak + values are `#4', `#5'\@setif@alsoerr\space only.} + \let\@tempa\endgroup + \fi\fi% + } + \@tempa + \let\@setif@alsoerr=\@empty + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@setnumstate} +% \changes{v2.8q}{2002/01/25}{Neu} +% Es wird au"serdem ein Makro ben"otigt, mit dem man ein nummerisches +% Makro in Abh"angigkeit "uber einen symbolischen Wert setze kann. +% Dabei soll es auch m"oglich sein, dass verschiedene symbolische +% Werte auf dieselbe Nummer abgebildet werden. Das erste Argument ist +% das Makro das umdefiniert werden soll. Das zweite ist die Option, +% "uber die der Wert gesetzt wird. Das dritte ist eine Liste aus +% symbolischen und nummerischen Werten der Art +% \{\emph{Symbol}\}\{\emph{Wert}\},\{\emph{Symbol}\}\{\emph{Wert}\}\dots +% \begin{macrocode} +\newcommand*{\@setnumstate}[4]{% + \begingroup + \edef\@searched{#4}% + \let\@tempa=\@empty + \let\@tempb=\@empty + \@tempswafalse + \@for\@valuelist:=#3\do{% + \if@tempswa\else + \edef\@tempc{\expandafter\@firstoftwo\@valuelist}% + \edef\@tempa{\@tempa\@tempb`\@tempc'}% + \edef\@tempb{, }% + \ifx\@tempc\@searched + \@tempswatrue + \edef\@tempa{\expandafter\@secondoftwo\@valuelist}% + \fi + \fi + } + \if@tempswa + \edef\@tempa{\endgroup + \noexpand\renewcommand*{\noexpand#1}{\@tempa}} + \else + \ClassError{% + scrlttr2% + }{You've used an unknown option value}{% + You've tried to set option `#2' to value `#4', + but allowed values\MessageBreak + are only:\MessageBreak + \@tempa.}% + \let\@tempa=\endgroup + \fi + \@tempa + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ObsoleteOption} +% \changes{v2.8q}{2001/10/08}{Neu} +% Es gibt au"serdem ein Makro, um vor der Verwendung alter Optionen zu +% warnen und den Namen und die Syntax der neuen Option anzugeben. +% \begin{macrocode} +\newcommand*{\@ObsoleteOption}[1]{% + \ClassWarningNoLine{% + scrlttr2% + }{% + You've used the obsolete option `\CurrentOption'.\MessageBreak + I'm using option `#1' instead.\MessageBreak + You should do this change also} + \KOMAoptions{#1} +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ObsoleteCommand} +% \changes{v2.8q}{2001/10/09}{Neu} +% Gleiches gilt f"ur veraltete Befehle. Allerdings werden hier zwei +% Argumente ben"otigt, um zu wissen, was der alte Befehl +% war. Au"serdem ist es hier sinnvoll die Zeilennummer mit auszugeben. +% \begin{macrocode} +\newcommand*{\@ObsoleteCommand}[2]{% + \ClassWarning{% + scrlttr2% + }{% + You`ve used the obsolete command `\string#1'.\MessageBreak + I`m using `\string\KOMAoptions{#2}' instead.\MessageBreak + You should do this change also} + \KOMAoptions{#2} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Papierformate, DIV, BCOR und Schriftgr"o"se} +% +% Bevor hier etwas getan werden kann, werden ebenfalls ein paar +% Hilfsmakros ben"otigt. Allerdings gilt dies nicht f"ur die +% Briefklasse +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{macro}{\ifnumber} +% Dieses Makro testet, ob ein "ubergebener Parameter eine positive, +% ganze Zahl ist. Ist dies der Fall, wird der zweite Parameter +% ausgef"uhrt, sonst der dritte. +% \begin{macrocode} +\newcommand\ifnumber[3]{ + \begingroup\@tempswafalse\let\scr@next\test@number + \expandafter\scr@next#1\scr@next + \if@tempswa\endgroup#2\else\endgroup#3\fi +} +% \end{macrocode} +% \begin{macro}{\test@number} +% F"ur den eigentlichen Test wird der erste Parameter Token f"ur Token +% gescannt und beurteilt. +% \begin{macrocode} +\newcommand*{\test@number}[1]{ + \ifx \scr@next#1 + \let\scr@next\relax + \else +% \end{macrocode} +% Dabei wird f"ur einen schnelleren Vergleich die Tatsache genutzt, da"s +% Ziffernzeichen immer im selben durchg"angigen Bereich liegen +% \begin{macrocode} + \@tempcnta=\expandafter\expandafter\expandafter\number + \expandafter`#1\relax + \ifnum \@tempcnta>47\relax + \ifnum \@tempcnta<58\relax + \@tempswatrue + \else\@tempswafalse\fi + \else\@tempswafalse\fi +% \end{macrocode} +% Das zeichenweise scannen und parsen kann nat"urlich nicht einfach +% abgebrochen werden. Stattdessen ist der Parameterrest noch zu entfernen. +% \begin{macrocode} + \if@tempswa\else\let\scr@next\gobble@till@next\fi\fi + \scr@next} +% \end{macrocode} +% \begin{macro}{\gobble@till@next} +% Das geschieht mit einem einzigen "`Leermacro"'. +% \begin{macrocode} +\newcommand*{\gobble@till@next}{} +\def\gobble@till@next#1\scr@next{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@BCOR} +% \begin{macro}{\@@BCOR} +% \begin{macro}{\@DIV} +% \begin{macro}{\@@DIV} +% \begin{macro}{\@headlines} +% \changes{v2.7g}{2001/04/17}{Neu} +% \begin{macro}{\@@headlines} +% \changes{v2.7g}{2001/04/17}{Neu} +% \begin{macro}{\@pt@scan} +% \changes{v2.6}{2000/01/04}{neu in dieser Version} +% \begin{macro}{\@pt@@scan} +% \changes{v2.6}{2000/01/04}{neu in dieser Version} +% \begin{macro}{\x@paper} +% \begin{macro}{\x@@paper} +% Auch hier werden die Scan-Befehle f"ur die Optionen |BCOR|, |DIV| und die +% ISO/DIN-Papierformate +% ben"otigt. Allerdings erfolgt keine direkte Wertzuweisung sondern nur +% eine explizite Weitergabe der globalen Option an das +% \emph{typearea}-package. Die Werte selbst werden auch nicht "uberpr"uft, +% sondern es wird davon ausgegangen, da"s diese Optionen immer zu +% \emph{typearea} geh"oren und dort ggf. ein expliziter Fehler ausgegeben +% werden soll. Die Befehle werden anschlie"send von den +% gleichnamigen Scan-Befehlen des packages "uberladen. +% \begin{macrocode} +\newcommand*{\@BCOR}{\expandafter\@@BCOR\CurrentOption BCORBCOR\@@BCOR} +\newcommand*{\@@BCOR}{} +\def\@@BCOR #1BCOR#2BCOR#3\@@BCOR{ + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{BCOR}\ifx\@tempa\@tempb + \PassOptionsToPackage{BCOR#2}{typearea} + \else\OptionNotUsed\fi + \else\OptionNotUsed\fi} +\newcommand*{\@DIV}{\expandafter\@@DIV\CurrentOption DIVDIV\@@DIV} +\newcommand*{\@@DIV}{} +\def\@@DIV #1DIV#2DIV#3\@@DIV{ + \edef\@tempa{#1}\ifx\@tempa\@empty + \edef\@tempa{#3}\def\@tempb{DIV}\ifx\@tempa\@tempb + \PassOptionsToPackage{DIV#2}{typearea} + \else\OptionNotUsed\fi + \else\@BCOR\fi} +\newcommand{\@headlines}{% + \expandafter\@@headlines\CurrentOption headlines\@@headlines} +\newcommand*{\@@headlines}{} +\def\@@headlines #1headlines#2\@@headlines{ + \edef\@tempa{#2}\edef\@tempb{headlines}\ifx\@tempa\@tempb + \PassOptionsToPackage{#1headlines}{typearea} + \else\@DIV\fi} +\newcommand*{\@pt@scan}{\expandafter\@pt@@scan\CurrentOption pt\@pt@@scan} +\newcommand*{\@pt@@scan}{} +\def\@pt@@scan #1pt#2\@pt@@scan{ + \edef\@tempa{pt}\edef\@tempb{#2}\ifx\@tempa\@tempb + \ifnumber{#1} + {\@tempcnta=#1\relax + \advance \@tempcnta by-10\relax + \edef\@ptsize{\the\@tempcnta}} + {\@headlines} + \else\@headlines\fi} +\newcommand*{\x@paper}{\expandafter\x@@paper\CurrentOption paper\x@@paper} +\newcommand*{\x@@paper}{} +\def\x@@paper #1#2paper#3\x@@paper{ + \edef\@tempa{paper}\edef\@tempb{#3}\ifx\@tempa\@tempb + \ifx a#1\PassOptionsToPackage{a#2paper}{typearea} + \else\ifx b#1\PassOptionsToPackage{b#2paper}{typearea} + \else\ifx c#1\PassOptionsToPackage{c#2paper}{typearea} + \else\ifx d#1\PassOptionsToPackage{d#2paper}{typearea} + \else\OptionNotUsed\fi\fi\fi\fi + \else\@pt@scan\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% \begin{option}{BCOR} +% \begin{option}{DIV} +% \begin{option}{headlines} +% \begin{option}{paper} +% Die Briefklasse arbeitet hier einfach mit \texttt{keyval}-Optionen: +% \begin{macrocode} +%<*scrlettr> +\KOMA@key{BCOR}{\PassOptionsToPackage{BCOR#1}{typearea}} +\KOMA@key{DIV}{\PassOptionsToPackage{DIV#1}{typearea}} +\KOMA@key{headlines}{\PassOptionsToPackage{#1headlines}{typearea}} +\KOMA@key{paper}{\PassOptionsToPackage{#1paper}{typearea}} +%</scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% \begin{option}{a4paper} +% \begin{option}{a5paper} +% \begin{option}{b5paper} +% \begin{option}{letterpaper} +% \begin{option}{legalpaper} +% \begin{option}{executivepaper} +% Allerdings m"ussen die Standardpapierformate zus"atzlich per alter +% Option unterst"utzt werden. +% \begin{macrocode} +%<*scrlettr> +\DeclareOption{a4paper}{\@ObsoleteOption{paper=a4}} +\DeclareOption{a5paper}{\@ObsoleteOption{paper=a5}} +\DeclareOption{b5paper}{\@ObsoleteOption{paper=b5}} +\DeclareOption{letterpaper}{\@ObsoleteOption{paper=letter}} +\DeclareOption{legalpaper}{\@ObsoleteOption{paper=legal}} +\DeclareOption{executivepaper}{\@ObsoleteOption{paper=executive}} +%</scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% +% Es gibt einige neue Optionen gegen"uber den Standard-Classes. +% +% \subsubsection{Tabellenoptionen} +% +% Da Flie"sobjekte in einem Brief etwas fehlt am Platz sind, werden +% in Briefen auch keine Optionen daf"ur angeboten. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{option}{onelinecaption} +% \changes{v2.8q}{2001/11/17}{Neue Option} +% \begin{option}{noonelinecaption} +% \changes{v2.8q}{2001/11/17}{Neue Option} +% Genau wie beim |caption2|-Paket gibt es Optionen, mit denen die +% Sonderbehandlung f"ur einzeilige Tabellen- und Abbildungsunter- und +% -"uberschriften ein- und ausgeschaltet werden werden k"onnen. +% \begin{macro}{\ifonelinecaptions} +% \changes{v2.8q}{2001/11/17}{Neuer Schalter} +% \begin{macro}{\onelinecaptionstrue} +% \begin{macro}{\onelinecaptionsfalse} +% Die Entscheidung wird in einem Schalter gespeichert. In der +% Hoffnung, beim Laden von |caption2| Speicher zu sparen, wird der +% gleiche Name verwendet, den auch |caption2| verwendet. +% \begin{macrocode} +\newif\ifonelinecaptions\onelinecaptionstrue +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Da f"ur diese Option nicht der gleiche Name verwendet wird, wie +% bei |caption2|, wird von den Optionen nicht nur der Schalter +% entsprechend gesetzt, sondern auch die korrespondierende Option an +% |caption2| weitergeleitet. Der gleiche Name konnte schlecht +% verwendet werden, weil er bei einer Klasse auch nicht ansatzweise +% als selbsterkl"arend bezeichnet werden kann. +% \begin{macrocode} +\DeclareOption{onelinecaption}{\onelinecaptionstrue% + \PassOptionsToPackage{oneline}{caption2}} +\DeclareOption{noonelinecaption}{\onelinecaptionsfalse% + \PassOptionsToPackage{nooneline}{caption2}} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{tablecaptionabove} +% \changes{v2.8h}{2001/07/19}{Neu} +% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die +% Klassen verschoben} +% \begin{option}{tablecaptionbelow} +% \changes{v2.8h}{2001/07/19}{Neu} +% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die +% Klassen verschoben} +% \begin{macro}{\if@tablecaptionabove} +% \changes{v2.8h}{2001/07/19}{Neu} +% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die +% Klassen verschoben} +% \begin{macro}{\@tablecaptionabovetrue} +% \begin{macro}{\@tablecaptionabovefalse} +% Es besteht nun die Wahl, ob \cs{caption} bei Tabellen f"ur Unter- +% oder "Uberschriften voreingestellt ist. Die Defaulteinstellung ist +% aus Kompatibilit"atsgr"unden die Tabellenunterschrift. +% \begin{macrocode} +\newif\if@tablecaptionabove\@tablecaptionabovefalse +\DeclareOption{tablecaptionabove}{\@tablecaptionabovetrue} +\DeclareOption{tablecaptionbelow}{\@tablecaptionabovefalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% \end{option} +% +% \begin{option}{origlongtable} +% \changes{v2.8l}{2001/08/16}{Neu} +% \begin{macro}{\if@komalongtable} +% \changes{v2.8l}{2001/08/16}{Neu} +% \begin{macro}{\@komalongtabletrue} +% \begin{macro}{\@komalongtablefalse} +% Wenn das \texttt{longtable}-Paket geladen ist, werden die +% Tabellen"uber- oder -unterschriften daf"ur normalerweise von den +% Klassen umdefiniert. Dies geschieht automatisch nicht, wenn das +% \texttt{caption2}-Paket geladen ist. Es geschieht ausserdem nicht, +% wenn diese Option gesetzt ist. Die Unterscheidung erfolgt mit einem +% Schalter. +% \begin{macrocode} +\newif\if@komalongtable\@komalongtabletrue +\DeclareOption{origlongtable}{\@komalongtablefalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Kopf-, Fu"s- und Randbereich} +% \begin{option}{headsepline} +% \begin{option}{headnosepline} +% Der Kopfteil kann mit einer Linie vom Textbereich getrennt +% werden. +% \begin{macro}{\if@hsl} +% \begin{macro}{\@hsltrue} +% \begin{macro}{\@hslfalse} +% Die Entscheidung wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@hsl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Gleichzeitig wird dem \texttt{typearea}-Paket mitgeteilt, dass der +% Kopf zum Textbereich zu rechnen ist. +% \begin{macrocode} +%<*!scrlettr> +\DeclareOption{headsepline}{% + \PassOptionsToPackage{headinclude}{typearea}\@hsltrue} +%</!scrlettr> +%<*scrlettr> +\KOMA@key{headsepline}[true]{\@setif{hsl}{#1}}% +\AfterProcessOptions{% + \if@hsl\PassOptionsToPackage{headinclude}{typearea}\fi} +%</scrlettr> +\DeclareOption{headnosepline}{% +%<!scrlettr> \@hslfalse% +%<scrlettr> \@ObsoleteOption{headsepline=false}% + } +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{footsepline} +% \changes{v2.0e}{1994/08/14}{bei \cs{PassOptionsToPackage} fehlte die +% package-Angabe.} +% \begin{option}{footnosepline} +% Der Fu"steil kann mit einer Linie vom Textbereich getrennt werden. +% \begin{macro}{\if@fsl} +% \begin{macro}{\@fsltrue} +% \begin{macro}{\@fslfalse} +% Die Entscheidung wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@fsl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Gleichzeitig wird dem \texttt{typearea}-Paket mitgeteilt, dass der +% Fu"s zum Textbereich zu rechnen ist. +% \begin{macrocode} +% \begin{macrocode} +%<*!scrlettr> +\DeclareOption{footsepline}{\PassOptionsToPackage{footinclude}{typearea} + \@fsltrue} +%</!scrlettr> +%<*scrlettr> +\KOMA@key{footsepline}[true]{\@setif{fsl}{#1}}% +\AfterProcessOptions{% + \if@fsl\PassOptionsToPackage{footinclude}{typearea}\fi} +%</scrlettr> +\DeclareOption{footnosepline}{% +%<!scrlettr> \@fslfalse% +%<scrlettr> \@ObsoleteOption{footsepline=false}% + } +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{mpinclude} +% \changes{v2.8q}{2002/03/28}{Neue Option} +% \begin{option}{mpexclude} +% \changes{v2.8q}{2002/03/28}{Neue Option} +% Es gibt Dokumente mit sehr ausf"uhrlichen Randnotizen, bei denen die +% Randnotizen bei der Satzspiegelberechnung in den Satzspiegel +% eingerechnet werden sollten. Siehe hierzu auch die gleichnamige +% Option des \texttt{typearea} Pakets. In den Hauptklassen muss +% lediglich daf"ur gesorgt werden, dass der Kopf- und Fu"sbereich in +% diesem Fall auch die Randnotizen "uberdeckt. Eine Weiterleitung an +% die Pakete \texttt{typearea} und \texttt{scrpage2} ist nicht +% erforderlich, da in diesem derselbe Schalter verwendet wird. Dieser +% wird in den Paketen nur dann definiert, wenn er nicht bereits +% definiert ist. +% \begin{macro}{\if@mincl} +% \begin{macro}{\@mincltrue} +% \begin{macro}{\@minclfalse} +% Der Zustand wird in einem Schlater gespeichert. \textbf{Achtung:} +% Bei Verwendung dieser Option m"ussen gr"ossere DIV-Werte verwendet +% werden. Siehe dazu weiter unten. F"ur die Briefklasse wird bei +% Verwendung der Optionen eine Warnung ausgegeben. +% \begin{macrocode} +\newif\if@mincl +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{mpinclude}{% + \@mincltrue +%<*scrlettr> + \ClassWarning{scrlttr2}{% + You should not use option `mpinclude' with this\MessageBreak + class} +%</scrlettr> + } +\DeclareOption{mpexclude}{ + \@minclfalse +%<*scrlettr> + \ClassWarning{scrlttr2}{% + You should not use option `mpexclude' with this\MessageBreak + class} +%</scrlettr> + } +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \subsubsection{Optionen f"ur den Briefkopf} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% Die Gestaltung des Briefkopfes war bei der alten \texttt{scrlettr} +% Klasse eng begrenzt. Deshalb hatte ich f"ur mich selbst das +% \texttt{briefkopf} Paket geschrieben und ohne Support +% ver"offentlicht. Die Funktionalit"at ist nun direkt verf"ugbar. Dazu +% werden verschiedene Optionen ben"otigt. +% +% \begin{option}{fromalign} +% \changes{v2.8q}{2002/01/25}{Neu} +% Diese Option legt fest, ob der Absender linksb"undig, mittig oder +% rechtsb"undig gesetzt werden soll. +% \begin{macro}{\@alignfrom} +% \changes{v2.8q}{2002/01/25}{Neu} +% Die Einstellung wird in einem nummerisch auszuwertenden Makro +% gespeichert. Dabei gelten folgende Werte: +% \begin{center} +% \begin{tabular}{rl} +% Wert & Ausrichtung \\\hline +% 0 & linksb"undig \\ +% 1 & zentriert \\ +% 2 & rechtsb"undig \\ +% 10000 & nicht antasten \\ +% \end{tabular} +% \end{center} +% Voreingestellt ist "`nicht antasten"'. +% \begin{macrocode} +\newcommand*{\@alignfrom}{0} +\KOMA@key{fromalign}{% + \@setnumstate{\@alignfrom}{fromalign}{% + {left}{0},% + {center}{1},{centered}{1},{middle}{1},% + {right}{2},% + {no}{10000},{false}{10000},{off}{10000}}{#1}% + } +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{fromrule} +% \changes{v2.8q}{2002/01/25}{Neu} +% Es kann gew"ahlt werden, ob im Absender nach dem Namen oder nach dem +% gesamten Absender eine Linie gesetzt werden soll. +% \begin{macro}{\@rulefrom} +% \changes{v2.8q}{2002/01/25}{Neu} +% Die Einstellung wird in einem nummerisch auszuwertenden Makro +% gespeichert. Dabei gelten folgende Werte: +% \begin{center} +% \begin{tabular}{rl} +% Wert & Absenderlinie \\\hline +% 0 & keine \\ +% 1 & unter dem Name \\ +% 2 & unter der Adresse \\ +% \end{tabular} +% \end{center} +% Voreingestellt ist keine Linie. +% \begin{macrocode} +\newcommand*{\@rulefrom}{0} +\KOMA@key{fromrule}[below]{% + \@setnumstate{\@rulefrom}{fromrule}{% + {false}{0},{no}{0},{off}{0},{aftername}{1},% + {below}{2},{afteraddress}{2},{true}{2},{yes}{2},{on}{2}% + }{#1}% + } +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{fromphone} +% \changes{v2.8q}{2002/01/25}{Neu} +% Ob die Telefonnummer im Absender gesetzt werden soll oder nicht, +% kann hier angegeben werden. +% \begin{macro}{\if@phone} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@phonetrue} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@phonefalse} +% \changes{v2.8q}{2002/01/25}{Neu} +% Gespeichert wird die Information in einem einfachen Schalter. +% Voreingestellt ist keine Telefonnummer im Absender. +% \begin{macrocode} +\newif\if@phone +\KOMA@key{fromphone}[true]{\@setif{phone}{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{fromfax} +% \changes{v2.8q}{2002/01/25}{Neu} +% Ob die Faxnummer im Absender gesetzt werden soll oder nicht, +% kann hier angegeben werden. +% \begin{macro}{\if@fax} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@faxtrue} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@faxfalse} +% \changes{v2.8q}{2002/01/25}{Neu} +% Gespeichert wird die Information in einem einfachen Schalter. +% Voreingestellt ist keine Faxnummer im Absender. +% \begin{macrocode} +\newif\if@fax +\KOMA@key{fromfax}[true]{\@setif{fax}{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{fromemail} +% \changes{v2.8q}{2002/01/25}{Neu} +% Ob die E-Mail-Adresse im Absender gesetzt werden soll oder nicht, +% kann hier angegeben werden. +% \begin{macro}{\if@email} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@emailtrue} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@emailfalse} +% \changes{v2.8q}{2002/01/25}{Neu} +% Gespeichert wird die Information in einem einfachen Schalter. +% Voreingestellt ist keine E-Mail-Adresse im Absender. +% \begin{macrocode} +\newif\if@email +\KOMA@key{fromemail}[true]{\@setif{email}{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{fromurl} +% \changes{v2.8q}{2002/01/25}{Neu} +% Ob die URL auf eine Homepage im Absender gesetzt werden soll oder +% nicht, kann hier angegeben werden. +% \begin{macro}{\if@www} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@wwwtrue} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@wwwfalse} +% \changes{v2.8q}{2002/01/25}{Neu} +% Gespeichert wird die Information in einem einfachen Schalter. +% Voreingestellt ist keine URL im Absender. +% \begin{macrocode} +\newif\if@www +\KOMA@key{fromurl}[true]{\@setif{www}{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{fromlogo} +% \changes{v2.8q}{2002/01/25}{Neu} +% Ob ein Logo in den Briefkopf gesetzt werden soll oder +% nicht, kann hier angegeben werden. +% \begin{macro}{\if@logo} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@logotrue} +% \changes{v2.8q}{2002/01/25}{Neu} +% \begin{macro}{\@logofalse} +% \changes{v2.8q}{2002/01/25}{Neu} +% Gespeichert wird die Information in einem einfachen Schalter. +% Voreingestellt ist kein Logo im Briefkopf. +% \begin{macrocode} +\newif\if@logo +\KOMA@key{fromlogo}[true]{\@setif{logo}{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Optionen f"ur den Kopf der Folgeseiten in Briefen} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{option}{pagenumber} +% \changes{v2.8q}{2002/01/31}{Neu} +% Bei Briefen kann gew"ahlt werden, ob auf Folgeseiten die Seitenzahl +% im Kopf oder im Fu"s stehen soll. Dabei kann zwischen Seitenzahl +% rechts, links oder zentriert gew"ahlt werden. Voreingestellt ist der +% Fu"s und mittig. +% \begin{macro}{\@pageat} +% \changes{v2.8q}{2002/01/31}{Neu} +% In dieser nummerisch auswertbaren Variablen wird gespeichert, wo die +% Seitenzahl stehen soll. Dabei gilt: +% \begin{center}\begin{tabular}{rl} +% Wert & Bedeutung f"ur die Seitenzahl\\\hline +% -1 & keine \\ +% 0 & im Kopf links \\ +% 1 & im Kopf mittig \\ +% 2 & im Kopf rechts \\ +% 3 & im Fu"s links \\ +% 4 & im Fu"s mittig \\ +% 5 & im Fu"s rechts \\ +% \end{tabular}\end{center} +% \begin{macrocode} +\newcommand*{\@pageat}{4} +\KOMA@key{pagenumber}{% + \begingroup + \@setnumstate{\@tempa}{pagenumber}{% + {no}{-1},{off}{-1},{false}{-1},% + {topleft}{0},{headleft}{0},% + {topmiddle}{1},{topcenter}{1},{topcentered}{1},% + {headmiddle}{1},{headcenter}{1},{headcentered}{1},% + {topright}{2},{headright}{2},% + {botleft}{3},{footleft}{3},% + {botmiddle}{4},{botcenter}{4},{botcentered}{4},% + {footmiddle}{4},{footcenter}{4},{footcentered}{4},% + {botright}{5},{footright}{5},% + {top}{10},{head}{10},{bot}{11},{foot}{11},% + {left}{20},{middle}{21},{center}{21},{centered}{21},{right}{22}% + }{#1}% + \ifnum\@tempa<10 + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\@tempa}}% + \else + \ifnum\@tempa<20 + \@tempcnta\@pageat\relax + \ifnum\@tempcnta>2 + \advance\@tempcnta by -3 + \fi + \ifnum\@tempa=11 + \advance\@tempcnta by 3 + \fi + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \else + \ifnum\@pageat>2 + \edef\@pageat{3}% + \else + \edef\@pageat{0} + \fi + \@tempcnta\@tempa + \advance\@tempcnta by -20 + \advance\@tempcnta by\@pageat + \edef\@tempa{\endgroup\edef\noexpand\@pageat{\the\@tempcnta}}% + \fi + \fi + \@tempa + } +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% \subsubsection{Standardoptionen} +% +% \begin{option}{10pt} +% \begin{option}{11pt} +% \begin{option}{12pt} +% \begin{macro}{\@ptsize} +% Wir definieren \cs{@ptsize} als Grundschriftgr"o"se minus +% 10\,pt. Hier wird allerdings zun"achst nur ein Dummy definiert, +% damit sp"ater \cs{renewcommand} verwendet werden kann. +% \begin{macrocode} +\newcommand*\@ptsize{% +%<scrlettr> 2% + } +% \end{macrocode} +% \end{macro} +% \begin{option}{fontsize} +% \begin{macrocode} +%<*scrlettr> +\KOMA@key{fontsize}{% + \begingroup + \setlength{\@tempdima}{#1} + \addtolength{\@tempdima}{-10\p@} + \edef\@tempa{\endgroup\noexpand\renewcommand*\noexpand\@ptsize{% + \strip@pt\@tempdima}} + \@tempa + } +%</scrlettr> +\DeclareOption{10pt}{% +%<!scrlettr> \renewcommand*\@ptsize{0} +%<scrlettr> \@ObsoleteOption{fontsize=10pt} + } +\DeclareOption{11pt}{% +%<!scrlettr> \renewcommand*\@ptsize{1} +%<scrlettr> \@ObsoleteOption{fontsize=11pt} + } +\DeclareOption{12pt}{% +%<!scrlettr> \renewcommand*\@ptsize{2} +%<scrlettr> \@ObsoleteOption{fontsize=12pt} + } +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% \begin{option}{oneside} +% \begin{option}{twoside} +% \changes{v2.9o}{2003/02/08}{Typofix} +% \begin{option}{draft} +% \begin{option}{final} +% \begin{macrocode} +%<*scrlettr> +\KOMA@key{twoside}[true]{\@setif{twoside}{#1}% + \if@twoside\@mparswitchtrue\else\@mparswitchfalse\fi} +%</scrlettr> +\DeclareOption{oneside}{% +%<!scrlettr> \@twosidefalse \@mparswitchfalse +%<scrlettr> \@ObsoleteOption{twoside=false} + } +%<!scrlettr>\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +%<*scrlettr> +\KOMA@key{draft}[true]{% + \begingroup + \let\@drafttrue=\@tempswatrue + \let\@draftfalse=\@tempswafalse + \@setif{draft}{#1} + \if@tempswa + \global\setlength{\overfullrule}{5\p@} + \else + \global\setlength{\overfullrule}{\z@} + \fi + \endgroup + } +%</scrlettr> +%<!scrlettr>\DeclareOption{draft}{\setlength{\overfullrule}{5pt}} +\DeclareOption{final}{% +%<!scrlettr> \setlength{\overfullrule}{\z@} +%<scrlettr> \@ObsoleteOption{draft=false} + } +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% \begin{option}{titlepage} +% \begin{option}{notitlepage} +% \begin{macro}{\if@titlepage} +% \begin{macro}{\@titlepagetrue} +% \begin{macro}{\@titlepagefalse} +% Briefe haben keine Titelei, die "ubrigen Klassen bieten zwei Arten +% der Titelei. +% \begin{macrocode} +%<*!scrlettr> +\newif\if@titlepage +%<scrartcl>\@titlepagefalse +%<scrreprt|scrbook>\@titlepagetrue +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{titlepage}{\@titlepagetrue} +\DeclareOption{notitlepage}{\@titlepagefalse} +%</!scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% +% \begin{option}{openright} +% \begin{option}{openany} +% \begin{macro}{\if@openright} +% \begin{macro}{\@openrighttrue} +% \begin{macro}{\@openrightfalse} +% Bei Artikeln und Briefen gibt es keine Kapitel also auch keine +% Schalter, damit diese immer auf rechten Seiten beginnen. Bei den +% anderen Klassen schon. +% \begin{macrocode} +%<*!scrartcl&!scrlettr> +\newif\if@openright +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +%</!scrartcl&!scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% +% \begin{option}{onecolumn} +% \begin{option}{twocolumn} +% \begin{option}{leqno} +% \begin{option}{fleqno} +% Briefe sind immer einspaltig und kennen keine Gleichungen, also gibt +% es f"ur diese auch die entsprechenden Optionen nicht. +% \begin{macrocode} +%<*!scrlettr> +\DeclareOption{onecolumn}{\@twocolumnfalse} +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +%</!scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% \begin{option}{openbib} +% \changes{v2.3g}{1996/01/14}{\cs{if@openbib} (\cs{@openbibtrue}, +% \cs{@openbibfalse} entfernt.} +% \changes{v2.3g}{1996/01/14}{Definition der openbib Option neu +% implementiert.} +% \begin{macro}{\@openbib@code} +% \begin{macro}{\newblock} +% Briefe haben kein Literaturverzeichnis. Alle anderen Klassen bieten +% eine alternative Darstellung daf"ur. +% \begin{macrocode} +%<*!scrlettr> +\DeclareOption{openbib}{% + \AtEndOfPackage{% + \renewcommand*\@openbib@code{% + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + }% + \renewcommand*\newblock{\par}}% +} +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{option} +% +% \subsubsection{Abstract (Zusammenfassung)} +% \begin{option}{abstracton} +% \begin{option}{abstractoff} +% Das Abstract (Zusammenfassung) kann mit einem standardm"a"sigen Titel +% versehen werden. Der Titel kann aber auch unterdr"uckt werden. +% +% Bei B"uchern und Briefen gibt es keine Zusammenfassung als +% gesonderte Umgebung. +% +% \begin{macro}{\if@abstrt} +% \begin{macro}{\@abstrttrue} +% \begin{macro}{\@abstrtfalse} +% Die Enscheidung wird in einem Schalter gespeichert. +% \begin{macrocode} +%<*!scrbook&!scrlettr> +\newif\if@abstrt +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\DeclareOption{abstracton}{\@abstrttrue} +\DeclareOption{abstractoff}{\@abstrtfalse} +%</!scrbook&!scrlettr> +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \subsubsection{Briefspezifische Optionen f"ur die erste Seite} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{option}{enlargefirstpage} +% \changes{v2.8o}{2001/09/18}{Neue Option} +% Normalerweise wird der Text der ersten Seite entsprechend dem +% normalen Satzspiegel gesetzt. Ist allerdings der Fu"s der ersten +% Seite zu hoch, dann wird der Satzspiegel vertikal entsprechend +% verk"urzt. Mit der Option \texttt{firstpageenlarge} kann erzwungen +% werden, dass im umgekehrten Fall, der Satzspiegel vertikal +% verl"angert wird. +% \begin{macro}{\if@enlargefp} +% \begin{macro}{\@enlargefptrue} +% \begin{macro}{\@enlargefpfalse} +% Gespeichert wird die Information "uber die Optionen in einem +% Schalter. +% \begin{macrocode} +\newif\if@enlargefp +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\KOMA@key{enlargefirstpage}[true]{% + \@setif[@enlargefp]{enlargefirstpage}{#1}} +% \end{macrocode} +% \end{option} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Optionen f"ur das Absatzlayout} +% +% Ab Version 2.8i k"onnen wir auch mit Avsatzlayouts umgehen, die einen +% Absatzabstand statt einem Absatzeinzug verlangen. Gesteuert wird +% dies "uber Optionen und Schalter. +% +% \begin{macro}{\if@parskip} +% \changes{v2.8i}{2001/07/22}{Neu} +% \changes{v2.8q}{2001/11/06}{Entf"allt} +% Dieser Schalter steuert intern, ob mit Absatzabstand oder +% Absatzeinzug gearbeitet werden soll. Voreingestellt ist wie bisher +% der Absatzeinzug. +% \begin{macrocode} +\newif\if@parskip +% \end{macrocode} +% \end{macro} +% \begin{option}{parskip} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{parskip-} +% \changes{v2.8l}{2001/08/16}{Neu} +% \begin{option}{parskip+} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{parskip*} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{halfparskip} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{halfparskip-} +% \changes{v2.8l}{2001/08/16}{Neu} +% \begin{option}{halfparskip+} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{halfparskip*} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{option}{parindent} +% \changes{v2.8i}{2001/07/22}{Neu} +% Diese vier Optionen steuern die Umschaltung zwischen den Modi. Dabei +% schalten alle \texttt{parskip}-Optionen einen Absatzabstand ein, +% wohingegen die \texttt{parindent}-Option den Absatzeinzug +% einschaltet. Die \texttt{+}-Variante sorgt au"serdem daf"ur, dass +% die letzte Zeile eines Absatzes maximal zu zweidrittel gef"ullt +% wird. Entsprechend sorgt die \texttt{*}-Variante f"ur eine maximale +% F"ullung von drei Vierteln. Die normale Variante sorgt lediglich +% f"ur einen freien Raum von 1\,em. Die \texttt{-}-Variante sorgt f"ur +% "uberhaupt nichts. +% \begin{macro}{\scr@parskip} +% \changes{v2.8i}{2001/07/22}{Neu} +% Hiermit wird ggf. der Absatzabstand eingestellt. +% \begin{macro}{scr@parfillskip} +% \changes{v2.8i}{2001/07/22}{Neu} +% \begin{macro}{\@parskip@indent} +% \changes{v2.8q}{2001/11/06}{Neu} +% Hiermit wird ggf. die F"ullung der letzten Absatzzeile eingestellt. +% einzustellen ist. +% \begin{macrocode} +\newcommand*{\scr@parskip}{\setlength{\parskip}{\z@}} +\newcommand*{\scr@parfillskip}{\setlength{\parfillskip}{\z@}} +%<*!scrlettr> +\DeclareOption{parskip}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .1\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{1em \@plus 1fil}}} +\DeclareOption{parskip-}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .1\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{parskip+}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .1\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{.3333\linewidth} + \addtolength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{parskip*}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .1\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{.25\linewidth} + \addtolength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{halfparskip}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{.5\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .5\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{1em \@plus 1fil}}} +\DeclareOption{halfparskip-}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{.5\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .5\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{halfparskip+}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{.5\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .5\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{.3333\linewidth} + \addtolength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{halfparskip*}{\@parskiptrue% + \renewcommand*{\scr@parskip}{% + \setlength{\parskip}{.5\baselineskip}% + \addtolength{\parskip}{\z@ \@plus .5\baselineskip}} + \renewcommand*{\scr@parfillskip}{% + \setlength{\parfillskip}{.25\linewidth} + \addtolength{\parfillskip}{\z@ \@plus 1fil}}} +\DeclareOption{parindent}{\@parskipfalse} +%</!scrlettr> +%<*scrlettr> +\newcommand*{\@parskip@indent}{} +\KOMA@key{parskip}[true]{% + \begingroup% + \@tempcnta=-1\edef\@tempa{#1}% + \def\@tempb{false}\ifx\@tempa\@tempb\@tempcnta=0\fi + \def\@tempb{off}\ifx\@tempa\@tempb\@tempcnta=0\fi + \def\@tempb{full-}\ifx\@tempa\@tempb\@tempcnta=1\fi + \def\@tempb{half-}\ifx\@tempa\@tempb\@tempcnta=2\fi + \def\@tempb{full}\ifx\@tempa\@tempb\@tempcnta=3\fi + \def\@tempb{true}\ifx\@tempa\@tempb\@tempcnta=3\fi + \def\@tempb{on}\ifx\@tempa\@tempb\@tempcnta=3\fi + \def\@tempb{half}\ifx\@tempa\@tempb\@tempcnta=4\fi + \def\@tempb{full+}\ifx\@tempa\@tempb\@tempcnta=5\fi + \def\@tempb{half+}\ifx\@tempa\@tempb\@tempcnta=6\fi + \def\@tempb{full*}\ifx\@tempa\@tempb\@tempcnta=7\fi + \def\@tempb{half*}\ifx\@tempa\@tempb\@tempcnta=8\fi + \let\@tempa\endgroup + \ifnum \@tempcnta <\z@\relax + \ClassError{% + scrlttr2% + }{You've used an unknown option value}{% + You've tried to set option `parskip' to value `#1', but + allowed values\MessageBreak + are `full-', `full', `full+', `full*', `half-', + `half', `half+',\MessageBreak + `half*', `false' and `off' only.\MessageBreak + You may also use `on' instead of `full'.}% + \else\ifnum \@tempcnta =\z@ + \def\@tempa{\endgroup\@parskipfalse\@parskip@indent}% + \else + \let\@tempb=\relax\let\@tempc=\relax + \ifodd \@tempcnta + \def\@tempb{\def\noexpand\scr@parskip{% + \noexpand\setlength{\parskip}{\baselineskip}% + \noexpand\addtolength{\parskip}{% + \z@ \@plus .1\baselineskip}}}% + \else + \def\@tempb{\def\noexpand\scr@parskip{% + \noexpand\setlength{\parskip}{.5\baselineskip}% + \noexpand\addtolength{\parskip}{% + \z@ \@plus .5\baselineskip}}}% + \fi + \advance\@tempcnta by \m@ne + \divide\@tempcnta by \tw@ + \ifcase\@tempcnta + \def\@tempc{\def\noexpand\scr@parfillskip{% + \noexpand\setlength{\parfillskip}{\z@ \@plus 1fil}}}% + \or + \def\@tempc{\def\noexpand\scr@parfillskip{% + \noexpand\setlength{\parfillskip}{1em \@plus 1fil}}}% + \or + \def\@tempc{\def\noexpand\scr@parfillskip{% + \noexpand\setlength{\parfillskip}{.3333\linewidth}% + \noexpand\addtolength{\parfillskip}{\z@ \@plus 1fil}}}% + \or + \def\@tempc{\def\noexpand\scr@parfillskip{% + \noexpand\setlength{\parfillskip}{.25\linewidth}% + \noexpand\addtolength{\parfillskip}{\z@ \@plus 1fil}}}% + \fi + \edef\@tempa{% + \endgroup\noexpand\@parskiptrue\@tempb\@tempc% + \noexpand\@parskip@indent}% + \fi + \fi + \@tempa + } +%</scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% +% \subsubsection{Optionen zur Steuerung der Numerierung} +% +% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur +% die Steuerung der Nummerierung. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{option}{pointednumbers} +% \changes{v2.3h}{1995/01/19}{Option zum Einschalten des Punktes nach +% Nummern.} +% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so, bei +% \texttt{pointednumber} wird explizit ein +% Fehler gemeldet.} +% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformatfalse} wird direkt auf +% \cs{@altsecnumformattrue} gesetzt.} +% \begin{option}{pointlessnumbers} +% \changes{v2.3h}{1995/01/19}{Option zur Verhinderung des Punktes nach +% Nummern.} +% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so, bei +% \texttt{pointlessnumber} wird explizit +% ein Fehler gemeldet.} +% \changes{v2.4g}{1996/11/04}{\cs{@altsecnumformattrue} wird direkt auf +% \cs{@altsecnumformatfalse} gesetzt.} +% Normalerweise wird automatisch entschieden, ob Nummern mit einem Punkt +% enden m"ussen oder nicht. Um dies abzuschalten, mu"s nur der +% gew"unschte Zustand eingeschaltet und die Umschaltm"oglichkeit entfernt +% werden. Dies kann jedoch erst am Ende der Class geschehen. +% \begin{macrocode} +\DeclareOption{pointednumbers} + {\AtEndOfClass{\@altsecnumformattrue + \global\let\@altsecnumformatfalse\@altsecnumformattrue}} +\DeclareOption{pointednumber} + {\AtEndOfClass{\@altsecnumformattrue + \global\let\@altsecnumformatfalse\@altsecnumformattrue} + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} + {undefined option `pointednumber' instead of `pointednumbers'} + {You've used the class-option `pointednumber'.\MessageBreak + This name was an implementation-error at versions from 2.3h till + 2.4f.\MessageBreak + The correct name is `pointednumbers'. + Change this at your document.\MessageBreak + If you'll continue, the option `pointednumbers' will be used.}} +\DeclareOption{pointlessnumbers} + {\AtEndOfClass{\@altsecnumformatfalse + \global\let\@altsecnumformattrue\@altsecnumformatfalse}} +\DeclareOption{pointlessnumber} + {\AtEndOfClass{\@altsecnumformatfalse + \global\let\@altsecnumformattrue\@altsecnumformatfalse} + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} + {undefined option `pointlessnumber' instead of `pointlessnumbers'} + {You've used the class-option `pointlessnumber'.\MessageBreak + This name was an implementation-error at versions from 2.3h till + 2.4f.\MessageBreak + The correct name is `pointlessnumbers'. + Change this at your document.\MessageBreak + If you'll continue, the option `pointlessnumbers' will be used.}} +% \end{macrocode} +% \end{option} +% \end{option} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% \subsubsection{Optionen zur Steuerung der "Uberschriften} +% +% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur +% die Steuerung der "Uberschriften. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{option}{bigheadings} +% \changes{v2.3h}{1996/01/20}{Neue Option} +% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei +% Verwendung des alten, falschen Namens +% wird ein Fehler ausgegeben} +% \begin{macro}{\@bigheadings} +% \begin{option}{normalheadings} +% \changes{v2.3h}{1996/01/20}{Neue Option} +% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei +% Verwendung des alten, falschen Namens +% wird ein Fehler ausgegeben} +% \begin{macro}{\@normalheadings} +% \begin{option}{smallheadings} +% \changes{v2.3h}{1996/01/20}{Neue Option} +% \changes{v2.4g}{1996/11/04}{Die Option hei"st nun wirklich so. Bei +% Verwendung des alten, falschen Namens +% wird ein Fehler ausgegeben} +% \begin{macro}{\@smallheadings} +% Neuerdings kann zwischen verschiedenen "Uberschriftgr"o"sen umgeschaltet +% werden, wobei die bisherige Gr"o"se als gro"s gilt und +% voreingestellt wird. +% \changes{v2.3h}{1996/01/20}{Die Gr"o"se von \cs{chapter} um eine Stufe +% veringert.} +% \changes{v2.3h}{1996/01/20}{Verwendung von \cs{chapterheadstartvskip} +% und \cs{chapterheadendvskip} an Stelle von +% festen vertikalen Abst"anden am Anfang und +% am Ende eines Kapitels.} +% \changes{v2.7c}{2000/01/19}{Vertikale Abst"ande nach der +% Kapitel"uberschrift geringf"ugig +% ver"andert und mit Leim versehen, +% um mit \cs{flushbottom} zu besseren +% Ergebnissen zu gelangen.} +% \begin{macrocode} +\newcommand\@bigheadings + {\AtEndOfClass{ +%<*scrbook|scrreprt> + \renewcommand*{\chapterheadstartvskip}{\vspace*{2.3\baselineskip}} + \renewcommand*{\chapterheadendvskip}{\vspace{1.725\baselineskip + \@plus .115\baselineskip \@minus .192\baselineskip}} +%</scrbook|scrreprt> + \let\size@part\Huge + \let\size@partnumber\huge +%<scrbook|scrreprt> \let\size@chapter\huge + \let\size@section\Large + \let\size@subsection\large + \let\size@subsubsection\normalsize + \let\size@paragraph\normalsize + \let\size@subparagraph\normalsize}} +\DeclareOption{bigheadings}{\@bigheadings} +\DeclareOption{bigheading}{\@bigheadings + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} + {undefined option `bigheading' instead of `bigheadings'} + {You've used the old option name `bigheading'!\MessageBreak + The correct name of the option is `bigheadings'.\MessageBreak + The old name was an implementation error from\MessageBreak + version 2.3h till 2.4f.\MessageBreak + You should change this at your document!\MessageBreak + If you'll continue, option `bigheadings' will be used.}} +\newcommand\@normalheadings + {\AtEndOfClass{ +%<*scrbook|scrreprt> + \renewcommand*{\chapterheadstartvskip}{\vspace*{2\baselineskip}} + \renewcommand*{\chapterheadendvskip}{\vspace{1.5\baselineskip + \@plus .1\baselineskip \@minus .167\baselineskip}} +%</scrbook|scrreprt> + \let\size@part\huge + \let\size@partnumber\huge +%<*scrbook|scrreprt> + \let\size@chapter\LARGE + \let\size@section\Large + \let\size@subsection\large +%</scrbook|scrreprt> +%<*scrartcl> + \let\size@section\large + \let\size@subsection\normalsize +%</scrartcl> + \let\size@subsubsection\normalsize + \let\size@paragraph\normalsize + \let\size@subparagraph\normalsize}} +\DeclareOption{normalheadings}{\@normalheadings} +\DeclareOption{normalheading}{\@normalheadings + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} + {undefined option `normalheading' instead of `normalheadings'} + {You've used the old option name `normalheading'!\MessageBreak + The correct name of the option is `normalheadings'.\MessageBreak + The old name was an implementation error from\MessageBreak + version 2.3h till 2.4f.\MessageBreak + You should change this at your document!\MessageBreak + If you'll continue, option `normalheadings' will be used.}} +\newcommand\@smallheadings + {\AtEndOfClass{ +%<*scrbook|scrreprt> + \renewcommand*{\chapterheadstartvskip}{\vspace*{1.8\baselineskip}} + \renewcommand*{\chapterheadendvskip}{\vspace{1.35\baselineskip + \@plus 0.09\baselineskip \@minus .15\baselineskip}} +%</scrbook|scrreprt> + \let\size@part\LARGE + \let\size@partnumber\LARGE +%<*scrbook|scrreprt> + \let\size@chapter\Large + \let\size@section\large +%</scrbook|scrreprt> +%<*scrartcl> + \let\size@section\normalsize +%</scrartcl> + \let\size@subsection\normalsize + \let\size@subsubsection\normalsize + \let\size@paragraph\normalsize + \let\size@subparagraph\normalsize}} +\DeclareOption{smallheadings}{\@smallheadings} +\DeclareOption{smallheading}{\@smallheadings + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} + {undefined option `smallheading' instead of `smallheadings'} + {You've used the old option name `smallheading'!\MessageBreak + The correct name of the option is `smallheadings'.\MessageBreak + The old name was an implementation error from\MessageBreak + version 2.3h till 2.4f.\MessageBreak + You should change this at your document!\MessageBreak + If you'll continue, option `smallheadings' will be used.}} +% \end{macrocode} +% \end{macro} +% \end{option} +% \end{macro} +% \end{option} +% \end{macro} +% \end{option} +% +% +% \begin{option}{chapterprefix} +% \changes{v2.8}{2001/06/15}{Neu} +% \begin{option}{nochapterprefix} +% \changes{v2.8}{2001/06/15}{Neu} +% Normalerweise verwenden |scrbook.cls| und |scrreprt.cls| nicht die +% enorm gro"sen "Uberschriften von |book.cls| und |report.cls|, die mit +% einem Absatz "`Kapitel \emph{Nummer}"' beginnen. Mit der Option +% |chapterprefix| kann dies jetzt wieder aktiviert werden. Die Option, +% zur Deaktivierung hei"st entsprechend |nochapterprefix|. Um f"ur +% Spezialanwendungen auch innerhalb des Dokuments eine Umschaltung zu +% erm"oglichen bzw. f"ur die Optionen "`appendixprefix"' und +% "`noappendixprefix"' erfolgt die Umschaltung durch einen Schalter. +% \begin{macro}{\if@chapterprefix} +% \begin{macro}{\@chapterprefixtrue} +% \begin{macro}{\@chapterprefixfalse} +% \begin{macrocode} +%<*scrbook|scrreprt> +\newif\if@chapterprefix +\DeclareOption{chapterprefix}{\@chapterprefixtrue} +\DeclareOption{nochapterprefix}{\@chapterprefixfalse} +%</scrbook|scrreprt> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% \end{option} +% +% +% \begin{option}{appendixprefix} +% \changes{v2.8}{2001/06/15}{Neu} +% \begin{option}{noappendixprefix} +% \changes{v2.8}{2001/06/15}{Neu} +% Will man abweichend von den Optionen |chapterprefix| und +% |nochapterprefix| die gro"sen "Uberschriften f"ur den Anhang +% aktivieren oder deaktivieren, so kann man das mit dieser Option +% erreichen. Allerdings setzt diese keinen Schalter, sondern ein +% Zusatzmakro, das auch f"ur andere Zwecke genutzt werden kann. +% \begin{macrocode} +%<*scrbook|scrreprt> +\DeclareOption{appendixprefix}{\def\appendixmore{\@chapterprefixtrue}} +\DeclareOption{noappendixprefix}{\def\appendixmore{\@chapterprefixfalse}} +%</scrbook|scrreprt> +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% Allerdings gibt es bei Briefen ebenfalls den Befehl +% |\cleardoublepage|, also auch die zugeh"origen Optionen. +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% \begin{option}{cleardoubleempty} +% \changes{v2.8a}{2001/06/18}{Neu} +% \begin{option}{cleardoubleplain} +% \changes{v2.8a}{2001/06/18}{Neu} +% \begin{option}{cleardoublestandard} +% \changes{v2.8a}{2001/06/18}{Neu} +% \begin{option}{cleardoublepage} +% \changes{v2.8q}{2001/10/17}{Neu bei \texttt{scrlttr2}} +% \changes{v2.8q}{2001/11/06}{\cs{cleardoublestandardpage} statt +% \cs{cleardoublestandard}} +% \begin{macro}{\cleardoublestandardpage} +% \changes{v2.8a}{2001/06/18}{Neu} +% \begin{macro}{\cleardoubleemptypage} +% \changes{v2.8a}{2001/06/18}{Neu} +% \begin{macro}{\cleardoubleplainpage} +% \changes{v2.8a}{2001/06/18}{Neu} +% Bei Verwendung von |twoside| und |openright| bei den Klassen +% |scrbook.cls| und |scrreprt.cls| wird bei |\chapter| implizit +% |\cleardoublepage| ausgef"uhrt. Das f"uhrt ggf. normalerweise zu +% einer linken Seite, auf der noch der Kolumnentitel des vorherigen +% Kapitels und eine Seitenzahl steht. H"aufig wird stattdessen nur +% eine Seitenzahl oder auch gar nichts gew"unscht. Es soll also der +% Seitenstil |plain| oder |empty| verwendet werden. Dies wird mit +% den beiden neuen Optionen erm"oglicht. Dazu werden auch gleich drei +% neue Makros definiert: +% \begin{macrocode} +\newcommand*{\cleardoublestandardpage}{} +\let\cleardoublestandardpage\cleardoublepage +\newcommand*{\cleardoubleemptypage}{\clearpage% + {\thispagestyle{empty}\cleardoublestandardpage}} +\newcommand*{\cleardoubleplainpage}{\clearpage% + {\thispagestyle{plain}\cleardoublestandardpage}} +%<*!scrlettr> +\DeclareOption{cleardoubleempty}{% + \let\cleardoublepage\cleardoubleemptypage} +\DeclareOption{cleardoubleplain}{% + \let\cleardoublepage\cleardoubleplainpage} +\DeclareOption{cleardoublestandard}{% + \let\cleardoublepage\cleardoublestandardpage} +%</!scrlettr> +%<*scrlettr> +\DeclareOption{cleardoubleempty}{% + \@ObsoleteOption{cleardoublepage=empty}} +\DeclareOption{cleardoubleplain}{% + \@ObsoleteOption{cleardoublepage=plain}} +\DeclareOption{cleardoublestandard}{% + \@ObsoleteOption{cleardoublepage=standard}} +\KOMA@key{cleardoublepage}{% + \begingroup% + \def\@tempc{% + \endgroup% + \ClassError{% + scrlttr2% + }{You've used an unknown switch value}{% + You've tried to set switch `cleardoublepage' to value + `#1', but\MessageBreak + allowed switch values are `emtpy', `plain' and + `standard' only.}} + \edef\@tempa{#1}% + \def\@tempb{empty}\ifx\@tempa\@tempb% + \def\@tempc{\endgroup% + \let\cleardoublepage\cleardoubleemptypage}\fi + \def\@tempb{plain}\ifx\@tempa\@tempb% + \def\@tempc{\endgroup% + \let\cleardoublepage\cleardoubleplainpage}\fi + \def\@tempb{standard}\ifx\@tempa\@tempb% + \def\@tempc{\endgroup% + \let\cleardoublepage\cleardoublestandardpage}\fi + \@tempc} +%</scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% \end{option} +% \end{option} +% \end{option} +% +% +% \subsubsection{Optionen zur Beeinflussung des Inhaltsverzeichnisses} +% +% In Briefen gibt es keine Gliederung also auch keine Optionen f"ur +% die Beinflussung des Inhaltsverzeichnisses. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{option}{liststotoc} +% \changes{v2.3h}{1995/01/21}{Neue Option} +% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}} +% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in +% \cs{float@listhead}} +% Die Option sorgt daf"ur, da"s das Abbildungs- und das +% Tabellenverzeichnis im Inhalsverzeichnis aufgef"uhrt werden. Dazu +% muss nur \cs{float@listhead} umdefiniert werden. +% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch \cs{listtablename} +% ersetzt.} +% \begin{macro}{\float@listhead} +% \begin{macrocode} +\DeclareOption{liststotoc}{% + \AtEndOfClass{% + \renewcommand*{\float@listhead}[1]{% +%<scrartcl> \addsec{#1} +%<!scrartcl> \addchap{#1} + \@mkboth{#1}{#1}% + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc% + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}% + \fi% + }} + } +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{liststotocnumbered} +% \changes{v2.8q}{2002/04/08}{dem langj"ahrigen Druck nachgegeben} +% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel} +% Die Option sorgt daf"ur, da"s das Abbildungs- und das +% Tabellenverzeichnis nummerierte Kapitel/Abschnitte werden. Dazu +% muss nur \cs{float@listhead} umdefiniert werden. Ich halte diese +% Option selbst f"ur wenig sinnvoll. +% \begin{macro}{\float@listhead} +% \begin{macrocode} +\DeclareOption{liststotocnumbered}{% + \AtEndOfClass{% + \renewcommand*{\float@listhead}[1]{% +%<scrartcl> \section{#1} +%<!scrartcl> \chapter{#1} +%<scrartcl> \@mkboth{\sectionmarkformat #1}{\sectionmarkformat #1}% +%<!scrartcl> \@mkboth{\chaptermarkformat #1}{\chaptermarkformat #1}% + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc% + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}% + \fi% + }} + } +% \end{macrocode} +% \end{macro} +% \end{option} +% +% \begin{option}{bibtotoc} +% \changes{v2.3h}{1995/01/21}{Neue Option.} +% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingef"ugt.} +% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingef"ugt.} +% \changes{v2.7}{2001/01/03}{Klammerung koorigiert.} +% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die +% thebibliography-Umgebung verschoben} +% Die Option sorgt daf"ur, da"s das Literaturverzeichnis im +% Inhaltsverzeichnis aufgef"uhrt wird. +% \begin{option}{bibtotocnumbered} +% \changes{v2.3h}{1995/01/21}{Neue Option.} +% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingef"ugt.} +% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingef"ugt.} +% \changes{v2.7}{2001/01/03}{Klammerung koorigiert.} +% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet.} +% \changes{v2.7i}{2001/05/17}{\cs{chapter} statt \cs{addchap}} +% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die +% thebibliography-Umgebung verschoben} +% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel} +% Wobei auch eine normal numerierte Variante m"oglich ist. +% \begin{macro}{\bib@heading} +% \begin{macrocode} +\DeclareOption{bibtotoc} + {\AtEndOfClass{% + \renewcommand*\bib@heading{% +%<*scrartcl> + \addsec{\refname} + \@mkboth{\refname}{\refname} +%</scrartcl> +%<*scrbook|scrreprt> + \addchap{\bibname} + \@mkboth{\bibname}{\bibname} +%</scrbook|scrreprt> + }}} +\DeclareOption{bibtotocnumbered} + {\AtEndOfClass{% + \renewcommand*\bib@heading{% +%<*scrartcl> + \section{\refname} + \@mkboth{\sectionmarkformat \refname}{\sectionmarkformat \refname} +%</scrartcl> +%<*scrbook|scrreprt> + \chapter{\bibname} + \@mkboth{\chaptermarkformat \bibname}{\chaptermarkformat \bibname} +%</scrbook|scrreprt> + }}} +% \end{macrocode} +% \end{macro} +% \end{option} +% \end{option} +% +% \begin{option}{idxtotoc} +% \changes{v2.3h}{1995/01/21}{Neue Option.} +% Die Option sorgt daf"ur, da"s der Index auch im Inhaltsverzeichnis +% erscheint. +% \begin{macro}{\idx@heading} +% Dazu wird das interne Makro |\idx@heading| umdefiniert, "uber das +% die "uberschrift gesetzt und der Kolumnentitel angepa"st wird. +% \changes{v2.4c}{1996/04/04}{Kolumnentitel werden nun korrekt +% behandelt} +% \changes{v2.4g}{1996/11/04}{Index auch bei scrartcl wieder +% zweispaltig} +% \changes{v2.6c}{2000/06/10}{Im Index kann nach der "Uberschrift +% eine Preambel gesetzt werden} +% \changes{v2.7a}{2001/01/04}{F"ur \texttt{scrbook} und +% \texttt{scrreprt} die Link-Erzeugung mit \texttt{hyperref} +% verbessert} +% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die +% theindex-Umgebung verschoben} +% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch +% \cs{if@openright} ersetzt} +% An dieser Stelle m"u"s daf"ur gesorgt werden, da"s im Falle von +% \texttt{scrbook} und \texttt{scrreprt} das Makro \cs{@schapter} verwendet +% wird. Damit dies hier m"oglich ist mu"sten tiefreifendere "Anderungen am +% \LaTeX-Kernel bzw. am Gliederungsbefehl |\chapter| vorgenommen werden. +% Die urspr"ungliche Definition sah so aus: +% \begin{verbatim} +% \renewcommand*\idx@heading{% +% \if@twoside\cleardoublepage\else\clearpage\fi% +% \@mkboth{\indexname}{\indexname}% +% <scrreprt|scrbook> \addcontentsline{toc}{chapter}{\indexname}% +% \twocolumn[% +% <scrartcl> \addsec +% <scrreprt|scrbook> \@makeschapterhead +% {\indexname}\index@preamble]% +% } +% \end{verbatim} +% Die neue Definition wurde wie folgt ge"andert: +% \begin{macrocode} +\DeclareOption{idxtotoc} + {\AtEndOfClass{% + \renewcommand*\idx@heading{% +%<scrreprt|scrbook> \if@openright\cleardoublepage\else\clearpage\fi% +%<scrartcl> \twocolumn[\addsec{\indexname}] +%<scrreprt|scrbook> \twocolumn[\addchap{\indexname}] + \@mkboth{\indexname}{\indexname}% + }}} +% \end{macrocode} +% \end{macro} +% \end{option} +% +% +% \begin{option}{tocleft} +% \changes{v2.8q}{2001/11/14}{Neue Option} +% \begin{option}{tocindent} +% \changes{v2.8q}{2001/11/14}{Neue Option} +% Optionen f"ur zwei unterschiedliche Darstellungen des +% Inhaltsverzeichnisses. Die Variante |tocindent| ist die altbekannte +% Variante. Bei |tocleft| hingegen wird eine tabellenartige Form +% verwendet, bei der die Nummern, Texte und Seitenzahlen jeweils +% untereinander stehen. Der f"ur die Nummern ben"otigte Platz wird +% dabei automatisch ermittelt. +% \begin{macro}{\if@tocleft} +% \changes{v2.8q}{2001/11/14}{Neuer Schalter} +% \begin{macro}{\@toclefttrue} +% \begin{macro}{\@tocleftfalse} +% Die Wahl der Darstellungsart wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@tocleft +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{tocleft}{\@toclefttrue} +\DeclareOption{tocindent}{\@tocleftfalse} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{option}{listsleft} +% \changes{v2.8q}{2001/11/14}{Neue Option} +% \begin{option}{listsindent} +% \changes{v2.8q}{2001/11/14}{Neue Option} +% Optionen f"ur zwei unterschiedliche Darstellungen der +% Verzeichnisses von Gleitumgebungen. Die Variante |listindent| ist +% die altbekannte Variante mit einem festen Einzug der Nummer. Bei +% |listleft| hingegen wird der f"ur die Nummern ben"otigte Platz +% automatisch ermittelt. +% \begin{macro}{\if@dynlist} +% \changes{v2.8q}{2001/11/14}{Neuer Schalter} +% \begin{macro}{\@dynlisttrue} +% \begin{macro}{\@dynlistfalse} +% Die Wahl der Darstellungsart wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@dynlist +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\DeclareOption{listsleft}{\@dynlisttrue} +\DeclareOption{listsindent}{\@dynlistfalse} +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Briefspezifische Optionen f"ur das Adressfenster} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{option}{addrfield} +% \changes{v2.8q}{2001/10/09}{Neu} +% Das Adressfeld f"ur Fensterumschl"age kann mit |addrfield| ein- und +% ausgeschaltet werden +% \begin{macro}{\if@afield} +% \begin{macro}{\if@afieldtrue} +% \begin{macro}{\if@afieldfalse} +% Die Speicherung erfolgt wiederum in einem Schalter. +% \begin{macrocode} +\newif\if@afield\@afieldtrue +\KOMA@key{addrfield}[true]{\@setif[@afield]{addrfield}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{backaddress} +% \changes{v2.8q}{2002/01/22}{Neu} +% Im Adressfeld kann die R"ucksendeadresse gesetzt werden. Dies +% geschieht nun nicht mehr allein durch Definition einer +% R"ucksendeadresse, sondern auch durch eine Option. +% \begin{macro}{\if@baddr} +% \begin{macro}{\@baddrtrue} +% \begin{macro}{\@baddrfalse} +% Die Einstellung der Option wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@baddr\@baddrtrue +\KOMA@key{backaddress}[true]{\@setif[@baddr]{backaddress}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{subject} +% \changes{v2.8q}{2001/10/09}{Neu} +% Ein Betreff-Titel kann mit |subject| ein- und abgeschaltet +% werden. In England und Frankreich scheint es teilweise "ublich zu +% sein, den Betreff erst nach der Anrede und daf"ur zentriert zu +% setzen\footnote{Ich kann mir nur m"uhsahm eine Bemerkung dazu +% verkneifen.}. +% Deshalb kann alternativ zum Einschalten des Betreff-Titels hier auch +% dies aktiviert werden. +% \begin{macro}{\if@subj} +% \begin{macro}{\@subjtrue} +% \begin{macro}{\@subjfalse} +% \begin{macro}{\if@subjafter} +% \begin{macro}{\@subjaftertrue} +% \begin{macro}{\@subjafterfalse} +% Die Speicherung erfolgt in zwei Schaltern. +% \begin{macrocode} +\newif\if@subj +\newif\if@subjafter +\KOMA@key{subject}[true]{% + \begingroup + \edef\@tempa{#1}% + \def\@tempb{afteropening}% + \ifx\@tempa\@tempb\endgroup\@subjaftertrue + \else + \def\@tempb{beforeopening}% + \ifx\@tempa\@tempb\endgroup\@subjafterfalse + \else + \endgroup\def\@setif@alsoerr{, `afteropening' and + `beforeopening'\MessageBreak}% + \@setxif[@subj]{subject}{#1}{titled}{untitled}% + \fi + \fi + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% \begin{option}{locfield} +% \changes{v2.8q}{2001/10/09}{Neu} +% Mit Hilfe der Optione |locfield| kann der Platz neben dem Adressfeld +% gro"s oder klein gew"ahlt werden. +% \begin{macro}{\if@bigloc} +% \begin{macro}{\@bigloctrue} +% \begin{macro}{\@biglocfalse} +% Die Einstellung wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@bigloc +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\KOMA@key{locfield}[wide]{\@setxif[@bigloc]{locfield}{#1}{wide}{narrow}} +\DeclareOption{wlocfield}{\@ObsoleteOption{locfield=wide}} +\DeclareOption{slocfield}{\@ObsoleteOption{locfield=narrow}} +% \end{macrocode} +% \end{option} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% \subsection{Briefspezifische Optionen f"ur Faltmarken} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% +% \begin{option}{foldmarks} +% \changes{v2.8q}{2001/09/10}{Neu} +% Die Faltmarken k"onnen mit |foldmarks| aktiviert und deaktiviert +% werden. +% \begin{macro}{\if@fold} +% \begin{macro}{\@foldtrue} +% \begin{macro}{\@foldfalse} +% Ob Faltmarken gesetzt werden sollen oder nicht, wird in einem +% Schalter gespeichert. +% \begin{macrocode} +\newif\if@fold\@foldtrue +\KOMA@key{foldmarks}[true]{\@setif[@fold]{foldmarks}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{option} +% +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% \subsubsection{Briefspezifische Optionen f"ur die Gesch"aftszeile} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{option}{numericaldate} +% \changes{v2.8q}{2001/10/07}{Neue Option (an Stelle von +% \texttt{scrdate} und \texttt{orgdate})} +% Es kann zwischen dem Originaldatum, das beispielsweise von +% \texttt{german.sty} definiert wird, und dem \texttt{scrlttr2}-Datum +% gew"ahlt werden. Nat"urlich gibt es diese Optionen nur bei Briefen. +% \begin{macro}{\if@orgdate} +% \begin{macro}{\@orgdatetrue} +% \begin{macro}{\@orgdatefalse} +% Die Einstellung wird in einem Schalter gespeichert. +% \begin{macrocode} +\newif\if@orgdate\@orgdatetrue +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Dummerweise besitzt der alte Schalter genau die gegenteilige +% Bedeutung der Option, deshalb muss der Schalter zweimal invertiert +% werden. +% \begin{macrocode} +\KOMA@key{numericaldate}[true]{% + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi + \@setif[@orgdate]{numericaldate}{#1} + \if@orgdate\@orgdatefalse\else\@orgdatetrue\fi +} +\DeclareOption{scrdate}{\@ObsoleteOption{numericaldate=true}} +\DeclareOption{orgdate}{\@ObsoleteOption{numericaldate=false}} +% \end{macrocode} +% \end{option} +% +% +% \begin{option}{refline} +% \changes{v2.8n}{2001/09/08}{Neue Option} +% Kopf und Fu"s der ersten Seite sind normalweise so breit, dass sie +% zur Adresse des Empf"angers passen. F"ur die Gesch"aftszeile gibt es +% zwei Alternativen, eine breite und eine, deren Breite der Textbreite +% entspricht. Voreingestellt ist die Textbreite. +% \begin{macro}{\if@refwide} +% \changes{v2.8n}{2001/09/08}{Neuer Schalter} +% \begin{macro}{\@refwidetrue} +% \begin{macro}{\@refwidefalse} +% Gespeichert wird die Information in einem Schalter. +% \begin{macrocode} +\newif\if@refwide +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\KOMA@key{refline}[wide]{\@setxif[@refwide]{refline}{#1}{wide}{narrow}} +% \end{macrocode} +% \end{option} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsubsection{Optionen f"ur den Satzspiegel} +% +% \changes{v2.6}{2000/01/04}{ab jetzt sind auch die Optionen f"ur die +% Schriftgr"o"sen variabel.} +% \begin{option}{BCOR} +% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar.} +% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus.} +% \begin{option}{DIV} +% \changes{v2.2a}{1995/01/25}{nun als Option verf"ugbar} +% \changes{v2.2c}{1995/05/25}{nicht mehr im Kompatibilit"atsmodus} +% Die Optionen |BCOR|, |DIV| und die Papiergr"o"sen m"ussen f"ur ihre +% Weiterleitung an das +% \emph{typearea}-package gesondert erkannt werden. Da die Optionen +% Parameter besitzen, k"onnen sie nur mit |\DeclareOption*| verarbeitet +% werden. Im Kompatibilit"atsmodus erfolgt eine gesonderte Behandlung. +% \begin{macrocode} +%<!scrlettr>\if@compatibility\else + \DeclareOption*{% +%<*scrlettr> +% \end{macrocode} +% Bei der Briefklasse tritt eine Besonderheit ein. Hier ist es +% m"oglich, spezielle \texttt{lco}-Dateien zu definieren, die "uber +% Optionen geladen werden k"onnen. Die unterschiedlichen Brieftypen +% sind ein Fall f"ur solche \emph{\textbf{l}etter \textbf{c}lass +% \textbf{o}ption} Dateien. Wurde eine solche Datei geladen, ist die +% Option nat"urlich auch nicht mehr unbenutzt. +% \changes{v2.8q}{2001/10/17}{Endung "`.lco"' beim +% \cs{LoadLetterOption}-Aufruf in +% \cs{DeclareOption*} entfernt} +% \changes{v2.8q}{2001/10/18}{\cs{expandafter} beim Aufruf von +% \cs{KOMAoptions} erg"anzt} +% \begin{macrocode} + \let\scr@save@KV@errx=\KV@errx% + \IfFileExists{\CurrentOption.lco}{% + \begingroup\edef\@tempa{\endgroup% + \noexpand\AtEndOfClass{% + \noexpand\LoadLetterOption{\CurrentOption}}% + }% + \@tempa\let\KV@errx\@gobble + }{% + \renewcommand*{\KV@errx}[1]{\OptionNotUsed} + } +% \end{macrocode} +% An dieser Stelle muss nun die Expansion von \verb+\CurrentOption+ +% erzwungen werden. Alternativ k"onnte dies auch in +% \verb+\KOMAoptions+ erledigt werden. +% \begin{macrocode} + \expandafter\KOMAoptions\expandafter{\CurrentOption} + \let\KV@errx=\scr@save@KV@errx% + \let\scr@save@KV@errx=\relax% +%</scrlettr> +%<!scrlettr> \x@paper + } +%<!scrlettr>\fi +% \end{macrocode} +% \end{option} +% \end{option} +% +% +% \subsubsection{Optionenauswahl} +% \changes{v2.0e}{1994/09/04}{Standardoption \texttt{abstactoff} durch +% \texttt{abstractoff} ersetzt.} +% \changes{v2.2f}{1995/06/14}{\cs{ExecuteOptions} von Leerzeichen u."a. +% befreit.} +% \changes{v2.8q}{2001/10/06}{\texttt{scrlttr2} verwendet nicht mehr +% die Option \texttt{KOMAold}, sondern +% \texttt{DIN} als Standard} +% Es m"ussen die Standardoptionen festgelegt und alle Optionen ausgew"ahlt +% werden. Anschlie"send ist die Schriftgr"o"seneinstellung vorzunehmen +% und der Seitenspiegel mit Hilfe des |typearea|-packages zu berechnen. +% \begin{macrocode} +\ExecuteOptions{% +%<scrartcl,scrreprt,scrbook> final,11pt,onecolumn% +%<scrartcl,scrreprt,scrbook> ,headnosepline,footnosepline,bigheadings% +%<scrartcl> ,oneside,abstractoff% +%<scrreprt> ,nochapterprefix,oneside,openany,abstractoff% +%<scrbook> ,nochapterprefix,twoside,openright% +} +\ProcessOptions\relax +%<scrlettr>\AfterProcessOptions@hook +%<scrlettr>\let\AfterProcessOptions@hook=\undefined +% \end{macrocode} +% +% \subsubsection{Laden von Dateien} +% \changes{v2.8q}{2001/11/17}{das Paket \texttt{scrlfile} wird +% ben"otigt} +% +% Ab Version 2.8q ist das Paket \texttt{scrlfile} Bestandteil von +% \textsf{KOMA-Script}. Da es von den Klassen beispielsweise zur +% Verbesserung der Zusammenarbeit mit |caption2| ben"otigt wird, wird +% es hier geladen. Obwohl die Briefklasse es derzeit nicht ben"otigt, +% wird es aus Gr"unden der Einheitlichkeit auch f"ur diese geladen. +% \begin{macrocode} +\RequirePackage{scrlfile} +% \end{macrocode} +% +% \subsubsection{Allgemeine Schalter} +% \begin{macro}{\if@restonecol} +% \begin{macro}{\@restonecoltrue} +% \begin{macro}{\@restonecolfalse} +% Damit innerhalb einer Umgebung lokal auf ein- oder zweispaltigen +% Satz umgeschaltet werden kann, wird ein Schalter ben"otigt. Dieser +% wird dann daf"ur verwendet, sich zu merken, dass eine Umschaltung +% stattgefunden hat und am Ende der Umgebung wieder aufzuheben +% ist. Der Schalter wird nicht in Umgebungen verwendet, die +% geschachtelt werden. Verwendung findet er beispielsweise f"ur +% Titelseiten und das Inhaltsverzeichnis. +% \begin{macrocode} +\newif\if@restonecol +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@mainmatter} +% \begin{macro}{\@mainmattertrue} +% \begin{macro}{\@mainmatterfalse} +% \changes{v2.3a}{1995/07/08}{\cs{if@mainmatter} Anforderung +% verschoben.} +% "Uber diesen Schalter wird bei Buchklassen festgelegt, ob wir uns im +% Hauptteil des Dokuments befinden oder nicht. Die eigentliche +% Umschaltung geschieht mit Hilfe der Befehle \cs{frontmatter}, +% \cs{mainmatter}, \cs{backmatter}. Ohne Umschaltung befinden wir uns +% bereits im Hauptteil. +% \begin{macrocode} +%<scrbook>\newif\if@mainmatter\@mainmattertrue +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Schriftgr"o"seninitialisierung} +% \changes{v2.6}{2000/01/04}{Das Einlesen der Schriftgr"o"sen-Options-Datei +% funktioniert nun mit diversen Gr"o"sen.} +% \begin{macrocode} +\@tempcnta=10 +\advance\@tempcnta by\@ptsize\relax +\xdef\@tempa{% +%<!scrbook>size% +%<scrbook>bk% +\the\@tempcnta.clo} +\InputIfFileExists{\@tempa}{}{% +%<*scrbook> + \xdef\@tempb{size\the\@tempcnta.clo} + \InputIfFileExists{\@tempb}{% + \ClassWarning{scrbook}{File `\@tempa' not found!\MessageBreak + Used `\@tempb' instead}}{ +%</scrbook> + \ClassError +%<scrbook> {scrbook} +%<scrreprt> {scrreprt} +%<scrartcl> {scrartcl} +%<scrlettr> {scrlttr2} + {File `\@tempa' not found!\MessageBreak + This error is fatal!} + {To every fontsize you want to select by class option,\MessageBreak + you need a corresponding +%<scrbook> bk-class-option-file or\MessageBreak at least a + size-class-option-file declaring all\MessageBreak + the macros based on fontsize.\MessageBreak + Ask a wizzard for more information or use another + fontsize.\MessageBreak + You cannot continue!} + \batchmode \csname @@end\endcsname \end +%<scrbook> } +} +% \end{macrocode} +% +% \begin{option}{fontsize} +% \changes{v2.8q}{2001/10/17}{nach dem Laden der Schriftgr"o"sendatei +% nicht mehr zul"assig} +% Ab hier darf nat"urlich die Option \texttt{fontsize} nicht mehr +% verwendet werden! +% \begin{macrocode} +%<*scrlettr> +\KOMA@key{fontsize}{% + \begingroup + \setlength{\@tempdima}{#1} + \addtolength{\@tempdima}{-10\p@} + \ifnum \@tempdima=\@ptsize + \else + \ClassError{% + scrlttr2% + }{option `fontsize' not allowed\MessageBreak + after loading sizeX.clo file}{% + Maybe you've used option `fontsize' at + \string\KOMAoptions.\MessageBreak + You should set this option at \string\documentclass.} + \fi + \endgroup + } +%</scrlettr> +% \end{macrocode} +% \end{option} +% +% \subsubsection{Satzspiegel einstellen} +% \changes{v2.4}{1996/02/25}{Es wird jetzt explizit nach einem aktuellen +% typearea verlangt.} +% \changes{v2.8n}{2001/09/06}{Es wird wirklich nach einem aktuellen +% typearea verlangt} +% Zun"achst werden die ganzen Befehle, die sowohl in den Klassen als +% auch in \texttt{typearea} definiert sind, wieder gel"oescht. Dies +% ist allerdings bei der Briefklasse nicht notwendig, das diese anders +% arbeitet. +% \begin{macrocode} +%<*!scrlettr> +\let\test@number =\undefined +\let\gobble@till@next =\undefined +\let\@BCOR =\undefined +\let\@@BCOR =\undefined +\let\@DIV =\undefined +\let\@@DIV =\undefined +\let\@headlines =\undefined +\let\@@headlines =\undefined +\let\x@paper =\undefined +\let\x@@paper =\undefined +%</!scrlettr> +% \end{macrocode} +% \begin{macro}{\scr@file@date@version} +% \changes{v2.8n}{2001/09/06}{Neu} +% Es muss jeweils die gleiche Version von \texttt{typearea} geladen +% werden, die auch von der jeweiligen Klasse geladen wurde. +% \begin{macrocode} +\newcommand*{\scr@file@date@version}{} +\def\scr@file@date@version#1/#2/#3 #4 #5\@nil{#1/#2/#3 #4} +\RequirePackage{typearea}[\expandafter\expandafter\expandafter% + \scr@file@date@version\csname ver@% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% +%<scrlettr> scrlttr2% + .cls\endcsname\@nil] +% \end{macrocode} +% \end{macro} +% +% Bei der Briefklasse gibt es jetzt noch ein paar Besonderheit. +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{Length}{oddsidemargin} +% \begin{Length}{evensidemargin} +% Der rechte und der linke Rand ohne Bindekorrektur auf bei +% beidseitigem Layout gleich gro"s. Die Bindekorrektur wird +% selbstverst"andlich wieder dem ungeraden Rand zugeschlagen. +% \begin{macrocode} +\if@twoside + \addtolength{\oddsidemargin}{\evensidemargin} + \addtolength{\oddsidemargin}{-\ta@bcor} + \setlength{\evensidemargin}{.5\oddsidemargin} + \setlength{\oddsidemargin}{\evensidemargin} + \addtolength{\oddsidemargin}{\ta@bcor} +\fi +% \end{macrocode} +% \end{Length} +% \end{Length} +% +% \begin{option}{BCOR} +% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach +% dem Laden von \texttt{typearea.sty}} +% \begin{option}{DIV} +% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach +% dem Laden von \texttt{typearea.sty}} +% \begin{option}{headlines} +% \changes{v2.8q}{2001/10/18}{funktioniert auch noch nach +% dem Laden von \texttt{typearea.sty}} +% Nach dem Laden von \texttt{typearea.sty} muss die Funktionsweise +% dieser Optionen ge"andert werden. Bei \texttt{BCOR} und \texttt{DIV} +% ist das einfach. Bei \texttt{headlines} sieht es etwas anders aus. +% \begin{macrocode} +\KOMA@key{BCOR}{\typearea[{#1}]{last}} +\KOMA@key{DIV}{\typearea[current]{#1}} +\KOMA@key{headlines}{% + \def\ta@hh{#1\baselineskip}% + \typearea[current]{last}} +% \end{macrocode} +% \end{option} +% \end{option} +% \end{option} +% +% \begin{option}{paper} +% \changes{v2.8q}{2001/10/17}{funktioniert auch noch nach +% dem Laden von \texttt{typearea.sty}} +% Au"serdem mu"s die \texttt{paper}-Option nun anders funktionieren. +% \begin{macrocode} +\KOMA@key{paper}{% + \begingroup + \edef\@tempc{\noexpand\@tempswatrue% + \noexpand\ifdim\paperwidth=\the\paperwidth\noexpand\else% + \noexpand\@tempswafalse\noexpand\fi% + \noexpand\ifdim\paperheight=\the\paperheight\noexpand\else% + \noexpand\@tempswafalse\noexpand\fi% + } + \edef\@tempa{#1}% + \def\@tempb{letter}\ifx\@tempa\@tempb% + \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{legal}\ifx\@tempa\@tempb% + \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{executive}\ifx\@tempa\@tempb% + \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}% + \else% + \def\ta@opt@err{% + \ClassError{% + scrlttr2% + }{papersize `#1' undefined}{% + You've told me to set KOMA option `paper' to value + `#1',\MessageBreak + but the value `#1' is not allowed to this + option.\MessageBreak + See the KOMA-Script manual for informations about known + papersizes.}% + } + \let\@headlines\ta@opt@err% + \x@@paper #1paperpaper\x@@paper% + \fi\fi\fi + \@tempc% + \if@tempswa% + \ClassInfo{% + scrlttr2% + }{% + change to already set paper size ignored% + } + \let\@tempc\endgroup% + \else% + \ClassWarning{% + scrlttr2% + }{% + you're changing paper size after loading package\MessageBreak + `typearea'. This may be dangerous.\MessageBreak + You should set paper size only at \string\documentclass\space + not\MessageBreak + with \string\KOMAoptions% + } + \edef\@tempc{\endgroup% + \setlength{\paperwidth}{\the\paperwidth}% + \setlength{\paperheight}{\the\paperheight}% + \noexpand\typearea[current]{last}} + \fi + \@tempc% + } +% \end{macrocode} +% \end{option} +% +% Damit sind wir ersteinmal am Ende der Besonderheiten der +% Briefklasse. +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsection{Einige Gr"o"sen} +% +% \changes{v2.8i}{2001/07/22}{\cs{baselinestretch} wird nicht umdefiniert} +% \begin{Length}{lineskip} +% \begin{Length}{normallineskip} +% Minimaler Zeilenabstand: +% \begin{macrocode} +\setlength{\lineskip}{\p@} +\setlength{\normallineskip}{\p@} +% \end{macrocode} +% \end{Length} +% \end{Length} +% +% \begin{Length}{columnsep} +% \begin{Length}{columnseprule} +% Spaltenabstand und Spaltentrennlinie (da die Briefklasse +% zweispaltigen Satz nicht unterst"utzt, entf"allt dies f"ur selbige): +% \begin{macrocode} +%<*!scrlettr> +\setlength{\columnsep}{10\p@} +\setlength{\columnseprule}{\z@} +%</!scrlettr> +% \end{macrocode} +% \end{Length} +% \end{Length} +% +% Absatzabstand und Absatzeinzug: +% \begin{macro}{\parskip} +% \changes{v2.8i}{2001/07/22}{abh"angig von den Optionen} +% \begin{macro}{\parindent} +% \changes{v2.8i}{2001/07/22}{abh"angig von den Optionen} +% \begin{macro}{\parfillskip} +% \begin{macro}{\@listi} +% \begin{macro}{\@listI} +% \begin{macro}{\@listii} +% \begin{macro}{\@listiii} +% \begin{macro}{\@list@extra} +% \changes{v2.8q}{2001/11/06}{Neu} +% \begin{macro}{\@parskip@indent} +% \changes{v2.8q}{2001/11/13}{Neu} +% \changes{v2.9k}{2003/01/03}{\cs{scr@parfillskip} bei +% \texttt{\cs{begin}\{document\}} erneuert} +% \begin{macro}{\footnotesize} +% \changes{v2.9h}{2002/09/03}{etwas robuster} +% \begin{macro}{\small} +% \changes{v2.9h}{2002/09/03}{etwas robuster} +% \begin{macro}{\add@extra@listi} +% \changes{v2.9h}{2002/09/03}{neu (intern)} +% Ab Version 2.8i wird hier optionsabh"angig gearbeitet. Dabei m"ussen +% auch die Befehle bei der Umschaltung der Schriftgr"o"se f"ur +% \cs{small} und \cs{footnotesize} ge"andert werden. +% \begin{macrocode} +\g@addto@macro{\@listi}{\@list@extra} +\let\@listI=\@listi +\g@addto@macro{\@listii}{\@list@extra} +\g@addto@macro{\@listiii}{\@list@extra} +\newcommand*{\add@extra@listi}[1]{% + \expandafter\let\csname #1@listi\endcsname=\@listi + \def\@listi{\csname #1@listi\endcsname\@list@extra}% +} +\g@addto@macro{\footnotesize}{\protect\add@extra@listi{ftns}} +\g@addto@macro{\small}{\protect\add@extra@listi{sml}} +\newcommand*{\@list@extra}{} +%<scrlettr>\renewcommand*{% +%<!scrlettr>\newcommand*{% + \@parskip@indent}{% + \if@parskip + \setlength{\parindent}{\z@}% + \scr@parskip + \scr@parfillskip + \renewcommand*{\@list@extra}{% + \topsep\z@ \parsep\parskip \itemsep\z@}% + \else + \setlength{\parindent}{1em}% + \setlength{\parskip}{\z@ \@plus \p@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \renewcommand*{\@list@extra}{}% + \fi +}% +\@parskip@indent +\AtBeginDocument{% + \if@parskip\ifdim\parfillskip=\z@ \scr@parfillskip\fi\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Die Penalties (genau wie bei den Standardklassen): +% \end{macro} +% \begin{macrocode} +\@lowpenalty = 51 +\@medpenalty =151 +\@highpenalty =301 +% \end{macrocode} +% +% \begin{Counter}{topnumber} +% \begin{macro}{\topfraction} +% \begin{Counter}{bottomnumber} +% \begin{macro}{\bottomfraction} +% \begin{Counter}{totalnumber} +% \begin{macro}{\textfraction} +% \begin{macro}{\floatpagefraction} +% \begin{Counter}{dbltopnumber} +% \begin{macro}{\dbltopfraction} +% \begin{macro}{\dblfloatpagefraction} +% Allgemeine Einstellungen f"ur Flie"sumgebungen (Seitenanteile). Da +% es bei Briefen dergleichen nicht gibt, werden die Werte dort auch +% nicht gesetzt. +% \changes{v2.8n}{2001/09/06}{da Briefe keine Flie"sumgebungen haben, +% werden bei \texttt{scrlttr2} auch keine +% Parameter daf"ur mehr gesetzt} +% \begin{macrocode} +%<*!scrlettr> +\setcounter{topnumber}{2} +\renewcommand*\topfraction{.7} +\setcounter{bottomnumber}{1} +\renewcommand*\bottomfraction{.3} +\setcounter{totalnumber}{3} +\renewcommand*\textfraction{.2} +\renewcommand*\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\renewcommand*\dbltopfraction{.7} +\renewcommand*\dblfloatpagefraction{.5} +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{Counter} +% \end{macro} +% \end{macro} +% \end{Counter} +% \end{macro} +% \end{Counter} +% \end{macro} +% \end{Counter} +% +% +% \subsection{Befehle f"ur den Kompatibilit"atsmodus} +% \begin{macro}{\headincludeon} +% \begin{macro}{\headincludeoff} +% \begin{macro}{\headseplineon} +% \begin{macro}{\headseplineoff} +% \begin{macro}{\footincludeon} +% \begin{macro}{\footincludeoff} +% \begin{macro}{\footseplineon} +% \begin{macro}{\footseplineoff} +% Da die classes des \textsf{KOMA-Script} Pakets nun auch im +% Kompatibilit"atsmodus verwendet werden k"onnen, ben"otigen wir einige +% Befehle, die es bei \textsf{Script 2.0} noch gab. Betroffen sind an +% dieser Stelle nur die Befehle f"ur die Kopf- und +% Fu"szeilentrennlinie und die Einbeziehung von Kopf- und Fu"szeilen +% in den Textbereich bei der Berechnung des Seitenspiegels. Da es +% diese Befehle f"ur die Briefklasse nie gab, werden sie f"ur diese +% auch nicht definiert. +% \changes{v2.0e}{1994/10/12}{Kopf- und Fu"szeilenhandling f"ur den +% Kompatibilit"atsmodus erg"anzt} +% \begin{macrocode} +%<*!scrlettr> +\if@compatibility + \newcommand*\headincludeon{\@hincltrue} + \newcommand*\headincludeoff{\@hinclfalse} + \newcommand*\headseplineon{\@hsltrue \@hincltrue} + \newcommand*\headseplineoff{\@hslfalse \@hinclfalse} + \newcommand*\footincludeon{\@fincltrue} + \newcommand*\footincludeoff{\@finclfalse} + \newcommand*\footseplineon{\@fsltrue \@fincltrue} + \newcommand*\footseplineoff{\@fslfalse \@finclfalse} +\fi +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Kopf- und Fu"szeilendefinition} +% +% \changes{v2.0e}{1994/08/10}{Bei "`scrbook"' gibt es kein einseitiges +% Layout.} +% \changes{v2.3a}{1995/07/08}{Da bei "`book"' seit Version 1.2v die +% Option oneside wieder ein einseitiges +% Layout erzeugt, dieses wieder eingebaut.} +% \begin{macro}{\ps@plain} +% \begin{macro}{\ps@myheadings} +% \begin{macro}{\ps@headings} +% Es wird das Aussehen der Kopf- und Fu"szeilen f"ur die +% Standardseitenstile |empty|, |plain|, |headings| und |myheadings| +% festgelegt. Diese sind bei|scrartcl| abh"angig davon, ob es sich um +% einseitiges oder beidseitiges Layout handelt. +% +% Im Gegensatz zu den Seitenstilen der Standard-classes steht die +% Seitennummer beim \textsf{KOMA-Script} Paket immer in der Fu"szeile. +% Au"serdem sind Trennlinien zwischen Kopf- und Textbereich sowie zwischen +% Text- und Fu"sbereich m"oglich. +% +% Die Kopfzeile wird auch nicht mehr in Gro"sbuchstaben gewandelt. +% +% \changes{v2.2a}{1995/02/07}{Bei "`scrbook"' und "`scrreprt"' Punkt +% hinter der section-Nummer entfernt} +% \changes{v2.2c}{1995/05/25}{Punkt hinter der Kapitelnummer in der +% Kopfzeile entfernt} +% \changes{v2.2c}{1995/05/25}{Nummern in der Kopfzeile auf CJK umgestellt} +% \changes{v2.4f}{1996/10/08}{\cs{strut} in der Kopfzeile eingef"ugt} +% Da sich die Seitenstil f"ur die Briefklasse erheblich von denen +% normalen Seitenstilen unterscheiden, werden diese getrennt +% definiert. +% \begin{macro}{\set@tempdima@hw} +% \changes{v2.8q}{2002/03/28}{Neu (intern)} +% Um nicht st"andig das gleiche schreiben zu m"ussen wird hier ein +% internes Makro verwendet. +% \begin{macrocode} +%<*!scrlettr> +\newcommand*{\set@tempdima@hw}{% + \setlength{\@tempdima}{\textwidth}% + \if@mincl + \addtolength{\@tempdima}{\marginparsep}% + \addtolength{\@tempdima}{\marginparwidth}% + \fi + } +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\if@twoside + \renewcommand*{\ps@plain}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{}% + \renewcommand*{\@oddhead}{}% + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}}% + \newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}} + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss} + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}% +%<*scrartcl> + \renewcommand*{\sectionmark}[1]{% + \markboth {\ifnum \c@secnumdepth >\z@% + \sectionmarkformat\fi ##1}{}} + \renewcommand*{\subsectionmark}[1]{% + \markright {\ifnum \c@secnumdepth >\@ne% + \subsectionmarkformat\fi ##1}}} +%</scrartcl> +%<*scrreprt|scrbook> + \renewcommand*{\chaptermark}[1]{% + \markboth {\ifnum \c@secnumdepth >\m@ne +%<scrbook> \if@mainmatter + \chaptermarkformat\fi +%<scrbook> \fi + ##1}{}}% + \renewcommand*{\sectionmark}[1]{% + \markright {\ifnum \c@secnumdepth >\z@ + \sectionmarkformat\fi + ##1}}} +%</scrreprt|scrbook> + \newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\strut\leftmark\hfil}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}} + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark}}% + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss} + \renewcommand*{\@evenfoot}{% + \set@tempdima@hw\hss\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\thepage\hfil}}}}}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage}}}}\hss}% +%<!scrartcl> \renewcommand*{\chaptermark}[1]{} +%<scrartcl> \renewcommand*{\subsectionmark}[1]{} + \renewcommand*{\sectionmark}[1]{}} +\else + \renewcommand*{\ps@plain}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{}% + \renewcommand*{\@oddhead}{}% + \renewcommand*{\@evenfoot}{}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}}\hss}} + \newcommand*{\ps@headings}{\let\@mkboth\markboth + \renewcommand*{\@evenhead}{}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark\hfil}} + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}\hss}}% +%<*scrartcl> +% \end{macrocode} +% \changes{v2.1b}{1994/12/31}{Im einseitigen Seitenstil +% \cs{markboth} durch +% \cs{markright} ersetzt.} +% \changes{v2.2a}{1995/02/07}{Im einseitigen Seitenstil +% bei "`scrartcl"' und \texttt{oneside} +% \cs{subsectionmark} eingef"ugt.} +% \changes{v2.2a}{1995/02/07}{Im einseitigen Seitenstil +% bei "`scrreprt"' und \texttt{oneside} +% \cs{sectionmark} eingef"ugt.} +% \begin{macrocode} + \renewcommand*{\subsectionmark}[1]{} + \renewcommand*{\sectionmark}[1]{\markright {\ifnum \c@secnumdepth >\z@ + \sectionmarkformat\fi ##1}}} +%</scrartcl> +% \end{macrocode} +% \changes{v2.0e}{1994/08/17}{Im einseitigen Seitenstil +% \cs{markboth} durch +% \cs{markright} ersetzt.} +% \begin{macrocode} +%<*scrreprt|scrbook> + \renewcommand*{\sectionmark}[1]{} + \renewcommand*{\chaptermark}[1]{\markright {\ifnum \c@secnumdepth >\m@ne +%<scrbook> \if@mainmatter + \chaptermarkformat\fi +%<scrbook> \fi + ##1}}} +%</scrreprt|scrbook> + \newcommand*{\ps@myheadings}{\let\@mkboth\@gobbletwo + \renewcommand*{\@evenhead}{}% + \renewcommand*{\@oddhead}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \hb@xt@ \@tempdima{{\headfont\hfil\strut\rightmark\hfil}} + \if@hsl \vskip 1.5\p@ \hrule \fi}}\hss}% + \renewcommand*{\@evenfoot}{}% + \renewcommand*{\@oddfoot}{% + \set@tempdima@hw\hb@xt@ \@tempdima{\vbox{% + \if@fsl \hrule \vskip 3\p@ \fi + \hb@xt@ \@tempdima{{\pnumfont\hfil\thepage\hfil}}}}\hss}% +%<scrartcl> \renewcommand*{\subsectionmark}[1]{}% +%<!scrartcl> \renewcommand*{\chaptermark}[1]{}% + \renewcommand*{\sectionmark}[1]{}} +\fi +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@firsthead} +% \begin{macro}{\@gen@firsthead} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{macro}{\@nexthead} +% \begin{macro}{\@firstfoot} +% \begin{macro}{\@nextfoot} +% \begin{macro}{\pagemark} +% Bei \texttt{scrlttr2} gibt es die "ublichen Seitenstile, allerdings +% ist deren Verhalten etwas anders als gewohnt. Dies ist in den +% Besonderheiten f"ur Briefen begr"undet. +% \begin{macrocode} +%<*scrlettr> +\newcommand*{\@firsthead}{\noindent% + \parbox[b]{\useplength{firstheadwidth}} + {\centering\usekomafont{fromaddress}{% + \ifkomavarempty{fromname}{}{% + {\usekomafont{fromname}% + {\ignorespaces\usekomavar{fromname}}}\\[-8pt] + \rule{\useplength{firstheadwidth}}{.4pt}\\ + }% + \ifkomavarempty{fromaddress}{}{% + \ignorespaces\usekomavar{fromaddress}% + }% + }% + }% + } +\newcommand*{\@gen@firsthead}{% +% Damit wird ggf. die Kopfzeile der ersten Seite umdefiniert. +% \begin{macrocode} + \ifcase\@alignfrom +% \end{macrocode} +% Wir befinden uns nun in dem Bereich f"ur \verb|\@alignfrom|=0. +% Entsprechend unserer Festlegung wird daher als Erstes der +% linksb"undige Absender definiert. Wir verwenden daf"ur eine +% \emph{parbox}, in der der Text linksb"undig angeordnet wird. Diese +% Box soll "uber die gesamte Breite gehen d"urfen: +% \begin{macrocode} + \renewcommand*{\@firsthead}{\noindent + \parbox[b]{\textwidth}{\raggedright +% \end{macrocode} +% Zuerst wird der Name gesetzt. Dabei soll eine eigene Schriftart f"ur +% den Namen verwendet werden. +% \begin{macrocode} + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% +% \end{macrocode} +% Hat \verb|\@rulefrom| den nummerischen Wert 1, so soll direkt auf den +% Absender eine Linie folgen. Die L"ange dieser Linie kann vom Anwender +% bestimmt oder automatisch gew"ahlt werden. Es wird dabei die +% Pseudo-L"ange \texttt{fromrulewidth} verwendet. Ist diese negativ, +% so wird sie automatisch bestimmt. Bei der automatischen +% L"angenbestimmung wird daf"ur gesorgt, dass die Linie nicht bis in das +% Logo ragt, das eventuell rechtsb"undig neben dem Absender steht: +% \begin{macrocode} + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + }% + \\}% +% \end{macrocode} +% Als N"achstes wird die Absenderadresse einschlie"slich aller +% optionalen Felder gesetzt. Dabei werden optionale Felder nur +% gesetzt, wenn der entsprechende Schalter \emph{true} ist. Die +% Adresse wird ebenfalls innerhalb einer Gruppe in einer eigenen +% Schriftart gesetzt. +% \begin{macrocode} + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% +% \end{macrocode} +% Wie weiter oben erw"ahnt, kann auch an dieser Stelle eine Linie +% gesetzt werden. Wir gehen davon aus, dass die Linie automatisch +% nicht in das Logo ragt, da es in diesem Fall "uber der Linie zu +% stehen hat. Die entsprechende Berechnung kann also entfallen. +% \begin{macrocode} + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + \\ + }% + }% +% \end{macrocode} +% Die parbox ist damit ebenfalls beendet. Es mu"ss nun ggf. noch das +% Logo gesetz werden. Es wird in diesem Fall von der aktuellen +% Position am rechten Rand nach links ausgegeben. +% \begin{macrocode} + \if@logo + \llap{\usekomavar{fromlogo}}% + \fi + }% +% \end{macrocode} +% Damit ist die Definition des linksb"undigen Absenders abgeschlossen. +% Es geht weiter mit dem zentrierten Absender. Dieser hat als +% Besonderheit, dass das Logo nicht in den Briefkopf, sondern in den +% Bereich rechts neben dem Empf"anger gesetzt wird. Dort ist bereits +% das location-Feld, daher wird dieser Fall auch dort behandelt. +% \begin{macrocode} + \or + \renewcommand*{\@firsthead}{\noindent + \parbox[b]{\textwidth}{\centering + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + \\ + }% + }% + }% +% \end{macrocode} +% Damit ist die Definition des zentrierten Absenders abgeschlossen. Es +% geht weiter mit dem rechtsb"undigen Absender. Das ganze wird einfach +% beim linksb"undigen Absender abgeschaut. +% \begin{macrocode} + \or + \renewcommand*{\@firsthead}{\noindent + \if@logo + \rlap{\usekomavar{fromlogo}}% + \fi + \parbox[b]{\textwidth}{\raggedleft + {\usekomafont{fromname}\strut\ignorespaces + \usekomavar{fromname}% + {% + \ifnum\@rulefrom=1\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \if@logo + \settowidth{\@tempdimb}{\usekomavar{fromlogo}}% + \addtolength{\@tempdima}{-\@tempdimb}% + \fi + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + }% + \\ + }% + {\usekomafont{fromaddress}\strut\ignorespaces + \usekomavar{fromaddress}% + \if@phone\\\usekomavar*{fromphone}\usekomavar{fromphone}\fi% + \if@fax\\\usekomavar*{fromfax}\usekomavar{fromfax}\fi% + \if@email\\\usekomavar*{fromemail}\usekomavar{fromemail}\fi% + \if@www\\\usekomavar*{fromurl}\usekomavar{fromurl}\fi% + \ifnum\@rulefrom=2\\[-.5\baselineskip]% + \setlength{\@tempdima}{\useplength{fromrulewidth}}% + \ifdim\@tempdima=\z@ + \setlength{\@tempdima}{\textwidth}% + \fi + \expandafter\rule\expandafter{\the\@tempdima}{.4pt}% + \fi + \\ + }% + }% + }% +% \end{macrocode} +% Damit ist die Umdefinierung beendet. In allen anderen F"allen wird +% der Kopf nicht ver"andert. +% \begin{macrocode} + \fi + } +% \end{macrocode} +% \begin{macrocode} +\newcommand*{\@firstfoot}{} +\newcommand*{\@nexthead}{% + \rlap{\parbox[c]{\textwidth}{\raggedright\strut + \ifnum\@pageat=0\pagemark\else\leftmark\fi\strut}}% + \parbox[c]{\textwidth}{% + \centering\strut + \ifcase\@pageat + \rightmark + \or + \pagemark + \or + \rightmark + \fi\strut}% + \llap{\parbox[c]{\textwidth}{\raggedleft\strut + \ifcase\@pageat + \leftmark + \or + \rightmark + \or + \pagemark + \else + \rightmark + \fi\strut}}% + }% +\newcommand*{\@nextfoot}{% + \ifnum\@pageat>2 + \parbox[c]{\textwidth}{% + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark% + }% + \fi +} +\newcommand*{\pagemark}{{\usekomafont{pagenumber}\pagename\ \thepage}} +\renewcommand*{\ps@plain}{% + \renewcommand*{\@evenhead}{% + \vbox{\vbox{\hsize=\textwidth\hbox to\textwidth{% + \parbox[b]{\textwidth}{\strut + \ifnum\@pageat>-1 + \ifnum\@pageat<3 + \ifcase\@pageat\raggedright\or\centering\or\raggedleft\fi + \pagemark + \else + \hfill + \fi + \else + \hfill + \fi}% + }% + \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi + }% + }% + }% + \let\@oddhead\@evenhead% + \renewcommand*{\@evenfoot}{% + \parbox[t]{\textwidth}{% + \if@fsl + {% + \raggedright% + \vskip-\baselineskip\vskip.4pt + \hrulefill\\ + }% + \fi + \ifnum\@pageat>2 + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark + \else + \hfill + \fi + }% + }% + \let\@oddfoot\@evenfoot + } +\newcommand*{\ps@headings}{% + \let\@mkboth=\markboth + \renewcommand*{\@evenhead}{% + \vbox{% + \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\@nexthead}}% + \if@hsl\kern1pt\rule{\textwidth}{.4pt}\fi% + }% + }% + \let\@oddhead\@evenhead% + \renewcommand*{\@evenfoot}{% + \parbox[t]{\textwidth}{% + \if@fsl + {% + \raggedright% + \vskip-\baselineskip\vskip.4pt + \hrulefill\\ + }% + \fi + \vbox{\hsize=\textwidth\hbox to\textwidth{\headfont\@nextfoot}}% + }% + }% + \let\@oddfoot\@evenfoot + } +\newcommand*{\ps@myheadings}{% + \ps@headings\let\@mkboth=\@gobbletwo + } +\let\@mkboth=\@gobbletwo +%</scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\titlepagestyle} +% \changes{v2.8d}{2001/07/05}{Neu} +% \begin{macro}{\partpagestyle} +% \changes{v2.8d}{2001/07/05}{Neu} +% \begin{macro}{\chapterpagestyle} +% \changes{v2.8d}{2001/07/05}{Neu} +% \begin{macro}{\indexpagestyle} +% \changes{v2.8d}{2001/07/05}{Neu} +% Auf verschiedenen Seiten wird automatisch mit |\thispagestyle| auf +% einen anderen Seitenstil umgeschaltet. Welcher das ist, ist in +% diesem Makros abgelegt und kann bei Bedarf ge"andert +% werden. Voreingestellt ist der in fr"uheren Versionen fest +% verdrahtete Seitenstil \texttt{plain}. Da es bei Briefen die +% entsprechenden Teile nicht gibt, wird f"ur \texttt{scrlttr2} +% entsprechendes auch nicht definiert. +% \begin{macrocode} +%<*!scrlettr> +\newcommand*{\titlepagestyle}{plain} +\newcommand*{\partpagestyle}{plain} +%<scrbook|scrreprt>\newcommand*{\chapterpagestyle}{plain} +\newcommand*{\indexpagestyle}{plain} +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsection{Titel} +% +% \begin{macro}{\extratitle} +% \begin{macro}{\@extratitle} +% \begin{macro}{\titlehead} +% \begin{macro}{\@titlehead} +% \begin{macro}{\subject} +% \begin{macro}{\@subject} +% \begin{macro}{\publishers} +% \begin{macro}{\@publishers} +% \begin{macro}{\uppertitleback} +% \begin{macro}{\@uppertitleback} +% \begin{macro}{\lowertitleback} +% \begin{macro}{\@lowertitleback} +% \begin{macro}{\dedication} +% \begin{macro}{\@dedication} +% Da der Titel im \textsf{KOMA-Script} Paket wesentlich mehr +% Angaben erlaubt als bei den Standard-classes, gibt es nat"urlich +% auch einige Befehle, mit denen diese gesetzt werden k"onnen. +% +% Alle zus"atzlichen Angaben sind optional und k"onnen auch weggelassen +% werden. In diesem Fall werden Leerfelder verwendet. Bis auf |\subject| +% sind alle Zusatzbefehle |\long| deklariert. +% +% Bei Briefen entf"allt die Titelei +% \begin{macrocode} +%<*!scrlettr> +\newcommand*{\@extratitle}{} +\newcommand{\extratitle}[1]{\gdef\@extratitle{#1}} +\newcommand*{\@titlehead}{} +\newcommand{\titlehead}[1]{\gdef\@titlehead{#1}} +\newcommand*{\@subject}{} +\newcommand*{\subject}[1]{\gdef\@subject{#1}} +\newcommand*{\@publishers}{} +\newcommand{\publishers}[1]{\gdef\@publishers{#1}} +\newcommand*{\@uppertitleback}{} +\newcommand{\uppertitleback}[1]{\gdef\@uppertitleback{#1}} +\newcommand*{\@lowertitleback}{} +\newcommand{\lowertitleback}[1]{\gdef\@lowertitleback{#1}} +\newcommand*{\@dedication}{} +\newcommand{\dedication}[1]{\gdef\@dedication{#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} +% +% \begin{macro}{\next@tpage} +% \changes{v2.3b}{1995/07/24}{\cs{null} entfernt.} +% \changes{v2.3g}{1996/01/14}{\cs{newpage} durch \cs{clearpage} ersetzt.} +% \begin{macrocode} +\newcommand*{\next@tpage}{\clearpage\thispagestyle{empty}} +% \end{macrocode} +% Innerhalb eines Titels auf die n"achste Seite umschalten. +% \end{macro} +% \begin{macro}{\maketitle} +% Anschlie"send wird der Titel generiert. +% Bei |scrartcl| mu"s unterschieden werden, ob der Titel auf einer eigenen +% Titelseite oder als Seitenkopf erstellt werden soll. Der +% \textsf{KOMA-Script}-Titel ist u.U. sehr gro"s. In diesem Fall +% sollte eigentlich immer eine Titelseite verwendet werden. +% \changes{v2.1a}{1994/10/29}{Das Hilfskonstrukt \cs{@maketitle} +% wurde aus der Unterscheidung +% herausgenommen. Dies ist f"ur +% den Fall, da"s \cs{maketitle} +% von einem package "uberladen wird.} +% \changes{v2.3a}{1995/07/08}{\texttt{plus} durch \cs{@plus} ersetzt.} +% \changes{v2.3a}{1995/07/08}{\texttt{fill} durch \cs{fill} ersetzt.} +% \changes{v2.3d}{1995/08/19}{\cs{fill} durch \texttt{fill} ersetzt.} +% \changes{v2.3a}{1995/07/08}{\cs{vfil} durch \cs{vfill} ersetzt.} +% \changes{v2.3b}{1995/07/24}{Umbruch bei \cs{@extratitle} in der +% beidseitigen Titelseite korrigiert.} +% \changes{v2.3g}{1996/01/14}{\cs{footnote} funktioniert nun auch im +% Titel} +% \changes{v2.4}{1996/02/25}{\cs{footnote} funktioniert nun wirklich im +% Titel.} +% \changes{v2.4h}{1996/11/09}{Egal ob der Titel auf eine Extraseite +% kommt oder nicht, \cs{@title} wird mit +% \cs{sectfont} gesetzt, wobei die Gr"o"se +% neuerdings danach eingestellt wird.} +% \changes{v2.4l}{1997/02/06}{Symbolische Fu"snoten und +% Fu"snotensymbolbreiten von 0pt zur +% besseren Zentrierung des Autors sind +% auch bei Titelseiten angebracht.} +% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von \cs{sectfont}} +% \begin{macrocode} +\if@titlepage + \newcommand*\maketitle[1][1]{\begin{titlepage}% + \setcounter{page}{#1} + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark} + \ifx\@extratitle\@empty \else + \noindent\@extratitle\next@tpage\cleardoublepage + \thispagestyle{empty} + \fi + \ifx\@titlehead\@empty \else + \noindent\begin{minipage}[t]{\textwidth} + \@titlehead + \end{minipage}\par + \fi + \null\vfill + \begin{center} + \ifx\@subject\@empty \else + {\Large \@subject \par} + \vskip 3em + \fi + {\titlefont\huge \@title\par} + \vskip 3em + {\Large \lineskip 0.75em + \begin{tabular}[t]{c} + \@author + \end{tabular}\par} + \vskip 1.5em + {\Large \@date \par} + \vskip \z@ \@plus3fill + {\Large \@publishers \par} + \vskip 3em + \end{center}\par + \@thanks + \vfill\null + \if@twoside\next@tpage + \noindent\begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \noindent\begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage} + \fi + \ifx\@dedication\@empty \else + \next@tpage\null\vfill + {\centering \Large \@dedication \par} + \vskip \z@ \@plus3fill + \if@twoside \next@tpage\cleardoublepage \fi + \fi + \end{titlepage} + \setcounter{footnote}{0}% +% \end{macrocode} +% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{global}\cs{let} statt +% \cs{gdef}, um Speicher zu sparen.} +% \changes{v2.3g}{1996/01/14}{\cs{@date} und \cs{title} u."a. ebenfalls +% l"oschen, um Speicher zu sparen.} +% \begin{macrocode} + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@extratitle\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \global\let\and\relax} +\else +% \end{macrocode} +% \changes{v2.3a}{1995/07/08}{Verwendung von \cs{@makefnmark} in +% \cs{@makefntext}.} +% \changes{v2.3a}{1995/07/08}{Definition von \cs{@makefnmark} und +% \cs{@makefntext} unabh"angig von math +% definiert.} +% \changes{v2.3e}{1995/08/30}{Optionales Argument bei der einseitigen +% Version erlauben und ignorieren.} +% \changes{v2.3g}{1996/01/14}{Mehrfach \cs{null} bei \cs{next@tpage} +% erg"anzt.} +% \changes{v2.4l}{1997/02/06}{Es ist nicht mehr notwendig \cs{\@makefntext} +% umzudefinieren, stattdessen wird nur +% \cs{\@makefnmark} umdefiniert.} +% \changes{v2.8d}{2001/07/05}{\cs{titlepagestyle} statt \texttt{plain}} +% \begin{macrocode} + \newcommand*\maketitle[1][1]{\par + \@tempcnta=#1\relax\ifnum\@tempcnta=1\else +%<scrartcl> \ClassWarning{scrartcl} +%<scrreprt> \ClassWarning{scrreprt} +%<scrbook> \ClassWarning{scrbook} + {Optional argument of \string\maketitle\space ignored + at\MessageBreak + notitlepage-mode}\fi + \begingroup + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark} + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ + \@maketitle + \fi + \thispagestyle{\titlepagestyle}\@thanks + \endgroup + \setcounter{footnote}{0}% + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax +% \end{macrocode} +% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{global}\cs{let} statt +% \cs{gdef}, um Speicher zu sparen.} +% \changes{v2.3g}{1996/01/14}{\cs{@date} und \cs{title} u."a. ebenfalls +% l"oschen, um Speicher zu sparen.} +% \begin{macrocode} + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@extratitle\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \global\let\and\relax} +\fi +% \end{macrocode} +% \begin{macro}{\@maketitle} +% \begin{macrocode} +\newcommand*{\@maketitle}{% + \clearpage + \let\footnote\thanks + \ifx\@extratitle\@empty \else + \noindent\@extratitle \next@tpage \if@twoside \null\next@tpage \fi + \fi + \ifx\@titlehead\@empty \else + \noindent\begin{minipage}[t]{\textwidth} + \@titlehead + \end{minipage}\par + \fi + \null + \vskip 2em% + \begin{center}% + \ifx\@subject\@empty \else + {\Large \@subject \par} + \vskip 1.5em + \fi + {\titlefont\huge \@title \par}% + \vskip 1.5em% + {\Large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\Large \@date \par}% + \vskip \z@ \@plus 1em + {\Large \@publishers \par} + \ifx\@dedication\@empty \else + \vskip 2em + {\Large \@dedication \par} + \fi + \end{center}% + \par + \vskip 2em} +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Kapiteleinteilung} +% +% Die gesamte Gliederungsgeschichte entf"allt bei Briefen: +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \changes{v2.3h}{1996/01/20}{Gr"o"senbefehle in den "Uberschriften +% variabel gestaltet.} +% \begin{macro}{\numberline} +% \changes{v2.3c}{1995/08/06}{\cs{numberline} umdefiniert.} +% Dieses Makro wird indirekt im Inhaltsverzeichnis verwendet und mu"s +% umdefiniert werden, um Duden Regel~5 und Regel~6 zu implementieren. +% \begin{macrocode} +\renewcommand*{\numberline}[1]{% + \hb@xt@\@tempdima{#1\autodot\hfil}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\chaptermark} +% Dieses Makro, das f"ur lebende Kolumnentitel auf Kapitelebene +% zust"andig ist, wird im Kernel nicht definiert. Deshalb wird es hier +% nachgeholt. Strenggenommen ist das nur notwendig, wenn innerhalb der +% Seitenstildefinitionen |\renewcommand| verwendet wird. Auf jedenfall +% ist es sauberer, die Definition hier durchzuf"uhren, als sie +% wegzulassen. +% \begin{macrocode} +%<!scrartcl>\newcommand*\chaptermark[1]{} +% \end{macrocode} +% \end{macro} +% +% \begin{Counter}{secnumdepth} +% \begin{Counter}{part} +% \begin{Counter}{chapter} +% \begin{Counter}{section} +% \begin{Counter}{subsection} +% \begin{Counter}{subsubsection} +% \begin{Counter}{paragraph} +% \begin{Counter}{subparagraph} +% \begin{macro}{thepart} +% \begin{macro}{thechapter} +% \begin{macro}{thesection} +% \begin{macro}{thesubsection} +% \begin{macro}{thesubsubsection} +% \begin{macro}{theparagraph} +% \begin{macro}{thesubparagraph} +% Au"serdem werden an dieser Stelle nun einige Z"ahler definiert und +% initialisiert, die f"ur die Gliederung ma"sgeblich sind. Das +% Erscheinungsbild der Z"ahler bei ihrer Ausgabe wird ebenfalls festgelegt. +% \begin{macrocode} +%<!scrartcl>\setcounter{secnumdepth}{2} +%<scrartcl>\setcounter{secnumdepth}{3} +\newcounter{part} +%<!scrartcl>\newcounter{chapter} +%<scrartcl>\newcounter{section} +%<!scrartcl>\newcounter{section}[chapter] +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +\newcounter{subparagraph}[paragraph] +\renewcommand*\thepart{\@Roman\c@part} +%<!scrartcl>\renewcommand*\thechapter{\@arabic\c@chapter} +%<!scrartcl>\renewcommand*\thesection{\thechapter.\@arabic\c@section} +%<scrartcl>\renewcommand*\thesection{\@arabic\c@section} +\renewcommand*\thesubsection{\thesection.\@arabic\c@subsection} +\renewcommand*\thesubsubsection{\thesubsection.\@arabic\c@subsubsection} +\renewcommand*\theparagraph{\thesubsubsection.\@arabic\c@paragraph} +\renewcommand*\thesubparagraph{\theparagraph.\@arabic\c@subparagraph} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% \end{Counter} +% +% \begin{macro}{\@thepart} +% \changes{v2.8e}{2001/07/10}{Entfernt} +% \begin{macro}{\@maybeasf} +% \changes{v2.8e}{2001/07/10}{Entfernt} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@chapapp} +% Analog zu den Standardklassen. +% \begin{macrocode} +%<!scrartcl>\newcommand*\@chapapp{\chaptername} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter} +% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.} +% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten.} +% \begin{macrocode} +%<*scrbook> +\newcommand*\frontmatter{\if@twoside\cleardoublepage\else\clearpage\fi + \@mainmatterfalse\pagenumbering{roman}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mainmatter} +% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.} +% \changes{v2.5h}{1999/12/29}{Option \texttt{twoside} beachten.} +% \begin{macrocode} +\newcommand*\mainmatter{\if@twoside\cleardoublepage\else\clearpage\fi + \@mainmattertrue\pagenumbering{arabic}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\backmatter} +% Auch wenn nicht ganz einzusehen ist, warum das anders sein soll, +% wird hier nicht nach der Option \texttt{twoside}, sondern nach +% \texttt{openright} unterschieden. +% \begin{macrocode} +\newcommand*\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} +%</scrbook> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\part} +% \changes{v2.1c}{1995/01/17}{Zeichenkette "`markboth"' durch +% Befehl \cs{markboth} ersetzt.} +% \changes{v2.2c}{1995/05/25}{Part-Ausgabe auf CJK umgestellt.} +% \changes{v2.3c}{1995/08/06}{Alternative Numerierung bei r"omischer +% Part-Numerierung.} +% \changes{v2.3d}{1995/08/19}{Alternative Numerierung korrigiert.} +% \changes{v2.3g}{1996/01/14}{\cs{hbox} durch \cs{null} ersetzt.} +% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}} +% \changes{v2.8p}{2001/09/27}{Pr"aambel "uber der "Uberschrift +% hinzugef"ugt} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \begin{macro}{\@part} +% \changes{v2.4b}{1996/03/29}{\cs{size@partnumer} durch +% \cs{size@partnumber} ersetzt.} +% \changes{v2.4n}{1997/05/28}{F"ur scrartcl \cs{markboth} zum L"oschen +% der Kolumnentitel durch \cs{sectionmark} +% ersetzt.} +% \changes{v2.4n}{1997/05/28}{In der Sternvariante \cs{chaptermark} bzw. +% \cs{sectionmark} eingef"ugt, um die +% Kolumnentitel zu l"oschen.} +% \changes{v2.6a}{2000/01/20}{Zum L"oschen der Kolumnentitel wird nun +% \cs{@mkboth} verwendet.} +% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@part} und \cs{size@partnumber} +% aufgerufen} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.9c}{2002/08/10}{\cs{@parskipfalse}\cs{@parskip@indent} +% und \cs{centering} in der Reihenfolge +% vertauscht} +% \changes{v2.9s}{2004/07/05}{Verwendung von \cs{partmark}} +% \begin{macro}{\@spart} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.9c}{2002/08/10}{\cs{@parskipfalse}\cs{@parskip@indent} +% und \cs{centering} in der Reihenfolge +% vertauscht} +% \begin{macro}{\@endpart} +% Der Gliederungsfehl |\part| wird wie in den Standardklassen mit Hilfe +% mehrere Hilfsmakros definiert. Wesentliche Unterschiede zu den +% Standardklassen existieren nicht, jedoch sind Schriftgr"o"se, +% Schriftart u.~"a. flexibler gehalten. Au"serdem gibt es die +% M"oglichkeit von Pr"aambeln. \emph{Achtung: Die Pr"aambel vor der +% \cs{part}-"Uberschrift kann ohne Warnung "uber den oberen Rand +% hinaus reichen!} +% \changes{v2.4e}{1996/07/02}{Option \texttt{openany} beachten.} +% \changes{v2.5e}{1998/07/17}{\cs{numberline} verwendet, damit die +% reservierte Part-Nummern-Breite in +% \cs{l@part} auch wirklich verwendet +% wird} +% \begin{macrocode} +%<*scrartcl> +\newcommand\part{\par + \addvspace{4ex}% + \@afterindentfalse + \secdef\@part\@spart} +%</scrartcl> +%<*scrreprt|scrbook> +\newcommand\part{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{\partpagestyle}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil% + \vbox to\z@{\vss\use@preamble{part@o}\strut\par}% + \vskip-\baselineskip\nobreak% + \secdef\@part\@spart} +%</scrreprt|scrbook> +\newcommand*{\@part}{} +\def\@part[#1]#2{% +%<*scrartcl> + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \@maybeautodot\thepart% + \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont\sectfont\nobreak + \ifnum \c@secnumdepth >\m@ne + \size@partnumber\partformat + \par\nobreak + \fi + \size@part #2\strut% + \partmark{#1}\par}% + \nobreak + \vskip 3ex + \@afterheading} +%</scrartcl> +%<*scrreprt|scrbook> + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \@maybeautodot\thepart% + \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \partmark{#1}% + {\@parskipfalse\@parskip@indent\centering + \interlinepenalty \@M + \normalfont\sectfont + \ifnum \c@secnumdepth >-2\relax + \size@partnumber\partformat + \par + \vskip 20\p@ + \fi + \size@part #2\strut\par}% + \@endpart} +%</scrreprt|scrbook> +\newcommand*{\@spart}[1]{% +%<*scrartcl> + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \sectfont\nobreak\size@part #1\strut\@mkboth{}{}\par}% + \nobreak + \vskip 3ex + \@afterheading} +%</scrartcl> +%<*scrreprt|scrbook> + {\@parskipfalse\@parskip@indent\centering + \interlinepenalty \@M + \normalfont + \sectfont\size@part #1\strut\@mkboth{}{}\par}% + \@endpart} +% \end{macrocode} +% \changes{v2.3g}{1996/01/14}{\cs{@endpart} wird f"ur scrartcl nicht mehr +% definiert} +% \changes{v2.6c}{2000/06/10}{\cs{@endpart} f"ugt nur noch in beidseitigen +% Dokumenten bei Verwendung von openright eine +% Leerseite ein} +% \changes{v2.8p}{2001/09/27}{\cs{vbox} eingef"ugt} +% \changes{v2.8p}{2001/09/27}{\cs{use@preamble} ersetzt +% \cs{@part@preamble}} +% \begin{macrocode} +\newcommand*{\@endpart}{\vbox to\z@{\use@preamble{part@u}\vss}% + \vfil\newpage + \if@twoside\if@openright + \null% + \thispagestyle{empty}% + \newpage + \fi\fi + \if@tempswa + \twocolumn + \fi} +%</scrreprt|scrbook> +% \end{macrocode} +% \begin{macro}{\partmark} +% \changes{v2.9s}{2004/07/05}{Neu} +% In der initialen Version macht das dasselbe wie bisher, als das Makro noch +% nicht definiert war: automatische Kolumnentitel ggf. l"oschen. +% \begin{macrocode} +\newcommand*{\partmark}[1]{\@mkboth{}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\addpart} +% \changes{v2.8c}{2001/06/29}{Neu} +% \changes{v2.8d}{2001/07/05}{\cs{partpagestyle} statt \texttt{plain}} +% \begin{macro}{\@addpart} +% \changes{v2.8c}{2001/06/29}{Neu} +% \changes{v2.8l}{2001/08/17}{Erst eintagen, dann ausgeben} +% \begin{macro}{\@saddpart} +% \changes{v2.8c}{2001/06/29}{Neu} +% \begin{macrocode} +%<*scrartcl> +\newcommand\addpart{\par + \addvspace{4ex}% + \@afterindentfalse + \secdef\@addpart\@saddpart} +%</scrartcl> +%<*scrreprt|scrbook> +\newcommand\addpart{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{\partpagestyle}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@addpart\@saddpart} +%</scrreprt|scrbook> +\newcommand*{\@addpart}{} +\def\@addpart[#1]#2{\addcontentsline{toc}{part}{#1}\@spart{#2}} +\newcommand*{\@saddpart}{} +\def\@saddpart#1{\@spart{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\chapter} +% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt \texttt{plain}} +% \begin{macro}{\@chapter} +% \changes{v2.8e}{2001/07/10}{\cs{@maybeautodot} wird aufgerufen} +% \changes{v2.8g}{2001/07/18}{per \cs{float@addtolists} wird nun auch +% ein vertikaler Abstand in Listen des +% \texttt{float}-Pakets eingebaut} +% \begin{macro}{\@schapter} +% \begin{macro}{\@makechapterhead} +% \changes{v2.7b}{2001/01/05}{Kapitel k"onnen grunds"atzlich mit einer +% Pr"aambel versehen werden} +% \changes{v2.8p}{2001/09/25}{es gibt verschiedene Arten von +% Pr"aambeln} +% \begin{macro}{\@@makechapterhead} +% \changes{v2.8p}{2001/09/25}{Neu} +% \changes{v2.9g}{2002/09/01}{\cs{size@chapter} verschoben} +% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt} +% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf +% \texttt{1em plus 1fil} ge"andert} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macro}{\@makeschapterhead} +% Der Gliederungsfehl |\chapter|, der nur in den Klassen +% \texttt{scrbook} und \texttt{scrreprt} vorhanden ist, wird wie in +% den Standardklassen mit Hilfe mehrere Hilfsmakros definiert. +% \changes{v2.7b}{2001/01/05}{Kapitel k"onnen grunds"atzlich mit einer +% Pr"aambel versehen werden} +% \begin{macro}{\@@makeschapterhead} +% \changes{v2.8q}{2002/04/18}{\cs{raggedsection} wird bei Option +% \texttt{chapterprefix} auch auf den Pr"afix angewendet} +% \changes{v2.9p}{2003/06/28}{\cs{parfillskip} auf \cs{fill} gesetzt} +% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf +% \texttt{1em plus 1fil} ge"andert} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \changes{v2.9q}{2004/03/24}{Klammerung an \cs{@@makechapterhead} +% angepasst} +% \begin{macro}{\if@at@twocolumn} +% \changes{v2.7b}{2001/01/05}{Neu} +% \begin{macro}{\scr@topnewpage} +% \changes{v2.7b}{2001/01/05}{Neu} +% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt} +% \begin{macro}{\@topnewpage} +% \changes{v2.7b}{2001/01/05}{Neu} +% Interessant ist dabei die Erweiterung, da"s jedes Kapitel mit einer +% Preambel versehen werden kann. Diese wird im zweispaltigen Satz wie +% die "Uberschrift selbst einspaltig gesetzt. Intern wird dies f"ur +% die Preambel des Index und der Bibliography verwendet. Dabei +% entsteht aber wiederum das Problem, da"s der Indexkopf innerhalb von +% |\twocolumn| ausgegeben wird andererseits aber innerhalb von +% |\chapter| das Makro |\@topnewpage| verwendet wird. Damit w"urde +% dann also |\@topnewpage| innerhalb von |\@topnewpage| +% aufgerufen. Das ist jedoch nicht erlaubt. Als mu"s der Aufruf von +% |\@topnewpage| in |\@chapter| und |\@schapter| verhindert werden, +% wenn wir uns bereits in |\@topnewpage| befinden. Eine M"oglichkeit +% daf"ur w"are, einen Schalter in den Index-Kopf einzubauen. Wir +% w"ahlen hingegen die Methode, |\@topnewpage| entsprechend +% umzudefinieren. Damit kann dann auch der Anwender |\@chapter| +% innerhalb des optionalen Arguments von |\twocolumn| verwenden. +% \changes{v2.7g}{2001/04/17}{vergessenes \cs{long} erg"anzt} +% \begin{macrocode} +%<*scrreprt|scrbook> +\newif\if@at@twocolumn +\newcommand*\scr@topnewpage{} +\let\scr@topnewpage\@topnewpage +\long\def\@topnewpage[#1]{% + \@at@twocolumntrue\scr@topnewpage[{#1}]\@at@twocolumnfalse} +\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{\chapterpagestyle}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\newcommand*{\@chapter}{} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne +%<scrbook> \if@mainmatter + \refstepcounter{chapter}% + \@maybeautodot\thechapter% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% +%<scrbook> \else +%<scrbook> \addcontentsline{toc}{chapter}{#1}\fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \@ifundefined{float@addtolists}{}{% + \float@addtolists{\protect\addvspace{10\p@}}} + \if@twocolumn + \if@at@twocolumn + \@makechapterhead{#2}% + \else + \@topnewpage[\@makechapterhead{#2}]% + \fi + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\newcommand*{\chapterheadstartvskip}{} +\newcommand*{\chapterheadendvskip}{} +\newcommand*{\@@makechapterhead}[1]{\chapterheadstartvskip% + {\normalfont\sectfont\size@chapter + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ \@plus 1fil}% + \if@chapterprefix\let\@tempa\raggedsection\else\let\@tempa\@hangfrom\fi% + \@tempa{\ifnum \c@secnumdepth >\m@ne% +%<scrbook> \if@mainmatter \chapterformat\fi\fi}% +%<!scrbook> \chapterformat\fi}% + \if@chapterprefix\par\nobreak\vskip.5\baselineskip\fi% + {\raggedsection \interlinepenalty \@M #1\par}}% + \nobreak\chapterheadendvskip% + } +\newcommand*{\use@chapter@o@preamble}{% + {\settoheight{\@tempdima}{\vbox{\chapterheadstartvskip}}% + \settodepth{\@tempdimb}{\vbox{\chapterheadstartvskip}}% + \addtolength{\@tempdima}{\@tempdimb}% + \setbox0\vbox{\use@preamble{chapter@o}% + \vskip-\parskip}% + \setlength{\@tempdimb}{\ht0}% + \addtolength{\@tempdimb}{\dp0}% + \vbox to \z@{% + \vbox to \@tempdima{\vfill\box0}% + \vskip-\@tempdima% + }% + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \ClassWarning{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + preamble before chapter is \the\@tempdimb\space too + high.\MessageBreak + To avoid the overfull \string\vbox\space you may + redefine\MessageBreak + \string\chapterheadstartvskip\space at the preamble of + your\MessageBreak + document. You may also change + \string\setchapterpreamble\MessageBreak + before the command, which generates the message + about\MessageBreak + an overfull \string\vbox + }% + \fi% + } +} +\newcommand*{\@makechapterhead}[1]{% + \use@chapter@o@preamble% + \@@makechapterhead{#1}% + \use@preamble{chapter@u}\nobreak% + } +\newcommand*{\@schapter}[1]{\if@twocolumn + \if@at@twocolumn + \@makeschapterhead{#1}% + \else + \@topnewpage[\@makeschapterhead{#1}]% + \fi + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\newcommand*{\@@makeschapterhead}[1]{\chapterheadstartvskip% + {\normalfont\sectfont\size@chapter + \setlength{\parindent}{\z@}\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection \interlinepenalty \@M #1\par}% + \nobreak\chapterheadendvskip% +} +\newcommand*{\@makeschapterhead}[1]{% + \use@chapter@o@preamble% + \@@makeschapterhead{#1}% + \use@preamble{chapter@u}\nobreak% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\use@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% Dieses Makro dient allgemein zum Setzen einer Pr"aambel (f"ur +% Gliederungs"uberschriften), wenn eine +% solche definiert ist. Als Argument wird der Name der Pr"aambel +% "ubergeben, an den automatisch \verb;@preamble; angeh"angt +% wird. Zum Schluss wird die gespeicherte Pr"aambel gel"oscht. +% \begin{macrocode} +\newcommand*{\use@preamble}[1]{% + \@ifundefined{#1@preamble}{}{% + \@nameuse{#1@preamble}% + \global\expandafter\let\csname#1@preamble\endcsname=\relax}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% Das Makro \cs{set@preamble} dient allgemein der Defintion einer +% Pr"aambel (f"ur Gliederungs"uberschriften). Als Argument wird der +% Name der Gliederungsebene "ubergeben. Danach folgt ein optionales +% Argument, das die Position der Pr"aambel angibt. Darauf folgt ein +% weiteres optionales Argument, das die Breite der Pr"aambel +% angibt. Ist nur ein optionales Argument angegeben, so ist es die +% Position. Es folgt ein obligatorisches Argument mit dem Inhalt der +% Pr"aambel. Die Definition der Pr"aambel erfolgt global. +% \begin{macro}{\set@@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% \begin{macro}{\set@@@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% \begin{macro}{\set@@@@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt} +% Da mehrere optionale Argumente nach einem obligatorischen Argument +% auszuwerten sind, werden diverse Hilfsmakros ben"otigt. +% \begin{macrocode} +\newcommand*{\set@preamble}[1]{% +% \end{macrocode} +% Zunaechst wird das erste optionale Argument gesucht. +% \begin{macrocode} + \@ifnextchar [ + {\set@@preamble{#1}}{\set@@@preamble{#1}[][\hsize]}} +\newcommand*{\set@@preamble}{} +\def\set@@preamble#1[#2]{% +% \end{macrocode} +% Wenn ein optionales Argument existiert, kann es auch ein zweites +% geben. Wenn nicht, wird mit der Voreinstellung gearbeitet. +% \begin{macrocode} + \@ifnextchar [ + {\set@@@preamble{#1}[{#2}]}{\set@@@preamble{#1}[{#2}][\hsize]}} +\newcommand{\set@@@preamble}{} +\long\def\set@@@preamble#1[#2][#3]#4{% +% \end{macrocode} +% Dies ist das Hauptmakro, das die eigentliche Arbeit macht. Es muss +% long definiert werden, da die Pr"aambel auch aus mehreren Abs"atzen +% bestehen kann. +% +% Zun"achst wird das Positionsargument ausgewertet. Dies geschieht mit +% lokalen Hilfsmakros und einer Schleife. Zur Funktion der Schleife +% siehe im dokumentierten \LaTeX-Kern. +% \begin{macrocode} + {% + \def\prmbl@pos{#2}\let\prmbl@hpos\relax\let\prmbl@vpos\relax% + \expandafter \@tfor \expandafter \@tempa% + \expandafter :\expandafter =\prmbl@pos% + \do{% + \if \@tempa l% + \set@preamble@hpos{0}{#2}% + \fi% + \if \@tempa c% + \set@preamble@hpos{1}{#2}% + \fi% + \if \@tempa r% + \set@preamble@hpos{2}{#2}% + \fi% + \if \@tempa u% + \set@preamble@vpos{0}{#2}% + \fi% + \if \@tempa o% + \set@preamble@vpos{1}{#2}% + \fi% + } +% \end{macrocode} +% Wurde keine horizontale oder vertikale Ausrichtung definiert, so +% wird nun der Standardwert daf"ur eingesetzt. +% \begin{macrocode} + \@ifundefined{prmbl@hpos}{\def\prmbl@hpos{0}}{}% + \@ifundefined{prmbl@vpos}{\def\prmbl@vpos{0}}{}% +% \end{macrocode} +% Nun sind die Positionen ermittelt und es werden abh"angig davon +% entsprechende P"aambelmakros definiert. +% \begin{macrocode} + \ifcase\prmbl@hpos +% \end{macrocode} +% Zun"achst links unten und oben: +% \begin{macrocode} + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{}{\hfil}{#4} + \else + \set@@@@preamble{#1@o}{b}{#3}{}{\hfil}{#4} + \fi + \or +% \end{macrocode} +% Dann zentriert unten und oben: +% \begin{macrocode} + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{\hfil}{#4} + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{\hfil}{#4} + \fi + \else +% \end{macrocode} +% Zum Schluss rechts und oben: +% \begin{macrocode} + \ifcase\prmbl@vpos + \set@@@@preamble{#1@u}{t}{#3}{\hfil}{}{#4} + \else + \set@@@@preamble{#1@o}{b}{#3}{\hfil}{}{#4} + \fi + \fi + } +} +% \end{macrocode} +% Es folgt das Makro, mit dem die Definition tats"achlich +% stattfindet. Das erste Argument ist der Name der Pr"aambel, das +% zweite die Positionsoption f"ur die verwendete \cs{parbox}, das +% dritte ist die Breite der \cs{parbox}, dann zwei Argumente mit der +% horizontalen Ausrichtung vor und nach der \cs{parbox} und das +% sechste Agument ist schlie"slich der Inhalt der \cs{parbox}. +% \begin{macrocode} +\newcommand{\set@@@@preamble}[6]{% + \expandafter\gdef\csname #1@preamble\endcsname{% + \hbox to\hsize{#4\parbox[{#2}]{#3}{#6\par}#5\par}}} +% \end{macrocode} +% +% \begin{macro}{\set@preamble@hpos} +% \changes{v2.8q}{2001/09/25}{Neu} +% Eines der Hilfsmakros dient dazu, die horizontale Position der +% Pr"aambel einzustellen, falls dies nicht bereits erfolgt ist. Ist es +% bereits nicht "ubereinstimmend erfolg, wird ein Fehler +% ausgegeben. Dieses Makro ist extrem intern und funktioniert nur im +% Kontext vor \cs{set@preamble}. +% \begin{macrocode} +\newcommand*{\set@preamble@hpos}[2]{% + \@ifundefined{prbml@hpos}{% + \def\prmbl@hpos{#1}% + }{% + \ifnum \prmbl@hpos=0\relax\else% + \ClassError{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + inconsistent hpos options% + }{% + You said `#2' as position option. But you have + to\MessageBreak + use only one from `l', `r' or `c' not two of + these.\MessageBreak + If you'll continue only first hpos option will be + used}% + \fi}} +% \end{macrocode} +% \end{macro}%\iffalse\set@preamble@hpos\fi +% \begin{macro}{\set@preamble@vpos} +% \changes{v2.8q}{2001/09/25}{Neu} +% Das Hilfsmakro f"ur die vertikale Position funktioniert in gleicher +% Weise. +% \begin{macrocode} +\newcommand*{\set@preamble@vpos}[2]{% + \@ifundefined{prbml@vpos}{% + \def\prmbl@vpos{#1}% + }{% + \ifnum \prmbl@vpos=0\relax\else% + \ClassError{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + inconsistent vpos options% + }{% + You said `#2' as position option. But you have + to\MessageBreak + use only one from `o' or `u' not two of + these.\MessageBreak + If you'll continue only first vpos option will be + used}% + \fi}} +% \end{macrocode} +% \end{macro}%\iffalse\set@preamble@vpos\fi +% \end{macro}%\iffalse\set@@@@preamble\fi +% \end{macro}%\iffalse\set@@@preamble\fi +% \end{macro}%\iffalse\set@@preamble\fi +% \end{macro}%\iffalse\set@preamble\fi +% +% +% \begin{macro}{\dictum} +% \changes{v2.8q}{2001/20/04}{Neu} +% \changes{v2.9l}{2003/01/28}{\cs{edef} durch \cs{def} ersetzt} +% \changes{v2.9q}{2004/04/19}{zur Vermeidung von Problemen durch +% \cs{raggeddictum} Gruppe eingef"ugt} +% \begin{macro}{\dictumwidth} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\raggeddictum} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\raggeddictumtext} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\raggeddictumauthor} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\@dictumfont} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\scr@fnt@dictumtext} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\scr@fnt@instead@dictum} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\@dictumauthorfont} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\scr@fnt@dictumauthor} +% \changes{v2.8q}{2001/20/04}{Neu} +% \begin{macro}{\dictumauthorformat} +% \changes{v2.8q}{2001/20/04}{Neu} +% Ein \emph{dictum} ist ein Spruch. Er besteht aus dem Spruch selbst +% und verf"ugt optional "uber einen Autor, der dann mit einer Linie +% abgetrennt wird. Gibt es keinen Autor, gibt es auch keine Linie. Die +% Schriften f"ur Autor und Spruch k"onnen getrennt voneinander +% eingestellt werden. Die Anordnung des Spruchs wird durch +% \cs{raggeddictumtext} gesetzt. Die des Autors durch +% \cs{raggeddictumauthor}. Die Formatierung selbst geschieht mit dem +% Makro \cs{dictumauthorformat}. Vordefiniert ist, den Namen des +% Autors in +% runde Klammern zu setzen. Die gesamte Geschichte von Text und Autor +% wird in eine Box der Breite \cs{dictumwidth} gepackt. Diese wird mit +% \cs{raggeddictum} angeordnet. +% \begin{macrocode} +\newcommand{\dictum}[2][]{\par% + \begingroup + \raggeddictum\parbox{\dictumwidth}{% + {\@dictumfont{\raggeddictumtext #2\strut\par}% + \def\@tempa{#1}\ifx\@tempa\@empty\else% + {\raggeddictumtext\vskip-1ex\hrulefill\par}% + \raggeddictumauthor\@dictumauthorfont\dictumauthorformat{#1}% + \strut\par% + \fi% + }% + }\par% + \endgroup +} +\newcommand*{\dictumwidth}{.3333\textwidth} +\newcommand*{\raggeddictum}{\raggedleft} +\newcommand*{\dictumauthorformat}[1]{(#1)} +\newcommand*{\raggeddictumtext}{\raggedright} +\newcommand*{\raggeddictumauthor}{\raggedleft} +\newcommand*{\@dictumfont}{\normalfont\normalcolor\sffamily\small} +\newcommand*{\@dictumauthorfont}{\itshape} +\newcommand*{\scr@fnt@dictumtext}{\@dictumfont} +\newcommand*{\scr@fnt@dictumauthor}{\@dictumauthorfont} +\newcommand*{\scr@fnt@instead@dictum}{dictumtext} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\setchapterpreamble} +% \changes{v2.7b}{2001/01/05}{Neu} +% \changes{v2.8p}{2001/09/25}{Verwendung von \cs{set@preamble}} +% \begin{macro}{\chapter@u@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% \changes{v2.8p}{2001/09/25}{Ersatz f"ur \cs{chapter@preamble}} +% \begin{macro}{\chapter@o@preamble} +% \changes{v2.8p}{2001/09/25}{Neu} +% Diese Makros werden ben"otigt, um die Kapitel-Pr"aambel zu setzen +% bzw. zu speichern. Leider kann an dieser Stelle \emph{nicht} +% |\renewcommand*| verwendet werden, weil das Makros unbedingt global +% definiert werden mu"s. +% \begin{macrocode} +\newcommand*{\setchapterpreamble}{\set@preamble{chapter}} +\newcommand*{\chapter@u@preamble}{} +\let\chapter@u@preamble\relax +\newcommand*{\chapter@o@preamble}{} +\let\chapter@o@preamble\relax +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setpartpreamble} +% \changes{v2.8f}{2001/07/12}{Neu} +% \changes{v2.8p}{2001/09/27}{Verwendung von \cs{use@preamble}} +% \begin{macro}{\part@preamble@u} +% \changes{v2.8p}{2001/09/27}{Ersatz f"ur \cs{part@preamble}} +% \begin{macro}{\part@preamble@o} +% \changes{v2.8p}{2001/09/27}{Neu}\ +% Analog gibt es Befehle f"ur eine Teil-Pr"aambel. Hier wird aber +% direkt mit |\relax| gearbeitet. +% \begin{macrocode} +\newcommand*{\setpartpreamble}{\set@preamble{part}} +\newcommand*{\part@preamble@u}{} +\let\part@preamble@u\relax +\newcommand*{\part@preamble@o}{} +\let\part@preamble@o\relax +%</scrreprt|scrbook> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\addchap} +% \changes{v2.0e}{1994/08/10}{\cs{sectdef} durch \cs{secdef} ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{addcontensline} durch +% \cs{addcontentsline} ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{chaptermark} durch +% \cs{markboth} ersetzt.} +% \changes{v2.0e}{1994/10/12}{\cs{markboth} durch \cs{chaptermark} +% ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{@makechapterhead} durch +% \cs{@makeschapterhead} ersetzt.} +% \changes{v2.0e}{1994/08/10}{\cs{afterheadings} durch +% \cs{@afterheading} ersetzt.} +% \changes{v2.1a}{1994/10/29}{Argument von \cs{chaptermark} entfernt bei +% "`scrbook"'.} +% \changes{v2.0e}{1994/10/12}{Mehrfach \cs{markboth} durch +% \cs{sectionmark} ersetzt.} +% \changes{v2.2b}{1995/03/20}{\cs{chaptermark} durch \cs{@mkboth} +% ersetzt.} +% \changes{v2.7a}{2001/01/04}{\cs{addsec} f"ur eine bessere +% Unterst"utzung von \texttt{hyperref} +% ge"andert} +% \changes{v2.8d}{2001/07/05}{\cs{chapterpagestyle} statt \texttt{plain}} +% \begin{macro}{\addsec} +% \changes{v2.0e}{1994/10/12}{Mehrfach \cs{markboth} durch +% \cs{sectionmark} ersetzt.} +% \changes{v2.2b}{1995/03/20}{\cs{sectionmark} durch \cs{@mkboth} +% ersetzt.} +% \changes{v2.3h}{1995/01/21}{Jetzt auch bei scrbook und scrreprt.} +% \changes{v2.4g}{1996/11/04}{\cs{section*} vorgezogen, damit dadurch +% provozierte Seitenumbr"uche im +% Inhaltsverzeichnis ber"ucksichtigt werden.} +% \changes{v2.5d}{1998/01/03}{\cs{@mkboth} bedingt durch \cs{markright} +% ersetzt.} +% \begin{macro}{\@addsec} +% \begin{macro}{\@saddsec} +% \textsf{KOMA-Script} bietet in allen drei Hauptklassen den zus"atzlichen +% Gliederungsbefehl |\addsec| und in \texttt{scrbook} und \texttt{scrreprt} +% au"serdem |\addchap|. Es handelt sich dabei um mit |\section*| bzw. +% |\chapter*| vergleichbare Befehle, bei denen jedoch der Kolumnentitel +% korrigiert und ein Eintrag ins Inhaltsverzeichnis erfolgt (nicht in der +% Stern-Variante). +% \begin{macrocode} +\newcommand*\addsec{\secdef\@addsec\@saddsec} +\newcommand*{\@addsec}{} +\def\@addsec[#1]#2{\section*{#2}\addcontentsline{toc}{section}{#1} +%<scrartcl> \if@twoside \@mkboth{#1}{}\else \@mkboth{#1}{#1}\fi} +%<scrreprt|scrbook> \if@twoside\ifx\@mkboth\markboth\markright{#1}\fi\fi} +\newcommand*{\@saddsec}[1]{\section*{#1}\@mkboth{}{}} +%<*scrreprt|scrbook> +% \end{macrocode} +% Die Definition von \cs{addcap} sah bis zu Version 2.7 so aus: +% \begin{verbatim} +% \newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi +% \thispagestyle{plain}% +% \global\@topnum\z@ +% \@afterindentfalse +% \secdef\@addchap\@saddchap} +% \def\@addchap[#1]#2{\typeout{#2} +% \addcontentsline{toc}{chapter}{#1} +% \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi +% \addtocontents{lof}{\protect\addvspace{10\p@}}% +% \addtocontents{lot}{\protect\addvspace{10\p@}}% +% \if@twocolumn +% \@topnewpage[\@makeschapterhead{#2}]% +% \else +% \@makeschapterhead{#2}% +% \@afterheading +% \fi} +% \def\@saddchap#1{\@mkboth{}{} +% \if@twocolumn +% \@topnewpage[\@makeschapterhead{#1}]% +% \else +% \@makeschapterhead{#1}% +% \@afterheading +% \fi} +% \end{verbatim} +% Dies f"uhrte jedoch zu Problemen im Zusammenhang mit +% \texttt{hyperref}, da hierbei keine korrekten Links erzeugt +% werden. Mit dem \texttt{hypertex}-Treiber werden auch in der neuen +% Version keine korrekten Links erzeugt. Dies wird von mir jedoch als +% Bug in \texttt{hyperref 6.69c} betrachtet. Mit dem +% \texttt{hpdftex}-Treiber werden n"amlich im Gegensatz dazu korrekte +% Links erzeugt. Deshalb wurde der Code wie folgt vereinfacht. Von +% wesentlicher Bedeutung ist dabei der Aufruf von \cs{chapter*}, da in +% \texttt{hpdftex.def} das interne Makro \cs{@schapter} so umdefiniert +% wird, da"s ein korrekter Link erzeugt wird. +% \begin{macro}{\@addchap} +% \begin{macro}{\@saddchap} +% \begin{macrocode} +\newcommand\addchap{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{\chapterpagestyle}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@addchap\@saddchap% +} +\newcommand*{\@addchap}{} +\def\@addchap[#1]#2{\@schapter{#2}% + \addcontentsline{toc}{chapter}{#1}% + \if@twoside\@mkboth{#1}{}\else\@mkboth{}{#1}\fi} +\newcommand*{\@saddchap}[1]{\@schapter{#1}\@mkboth{}{}} +% \end{macrocode} +% In \texttt{hyperref} zumindest bis Version 6.71a ist ein dicker Bug. In +% verschiedenen \texttt{def}-Dateien wird dort das \emph{interne} +% \textsf{KOMA-Script} Makro |\@addchap| umdefiniert, ohne sicherzustellen, +% da"s das Makro auch noch so aussieht, wie man das erwartet hat. Die +% sauberste L"osung w"are sicher gewesen dort |\@addchap| nur zu erg"anzen, +% so wie man das auch bei |\@schapter| gemacht hat. Ab Version 6.71b ist +% dieser Bug behoben. Damit ich nicht eines Fehlers verd"achtigt werde, +% wird ggf. eine entsorechende Meldung ausgegeben. +% \changes{v2.7e}{2001/04/16}{Fehlende, schlie"sende Klammer erg"anzt} +% \changes{v2.7f}{2001/04/17}{Fehlendes Klammerpaar erg"anzt} +% \changes{v2.8q}{2001/11/17}{\cs{AfterPackage} zur "Uberpr"ufung der +% \texttt{hyperref}-Version verwendet} +% \begin{macrocode} +%<*scrbook> +\AfterPackage{hyperref}{% + \@ifpackagelater{hyperref}{2001/02/19}{}{% + \ClassWarningNoLine{scrbook}{% + You are using an old version of hyperref package!\MessageBreak% + This version has a buggy hack at many drivers\MessageBreak% + causing \string\addchap\space to behave strange.\MessageBreak% + Please update hyperref to at least version + 6.71b}}} +%</scrbook> +%</scrreprt|scrbook> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\section} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@section} aufgerufen} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird +% \cs{parfillskip} unendlich dehnbar} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macro}{\subsection} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@subsection} aufgerufen} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird +% \cs{parfillskip} unendlich dehnbar} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macro}{\subsubsection} +% \changes{v2.3d}{1995/08/19}{wird bei \texttt{scrartcl} +% nun ebenfalls numeriert und ins Inhaltsverzeichnis geschrieben} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@subsubsection} aufgerufen} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird +% \cs{parfillskip} unendlich dehnbar} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macro}{\paragraph} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@paragraph} aufgerufen} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird +% \cs{parfillskip} unendlich dehnbar} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macro}{\subparagraph} +% \changes{v2.8p}{2001/09/22}{\cs{sectfont} wird nun vor +% \cs{size@subparagraph} aufgerufen} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} behebt +% einen Bug im color Paket} +% \changes{v2.9q}{2004/04/26}{noch vor \cs{raggedsection} wird +% \cs{parfillskip} unendlich dehnbar} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% Die Standardgliederungsbefehle |\section| bis |\subparagraph| sind +% mit der im Kernel daf"ur vorgesehenen Schnittstelle definiert. Im +% Unterschied zu den Standardklassen erfolgt die Formatierung jedoch +% in |\raggedsection| und der Schriftart |\sectfont|. Au"serdem sind +% die Gr"o"sen ver"anderbar. In letzter Konsequenz sollten hier +% eigentlich auch die Abst"ande variabilisiert werden. Vielleicht in +% einer sp"ateren Version. +% \begin{macrocode} +\newcommand\section{\@startsection{section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}} +\newcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection\normalfont\sectfont\nobreak\size@subsection\nobreak}} +\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection\normalfont\sectfont\nobreak\size@subsubsection\nobreak}} +\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection\normalfont\sectfont\nobreak\size@paragraph\nobreak}} +\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\setlength{\parfillskip}{\z@ \@plus 1fil}% + \raggedsection\normalfont\sectfont\nobreak\size@subparagraph\nobreak}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{minisec} +% \changes{v2.8q}{2002/02/28}{\cs{nobreak} nach \cs{sectfont} +% behebt einen Bug im color Paket nicht ganz} +% \changes{v2.9o}{2003/01/31}{\cs{nobreak} nach dem Gruppenende +% behebt einen Bug im color Paket} +% In \textsf{KOMA-Script} gibt es diese zus"atzliche Gliederungsebene, die +% immer ohne Nummer und ihne Eintrag ins Inhaltsverzeichnis erfolgt. +% \begin{macrocode} +\newcommand\minisec[1]{\@afterindentfalse \vskip 1.5ex + {\parindent \z@ + \raggedsection\normalfont\sectfont\nobreak#1\par\nobreak}\nobreak + \@afterheading} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sectionragged} +% \changes{v2.3h}{1996/01/20}{"Uberschriften werden \cs{raggedsection} +% gesetzt.} +% \changes{v2.3h}{1996/01/20}{\cs{raggedsection} ist als \cs{raggedright} +% voreingestellt.} +\let\raggedsection\raggedright +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{Listen-Umgebungen} +% +% \subsection{Array, Tabellen, Tabulatoren, Rahmen} +% \begin{Length}{arraycolsep} +% \begin{Length}{tabcolsep} +% \begin{Length}{arrayrulewidth} +% \begin{Length}{doublerulewidth} +% \begin{Length}{tabbingsep} +% \begin{Length}{@mpfootins} +% \begin{Length}{fboxsep} +% \begin{Length}{fboxrule} +% \begin{macrocode} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +\setlength{\skip\@mpfootins}{\skip\footins} +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +% \end{macrocode} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% +% \subsubsection{Gleichungen} +% +% \begin{macro}{\theequation} +% \begin{macrocode} +%<!scrartcl&!scrlettr>\@addtoreset{equation}{chapter} +\renewcommand*\theequation{% +%<!scrartcl&!scrlettr> \thechapter.% + \@arabic\c@equation} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{R"ander} +% +% \begin{Length}{leftmargini} +% \begin{Length}{leftmarginii} +% \begin{Length}{leftmarginiii} +% \begin{Length}{leftmarginiv} +% \begin{Length}{leftmarginv} +% \begin{Length}{leftmarginvi} +% \begin{Length}{leftmargin} +% \begin{Length}{labelsep} +% \begin{Length}{labelwidth} +% F"ur die Listenumgebungen in verschiedenen Stufen m"ussen R"ander +% definiert werden. +% \begin{macrocode} +\if@twocolumn + \setlength{\leftmargini}{2em} +\else + \setlength{\leftmargini}{2.5em} +\fi +\setlength{\leftmarginii}{2.2em} +\setlength{\leftmarginiii}{1.87em} +\setlength{\leftmarginiv}{1.7em} +\if@twocolumn + \setlength{\leftmarginv}{.5em} + \setlength{\leftmarginvi}{.5em} +\else + \setlength{\leftmarginv}{1em} + \setlength{\leftmarginvi}{1em} +\fi +\setlength{\leftmargin}{\leftmargini} +\setlength{\labelsep}{.5em} +\setlength{\labelwidth}{\leftmargini} +\addtolength{\labelwidth}{-\labelsep} +\@beginparpenalty=-\@lowpenalty +\@endparpenalty =-\@lowpenalty +\@itempenalty =-\@lowpenalty +% \end{macrocode} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% \end{Length} +% +% +% \subsubsection{Marken} +% +% F"ur die numerierten Listenumgebungen m"ussen Marken bzw. Numerierungen +% festgelegt werden. +% \begin{macro}{\theenumi} +% \begin{macro}{\theenumii} +% \begin{macro}{\theenumiii} +% \begin{macro}{\theenumiv} +% \begin{macro}{\labelenumi} +% \begin{macro}{\labelenumii} +% \changes{v2.4m}{1997/02/28}{"Offnende Klammer gem"a"s Doku entfernt.} +% \begin{macro}{\labelenumiii} +% \begin{macro}{\labelenumiv} +% \begin{macro}{\p@enumii} +% \begin{macro}{\p@enumiii} +% \begin{macro}{\p@enumiv} +% \begin{macro}{\labelitemi} +% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.} +% \begin{macro}{\labelitemii} +% \changes{v2.5g}{1999/10/09}{\cs{textendash} verwendet.} +% \begin{macro}{\labelitemiii} +% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.} +% \begin{macro}{\labelitemiv} +% \changes{v2.5g}{1999/10/09}{Mathemodus eliminiert.} +% \begin{macrocode} +\renewcommand*\theenumi{\@arabic\c@enumi} +\renewcommand*\theenumii{\@alph\c@enumii} +\renewcommand*\theenumiii{\@roman\c@enumiii} +\renewcommand*\theenumiv{\@Alph\c@enumiv} +\newcommand*\labelenumi{\theenumi.} +\newcommand*\labelenumii{\theenumii)} +\newcommand*\labelenumiii{\theenumiii.} +\newcommand*\labelenumiv{\theenumiv.} +\renewcommand*\p@enumii{\theenumi} +\renewcommand*\p@enumiii{\p@enumii(\theenumii)} +\renewcommand*\p@enumiv{\p@enumiii\theenumiii} +\newcommand*\labelitemi{\textbullet} +\newcommand*\labelitemii{\normalfont\bfseries\textendash} +\newcommand*\labelitemiii{\textasteriskcentered} +\newcommand*\labelitemiv{\textperiodcentered} +% \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} +% +% +% \subsubsection{Definition der Umgebungen} +% +% \begin{environment}{description} +% Die |description|-Umgebung dient der Beschreibung von einzelnen +% Begriffen. Der Begriff aus dem optionalen Argument des |\item|-Befehls +% wird in einem speziellen Font, dem |descfont|, gesetzte. +% \begin{macrocode} +\newenvironment{description} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*{\descriptionlabel}[1]{\hspace\labelsep + \descfont #1} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{labeling} +% Die |labeling|-Umgebung ist eine Erweiterung des \textsf{Script} Pakets. +% Sie erwartet ein optionales und ein normales Argument. Das optionale +% Argument beschreibt einen speziellen Trenntext zwischen |\item|-Marke und +% |\item|-Beschreibung. Das eigentliche Argument wird f"ur die Ermittlung +% der Einr"uckung des Beschreibungstextes bzw. des Trenntextes ben"otigt. +% \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} +% \end{environment} +% +% \changes{v2.1a}{1994/10/29}{\texttt{abstract}-Environment verschoben.} +% \begin{environment}{verse} +% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr +% verarbeiten.} +% Die Verse-Umgebung ist f"ur Zitate in Gedichtform und "ahnliches gedacht. +% \begin{macrocode} +\newenvironment{verse} + {\let\\=\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item\relax} + {\endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{quotation} +% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr +% verarbeiten.} +% \begin{environment}{quote} +% \changes{v2.3g}{1996/01/14}{\cs{item} mu"s keine "`[]"'-Klammern mehr +% verarbeiten.} +% Die |quotation|- und die |quote|-Umgebung erlauben rechts und links +% einger"uckte Passagen. Abs"atze werden entweder in der ersten Zeile +% zus"atzlich einger"uckt oder durch vertikalen Abstand markiert. +% \begin{macrocode} +\newenvironment{quotation} + {\list{}{\listparindent 1em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item\relax} + {\endlist} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item\relax} + {\endlist} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \begin{environment}{addmargin} +% \changes{v2.8q}{2001/11/29}{Neue Umgebung} +% \begin{environment}{addmargin*} +% \changes{v2.8q}{2001/11/29}{Neue Umgebung} +% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch +% \cs{ifthispageodd} ersetzt} +% Diese beiden Umgebungen "ahneln |quote| und |quotation|. Dabei +% werden Absatzeinzug und Absatzabstand nicht ver"andert. Die einzige +% Ver"anderung besteht in den R"andern. Wie stark die R"ander +% ver"andert werden, h"angt dabei von den Parametern ab. Ist nur der +% obligatorische Parameter angegeben, werden die R"ander auf beiden +% Seiten um diesen Wert vergr"o"sert. Ist ein optionaler Parameter +% angegeben, so ist dies bei |addmargin| der linke und bei +% |addmargin*| der innere Rand. Der obligatorische Parameter ist dann +% der andere Rand. Diese Entscheidung ist das einzige, was die +% Umgebungen selbst erledigen m"ussen. +% \begin{macro}{\@addmargin} +% \changes{v2.8q}{2001/11/29}{Neu} +% \changes{v2.9q}{2003/03/24}{\cs{labelsep} bleibt unver"andert} +% Der Rest wird von diesem Makro erledigt. +% \begin{macrocode} +\newenvironment{addmargin}{% + \@tempswafalse\@addmargin + }{\endlist} +\newenvironment{addmargin*}{% + \@tempswafalse + \if@twoside\ifthispageodd{}{\@tempswatrue}\fi + \@addmargin + }{\endlist} +\newcommand*{\@addmargin}[2][\@tempa]{% + \@tempcnta=\@listdepth + \list{}{% + \if@tempswa + \def\@tempa{\leftmargin}% + \setlength{\leftmargin}{#2}% + \setlength{\rightmargin}{#1}% + \else + \def\@tempa{\rightmargin}% + \setlength{\rightmargin}{#2}% + \setlength{\leftmargin}{#1}% + \fi + \setlength{\listparindent}{\parindent}% + \setlength{\itemsep}{\parskip}% + \setlength{\itemindent}{\z@}% + \setlength{\topsep}{\z@}% + \setlength{\parsep}{\parskip}% + \setlength{\partopsep}{\parskip}% + \let\makelabel\@gobble + \setlength{\labelwidth}{\z@} + \@listdepth=\@tempcnta% + }% + \item[]% + } +% \end{macrocode} +% \end{macro} +% \end{environment} +% \end{environment} +% +% +% \subsection{Abstract (Zusammenfassung)} +% \begin{environment}{abstract} +% |scrartcl| und |scrreprt| bieten die M"oglichkeit einer Zusammenfassung, +% eines sogenannten Abstracts. Wenn eine Titelseite verlangt wurde, +% wird auch die Zusammenfassung auf eine eigene Seite gesetzt. +% +% |scrbook| kennt kein Abstract. +% \changes{v2.3a}{1995/07/08}{\cs{@endparpenalty} zur Verhinderung eines +% Seitenumbruchs nach dem Abstract-Kopf +% eingef"ugt.} +% \changes{v2.3g}{1996/01/14}{\cs{@beginparpenalty} zur Verhinderung eines +% Seitenumbruchs vor dem Abstract-Kopf +% eingef"ugt.} +% \changes{v2.7a}{2001/01/04}{Statt \cs{section*} wird nun \cs{addsec*} +% verwendet, damit die Kolumnentitel korrekt +% behandelt werden.} +% \begin{macrocode} +%<*!scrbook&!scrlettr> +\if@titlepage + \newenvironment{abstract}{% + \titlepage + \null\vfil + \@beginparpenalty\@lowpenalty + \if@abstrt + \begin{center} + \normalfont\sectfont\nobreak\abstractname + \@endparpenalty\@M + \end{center}\fi} + {\par\vfil\null\endtitlepage} +\else + \newenvironment{abstract}{% + \if@twocolumn\if@abstrt + \addsec*{\abstractname}\fi% + \else + \if@abstrt + \small + \begin{center}% + {\normalfont\sectfont\nobreak\abstractname + \vspace{-.5em}\vspace{\z@}}% + \end{center}\fi% + \quotation + \fi} + {\if@twocolumn\else\endquotation\fi} +\fi +%</!scrbook&!scrlettr> +% \end{macrocode} +% \end{environment} +% +% \subsection{Umgebung f"ur die Titelseite} +% +% \begin{environment}{titlepage} +% Die Titelseite bedarf ebenfalls einer gesonderter Umgebung. Beim +% zweispaltigen Layout soll die Titelseite z.\,B. einspaltig gedruckt +% werden. Briefe kennen keine Titelseiten also auch nicht diese +% Umgebung. +% \begin{macrocode} +%<*!scrlettr> +\newenvironment{titlepage} + {% +%<!scrartcl> \cleardoublepage + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse\newpage + \fi + \thispagestyle{empty}% + \if@compatibility + \setcounter{page}{0} + \fi}% + {\if@restonecol\twocolumn \else \newpage \fi + } +%</!scrlettr> +% \end{macrocode} +% \end{environment} +% +% \subsection{Randmarkierung} +% \begin{macro}{\marginline} +% Das \textsf{Script} Paket stellt zus"atzlich ein Randzeilenmakro zur +% Verf"ugung, das je nach gerader oder ungerader Seite in doppelseitigen +% Layout rechts- oder linksb"undig gesetzt werden mu"s. +% \changes{v2.4l}{1997/02/06}{Die Definition mit Hilfe des optionalen +% Parameters von \cs{marginpar} deutlich +% vereinfacht.} +% \changes{v2.8q}{2001/11/27}{Fehlende Klammern erg"anzt} +% \begin{macrocode} +\newcommand\marginline[1]{\marginpar[\raggedleft{#1}]{\raggedright #1}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Anhang} +% \begin{macro}{\appendix} +% Wird der Anhang aktiviert, so werden Kapitel zuk"unftig mit Buchstaben +% "`numeriert"'. Briefe kennen keinen Anhang. +% \changes{v2.2d}{1995/05/28}{\texttt{scrartcl} ben"otigt keinen Z"ahler +% f"ur chapter.} +% \changes{v2.3c}{1995/08/06}{Alternative Numerierung bei Verwendung +% eines Anhangs.} +% \changes{v2.8}{2001/06/15}{\cs{appendixmore} wird beachtet} +% \changes{v2.8e}{2001/07/10}{\cs{@altsecnumformattrue} wird nicht +% l"anger ausgef"uhrt} +% \changes{v2.8o}{2001/09/19}{\cs{par} eingef"ugt} +% \begin{macrocode} +%<*!scrlettr> +\newcommand*\appendix{\par% +%<*scrartcl> + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \renewcommand*\thesection{\@Alph\c@section}% +%</scrartcl> +%<*scrreprt|scrbook> + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand*\@chapapp{\appendixname}% + \renewcommand*\thechapter{\@Alph\c@chapter}% +%</scrreprt|scrbook> + \@ifundefined{appendixmore}{}{\appendixmore}} +%</!scrlettr> +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Flie"sumgebungen} +% +% Briefe kennen keine Flie"sumgebungen +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% F"ur die Flie"sumgebungen m"ussen verschiedene Konstanten definiert +% werden, die Aufteilung zwischen Text und Flie"sumgebung und +% "ahnliches regeln. +% +% \begin{environment}{figure} +% \changes{v2.2c}{1995/05/25}{Abbildungsausgabe auf CJK umgestellt.} +% \changes{v2.8h}{2001/07/19}{\cs{caption} wird explizit zu +% \cs{captionbelow}} +% Zun"achst werden "`figures"', also Abbildungen behandelt. +% \begin{Counter}{figure} +% \begin{macro}{\thefigure} +% Daf"ur wird ein neuer Z"ahler ben"otigt, der bei der Buch- und der +% Bericht-Klasse mit \cs{chapter} zur"uckgesetzt wird. +% \begin{macro}{\fps@figure} +% Die Standardplatzierung f"ur Abbildungen ist \emph{t}op, +% \emph{b}ottom, \emph{p}age. +% \begin{macro}{\ftype@figure} +% Um die verschiedenen \emph{float}-Typen unterscheiden zu k"onnen, +% ben"otigen sie eine Nummer. Abbildungen bekommen hier willk"urlich +% die Nummer 1. +% \begin{macro}{\ext@figure} +% Die Extension der Datei f"ur das Verzeichnis. +% \begin{macro}{\fnum@figure} +% Die Ausgabe der Abbildungsnummer. +% \begin{macrocode} +%<!scrartcl>\newcounter{figure}[chapter] +%<scrartcl>\newcounter{figure} +\renewcommand*\thefigure{% +%<!scrartcl> \thechapter.% + \@arabic\c@figure} +\newcommand*{\fps@figure}{tbp} +\newcommand*{\ftype@figure}{1} +\newcommand*{\ext@figure}{lof} +\newcommand*{\fnum@figure}{\figureformat} +\newenvironment{figure} + {\let\caption\captionbelow\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\let\caption\captionbelow\@dblfloat{figure}} + {\end@dblfloat} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{Counter} +% \end{environment} +% +% \begin{environment}{table} +% \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt.} +% \changes{v2.8h}{2001/07/19}{Bei Tabellen kann der Default f"ur +% \cs{caption} von Unter- auf +% "Uberschriften ge"andert werden} +% Auch verschiebbare Tabellen sind m"oglich. +% \begin{Counter}{table} +% \begin{macro}{\thetable} +% \begin{macro}{\fps@table} +% \begin{macro}{\ftype@table} +% \begin{macro}{\ext@table} +% \begin{macro}{\fnum@table} +% Die einzelnen Makros +% daf"ur werden entsprechend denen f"ur Abbildungen definiert. +% \begin{macrocode} +%<scrartcl>\newcounter{table} +%<!scrartcl>\newcounter{table}[chapter] +\renewcommand*\thetable{% +%<!scrartcl> \thechapter.% + \@arabic\c@table} +\newcommand*{\fps@table}{tbp} +\newcommand*{\ftype@table}{2} +\newcommand*{\ext@table}{lot} +\newcommand*{\fnum@table}{\tableformat} +\newenvironment{table} + {\if@tablecaptionabove\let\caption\captionabove% + \else\let\caption\captionbelow\fi\@float{table}} + {\end@float} +\newenvironment{table*} + {\if@tablecaptionabove\let\caption\captionabove% + \else\let\caption\captionbelow\fi\@dblfloat{table}} + {\end@dblfloat} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{Counter} +% \end{environment} +% +% +% \begin{macro}{\ifthispageodd} +% \changes{v2.8q}{2001/11/22}{Neu} +% \changes{v2.9l}{2002/03/28}{stabilisiert} +% H"aufig wird mit |\ifodd\value{page}| getestet, ob man sich gerade +% auf einer rechten oder einer linken Seite befindet. Dummerweise +% funktioniert das aber genaugenommen nur zuf"allig manchmal. Ob man +% sich auf einer linken oder einer rechten Seite befindet, ergibt sich +% n"amlich erst bei der Ausgabe. Deshalb wird hier ein Makro +% definiert, das "uber eine Art Label-Mechanismus arbeitet. Es werden +% bewusst keine echten |\label| und |\pageref| verwendet, weil diese +% Befehle von verschiedenen Paketen manipuliert werden. +% +% \begin{macro}{\new@tpo@label} +% \changes{v2.8q}{2001/11/22}{Neu} +% Definition eines neuen \emph{true}-\emph{page}-\emph{odd} +% Labels. Wird in der \texttt{aux}-Datei verwendet. +% \begin{macrocode} +\newcommand*{\new@tpo@label}[2]{% + \expandafter\gdef\csname scr@tpo@#1\endcsname{#2}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ref@tpo@label} +% \changes{v2.8q}{2001/11/22}{Neu} +% Dieses Makro referenziert ein \emph{true}-\emph{page}-\emph{odd} +% Label. Ist das Label nicht definiert, so wird stattdessen the +% aktuelle Seitenzahl verwendet. +% \begin{macrocode} +\newcommand*{\ref@tpo@label}[1]{% + \expandafter\ifx\csname scr@tpo@#1\endcsname\relax\value{page}% + \else\csname scr@tpo@#1\endcsname\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scr@tpo} +% \changes{v2.8q}{2001/11/22}{Neu} +% Es wird ein Z"ahler ben"otigt, der die aktuelle Nummer der Anfrage +% beinhaltet. +% \begin{macrocode} +\newcommand*{\scr@tpo}{0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\is@thispageodd} +% \changes{v2.8q}{2001/11/22}{Neu} +% \changes{v2.9l}{2003/01/28}{renamed \cs{if@thispageodd}} +% Dieses Makro macht die eigentliche Arbeit. Es funktioniert wie ein +% normales \cs{iffalse} oder \cs{iftrue}. Da "uber die +% \texttt{aux}-Datei gearbeitet wird, funktioniert das Ganze nur, wenn +% die Datei auch geschrieben wird und min. zwei \LaTeX-L"aufe +% erfolgen. +% \begin{macrocode} +\newcommand*{\is@thispageodd}{% + \begingroup% + \@tempcnta=\scr@tpo% + \advance\@tempcnta by\@ne% + \xdef\scr@tpo{\the\@tempcnta}% + \@bsphack + \protected@write\@auxout{}{% + \string\new@tpo@label{\scr@tpo}{\noexpand\the\value{page}}}% + \@esphack + \count@\ref@tpo@label{\scr@tpo}\relax + \ifodd\count@ + \aftergroup\thispagewasoddtrue + \else + \aftergroup\thispagewasoddfalse + \fi + \endgroup +} +% \end{macrocode} +% Damit wenigstens halbwegs getestet werden kann, ob ein neuer Lauf +% durchgef"uhrt werden muss, wird hier noch eine weitere Information +% in die \texttt{aux}-Datei geschrieben und auch gleich der +% entsprechende Test vorgenommen. +% \begin{macrocode} +\AtEndDocument{% + \if@filesw\immediate\write\@auxout{% + \string\gdef\string\scr@tpo@lst{\scr@tpo}}\fi% + \ifx\scr@tpo@lst\scr@tpo\else\ifnum \scr@tpo>0 + \ClassWarningNoLine{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{Rerun to get odd- an even-page-stuff right}% + \fi\fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifthispagewasodd} +% \changes{v2.9l}{2003/01/20}{neuer Schalter} +% \begin{macro}{\thispagewasoddtrue} +% \begin{macro}{\thispagewasoddfalse} +% Dieser Schalter speichert auf Rolf Niepraschks speziellen Wunsch die +% letzte Entscheidung von \cs{ifthispageodd}. Vor dem ersten +% \cs{ifthispageodd} ist der Zustand undefiniert. Es ist auch nicht +% garantiert, dass die Entscheidung noch zutreffend ist. +% \begin{macrocode} +\newif\ifthispagewasodd +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Nun fehlt nur noch das eigentliche oben versprochene +% Anwendermacro. Das ist nun aber auch kein Problem mehr: +% \begin{macrocode} +\newcommand{\ifthispageodd}{% + \is@thispageodd + \ifthispagewasodd + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\caption} +% \changes{v2.2c}{1995/05/25}{Flie"stitel auf CJK umgestellt.} +% Es ist m"oglich, die Flie"sumgebungen mit einem Titel und einer +% Beschreibung zu versehen. Diese wird vom ggf. etwas abgesetzt. +% \begin{Length}{abovecaptionskip} +% \begin{Length}{belowcaptionskip} +% Um wieviel ist in zwei L"angenregistern gespeichert: +% \begin{macrocode} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +% \end{macrocode} +% \end{Length} +% \end{Length} +% \begin{macro}{\if@captionabove} +% \changes{v2.8h}{2001/07/19}{Neu} +% Ob es sich um eine Unter- oder "Uberschrift handelt und also +% \cs{abovecaptionskip} davor und \cs{belowcaptionskip} danach steht +% oder umgekehrt, wird "uber diesen Schalter gesteuert. Voreingestellt +% sind Unterschriften. +% \begin{macrocode} +\newif\if@captionabove\@captionabovefalse +% \end{macrocode} +% \end{macro} +% \begin{macro}{\scr@caption} +% \changes{v2.8h}{2001/07/19}{Neu} +% \begin{macro}{\captionabove} +% \changes{v2.8h}{2001/07/19}{Neu} +% \begin{macro}{\captionbelow} +% \changes{v2.8h}{2001/07/19}{Neu} +% Damit "uberhaupt zwischen Unter- und "Uberschriften unterschieden +% werden kann, muss zun"achst das Originalmakro gesichert werden. Dies +% geschieht erst zu Beginn des Dokuments, damit Pakete ggf. noch ihre +% eigenen Definitionen von \cs{caption} vornehmen k"onnen. Das +% \texttt{hyperref}-Paket ist so ein Kandidat. +% \begin{macrocode} +\newcommand{\scr@caption}{} +\AtBeginDocument{\let\scr@caption\caption} +% \end{macrocode} +% \end{macro} +% Jetzt ist es m"oglich durch einfaches Umlegen des Schalters f"ur die +% korrekte Darstellung zu sorgen: +% \begin{macrocode} +\newcommand{\captionabove}{\@captionabovetrue\scr@caption} +\newcommand{\captionbelow}{\@captionabovefalse\scr@caption} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{environment}{captionbeside} +% \changes{v2.8q}{2001/11/22}{Neu} +% Um einiges komplizierter als die Beschreibung unter oder "uber die +% Tabelle oder Abbildung zu setzen, ist der Versuch, sie daneben zu +% setzen. Dies funktioniert frunds"atzlich auch nicht mit +% \texttt{longtable}-Tabellen. +% +% \begin{macro}{\scap@pos} +% \changes{v2.8q}{2001/11/22}{Neu} +% Hier wird gespeichert, ob die Beschreibung links oder rechts vom +% Rest stehen soll. Voreingestellt ist rechts davon. +% \begin{macrocode} +\newcommand*{\scap@pos}{r} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scap@valign} +% \changes{v2.8q}{2001/11/22}{Neu} +% Hier wird gespeichert, ob die beiden Boxen (siehe Definition der +% Umgebung) \emph{\textbf{t}op}, \emph{\textbf{b}ottem} oder +% \emph{\textbf{c}enter} ausgerichtet werden sollen. Andere Buchstaben +% sind nicht erlaubt. Voreingestellt ist \emph{\textbf{b}ottem}. +% \begin{macrocode} +\newcommand*{\scap@valign}{b} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scap@caption} +% \changes{v2.8q}{2001/11/22}{Neu} +% Die Beschreibung, die der Umgebung als Parameter "ubergeben wird, +% muss zwischengespeichert werden. Hier wird lediglich das Makro +% daf"ur reserviert. +% \begin{macrocode} +\newcommand*{\scap@caption}{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scap@width} +% \changes{v2.8q}{2001/11/22}{Neu} +% Die Breite, die Tabelle bzw. Abbildung einschlie"slich Beschreibung +% und insgesamt haben d"urften. Voreingestellt ist die gesamte +% verf"ugbare Breite. +% \begin{macrocode} +\newcommand*{\scap@width}{\linewidth} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scap@move} +% \changes{v2.8q}{2001/11/22}{Neu} +% Der Wert, um den die Tabelle bzw. Abbildung einschlie"slich +% Beschreibung nach rechts bzw. au"sen verschoben +% werden. Voreingestellt ist keine Verschiebung. +% \begin{macrocode} +\newcommand*{\scap@move}{\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scap@currentlabel} +% \changes{v2.8q}{2001/11/24}{Neu} +% Das |\caption| innerhalb einer Umgebung (|\parbox| und +% |captionbeside|) aufgerufen wird, w"urde ein |\label|, das zwar +% innerhalb der Gleitumgebung aber nach der |captionbeside|-Umgebung +% eingef"ugt wird, nicht die Gleitumgebung, sondern die umgebende +% Referenzebene referenzieren. Damit das nicht geschieht, wird in der +% |captionbeside|-Umgebung in der |\parbox| die aktuelle Referenz +% |\@currentlabel| in dem globalen Makro |\scap@currentlabel| +% zwischengespeichert und am Ende der |captionbeside|-Umgebung mit +% Hilfe von |\aftergroup| nach dem Ende der Umgebung +% wiederhergestellt. Da die |captionbeside|-Umgebung ohnehin nicht +% geschaltelt werden kann, funktioniert das problemlos. F"ur diese +% Aktion wird hier ein globales Makro reserviert. +% \begin{macrocode} +\newcommand*{\scap@currentlabel}{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifscap@alt} +% \changes{v2.8q}{2001/11/22}{Neuer Schalter} +% \begin{macro}{\scap@alttrue} +% \begin{macro}{\scap@altfalse} +% Der Schalter, der angibt, ob die Verschiebung |\scap@move| im +% doppelseitigen Modus aus linken Seiten vom rechten Rand aus nach +% links erfolgen soll. +% \begin{macrocode} +\newif\ifscap@alt +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@captionbeside} +% \changes{v2.8q}{2001/11/22}{Neu} +% \begin{macro}{\@@captionbeside} +% \changes{v2.8q}{2001/11/22}{Neu} +% \begin{macro}{\@@@captionbeside} +% \changes{v2.8q}{2001/11/22}{Neu} +% \begin{macro}{\@@@@captionbeside} +% \changes{v2.8q}{2001/11/22}{Neu} +% Die Umgebung soll einmal folgende Parameter besitzen: +% \begin{description} +% \item[(optional)] Verzeichniseintrag +% \item[(obligatorisch)] Beschreibung +% \item[(optional)] lokaler Wert f"ur |\scap@pos| +% \item[(optional)] lokaler Wert f"ur |\scap@width| +% \item[(optional)] lokaler Wert f"ur |\scap@move| +% \item[(*)] lokaler Wert f"ur \cs{ifscap@alt} (Stern gesetzt +% entspricht |\scap@alttrue| +% \end{description} +% Wie man sieht, sollte man bei Angabe aller optionalen Parameter auch +% bewusst den Stern setzen oder darauf verzichten. +% +% Damit alle Parameter ausgewertet werden k"onnen, werden einige +% Hilfsmakros ben"otigt. +% \begin{macrocode} +\newcommand*{\@captionbeside}{} +\long\def\@captionbeside[#1]#2{% + \@ifnextchar [%] + {\@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% + } +\newcommand*{\@@captionbeside}{} +\long\def\@@captionbeside[#1]#2[#3]{% + \def\scap@pos{#3}% + \@ifnextchar [%] + {\@@@captionbeside[{#1}]{#2}} + {\c@pti@nb@sid@[{#1}]{#2}}% + } +\newcommand*{\@@@captionbeside}{} +\long\def\@@@captionbeside[#1]#2[#3]{% + \def\scap@width{#3}% + \@ifnextchar [%] + {\@@@@captionbeside[{#1}]{#2}} + {\setlength{\@tempdima}{#3}% + \addtolength{\@tempdima}{-\linewidth}% + \setlength{\@tempdima}{-.5\@tempdima}% + \edef\scap@move{\the\@tempdima}% + \c@pti@nb@sid@[{#1}]{#2}}% + } +\newcommand*{\@@@@captionbeside}{} +\long\def\@@@@captionbeside[#1]#2[#3]{% + \def\scap@move{#3}% + \@ifstar + {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}} + {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\c@pti@nb@sid@b@x} +% \changes{v2.8q}{2001/11/22}{Neu} +% Es wird noch eines der kostbaren Boxregister ben"otigt. +% \begin{macrocode} +\newbox\c@pti@nb@sid@b@x +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@pti@nb@sid@} +% \changes{v2.8q}{2001/11/22}{Neu} +% Hier wird nun die Umgebung eigentlich ge"offnet, w"ahrend zuvor nur +% die Parameter ausgewertet wurden. +% \begin{macrocode} +\newcommand{\c@pti@nb@sid@}{} +\long\def\c@pti@nb@sid@[#1]#2{% + \def\scap@caption{\captionbelow[{#1}]{#2}}% + \begin{lrbox}{\c@pti@nb@sid@b@x}% + } +% \end{macrocode} +% \end{macro} +% +% Jetzt endlich k"onnen wir uns auf die Umgebung st"urzen. Die +% Umgebung zu starten ist einfach. Es wird ein Doppelargumentmakro +% ausgef"uhrt. +% \begin{macrocode} +\newenvironment*{captionbeside}{% + \@dblarg\@captionbeside% + }{% +% \end{macrocode} +% Komplizierter ist die Beendigung der Umgebung. Hier f"allt der +% gesamte Satzaufwand an. +% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch +% \cs{ifthispageodd} ersetzt} +% \begin{macrocode} + \end{lrbox}% + \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}% + \setlength{\@tempdimb}{\scap@width}% + \addtolength{\@tempdimb}{-\@tempdima}% + \addtolength{\@tempdimb}{-\columnsep}% + \ifdim \@tempdimb<2em + \ClassWarning{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + caption beside will be very, very small.\MessageBreak + In most cases this will result in overfull and + underfull\MessageBreak + \string\hbox\space messages% + }% + \fi% + \onelinecaptionsfalse + \setcapwidth[r]{\@tempdimb}% + \let\@tempa\scap@pos + \setlength{\@tempdimc}{\scap@move}% + \if i\scap@pos\def\@tempa{l}\fi + \if o\scap@pos\def\@tempa{r}\fi + \if@twoside + \ifthispageodd{}{% + \if o\scap@pos\def\@tempa{l}\fi + \if i\scap@pos\def\@tempa{r}\fi + \ifscap@alt + \addtolength{\@tempdimc}{\scap@width}% + \addtolength{\@tempdimc}{-\linewidth}% + \setlength{\@tempdimc}{-\@tempdimc}% + \fi + }% + \fi + \hspace*{\@tempdimc}% +% \end{macrocode} +% \changes{v2.9p}{2002/12/10}{\cs{@temdima} replaced by +% \cs{wd}\cs{c@pti@nb@sid@b@x}, because \cs{@temdima} would be changed} +% \begin{macrocode} + \if l\@tempa% + \rlap{% + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + \nobreak\hskip\columnsep% + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + }% + \else + \rlap{% + \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}% + \nobreak\hskip\columnsep% + \parbox[\scap@valign]{\@tempdimb}{\scap@caption + \global\let\scap@currentlabel\@currentlabel}% + }% + \fi + \par + \aftergroup\let\aftergroup\@currentlabel\aftergroup\scap@currentlabel + } +% \end{macrocode} +% \end{environment} +% +% +% \begin{macro}{\@makecaption} +% \changes{v2.3a}{1995/07/08}{\cs{setbox}\cs{tempboxa}\cs{hbox} durch +% \cs{sbox}\cs{@tempboxa} ersetzt.} +% \changes{v2.3a}{1995/07/08}{Minipage-Flag zur"uckgesetzt (ist das ok?).} +% \changes{v2.3f}{1995/12/09}{Fontumschaltung einheitlich f"ur lange und +% kurze Unter-/"Uberschriften.} +% \changes{v2.5g}{1999/10/09}{Neben den komplett h"angenden +% Unter-/"Uberschriften sind nun auch nicht +% h"angende oder teilweise h"angende m"oglich.} +% Bis Version 2.5f sah die Definition wie folgt aus. +% \begin{verbatim} +% \long\def\@makecaption#1#2{% +% \vskip\abovecaptionskip +% \sbox\@tempboxa{{\caplabelfont #1\captionformat}{\capfont #2}}% +% \ifdim \wd\@tempboxa >\hsize +% \@hangfrom{{\caplabelfont #1\captionformat}}{\capfont #2\par} +% \else +% \global \@minipagefalse +% \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% +% \fi +% \vskip\belowcaptionskip} +% \end{verbatim} +% \begin{macro}{\ifdofullc@p} +% Nun jedoch wird das ganze etwas komplizierter. Als erstes wird ein +% Schalter ben"otigt, der angibt, ob auf die volle L"ange des +% "`Labels"' eingezogen werden soll, oder nicht: +% \begin{macrocode} +\newif\ifdofullc@p +% \end{macrocode} +% wobei die Standardeinstellung der volle Einzug ist, um zum bisherigen +% Verhalten kompatibel zu bleiben. +% \begin{macrocode} +\dofullc@ptrue +% \end{macrocode} +% \end{macro} +% \begin{macro}{\if@capbreak} +% \changes{v2.8j}{2001/07/30}{Neu} +% Au"serdem gibt es einen Schalter, der angibt, ob nach dem Label ein +% Umbruch erfolgen soll. Dies ist normalerweise nicht der Fall. +% \begin{macrocode} +\newif\if@capbreak\@capbreakfalse +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setcapindent} +% \changes{v2.8j}{2001/07/30}{\cs{if@capbreak} wird verwendet} +% \changes{v2.8l}{2001/08/17}{\cs{edef}\cs{cap@indent} statt +% \cs{def}\cs{cap@indent}} +% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von +% \texttt{caption2} umdefiniert} +% Dann wird weiter ein Befehl ben"otigt, mit dem der Benutzer die +% Weite des Einzugs selbst einstellen kann. Da intern f"ur die Weite +% ein Makro verwendet werden soll, findet hier sicherheitshalber eine +% Zuweisung an eine Dimension statt. So sollten Fehlermeldungen hier +% und nicht erst bei Verwendung auftauchen. Nat"urlich mu"s hier auch +% der automatische Einzug abgeschaltet werden. In der Sternform wird +% au"serdem daf"ur gesorgt, da"s zwischen "`Label"' und Beschreibung +% ein Umbruch erfolgt. In der normalen Version wird stattdessen f"ur +% Kompatibilit"at zu fr"uheren Versionen gesorgt. +% \begin{macro}{\@setcapindent} +% \begin{macro}{\@@setcaptindent} +% F"ur die Implementierung der Sternform werden zwei interne Makros +% ben"otigt. +% \begin{macrocode} +\newcommand*{\setcapindent}{\@ifstar{\@@setcapindent}{\@setcapindent}} +\newcommand*{\@setcapindent}[1]{ + \setlength{\@tempdima}{#1}% + \ifdim\@tempdima>\hsize\addtolength{\@tempdima}{-\hsize}\@capbreaktrue + \else\@capbreakfalse\fi + \edef\cap@indent{\the\@tempdima} + \dofullc@pfalse +} +\newcommand*{\@@setcapindent}[1]{ + \setlength{\@tempdima}{#1}% + \edef\cap@indent{\the\@tempdima} + \dofullc@pfalse\@capbreaktrue +} +\AfterPackage{caption2}{% + \renewcommand*{\setcapindent}{% + \ClassWarning{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + You're using package caption2.\MessageBreak + Because of this you should also use \string\captionstyle\space + and\MessageBreak + set length \string\captionindent\space instead if + using\MessageBreak + \string\setcapindent + } + \captionstyle{indent}% + \@ifstar{\setlength{\captionindent}}{\setlength{\captionindent}}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\setcaphanging} +% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von +% \texttt{caption2} umdefiniert} +% Andererseits soll es auch m"oglich sein, nachtr"aglich wieder den +% automatischen Einzug einzuschalten. Daf"ur gibt es ein weiteres Makro. +% \begin{macrocode} +\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse} +\AfterPackage{caption2}{% + \renewcommand*{\setcaphanging}{% + \ClassWarning{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + You're using package caption2.\MessageBreak + Because of this you should also use \string\captionstyle\MessageBreak + instead of \string\setcaphang + } + \captionstyle{hang}}} +% \end{macrocode} +% \end{macro} +% +% +% Nun aber zur neuen Definition der "Uber-/Unterschriften. Zun"achst geht +% alles wie gehabt. +% \changes{v2.5g}{1999/10/09}{\cs{@makecaption} per \cs{newcommand} +% definiert statt mit \cs{long}\cs{def}.} +% \changes{v2.8h}{2001/07/19}{Unterscheidung zwischen "Uber- und +% Unterschriften} +% \changes{v2.8j}{2001/07/30}{\cs{@makecaption} verwendet +% \cs{@@makecaption}} +% \changes{v2.8q}{2001/11/17}{die Sonderbehandlung f"ur einzeilige +% \emph{caption}s ist abschaltbar} +% \changes{v2.8q}{2001/11/17}{\emph{caption}s k"onnen in ihrer Breite +% beschr"ankt werden} +% \changes{v2.9q}{2004/01/30}{fehlendes \texttt{\%} eingef"ugt} +% \begin{macrocode} +\newcommand{\@makecaption}[2]{% + \if@captionabove\vskip\belowcaptionskip\else\vskip\abovecaptionskip\fi + \@@makecaption\@firstofone{#1}{#2}% + \if@captionabove\vskip\abovecaptionskip\else\vskip\belowcaptionskip\fi} +% \end{macrocode} +% \begin{macro}{\@@makecaption} +% Tats"achlich gesetzt wird die "Uber- bzw. Unterschrift mit diesem +% Makro. Dabei muss der erste Parameter entweder \verb|\@gobble| oder +% \verb|\@firstofone| sein. +% +% \begin{macro}{\cap@width} +% \changes{v2.8q}{2001/11/17}{Neues internes Makro} +% \begin{macro}{\cap@left} +% \changes{v2.8q}{2001/11/17}{Neues internes Makro} +% \begin{macro}{\cap@right} +% \changes{v2.8q}{2001/11/17}{Neues internes Makro} +% Die Breite der mehrzeiligen bzw. die maximale Breite der einzeiligen +% \emph{caption}s sowie das Makro das links und rechts von der Box mit +% der mehrzeiligen \emph{caption} aufgerufen wird. In der +% Voreinstellung wird f"ur Zentrierung gesorgt. +% \begin{macrocode} +\newcommand*{\cap@width}{\hsize} +\newcommand*{\cap@left}{\hfill} +\newcommand*{\cap@right}{\hfill} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\setcapwidth} +% \changes{v2.8q}{2001/11/17}{Neue} +% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch +% \cs{ifthispageodd} ersetzt} +% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempb} durch +% \cs{def}\cs{@tempb} ersetzt} +% Hier wird |\cap@width| gesetzt. Dabei werden optional auch +% |\cap@left| und |\cap@right| angepasst. +% \begin{macrocode} +\newcommand*{\setcapwidth}[2][]{% + \begingroup% + \setlength{\@tempdima}{#2}% + \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}% + \@tempa% + \begingroup + \expandafter\def\expandafter\@tempa\expandafter{#1}% + \def\@tempb{c}\ifx\@tempa\@tempb + \endgroup% + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}% + \else + \def\@tempb{l}\ifx\@tempa\@tempb + \endgroup% + \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}% + \else + \def\@tempb{r}\ifx\@tempa\@tempb + \endgroup% + \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}% + \else + \def\@tempb{i}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\relax + \let\cap@right=\hfill + \if@twoside + \ifthispageodd{}{% + \let\cap@left=\hfill + \let\cap@right=\relax + }% + \fi + }% + \else + \def\@tempb{o}\ifx\@tempa\@tempb + \endgroup + \def\cap@margin{% + \let\cap@left=\hfill + \let\cap@right=\relax + \if@twoside + \ifthispageodd{}{% + \let\cap@left=\relax + \let\cap@right=\hfill + }% + \fi + }% + \else + \ifx \@tempa\@empty\else + \ClassError{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% +%<scrartcl> scrartcl% + }{% + unknown optional position argument% + }{% + You've used `#1' as position argument at + \string\setcaptionwidth,\MessageBreak + but only ONE of `c', `l', `r', `i`, `o` ist + allowed.\MessageBreak + Argument will be ignored, if you'll continue.% + }% + \fi% + \endgroup% + \fi\fi\fi\fi\fi% + } +% \end{macrocode} +% Falls |caption2| geladen wird, "andert sich die Funktion. Das +% optionale Argument wird dann ignorriert. +% \begin{macrocode} +\AfterPackage{caption2}{% + \renewcommand*{\setcapwidth}[2][]{% + \ClassWarning{% + scrbook% + }{% + Ignorring optional argument of \string\setcapwidth!\MessageBreak + You're using package caption2.\MessageBreak + Because of this you should also use + \string\setcaptionwidth\MessageBreak + instead of \string\setcapwidth\MessageBreak + } + \setcaptionwidth{#2}}}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\cap@margin} +% \changes{v2.8q}{2001/11/17}{Neues internes Makro} +% Dieses Makro beinhaltet nicht den Wert der R"ander, sondern das +% Makro, mit dem innerhalb von |\@@makecaption| die Makros |\cap@left| +% und |\cap@right| neu definiert werden. Dies geschieht nur, wenn die +% R"ander mit |\setcapmargin| gesetzt werden. Vordefiniert ist also +% keinerlei Aktion. +% \begin{macrocode} +\newcommand*{\cap@margin}{} +\let\cap@margin=\relax% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\setcapmargin} +% \changes{v2.8q}{2001/11/17}{Neue} +% \begin{macro}{\@setcapmargin} +% \changes{v2.8q}{2001/11/17}{Neue} +% \changes{v2.9a}{2002/06/27}{\cs{if@thispageodd} durch +% \cs{ifthispageodd} ersetzt} +% \begin{macro}{\@@setcapmargin} +% \changes{v2.8q}{2001/11/17}{Neue} +% Statt die Breite der \emph{caption} zu setzen, k"onnen auch die +% R"ander gesetzt werden. In der Sternvariante werden im zweiseitigen +% Modus die R"ander auf linken Seiten vertauscht. +% \begin{macrocode} +\newcommand*{\setcapmargin}{\@ifstar{\@setcapmargin}{\@@setcapmargin}} +\newcommand*{\@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse% + \begingroup% + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup% + \def\noexpand\cap@width{\the\@tempdima}% + \noexpand\if@twoside% + \noexpand\ifthispageodd{% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + }{% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}% + }% + \noexpand\else% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}% + \noexpand\fi} + \@tempa}% + } +\newcommand*{\@@setcapmargin}[2][\@tempdimb]{% + \def\cap@margin{% + \onelinecaptionsfalse% + \begingroup% + \setlength{\@tempdima}{\hsize}% + \setlength{\@tempdimb}{#2}% + \addtolength{\@tempdima}{-\@tempdimb}% + \setlength{\@tempdimc}{#1}% + \addtolength{\@tempdima}{-\@tempdimc}% + \edef\@tempa{\endgroup% + \def\noexpand\cap@width{\the\@tempdima}% + \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}% + \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}}% + \@tempa}% + } +% \end{macrocode} +% Wenn |caption2| geladen ist, "andert sich die Bedeutung. +% \begin{macrocode} +\AfterPackage{caption2}{% + \renewcommand*{\@setcapmargin}[2][\@tempdimb]{% + \setlength{\@tempdimb}{#2}% + \setlength{\@tempdima}{#1}% + \ifdim\@tempdima\@tempdimb\else + \ClassWarning{% + scrbook% + }{% + Can set only centered caption!\MessageBreak + You're using package caption2.\MessageBreak + Because of this you should also use + \string\setcaptionmargin\MessageBreak + instead of \string\setcapmargin + } + \fi + \addtolength{\@tempdimb}{\@tempdimb}% + \setcaptionmargin{.5\@tempdimb}} + \let\@@setcapmargin=\@setcapmargin + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Jetzt aber zum Eigentlichen. Die Breite der \emph{caption} muss nur +% bestimmte werden, wenn |onelinecaption| verwendet wird. Das bedeutet +% auch, dass bei |noonelinecaption| das Problem mit dem Hochz"ahlen +% der Fu"snoten nicht auftritt. +% \changes{v2.8q}{2002/05/17}{Das Problem mit doppelten Fu"snoten behoben.} +% \changes{v2.9q}{2004/01/30}{\cs{vbox} durch \cs{vtop} ersetzt} +% \changes{v2.9q}{2004/01/30}{\cs{strut} vor \cs{cap@left} und nach +% \cs{cap@right} eingef"ugt} +% \begin{macrocode} +\newcommand{\@@makecaption}[3]{% + \cap@margin% + \ifonelinecaptions% + \@tempcnta=\value{mpfootnote}\@tempcntb=\value{footnote}% + \let\scr@tmp@footnotetext=\@footnotetext + \let\@footnotetext=\@gobble + \sbox\@tempboxa{% + {\capfont#1{{\caplabelfont#2\captionformat}}% + #3}% + }% + \let\@footnotetext=\scr@tmp@footnotetext + \let\scr@tmp@footnotetext=\undefined + \setcounter{footnote}{\@tempcntb}\setcounter{mpfootnote}{\@tempcnta}% + \else + \sbox\@tempboxa{\hspace*{2\cap@width}}% + \fi + \begingroup% + \setlength{\@tempdima}{\wd\@tempboxa}% + \setlength{\@tempdima}{\cap@width}% + \ifdim \wd\@tempboxa >\@tempdima% + \strut\cap@left% + \vtop{\hsize=\cap@width% +% \end{macrocode} +% Im Fall, da"s nun also mehrzeilig gesetzt werden mu"s, ist zu +% unterscheiden, ob wie bisher voll h"angend gearbeitet werden soll +% oder nicht. In ersterem Fall machen wir das, wie bisher, allerdings +% wird der \cs{capfont} fr"uher aktiviert, damit darin auch globale +% Gr"o"sen"anderungen f"ur die "Uber/Unterschrift Platz +% finden. Au"serdem wird die die ge"anderte Parameter"ubergabe +% ber"ucksichtigt. +% \begin{macrocode} + \ifdofullc@p + {\capfont\@hangfrom{#1{{\caplabelfont#2\captionformat}}}{#3\par}} +% \end{macrocode} +% Im zweiten Fall ist nun zu unterscheiden, ob nach dem Label ein +% Umbruch erfolgen soll oder nicht. Dabei ist der Einzug zu beachten. +% Ist der Einzug negativ, so findet ebenfalls ein Umbruch statt und +% nur die erste Folgezeile wird eingezogen. +% \begin{macrocode} + \else% + \ifdim\cap@indent<\z@% + {\capfont#1{{\caplabelfont #2\captionformat\par}}\noindent% + \hspace*{-\cap@indent}#3\par} + \else% + \if@capbreak + {\capfont#1{{\caplabelfont #2\captionformat\par}}\noindent% + \@hangfrom{\hspace*{\cap@indent}}{#3\par}} + \else + {\capfont\@hangfrom{\hspace*{\cap@indent}}% + {\hspace{-\cap@indent}#1% + {{\caplabelfont#2\captionformat}}#3\par}} + \fi + \fi + \fi}% + \cap@right\strut% + \else +% \end{macrocode} +% \changes{v2.9r}{2004/06/11}{\cs{@tempboxa} neu erzeugen} +% \begin{macrocode} + \global \@minipagefalse + \sbox\@tempboxa{% + {\capfont#1{{\caplabelfont#2\captionformat}}% + #3}% + }% + \hb@xt@\hsize{\cap@left\box\@tempboxa\cap@right}% + \fi% + \endgroup} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\LT@makecaption} +% \changes{v2.8j}{2001/07/30}{Neu} +% \changes{v2.8k}{2001/08/15}{Keine Umdefinierung, wenn das +% \texttt{caption2}-Paket erkannt oder die Option \texttt{origlongtable} +% gesetzt wurde} +% \changes{v2.8q}{2001/11/18}{Breite und Anordnung wird "uber +% \textsf{KOMA-Script}-Makros bestimmt} +% \changes{v2.8q}{2001/11/18}{Verwendung von \cs{AfterPackage}} +% \changes{v2.9s}{2004/08/11}{vertikale Ausrichtung korrigiert} +% \begin{macro}{\LT@array} +% \changes{v2.8q}{2001/11/18}{Neu} +% \begin{macro}{\LT@caption} +% \changes{v2.8q}{2001/11/18}{Neu} +% Ab Version 2.8j wird auf vielfachen Wunsch das +% \texttt{longtable}-Paket ber"ucksichtigt. Da Pakete aber nach +% Klassen geladen werden, kann dies erst nach dem Laden des Pakets +% aktiviert werden. Die Definition entspricht der obigen. Wird das +% |caption2|-Paket nach |longtable| geladen, so wird automatisch die +% Definition von |caption2| verwendet. Wird |caption2| vor |longtable| +% geladen, so liegt voraussichtlich eine Fehlbedienung vor, auf die +% hingewiesen wird. +% \begin{macrocode} +\AfterPackage{longtable}{% + \@ifpackageloaded{caption2}{\@komalongtablefalse% + \ClassWarning{% +%<scrbook> scrbook}{% +%<scrreprt> scrreprt}{% +%<scrartcl> scrartcl}{% + you've loaded package caption2 before package\MessageBreak + longtable!\MessageBreak + Because of this package caption2 isn't able to + control\MessageBreak + \string\caption\space at longtables. After loading package + caption2\MessageBreak + KOMA-Script also doesn't control \string\caption.\MessageBreak + I think, you should load package caption2 after + package\MessageBreak + longtable% + }}{} + \if@komalongtable + \renewcommand{\LT@makecaption}[3]{% + \noalign{% + \if@captionabove + \vskip\belowcaptionskip + \else + \vskip\abovecaptionskip + \fi + }% + \LT@mcol\LT@cols c{% + \hbox to\z@{\hss\parbox[t]\linewidth{% + \@@makecaption{#1}{#2}{#3}% + \endgraf + \if@captionabove + \vskip\abovecaptionskip + \else + \vskip\belowcaptionskip + \fi + }% + \hss + }% + }% + }% + \newcommand*{\scr@LT@array}{}% + \let\scr@LT@array=\LT@array% + \renewcommand*{\LT@array}{% + \let\scr@caption=\LT@caption + \def\captionabove{\noalign{\global\@captionabovetrue}% + \scr@caption}% + \def\captionbelow{\noalign{\global\@captionabovefalse}% + \scr@caption}% + \if@tablecaptionabove + \let\LT@caption=\captionabove + \else + \let\LT@caption=\captionbelow + \fi + \scr@LT@array} + \ClassInfo{% +%<scrbook> scrbook}{% +%<scrreprt> scrreprt}{% +%<scrartcl> scrartcl}{% + longtable captions redefined} + \fi + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\fs@komaabove} +% \changes{v2.8j}{2001/07/30}{Neu} +% \begin{macro}{\fs@komabelow} +% \changes{v2.8j}{2001/07/30}{Neu} +% \begin{macro}{\floatc@komascript} +% \changes{v2.8j}{2001/07/30}{Neu} +% Ab Version 2.8j werden f"ur das \texttt{float}-Paket zwei float-Stile +% Namens \texttt{komaabove} und \texttt{komabelow} definiert. Da +% m"oglicherweise auch andere +% Pakete darauf zur"uckgreifen, wird das unabh"angig von der Existenz +% von \texttt{float} getan. Verwendet wird dies innerhalb von +% KOMA-Script jedoch nicht. Es werden au"serdem interne Makros von +% \texttt{float} verwendet! +% \begin{macrocode} +\newcommand*{\fs@komaabove}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip} + \let\@fs@post\@empty + \let\@fs@iftopcapt\iftrue} +\newcommand*{\fs@komabelow}{% + \let\@fs@capt\floatc@komascript + \let\@fs@pre\@empty + \def\@fs@mid{\vskip\abovecaptionskip} + \let\@fs@post\@empty + \let\@fs@iftopcapt\iffalse} +\newcommand{\floatc@komascript}{\@@makecaption\@firstofone} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{"`Alte"' Font-Auswahlbefehle} +% +% \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.2c}{1995/05/25}{nicht mehr mathematisch.} +% \changes{v2.3a}{1995/07/08}{Keine Unterscheidung mehr f"ur den +% Kompatibilit"atsmodus.} +% Um die Umstellung von \LaTeX\ auf \LaTeXe\ zu erleichtern, gibt es +% die alten Font-Auswahlbefehle |\rm|, |\sf|, |\tt|, |\bf|, |\it|, |\sl| +% und |\sc| auch in den \emph{classes}. Es ist zu beachten, da"s diese +% Befehle hier nach dem alten Fontauswahlverfahren arbeiten. Es werden +% also immer alle Parameter zugleich ge"andert. Somit ist zu empfehlen, +% da"s statt dieser Befehle zuk"unftig in der Regel die neuen +% |\text..|-Befehle verwendet werden. +% +% Der aus der \textsf{Script 2.0}-Familie bekannte Befehl |\sfb| ist hier +% ebenfalls definiert. +% \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} +% +% \begin{macro}{\cal} +% \changes{v2.3}{1995/06/25}{Der Befehl ist in \LaTeX nicht mehr definiert. +% Deshalb wird er nun neu und gleich robust +% deklariert. Daf"ur f"allt \cs{pcal} weg.} +% \changes{v2.3g}{1996/01/14}{"Uberfl"ussige Klammerpaare entfernt.} +% \begin{macro}{\mit} +% \changes{v2.3}{1995/06/25}{Der Befehl ist in \LaTeX nicht mehr definiert. +% Deshalb wird er nun neu und gleich robust +% deklariert. Daf"ur f"allt \cs{pmit} weg.} +% \changes{v2.3g}{1996/01/14}{"Uberfl"ussige Klammerpaare entfernt.} +% Die beiden Befehle |\cal| und |\mit| war bis zur \LaTeX-Version vom +% 1.12.1994 patch level 3 noch im Kernal definiert. Jetzt sind die beiden +% den classes "uberlassen. Hier ist die Definition aus den Standard-classes +% "ubernommen. +% \begin{macrocode} +\DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Font-Variablen} +% \begin{macro}{\descfont} +% \begin{macro}{\sectfont} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \begin{macro}{\pnumfont} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \begin{macro}{\headfont} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \begin{macro}{\capfont} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \changes{v2.8n}{2001/09/06}{f"ur Briefe nicht l"anger definiert} +% \begin{macro}{\caplabelfont} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \changes{v2.8n}{2001/09/06}{f"ur Briefe nicht l"anger definiert} +% \begin{macro}{\titlefont} +% \changes{v2.8p}{2001/09/22}{Neu} +% \begin{macro}{\subject@font} +% \changes{v2.8q}{2002/01/14}{Neu} +% \begin{macro}{\baddr@font} +% \changes{v2.8q}{2002/01/22}{Neu} +% Das \textsf{Script}-Paket definiert einige Font-Variablen, f"ur +% verschiedene Gestaltungsbereiche wie "Uberschriften, Unterschriften oder +% die Paginierung. +% \begin{macrocode} +\newcommand*\descfont{\sffamily\bfseries} +\newcommand*\sectfont{\normalcolor\sffamily\bfseries} +\newcommand*\pnumfont{\normalfont\normalcolor} +\newcommand*\headfont{\normalfont\normalcolor\slshape} +%<!scrlettr>\newcommand*\capfont{\normalfont\normalcolor} +%<!scrlettr>\newcommand*\caplabelfont{\normalfont\normalcolor} +\newcommand*\titlefont{\sectfont} +%<scrlettr>\newcommand*{\subject@font}{\normalfont\normalcolor\bfseries} +%<scrlettr>\newcommand*{\baddr@font}{\sffamily} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setkomafont} +% \changes{v2.8o}{2001/09/14}{Neu} +% Mit Hilfe dieses Makros kann die Schriftart von +% KOMA-Script-Elementen gesetzt werden. +% \begin{macrocode} +\newcommand*{\setkomafont}[2]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \ClassError{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{font of element `#1' can't be set}{% + You've told me to redefine the font selection of the element,% + \MessageBreak% + but either no such element is known by KOMA-Script\MessageBreak + or the element does not use a special font selection} + }{% + \ClassError{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{font of element `#1' can't be set}{% + You've told me to redefine the font selection of the element,% + \MessageBreak% + but the element does not use a special font + selection. The\MessageBreak + The font of `#1' may be changed with element `\csname + scr@fnt@instead@#1\endcsname'} + }% + }{% + \expandafter\expandafter\expandafter\renewcommand% + \csname scr@fnt@#1\endcsname{#2}% + \@ifundefined{scr@fnt@wrn@#1}{}{% + \ClassWarning{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{\csname scr@fnt@wrn@#1\endcsname{#1}} + } + } +} +% \end{macrocode} +% \begin{macro}{\addtokomafont} +% \changes{v2.8p}{2001/09/22}{Neu} +% Dieses Makro funktioniert fast wie obiges, allerdings f"ugt es der +% vorhandenen Definition etwas an. +% \begin{macro}{\l@addto@macro} +% \changes{v2.8p}{2001/09/22}{Neu} +% Damit dies lokal m"oglich ist, wird eine lokal arbeitende Variante +% von \cs{g@addto@macro} ben"otigt, wie sie hier vorgestellt wird. +% \begin{macrocode} +\newcommand{\l@addto@macro}[2]{% + \begingroup% + \toks@\expandafter{#1#2}% + \edef\@tempa{\endgroup\def\noexpand#1{\the\toks@}}% + \@tempa} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newcommand*{\addtokomafont}[2]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \ClassError{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{font of element `#1' can't be extended}{% + You've told me to extend the font selection of the element,% + \MessageBreak% + but either no such element is known by KOMA-Script\MessageBreak + or the element does not use a special font selection} + }{% + \ClassError{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{font of element `#1' can't be extended}{% + You've told me to extend the font selection of the element,% + \MessageBreak% + but the element does not use a special font + selection. The\MessageBreak + The font of `#1' may be changed with element `\csname + scr@fnt@instead@#1\endcsname'} + }% + }{% + \expandafter\expandafter\expandafter\l@addto@macro% + \csname scr@fnt@#1\endcsname{#2}% + \@ifundefined{scr@fnt@wrn@#1}{}{% + \ClassWarning{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{\csname scr@fnt@wrn@#1\endcsname{#1}} + } + } +} +% \end{macrocode} +% +% \begin{macro}{\usekomafont} +% \changes{v2.8p}{2001/09/28}{Neu} +% Mit Hilfe dieses Makros kann auf die Schriftart von +% KOMA-Script-Elementen umgeschaltet werden. +% \begin{macrocode} +\newcommand*{\usekomafont}[1]{% + \@ifundefined{scr@fnt@#1}{% + \@ifundefined{scr@fnt@instead@#1}{% + \ClassError{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{font of element `#1' can't be used}{% + You've told me to use the font selection of the element,% + \MessageBreak% + but either no such element is known by KOMA-Script\MessageBreak + or the element does not use a special font selection} + }{% + \ClassWarning{% +%<scrartcl> scrartcl% +%<scrreprt> scrreprt% +%<scrbook> scrbook% +%<scrlettr> scrlttr2% + }{% + You've told me to use the font selection of the element,% + \MessageBreak% + but the element does not use a special font + selection. The\MessageBreak + The font of `#1' may be selected with element `\csname + scr@fnt@instead@#1\endcsname'.\MessageBreak + I fix this using font of `\csname + scr@fnt@instead@#1\endcsname'}% + }% + \@nameuse{scr@fnt@instead@#1}% + }{% + \@nameuse{scr@fnt@#1}% + }% + } +% \end{macrocode} +% +% \begin{macro}{\scr@fnt@descriptionlabel} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@title} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@sectioning} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@part} +% \changes{v2.8p}{2001/09/23}{Neu} +% \begin{macro}{\scr@fnt@partnumber} +% \changes{v2.8p}{2001/09/23}{Neu} +% \begin{macro}{\scr@fnt@chapter} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@wrn@chapter} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@section} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@subsection} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@subsubsection} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@paragraph} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@subparagraph} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@minisec} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@wrn@minisec} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@pagenumber} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@pagination} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@pagehead} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@pagefoot} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@caption} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@captionlabel} +% \changes{v2.8o}{2001/09/14}{Neu} +% \begin{macro}{\scr@fnt@subject} +% \changes{v2.8q}{2002/01/14}{Neu} +% \begin{macro}{\scr@fnt@backaddress} +% \changes{v2.8q}{2002/01/22}{Neu} +% \begin{macro}{\scr@fnt@fromaddress} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{macro}{\scr@fnt@fromname} +% \changes{v2.8q}{2002/01/28}{Neu} +% Damit die Fontumschaltung mit dem einen Befehl funktioniert, wird +% werden Makros ben"otigt, in denen die passenden Fontvariablen +% gespeichert sind und ggf. zus"atzliche Makros f"ur Warnungen. +% \begin{macrocode} +\newcommand*{\scr@fnt@descriptionlabel}{\descfont} +\newcommand*{\scr@fnt@title}{\titlefont} +\newcommand*{\scr@fnt@sectioning}{\sectfont} +%<*!scrlettr> +\newcommand*{\scr@fnt@part}{\size@part} +\newcommand*{\scr@fnt@partnumber}{\size@partnumber} +%<scrbook|scrreprt>\newcommand*{\scr@fnt@chapter}{\size@chapter} +\newcommand*{\scr@fnt@section}{\size@section} +\newcommand*{\scr@fnt@subsection}{\size@subsection} +\newcommand*{\scr@fnt@subsubsection}{\size@subsubsection} +\newcommand*{\scr@fnt@paragraph}{\size@paragraph} +\newcommand*{\scr@fnt@subparagraph}{\size@subparagraph} +\newcommand*{\scr@fnt@instead@minisec}{sectioning} +%</!scrlettr> +\newcommand*{\scr@fnt@pagenumber}{\pnumfont} +\let\scr@fnt@pagination=\scr@fnt@pagenumber +\newcommand*{\scr@fnt@pagehead}{\headfont} +\newcommand*{\scr@fnt@wrn@pagehead}[1]{% + font selection of elements `pagehead' and `pagefoot'\MessageBreak + changed, because you wanted to change font selection\MessageBreak + of element `#1'% +} +\let\scr@fnt@pagefoot=\scr@fnt@pagehead +\let\scr@fnt@wrn@pagefoot=\scr@fnt@wrn@pagehead +%<*!scrlettr> +\newcommand*{\scr@fnt@caption}{\capfont} +\newcommand*{\scr@fnt@captionlabel}{\caplabelfont} +%</!scrlettr> +%<scrlettr>\newcommand*{\scr@fnt@subject}{\subject@font} +%<scrlettr>\newcommand*{\scr@fnt@backaddress}{\baddr@font} +%<scrlettr>\newcommand*{\scr@fnt@fromaddress}{\faddr@font} +%<scrlettr>\newcommand*{\scr@fnt@fromname}{\fname@font} +% \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} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsection{Inhaltverzeichnis, Abbildungsverzeichnis und +% Tabellenverzeichnis} +% +% Diese Verzeichnisse existieren bei Briefen nicht. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{macro}{\tableofcontents} +% \begin{macro}{\@pnumwidth} +% \begin{macro}{\@tocrmarg} +% \begin{macro}{\@dotsep} +% \begin{Counter}{tocdepth} +% F"ur das Inhaltsverzeichnis m"ussen die Eintr"age f"ur die +% unterschiedlichen Kapiteleinteilungen definiert werden. +% \begin{macrocode} +\newcommand*\@pnumwidth{1.55em} +\newcommand*\@tocrmarg {2.55em} +\newcommand*\@dotsep{4.5} +%<!scrartcl>\setcounter{tocdepth}{2} +%<scrartcl>\setcounter{tocdepth}{3} +% \end{macrocode} +% \end{Counter} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\toc@heading} +% \changes{v2.3h}{1995/01/21}{Befehl, zum Setzen der "Uberschrift des +% Inhaltsverzeichnisses.} +% \begin{macrocode} +\newcommand*\toc@heading{\section*{\contentsname + \@mkboth{\contentsname}{\contentsname}}} +% \end{macrocode} +% \end{macro} +% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{toc@heading}.} +% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0 +% gesetzt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2001/11/14}{\cs{if@tocleft} bearbeiten} +% \begin{macro}{\before@starttoc} +% \changes{v2.8q}{2001/11/14}{Neu} +% Dieses Makro f"uhrt im Falle von |tocleft| am Anfang eines +% Verzeichnisses alle notwendigen "Anderungen durch, um das +% Verzeichnis entsprechend zu handhaben. +% \begin{macro}{\scr@dottedtocline} +% \changes{v2.9k}{2003/01/03}{auch das dritte Argument wird ge"andert} +% \begin{macro}{\scr@numberline} +% \begin{macro}{\last@l@number} +% Daf"ur werden ein paar Hilfsmakros ben"otigt, die vorsichtshalber +% global vordefiniert werden. +% \begin{macrocode} +\newcommand*{\scr@dottedtocline}{}% +\newcommand*{\scr@numberline}{}% +\newcommand*{\last@l@number}{}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\@l@number} +% \changes{v2.8q}{2001/11/14}{Neu} +% In diesem Makro wird w"ahrend der Erstellung des +% Inhaltsverzeichnisses die aktuelle Breite der Gliederungsnummer +% gespeichert. +% \begin{macro}{\set@l@number} +% \changes{v2.8q}{2001/11/14}{Neu} +% Dieses Makro ist daf"ur verantwortlich, dass zum einen |\@tempdima| +% f"ur den Aufruf von |\numberline| auf den richtigen Wert gesetzt +% wird, zum anderen wird die aktuelle gr"o"ste Breite der +% Gliederungsnummer hier angepasst. +% \begin{macrocode} +\newcommand*{\@l@number}{} +\newcommand*{\set@l@number}[1]{% + \settowidth{\@tempdima}{#1\enskip}% + \ifdim\@tempdima >\@l@number\relax% + \xdef\@l@number{\the\@tempdima}% + \fi% + \ifdim\@tempdima >\last@l@number \else% + \setlength{\@tempdima}{\last@l@number}% + \fi% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\newcommand*{\before@starttoc}[1]{ + \let\scr@dottedtocline=\@dottedtocline% + \renewcommand*{\@dottedtocline}[3]{% + \scr@dottedtocline{##1}{\z@}{\last@l@number}}% + \let\scr@numberline=\numberline% + \renewcommand*{\numberline}[1]{% + \set@l@number{##1}\scr@numberline{##1}}% + \gdef\@l@number{\z@}% + \@ifundefined{#1@l@number}{% + \def\last@l@number{2em}% + }{% + \expandafter\let\expandafter\last@l@number + \expandafter=\csname#1@l@number\endcsname% + }% + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\after@starttoc} +% \changes{v2.8q}{2001/11/14}{Neu} +% Dieses Makro schreibt am Ende den entsprechenden Eintrag in die +% \texttt{aux}-Datei. +% \begin{macrocode} +\newcommand*{\after@starttoc}[1]{% + \protected@write\@auxout{}{% + \string\gdef\expandafter\string\csname#1@l@number\endcsname{% + \@l@number}}% + } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\toc@l@number} +% \changes{v2.8q}{2001/11/14}{Neu} +% Dieses Makro wird innerhalb von |\tableofcontents| "uber +% |\before@starttoc| und |\after@starttoc| in der \texttt{aux}-Datei +% global definiert. Aus Sicherheitsgr"unden wird es hier global +% vordefiniert. +% \begin{macrocode} +\newcommand*{\toc@l@number}{} +% \end{macrocode} +% \end{macro} +% \changes{v2.9k}{2003/01/02}{Option \texttt{tocleft} wird nun auch +% bei Klasse \textsf{scrartcl} beachtet} +% \begin{macrocode} +\newcommand*{\tableofcontents}{% + \begingroup +%<*scrartcl> + \toc@heading% + \@parskipfalse\@parskip@indent% + \if@tocleft\before@starttoc{toc}\fi% + \@starttoc{toc}% + \if@tocleft\after@starttoc{toc}\fi% +%</scrartcl> +%<*scrreprt|scrbook> + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\contentsname + \@mkboth{\contentsname}{\contentsname}}% + \@parskipfalse\@parskip@indent% + \if@tocleft\before@starttoc{toc}\fi% + \@starttoc{toc}% + \if@tocleft\after@starttoc{toc}\fi% + \if@restonecol\twocolumn\fi +%</scrreprt|scrbook> + \endgroup +} +% \end{macrocode} +% +% \begin{macro}{\l@part} +% Nat"urlich werden auch Makros ben"otigt, um die Eintr"age in das +% Inhaltsverzeichnis zu formatieren. Beginnend mit den Eintr"agen f"ur +% \cs{part}. +% \begin{macrocode} +\newcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax +%<scrartcl> \addpenalty{\@secpenalty}% +%<!scrartcl> \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% +% \end{macrocode} +% \changes{v2.5e}{1998/07/17}{Ge"anderte part-Formatierung ragte in +% den linken Rand} +% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}} +% \begin{macrocode} + \setlength\@tempdima{2em}% + \if@tocleft + \ifx\toc@l@number\@empty\else + \setlength\@tempdima{0\toc@l@number}% + \fi + \fi + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth +% \end{macrocode} +% \changes{v2.5c}{1997/11/25}{Formatierung bei Zeilenumbruch im +% part-Eintrag korrigiert} +% \changes{v2.5e}{1998/07/17}{Beinhaltes \cs{sectfont} eine +% Gr"o"senangabe, so wird diese +% "uberschrieben} +% \begin{macrocode} + \leavevmode\sectfont\large + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par +%<*scrartcl> + \if@compatibility + \global\@nobreaktrue +% \end{macrocode} +% \changes{v2.3g}{1996/01/14}{Fehlendes Kommentarzeichen erg"anzt.} +% \begin{macrocode} + \everypar{\global\@nobreakfalse\everypar{}}% + \else +%</scrartcl> + \penalty\@highpenalty +%<scrartcl> \fi + \endgroup + \fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\l@chapter} +% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}} +% Kapiteleintr"age gibt es nat"urlich nicht bei der Artikel-Klasse. +% \begin{macrocode} +%<*scrreprt|scrbook> +\newcommand*\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \if@tocleft + \ifx\toc@l@number\@empty\else + \setlength\@tempdima{0\toc@l@number}% + \fi + \fi + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \sectfont + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +%</scrreprt|scrbook> +% \end{macrocode} +% \end{macro} +% \begin{macro}{\l@section} +% \changes{v2.9k}{2003/01/02}{Anpassung an Option \texttt{tocleft}} +% Bei der Artikel-Klasse folgt die Formatierung f"ur +% \cs{section}-Eintr"age, an Stelle der Eintr"age f"ur \cs{chapter} +% der Buch- oder der Bericht-Klasse. Bei diesen handelt es sich hier +% stattdessen um eine normale Ebene. +% \begin{macrocode} +%<*scrartcl> +\newcommand*\l@section[2]{% + \ifnum \c@tocdepth >\z@ + \addpenalty{\@secpenalty}% + \addvspace{1.0em \@plus\p@}% + \setlength\@tempdima{1.5em}% + \if@tocleft + \ifx\toc@l@number\@empty\else + \setlength\@tempdima{0\toc@l@number}% + \fi + \fi + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \sectfont + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \endgroup + \fi} +%</scrartcl> +%<*scrreprt|scrbook> +\newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} +%</scrreprt|scrbook> +% \end{macrocode} +% \end{macro} +% \begin{macro}{\l@subsection} +% \begin{macro}{\l@subsubsection} +% \begin{macro}{\l@paragraph} +% \begin{macro}{\l@subparagraph} +% Die "ubrigen Ebenen werden normal behandelt. +% \begin{macrocode} +%<*scrartcl> +\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} +%</scrartcl> +%<*scrreprt|scrbook> +\newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} +\newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} +\newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}} +%</scrreprt|scrbook> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\float@listhead} +% \changes{v2.8b}{2001/06/26}{Neu} +% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in +% \cs{float@listhead}} +% In Absprache mit Anselm Lingnau, dem Autor vor \texttt{float.sty}, +% wird ab Version 2.8b \cs{float@headings} zum Setzen des +% Kolumnentitels bei den Verzeichnissen verwendet, die +% \texttt{float.sty} f"ur neu definierte floats zur Verf"ugung +% stellt. Dabei definiert \texttt{float.sty} die Anweisung nur, wenn +% sie nicht bereits existiert. Die Zusammenarbeit wird dadurch +% verbessert. Da Anselm sich in letzter Minute entschlossen hat, das +% Makro \cs{float@listhead} zu nennen, wurde dies in Version 2.8g +% angepasst. +% +% \begin{macrocode} +\newcommand*{\float@listhead}[1]{% +%<scrartcl> \section*{#1}% +%<!scrartcl> \chapter*{#1}% + \@mkboth{#1}{#1}% +% \end{macrocode} +% \changes{v2.8q}{2001/11/14}{Dynamische Anpassung an die Nummer} +% Dies ist der passende Ort, um die Breite, die f"ur die Nummer des +% Gleitobjekts ben"otigt wird zu ermitteln und anzupassen, falls dies +% ge"unscht wird. Dazu findet eine lokale Umdefinierung von +% |\@starttoc| statt. Die Umdefinierung ist deshalb lokal, weil alle +% mir bekannten Verzeichnisse von Gleitobjekten innerhalb einer Gruppe +% ausgegeben werden. +% \begin{macrocode} + \if@dynlist% + \newcommand*{\scr@starttoc}{}% + \let\scr@starttoc=\@starttoc% + \renewcommand*{\@starttoc}[1]{% + \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}}% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\listoffigures} +% \begin{macro}{\lof@heading} +% \changes{v2.3h}{1995/01/21}{Befehl, zum Setzen der "Uberschrift des +% Abbildungsverzeichnisses.} +% \changes{v2.4d}{1996/04/11}{\cs{addsec} durch \cs{section*} ersetzt.} +% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}} +% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in +% \cs{float@listhead}} +% \begin{macrocode} +\newcommand*\lof@heading{\float@listhead{\listfigurename}} +% \end{macrocode} +% \end{macro} +% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lof@heading}.} +% \changes{v2.4k}{1996/12/13}{\cs{lof@heading} nicht nur bei scrartcl.} +% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0 +% gesetzt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \begin{macro}{\l@figure} +% \begin{macrocode} +\newcommand*\listoffigures{% + \begingroup% +%<*scrartcl> + \lof@heading% + \@parskipfalse\@parskip@indent% + \@starttoc{lof}% +%</scrartcl> +%<*scrreprt|scrbook> + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \lof@heading% + \@parskipfalse\@parskip@indent% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi +%</scrreprt|scrbook> + \endgroup +} +\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\listoftables} +% \begin{macro}{\lot@heading} +% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift des +% Tabellenverzeichnisses.} +% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} durch \cs{listtablename} +% ersetzt.} +% \changes{v2.8b}{2001/06/26}{Verwendung von \cs{float@headings}} +% \changes{v2.8g}{2001/07/18}{\cs{float@headings} umbenannt in +% \cs{float@listhead}} +% \begin{macrocode} +\newcommand*\lot@heading{\float@listhead{\listtablename}} +% \end{macrocode} +% \end{macro} +% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{lot@heading}.} +% \changes{v2.4k}{1996/12/13}{\cs{lot@heading} nicht nur bei scrartcl.} +% \changes{v2.8l}{2001/08/16}{Gruppe eingef"ugt und \cs{parskip} auf 0 +% gesetzt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \begin{macro}{\l@table} +% \begin{macrocode} +\newcommand*\listoftables{% + \begingroup +%<*scrartcl> + \lot@heading% + \@parskipfalse\@parskip@indent% + \@starttoc{lot}% +%</scrartcl> +%<*scrreprt|scrbook> + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \lot@heading% + \@parskipfalse\@parskip@indent% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi +%</scrreprt|scrbook> + \endgroup +} +\let\l@table\l@figure +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{Das Literaturverzeichnis} +% +% Dieses Verzeichnis existiert bei Briefen nicht. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{environment}{thebibliography} +% \begin{macro}{\setbibpreamble} +% \changes{v2.6c}{2000/06/10}{Neuer Befehl eingef"uhrt} +% \changes{v2.7j}{2001/05/27}{\cs{renewcommand} durch \cs{def} +% ersetzt zur Erh"ohung der +% \texttt{natbib}-Kompatibilit"at} +% \begin{macro}{\bibpreamble} +% \changes{v2.6c}{2000/06/10}{Neues Makro eingef"uhrt} +% \changes{v2.6d}{2000/07/20}{Makro funktioniert nachdem \cs{let} +% durch \cs{newcommand*} ersetzt wurde} +% \changes{v2.8q}{2002/01/10}{Wieder \cs{let}} +% \cs{bibpreamble} kann vom Benutzer mit \cs{setbibpreamble} auf +% einen Text gesetzt werden, der nach der "Uberschrift eingef"ugt +% wird. Dasselbe Makro wird von \texttt{natbib.sty} als \cs{relax} +% definiert; aus Kompatibilit"atsgr"unden wird hier vergleichbar +% verfahren und \cs{def} statt \cs{renewcommand} verwendet. +% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die +% theindex-Umgebung verschoben} +% Au"serdem wird ab Version 2.7j die Pr"aambel nicht mehr in +% \cs{bib@heading} gesetzt, sondern in der +% \texttt{thebibliography}-Umgebung. Dies dient ebenfalls der +% Kompatibilit"at mit natbib. +% \begin{macrocode} +\newcommand*{\bibpreamble}{\relax} +\let\bibpreamble\relax +\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\bib@heading} +% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift des +% Literaturverzeichnisses.} +% \changes{v2.6c}{2000/06/10}{Die Preambel wird gesetzt.} +% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet.} +% \changes{v2.7j}{2001/06/27}{Setzen der Pr"aambel in die +% thebibliography-Umgebung verschoben} +% \begin{macrocode} +\newcommand*\bib@heading{% +%<*scrartcl> + \section*{\refname} + \@mkboth{\refname}{\refname} +%</scrartcl> +%<*scrbook|scrreprt> + \chapter*{\bibname} + \@mkboth{\bibname}{\bibname} +%</scrbook|scrreprt> +} +% \end{macrocode} +% \end{macro} +% \changes{v2.2a}{1995/02/01}{In \texttt{scrartcl} \cs{bibname} +% vollst"andig durch \cs{refname} ersetzt.} +% \changes{v2.3g}{1996/01/14}{Implementierung von openbib ge"andert.} +% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{bib@heading}} +% \begin{Length}{bibindent} +% Nun werden noch die Umgebung f"ur das Literaturverzeichnis und der Befehl +% f"ur die einzelnen Eintr"age definiert. +% \begin{macrocode} +\newdimen\bibindent +\bibindent=1.5em +% \end{macrocode} +% \end{Length} +% \changes{v2.8q}{2002/01/10}{Leere Pr"aambel erkennen und gesondert +% behandeln} +% \changes{v2.9o}{2003/03/06}{\cs{bibpreamle} statt \cs{bibpreamble} +% mit \cs{@empty} vergleichen} +% \begin{macrocode} +\newenvironment{thebibliography}[1]{% +%<scrbook|scrreprt> \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else +%<scrbook|scrreprt> \setchapterpreamble{\bibpreamble}% +%<scrbook|scrreprt> \fi\fi + \bib@heading% +%<scrartcl> \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else +%<scrartcl> \noindent\bibpreamble\par\nobreak +%<scrartcl> \fi\fi + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand*\theenumiv{\@arabic\c@enumiv}}% + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} +{\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\newblock} +% \changes{v2.3g}{1996/01/14}{Grundeinstellung ge"andert.} +% \begin{macrocode} +\newcommand*\newblock{\hskip .11em\@plus.33em\@minus.07em} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@openbib@code} +% \changes{v2.3g}{1996/01/14}{Neues Makro.} +% \begin{macrocode} +\let\@openbib@code\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{Index} +% Dieses Verzeichnis existiert bei Briefen nicht. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \begin{environment}{theindex} +% \changes{v2.8d}{2001/07/05}{\cs{indexpagestyle} statt \texttt{plain}} +% \begin{macro}{\index@preamble} +% \changes{v2.6c}{2000/06/10}{Neues internes Makro eingef"uhrt} +% \begin{macro}{\setindexpreamble} +% \changes{v2.6c}{2000/06/10}{Neuer Befehl eingef"uhrt} +% \changes{v2.6d}{2000/07/20}{Befehl funktioniert nachdem \cs{let} +% durch \cs{newcommand*} ersetzt wurde} +% Analog zu \cs{bibpreamble} kann \cs{index@preamble} vom Benutzer mit +% \cs{setindexpreamble} auf einen Text gesetzt werden, der nach +% der Index"uberschrift eingef"ugt wird. Hier wird ein echtes internes +% Makro verwendet, da nicht auf Kompatibilit"at geachtet werden +% mu"s. +% \begin{macrocode} +\newcommand*{\index@preamble}{\relax} +\newcommand{\setindexpreamble}[1]{\renewcommand*{\index@preamble}{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\idx@heading} +% \changes{v2.3h}{1995/01/21}{Befehl zum Setzen der "Uberschrift +% des Indexes} +% \changes{v2.4c}{1995/04/04}{Kolumnentitel werden nun korrekt +% behandelt} +% \changes{v2.4g}{1996/11/04}{Index auch bei scrartcl wieder +% zweispaltig} +% \changes{v2.6c}{2000/06/10}{Verwendung von \cs{index@preamble} +% eingef"ugt} +% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die +% theindex-Umgebung verschoben} +% \changes{v2.9l}{2003/01/19}{\cs{if@twoside} durch +% \cs{if@openright} ersetzt} +% Bis Version 2.7a sah diese Definition so aus: +% \begin{verbatim} +% \newcommand*{\idx@heading}{% +% \if@twoside\cleardoublepage\else\clearpage\fi% +% \@mkboth{\indexname}{\indexname}% +% \twocolumn[% +% <scrartcl> \section*% +% <scrreprt|scrbook> \@makeschapterhead% +% {\indexname}\index@preamble] +% } +% \end{verbatim} +% Dagegen ist grunds"atzlich nichts zu sagen. Allerdings gibt es seit +% Version 2.7b das die neue Methode der Kapitel-Preambel, die extra +% eingef"uhrt wurde, um die \texttt{hyperref}-Links -- insbesondere +% den des Index -- zumindest bei Verwendung von \texttt{hpdftex.def} +% zu verbessern. Deshalb wurde die Implementierung entsprechend +% abge"andert. Au"serdem wurde das Setzen der Pr"aambel aus +% Konsistenzgr"unden in Version 2.7j "ubereinstimmten mit der +% \texttt{thebibliography}-Umgebung in die \texttt{theindex}-Umgebung +% verschoben. +% \begin{macrocode} +\newcommand*{\idx@heading}{% +%<scrreprt|scrbook> \if@openright\cleardoublepage\else\clearpage\fi% +%<scrartcl> \twocolumn[\section*{\indexname}] +%<scrreprt|scrbook> \twocolumn[\chapter*{\indexname}] + \@mkboth{\indexname}{\indexname}% +} +% \end{macrocode} +% \end{macro} +% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{idx@heading}} +% \changes{v2.7j}{2001/05/27}{Setzen der Pr"aambel in die +% theindex-Umgebung verschoben} +% Ein Index ist ebenfalls m"oglich. Dieser ist wie "ublich definiert. +% \begin{macrocode} +\newenvironment{theindex} + {\if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ +%<scrbook|scrreprt> \setchapterpreamble{\index@preamble} + \idx@heading% +%<scrartcl> \index@preamble\par\nobreak + \thispagestyle{\indexpagestyle}\parindent\z@ + \setlength{\parskip}{\z@ \@plus .3\p@} + \setlength{\parfillskip}{\z@ \@plus 1fil} + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} +\newcommand*\@idxitem {\par\hangindent 40\p@} +% \end{macrocode} +% \begin{macro}{\subitem} +% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart Speicher} +% \begin{macro}{\subsubitem} +% \changes{v2.3g}{1996/01/14}{Verwendung von \cs{@idxitem} spart Speicher} +% \begin{macro}{\indexspace} +% \begin{macrocode} +\newcommand*\subitem {\@idxitem \hspace*{20\p@}} +\newcommand*\subsubitem{\@idxitem \hspace*{30\p@}} +\newcommand*\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{environment} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{Fu"snoten} +% +% \begin{macro}{\footnoterule} +% Fu"snoten sind etwas abweichend definiert. +% \changes{v2.3a}{1995/07/08}{\cs{@width} verwendet} +% \changes{v2.8q}{2002/02/06}{\cs{raggedbottom}-Verbesserung +% eingef"ugt} +% Insbesondere wird im Fall, dass \cs{raggedbottom} verwendet wird, +% die Fu"snotenlinie nach unten gedr"uckt. Dies funktioniert nur dann +% nicht, wenn Abbildungen oder Tabellen mit der Option "`\texttt{b}"' +% an das Ende der Seite gesetzt werden. \cs{raggedbottom} wird daran +% erkannt, dass \cs{@textbottom} nicht \cs{relax} ist. Das kann +% nat"urlich auch einmal schief gehen, ist dann aber auch nicht ganz +% so tragisch. +% \begin{macrocode} +\renewcommand*\footnoterule{% + \kern-3\p@ + \ifx\@textbottom\relax\else\vskip \z@ \@plus.0005fil\fi + \hrule\@width.4\columnwidth + \kern 2.6\p@} +%<!scrartcl>\@addtoreset{footnote}{chapter} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\deffootnote} +% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der +% Gestalt von Fu"snoten.} +% \changes{v2.9b}{2002/08/05}{Absatzeinzug korrigiert} +% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempa} ersetzt} +% \changes{v2.9q}{2004/01/31}{\cs{ftn@font} erlaubt aus Gr"unden der +% Kompatibilität mit dem \textsl{footnote} Paket kein Argument mehr} +% Dieses Makro erlaubt einen optionalen und erwartet drei weitere +% Parameter. Der erste, optionale gibt den Einzug der ersten Zeile des +% Fu"snotentextes vom linken Rand an. Die Fu"snotenmarkierungen werden +% rechtsb"undig in diesen Einzug gesetzt. Der zweite, also erste nicht +% optionale Parameter gibt den Einzug jeder weiteren Zeile des +% Fu"snotentextes vom linken Rand an. Fehlt der optionale Parameter so +% ist er gleich diesem. Der dritte, also zweite nicht optionale +% Parameter gibt den zus"atzlichen Einzug jedes weiteren Absatzes +% einer Fu"snote an. Der letzte Parameter schlie"slich bestimmt die +% Ausgabe der Fu"snotenmarkierung in der Fu"snote. Diese wird +% zus"atzlich in eine \verb|\hbox| gesetzt. +% \begin{macrocode} +\newcommand\deffootnote[4][]{% + \long\def\@makefntext##1{% + \setlength{\@tempdimc}{#3}% + \def\@tempa{#1}\ifx\@tempa\@empty + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#2} + \parshape \@ne #2 \@tempdima}% + \else + \addtolength{\@tempdimc}{#2}% + \addtolength{\@tempdimc}{-#1}% + \@setpar{\@@par + \@tempdima = \hsize + \addtolength{\@tempdima}{-#1} + \@tempdimb = \hsize + \addtolength{\@tempdimb}{-#2} + \parshape \tw@ #1 \@tempdima #2 \@tempdimb}% + \fi + \par + \parindent\@tempdimc\noindent + \ftn@font\hbox to \z@{\hss\@@makefnmark}##1} +% \end{macrocode} +% \begin{macro}{\@@makefnmark} +% \changes{v2.4l}{1997/02/06}{Neues Makro zum Setzen der +% Fu"snotenmarkierung im Text} +% \begin{macrocode} + \def\@@makefnmark{\hbox{\ftnm@font{#4}}} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +} +% \end{macrocode} +% \begin{macro}{\ftn@font} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@footnote} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\ftnm@font} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@footnotenumber} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@footnotenlabel} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@instead@footnotetext} +% \changes{v2.8q}{2001/11/16}{Neu} +% Das erste Makro gibt die Schrift an, in der die Fu"snote gesetzt +% wird. Davon abweichend kann mit dem zweiten Makro die Schriftart +% f"ur die Fu"snotennummer getrennt angegeben werden. Aufgrund der +% Definition kann auch ein Makro verwendet werden, das ein Argument +% erwartet. +% \begin{macrocode} +\newcommand*{\ftn@font}{\normalfont} +\newcommand*{\scr@fnt@footnote}{\ftn@font} +\newcommand*{\ftnm@font}{} +\newcommand*{\scr@fnt@footnotenumber}{\ftnm@font} +\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} +\newcommand*{\scr@fnt@instead@footnotetext}{footnote} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\deffootnotemark} +% \changes{v2.4l}{1997/02/06}{Neues Makro zur Definition der +% Fu"snotenmarkierung im Text} +% \begin{macrocode} +\newcommand*\deffootnotemark[1]{\def\@makefnmark{\hbox{\ftntm@font{#1}}}} +% \end{macrocode} +% \begin{macro}{\ftntm@font} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@footnotereference} +% \changes{v2.8q}{2001/11/16}{Neu} +% \begin{macro}{\scr@fnt@footnoteref} +% \changes{v2.8q}{2001/11/16}{Neu} +% Dies ist die Schriftart der Fu"snotenreferenz im Text. Auch hier kann +% ggf. ein Makro verwendet werden, das ein Argument erwartet. +% \begin{macrocode} +\newcommand*{\ftntm@font}{} +\newcommand*{\scr@fnt@footnotereference}{\ftntm@font} +\newcommand*{\scr@fnt@footnoteref}{\ftntm@font} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\thefootnotemark} +% \changes{v2.4l}{1997/02/06}{Neues Makro, damit \cs{@thefnmark} auf +% Anwenderebene verf"ugbar wird.} +% \begin{macrocode} +\newcommand*{\thefootnotemark}{\@thefnmark} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\textsuperscript} +% \changes{v2.4l}{1997/02/06}{Neues Makro, damit \cs{@textsuperscript} auf +% Anwenderebene verf"ugbar wird.} +% \changes{v2.5g}{1999/10/09}{Da \cs{textsuperscript} bereits +% existiert, wird es nicht mehr +% umdefiniert. Die dadurch entstehende +% Inkompatibilit"at wird in Kauf +% genommen.} +% Das Makro ist im Kernel vorhanden. Die Umdefinition sah einst wie +% folgt aus: +% \begin{verbatim} +% \let\textsuperscript\@textsuperscript +% \end{verbatim} +% \end{macro} +% \changes{v2.4l}{1997/02/06}{Verwendung der neuen Makros zur +% Fu"snotengestaltgebung.} +% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingef"ugt} +% \begin{macro}{\@makefnmark} +% \begin{macrocode} +\deffootnote[1em]{1.5em}{1em} + {\textsuperscript{\thefootnotemark}} +\deffootnotemark{\textsuperscript{\thefootnotemark}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Kleinigkeiten} +% +% \begin{macro}{textsubscript} +% \changes{v2.8h}{2001/07/19}{Neu} +% \begin{macro}{@textsubscript} +% \changes{v2.8h}{2001/07/19}{Neu} +% Im \LaTeX-Kern wird zwar ein Makro \cs{textsuperscript} definiert, +% um Texte hochstellen zu k"onnen, die entsprechende Anweisung zum +% Tiefstellen fehlt jedoch. Das wird hier nachgeholt, wobei nahezu +% unver"andert auf die Definition aus dem \LaTeX-Kern zur"uckgegriffen +% wird. +% \begin{macrocode} +\DeclareRobustCommand*\textsubscript[1]{% + \@textsubscript{\selectfont#1}} +\newcommand{\@textsubscript}[1]{% + {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Standardbezeichnungen} +% +% Diese werden von |german.sty| ohnehin "uberschrieben. +% \begin{macro}{\contentsname} +% \begin{macro}{\listfigurename} +% \begin{macro}{\listtablename} +% \begin{macro}{\refname} +% \begin{macro}{\bibname} +% \begin{macro}{\indexname} +% \begin{macro}{\figurename} +% \begin{macro}{\tablename} +% \begin{macro}{\partname} +% \begin{macro}{\chaptername} +% \begin{macro}{\appendixname} +% \begin{macro}{\abstractname} +% \begin{macro}{\today} +% \begin{macrocode} +%<*!scrlettr> +\newcommand*\contentsname{Contents} +\newcommand*\listfigurename{List of Figures} +\newcommand*\listtablename{List of Tables} +%<scrartcl>\newcommand*\refname{References} +%<!scrartcl>\newcommand*\bibname{Bibliography} +\newcommand*\indexname{Index} +\newcommand*\figurename{Figure} +\newcommand*\tablename{Table} +\newcommand*\partname{Part} +%<!scrartcl>\newcommand*\chaptername{Chapter} +\newcommand*\appendixname{Appendix} +\newcommand*\abstractname{Abstract} +%</!scrlettr> +\newcommand*\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +% \end{macrocode} +% +% \begin{macro}{\captionsenglish} +% \begin{macro}{\captionsUSenglish} +% \begin{macro}{\captionsamerican} +% \begin{macro}{\captionsbritish} +% \begin{macro}{\captionsUKenglish} +% \begin{macro}{\captionsgerman} +% \begin{macro}{\captionsaustrian} +% \begin{macro}{\captionsngerman} +% \begin{macro}{\captionsfrench} +% \begin{macro}{\captionsitalian} +% \begin{macro}{\captionsspanish} +% \begin{macro}{\captionscroatian} +% \changes{v2.8q}{2001/10/05}{Sprachspende von Branka +% Lon\v{c}arevi\'{c}} +% \begin{macro}{\captionsdutch} +% \changes{v2.8q}{2002/02/01}{Sprachspende von Henk Jongbloets} +% Bei |scrlttr2| 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 |ngerman.sty| vorhanden sind. +% Deshalb ist es notwendig diese Labels hier neu zu definieren. +% \begin{macro}{\providecaptionname} +% \changes{v2.8q}{2001/11/08}{Neu} +% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte +% ist, wird die "Anderung sofort aktiviert.} +% \begin{macro}{\newcaptionname} +% \changes{v2.8q}{2001/11/08}{Neu} +% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte +% ist, wird die "Anderung sofort aktiviert.} +% \begin{macro}{\renewcaptionname} +% \changes{v2.8q}{2001/11/08}{Neu} +% \changes{v2.9r}{2004/06/16}{Wenn die aktuelle Sprache, die ge"anderte +% ist, wird die "Anderung sofort aktiviert.} +% Doch bevor dies geschieht, werden erst einmal drei Benutzerkommandos +% definiert, mit denen einer Sprache, so ein Begriff zugef"ugt werden +% kann. +% \begin{macrocode} +\newcommand*{\providecaptionname}[3]{% + \@ifundefined{captions#1}{% + \@ifundefined{cap@info@#1@done}{% + \ClassInfo{% + scrlttr2% + }{% + No captions found for `#1'\MessageBreak + --> skipped% + }% + \expandafter\let\csname cap@info@#1@done\endcsname\@empty}{}% + }{% + \begingroup% + \let\@tempa\endgroup% + \csname captions#1\endcsname% + \ifx #2\undefined% + \def\@tempb{#1}% + \ifx\@tempb\languagename + \def\@tempa{\endgroup% + \expandafter\g@addto@macro\csname captions#1\endcsname{% + \def#2{#3}}% + \csname captions#1\endcsname + }% + \else + \def\@tempa{\endgroup% + \expandafter\g@addto@macro\csname captions#1\endcsname{% + \def#2{#3}}% + }% + \fi + \else + \ClassInfo{% + scrlttr2% + }{% + `\string#2' at language `#1' already + defined\MessageBreak + --> skipped% + }% + \fi + \@tempa + }% +} +\newcommand*{\newcaptionname}[3]{% + \@ifundefined{captions#1}{% + \ClassInfo{% + scrlttr2% + }{% + No captions found for `#1' --> defining% + }% + \@namedef{captions#1}{}% + }{}% + \begingroup% + \csname captions#1\endcsname% + \ifx #2\undefined\else% + \ClassError{% + scrlttr2% + }{% + `\string#2' at language `#1' already defined% + }{% + You've told me to define `\string#2' at language + `#1',\MessageBreak + but it is already defined.\MessageBreak + It will be redefined, if you'll continue.% + } + \fi + \endgroup% + \expandafter\g@addto@macro\csname captions#1\endcsname{% + \def#2{#3}}% + \begingroup + \def\@tempb{#1}% + \ifx\@tempb\languagename + \def\@tempa{\endgroup\csname captions#1\endcsname}% + \else + \let\@tempa\endgroup + \fi + \@tempa +} +\newcommand*{\renewcaptionname}[3]{% + \@ifundefined{captions#1}{% + \ClassError{% + scrlttr2% + }{% + No captions found for `#1'% + }{% + You've told me to redefine the caption `\string#2' at language + `#1',\MessageBreak + but `\expandafter\string\csname captions#1\endcsname' is not + defined.\MessageBreak + If you'll continue it will be defined.% + } + \@namedef{captions#1}{}% + }{}% + \begingroup% + \csname captions#1\endcsname% + \ifx #2\undefined% + \ClassError{% + scrlttr2% + }{% + `\string#2' not defined at language `#1'% + }{% + You've told me to redefine `\string#2' at language + `#1',\MessageBreak + but it is not defined.\MessageBreak + If you'll continue it will be defined.% + } + \fi + \endgroup + \expandafter\g@addto@macro\csname captions#1\endcsname{% + \def#2{#3}}% + \begingroup + \def\@tempb{#1}% + \ifx\@tempb\languagename + \def\@tempa{\endgroup\csname captions#1\endcsname}% + \else + \let\@tempa\endgroup + \fi + \@tempa +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% F"ur das Datum wird gleiches nicht ben"otigt, da hier direkt mit +% |\providecommand|, |\newcommand| und |\renewcommand| gearbeitet +% werden kann. +% \begin{macro}{\g@addnumerical@date} +% Intern wird bei der Briefklasse aber ein Makro ben"otigt, mit dem an +% existierende Datumsumschaltungen -- und nur an existierende -- +% weitere Befehle angeh"angt werden k"onnen. +% \begin{macrocode} +%<*scrlettr> +\newcommand*{\g@addnumerical@date}[2]{% + \@ifundefined{date#1}{% + \ClassInfo{% + scrlttr2% + }{% + no date found for language `#1'\MessageBreak + --> skipped% + } + }{% + \expandafter\g@addto@macro\csname date#1\endcsname{% + \let\sym@date=\today% + \def\num@date{#2}% + \def\today{\if@orgdate\sym@date\else\num@date\fi}% + } + } + } +%</scrlettr> +% \end{macrocode} +% \end{macro} +% +% Weil es in fr"uheren Versionen zu Problemen damit gekommen ist, +% werden diese jedoch erst bei |\begin{document}| definiert. Dabei +% wird |\providecaptionname| verwendet, so dass sie auch schon vor +% |\begin{document}| mit |\newcaptionname| anderslautend definiert +% werden k"onnen. +% \begin{table} +% \centering +% \begin{tabular}{ll} +% Sprache & Spender \\\hline\\[-1.6ex] +% English & Frank Neukam, Michael Dewey, Markus Kohm \\ +% Deutsch & Frank Neukam, Markus Kohm \\ +% Franz"osisch & Frank Neukam, Henk Jongbloets \\ +% Italienisch & Simone Naldi \\ +% Spanisch & Ralph J.\ Hangleiter, Alejandro L\'opez-Valencia\\ +% Kroatisch & Branka Lon\v{c}arevi\'{c} \\ +% Holl"andisch & Henk Jongbloets \\ +% \end{tabular} +% \caption{Liste der unterst"utzten Sprachen und der +% \emph{Sprachspender}} +% \end{table} +% Eine Besonderheit stellt die englische Sprache dar. Es wird +% versucht, diese als Notersatz immer zu definieren. +% \begin{macrocode} +%<*scrlettr> +\AtBeginDocument{ + \@ifundefined{captionsenglish}{\let\captionsenglish\@empty}{}% + \providecaptionname{english}\yourrefname{Your ref.}% + \providecaptionname{english}\yourmailname{Your letter of}% + \providecaptionname{english}\myrefname{Our ref.}% + \providecaptionname{english}\customername{Customer no.}% + \providecaptionname{english}\invoicename{Invoice no.}% + \providecaptionname{english}\subjectname{Subject}% + \providecaptionname{english}\ccname{cc}% + \providecaptionname{english}\enclname{encl}% + \providecaptionname{english}\headtoname{To}% + \providecaptionname{english}\headfromname{From}% + \providecaptionname{english}\datename{Date}% + \providecaptionname{english}\pagename{Page}% + \providecaptionname{english}\phonename{Phone}% + \providecaptionname{english}\faxname{Fax}% + \providecaptionname{english}\emailname{Email}% + \providecaptionname{english}\wwwname{Url}% + \providecaptionname{english}\bankname{Bank account}% + \providecaptionname{USenglish}\yourrefname{Your ref.}% + \providecaptionname{USenglish}\yourmailname{Your letter of}% + \providecaptionname{USenglish}\myrefname{Our ref.}% + \providecaptionname{USenglish}\customername{Customer no.}% + \providecaptionname{USenglish}\invoicename{Invoice no.}% + \providecaptionname{USenglish}\subjectname{Subject}% + \providecaptionname{USenglish}\ccname{cc}% + \providecaptionname{USenglish}\enclname{encl}% + \providecaptionname{USenglish}\headtoname{To}% + \providecaptionname{USenglish}\headfromname{From}% + \providecaptionname{USenglish}\datename{Date}% + \providecaptionname{USenglish}\pagename{Page}% + \providecaptionname{USenglish}\phonename{Phone}% + \providecaptionname{USenglish}\faxname{Fax}% + \providecaptionname{USenglish}\emailname{Email}% + \providecaptionname{USenglish}\wwwname{Url}% + \providecaptionname{USenglish}\bankname{Bank account}% + \providecaptionname{american}\yourrefname{Your ref.}% + \providecaptionname{american}\yourmailname{Your letter of}% + \providecaptionname{american}\myrefname{Our ref.}% + \providecaptionname{american}\customername{Customer no.}% + \providecaptionname{american}\invoicename{Invoice no.}% + \providecaptionname{american}\subjectname{Subject}% + \providecaptionname{american}\ccname{cc}% + \providecaptionname{american}\enclname{encl}% + \providecaptionname{american}\headtoname{To}% + \providecaptionname{american}\headfromname{From}% + \providecaptionname{american}\datename{Date}% + \providecaptionname{american}\pagename{Page}% + \providecaptionname{american}\phonename{Phone}% + \providecaptionname{american}\faxname{Fax}% + \providecaptionname{american}\emailname{Email}% + \providecaptionname{american}\wwwname{Url}% + \providecaptionname{american}\bankname{Bank account}% + \providecaptionname{british}\yourrefname{Your ref.}% + \providecaptionname{british}\yourmailname{Your letter of}% + \providecaptionname{british}\myrefname{Our ref.}% + \providecaptionname{british}\customername{Customer no.}% + \providecaptionname{british}\invoicename{Invoice no.}% + \providecaptionname{british}\subjectname{Subject}% + \providecaptionname{british}\ccname{cc}% + \providecaptionname{british}\enclname{encl}% + \providecaptionname{british}\headtoname{To}% + \providecaptionname{british}\headfromname{From}% + \providecaptionname{british}\datename{Date}% + \providecaptionname{british}\pagename{Page}% + \providecaptionname{british}\phonename{Phone}% + \providecaptionname{british}\faxname{Fax}% + \providecaptionname{british}\emailname{Email}% + \providecaptionname{british}\wwwname{Url}% + \providecaptionname{british}\bankname{Bank account}% + \providecaptionname{UKenglish}\yourrefname{Your ref.}% + \providecaptionname{UKenglish}\yourmailname{Your letter of}% + \providecaptionname{UKenglish}\myrefname{Our ref.}% + \providecaptionname{UKenglish}\customername{Customer no.}% + \providecaptionname{UKenglish}\invoicename{Invoice no.}% + \providecaptionname{UKenglish}\subjectname{Subject}% + \providecaptionname{UKenglish}\ccname{cc}% + \providecaptionname{UKenglish}\enclname{encl}% + \providecaptionname{UKenglish}\headtoname{To}% + \providecaptionname{UKenglish}\headfromname{From}% + \providecaptionname{UKenglish}\datename{Date}% + \providecaptionname{UKenglish}\pagename{Page}% + \providecaptionname{UKenglish}\phonename{Phone}% + \providecaptionname{UKenglish}\faxname{Fax}% + \providecaptionname{UKenglish}\emailname{Email}% + \providecaptionname{UKenglish}\wwwname{Url}% + \providecaptionname{UKenglish}\bankname{Bank account}% + \providecaptionname{german}\yourrefname{Ihr Zeichen}% + \providecaptionname{german}\yourmailname{Ihr Schreiben vom}% + \providecaptionname{german}\myrefname{Unser Zeichen}% + \providecaptionname{german}\customername{Kundennummer}% + \providecaptionname{german}\invoicename{Rechnungsnummer}% + \providecaptionname{german}\subjectname{Betrifft}% + \providecaptionname{german}\ccname{Kopien an}% + \providecaptionname{german}\enclname{Anlagen}% + \providecaptionname{german}\headtoname{An}% + \providecaptionname{german}\headfromname{Von}% + \providecaptionname{german}\datename{Datum}% + \providecaptionname{german}\pagename{Seite}% + \providecaptionname{german}\phonename{Telephon}% + \providecaptionname{german}\faxname{Fax}% + \providecaptionname{german}\emailname{E-Mail}% + \providecaptionname{german}\wwwname{URL}% + \providecaptionname{german}\bankname{Bankverbindung}% + \providecaptionname{ngerman}\yourrefname{Ihr Zeichen}% + \providecaptionname{ngerman}\yourmailname{Ihr Schreiben vom}% + \providecaptionname{ngerman}\myrefname{Unser Zeichen}% + \providecaptionname{ngerman}\customername{Kundennummer}% + \providecaptionname{ngerman}\invoicename{Rechnungsnummer}% + \providecaptionname{ngerman}\subjectname{Betrifft}% + \providecaptionname{ngerman}\ccname{Kopien an}% + \providecaptionname{ngerman}\enclname{Anlagen}% + \providecaptionname{ngerman}\headtoname{An}% + \providecaptionname{ngerman}\headfromname{Von}% + \providecaptionname{ngerman}\datename{Datum}% + \providecaptionname{ngerman}\pagename{Seite}% + \providecaptionname{ngerman}\phonename{Telefon}% + \providecaptionname{ngerman}\faxname{Fax}% + \providecaptionname{ngerman}\emailname{E-Mail}% + \providecaptionname{ngerman}\wwwname{URL}% + \providecaptionname{ngerman}\bankname{Bankverbindung}% + \providecaptionname{austrian}\yourrefname{Ihr Zeichen}% + \providecaptionname{austrian}\yourmailname{Ihr Schreiben vom}% + \providecaptionname{austrian}\myrefname{Unser Zeichen}% + \providecaptionname{austrian}\customername{Kundennummer}% + \providecaptionname{austrian}\invoicename{Rechnungsnummer}% + \providecaptionname{austrian}\subjectname{Betrifft}% + \providecaptionname{austrian}\ccname{Kopien an}% + \providecaptionname{austrian}\enclname{Anlagen}% + \providecaptionname{austrian}\headtoname{An}% + \providecaptionname{austrian}\headfromname{Von}% + \providecaptionname{austrian}\datename{Datum}% + \providecaptionname{austrian}\pagename{Seite}% + \providecaptionname{austrian}\phonename{Telefon}% + \providecaptionname{austrian}\faxname{Fax}% + \providecaptionname{austrian}\emailname{E-Mail}% + \providecaptionname{austrian}\wwwname{URL}% + \providecaptionname{austrian}\bankname{Bankverbindung}% + \providecaptionname{french}\yourrefname{Vos r\'ef\'erences}% + \providecaptionname{french}\yourmailname{Votre lettre du}% + \providecaptionname{french}\myrefname{Nos r\'ef\'erences}% + \providecaptionname{french}\customername{Num\'ero de client}% + \providecaptionname{french}\invoicename{Num\'ero de facture}% + \providecaptionname{french}\subjectname{Concernant}% + \providecaptionname{french}\ccname{Copie \`a}% + \providecaptionname{french}\enclname{Annexes}% + \providecaptionname{french}\headtoname{A}% + \providecaptionname{french}\headfromname{De}% + \providecaptionname{french}\datename{Date}% + \providecaptionname{french}\pagename{Page}% + \providecaptionname{french}\phonename{T\'el\'ephone}% + \providecaptionname{french}\faxname{T\'el\'efax}% + \providecaptionname{french}\emailname{E-mail}% + \providecaptionname{french}\wwwname{URL}% + \providecaptionname{french}\bankname{Compte en banque}% + \providecaptionname{italian}\yourrefname{Vs./Rif.}% + \providecaptionname{italian}\yourmailname{Vs.~lettera del}% + \providecaptionname{italian}\myrefname{Ns./Rif.}% + \providecaptionname{italian}\customername{Nr.~cliente}% + \providecaptionname{italian}\invoicename{Nr.~fattura}% + \providecaptionname{italian}\subjectname{Oggetto}% + \providecaptionname{italian}\ccname{Per conoscenza}% + \providecaptionname{italian}\enclname{Allegato}% + \providecaptionname{italian}\headtoname{A}% + \providecaptionname{italian}\headfromname{}% TODO: translate it + \providecaptionname{italian}\datename{Data}% + \providecaptionname{italian}\pagename{Pagina}% + \providecaptionname{italian}\phonename{}% TODO: translate it + \providecaptionname{italian}\faxname{}% TODO: translate it + \providecaptionname{italian}\emailname{}% TODO: translate it + \providecaptionname{italian}\wwwname{}% TODO: translate it + \providecaptionname{italian}\bankname{}% TODO: translate it + \providecaptionname{spanish}\yourrefname{Su ref.}% + \providecaptionname{spanish}\yourmailname{Su carta de}% + \providecaptionname{spanish}\myrefname{Nuestra ref.}% + \providecaptionname{spanish}\customername{No. de cliente}% + \providecaptionname{spanish}\invoicename{No. de factura}% + \providecaptionname{spanish}\subjectname{Asunto}% + \providecaptionname{spanish}\ccname{Copias}% + \providecaptionname{spanish}\enclname{Adjunto}% + \providecaptionname{spanish}\headtoname{A}% + \providecaptionname{spanish}\headfromname{De}% + \providecaptionname{spanish}\datename{Fecha}% + \providecaptionname{spanish}\pagename{P\'agina}% + \providecaptionname{spanish}\phonename{Tel\'efono}% + \providecaptionname{spanish}\faxname{Fax}% + \providecaptionname{spanish}\emailname{Email}% or Correo electr\'onico + \providecaptionname{spanish}\wwwname{URL}% or P\`agina web + \providecaptionname{spanish}\bankname{Cuenta bancaria}% + \providecaptionname{croatian}\yourrefname{Va\v{s} znak}% + \providecaptionname{croatian}\yourmailname{Va\v{s}e pismo od}% + \providecaptionname{croatian}\myrefname{Na\v{s} znak}% + \providecaptionname{croatian}\customername{Broj kupca}% + \providecaptionname{croatian}\invoicename{Broj fakture}% + \providecaptionname{croatian}\subjectname{Predmet}% + \providecaptionname{croatian}\ccname{Kopija}% + \providecaptionname{croatian}\enclname{Privitak}% + \providecaptionname{croatian}\headtoname{Prima}% + \providecaptionname{croatian}\headfromname{\v{S}alje}% + \providecaptionname{croatian}\datename{Nadnevak}% + \providecaptionname{croatian}\pagename{Stranica}% + \providecaptionname{croatian}\phonename{Telefon}% + \providecaptionname{croatian}\faxname{Fax}% + \providecaptionname{croatian}\emailname{E-Mail}% + \providecaptionname{croatian}\wwwname{URL}% + \providecaptionname{croatian}\bankname{Bankovna veza}% + \providecaptionname{dutch}\yourrefname{Uw kenmerk}% + \providecaptionname{dutch}\yourmailname{Uw brief van}% + \providecaptionname{dutch}\myrefname{Ons kenmerk}% + \providecaptionname{dutch}\customername{Klant No.}% + \providecaptionname{dutch}\invoicename{Rekening No.}% + \providecaptionname{dutch}\subjectname{Onderwerp}% + \providecaptionname{dutch}\ccname{Kopie aan}% + \providecaptionname{dutch}\enclname{Bijlage(n)}% + \providecaptionname{dutch}\headtoname{Aan}% + \providecaptionname{dutch}\headfromname{Van}% + \providecaptionname{dutch}\datename{Datum}% + \providecaptionname{dutch}\pagename{Pagina}% + \providecaptionname{dutch}\phonename{Telefoon}% + \providecaptionname{dutch}\faxname{Fax}% + \providecaptionname{dutch}\emailname{E--mail}% + \providecaptionname{dutch}\urlname{URL}% + \providecaptionname{dutch}\bankname{Bankrekening}% +% \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} +% +% \begin{macro}{\dateenglish} +% \begin{macro}{\dateUSenglish} +% \begin{macro}{\dateamerican} +% \changes{v2.4c}{1997/11/25}{american identisch mit USenglish +% definiert} +% \begin{macro}{\datebritish} +% \changes{v2.4c}{1997/11/25}{british identisch mit english +% definiert} +% \begin{macro}{\dateUKenglish} +% \changes{v2.4c}{1997/11/25}{UKenglish identisch mit english +% definiert} +% \begin{macro}{\dategerman} +% \begin{macro}{\dateaustrian} +% \begin{macro}{\datengerman} +% \changes{v2.5}{1999/09/08}{ngerman neu und identisch mit german} +% \begin{macro}{\datefrench} +% \begin{macro}{\dateitalian} +% \changes{v2.3e}{1996/05/31}{Ich hoffe, da"s das stimmt} +% \begin{macro}{\datespanish} +% \changes{v2.4c}{1997/11/25}{Ich hoffe, da"s das stimmt} +% \changes{v2.4c}{1997/11/25}{Datumsumschaltung nicht mehr +% zwingend} +% \begin{macro}{\datecroatian} +% \changes{v2.8q}{2001/05/10}{Neu} +% \begin{macro}{\datedutch} +% \changes{v2.8q}{2002/02/01}{Neu} +% Dar"uber hinaus ist auch das Datumsformat sprachabh"angig. Dies wird +% hier ebenfalls beachtet. +% \begin{macrocode} + \g@addnumerical@date{english}{% + \number\day/\number\month/\number\year} + \g@addnumerical@date{british}{% + \number\day/\number\month/\number\year} + \g@addnumerical@date{UKenglish}{% + \number\day/\number\month/\number\year} + \g@addnumerical@date{USenglish}{% + \number\month/\number\day/\number\year} + \g@addnumerical@date{american}{% + \number\month/\number\day/\number\year} + \g@addnumerical@date{german}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{ngerman}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{austrian}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{french}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{italian}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{spanish}{% + \number\day.\,\number\month.\,\number\year} + \g@addnumerical@date{croatian}{% + \number\day.\,\number\month.\,\number\year.} + \g@addnumerical@date{dutch}{% + \number\day.\,\number\month.\,\number\year} +% \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} +% 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 \cs{language}} +% \changes{v2.4c}{1997/11/25}{Sprachauswahl um american, british, +% UKenglish und spanish erweitert} +% \changes{v2.5}{1999/09/08}{Sprachauswahl um ngermen erweitert} +% \changes{v2.5b}{2000/01/20}{Reaktivierung der Sprache geschieht +% nun via \cs{languagename}, soweit dies m"oglich ist} +% \changes{v2.5e}{2000/07/14}{Workaround f"ur Sprache nohyphenation +% durch Format mit Babel-Erweiterung aber kein Babel package +% geladen} +% \begin{macrocode} + \captionsenglish + \dateenglish +% \end{macrocode} +% \changes{v2.9i}{2002/09/04}{Workaround f"ur den +% \texttt{hyphen.cfg}-Bug von Babel} +% Wird die \texttt{hyphen.cfg} von Babel verwendet, wird aber das +% \textsl{babel}-Paket nicht geladen, so ist \cs{languagename} h"aufig +% nicht korrekt, so dass dann \cs{selectlanguage} mit +% \cs{languagename} als Argument schief geht. Daher hier ein +% Workaround f"ur das Problem. +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname date\languagename\endcsname\relax + \ClassWarningNoLine{% + scrlttr2% + }{% + \string\language\space is \the\language, \string\languagename\space is + `\languagename'\MessageBreak + but \expandafter\string\csname + date\languagename\endcsname\space not defined!\MessageBreak + This seems to be a bug at you're `hyphen.cfg'.\MessageBreak + I'l undefine \string\languagename\space to avoid errors% + }% + \let\languagename=\undefined + \fi + \ifx\languagename\undefined + \ClassWarningNoLine{scrlttr2}{\string\languagename\space not + defined, using \string\language.\MessageBreak + This may result in use of wrong language!\MessageBreak + You should use a compatible language + package\MessageBreak + (e.g. `Babel', `german', `ngerman', ...)} + \ifx\l@american\undefined\else\ifnum\language=\l@american + \captionsamerican + \dateamerican + \fi\fi + \ifx\l@british\undefined\else\ifnum\language=\l@british + \captionsbritish + \datebritish + \fi\fi + \ifx\l@UKenglish\undefined\else\ifnum\language=\l@UKenglish + \captionsUKenglish + \dateUKenglish + \fi\fi + \ifx\l@USenglish\undefined\else\ifnum\language=\l@USenglish + \captionsUSenglish + \dateUSenglish + \fi\fi + \ifx\l@austrian\undefined\else\ifnum\language=\l@austrian + \captionsaustrian + \dateaustrian + \fi\fi + \ifx\l@german\undefined\else\ifnum\language=\l@german + \captionsgerman + \dategerman + \fi\fi + \ifx\l@ngerman\undefined\else\ifnum\language=\l@ngerman + \captionsngerman + \datengerman + \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 + \ifx\l@spanish\undefined\else\ifnum\language=\l@spanish + \captionsspanish + \datespanish + \fi\fi + \ifx\l@croatian\undefined\else\ifnum\language=\l@croatian + \captionscroatian + \datecroatian + \fi\fi + \ifx\l@dutch\undefined\else\ifnum\language=\l@dutch + \captionsdutch + \datedutch + \fi\fi + \else + \edef\@tempa{nohyphenation} + \ifx\languagename\@tempa + \ClassWarningNoLine{% + scrlttr2% + }{% + You've selected language `\languagename'.\MessageBreak + Maybe your LaTeX format contains Babel extension\MessageBreak + but you have not selected a language using\MessageBreak + Babel package.\MessageBreak + Please select another language!\MessageBreak + Only as a workaround english captions and date\MessageBreak + will be used% + }% + \else + \expandafter\selectlanguage\expandafter{\languagename} + \ClassInfo{% + scrlttr2% + }{% + used language is `\languagename'.\MessageBreak + Supported languages are `english', `UKenglish',\MessageBreak + `british', `american', `USenglish',\MessageBreak + `german', `ngerman', `austrian',\MessageBreak + `dutch', `italian', `spanish', `croatian'% + } + \fi + \fi + } +%</scrlettr> +% \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} +% +% +% \subsection{Erweiterung der Internationalisierung} +% +% Dergleichen gibt es bei Briefen nicht. +% \begin{macrocode} +%<*!scrlettr> +% \end{macrocode} +% +% \changes{v2.2c}{1995/05/25}{Anpassung an CJK von Werner Lemberg.} +% +% Die Standardnamen wie |\figurename| etc. sind nicht immer +% ausreichend, da manche Sprachen Z"ahlw"orter vor oder nach dem +% jeweiligen Z"ahler einf"ugen m"ussen (man denke da sogar im +% Deutschen an "`Abbildung~1"' und "`Erste Abbildung"'). Desweiteren +% werden bei manchen Sprachen die Zwischenr"aume anders gesetzt +% bzw. sogar ganz unterdr"uckt. +% +% Es gibt drei Ebenen, die man modifizieren kann, um verschiedenste +% Sprachen zu implementieren: Ebene~1 besteht aus den hinl"anglich +% bekannten Makros wie |\figurename| und alle weiteren Makros, die +% z.\,B. |german.sty| modifiziert. Desweiteren k"onnen die Makros +% |\sectfont| etc. etwaige zus"atzliche Fonts aktivieren. Ebene~2 ist +% die zus"atzliche Adaptierung von den Z"ahlern selbst (|\thesection| +% k"onnte z.B. chinesische Schriftzeichen ansprechen anstelle von +% arabischen Ziffern). Die allgemeinste Form der dritten Ebene +% besteht aus den Makros |\chaptermarkformat|, |\sectionmarkformat|, +% |\subsectionmarkformat|, |\partformat|, |\chapterformat|, +% |\figureformat|, |\tableformat| und |\captionformat|, welche die +% "Anderung der Reihenfolge von Z"ahler und Titel sowie die genaue +% Kontrolle der Zwischenr"aume etc. erm"oglichen. +% +% F"ur die g"angigen Sprachen k"onnen alle Makros f"ur die dritte +% Ebene identisch definiert werden. Bei Verwendung von "`exotischen"' +% Sprachen, aber auch speziellen Darstellungen in den g"angigen +% Sprachen k"onnen diese Makros umdefiniert werden. +% +% Das Konzept f"ur der Internationalisierung mit der dritten Ebene wurde +% urspr"unglich von Werner Lemberg\footnote{Werner Lemberg ist im InterNet +% unter \texttt{a7621gac@awiuni11.bitnet} zu erreichen.} entwickelt. +% Die "`caption files"' seines CJK-Pakets (\textbf{C}hinesisch, +% \textbf{J}apanisch, \textbf{K}oreanisch) bauen auf diesem Konzept auf. +% Damit ist \textsf{KOMA-Script} f"ur alle m"oglichen Sprachanpassungen +% bestens ger"ustet. +% +% \begin{macro}{\if@altsecnumformat} +% \changes{v2.3c}{1995/08/06}{Einf"uhrung von +% \cs{if@altsecnumformat}} +% \begin{macro}{\@altsecnumformattrue} +% \begin{macro}{\@altsecnumformatfalse} +% Dieses Hilfsmakro wird f"ur die Umschaltung auf Duden-Regel~6 bei der +% Numerierung ben"otigt. +% \begin{macro}{\if@autodot} +% \changes{v2.8e}{2001/07/10}{Neu} +% \begin{macro}{\@autodottrue} +% \begin{macro}{\@autodotfalse} +% Damit die Umschaltung auch wieder zur"uck auf Regel~5 automatisch +% erfolgen kann, wird ein zweiter Schalter ben"otigt. +% \begin{macrocode} +\newif\if@altsecnumformat\@altsecnumformatfalse +\newif\if@autodot\@autodotfalse +% \end{macrocode} +% \begin{macro}{\@maybeautodot} +% \changes{v2.8e}{2001/07/10}{Neu} +% Ob der automatische Punkt aktiviert werden muss, wird aufgrund der +% Darstellung eines Z"ahlers entschieden. Diese wird dem Makro als +% Argument "ubergeben (|\thepart|, |\thechapter| etc.). Durch +% Verwendung einer Gruppe, werden alle Definitionen lokal gehalten. +% \begin{macrocode} +\newcommand{\@maybeautodot}[1]{\if@autodot\else\begingroup% + \expandafter\@@maybeautodot #1\@stop\endgroup\fi} +% \end{macrocode} +% \begin{macro}{\@@maybeautodot} +% \changes{v2.8e}{2001/07/10}{Neu} +% Die expandierte Darstellung wird dann auf Darstellungsbefehle f"ur +% Z"ahler gescannt. +% \begin{macrocode} +\newcommand*{\@@maybeautodot}[1]{% + \ifx #1\@stop\let\@@maybeautodot\relax% + \else% + \ifx #1\Alph \aftergroup\@autodottrue\fi% + \ifx #1\alph \aftergroup\@autodottrue\fi% + \ifx #1\Roman \aftergroup\@autodottrue\fi% + \ifx #1\roman \aftergroup\@autodottrue\fi% + \ifx #1\@Alph \aftergroup\@autodottrue\fi% + \ifx #1\@alph \aftergroup\@autodottrue\fi% + \ifx #1\@Roman \aftergroup\@autodottrue\fi% + \ifx #1\@roman \aftergroup\@autodottrue\fi% + \ifx #1\romannumeral \aftergroup\@autodottrue\fi% + \fi% + \@@maybeautodot} +% \end{macrocode} +% \begin{macro}{\scr@sect} +% \begin{macro}{\@sect} +% Damit auch alle mit |startsection| definierten Gliederungsebenen bei +% der Entscheidung ber"ucksichtigt werden, muss ein internes Makro des +% \LaTeX-Kerns erweitert werden. F"ur die Ebenen |part| und |chapter| +% wird dies direkt in der Definition der Befehle erledigt. +% \begin{macrocode} +\let\scr@sect\@sect +\renewcommand*{\@sect}[1]{\stepcounter{#1}% + \expandafter\@maybeautodot\csname the#1\endcsname% + \addtocounter{#1}{-1}\scr@sect{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% Dabei soll die Umstellung beim zweiten TeX-Lauf bereits am Anfang +% aktiv sein. Deshalb wird die Information am Ende in die aux-Datei +% geschrieben. +% \changes{v2.9k}{2003/01/12}{es wird direkt in \cs{@mainaux} geschrieben} +% \begin{macrocode} +\AtEndDocument{% + \if@autodot\if@filesw\immediate\write\@mainaux{% + \string\global\string\@altsecnumformattrue} + \fi\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\chaptermarkformat} +% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingef"ugt} +% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt +% \cs{chapappifprefix}} +% \begin{macro}{\sectionmarkformat} +% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \begin{macro}{\subsectionmarkformat} +% \changes{v2.3a}{1995/07/08}{Leerraum nach der Kapitelnummer erh"oht.} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% Diese drei Makros werden f"ur die Markierungen innerhalb der pagestyles +% in |\chaptermark|, |\sectionmark| und |\subsectionmark| verwendet. +% Die drei Makros sind bewu"st unabh"angig voneinander definiert. +% \begin{macro}{\autodot} +% \changes{v2.7}{2001/01/03}{Neues Makro \cs{autodot}.} +% \changes{v2.7}{2001/01/03}{Abstand von \cs{quad} auf \cs{enskip} +% verringert.} +% Innerhalb der Makros wird ein Makro verwendet, das automatisch einen +% Punkt setzt, falls dies nach dem Duden als erforderlich angesehen +% wird. +% \begin{macrocode} +\newcommand*\autodot{\if@altsecnumformat.\fi} +%<*scrreprt|scrbook> +\newcommand*\chaptermarkformat {\chapappifchapterprefix{\ }% + \thechapter\autodot\enskip} +\newcommand*\sectionmarkformat {\thesection\autodot\enskip} +%</scrreprt|scrbook> +%<*scrartcl> +\newcommand*\sectionmarkformat {\thesection\autodot\enskip} +\newcommand*\subsectionmarkformat {\thesubsection\autodot\enskip} +%</scrartcl> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\partformat} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \changes{v2.5f}{1999/02/14}{"Uberfl"ussiges Leerzeichen am Ende +% entfernt} +% \changes{v2.7h}{2001/04/22}{verlorenen Backslash in \cs{autodot} +% wieder eingef"ugt} +% \begin{macro}{\chapterformat} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \changes{v2.7}{2000/01/03}{Einfaches Leerzeichen durch \cs{enskip} +% ersetzt.} +% \changes{v2.8}{2001/06/15}{\cs{chapappifprefix} eingef"ugt} +% \changes{v2.8o}{2001/09/19}{\cs{chapappifchapterprefix} statt +% \cs{chapappifprefix}} +% \begin{macro}{\chapappifprefix} +% \changes{v2.8}{2001/06/15}{Neu} +% \changes{v2.8o}{2001/09/19}{obsolet} +% \begin{macro}{\chapappifchapterprefix} +% \changes{v2.8o}{2001/09/19}{Neu} +% \changes{v2.8o}{2001/09/19}{Argument ist nicht optional} +% \begin{macro}{\chapapp} +% \changes{v2.8}{2001/06/15}{Neu} +% \begin{macro}{\figureformat} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \begin{macro}{\tableformat} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% \begin{macro}{\captionformat} +% \changes{v2.3c}{1995/08/06}{Duden Regel 6.} +% Diese f"unf Makros werden nun innerhalb der entsprechenden +% "Uberschriften, Unterschriften, Titel etc. verwendet. +% \begin{macrocode} +\newcommand*{\partformat}{\partname~\thepart\autodot} +%<*scrreprt|scrbook> +\newcommand*{\chapterformat}{% + \chapappifchapterprefix{\ }\thechapter\autodot\enskip} +%</scrreprt|scrbook> +\newcommand*{\figureformat}{\figurename~\thefigure% +%<!scrartcl> \autodot% + } +\newcommand*{\tableformat}{\tablename~\thetable% +%<!scrartcl> \autodot% +} +\newcommand*{\captionformat}{:\ } +% \end{macrocode} +% Das in |\chapterformat| verwendete Makro |\chapappifchapterprefix| setzt +% abh"angig von |\if@chapterprefix| noch das Makro |\chapapp| gefolgt +% vom obliatorischen Argument. |\chapapp| macht |\@chapapp| auf +% Anwenderebene verf"ugbar. Der Vorteil des neuen +% |\chapappifchapterprefix| gegen"uber dem alten |\chapappifprefix| +% ist, dass nun beim Umdefinieren von |\chapterformat| und +% |\chaptermarkformat| wieder |\renewcommand| verwendet werden kann +% und beim Umschalten in den Anhang die Kopfzeile korrekt ist, weil +% das Makro nun nicht mehr gesch"utzt ist, sondern direkt expandiert. +% \begin{macrocode} +%<*scrbook|scrreprt> +\newcommand*{\chapappifprefix}[1][]{% + \ClassWarning{% +%<scrbook> scrbook% +%<scrreprt> scrreprt% + }{% + Please don't use obsolete command + \string\chapappifprefix.\MessageBreak + The new command \string\chapappifchapterprefix\space has + an\MessageBreak + obligatory instead of an optional argument. Use that\MessageBreak + new command% + }% + \if@chapterprefix\chapapp#1\fi} +\newcommand*{\chapappifchapterprefix}[1]{\if@chapterprefix\chapapp#1\fi} +\newcommand*{\chapapp}{\@chapapp} +%</scrbook|scrreprt> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Dieses Makro wird bei allen "Uberschriften mit |\@startsection| +% verwendet. +% \begin{macro}{\@seccntformat} +% \changes{v2.3c}{1995/08/06}{CJK erweitert} +% \changes{v2.9p}{2004/01/07}{\cs{protect} eingef"ugt} +% \begin{macro}{\othersectionlevelsformat} +% \changes{v2.7}{2000/01/03}{F"ur alle "ubrigen Gliederungsebenen +% ebenfalls ein Makro auf Anwenderebene +% eingef"uhrt.} +% \changes{v2.7}{2000/01/03}{\cs{quad} durch \cs{enskip} ersetzt.} +% \changes{v2.7i}{2001/05/17}{\cs{let} durch \cs{def} ersetzt} +% Wobei ein Hilfsmakro eingesetzt wird, das auf Anwenderseite umdefiniert +% werden kann. +% \begin{macrocode} +\newcommand*{\othersectionlevelsformat}[1]{% + \csname the#1\endcsname\autodot\enskip} +\renewcommand*{\@seccntformat}{\protect\othersectionlevelsformat} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</!scrlettr> +% \end{macrocode} +% +% +% \subsection{Die Brief-Umgebung} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{environment}{letter} +% \changes{v2.8q}{2002/01/16}{optionales Argument hinzugef"ugt} +% \changes{v2.8q}{2002/01/16}{Fu"snotenz"ahler wird zur"uckgesetzt} +% \changes{v2.9d}{2002/08/12}{Fu"snotenz"ahler wird korrekt zur"uckgesetzt} +% Diese Umgebung ist etwas anders definiert, als normalerweise von +% \LaTeX gewohnt. Mit ihr k"onnen innerhalb eines Dokuments beliebig +% viele Briefe erzeugt werden. Eine der Abweichungen von der +% Standardklasse besteht darin, dass als optionales Argument Optionen +% gesetzt werden k"onnen. +% \begin{macro}{\stopletter} +% \begin{macro}{\@processto} +% \changes{v2.9r}{2004/06/16}{robust gegen leeren Empf"anger} +% \begin{macro}{\@xproc} +% Die Adresse, die als Argument der Briefumgebung +% "ubergeben wird, muss in Name und Adresse zerlegt werden. +% \begin{macrocode} +\newenvironment{letter}[2][]{% +% \end{macrocode} +% Als erstes wird eine neue Seite begonnen. Dies kann ggf. auch eine +% neue rechte Seite sein. Danach werden alle relevanten Z"ahler +% und Strafpunkte zur"uckgesetzt und der obligatorische Parameter +% ausgewertet. +% \begin{macrocode} + \newpage + \if@twoside\ifodd\c@page\else + \thispagestyle{empty}\null\newpage\fi\fi + \setcounter{page}{\@ne}% + \setcounter{footnote}{0}% + \interlinepenalty=200\@processto{#2}% +% \end{macrocode} +% Dann werden ggf. die "ubergebenen Optionen ausgef"uhrt. +% \begin{macrocode} + \KOMAoptions{#1}% +% \end{macrocode} +% Zum Schluss werden die per \cs{AtBeginLetter} angegeben Anweisungen +% ausgef"uhrt. +% \begin{macrocode} + \@beginletterhook + }{% + \stopletter\@@par\pagebreak\@@par% + } +\newcommand*{\stopletter}{} +\newcommand{\@processto}[1]{% + \ifx\relax#1\relax\else + \expandafter\@xproc#1\\\@nil\ifkomavarempty{toaddress}{}{% + \expandafter\@xproc#1\@nil}% + \fi +} +\newcommand*{\@xproc}{} +\long\def\@xproc#1\\#2\@nil{% + \setkomavar{toname}{#1}\setkomavar{toaddress}{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\fname@font} +% \changes{v2.8q}{2002/01/28}{Neu} +% Die Schriftart, die f"ur den Absendername verwendet +% wird. Voreingestellt ist keine "Anderung. +% \begin{macrocode} +\newcommand*{\fname@font}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\faddress@font} +% \changes{v2.8q}{2002/01/28}{Neu} +% Die Schriftart, die f"ur den Absender verwendet wird. Voreingestellt +% ist keine "Anderung. +% \begin{macrocode} +\newcommand*{\faddr@font}{} +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{macro}{\AtBeginLetter} +% \changes{v2.8n}{2001/09/08}{Neu} +% \begin{macro}{\@beginletterhook} +% \changes{v2.8n}{2001/09/08}{Neu} +% Wie oben zu sehen, wurde in den Anfang der Briefumgebung ein Haken +% eingef"ugt. Dieser wird auch tats"achlich intern genutzt. Er +% funktioniert prinzipiell wie der |\AtBeginDocument|-Haken. Zun"achst +% macht der Haken rein gar nichts. +% \begin{macrocode} +\newcommand{\AtBeginLetter}{\g@addto@macro\@beginletterhook} +\newcommand{\@beginletterhook}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% \subsection{Briefspezifische Feld-Variablen} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% +% \begin{macro}{\newkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% Bei Briefen gibt es eine ganze Reihe von speziellen Variablen. An +% dieser Stelle sei als Beispiel nur das Feld "`Ihr Zeichen"` +% genannt. Es ist nahezu unm"oglich alle diese Felder +% vorherzusehen. Daher wurde in der neuen Briefklasse ein neuer +% Mechanismus zur Definition solcher Felder geschaffen. Es wird +% zwischen zwei Arten von Feldern unterschieden: +% \begin{itemize} +% \item Felder f"ur die Gesch"aftszeile +% \item Felder f"ur sonstige Verwendung +% \end{itemize} +% Felder k"onnen aber auch nachtr"aglich zur Gesch"aftszeile +% hinzugef"ugt werden. Die Sternvariante von \cs{newkomavar} f"uhrt +% dies jedoch automatisch durch. +% \begin{macro}{\@newkomavar} +% Da mit einer Sternvariante gearbeitet wird, wird ein Hilfsmakro +% ben"otigt. Das Makro erh"alt ein optionales und +% ein obligatorisches Argument. Das optionale Argument ist dabei die +% Voreinstellung f"ur den \emph{Ausgabenamen} des Feldes, der +% ggf. ausgegeben werden soll. Das obligatorische Argument ist +% \emph{Name} des Feldes, "uber den das Feld angesprochen wird. +% Das Makro definiert zwei weitere Makros: \cs{\emph{scr@Name}@var} und +% \cs{scr@\emph{Name}@name}. +% \begin{macrocode} +\newcommand*{\newkomavar}{% + \@ifstar {\@tempswatrue\@newkomavar}{\@tempswafalse\@newkomavar}} +\newcommand*{\@newkomavar}[2][\relax]{% + \@ifundefined{scr@#2@name}{% + \@ifundefined{scr@#2@var}{% + \begingroup + \def\@tempa{#1}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#2@name}{#1}% + \fi% + \expandafter\let\csname scr@#2@var\endcsname=\@empty + \if@tempswa\addtoreffields{#2}\fi + }{% + \ClassError{% + scrlttr2% + }{% + This should never happen% + }{% + The contents of the KOMA-Script variable `#2'\MessageBreak + is undefined, but the name of the variable is + defined.\MessageBreak + This should never happen. So someone crashs me!% + } + } + }{% + \ClassError{% + scrlttr2% + }{% + Variable `#2' already defined% + }{% + I'll ignore this command, if you'll continue.% + } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% Nat"urlich wird auch ein Befehl ben"otigt, um die Feldvariablen +% zu setzen und ihnen ggf. einen neuen Namen f"ur die Ausgabe zu +% geben. Der \emph{Name} der Feldvariable wird als obligatorisches +% erstes Argument "ubergeben. +% \begin{macro}{\@setkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% Da dann zwischen einer Sternvariante und einer normalen +% unterschieden werden soll wird ein Hilfsmakro ben"otigt. +% \begin{macro}{\@setkomaname} +% \changes{v2.8q}{2002/01/14}{Neu} +% Die Sternvariante definiert nur den Ausgabename neu. +% \begin{macro}{\@@setkomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% Da in der normalen Variante nach dem Stern ein optionales Argument +% folgen kann, wird mit einem weiteren Hilfsmakro gearbeitet. Der +% \emph{Ausgabename} wird dabei als optionales, zweites Argument +% "ubergeben. Der \emph{Inhalt} wird als obligatorisches, drittes +% Argument "ubergeben. +% \begin{macrocode} +\newcommand*{\setkomavar}{% + \@ifstar {\@setkomaname}{\@setkomavar}} +\newcommand*{\@setkomavar}[1]{% + \@ifnextchar [%] + {\@@setkomavar{#1}}{\@@setkomavar{#1}[\relax]}} +\newcommand*{\@setkomaname}[2]{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@name}{#2}% + }% + } +\newcommand*{\@@setkomavar}{} +\long\def\@@setkomavar#1[#2]#3{% + \@ifundefined{scr@#1@var}{% + \@komavar@err{set}{#1}% + }{% + \@namedef{scr@#1@var}{#3}% + \begingroup + \def\@tempa{#2}\def\@tempb{\relax}% + \ifx\@tempa\@tempb\endgroup\else + \endgroup\@namedef{scr@#1@name}{#2}% + \fi + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@komavar@err} +% \changes{v2.8q}{2002/01/14}{Neu} +% Dieses Makro wird intern in den Makros \cs{setkomavar} und +% \cs{usekomavar} verwendet. +% \begin{macrocode} +\newcommand*{\@komavar@err}[2]{% + \ClassError{% + scrlttr2% + }{% + KOMA-Script variable not defined% + }{% + You've tried to #1 the not defined KOMA-Script variable + `#2'.\MessageBreak + You have to define the variable using \string\newkomavar\space + before\MessageBreak + you do this.% + }% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\usekomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{robust} +% Selbstverst"andlich wird auch ein Makro ben"otigt, um auf den +% Inhalt oder den Ausgabename einer Variablen zugreifen zu +% k"onnen. Mit der normalen Variante wird dabei der Inhalt, mit der +% Sternvariante der Name ausgegeben. +% \begin{macro}{\@usekomavar} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{optionales Argument} +% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument +% eingefügt} +% \begin{macro}{\@usekomaname} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{optionales Argument} +% \changes{v2.9j}{2002/09/18}{\cs{@firstofone} als Defaultargument +% eingefügt} +% Da mir einer Sternvariante gearbeitet wird, werden zwei Hilfsmakros +% ben"otigt. +% \begin{macrocode} +\DeclareRobustCommand*{\usekomavar}{% + \@ifstar {\@usekomaname}{\@usekomavar}} +\newcommand*{\@usekomavar}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@var}}% + }% + } +\newcommand*{\@usekomaname}[2][\@firstofone]{% + \@ifundefined{scr@#2@var}{% + \@komavar@err{use}{#2}% + }{% + #1{\@nameuse{scr@#2@name}}% + }% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ifkomavarempty} +% \changes{v2.8q}{2002/01/14}{Neu} +% \changes{v2.9i}{2002/09/04}{Leerzeichen rausgeworfen} +% \changes{v2.9i}{2002/09/04}{robust} +% Es gibt auch noch ein Makro, um zu testen, ob eine KOMA-Script +% Variable oder deren Name leer ist. Die Sternvariante ist wieder f"ur +% den Namen zust"andig. +% \begin{macro}{\if@komavarempty} +% \changes{v2.8q}{2002/01/14}{Neu} +% Da mit einer Sternvariante gearbeitet wird, wird wieder ein +% Hilfsmakro verwendet. +% \begin{macrocode} +\DeclareRobustCommand*{\ifkomavarempty}{% + \begingroup + \@ifstar {\@tempswatrue\@ifkomavarempty}% + {\@tempswafalse\@ifkomavarempty}% + } +\newcommand{\@ifkomavarempty}[3]{% + \@ifundefined{scr@#1@var}{% + \endgroup\@komavar@err{use}{#1}% + }{% + \if@tempswa\endgroup + \@ifundefined{scr@#1@name}{#2}{% + \expandafter\ifx\csname scr@#1@name\endcsname\@empty + #2% + \else + #3% + \fi + }% + \else\endgroup + \expandafter\ifx\csname scr@#1@var\endcsname\@empty + #2% + \else + #3% + \fi + \fi + }% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{KOMAvar}{signature} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{place} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{location} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{backaddress} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{specialmail} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{title} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromlogo} +% \changes{v2.8q}{2002/01/28}{Neu} +% Zun"achst besitzt die Briefklasse einige Variablen, die von Haus aus +% nicht "uber einen Ausgabenamen verf"ugen, weil sie "ublicherweise +% ohne Ausgabe einer Bezeichung verwendet werden. Diese Variablen +% haben teilweise auch keinen vordefinierten Inhalt. Der Inhalt +% muss erst vom Anwender gesetzt werden. Teilweise gibt es aber auch +% einen vordefinierten Inhalt, der von anderen Variablen abh"angt. +% \begin{macrocode} +\newkomavar{signature} +\setkomavar{signature}{\usekomavar{fromname}} +\newkomavar{place} +\newkomavar{location} +\newkomavar{backaddress} +\setkomavar{backaddress}{% + \ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \ifkomavarempty{fromaddress}{}{\\}}% + \ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% + } +\newkomavar{specialmail} +\newkomavar{title} +\newkomavar{fromlogo} +% \end{macrocode} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% +% \begin{KOMAvar}{placeseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{subjectseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{ccseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{enclseparator} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{backaddressseparator} +% \changes{v2.8q}{2002/01/22}{Neu} +% \begin{KOMAvar}{phoneseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \begin{KOMAvar}{faxseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \begin{KOMAvar}{emailseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% \begin{KOMAvar}{urlseparator} +% \changes{v2.8q}{2002/03/25}{Neu} +% Daneben gibt es einige Trennzeichen. Diese haben ggf. als +% Ausgabenamen das Feld, f"ur das sie als Trennzeichen dienen. Die +% Trennzeichen sind vordefiniert. +% \begin{macrocode} +\newkomavar[\usekomavar{place}]{placeseparator} +\setkomavar{placeseparator}{,~} +\newkomavar[\subjectname]{subjectseparator} +\setkomavar{subjectseparator}{: } +\newkomavar[\ccname]{ccseparator} +\setkomavar{ccseparator}{: } +\newkomavar[\enclname]{enclseparator} +\setkomavar{enclseparator}{: } +\newkomavar{backaddressseparator} +\setkomavar{backaddressseparator}{,~} +\newkomavar[\phonename]{phoneseparator} +\setkomavar{phoneseparator}{:~} +\newkomavar[\faxname]{faxseparator} +\setkomavar{faxseparator}{:~} +\newkomavar[\emailname]{emailseparator} +\setkomavar{emailseparator}{:~} +\newkomavar[\wwwname]{urlseparator} +\setkomavar{urlseparator}{:~} +% \end{macrocode} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% +% \begin{KOMAvar}{fromname} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromaddress} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromemail} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{fromurl} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{frombank} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{toname} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{toaddress} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromphone} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{fromfax} +% \changes{v2.8q}{2002/01/28}{Neu} +% \begin{KOMAvar}{yourmail} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{yourref} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{myref} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{customer} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{invoice} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{subject} +% \changes{v2.8q}{2002/01/16}{Neu} +% \begin{KOMAvar}{date} +% \changes{v2.8q}{2002/01/16}{Neu} +% Desweiteren gibt es einige Variable, die auch einen Ausgabenamen +% haben, weil dieser "ublicherweise vorangestellt wird. Eine +% Besonderheit stellt dabei \texttt{subject} dar. Der Ausgabename +% beinhaltet dabei n"amlich auch die Trennzeichen, die hinter dem +% Namen "ublicherweise stehen. Diese sind wiederum ein Variable, deren +% Name der Ausgabename des Feldes ist. Will man also nur den Namen +% aber nicht die Trennzeichen "andern, so "andert man statt dem Namen +% von \texttt{subject} den Namen von \texttt{subjectseparator}. +% "Ahnlich ist es mit \texttt{toaddress} und +% \texttt{fromaddress}. Dort ist der Wert von \texttt{toname} +% bzw. \texttt{fromname} der Ausgabename. Bei \texttt{toaddress} und +% \texttt{fromaddress} wird davon jedoch intern kein Gebrauch +% gemacht. Die Variable \texttt{date} wird bereits so vordefiniert, +% dass auch weiterhin \cs{date} funktioniert. +% \begin{macrocode} +\newkomavar[\headfromname]{fromname} +\newkomavar[\usekomavar{fromname}]{fromaddress} +\newkomavar[\headtoname]{toname} +\newkomavar[\usekomavar{toname}]{toaddress} +\newkomavar[\usekomavar*{phoneseparator}% + \usekomavar{phoneseparator}]{fromphone} +\newkomavar[\usekomavar*{faxseparator}% + \usekomavar{faxseparator}]{fromfax} +\newkomavar[\usekomavar*{emailseparator}% + \usekomavar{emailseparator}]{fromemail} +\newkomavar[\usekomavar*{urlseparator}% + \usekomavar{urlseparator}]{fromurl} +\newkomavar[\bankname]{frombank} +\newkomavar[\yourrefname]{yourref} +\newkomavar[\yourmailname]{yourmail} +\newkomavar[\myrefname]{myref} +\newkomavar[\customername]{customer} +\newkomavar[\invoicename]{invoice} +\newkomavar[\usekomavar*{subjectseparator}% + \usekomavar{subjectseparator}]{subject} +\newkomavar[\datename]{date} +\setkomavar{date}{\@date} +% \end{macrocode} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% \end{KOMAvar} +% +% \begin{macro}{\firsthead} +% \changes{v2.8q}{2002/01/28}{\cs{@alignfrom} auf 10000 gesetzt} +% \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} +\newcommand{\firsthead}[1]{% + \renewcommand*{\@alignfrom}{10000}% + \renewcommand*{\@firsthead}{\noindent#1}% + } +\newcommand{\firstfoot}[1]{% + \renewcommand*{\@firstfoot}{\noindent#1}% + } +\newcommand{\nexthead}[1]{% + \renewcommand*{\@nexthead}{\noindent#1}% + } +\newcommand{\nextfoot}[1]{% + \renewcommand*{\@nextfoot}{\noindent#1}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsection{Briefspezifische Schalter und Befehle f"ur Faltmarken, +% Adressfeld und Titel} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% +% \begin{macro}{\foldmarkson} +% \begin{macro}{\foldmarksoff} +% Diese Befehle dienen nur der Kompatibilit"at mit der alten +% \texttt{scrlettr.cls}. +% \begin{macrocode} +\newcommand*{\foldmarkson}{% + \@ObsoleteCommand{\foldmarkson}{foldmarks=on}} +\newcommand*{\foldmarksoff}{% + \@ObsoleteCommand{\foldmarksoff}{foldmarks=off}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\addrfieldon} +% \begin{macro}{\addrfieldoff} +% Diese Befehle dienen nur der Kompatibilit"at mit der alten +% \texttt{scrlettr.cls}. +% \begin{macrocode} +\newcommand*{\addrfieldon}{% + \@ObsoleteCommand{\addrfieldon}{addrfield=on}} +\newcommand*{\addrfieldoff}{% + \@ObsoleteCommand{\addrfieldoff}{addrfield=off}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subjecton} +% \begin{macro}{\subjectoff} +% Diese Befehle dienen nur der Kompatibilit"at mit der alten +% \texttt{scrlettr.cls}. +% \begin{macrocode} +\newcommand*{\subjecton}{% + \@ObsoleteCommand{\subjecton}{subject=titled}} +\newcommand*{\subjectoff}{% + \@ObsoleteCommand{\subjectoff}{subject=untitled}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\subjectafteron} +% \begin{macro}{\subjectafteroff} +% \changes{v2.4a}{1997/06/06}{Neue Befehle \cs{subjectafteron} und +% \cs{subjectafteroff}.} +% Diese Befehle dienen nur der Kompatibilit"at mit der alten +% \texttt{scrlettr.cls}. +% \begin{macrocode} +\newcommand*{\subjectafteron}{% + \@ObsoleteCommand{\subjectafteron}{subject=afteropening}} +\newcommand*{\subjectafteroff}{% + \@ObsoleteCommand{\subjectafteroff}{subject=beforeopening}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsection{Briefspezifische L"angen} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% Zu Berechnung der Feldpositionen werden verschiedene +% Dimensions-Variablen ben"otigt. Um jedoch nicht unn"otig viele +% L"angenregister zu verbrauchen, wird hier mit einer +% Pseudo-L"angen-Arithmetik gearbeitet. +% +% \begin{macro}{\@newplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% \changes{v2.8q}{2001/10/06}{Kompatibilit"at zu \texttt{scrlettr.cls} +% aufgegeben} +% Dieses Makro definiert eine neue Pseude-L"ange und setzt sie auf den +% Wert 0. Eine Pseudo-L"ange ist ein Makro, das eine L"ange enth"alt. +% \begin{macrocode} +\newcommand*{\@newplength}[1]{% + \@ifundefined{ltr@len@#1}{% + \expandafter\let\csname ltr@len@#1\endcsname=\z@% + }{% + \ClassError{scrlttr2}{% + pseudo-length \expandafter\string\csname ltr@len@#1\endcsname + already defined% + }{% + You tried to define a new pseudo-length using + \string\@newplength\MessageBreak + which is already defined. Try another name or + better\MessageBreak + Don't use this KOMA-Script internal macro} + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\useplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% Nat"urlich muss auf eine solche Pseudo-L"ange auch wieder lesend +% zugeriffen werden k"onnen. Wir definieren dies hier so, dass es +% au"serdem m"oglich ist, ein Vorzeichen zu verwenden. Ein Faktor ist +% allerdings nicht m"oglich. +% \begin{macrocode} +\newcommand*{\useplength}[1]{% + \expandafter\number\expandafter\csname ltr@len@#1\endcsname} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setlengthtoplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% Eine echte L"ange soll auf das Vielfache einer Pseudo-L"ange gesetzt +% werden. Dabei wird der Faktor als optionaler Parameter "ubergeben. +% Der erste obligatorische Parameter ist die L"ange, der zweite +% obligatorische Parameter ist die Pseudo-L"ange. +% \begin{macrocode} +\newcommand*{\setlengthtoplength}[3][]{% + \setlength{#2}{\useplength{#3}}% + \setlength{#2}{#1#2}} +% \end{macrocode} +% +% \begin{macro}{\@setplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% Nat"urlich wird ebenfalls eine M"oglichkeit ben"otigt, einer +% Pseudo-L"ange einen Wert zuzuweisen. Dies geschieht unter lokaler +% Anwendung einer L"ange, damit sichergestellt ist, dass eine +% L"angenangabe "ubergeben wird. Dabei wird das zuvor definierte Makro +% \cs{setlengthtoplength} verwendet. +% \begin{macrocode} +\newcommand*{\@setplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{#3}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\addtolengthplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% Wenn wir schon dabei sind, soll statt dem Setzen auch das Addieren +% funktionieren. Hier ist die Erschwernis, dass der Faktor nur f"ur +% die Pseudo-L"ange und nicht f"ur das Endergebnis gelten soll. +% \begin{macrocode} +\newcommand*{\addtolengthplength}[3][]{% + \begingroup% + \setlengthtoplength[{#1}]{\@tempskipa}{#3}% + \edef\@tempa{\endgroup% + \noexpand\addtolength{#2}{\the\@tempskipa}}% + \@tempa% + } +% \end{macrocode} +% +% \begin{macro}{\@addtoplength} +% \changes{v2.8q}{2001/10/06}{Neu} +% Ebenso wird ein Makro ben"otigt, mit dem zu einer Pseudo-L"ange das +% Vielfache eines Wertes addiert werden kann. +% \begin{macrocode} +\newcommand*{\@addtoplength}[3][]{% + \begingroup% + \setlength{\@tempskipa}{#3}% + \setlength{\@tempskipa}{#1\@tempskipa}% + \addtolengthplength{\@tempskipa}{#2}% + \edef\@tempa{\noexpand\endgroup% + \noexpand\expandafter\noexpand\renewcommand\noexpand\expandafter*% + \noexpand\csname ltr@len@#2\noexpand\endcsname{\the\@tempskipa}% + }% + \@tempa% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ltr@len@foldmarkhpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand der Faltmarken von der linken Papierkante. +% \begin{macrocode} +\@newplength{foldmarkhpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@tfoldmarkvpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% \begin{macro}{\ltr@len@bfoldmarkvpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand der oberen und unteren Faltmarken von der oberen Papierkante. +% \begin{macrocode} +\@newplength{tfoldmarkvpos} +\@newplength{bfoldmarkvpos} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\ltr@len@toaddrvpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand des Adressfensters von der oberen Papierkante. +% \begin{macrocode} +\@newplength{toaddrvpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@backaddrheight} +% \changes{v2.8q}{2001/10/06}{Neu} +% H"ohe der R"ucksendeadresse. +% \begin{macrocode} +\@newplength{backaddrheight} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@toaddrhpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand des Adressfeldes von der linken Papierkante bzw. wenn +% negativ von der rechten Papierkante. +% \begin{macrocode} +\@newplength{toaddrhpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@specialmailindent} +% \changes{v2.8q}{2002/03/25}{Neu} +% Abstand der Versandtart vom linken Rand des Adressfensters. +% \begin{macrocode} +\@newplength{specialmailindent} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@specialmailrightindent} +% \changes{v2.8q}{2002/03/25}{Neu} +% Abstand der Versandtart vom rechten Rand des Adressfensters. +% \begin{macrocode} +\@newplength{specialmailrightindent} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@toaddrindent} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand der Adresse vom linken Rand des Adressfensters. +% \begin{macrocode} +\@newplength{toaddrindent} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@toaddrwidth} +% \changes{v2.8q}{2001/10/06}{Neu} +% Breite des Adressfensters +% \begin{macrocode} +\@newplength{toaddrwidth} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@toaddrheight} +% \changes{v2.8q}{2001/10/06}{Neu} +% H"ohe des Adressfensters ohne R"ucksendeadresse +% \begin{macrocode} +\@newplength{toaddrheight} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@locwidth} +% \changes{v2.8q}{2001/10/06}{Neu} +% Breite des Feldes neben dem Adressfenster +% \begin{macrocode} +\@newplength{locwidth} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@refvpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand der Gesch"aftszeile von der Papieroberkante. +% \begin{macrocode} +\@newplength{refvpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@refwidth} +% \changes{v2.8q}{2001/10/06}{Neu} +% Breite der Gesch"aftszeile. +% \begin{macrocode} +\@newplength{refwidth} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@refhpos} +% \changes{v2.9l}{2003/01/28}{Neu} +% Horizontale Position der Gesch"aftszeile. +% \begin{macrocode} +\@newplength{refhpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@refaftervskip} +% \changes{v2.8q}{2001/10/09}{Neu} +% Abstand nach der Gesch"aftszeile. +% \begin{macrocode} +\@newplength{refaftervskip} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@sigbeforevskip} +% \changes{v2.8q}{2001/10/09}{Neu} +% Raum f"ur die Unterschrift. +% \begin{macrocode} +\@newplength{sigbeforevskip} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@sigindent} +% \changes{v2.8q}{2001/10/06}{Neu} +% Horizontaler Einzug des Schlussgru"ses und der Signatur. +% \begin{macrocode} +\@newplength{sigindent} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@@firstfootvpos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand des Fu"ses der ersten Seite von der Papieroberkante. +% \begin{macrocode} +\@newplength{firstfootvpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@firstfootwidth} +% \changes{v2.8q}{2001/10/06}{Neu} +% Breite des Fu"ses der ersten Seite. +% \begin{macrocode} +\@newplength{firstfootwidth} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\set@ltr@len@firstheadvspos} +% \changes{v2.8q}{2001/10/06}{Neu} +% Abstand des Kopfes der ersten Seite von der Papoeroberkante. +% \begin{macrocode} +\@newplength{firstheadvpos} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@firstheadwidth} +% \changes{v2.8q}{2001/10/06}{Neu} +% Breite des Kopfes der ersten Seite. +% \begin{macrocode} +\@newplength{firstheadwidth} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ltr@len@fromrulewidth} +% \changes{v2.8q}{2002/01/28}{Neu} +% Die L"ange einer eventuell gesetzten Linie im Absender. Negative +% Werte bedeuten, dass die L"ange automtaisch bestimmt wird. +\@newplength{fromrulewidth} +\@setplength{fromrulewidth}{0pt} +% \end{macro} +% +% 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. +% +% Wichtig: Ab Version 2.8n sind alle vertikalen Abst"ande relativ zum +% oberen Papierrand. Au"serdem gibt es zwei Varianten, eine +% ausgewogene und eine, bei der mehr Platz f"ur den Brieftext der +% ersten Seite bleibt. +% +% \begin{macro}{\LoadLetterOption} +% \changes{v2.8q}{2001/10/08}{Neu} +% Bei der neuen Briefklasse existiert eine Anweisung, mit der eine +% \emph{\textbf{l}etter-\texttt{c}lass-\texttt{o}ption}-Datei geladen +% werden kann. Das Laden wird mit entsprechender Information in der +% \texttt{log}-Datei vermerkt. Damit in der Datei interne Makros +% verwendet werden k"onnen, mu"s der catcode von "`@"' entsprechend +% gesetzt sein. Damit der Befehl sowohl in der Pr"aambel als auch in +% weiteren Optionen-Dateien oder in der Klasse selbst verwendet werden +% kann, muss der catcode am Ende wieder restauriert werden. Dabei muss +% etwas trickreich gearbeitet werden, damit tats"achlich eine +% Schachtelung m"oglich ist. So erfolgt die Umschaltung des catcodes +% immer nur beim ersten Aufruf innerhalb einer Schachtel. +% \begin{macrocode} +\newcommand*{\LoadLetterOption}[1]{% + \@ifundefined{@restore@catcode@level} + {\let\@restore@catcode@level=\z@}{} + \ifnum\@restore@catcode@level =\z@ + \ifnum\catcode`\@=11 + \let\@restore@catcode\relax + \else + \@tempcnta=\catcode`\@ + \edef\@restore@catcode{% + \noexpand\catcode`\noexpand\@=\the\@tempcnta}% + \makeatletter + \fi + \fi + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta} + \InputIfFileExists{#1.lco}{% + \ClassInfo{% + scrlttr2% + }{Letter-Class-Option `#1' loaded} + }{% + \ClassError{% + scrlttr2% + }{% + Letter-Class-Option file `#1.lco' not found% + }{% + You've told me to load the Letter-Class-Option `#1'. So I have + to load\MessageBreak + the file `#1.lco'. But the file isn't available.} + } + \@tempcnta=\@restore@catcode@level\relax + \advance\@tempcnta by \m@ne\relax + \edef\@restore@catcode@level{\the\@tempcnta} + \ifnum\@tempcnta =\z@ + \@restore@catcode + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LetterOptionNeedsPapersize} +% \changes{v2.8q}{2001/10/17}{Neu} +% Es besteht die M"oglichkeit, in \texttt{lco}-Dateien eine bestimmte +% Papiergr"o"se zu fordern. Dazu wird der Name der \texttt{lco}-Datei +% und die geforderte Papiergr"ose als Parameter "ubergeben. Stimmt die +% Papiergr"o"se nicht "uberein, so wird bei \cs{opening} eine Warnung +% ausgegeben. +% \begin{macro}{\@PapersizeWarning} +% \changes{v2.8q}{2002/03/25}{Neu (intern)} +% \begin{macro}{\@@PapersizeWarning} +% \changes{v2.8q}{2002/03/25}{Neu (intern)} +% \begin{macro}{\LOPNP@size} +% \changes{v2.8q}{2002/03/25}{Neu (intern)} +% \begin{macro}{\LOPNP@option} +% \changes{v2.8q}{2002/03/25}{Neu (intern)} +% Zur einfacheren Realisierung wird mit vier internen Hilfsmakros +% gearbeitet. +% \begin{macrocode} +\newcommand*{\LOPNP@option}{} +\newcommand*{\LOPNP@size}{} +\newcommand*{\@PapersizeWarning}{ + \begingroup% + \edef\@tempc{\noexpand\@tempswatrue + \noexpand\ifdim\paperwidth=\the\paperwidth\noexpand\else + \noexpand\@tempswafalse\noexpand\fi + \noexpand\ifdim\paperheight=\the\paperheight\noexpand\else + \noexpand\@tempswafalse\noexpand\fi + \noexpand\@@PapersizeWarning + } + \def\@tempb{letter}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{11in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{legal}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{14in}\setlength{\paperwidth}{8.5in}% + \else\def\@tempb{executive}\ifx\LOPNP@size\@tempb% + \setlength{\paperheight}{10.5in}\setlength{\paperwidth}{7.25in}% + \else% + \def\ta@opt@err{% + \ClassError{% + scrlttr2% + }{papersize `\LOPNP@size' undefined}{% + You've told me to check for paper size + `\LOPNP@size'\MessageBreak + at letter option file `\LOPNP@option.lco',\MessageBreak + but this paper size is not supported.\MessageBreak + See the KOMA-Script manual for informations about known + paper sizes.}% + } + \let\@headlines\ta@opt@err% + \expandafter\x@@paper\LOPNP@size paperpaper\x@@paper% + \fi\fi\fi + \@tempc + \endgroup% +} +\newcommand*{\@@PapersizeWarning}{% + \if@tempswa\else% + \ClassWarningNoLine{% + scrlttr2% + }{% + Letter option file `\LOPNP@option.lco'\MessageBreak + needs paper size `\LOPNP@size'.\MessageBreak + Current paper size is not `\LOPNP@size'!\MessageBreak + You should add `paper=\LOPNP@size' at the\MessageBreak + option list of \string\documentclass!\MessageBreak + Maybe you know what you are doing,\MessageBreak + so I do not change this myself} + \fi + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macrocode} +\newcommand*{\LetterOptionNeedsPapersize}[2]{% + \edef\LOPNP@size{#2}\edef\LOPNP@option{#1}% + } +% \end{macrocode} +% \end{macro} +% +% Als Voreinstellung wird schoneinmal die Datei \texttt{DIN.lco} +% geladen. +% \begin{macrocode} +\LoadLetterOption{DIN} +% \end{macrocode} +% +% Der Inhalt dieser Dateien folgt. Es handelt sich im Wesentlichen um +% das Setzen der Pseudo-L"angen. In einigen F"allen werden aber auch +% zus"atzlich Befehle (um)definiert. +% \begin{macrocode} +%</scrlettr> +%</class> +%<*lco> +% \end{macrocode} +% +% Die Maße f"ur einige Optionen wurden nicht von mir selbst +% recherchiert: +% \begin{center} +% \begin{tabular}{ll} +% \texttt{lco}-Datei & Recherchiert von \\\hline\\[-1.6ex] +% DIN & mir \\ +% DINmtext & mir \\ +% KOMAold & mir \\ +% SNleft & Roger Luethi \\ +% SN & Roger Luethi \\ +% \end{tabular}{ll} +% \end{center} +% +% Zun"achst wird gepr"uft, ob "uberhaupt die richtige Klasse geladen +% ist. +% \begin{macrocode} +\@ifundefined{scr@fromname@var}{% + \GenericWarning{(% +%<DIN> DIN% +%<DINmoretext> DINmtext% +%<SN> SN% +%<SNold> SNold% +%<SwissLeft> SNleft% +%<KOMAold> KOMAold% + .lco)\@spaces\@spaces\@spaces\@spaces\@spaces\@spaces}{% + Letter-class-option +%<DIN> DIN +%<DINmoretext> DINmtext +%<SN> SN +%<SNold> SNold +%<SwissLeft> SNleft +%<KOMAold> KOMAold + Warning:\space + This letter class option file was made only\MessageBreak + to be used with KOMA-Script letter class\MessageBreak + `scrlttr2'. Use with other classes may result\MessageBreak + in a lot of errors\@gobble + } +}{} +% \end{macrocode} +% +% Dann wird gepr"uft, ob das richtige Papierformat vorhanden ist. +% \begin{macrocode} +%<*DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold> +\LetterOptionNeedsPapersize{% +%<DIN> DIN% +%<DINmoretext> DINmtext% +%<SN> SN% +%<SNold> SNold% +%<SwissLeft> SNleft% +%<KOMAold> KOMAold% + } + {a4} +%</DIN|DINmoretext|SN|SNold|SwissLeft|KOMAold> +% \end{macrocode} +% +% Dann werden die Werte gesetzt. +% \begin{macrocode} +\@setplength{foldmarkhpos}{3.5mm} +%<DIN|SwissLeft|SN>\@setplength{tfoldmarkvpos}{105mm} +%<DINmoretext>\@setplength{tfoldmarkvpos}{87mm} +%<KOMAold>\@setplength{tfoldmarkvpos}{103.5mm} +%<DIN|SwissLeft|SN>\@setplength{bfoldmarkvpos}{210mm} +%<DINmoretext>\@setplength{bfoldmarkvpos}{192mm} +%<KOMAold>\@setplength{bfoldmarkvpos}{202.5mm} +%<DIN|SN>\@setplength{toaddrvpos}{45mm} +%<DINmoretext>\@setplength{toaddrvpos}{27mm} +%<SwissLeft>\@setplength{toaddrvpos}{35.5mm} +%<KOMAold>\@setplength{toaddrvpos}{49mm} +%<DIN|SN>\@setplength{refvpos}{98.5mm} +%<DINmoretext>\@setplength{refvpos}{80.5mm} +%<SwissLeft>\@setplength{refvpos}{89mm} +%<KOMAold>\@setplength{refvpos}{89.5mm} +%<!KOMAold>\@setplength{refaftervskip}{\baselineskip} +%<KOMAold>\@setplength[2]{refaftervskip}{\baselineskip} +%<DIN|DINmoretext|SwissLeft>\@setplength{toaddrhpos}{20mm} +%<SN>\@setplength{toaddrhpos}{-8mm} +%<KOMAold>\@setplength{toaddrhpos}{1in} +%<KOMAold>\@addtoplength{toaddrhpos}{\oddsidemargin} +%<DIN|DINmoretext>\@setplength{toaddrwidth}{85mm} +%<SN>\@setplength{toaddrwidth}{90mm} +%<SwissLeft>\@setplength{toaddrwidth}{100mm} +%<KOMAold>\@setplength{toaddrwidth}{70mm} +%<DIN|DINmoretext|SN|SwissLeft|KOMAold>\@setplength{toaddrheight}{40mm} +\@setplength{toaddrindent}{\z@} +\@setplength{specialmailindent}{\fill} +\@setplength{specialmailrightindent}{1em} +\@setplength{locwidth}{\z@} +%<DIN|DINmoretext|SN|SwissLeft|KOMAold>\@setplength{backaddrheight}{5mm} +%<DIN|DINmoretext|SN|SwissLeft>\@setplength{firstheadvpos}{8mm} +%<KOMAold>\@setplength{firstheadvpos}{6mm} +%<KOMAold>\@setplength{firstheadwidth}{\textwidth} +%<*!KOMAold> +\@setplength{firstheadwidth}{\paperwidth} +\ifdim \useplength{toaddrhpos}>\z@ + \@addtoplength[-2]{firstheadwidth}{\useplength{toaddrhpos}} +\else + \@addtoplength[2]{firstheadwidth}{\useplength{toaddrhpos}} +\fi +%</!KOMAold> +\@setplength{firstfootwidth}{\useplength{firstheadwidth}} +%<KOMAold>\@setplength{firstfootvpos}{\paperheight} +%<KOMAold>\@addtoplength{firstfootvpos}{-2cm} +%<!KOMAold>\@setplength{firstfootvpos}{1in} +%<!KOMAold>\@addtoplength{firstfootvpos}{\topmargin} +%<!KOMAold>\@addtoplength{firstfootvpos}{\headheight} +%<!KOMAold>\@addtoplength{firstfootvpos}{\headsep} +%<!KOMAold>\@addtoplength{firstfootvpos}{\textheight} +%<!KOMAold>\@addtoplength{firstfootvpos}{\footskip} +% \end{macrocode} +% Bei der Breite der Gesch"aftszeile brauchen wir wieder eine +% Sonderl"osung, damit die Option "`wide"' auch sp"ater noch gesetzt +% werden kann. Also verwenden wir hier den Wert 0 als mit der +% Bedeutung "`ist bei \cs{opening} zu berechnen. +% \begin{macrocode} +\@setplength{refwidth}{0pt} +\@setplength{sigindent}{0mm} +\@setplength{sigbeforevskip}{2\baselineskip} +%<!KOMAold>\let\raggedsignature=\centering +%<KOMAold>\let\raggedsignature=\raggedright +%<*DINmoretext> +\renewcommand*{\@firsthead}{\noindent + \parbox[b]{\useplength{firstheadwidth}}{\centering% + \usekomafont{fromaddress}{% + \ifkomavarempty{fromname}{}{% + \usekomafont{fromname}% + {\ignorespaces\usekomavar{fromname}\\[-8pt] + \rule{\useplength{firstheadwidth}}{.4pt}\\ + }% + }% + \ifkomavarempty{fromaddress}{}{% + \def\\{,\ \@ogobble} + \ignorespaces\usekomavar{fromaddress}% + }% + }% + }% + } +%</DINmoretext> +% \end{macrocode} +% +% Au"serdem gibt es noch die Kompatibilit"atseinstellungen, die +% ebenfalls von \texttt{KOMAold} aktiviert werden. +% \begin{macrocode} +%<*KOMAold> +\def\yourref{\setkomavar{yourref}} +\def\yourmail{\setkomavar{yourmail}} +\def\myref{\setkomavar{myref}} +\def\customer{\setkomavar{customer}} +\def\invoice{\setkomavar{invoice}} +\@ifundefined{scr@refitemi@var}{\newkomavar{refitemi}}{} +\def\refitemi{\setkomavar{refitemi}} +\def\refitemnamei{\setkomavar*{refitemi}} +\@ifundefined{scr@refitemii@var}{\newkomavar{refitemii}}{} +\def\refitemii{\setkomavar{refitemii}} +\def\refitemnameii{\setkomavar*{refitemii}} +\@ifundefined{scr@refitemiii@var}{\newkomavar{refitemiii}}{} +\def\refitemiii{\setkomavar{refitemiii}} +\def\refitemnameiii{\setkomavar*{refitemiii}} +\l@addto@macro{\defaultreffields}{% + \addtoreffields{refitemi}% + \addtoreffields{refitemii}% + \addtoreffields{refitemiii}% + } +\addtoreffields{refitemi}% +\addtoreffields{refitemii}% +\addtoreffields{refitemiii}% +\def\toname{\usekomavar{toname}} +\def\toaddress{\usekomavar{toaddress}} +\@ifundefined{scr@branch@var}{\newkomavar{branch}}{} +\def\branch{\setkomavar{branch}} +\def\frombranch{\usekomavar{branch}} +\def\signature{\setkomavar{signature}} +\def\fromsig{\usekomavar{signature}} +\def\name{\setkomavar{fromname}} +\def\fromname{\usekomavar{fromname}} +\def\address{\setkomavar{fromaddress}} +\def\fromaddress{\usekomavar{fromaddress}} +\def\location{\setkomavar{location}} +\def\fromlocation{\usekomavar{location}} +\def\backaddress{\setkomavar{backaddress}} +\def\@tempa{% + \ifkomavarempty{fromname}{}{% + \strut\ignorespaces\usekomavar{fromname}% + \ifkomavarempty{fromaddress}{}{\\}}% + \ifkomavarempty{fromaddress}{}{% + \strut\ignorespaces\usekomavar{fromaddress}}% + } +\ifx\@tempa\scr@backaddress@var% + \setkomavar{backaddress}{} +\fi +\def\frombackaddress{\usekomavar{backaddress}} +\def\telephone{\setkomavar{fromphone}} +\def\telephonenum{\usekomavar{fromphone}} +\def\specialmail{\setkomavar{specialmail}} +\def\@specialmail{\usekomavar{specialmail}} +\def\title{\setkomavar{title}} +\def\@title{\usekomavar{title}} +\def\subject{\setkomavar{subject}} +\def\@subject{\usekomavar{subject}} +\def\place{\setkomavar{place}} +\def\fromplace{\usekomavar{place}} +\let\ccnameseparator=\scr@ccseparator@var +\setkomavar{ccseparator}{\ccnameseparator} +\let\enclnameseparator=\scr@enclseparator@var +\setkomavar{enclseparator}{\enclnameseparator} +\setkomafont{fromname}{\scshape} +%</KOMAold> +% \end{macrocode} +% +% \begin{macrocode} +%</lco> +%<*class> +% \end{macrocode} +% +% +% \subsection{Serienbriefe und Adressdateien} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{macro}{\adrentry} +% \changes{v2.8q}{2002/05/19}{\cs{adrentry} verwendet das neue +% \cs{addrentry}} +% \begin{macro}{\adrchar} +% \changes{v2.8q}{2002/05/19}{\cs{adrchar} verwendet das neue +% \cs{addrchar}} +% 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. +% Durch die Definition mit Hilfe von \cs{addrentry} bzw. \cs{addrchar} +% m"ussen vom Anwender f"ur neue Anwendungen nur die neuen Befehle +% umdefiniert werden. +% \begin{macrocode} +\newcommand*{\adrentry}[7]{% + \addrentry{#1}{#2}{#3}{#4}{#5}{#6}{#7}{}} +\newcommand*{\adrchar}{\addrchar} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\addrentry} +% \changes{v2.8n}{2001/09/06}{Neu} +% \begin{macro}{\addrchar} +% \changes{v2.8n}{2001/09/06}{Neu} +% Diese Makros erm"oglichen ab Version 2.8n die Verwendung von bis zu +% 9 Argumenten. +% \begin{macrocode} +\newcommand*{\addrentry}[9]{\def\@tempa{#1}\ifx \@tempa\@empty \else + \def\@tempa{#2}\ifx \@tempa\@empty + \expandafter\def\csname #9\endcsname{#1\\#3} + \else + \expandafter\def\csname #9\endcsname{#2 #1\\#3} + \fi \fi} +\newcommand*{\addrchar}[1]{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsection{Befehle in der Briefumgebung} +% +% \begin{macrocode} +%<*scrlettr> +% \end{macrocode} +% +% \begin{macro}{\stopbreaks} +% \begin{macro}{\startbreaks} +% \begin{macro}{\@nobreakvspace} +% \begin{macro}{\@nobreakvspacex} +% \begin{macro}{\@nobreakcr} +% Innerhalb von Briefen wird der Umbruch etwas anders gehandhabt. +% Dadurch soll der Brieftext besser positioniert werden. +% \begin{macrocode} +\newcommand*{\stopbreaks}{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +\newcommand*{\@nobreakvspace}{% + \@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +\newcommand*{\@nobreakvspacex}[1]{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\newcommand*{\@nobreakcr}{% + \vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} +\newcommand*{\startbreaks}{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\move@topt} +% \changes{v2.8n}{2001/09/07}{Neu} +% F"ur die folgenden Aktionen wird ein Makro ben"otigt, mit dem man +% vertikal von der relativen Seitenposition zur relativen +% Papierposition gelangen kann. +% \begin{macrocode} +\newcommand*{\move@topt}{% + \null\vskip -1in\vskip -\topmargin% + \vskip -\headheight\vskip -\headsep% + \vskip -\topskip% + \ignorespaces% + } +% \end{macrocode} +% \begin{macro}{\move@frompt} +% \changes{v2.8n}{2001/09/07}{Neu} +% Nat"urlich wird auch ein Makro ben"otigt, um vertikal von einer +% relativen Papierposition wieder auf die relative Seitenposition +% zur"uck zu gelangen. +% \begin{macrocode} +\newcommand*{\move@frompt}{% + \vskip 1in\vskip \topmargin% + \vskip \headheight\vskip \headsep% + \vskip \topskip% + \vskip -\baselineskip% + \ignorespaces% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\move@topl} +% \changes{v2.8n}{2001/09/07}{Neu} +% F"ur die folgenden Aktionen wird au"serdem ein Makro ben"otigt, mit +% dem man horizontal von der relativen Seitenposition zur relativen +% Papierposition gelangen kann. +% \begin{macrocode} +\newcommand*{\move@topl}{% + \null\hskip -1in% + \ifodd\value{page}\hskip -\oddsidemargin\else\hskip -\evensidemargin\fi + \ignorespaces% + } +% \end{macrocode} +% \begin{macro}{\move@frompl} +% \changes{v2.8n}{2001/09/07}{Neu} +% Nat"urlich wird auch ein Makro ben"otigt, um horizontal von einer +% relativen Papierposition wieder auf die relative Seitenposition +% zur"uck zu gelangen. +% \begin{macrocode} +\newcommand*{\move@frompl}{% + \hskip 1in% + \ifodd\value{page}\hskip \oddsidemargin\else\hskip \evensidemargin\fi% + \ignorespaces% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vb@t@z} +% \changes{v2.8n}{2001/09/07}{Neu} +% Ausserdem wird ein vertikales "Aquivalent zu |\rlap| ben"otigt. +% \begin{macrocode} +\newcommand*{\vb@t@z}[1]{{% + \setbox0\vbox to\z@{#1\vss}% + \setlength{\parskip}{\z@}\setlength{\baselineskip}{\z@}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \setlength{\@tempdima}{\ht0}\addtolength{\@tempdima}{\dp0}% + \box0\vskip-\@tempdima% + }} +% \end{macrocode} +% \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{macro}{\@foldmark} +% \changes{v2.8n}{2001/09/07}{Neu} +% Das geht am einfachsten, wenn wir auch einen Befehl haben, mit dem +% man eine einzelne Faltmarke relativ zur aktuellen Position setzen +% kann. Dies geschieht mit Hilfe von |\rlap|, damit die horizontale +% Position unver"andert bleibt. Als Parameter werden der vertikale +% Abstand zur aktuellen Position und die L"ander der Marke +% "ubergeben. +% \begin{macrocode} +\newcommand*{\@foldmark}[2]{% + \vskip #1% + \vb@t@z{\rlap{\move@topl\hskip\useplength{foldmarkhpos}% + \rule{#2}{.2pt}}}% + \vskip -#1\ignorespaces% +} +\newcommand*{\@foldmarks}{% + \if@fold% + \typeout{Foldmarks: yes}% + \move@topt + \@foldmark{\useplength{tfoldmarkvpos}}{2mm} + \@foldmark{.5\paperheight}{4mm} + \@foldmark{\useplength{bfoldmarkvpos}}{2mm} + \move@frompt + \else + \typeout{Foldmarks: no}% + \fi% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\@savevbox} +% \changes{v2.8n}{2001/09/07}{Neu} +% \changes{v2.8q}{2001/10/30}{zus"atzlich ein optionales Argument} +% \begin{macro}{\if@savevbox@warning} +% \begin{macro}{\@savevbox@warningtrue} +% \begin{macro}{\@savevbox@warningfalse} +% \changes{v2.8q}{2001/10/30}{Neu} +% Wenn eine der vertikalen Boxen in \cs{opening} zu einer +% \texttt{overbox \string\vbox\space} Meldung f"uhrt, weiss letztlich +% niemand, welche Box daf"ur verantwortlich war. Deshalb definieren +% wir hier ein Makro, das ggf. eine Meldung ausgibt, die erkl"art, +% welches Element die Ursache war und was man tun kann. Das erste +% Argument ist dabei die Sollh"ohe der Box, das zweite Argument ist +% der Boxinhalt, das dritte Argument is der Name des Elements, das zu +% hoch ist, das vierte der Name der Elementh"ohe und das f"unfte +% schlie"slich der Befehl, mit dem das Element vom Anwender definiert +% werden kann. Das optionale Argument wird nur bei der Ausgabe mit +% ausgegeben, findet jedoch bei der Berechnung keine +% Ber"ucksichtigung. +% \begin{macrocode} +\newif\if@savevbox@warning\@savevbox@warningtrue +\newcommand{\@savevbox}[6][]{% + \begingroup% + \vbox to #2{#1#3}% + \if@savevbox@warning\@savevbox@warningfalse% + \setbox0\vbox{#3}% + \setlength{\@tempdima}{#2}% + \setlength{\@tempdimb}{\ht0}\addtolength{\@tempdimb}{\dp0}% + \ifdim \@tempdimb>\@tempdima% + \addtolength{\@tempdimb}{-\@tempdima}% + \ClassWarning{% + scrlttr2% + }{% + #4 is \the\@tempdimb\space too high.\MessageBreak + You have to change `\string#5'\MessageBreak + or you have to define a smaller\MessageBreak + #4 using \string#6.\MessageBreak + Because of this too high #4\MessageBreak + you've got an overfull \string\vbox\space message% + }% + \fi% + \fi% + \endgroup% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\@firstheadfootfield} +% \changes{v2.8n}{2001/09/08}{Neu} +% \changes{v2.8q}{2001/10/30}{\cs{parfillskip} lokal auf 0 gesetzt} +% \changes{v2.8q}{2001/10/30}{Fu"s explizit in eine Box gesetzt} +% \changes{v2.9l}{2003/01/23}{Positionierung verbessert} +% Ab Version 2.8n werden Kopf und Fu"s der ersten Seite nicht mehr per +% Seitenstil \texttt{firstpage} gesetzt, sondern mit einem speziellen +% Feld. Dabei wird auch beachtet, dass dieses Feld im Kopf eine +% bestimmte aber beschr"ankte H"ohe hat. Diese H"ohe ist unabh"angig +% von der normalen Kopfh"ohe und richtet sich stattdessen nach der +% Position des Adressfeldes. +% \begin{macrocode} +\newcommand*{\@firstheadfootfield}{% + \typeout{Head of first page}% + \move@topt\vskip\useplength{firstheadvpos}% + \vb@t@z{% + \rlap{\move@topl + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstheadwidth}% + \hskip\@tempskipa + \vbox{\hsize\useplength{firstheadwidth}% + \setlength{\@tempskipa}{\useplength{toaddrvpos}}% + \addtolengthplength[-1]{\@tempskipa}{firstheadvpos}% + \addtolength{\@tempskipa}{-\baselineskip}% +% \end{macrocode} +% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf +% verlassen, dass |\textwidth| die Breite des Briefkopfes ist, wird +% diese L"ange lokal entsprechend gesetzt. Au"serdem wird daf"ur +% gesorgt, dass |\parfillskip| hier nicht ber"ucksichtigt wird. +% \begin{macrocode} + \setlength{\textwidth}{\useplength{firstheadwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \@savevbox{\@tempskipa}{\@firsthead\vskip \z@ \@plus .00001fil}% + {head of first page}{firstheadvpos}{\firsthead}% + }% + }% + }% + \vskip-\useplength{firstheadvpos}\move@frompt + \typeout{Foot of first page}% + \move@topt + \vb@t@z{% + \rlap{\move@topl + \setlength\@tempskipa{.5\paperwidth}% + \addtolengthplength[-.5]{\@tempskipa}{firstfootwidth}% + \hskip\@tempskipa% + \vbox{\hsize\useplength{firstfootwidth}% + \vskip\useplength{firstfootvpos}% +% \end{macrocode} +% Da sich einige -- beispielsweise |briefkopf.sty| -- darauf +% verlassen, dass |\textwidth| die Breite des Brieffu"ses ist, wird +% diese L"ange lokal entsprechend gesetzt. Au"serdem wird daf"ur +% gesorgt, dass |\parfillskip| hier nicht ber"ucksichtigt wird. +% \begin{macrocode} + \setlength{\textwidth}{\useplength{firstfootwidth}}% + \setlength{\parfillskip}{\z@ \@plus 1fil}% + \vbox{\hsize\useplength{firstfootwidth}\@firstfoot}% + }% + }% + }% + \move@frompt% + {% + \setlength{\@tempdima}{1in}\addtolength{\@tempdima}{\topmargin}% + \addtolength{\@tempdima}{\headheight}% + \addtolength{\@tempdima}{\headsep}% + \addtolength{\@tempdima}{\textheight}% + \addtolength{\@tempdima}{\footskip}% + \addtolengthplength[-1]{\@tempdima}{firstfootvpos}% + \ifdim\@tempdima>\z@\enlargethispage{-\@tempdima}% + \else\if@enlargefp\enlargethispage{-\@tempdima}\fi\fi + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@addrfield} +% \changes{v2.8q}{2002/04/01}{\cs{parfillskip} lokal ge"andert} +% \changes{v2.8q}{2002/06/03}{Sonderbehandlung f"ur Adressfeld +% rechts} +% \changes{v2.9o}{2003/02/20}{\cs{noindent} eingef"ugt bei +% \texttt{specialmail}} +% Dasselbe gilt auch f"ur das Adressfeld f"ur Fensterumschl"age. Die +% R"ucksendeadresse und die Briefart wird dabei unterstrichen. +% \begin{macrocode} +\newcommand*{\@addrfield}{% + \if@afield + \begingroup% + \if@baddr + \ifkomavarempty{backaddress}{% + \let\@tempa\@empty\let\@tempb\@empty + }{% + \def\@tempa{backaddress}\def\@tempb{,\space}% + }% + \else + \let\@tempa\@empty\let\@tempb\@empty + \fi + \ifkomavarempty{specialmail}{}{% + \edef\@tempa{\@tempa\@tempb specialmail}\def\@tempb{,\space}% + }% + \typeout{Address (\@tempa\@tempb addressee)}% + \endgroup% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{{\setlength{\parfillskip}{\z@ \@plus 1fil}% + \rlap{\move@topl + \setlengthtoplength{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \addtolengthplength[-]{\@tempskipa}{toaddrwidth}% + \fi + \hskip\@tempskipa + \@addtoplength{toaddrheight}{\useplength{backaddrheight}}% + \@savevbox{\useplength{toaddrheight}}{\hsize\useplength{toaddrwidth}% + \@savevbox[\vss]{\useplength{backaddrheight}}{% + \hsize\useplength{toaddrwidth}% + \if@baddr + \ifkomavarempty{backaddress}{}{{% + \noindent% + \def\\{\usekomavar{backaddressseparator}\@ogobble}% + \underline{\scriptsize\usekomafont{backaddress}% + \usekomavar{backaddress}}}}% + \fi + }{backaddress}{backaddrheight}{\setkomavar}% + \ifkomavarempty{specialmail}{}{% + \vbox{\hsize\useplength{toaddrwidth}% + \noindent\hspace*{\useplength{specialmailindent}}% + \underline{\usekomavar{specialmail}}% + \hspace*{\useplength{specialmailrightindent}}}% + }% + \vfil% + \noindent\hskip\useplength{toaddrindent}% + \setlength{\@tempdima}{\useplength{toaddrwidth}}% + \addtolengthplength[-2]{\@tempdima}{toaddrindent}% + \vbox{\hsize\@tempdima% + \noindent\usekomavar{toname}\\\usekomavar{toaddress}}% + \vfil\null}% + {address field}{toaddrheight} + {\begin{letter} or you\MessageBreak + have to define a smaller special purpose using\MessageBreak + \string\specialmail} + }}}% + \vskip-\useplength{toaddrvpos}\move@frompt + \else + \typeout{Address: No}% + \fi + } +% \end{macrocode} +% \begin{macro}{\@ogobble} +% \changes{v2.8q}{2002/01/22}{Neu} +% In obiger Definition wird das Makro \cs{@ogobble} verwendet, um +% einen optionalen Parameter zu vernichten, falls dieser existiert. +% \begin{macrocode} +\newcommand*{\@ogobble}[1][]{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@locfield} +% \changes{v2.8o}{2001/09/17}{\cs{noindent} eingef"ugt} +% \changes{v2.8q}{2002/02/07}{\cs{noindent} nach dem Logo} +% \changes{v2.8q}{2002/07/23}{Berechnung der Breite hierher +% verschoben} +% \changes{v2.8q}{2002/06/03}{Sonderbehandlung f"ur Adressfeld +% rechts} +% Das "`locfield"' wird unabh"angig von der Adresse gesetzt. +% \begin{macrocode} +\newcommand*{\@locfield}{% + \ifdim \useplength{locwidth}=\z@% + \@setplength{locwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}% + \else + \@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}% + \fi + \@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}% + \if@bigloc% + \@setplength[.66667]{locwidth}{\useplength{locwidth}}% + \else% + \@setplength[.5]{locwidth}{\useplength{locwidth}}% + \fi% + \fi% + \ifnum 1=\@alignfrom + \if@logo + \ifkomavarempty{location}{% + \setkomavar{location}{\null}}{}% + \fi + \fi + \ifkomavarempty{location}{% + \typeout{Location field: empty}% + }{% + \typeout{Location field: yes}% + \move@topt\vskip\useplength{toaddrvpos}% + \vb@t@z{\rlap{% + \move@topl + \setlengthtoplength[-]{\@tempskipa}{toaddrhpos}% + \ifdim \@tempskipa<\z@ + \addtolength{\@tempskipa}{\paperwidth}% + \else + \addtolengthplength{\@tempskipa}{locwidth}% + \fi + \hskip\@tempskipa + \llap{% + \@savevbox{\useplength{toaddrheight}}{% + \noindent\hsize\useplength{locwidth}% + \ifnum 1=\@alignfrom + \if@logo + \ifkomavarempty{fromlogo}{}{% + {\raggedleft\noindent\usekomavar{fromlogo}\\ + \vskip\parskip}\noindent}% + \fi + \fi + \usekomavar{location}\vskip \z@ \@plus .00001fil} + {location field}{toaddrheight}{\setkomavar}% + }}% + }% + \vskip-\useplength{toaddrvpos}\move@frompt + }% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@datefield} +% \changes{v2.8q}{2002/01/14}{Schalter \cs{if@tempwa} wird bereits +% hier auf \texttt{true} gesetzt} +% Je nachdem, welche Felder definiert sind, mu"s eine gesch"aftsm"a"siger +% Standardbrief oder ein eher pers"onliches Aussehen gew"ahlt werden. +% \begin{macro}{\@set@reffield} +% Einzelne Felder werden mit Hilfe dieses Makros gesetzt. Als +% Parameter wird der Name des Feldes "ubergeben. Es wird dann davon +% ausgegangen, dass der Name des Feldes in der jeweiligen Sprache im +% Makro \verb|\|\texttt{\emph{\#1}}\verb|name| und der Wert des Feldes +% in \verb|\var|\texttt{\emph{\#1}} zu finden ist. +% \begin{macrocode} +\newcommand*{\@set@reffield}[1]{% + \ifkomavarempty{#1}{}{% + \settowidth{\@tempdima}{\strut\usekomavar{#1}}% + \setbox0\hbox{\strut\scriptsize\sffamily\usekomavar*{#1}}% + \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi + \if@tempswa\enskip\hfill\fi + \parbox[t]{\@tempdima}{\noindent\raggedright + \strut\box0\\\strut\usekomavar{#1}}% + \@tempswatrue + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@set@reffields} +% \changes{v2.8q}{2002/01/14}{Neu} +% Dieses Makro enth"alt alle Aufrufe von \cs{@set@reffield}, die +% durchzuf"uhren sind. Das Makro kann mit Hilfe von +% \cs{addtoreffields} erweitert werden. +% \begin{macrocode} +\newcommand*{\@set@reffields}{}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\addtoreffields} +% Dieses Makro erwartet als obligatorisches Argument den Namen einer +% KOMA-Script Variable. Der Befehl arbeitet lokal zur aktuellen +% Umgebung. +% \begin{macrocode} +\newcommand*{\addtoreffields}[1]{% + \l@addto@macro{\@set@reffields}{\@set@reffield{#1}}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\removereffields} +% \changes{v2.8q}{2002/01/14}{Neu} +% Es gibt auch einen Befehl, um alle Felder aus der Gesch"aftszeile zu +% entfernen. +% \begin{macrocode} +\newcommand*{\removereffields}{% + \renewcommand*{\@set@reffields}{}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\defaultreffields} +% \changes{v2.8q}{2002/01/14}{Neu} +% Ebenso ein Befehl, um die "ublichen Felder zu setzen. +% \begin{macrocode} +\newcommand*{\defaultreffields}{% + \removereffields + \addtoreffields{yourref}% + \addtoreffields{yourmail}% + \addtoreffields{myref}% + \addtoreffields{customer}% + \addtoreffields{invoice}% +} +% \end{macrocode} +% Genau diesen Befehl rufen wir auch gleich auf: +% \begin{macrocode} +\defaultreffields +% \end{macrocode} +% \end{macro} +% +% \changes{v2.3e}{1996/05/31}{Abstand zwischen Ort und Datum +% eingef"ugt} +% \changes{v2.8o}{2001/09/18}{f"ur den Brieftyp \texttt{KOMAold} +% anschlie"send einen zus"atzlichen vertikalen Abstand +% eingef"ugt} +% \changes{v2.8q}{2001/11/13}{\cs{rlap} eingef"ugt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2002/01/14}{Leertests entfernt, da in +% \cs{@set@reffield} bereits enthalten} +% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refwidth} an +% die Dokumentation angepasst} +% \changes{v2.9l}{2003/01/28}{Berechnung von \texttt{refhpos} +% hinzugef"ugt} +% \begin{macrocode} +\newcommand*{\@datefield}{{\@parskipfalse\@parskip@indent + \ifdim\useplength{refwidth}=\z@ + \if@refwide + \@setplength{refwidth}{\paperwidth}% + \ifdim \useplength{toaddrhpos}>\z@ + \@setplength{refhpos}{\useplength{toaddrhpos}}% + \else + \@setplength[-]{refhpos}{\useplength{toaddrhpos}}% + \fi + \@addtoplength[-2]{refwidth}{\useplength{refhpos}}% + \else + \@setplength{refwidth}{\textwidth}% + \@setplength{refhpos}{\oddsidemargin}% + \@addtoplength{refhpos}{1in}% + \fi + \else\ifdim\useplength{refhpos}=\z@ + \begingroup +% \end{macrocode} +% Wir bestimmen zun"achst, um wieviel die Gesch"aftszeile schmaler ist +% als der Textbereich. +% \begin{macrocode} + \setlength\@tempdima{\textwidth}% + \addtolengthplength[-]{\@tempdima}{refwidth}% +% \end{macrocode} +% Dann wird bestimmt, wie gro"s der linke Rand tatsächlich ist. +% \begin{macrocode} + \setlength\@tempdimb{\oddsidemargin}% + \addtolength\@tempdimb{1in}% +% \end{macrocode} +% Ebenso wird bestimmt, wie gro"s der linke und rechte Rand zusammen +% sind. +% \begin{macrocode} + \setlength{\@tempdimc}{\paperwidth}% + \addtolength{\@tempdimc}{-\textwidth}% +% \end{macrocode} +% Jetzt wird aus dem Gesamtrand der Gesch"aftszeile der linke Rand der +% Gesch"aftszeile so bestimmt, dass das Randverh"altnis dabei +% unver"andert bleibt. Dabei erlauben wir uns eine gewisse +% Rechenungenauigkeit beim Verhältnis. +% \begin{macrocode} + \divide\@tempdimb by 32768\relax + \divide\@tempdimc by 32768\relax + \ifdim\@tempdimc=\z@\else + \multiply\@tempdima by\@tempdimb + \divide\@tempdima by\@tempdimc + \fi + \edef\@tempa{\noexpand\endgroup + \noexpand\@setplength{refhpos}{\the\@tempdima}}% + \@tempa + \fi\fi + \@tempswafalse + \move@topt\vskip\useplength{refvpos}% +% \end{macrocode} +% Jetzt erfolgt noch die Absatzeinzugkorrektur. Danach kommt die +% eigentliche Arbeit +% \begin{macrocode} + \rlap{\noindent\move@topl\hskip\useplength{refhpos}% + \vbox{\hsize\useplength{refwidth}% + \noindent\@set@reffields + \ifkomavarempty{date}{% + \if@tempswa + \typeout{Reference line(s): with fields but without date}% + \else + \typeout{Reference line(s): no}% + \aftergroup\aftergroup\aftergroup\@tempswatrue + \fi + }{% + \if@tempswa + \typeout{Reference line(s): with fields and date}% + \settowidth{\@tempdima}{\strut\usekomavar{date}}% + \setbox0\hbox{\scriptsize\sffamily\usekomavar*{date}}% + \ifdim \@tempdima<\wd0\setlength{\@tempdima}{\wd0}\fi + \enskip\hfill + \parbox[t]{\@tempdima}{\noindent\raggedright% + \strut\box0\\\strut\usekomavar{date}} + \else + \typeout{Reference line: only place and date}% + \enskip\hfill + \ifkomavarempty{place}{}{% + \usekomavar{place}\usekomavar{placeseparator}}% + \usekomavar{date}% + \@tempswatrue + \fi + }% + }% + }% + \if@tempswa\vskip-\baselineskip\fi + \vskip\useplength{refaftervskip}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@maketitle} +% \changes{v2.3b}{1996/01/14}{Verwendung von \cs{sectfont} f"ur den +% \cs{title}} +% \changes{v2.8p}{2001/09/22}{\cs{titlefont} an Stelle von +% \cs{sectfont}} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.9t}{2004/09/16}{\cs{par} in Gr"o"se und Schrift des Titels} +% \begin{macro}{\@subjfield} +% \changes{v2.8q}{2001/10/19}{\cs{centerline} durch \cs{centering} +% ersetzt} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2002/01/31}{wird mit h"angendem Einzug gesetzt} +% +% Der eigentliche Titel wir mit |\@maketitle| gesetzt. Dies sollte +% jedoch ebenso wie beim Betreff (|\@subjfield|) \emph{nicht} manuell +% geschehen. +% \begin{macrocode} +\newcommand*{\@maketitle}{% + \ifkomavarempty{title}{% + \typeout{Title: no}% + }{% + \typeout{Title: yes}% + {\@parskipfalse\@parskip@indent% + \centering\LARGE\titlefont\usekomavar{title}\par}% + \vskip\baselineskip% + }% + } +\newcommand*{\@subjfield}{{\@parskipfalse\@parskip@indent% + \ifkomavarempty{subject}{% + \typeout{Subject: no}% + }{% + \if@subjafter% + \typeout{Subject: after opening}% + \centering% + \else% + \typeout{Subject: before opening}% + \noindent% + \fi% + {\usekomafont{subject}\if@subj\@hangfrom{\usekomavar*{subject}}\fi% + {\usekomavar{subject}}\par}\vskip2\baselineskip% + }% + }% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\opening} +% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet} +% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2002/03/25}{\cs{@PapersizeWarning}} +% Denn beim Er"offnungsgru"s mit |\opening| wird neben s"amtlichen +% Feldern auch der Titel und der Betreff gesetzt. +% \begin{macrocode} +\newcommand{\opening}[1]{% + \@PapersizeWarning + \@gen@firsthead + \@mkboth{\scr@fromname@var}{\scr@subject@var}% + \thispagestyle{empty}\noindent + \@foldmarks\@firstheadfootfield\@addrfield\@locfield\@datefield + \@maketitle + \if@subjafter\else\@subjfield\fi + {\@parskipfalse\@parskip@indent\noindent#1\par}% + {\setlength{\@tempdima}{\baselineskip}% + \addtolength{\@tempdima}{-\parskip} + \ifdim \@tempdima>\z@\vskip\@tempdima\fi} + \if@subjafter\@subjfield\fi% + \@afterindentfalse\@afterheading + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\closing} +% \changes{v2.2b}{1995/02/16}{{\cmd\fromsig} wird nicht mehr auf +% \cs{empty} getestet sondern direkt eingesetzt} +% \changes{v2.3b}{1996/01/14}{Abstand zwischen Schlu"sgru"s und +% Signatur erh"oht} +% \changes{v2.5d}{2000/06/10}{Abstand zwischen Schlu"sgru"s und +% Signatur variabel} +% \changes{v2.8q}{2001/11/13}{% +% \cs{@parskipfalse}\cs{@parskip@indent}} +% \changes{v2.8q}{2002/02/05}{nicht mehr \cs{long}} +% \changes{v2.8q}{2002/02/05}{darf \texttt{\cmd{\\}[\dots]} +% enthalten} +% 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{macro}{\presig@skip} +% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen +% Schlu"sgru"s und Signatur beinhaltet} +% \changes{v2.8q}{2001/10/09}{Ersetzt durch Pseudo-L"ange +% sigbeforevskip} +% \end{macro} +% \begin{macro}{\setpresigskip} +% \changes{v2.5d}{2000/06/10}{Neues Makro, das den Abstand zwischen +% Schlu"sgru"s und Signatur setzt} +% \changes{v2.8q}{2001/10/09}{Mit Hilfe der neuen Pseudo-L"angen definiert} +% Das Makro |\presig@skip| beinhaltet dabei den Abstand zwischen +% Schlu"sgru"s und Signatur. Da der Wert "uber ein Benutzerinterface +% per |\setpresigskip| gesetzt wird, mu"s hier kein kostbares +% L"angenregister (skip oder dim) verschwendet werden, sondern ein +% Makro reicht aus. In |\setpresigskip| wird allerdings noch +% sichergestellt, da"s die Fehlermeldung bei falschem Parameter +% m"oglichst nicht erst bei Verwendung auftritt. +% \begin{macrocode} +\newcommand*{\setpresigskip}{\@setplength{sigbeforevskip}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@xtrimtempa} +% \changes{v2.8q}{2002/02/05}{Neu (intern)} +% \begin{macro}{\@@xtrimtempa} +% \changes{v2.8q}{2002/02/05}{Neu (intern)} +% Die beiden internen Macros werden ben"otigt, um beim Zerlegen eines +% mit \texttt{\cmd{\\}[\cs{dots}]} zusammengesetzten Arguments das +% optionale Argument in eckigen Klammern abzutrennen. Das Ergebnis +% steht anschlie"send in \cs{@tempa}. +% \begin{macrocode} +\newcommand*{\@xtrimtempa}{% + \@ifnextchar [{\@@xtrimtempa}{\@@xtrimtempa[]}} +\newcommand*{\@@xtrimtempa}{} +\def\@@xtrimtempa[#1]#2\@nil{\def\@tempa{#2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\@tempdimaismaxwidthof} +% \changes{v2.8q}{2002/02/05}{Neu (intern)} +% Das Makro zerlegt ein mit \texttt{\cmd{\\}[\cs{dots}]} +% zusammengesetzten Arguments und merkt in \cs{@tempdima} die L"ange +% des l"angsten Elements. \cs{@tempdima} enth"alt beim Aufruf die +% minimale L"ange. +% \begin{macrocode} +\newcommand*{\@tempdimaismaxwidthof}{} +\def\@tempdimaismaxwidthof#1\\#2\@nil{% + \settowidth{\@tempdimb}{\strut\ignorespaces#1}% + \ifdim\@tempdima<\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi + \def\@tempa{#2}\ifx\@tempa\@empty + \let\@tempb\relax + \else + \expandafter\@xtrimtempa\@tempa\@nil + \def\@tempb{\expandafter\@tempdimaismaxwidthof\@tempa\@nil}% + \fi + \@tempb + } +% \end{macrocode} +% \end{macro} +% Jetzt endlich zum eigentichen Befehl. +% \changes{v2.9r}{2004/01/28}{L"angenbegrenzung auf \cs{hsize}} +% \changes{v2.9r}{2004/01/28}{das Argument darf leer sein} +% \begin{macrocode} +\newcommand*{\closing}[1]{{\@parskipfalse\@parskip@indent\nobreak\par% + \nobreak\vskip\baselineskip% + \stopbreaks\noindent% + \setlength{\@tempdima}{0pt}% + \expandafter\@tempdimaismaxwidthof\scr@signature@var\\\@nil + \expandafter\@tempdimaismaxwidthof\strut\ignorespaces#1\\\@nil + \setlength{\@tempdimb}{\hsize}% + \addtolength{\@tempdimb}{-\useplength{sigindent}}% + \ifdim\@tempdima>\@tempdimb\setlength{\@tempdima}{\@tempdimb}\fi% + \hspace{\useplength{sigindent}}% + \parbox{\@tempdima}{\raggedsignature\strut\ignorespaces% + #1\strut\\[\useplength{sigbeforevskip}] + \strut\usekomavar{signature}\strut}}\par + \nobreak\vskip\baselineskip% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps} +% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet} +% Ebenfalls m"oglich ist ein Postscriptum. Dieser Befehl erwartet +% das Postscriptum nicht als Argument, sondern schaltet zum Nachtext +% um. +% \begin{macrocode} +\newcommand\ps{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\startbreaks\noindent\ignorespaces% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cc} +% Dar"uber hinaus gibt es noch einen Verteiler. Dieser wird +% sauber formatiert. +% \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} +% ersetzt} +% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeitet} +% \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst} +% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf +% \texttt{1em plus 1fil} ge"andert} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macrocode} +\newcommand*{\cc}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \ifkomavarempty{ccseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{ccseparator}\usekomavar{ccseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\encl} +% Auch Anlagen werden ordentlich gesetzt. +% \changes{v2.4a}{1997/06/06}{der Doppelpunkt bei den Anlagen wird +% nur noch gesetzt, wenn \cs{enclname} nicht leer ist} +% \changes{v2.6}{2001/01/03}{\cs{def} durch \cs{newcommand*} ersetzt} +% \changes{v2.8n}{2001/09/08}{Komplett "uberarbeiten} +% \changes{v2.8q}{2002/01/31}{Fehlendes \% erg"anzt} +% \changes{v2.9o}{2003/04/22}{\cs{parfillskip} angepasst} +% \changes{v2.9q}{2004/04/26}{\cs{parfillskip} auf +% \texttt{1em plus 1fil} ge"andert} +% \changes{v2.9r}{2004/05/25}{\cs{parfillskip} auf +% \texttt{\cs{z@} plus 1fil} ge"andert} +% \begin{macrocode} +\newcommand*{\encl}[1]{\par% + \ifdim\parskip=\z@% + \vskip\baselineskip% + \fi\noindent% + \begingroup + \parbox[t]{\textwidth}{% + \ifkomavarempty*{enclseparator}{}{% + \@hangfrom{% + \strut\usekomavar*{enclseparator}\usekomavar{enclseparator}}% + }% + \ignorespaces #1\strut}% + \setlength{\parfillskip}{\z@ \@plus 1fil}\par + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macrocode} +%</scrlettr> +% \end{macrocode} +% +% +% \subsection{Grundeinstellungen} +% +% \begin{macrocode} +%<!scrbook>\pagestyle{plain} +%<scrbook>\pagestyle{headings} +\pagenumbering{arabic} % Arabic page numbers +%<*!scrbook> +%<!scrlettr>\if@twoside +%<!scrlettr>\else + \raggedbottom +%<!scrlettr>\fi +%</!scrbook> +%<*!scrlettr> +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +\else + \onecolumn +\fi +%</!scrlettr> +% \end{macrocode} +% +% \subsection{Das war es fast} +% +% \begin{macrocode} +%</class> +% \end{macrocode} +% +% \section{Nochmal generell} +% +% \input{scrlogo.dtx} +% +% +% \setlength{\IndexMin}{.25\textheight} +% \IndexPrologue{\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} +% +% \setlength{\GlossaryMin}{.25\textheight} +% \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 `scrclass.dtx' + +%%% Local Variables: +%%% mode: latex +%%% mode: font-lock +%%% Text-master: scrclass.ins +%%% End: |