summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrpage.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrpage.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrpage.dtx2588
1 files changed, 2588 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrpage.dtx b/Master/texmf-dist/source/latex/koma-script/scrpage.dtx
new file mode 100644
index 00000000000..497989572aa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrpage.dtx
@@ -0,0 +1,2588 @@
+% \CheckSum{2540}
+% \iffalse
+% ======================================================================
+% scrpage.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.
+% ----------------------------------------------------------------------
+% scrpage.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 f"ur den deutschen Sprachraum konzipiert. Daher ist
+% auch diese Anleitung komplett in Deutsch. Zwar existiert auch eine
+% englische Version der Anleitung, diese hinkt der deutschen Anleitung
+% jedoch fast immer hinterher.
+% ======================================================================
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%<*dtx>
+ \ProvidesFile{scrpage.dtx}
+%</dtx>
+%<scrpage>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<driver> \ProvidesFile{scrpage.drv}
+%<*scrpage>
+%<v1>\ProvidesPackage{scrpage}[2001/06/22 v1.3c KOMA
+%<v2>\ProvidesPackage{scrpage2}
+%<*!v1>
+ [2004/09/05 v2.2a LaTeX2e KOMA
+%</!v1>
+%<beta> BETA-VERSION
+%<scrpage> package]
+%<*driver>
+ driver]
+\documentclass{ltxdoc}
+\usepackage{scrpage}
+\usepackage[a4paper,DIV11]{typearea}
+\addtolength{\oddsidemargin}{.75\marginparwidth}
+\addtolength{\evensidemargin}{.75\marginparwidth}
+\CodelineIndex
+\pagestyle{headings}
+\begin{document}
+ \DocInput{scrpage.dtx}
+\end{document}
+%</driver>
+% \fi
+% \GetFileInfo{scrpage.dtx}
+% \RecordChanges
+%
+% \makeatletter
+% \def\macro{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 0}
+% \def\environment{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 1}
+% \def\option{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters \m@cro@ 2}
+% \long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+% \edef\saved@macroname{\string#2}%
+% \ifcase #1%
+% \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
+% \or
+% \edef\saved@@macroname{\expandafter\@gobble\saved@macroname}
+% \else
+% \let\saved@@macroname\saved@macroname
+% \fi
+% \def\makelabel##1{\llap{##1}}%
+% \if@inlabel
+% \let\@tempa\@empty \count@\macro@cnt
+% \loop \ifnum\count@>\z@
+% \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+% \edef\makelabel##1{\llap{\vtop to\baselineskip
+% {\@tempa\hbox{##1}\vss}}}%
+% \advance \macro@cnt \@ne
+% \else \macro@cnt\@ne \fi
+% \edef\@tempa{\noexpand\item[%
+% \ifcase #1%
+% \noexpand\PrintMacroName
+% \or
+% \noexpand\PrintEnvName
+% \else
+% \noexpand\PrintOptionName
+% \fi
+% {\string#2}]}%
+% \@tempa
+% {\advance\c@CodelineNo\@ne
+% \ifcase #1%
+% \SpecialMainIndex{#2}\nobreak
+% \DoNotIndex{#2}%
+% \or
+% \SpecialMainEnvIndex{#2}\nobreak
+% \else
+% \SpecialMainOptionIndex{#2}\nobreak
+% \fi
+% }%
+% \ignorespaces}
+% \let\endoption\endtrivlist
+% \@ifundefined{PrintOptionName}
+% {\def\PrintOptionName#1{\strut \MacroFont #1\ }}{}
+% \def\SpecialOptionIndex#1{\@bsphack
+% \index{#1\actualchar{\protect\ttfamily#1}
+% (option)\encapchar usage}%
+% \index{options:\levelchar{\protect\ttfamily#1}\encapchar
+% usage}\@esphack}
+% \def\SpecialMainOptionIndex#1{\@bsphack\special@index{#1%
+% \actualchar
+% {\string\ttfamily\space#1}
+% (option)\encapchar main}%
+% \special@index{options:\levelchar{%
+% \string\ttfamily\space#1}\encapchar%
+% main}\@esphack}
+% \def\changes@#1#2#3{%
+% \protected@edef\@tempa{\noexpand\glossary{#1\levelchar
+% \ifx\saved@macroname\@empty
+% \space
+% \actualchar
+% \generalname
+% \else
+% \saved@@macroname
+% \actualchar
+% \string\verb\quotechar*\verbatimchar%
+% \saved@macroname
+% \verbatimchar
+% \fi
+% :\levelchar #3}}%
+% \@tempa\endgroup\@esphack}
+% \makeatother
+%
+% \title{The \textsf{KOMA}-pagestyle-package\thanks{This file has
+% version number \fileversion, last revised \filedate.}}
+% \author{Markus Kohm}
+% \date{\filedate}
+% \maketitle
+%
+% \def\oarg#1{{\ttfamily[}{\em#1\/}{\ttfamily]}}
+% \def\arg#1{{\ttfamily\char`\{}{\em#1\/}{\ttfamily\char`\}}}
+% \def\star{{\ttfamily*}}
+% \makeatletter
+% \def\Describe@Macro#1{\endgroup
+% \setbox0=\lastbox\llap{\PrintDescribeMacro{#1}}}%
+% \def\Describe@Env#1{\endgroup
+% \setbox0=\lastbox\llap{\PrintDescribeEnv{#1}}}%
+% \makeatother
+% \marginparsep0pt
+% \renewpagestyle{headings}{(\textwidth,1pt)%
+% {\headmark\hfill}{\hfill\headmark}{\hfill\headmark\hfill}%
+% (\textwidth,.4pt)}%
+% {(\textwidth,.4pt)%
+% {\pagemark\hfill%
+% Copyright \copyright\ Markus Kohm, 1994--2002}%
+% {Package \texttt{scrpage}\hfill\pagemark}%
+% {\rlap{Package \texttt{scrpage}}\hfill%
+% Copyright \copyright\ Markus Kohm, 1994--2002\hfill%
+% \llap\pagemark}%
+% (\textwidth,1pt)}
+% \renewpagestyle{plain}{(\textwidth,1pt)%
+% {\hfill}{\hfill}{\hfill}%
+% (\textwidth,.4pt)}%
+% {(\textwidth,.4pt)%
+% {\pagemark\hfill}%
+% {\hfill\pagemark}%
+% {\hfill\pagemark\hfill}%
+% (\textwidth,1pt)}
+% \pagestyle{headings}
+%
+% \begin{abstract}
+% This is \texttt{scrpage.sty}. This obsolete package is part of the
+% \textsf{KOMA}-script-bundle. It defines a new user-interface for
+% pagestyle-definition. It's something like \texttt{fancyheadings}
+% but not the same. You may use \texttt{scrpage} or \texttt{fancyheadings}.
+% You may use \texttt{scrpage} with standard classes, too. Note: Package
+% \texttt{scrpage} was replaced by package \texttt{scrpage2}.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% There is a simple user-interface and a expert-interface. Using the
+% user-interface you can define a lot of different pagestyles. But there are
+% combinations, you cannot define. Using the expert-interface you can do
+% allmost all you may ever want. To do more, you should learn more about
+% defining macros yourself.
+%
+%
+% \subsection{Interface for all users}
+%
+% \DescribeMacro
+% \headfont\\
+% This font is used to write pageheads and -foots. You may change it using
+% |\renewcommand|, e.g. |\renewcommand\headfont{\normalfont\slshape}|.
+%
+% \DescribeMacro
+% \headmark\\
+% Using \texttt{twoside}-option this is |\leftmark| at left/even pages and
+% |\rightmark| at right/odd pages. Using \texttt{oneside}-option there are
+% only right pages, so it is |\rightmark|.
+%
+% \DescribeMacro
+% \pnumfont\\
+% This font is used to write pagenumbers at |\pagemark|. You may change it
+% using |\renewcommand| (see |\headfont|).
+%
+% \DescribeMacro
+% \pagemark\\
+% This is the number of the actual page written with |\pnumfont|.
+%
+% \DescribeMacro
+% \deftripstyle\arg{name}\oarg{olw}\oarg{ilw}%
+% \arg{headleft}\arg{headmiddle}\arg{headright}%
+% \arg{footleft}\arg{footmiddle}\arg{footright}\\
+% Defines a new pagestyle. You can activate this pagestyle using
+% |\pagestyle| or |\thispagestyle|. Without optional argument this defines a
+% page like this:
+% \begin{center}\unitlength1mm\begin{picture}(120,82)
+% \put(0,0){\dashbox{2}(58,82){~}}
+% \put(1,78){\makebox(0,0)[l]{\emph{headright}}}
+% \put(29,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(57,78){\makebox(0,0)[r]{\emph{headleft}}}
+% \put(29,41){\makebox(0,0){left page}}
+% \put(1,3){\makebox(0,0)[l]{\emph{footright}}}
+% \put(29,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(57,3){\makebox(0,0)[r]{\emph{footleft}}}
+% \put(60,0){\dashbox{2}(58,82){~}}
+% \put(61,78){\makebox(0,0)[l]{\emph{headleft}}}
+% \put(89,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(117,78){\makebox(0,0)[r]{\emph{headright}}}
+% \put(89,41){\makebox(0,0){right page}}
+% \put(61,3){\makebox(0,0)[l]{\emph{footleft}}}
+% \put(89,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(117,3){\makebox(0,0)[r]{\emph{footright}}}
+% \end{picture}\end{center}
+% Using one optional argument \oarg{ilw} (means \emph{i}nner \emph{l}ine
+% \emph{w}idth) you get a separationline between head and text and between
+% text and foot like this (\emph{ilw}=0.5pt):
+% \begin{center}\unitlength1mm\begin{picture}(120,82)
+% \put(0,0){\dashbox{2}(58,82){~}}
+% \put(1,78){\makebox(0,0)[l]{\emph{headright}}}
+% \put(29,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(57,78){\makebox(0,0)[r]{\emph{headleft}}}
+% \put(1,76){\rule{56\unitlength}{0.5pt}}
+% \put(29,41){\makebox(0,0){left page}}
+% \put(1,5){\rule{56\unitlength}{0.5pt}}
+% \put(1,3){\makebox(0,0)[l]{\emph{footright}}}
+% \put(29,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(57,3){\makebox(0,0)[r]{\emph{footleft}}}
+% \put(60,0){\dashbox{2}(58,82){~}}
+% \put(61,78){\makebox(0,0)[l]{\emph{headleft}}}
+% \put(89,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(117,78){\makebox(0,0)[r]{\emph{headright}}}
+% \put(61,76){\rule{56\unitlength}{0.5pt}}
+% \put(89,41){\makebox(0,0){right page}}
+% \put(61,5){\rule{56\unitlength}{0.5pt}}
+% \put(61,3){\makebox(0,0)[l]{\emph{footleft}}}
+% \put(89,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(117,3){\makebox(0,0)[r]{\emph{footright}}}
+% \end{picture}\end{center}
+% Using both optional arguments \oarg{olw} (means \emph{o}uter \emph{l}ine
+% \emph{w}idth) and \oarg{ilw} you get a separationline between head and
+% text and between text and foot and a line above head and below foot like
+% this (\emph{olw}=2pt, \emph{ilw}=0.5pt):
+% \begin{center}\unitlength1mm\begin{picture}(120,82)
+% \put(0,0){\dashbox{2}(58,82){~}}
+% \put(1,80){\rule{56\unitlength}{2pt}}
+% \put(1,78){\makebox(0,0)[l]{\emph{headright}}}
+% \put(29,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(57,78){\makebox(0,0)[r]{\emph{headleft}}}
+% \put(1,76){\rule{56\unitlength}{0.5pt}}
+% \put(29,41){\makebox(0,0){left page}}
+% \put(1,5){\rule{56\unitlength}{0.5pt}}
+% \put(1,3){\makebox(0,0)[l]{\emph{footright}}}
+% \put(29,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(57,3){\makebox(0,0)[r]{\emph{footleft}}}
+% \put(1,1){\rule{56\unitlength}{2pt}}
+% \put(60,0){\dashbox{2}(58,82){~}}
+% \put(61,80){\rule{56\unitlength}{2pt}}
+% \put(61,78){\makebox(0,0)[l]{\emph{headleft}}}
+% \put(89,78){\makebox(0,0){\emph{headmiddle}}}
+% \put(117,78){\makebox(0,0)[r]{\emph{headright}}}
+% \put(61,76){\rule{56\unitlength}{0.5pt}}
+% \put(89,41){\makebox(0,0){right page}}
+% \put(61,5){\rule{56\unitlength}{0.5pt}}
+% \put(61,3){\makebox(0,0)[l]{\emph{footleft}}}
+% \put(89,3){\makebox(0,0){\emph{footmiddle}}}
+% \put(117,3){\makebox(0,0)[r]{\emph{footright}}}
+% \put(61,1){\rule{56\unitlength}{2pt}}
+% \end{picture}\end{center}
+%
+% You can define new pagestyles and you can redefine existing pagestyles. If
+% you redefine an active pagestyle, this doesn't change the actual shown
+% pagestyle. To activate you have to use always a |\pagestyle|- or
+% |\thispagestyle|-command.
+%
+% You can change the standard pagestyle \texttt{headings} to. If you want to
+% change pagestyle \texttt{myheadings}, you should use the star-version of
+% the command:\\
+% \DescribeMacro
+% \deftripstyle\star\arg{name}\oarg{olw}\oarg{ilw}%
+% \arg{headleft}\arg{headmiddle}\arg{headright}%
+% \arg{footleft}\arg{footmiddle}\arg{footright}\\
+% this defines a my-version pagestyle. This means, section- and
+% chapter-commands or perhaps |\tableofcontents| don't change the
+% marks. Only |\markboth| and |\markright| change them. But if you don't
+% use |\headmark|, |\leftmark| or |\rightmark|, star- and starless version
+% of |\deftripstyle| are almost the same.
+%
+%
+% \subsection{Interface for experts}
+%
+% \DescribeMacro
+% \defpagestyle\arg{name}\arg{head-definition}\arg{foot-definition}\\
+% defines a new pagestyle \emph{name}. \emph{head-definition} defines the
+% head at the new pagestyle. It contains five parts:
+% \begin{flushleft}
+% (\emph{toplinelength},\emph{toplinewidth})\\%
+% \arg{evenpagehead}\arg{oddpagehead}\arg{onesidepagehead}\\%
+% (\emph{headseplinelength},\emph{headseplinewidth})\\
+% \end{flushleft}
+% These five parts have to be \textbf{one} argument! So you should put them
+% together in group-braces (``|{|'' and ``|}|'').
+%
+% \emph{foot-definition} analogous defines the foot at the new pagestyle.
+%
+% \DescribeMacro
+% \newpagestyle\arg{name}\arg{head-definition}\arg{foot-definition}\\
+% defines a real new pagestyle. If there's already a pagestyle named
+% \emph{name}, you'll get an error. Otherwise it's the same like
+% |\defpagestyle|.
+%
+% \DescribeMacro
+% \renewpagestyle\arg{name}\arg{head-definition}\arg{foot-definition}\\
+% redefines a old pagestyle. If there isn't a pagestyle named
+% \emph{name}, you'll get an error. Otherwise it's the same like
+% |\defpagestyle|.
+%
+% \DescribeMacro
+% \providepagestyle\arg{name}\arg{head-definition}\arg{foot-definition}\\
+% defines a new pagestyle, if it is realy new. If there is already a
+% pagestyle named \emph{name}, it does nothing (but writing an info to
+% the log file). Otherwise it's the same like |\defpagestyle|.
+%
+% You may use the user-interface-macros |\pagemark| and |\headmark|, too.
+%
+%
+% \subsection{Configuration file}
+% There's a configuration file \texttt{scrpage.cfg}, included at the end
+% of \texttt{scrpage.sty}, if it exists. There you can define your own
+% default pagestyles using all the commands above.
+%
+%
+% \subsection{Example}
+% The pagestyles of this documentation was defined using:
+% \begin{verbatim}
+% \renewpagestyle{headings}{(\textwidth,1pt)%
+% {\headmark\hfill}{\hfill\headmark}{\hfill\headmark\hfill}%
+% (\textwidth,.4pt)}%
+% {(\textwidth,.4pt)%
+% {\pagemark\hfill%
+% Copyright \copyright\ Markus Kohm, 1994--2002}%
+% {Package \texttt{scrpage}\hfill\pagemark}%
+% {\rlap{Package \texttt{scrpage}}\hfill%
+% Copyright \copyright\ Markus Kohm, 1994--2002\hfill%
+% \llap\pagemark}%
+% (\textwidth,1pt)}
+% \renewpagestyle{plain}{(\textwidth,1pt)%
+% {\hfill}{\hfill}{\hfill}%
+% (\textwidth,.4pt)}%
+% {(\textwidth,.4pt)%
+% {\pagemark\hfill}%
+% {\hfill\pagemark}%
+% {\hfill\pagemark\hfill}%
+% (\textwidth,1pt)}
+% \pagestyle{headings} % activate new version
+% \end{verbatim}
+%
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+%\iffalse
+% \begin{macrocode}
+%<*beta>
+\PackageWarningNoLine
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {THIS IS A BETA VERSION!\MessageBreak
+ YOU SHOULD NOT USE THIS VERSION!\MessageBreak
+ YOU SHOULD INSTALL THE RELEASE FROM CTAN\MessageBreak
+ AND USE THAT INSTEAD OF THIS BETA VERSION}
+%</beta>
+% \end{macrocode}
+%\fi
+%
+% \begin{macrocode}
+%<*scrpage>
+% \end{macrocode}
+% \changes{v1.1}{1995/06/27}{\cs{hbox to} changed into \cs{hb@xt@}.}
+%
+% \subsection{Options}
+% \texttt{scrpage} knows some options. They are similar to the
+% \textsf{KOMA}-script-classes. To work with and without
+% the \textsf{KOMA}-script-classes their definitions are not quite simple.
+%
+% \begin{macrocode}
+\DeclareOption{headinclude}{\PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{headexclude}{\PassOptionsToPackage{headexclude}{typearea}}
+\DeclareOption{footinclude}{\PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{footexclude}{\PassOptionsToPackage{footexclude}{typearea}}
+% \end{macrocode}
+% We do so, because we want so set |headinclude|, |footinclude| by
+% default at old version (see below)!
+%
+% At version 2 we have additonal options designed for the additional
+% interface.
+% \begin{macrocode}
+%<*v2>
+% \end{macrocode}
+% \begin{option}{mpinclude}
+% \changes{v2.8q}{2002/03/28}{New option}
+% \begin{option}{mpexclude}
+% \changes{v2.8q}{2002/03/28}{New option}
+% There are documents where the head and foot should span not only the
+% text but also the marginpar. We have an option to do this at
+% initialization. This option corresponds with the option of package
+% \texttt{typearea} and the classes.
+% \begin{macro}{\if@mincl}
+% \begin{macro}{\@mincltrue}
+% \begin{macro}{\@minclfalse}
+% \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}
+%
+% Other new options redefine macros, so we have to define them first.
+% \begin{macro}{\scr@headabove@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@headbelow@linethickness}
+% \changes{v2.0}{2001/03/30}{New}
+% \begin{macro}{\scr@footabove@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footbelow@linethickness}
+% \changes{v2.0}{2001/04/20}{New}
+% These macros define the thickness of the line above and below the head
+% and the foot.
+% \begin{macrocode}
+\newcommand*{\scr@headabove@linethickness}{0pt}
+\newcommand*{\scr@headbelow@linethickness}{0pt}
+\newcommand*{\scr@footabove@linethickness}{0pt}
+\newcommand*{\scr@footbelow@linethickness}{0pt}
+% \end{macrocode}
+% \begin{macro}{\scr@headabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@headbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scr@footbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@headabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@headbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@footabove@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@footbelow@linelength}
+% \changes{v2.0}{2001/04/20}{New}
+% Because we want to have the ``line definitions'' at one place, we
+% also define the length of the lines here. We have own length at to
+% be used at pagestyle \texttt{scrplain}.
+% \begin{macrocode}
+\newcommand*{\scr@headabove@linelength}{\@headwidth}
+\newcommand*{\scr@headbelow@linelength}{\@headwidth}
+\newcommand*{\scr@footabove@linelength}{\@footwidth}
+\newcommand*{\scr@footbelow@linelength}{\@footwidth}
+\newcommand*{\scrplain@headabove@linelength}{0pt}
+\newcommand*{\scrplain@headbelow@linelength}{0pt}
+\newcommand*{\scrplain@footabove@linelength}{0pt}
+\newcommand*{\scrplain@footbelow@linelength}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{headtopline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{headsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{footsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{footbotline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainheadtopline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainheadsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainfootsepline}
+% \changes{v2.0}{2001/04/20}{New option}
+% \begin{option}{plainfootbotline}
+% \changes{v2.0}{2001/04/20}{New option}
+% The thickness can be set by four simple options:
+% \begin{macrocode}
+\DeclareOption{headtopline}{%
+ \renewcommand*{\scr@headabove@linethickness}{.4pt}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{headsepline}{%
+ \renewcommand*{\scr@headbelow@linethickness}{.4pt}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{footsepline}{%
+ \renewcommand*{\scr@footabove@linethickness}{.4pt}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{footbotline}{
+ \renewcommand*{\scr@footbelow@linethickness}{.4pt}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{plainheadtopline}{%
+ \renewcommand*{\scrplain@headabove@linelength}{\scr@headabove@linelength}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{plainheadsepline}{%
+ \renewcommand*{\scrplain@headbelow@linelength}{\scr@headbelow@linelength}
+ \PassOptionsToPackage{headinclude}{typearea}}
+\DeclareOption{plainfootsepline}{%
+ \renewcommand*{\scrplain@footabove@linelength}{\scr@footabove@linelength}
+ \PassOptionsToPackage{footinclude}{typearea}}
+\DeclareOption{plainfootbotline}{
+ \renewcommand*{\scrplain@footbelow@linelength}{\scr@footbelow@linelength}
+ \PassOptionsToPackage{footinclude}{typearea}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hfline@adjust}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{ilines}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{clines}
+% \changes{v2.0f}{2001/06/23}{New}
+% \begin{option}{olines}
+% \changes{v2.0f}{2001/06/23}{New}
+% At Version 2 lines may be inner adjusted (0), centered (1) or outer
+% adjusted (2):
+% \begin{macrocode}
+\newcommand*{\hfline@adjust}{1}
+\DeclareOption{ilines}{\renewcommand*{\hfline@adjust}{0}}
+\DeclareOption{clines}{\renewcommand*{\hfline@adjust}{1}}
+\DeclareOption{olines}{\renewcommand*{\hfline@adjust}{2}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{macro}
+%
+% \begin{option}{automark}
+% \changes{v2.0b}{2001/05/31}{use \cs{AtEndOfPackage} to run not yet
+% defined macro}
+% \begin{option}{manualmark}
+% \changes{v2.0b}{2001/05/31}{use \cs{AtEndOfPackage} to run not yet
+% defined macro}
+% \changes{v2.0i}{2001/08/17}{don't ignore oneside any longer}
+% At version 2 we want to distinguish between running headline and
+% static headline not only using different pagestyles. We do this with
+% options and commands. But here only the options are defined.
+% \begin{macrocode}
+\DeclareOption{automark}{%
+ \AtEndOfPackage{\if@twoside%
+ \if@chapter\automark[section]{chapter}%
+ \else\automark[subsection]{section}\fi%
+ \else%
+ \if@chapter\automark{chapter}\else\automark{section}\fi%
+ \fi}}
+\DeclareOption{manualmark}{\AtEndOfPackage{\manualmark}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{autoonesize}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{if@autooneside}
+% \changes{v2.0i}{2001/08/17}{New}
+% If the optional argument of \cs{automark} should be irgnored at
+% onside mode, use this option:
+% \begin{macrocode}
+\newif\if@autooneside\@autoonesidefalse
+\DeclareOption{autooneside}{\@autoonesidetrue}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{markuppercase}
+% \changes{v2.0c}{2001/06/07}{New}
+% \begin{option}{markusedcase}
+% \changes{v2.0c}{2001/06/07}{New}
+% For use of running headlines there are also options to say ``class
+% uses upper case at the automatic marks'' or ``class use same case at
+% the automatic marks like used writing the heading''.
+% \begin{macrocode}
+\DeclareOption{markuppercase}{\let\MakeMarkcase\MakeUppercase}
+\DeclareOption{markusedcase}{\let\MakeMarkcase\@empty}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{macro}{\scr@nouppercase}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{option}{nouppercase}
+% \changes{v2.0j}{2001/08/18}{New}
+% Sometimes scrpage may be used with a class, which uses
+% \cs{uppercase} or \cs{MakeUppercase} at \cs{markboth} or
+% \cs{markright}. But the author does not want upper case at the
+% headlines. So we define an option, that simply deaktivates
+% \cs{uppercase} and \cs{MakeUppercase} at all heads and foots,
+% defined by scrpage2.
+% \begin{macrocode}
+\newcommand*{\scr@nouppercase}{}
+\DeclareOption{nouppercase}{\renewcommand*{\scr@nouppercase}{%
+ \let\uppercase\relax\let\MakeUppercase\relax
+ \expandafter\let\csname MakeUppercase \endcsname\relax}
+ \ifx\MakeMarkcase\MakeUppercase
+ \PackageWarning{scrpage2}{%
+ Option 'markuppercase' will be ignored.\MessageBreak%
+ You shouldn't use option 'markuppercase' together\MessageBreak%
+ with option 'nouppercase'}
+ \let\MakeMarkcase\@empty
+ \fi}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+%
+% \begin{option}{komastyle}
+% \begin{option}{standardstyle}
+% At version 2 there is an predefined pagestyle ``scrheadings''. With
+% the two options you may decide, wether it has to behave like
+% ``headings'' at the standard classes or the KOMA-Script classes.
+% The macro saves the name of the style.
+% \begin{macrocode}
+\DeclareOption{komastyle}{\def\scrheadings@style{koma}
+ \@ifundefined{MakeMarkcase}{\let\MakeMarkcase\relax}{}}
+\DeclareOption{standardstyle}{\def\scrheadings@style{standard}
+ \@ifundefined{MakeMarkcase}{\let\MakeMarkcase\MakeUppercase}{}}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \begin{macrocode}
+%</v2>
+% \end{macrocode}
+%
+% Set the default options.
+% \begin{macrocode}
+\ExecuteOptions{%
+%<!v2>headinclude,footinclude%
+}
+% \end{macrocode}
+% But you may set other Options:
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{Some Initialisation}
+%
+% For easier handling of the differences between article-, report- and
+% book-classes we define some more switches.
+%
+% \begin{macro}{\if@chapter}
+% \changes{v2.1b}{2003/05/31}{more save test}
+% First distinguish between article and others.
+% \begin{macrocode}
+\newif\if@chapter
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname chapter\endcsname\relax
+ \@chapterfalse
+\else
+ \@chaptertrue
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@mainmatter}
+% \changes{v1.2}{1995/07/08}{Definition changed}
+% \changes{v2.1b}{2003/05/31}{more save test}
+% Next distinguish between matter- and nomatter-classes.
+% \begin{macrocode}
+\def\@tempa{\newif\if@mainmatter\@mainmattertrue}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname mainmatter\endcsname\relax\else\let\@tempa\relax\fi
+\@tempa
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Predefinitions}
+% There are some commands, you can use at pagestyle-definition.
+%
+% \begin{macro}{\headmark}
+% This macro is |\rightmark| or |\leftmark|. But outside
+% pagestyle-definition it's nothing.
+% \begin{macrocode}
+\let\headmark\relax
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pagemark}
+% This macro is the number of the page at the pagenumberfont:
+% \begin{macrocode}
+\DeclareRobustCommand\pagemark{{\pnumfont\thepage}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Expert-Pagestyle-Definition-Interface}
+% The pagestyle-definition-interface for experts is not as easy as the
+% simple interface we'll define later. But it's more flexible. We'll
+% later use it to define the pagestyle-definition-interface for users.
+%
+% \begin{macro}{\if@automark}
+% \changes{v2.1}{2002/10/30}{New switch}
+% \begin{macro}{\@automarktrue}
+% \begin{macro}{\@automarkfalse}
+% We need this switch to decide to switch on or off \cs{@mkboth} at the
+% pagestyles.
+% \begin{macrocode}
+%<!v1>\newif\if@automark\@automarkfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\defpagestyle}
+% First we define the simple definition-interface. There's no test, if
+% the pagestyle's defined twice.
+%
+% First there has to be the definition of head and foot.
+% \begin{macrocode}
+\def\defpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@defpagestyle[-]}%
+ {\@defpagestyle[+]}}
+% \end{macrocode}
+% Now the we can define the head and the foot. First at twoside-mode:
+% \changes{v1.0b}{1995/05/25}{Dot deleted after number at
+% chapter- and sectionmark}
+% \changes{v1.0b}{1995/05/25}{Use CJK at \cs{chaptermark},
+% \cs{sectionmark} and \cs{subsectionmark}}
+% \changes{v2.0}{2001/04/20}{Version 2 uses \cs{automark} and
+% \cs{manualmark}, so star and non-star
+% version are same}
+% \changes{v2.1a}{2002/10/30}{Use \cs{if@automark}}
+% \begin{macrocode}
+\if@twoside
+ \def\@defpagestyle[#1]#2#3#4{%
+ \expandafter\def\csname ps@#2\endcsname{%
+%<*v1>
+ \def\@tempa{+}%
+ \def\@tempb{#1}%
+ \ifx\@tempa\@tempb
+ \let\@mkboth\markboth
+ \if@chapter
+ \def\chaptermark####1{%
+ \markboth {\ifnum \c@secnumdepth >\m@ne%
+ \if@mainmatter\chaptermarkformat\fi\fi ####1}{%
+ \ifnum \c@secnumdepth >\m@ne%
+ \if@mainmatter\chaptermarkformat\fi\fi ####1}}%
+ \def\sectionmark####1{%
+ \markright {\ifnum \c@secnumdepth >\z@%
+ \sectionmarkformat\fi ####1}}
+ \else
+ \def\sectionmark####1{%
+ \markboth {\ifnum \c@secnumdepth >\z@%
+ \sectionmarkformat\fi ####1}{%
+ \ifnum \c@secnumdepth >\z@%
+ \sectionmarkformat\fi ####1}}
+ \def\subsectionmark####1{%
+ \markright {\ifnum \c@secnumdepth >\@ne%
+ \subsectionmarkformat\fi ####1}}
+ \fi
+ \else
+ \let\@mkboth\@gobbletwo
+ \if@chapter
+ \def\chaptermark####1{}
+ \else
+ \def\subsectionmark####1{}
+ \fi
+ \def\sectionmark####1{}
+ \fi
+%</v1>
+%<!v1> \if@automark\let\@mkboth\markboth\else\let\@mkboth\@gobbletwo\fi
+ \def@twosidehead#3
+ \def@twosidefoot#4
+ }
+ }
+\else
+% \end{macrocode}
+% Then the oneside-mode:
+% \begin{macrocode}
+ \def\@defpagestyle[#1]#2#3#4{%
+ \expandafter\def\csname ps@#2\endcsname{%
+%<*v1>
+ \def\@tempa{+}%
+ \def\@tempb{#1}%
+ \ifx\@tempa\@tempb
+ \let\@mkboth\markboth
+ \if@chapter
+ \def\chaptermark####1{%
+ \markright {\ifnum \c@secnumdepth >\m@ne%
+ \if@mainmatter\chaptermarkformat\fi\fi ####1}}%
+ \def\sectionmark####1{}
+ \else
+ \def\sectionmark####1{%
+ \markright{\ifnum \c@secnumdepth >\z@%
+ \sectionmarkformat\fi ####1}}
+ \def\subsectionmark####1{}
+ \fi
+ \else
+ \let\@mkboth\@gobbletwo
+ \if@chapter
+ \def\chaptermark####1{}
+ \else
+ \def\subsectionmark####1{}
+ \fi
+ \def\sectionmark####1{}
+ \fi
+%</v1>
+%<!v1> \if@automark\let\@mkboth\markboth\else\let\@mkboth\@gobbletwo\fi
+ \def@onesidehead#3
+ \def@onesidefoot#4
+ }
+ }
+\fi
+% \end{macrocode}
+% \begin{macro}{\def@twosidehead}
+% \changes{v1.3}{2001/03/30}{Use of \cs{@headwidth} instead of
+% \cs{textwidth}}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% This was real simple, but we already have to do the real definition
+% of the heads and foots. First the twosided head:
+% \begin{macrocode}
+%<*v2>
+\def\def@twosidehead{%
+ \@ifnextchar(
+ {\def@@twosidehead}
+ {\def@@twosidehead(\scr@headabove@linelength,%
+ \scr@headabove@linethickness)}}
+\def\def@@twosidehead(#1,#2)#3#4#5{%
+ \@ifnextchar(
+ {\def@@@twosidehead({#1},{#2}){#3}{#4}{#5}}
+ {\def@@@twosidehead({#1},{#2}){#3}{#4}{#5}%
+ (\scr@headbelow@linelength,%
+ \scr@headbelow@linethickness)}}
+\def\def@@@twosidehead(#1,#2)#3#4#5(#6,#7){%
+%</v2>
+%<v1>\def\def@twosidehead(#1,#2)#3#4#5(#6,#7){
+ \def\@evenhead{\let\headmark\leftmark%
+ \hss\hskip\@evenheadshift\vbox{\hsize=\@headwidth\relax%
+ \hf@rule{#1}{#2}{\@headwidth}%
+%<v2> {headabove}%
+ \vskip#2
+ \vskip\baselineskip%
+ \hb@xt@\@headwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #3}}%
+ \hf@rule{#6}{#7}{\@headwidth}%
+%<v2> {headbelow}%
+ }\hskip\@oddheadshift\hss}
+ \def\@oddhead{\let\headmark\rightmark%
+ \hss\hskip\@oddheadshift\vbox{\hsize=\@headwidth\relax%
+ \hf@rule{#1}{#2}{\@headwidth}%
+%<v2> {headabove}%
+ \vskip#2
+ \vskip\baselineskip%
+ \hb@xt@\@headwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #4}}%
+ \hf@rule{#6}{#7}{\@headwidth}%
+%<v2> {headbelow}%
+ }\hskip\@evenheadshift\hss}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\def@onesidehead}
+% \changes{v1.3}{2001/03/30}{Use of \cmd\@headwidth instead of
+% \cmd\textwidth}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% \begin{macro}{\def@@onesidehead}
+% \begin{macro}{\def@@@onesidehead}
+% \changes{v2.0l}{2001/09/30}{\cs{@oddheadshift} am Ende durch
+% \cs{@evenheadshift} ersetzt}
+% Next the onesided head:
+% \begin{macrocode}
+%<*v2>
+\def\def@onesidehead{%
+ \@ifnextchar(
+ {\def@@onesidehead}
+ {\def@@onesidehead(\scr@headabove@linelength,%
+ \scr@headabove@linethickness)}}
+\def\def@@onesidehead(#1,#2)#3#4#5{%
+ \@ifnextchar(
+ {\def@@@onesidehead({#1},{#2}){#3}{#4}{#5}}
+ {\def@@@onesidehead({#1},{#2}){#3}{#4}{#5}%
+ (\scr@headbelow@linelength,%
+ \scr@headbelow@linethickness)}}
+\def\def@@@onesidehead(#1,#2)#3#4#5(#6,#7){%
+%</v2>
+%<v1>\def\def@onesidehead(#1,#2)#3#4#5(#6,#7){
+ \def\@evenhead{}
+ \def\@oddhead{\let\headmark\rightmark%
+ \hss\hskip\@oddheadshift\vbox{\hsize=\@headwidth\relax%
+ \hf@rule{#1}{#2}{\@headwidth}%
+%<v2> {headabove}%
+ \vskip#2%
+ \vskip\baselineskip%
+ \hb@xt@\@headwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #5}}
+ \hf@rule{#6}{#7}{\@headwidth}%
+%<v2> {headbelow}%
+ }\hskip\@evenheadshift\hss}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\def@twosidefoot}
+% \changes{v1.3}{2001/03/30}{Use of \cmd\@footwidth instead of
+% \cmd\textwidth}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% And last twosided and onesided foot:
+% \begin{macrocode}
+%<*v2>
+\def\def@twosidefoot{%
+ \@ifnextchar(
+ {\def@@twosidefoot}
+ {\def@@twosidefoot(\scr@footabove@linelength,%
+ \scr@footabove@linethickness)}}
+\def\def@@twosidefoot(#1,#2)#3#4#5{%
+ \@ifnextchar(
+ {\def@@@twosidefoot({#1},{#2}){#3}{#4}{#5}}
+ {\def@@@twosidefoot({#1},{#2}){#3}{#4}{#5}%
+ (\scr@footbelow@linelength,%
+ \scr@footbelow@linethickness)}}
+\def\def@@@twosidefoot(#1,#2)#3#4#5(#6,#7){%
+%</v2>
+%<v1>\def\def@twosidefoot(#1,#2)#3#4#5(#6,#7){
+ \def\@evenfoot{\let\headmark\leftmark%
+ \hss\hskip\@evenfootshift\vbox{\hsize=\@footwidth\relax%
+ \topfoot@rule{#1}{#2}\hb@xt@\@footwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #3}}%
+ \botfoot@rule{#6}{#7}}\hskip\@oddfootshift\hss}
+ \def\@oddfoot{\let\headmark\rightmark%
+ \hss\hskip\@oddfootshift\vbox{\hsize=\@footwidth\relax%
+ \topfoot@rule{#1}{#2}\hb@xt@\@footwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #4}}%
+ \botfoot@rule{#6}{#7}}\hskip\@evenfootshift\hss}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\def@onesidefoot}
+% \changes{v1.3}{2001/03/30}{Use of \cmd\@footwidth instead of
+% \cmd\textwidth}
+% \changes{v2.0}{2001/04/20}{Thickness and length of the lines are
+% optional}
+% \changes{v2.0j}{2001/08/18}{Use of \cs{scr@nouppercase}}
+% \begin{macro}{\def@@onesidefoot}
+% \begin{macro}{\def@@@onesidefoot}
+% \changes{v2.0l}{2001/09/30}{\cs{vbox} bereits nach der Linie beendet}
+% \begin{macrocode}
+%<*v2>
+\def\def@onesidefoot{%
+ \@ifnextchar(
+ {\def@@onesidefoot}
+ {\def@@onesidefoot(\scr@footabove@linelength,%
+ \scr@footabove@linethickness)}}
+\def\def@@onesidefoot(#1,#2)#3#4#5{%
+ \@ifnextchar(
+ {\def@@@onesidefoot({#1},{#2}){#3}{#4}{#5}}
+ {\def@@@onesidefoot({#1},{#2}){#3}{#4}{#5}%
+ (\scr@footbelow@linelength,%
+ \scr@footbelow@linethickness)}}
+\def\def@@@onesidefoot(#1,#2)#3#4#5(#6,#7){%
+%</v2>
+%<v1>\def\def@onesidefoot(#1,#2)#3#4#5(#6,#7){
+ \def\@evenfoot{}
+ \def\@oddfoot{\let\headmark\rightmark%
+ \hss\hskip\@oddfootshift\vbox{\hsize=\@footwidth\relax%
+ \topfoot@rule{#1}{#2}\hb@xt@\@footwidth{{%
+%<v2> \scr@nouppercase%
+ \headfont\strut #5}}
+ \botfoot@rule{#6}{#7}}\hskip\@evenfootshift\hss}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We now define the rules used at head and foot.
+% \begin{macro}{\topfoot@rule}
+% \begin{macrocode}
+\newcommand\topfoot@rule[2]{%
+ \@tempdima\baselineskip\advance\@tempdima by-.7\normalbaselineskip
+ \advance\@tempdima by -#2
+ \vskip\@tempdima\hf@rule{#1}{#2}{\@footwidth}%
+%<v2> {footabove}%
+ \vskip-\@tempdima}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\botfoot@rule}
+% \begin{macrocode}
+\newcommand\botfoot@rule[2]{%
+ \@tempdima-\baselineskip\advance\@tempdima by .3\normalbaselineskip
+ \advance\@tempdima by #2
+ \vskip\@tempdima\hf@rule{#1}{#2}{\@footwidth}%
+%<v2> {footbelow}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hf@rule}
+% \changes{v1.3}{2001/03/30}{New, third parameter ``boxwidth''}
+% \changes{v2.0f}{2001/06/23}{Rule can be adjusted at inner margine,
+% centered or adjusted at outer margine}
+% \changes{v2.2}{2004/07/05}{Last parameter of the rule tells, if it is a
+% headabove, headbelow, footabove or footbelow rule}
+% \changes{v2.2}{2005/07/05}{Precommands before the rules are allowed}
+% \changes{v2.2}{2005/07/05}{Macro is not longer long}
+% \begin{macrocode}
+%<!v2>\newcommand\hf@rule[3]{%
+%<v2>\newcommand*{\hf@rule}[4]{%
+ \setlength{\@tempdimb}{#1}
+%<*v2>
+ \begingroup
+ \csname scr@pre@#4@line\endcsname
+ \ifodd\c@page
+ \edef\@tempa{\hfline@adjust}
+ \else
+ \@tempcnta=2\advance\@tempcnta -\hfline@adjust
+ \edef\@tempa{\the\@tempcnta}
+ \fi
+ \ifnum\@tempa=1
+%</v2>
+ \setlength{\@tempdimb}{.5\@tempdimb}
+%<v2> \fi
+ \hb@xt@#3{%
+%<v2> \ifnum\@tempa>0
+ \hfill%
+ \llap{\vrule\@depth#2\@height\z@\@width\@tempdimb}%
+%<v2> \fi
+%<v2> \ifnum\@tempa<2
+ \rlap{\vrule\@depth#2\@height\z@\@width\@tempdimb}%
+ \hfill%
+%<v2> \fi
+ }%
+%<v2> \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\scr@pre@headabove@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@headtopline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@headbelow@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@headsepline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@footabove@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@footsepline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@pre@footbelow@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% \begin{macro}{\scr@fnt@footbottomrule}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macro}{\scr@fnt@instead@footbotline}
+% \changes{v2.2}{2004/07/05}{New KOMA-Script font command}
+% \begin{macrocode}
+%<*v2>
+\newcommand*{\scr@pre@headabove@line}{}
+\newcommand*{\scr@fnt@headtopline}{\scr@pre@headabove@line}
+\newcommand*{\scr@pre@headbelow@line}{}
+\newcommand*{\scr@fnt@headsepline}{\scr@pre@headbelow@line}
+\newcommand*{\scr@pre@footabove@line}{}
+\newcommand*{\scr@fnt@footsepline}{\scr@pre@footabove@line}
+\newcommand*{\scr@pre@footbelow@line}{}
+\newcommand*{\scr@fnt@footbottomline}{\scr@pre@footbelow@line}
+\newcommand*{\scr@fnt@instead@footbotline}{footbottomline}
+%</v2>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Using these definitions, we can define the testing macros.
+%
+% \begin{macro}{\newpagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\newpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@newpagestyle[-]}%
+ {\@newpagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@newpagestyle}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@newpagestyle[#1]#2#3#4{
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}
+ \else
+ \PackageError
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {Your command was ignored}%
+ {There is already a pagestyle named ``#1''.\MessageBreak%
+ Use \protect\defpagestyle\space, \protect\renewpagestyle or
+ \protect\providepagestyle.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\renewpagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\renewpagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@renewpagestyle[-]}%
+ {\@renewpagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@renewpagestyle}
+% \changes{v1.2a}{1996/12/07}{Avoid to define pagestyle as \cs{relax}
+% if it wasn't defined (Thanks to Bernd).}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@renewpagestyle[#1]#2#3#4{
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+ \PackageError
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {Your command was ignored}%
+ {There is no pagestyle named ``#1''.\MessageBreak%
+ Use \protect\defpagestyle, \protect\newpagestyle or
+ \protect\providepagestyle.}
+ \else
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\providepagestyle}
+% First the simple star/starless-selection:
+% \begin{macrocode}
+\def\providepagestyle{%
+% \end{macrocode}
+% We have to decide, whether it is a my-version or not:
+% \begin{macrocode}
+ \@ifstar
+ {\@providepagestyle[-]}%
+ {\@providepagestyle[+]}}
+% \end{macrocode}
+% \begin{macro}{\@providepagestyle}
+% There we have to distinguish, whether the pagestyle is already
+% defined or not.
+% \begin{macrocode}
+\def\@providepagestyle[#1]#2#3#4{
+ \expandafter\ifx\csname ps@#2\endcsname\relax
+% \end{macrocode}
+% Then we can use the already defined |\@defpagestyle|.
+% \begin{macrocode}
+ \@defpagestyle[#1]{#2}{#3}{#4}
+ \else
+ \PackageInfo
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {\protect\providepagestyle\protect{#1\protect} ignored.}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{User-Pagestyle-Definition-Interface}
+% The pagestyle-definition-interface for users is much easier than the
+% expert-version. Using the expert-macros, the definition is easy, too.
+%
+% \begin{macro}{\deftripstyle}
+% \begin{macrocode}
+% \end{macrocode}
+% At version 1 we define the selection of star- or starless-version first:
+% \begin{macrocode}
+\def\deftripstyle{%
+ \@ifstar
+ {\@deftripstyle[-]}%
+ {\@deftripstyle[+]}}
+% \end{macrocode}
+% \end{macro}
+% Next we check, if there is an optional argument:
+% \begin{macro}{\@deftripstyle}
+% \begin{macrocode}
+\def\@deftripstyle[#1]#2{%
+ \@ifnextchar[
+ {\@@deftripstyle[#1]{#2}}%
+ {\@@deftripstyle[#1]{#2}[\z@]}}
+% \end{macrocode}
+% \end{macro}
+% or perhaps two optional arguments:
+% \begin{macro}{\@@deftripstyle}
+% \begin{macrocode}
+\def\@@deftripstyle[#1]#2[#3]{
+% \end{macrocode}
+% Ok, now we have the problem, that there can be only 9 arguments. So we
+% have to distinguish the star-versions by a macro:
+% \begin{macrocode}
+ \def\@tempa{#1}
+ \@ifnextchar[
+ {\@@@deftripstyle#2[#3]}%
+ {\@@@deftripstyle#2[\z@][#3]}}
+% \end{macrocode}
+% \end{macro}
+% Now the main-definition:
+% \begin{macro}{\@@@deftripstyle}
+% \begin{macrocode}
+\def\@@@deftripstyle#1[#2][#3]#4#5#6#7#8#9{%
+ \def\@tempb{+}
+ \ifx\@tempa\@tempb%
+ \defpagestyle{#1}%
+ {(\@headwidth,#2)%
+ {\rlap{#6}\hfill{#5}\hfill\llap{#4}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ (\@headwidth,#3)}
+ {(\@footwidth,#3)%
+ {\rlap{#9}\hfill{#8}\hfill\llap{#7}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ (\@footwidth,#2)}
+ \else
+ \defpagestyle*{#1}%
+ {(\@headwidth,#2)%
+ {\rlap{#6}\hfill{#5}\hfill\llap{#4}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ {\rlap{#4}\hfill{#5}\hfill\llap{#6}}%
+ (\@headwidth,#3)}
+ {(\@footwidth,#3)%
+ {\rlap{#9}\hfill{#8}\hfill\llap{#7}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ {\rlap{#7}\hfill{#8}\hfill\llap{#9}}%
+ (\@footwidth,#2)}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Automark or not}
+% This is only valid at version 2.
+% \begin{macrocode}
+%<*v2>
+% \end{macrocode}
+% \begin{macro}{\automark}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0c}{2001/06/07}{Use of \cs{MakeMarkcase}}
+% \changes{v2.0g}{2001/06/25}{Use of \cs{manualmark}}
+% \changes{v2.0i}{2001/08/17}{Warning, if arguments are mixed up}
+% \changes{v2.0i}{2001/08/17}{\cs{markboth} behavior fixed}
+% \changes{v2.0i}{2001/08/17}{Use of \cs{if@autooneside}}
+% \changes{v2.1a}{2002/10/30}{Switch on \cs{if@automark}}
+% This macro activates automatic mark. Is has two arguments. The
+% first, optional argument is the sectioning level name of the mark at
+% left pages, the second, not optional argument is the same at right
+% pages. At oneside mode all pages are right.
+% \begin{macro}{\@iflevelok}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{\markleft}
+% \changes{v2.0i}{2001/08/17}{New}
+% \begin{macro}{\@markleft}
+% \changes{v2.0i}{2001/08/17}{New}
+% To define \cs{automark} we also need these three makros. The first
+% one decides, if level of second parameter is less than level of
+% first parameter and does then third or fourth parameter.
+% \cs{markleft} and \cs{@markleft} are similar to \cs{markright} and
+% \cs{@markright} at \LaTeX{} kernel.
+% \begin{macrocode}
+\newcommand*{\@iflevelok}[4]{%
+ \begingroup%
+ \edef\@tempa{#1}\ifx\@tempa\@empty\def\@tempa{\endgroup #3}\else%
+ \def\@tempa{\csname #1level\endcsname}%
+ \def\@tempb{\csname #2level\endcsname}%
+ \ifnum \@tempa>\@tempb%
+ \def\@tempa{\endgroup#3}%
+ \else%
+ \def\@tempa{\endgroup#4}%
+ \fi\fi\@tempa}
+\providecommand{\markleft}[1]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markleft\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\providecommand{\@markleft}[3]{\@temptokena {#2}%
+ \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \changes{v2.2a}{2004/09/05}{all changes of helper macros and switches are
+% local to fix e.g.\ twocolumn problem with \cs{part}}
+% \begin{macrocode}
+\newcommand*{\automark}[2][\@empty]{%
+ \manualmark
+ \@automarktrue
+ \begingroup
+ \edef\@tempa{#2}\ifx\@tempa\@empty
+ \endgroup
+ \PackageWarning{scrpage2}
+ {\string\automark\space with empty obligatory argument}
+ \else
+ \endgroup
+ \expandafter\def\csname #2mark\endcsname##1{%
+ \begingroup
+ \def\@tempa{\csname #2level\endcsname}
+ \@tempswafalse
+ \ifnum \c@secnumdepth <\@tempa\else\if@mainmatter
+ \@tempswatrue
+ \fi\fi
+ \edef\@tempa{#1}%
+ \if@twoside\edef\@tempb{#2}\else\let\@tempb\@tempa\fi
+ \ifx\@tempa\@tempb
+ \if@tempswa
+ \@mkboth{\MakeMarkcase{\csname #2markformat\endcsname ##1}}
+ {\MakeMarkcase{\csname #2markformat\endcsname ##1}}%
+ \else%
+ \@mkboth{\MakeMarkcase{##1}}{\MakeMarkcase{##1}}%
+ \fi
+ \else
+ \if@tempswa
+ \@iflevelok{#1}{#2}{%
+ \@mkboth{\MakeMarkcase{\csname #2markformat\endcsname
+ ##1}}{}}{%
+ \ifx\@mkboth\markboth\markleft{\MakeMarkcase{\csname
+ #2markformat\endcsname ##1}}%
+ \fi}
+ \else
+ \@iflevelok{#1}{#2}{%
+ \@mkboth{\MakeMarkcase{##1}}{}}{%
+ \ifx\@mkboth\markboth\markleft{\MakeMarkcase{##1}}\fi}
+ \fi
+ \fi
+ \endgroup
+ }
+ \fi
+ \begingroup
+ \edef\@tempa{#1}\edef\@tempb{#2}
+ \if@autooneside\if@twoside\else\let\@tempa\@empty\fi\fi
+ \ifx\@tempa\@empty
+ \endgroup
+ \else
+ \ifx\@tempa\@tempb
+ \endgroup
+ \else
+ \endgroup
+ \expandafter\def\csname #1mark\endcsname##1{%
+ \begingroup
+ \def\@tempa{\csname #1level\endcsname}
+ \@tempswafalse
+ \ifnum \c@secnumdepth <\@tempa\else\if@mainmatter
+ \@tempswatrue
+ \fi\fi
+ \if@tempswa
+ \@iflevelok{#1}{#2}{%
+ \ifx\@mkboth\markboth
+ \markright{\MakeMarkcase{\csname #1markformat\endcsname
+ ##1}}%
+ \fi}{%
+ \@mkboth{}{\MakeMarkcase{\csname #1markformat\endcsname
+ ##1}}}
+ \else
+ \@iflevelok{#1}{#2}{%
+ \ifx\@mkboth\markboth
+ \markright{\MakeMarkcase{##1}}%
+ \fi}{%
+ \@mkboth{}{\MakeMarkcase{##1}}}
+ \fi
+ \endgroup
+ }
+ \fi\fi%
+ \let\@mkboth\markboth
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\manualmark}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0g}{2001/06/25}{also deactivating \cs{...mark}}
+% \changes{v2.1a}{2002/10/30}{Switch off \cs{if@automark}}
+% This macro switchs to the manual set of marks (using \cs{markboth}
+% and \cs{markright}. This is very simple, we only have to deaktivate
+% the mark macros.
+% \begin{macrocode}
+\newcommand*{\manualmark}{%
+ \if@chapter\let\chaptermark\@gobble\fi
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ \let\subsubsectionmark\@gobble
+ \let\paragraphmark\@gobble
+ \let\subparagraphmark\@gobble
+ \let\@mkboth\@gobbletwo
+ \@automarkfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\partlevel}
+% \changes{v2.2}{2004/07/05}{New}
+% \begin{macro}{\chapterlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\sectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subsectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subsubsectionlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\paragraphlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subparagraphlevel}
+% \changes{v2.0}{2001/04/20}{New}
+% At \cs{automark} we use some macros to get the numeric level of a
+% sectioning name. We simply define these:
+% \begin{macrocode}
+\if@chapter
+ \newcommand*{\partlevel}{-1}
+\else
+ \newcommand*{\partlevel}{0}
+\fi
+\newcommand*{\chapterlevel}{0}
+\newcommand*{\sectionlevel}{1}
+\newcommand*{\subsectionlevel}{2}
+\newcommand*{\subsubsectionlevel}{3}
+\newcommand*{\paragraphlevel}{4}
+\newcommand*{\subparagraphlevel}{5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\MakeMarkcase}
+% \changes{v2.0m}{2002/02/05}{Klasse \texttt{scrlttr2} ist bekannt}
+% At \cs{automark} we use a new macro to enable usability of
+% \cs{MakeUppercase} at the head-marks. We set this macro to
+% \cs{MakeUppercase} if one of the standard-classes was loaded:
+% \begin{macrocode}
+\@ifundefined{MakeMarkcase}{
+ \@ifclassloaded{scrbook}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrreprt}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrartcl}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{scrlttr2}{\let\MakeMarkcase\relax}{%
+ \@ifclassloaded{book}{}{%
+ \@ifclassloaded{report}{}{%
+ \@ifclassloaded{article}{}{%
+ \PackageWarningNoLine{scrpage2}{%
+ use of scrpage2 with unknown class.\MessageBreak
+ Please mail to markus.kohm@gmx.de, if
+ headmarks\MessageBreak
+ are lower case without use of scrpage2}}}}
+ \let\MakeMarkcase\MakeUppercase}}}}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scrheadings@style}
+% \changes{v2.0g}{2001/06/25}{New}
+% \changes{v2.0m}{2002/02/05}{Klasse \texttt{scrlttr2} wird
+% ber"ucksichtigt }
+% This macro defines, which style for scrheadings should be used. If
+% it is not defined, we have to define it in a propper way.
+% \begin{macrocode}
+\@ifundefined{scrheadings@style}{
+ \@ifclassloaded{scrbook}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrreprt}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrartcl}{\def\scrheadings@style{koma}}{%
+ \@ifclassloaded{scrlttr2}{\def\scrheadings@style{koma}}{%
+ \def\scrheadings@style{standard}}}}}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</v2>
+% \end{macrocode}
+%
+%
+% \subsection{Width of head and foot}
+% \begin{macro}{\setheadwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\setfootwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\set@hf@width}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v1.3a}{2001/05/31}{symbolic values ``paper'', ``text'',
+% ``textwidthmarginpar''}
+% \changes{v2.0b}{2001/05/31}{symbolic values ``paper'', ``text'',
+% ``textwidthmarginpar''}
+% \changes{v2.0c}{2001/06/07}{error fix at warning}
+% \begin{macro}{\settowidthof}
+% \changes{v2.0e}{2001/06/22}{New}
+% \begin{macro}{\deftowidthof}
+% \changes{v2.0e}{2001/06/22}{New}
+% \changes{v2.0f}{2001/06/23}{new symbolic values ``autohead'' and
+% ``autofoot''}
+% \changes{v2.0i}{2001/08/17}{new symbolic value ``page''}
+% \changes{v2.0k}{2001/09/28}{\cs{pagewidth} korrigiert}
+% \changes{v2.1b}{2003/05/31}{more save existance test}
+% \changes{v2.2}{2004/07/05}{value ``foot'' fixed}
+% Until version 1.3, head and foot of a page had same width like the
+% text block. Since version 1.3 this was changed. Now the head and
+% foot have their own width and an optional shift relative to the text
+% part of the page. This shift can be positive or negative. We set
+% the width and shift with one macro and save them at macros. The set
+% macros have an optional argument: the shift.
+%
+% For definition of symbolic length values there is the macro
+% \cs{settowidthof}. And to define a macro with this value, there
+% is \cs{deftowidthof}.
+% \begin{macrocode}
+\newcommand*{\settowidthof}[2]{%
+ \edef\@tempa{#2}
+ \edef\@tempb{paper}\ifx\@tempa\@tempb
+ \setlength{#1}{\paperwidth}
+ \else\edef\@tempb{text}\ifx\@tempa\@tempb
+ \setlength{#1}{\textwidth}
+ \else\edef\@tempb{textwithmarginpar}\ifx\@tempa\@tempb
+ \setlength{#1}{\textwidth}
+ \addtolength{#1}{\marginparwidth}
+ \addtolength{#1}{\marginparsep}
+ \else\edef\@tempb{head}\ifx\@tempa\@tempb
+ \setlength{#1}{\@headwidth}
+ \else\edef\@tempb{foot}\ifx\@tempa\@tempb
+ \setlength{#1}{\@footwidth}
+ \else\edef\@tempb{headtopline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@headabove@linelength}
+ \else\edef\@tempb{headsepline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@headbelow@linelength}
+ \else\edef\@tempb{footsepline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@footabove@linelength}
+ \else\edef\@tempb{footbotline}\ifx\@tempa\@tempb
+ \setlength{#1}{\scr@footbelow@linelength}
+ \else\edef\@tempb{page}\ifx\@tempa\@tempb
+ \setlength{#1}{\paperwidth}
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname ta@bcor\endcsname\relax\else
+ \addtolength{#1}{-\ta@bcor}
+ \fi
+ \else
+ \setlength{#1}{#2}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\newcommand*{\deftowidthof}[2]{%
+ \edef\@tempa{#2}\edef\@tempb{autohead}\ifx\@tempa\@tempb
+ \expandafter\def\csname #1\endcsname{\@headwidth}
+ \else\edef\@tempb{autofoot}\ifx\@tempa\@tempb
+ \expandafter\def\csname #1\endcsname{\@footwidth}
+ \else
+ \settowidthof{\@tempdima}{#2}
+ \expandafter\edef\csname #1\endcsname{\the\@tempdima}
+ \fi
+ \fi
+}
+\newcommand*{\setheadwidth}[2][\@empty]{%
+ \set@hf@width{head}{#1}{#2}
+}
+\newcommand*{\setfootwidth}[2][\@empty]{%
+ \set@hf@width{foot}{#1}{#2}
+}
+\newcommand*{\set@hf@width}[3]{%
+ \settowidthof{\@tempdima}{#3}
+ \ifdim\@tempdima>\paperwidth
+ \PackageWarning
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {You've set width of #1 to a value\MessageBreak
+ greater than width of page!\MessageBreak%
+ I`ll reduce width of #1 to width of page}
+ \setlength{\@tempdima}{\paperwidth}
+ \else
+ \ifdim\@tempdima<\z@
+ \PackageWarning
+%<v1> {scrpage}
+%<v2> {scrpage2}
+ {You've set width of #1 to negative value!\MessageBreak%
+ I'll set it to 0pt}
+ \setlength{\@tempdima}{\z@}
+ \fi
+ \fi
+ \expandafter\edef\csname @#1width\endcsname{\the\@tempdima}
+ \edef\@tempa{#2}
+ \setlength{\@tempdima}{\textwidth}
+ \addtolength{\@tempdima}{-\csname @#1width\endcsname}
+ \ifx\@tempa\@empty
+ \if@twoside
+ \setlength{\@tempdimb}{.3333333333\@tempdima}
+ \else
+ \setlength{\@tempdimb}{.5\@tempdima}
+ \fi
+ \else
+ \setlength{\@tempdimb}{#2}
+ \fi
+ \addtolength{\@tempdima}{-\@tempdimb}
+ \ifdim\@tempdimb<\z@
+ \setlength{\@tempdimb}{-\@tempdimb}
+ \expandafter\edef\csname @odd#1shift\endcsname{-\the\@tempdimb}
+ \else
+ \expandafter\edef\csname @odd#1shift\endcsname{\the\@tempdimb}
+ \fi
+ \ifdim\@tempdima<\z@
+ \setlength{\@tempdima}{-\@tempdima}
+ \expandafter\edef\csname @even#1shift\endcsname{-\the\@tempdima}
+ \else
+ \expandafter\edef\csname @even#1shift\endcsname{\the\@tempdima}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@headwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v2.1}{2002/03/28}{use of option \texttt{mpinclude}}
+% \begin{macro}{\@footwidth}
+% \changes{v1.3}{2001/03/30}{New}
+% \changes{v2.1}{2002/03/28}{use of option \texttt{mpinclude}}
+% \begin{macro}{\@oddheadshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@evenheadshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@oddfootshift}
+% \changes{v1.3}{2001/03/30}{New}
+% \begin{macro}{\@evenfootshift}
+% \changes{v1.3}{2001/03/30}{New}
+% The values of width and shift of head and foot are saved at internal
+% macros.
+% \begin{macrocode}
+\newcommand*{\@headwidth}{\textwidth}
+\newcommand*{\@oddheadshift}{\z@}
+\newcommand*{\@evenheadshift}{\z@}
+\newcommand*{\@footwidth}{\textwidth}
+\newcommand*{\@oddfootshift}{\z@}
+\newcommand*{\@evenfootshift}{\z@}
+% \end{macrocode}
+% If option \texttt{mpinclude} was used, we use a special trick to set
+% width of head and foot but only if the user doesn't:
+% \begin{macrocode}
+%<*v2>
+\if@mincl
+ \renewcommand*{\@headwidth}{}
+ \renewcommand*{\@footwidth}{}
+ \AtBeginDocument{%
+ \ifx\@headwidth\@empty
+ \setheadwidth[0pt]{textwithmarginpar}
+ \fi
+ \ifx\@footwidth\@empty
+ \setfootwidth[0pt]{textwithmarginpar}
+ \fi
+ }
+\fi
+%</v2>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Fonts}
+% \begin{macro}{\pnumfont}
+% We have to define a macro defining the font, used by |\pagemark|. Because
+% of this macro may already be defined by a \textsf{KOMA}-script-class, we
+% have to do this, using |\providecommand|
+% \begin{macrocode}
+\providecommand\pnumfont{\normalfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\headfont}
+% There is also a macro used by |\@evenhead|, |\@oddhead| and |\@evenfoot|,
+% |\@oddfoot|:
+% \begin{macrocode}
+\providecommand\headfont{\normalfont%
+%<v2> \slshape%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Length and thickness of lines at head and foot}
+% \begin{macro}{\setheadtopline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{headtop} changed into
+% \texttt{headabove}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setheadsepline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{headbot} changed into
+% \texttt{headbelow}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setfootsepline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{foottop} changed into
+% \texttt{footabove}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macro}{\setfootbotline}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0d}{2001/06/19}{\texttt{footbot} changed into
+% \texttt{footbelow}}
+% \changes{v2.0f}{2001/06/23}{new symbolic value ``auto''}
+% \begin{macrocode}
+%<*v2>
+% \end{macrocode}
+% Only at version 2 there are new macros to set the length and
+% thickness of the lines at head and foot. Wie use macros not
+% dimensions, because the amount of dimensions is very small at \TeX.
+% \begin{macrocode}
+\newcommand*{\setheadtopline}{\scr@setline{head}{above}}
+\newcommand*{\setheadsepline}{\scr@setline{head}{below}}
+\newcommand*{\setfootsepline}{\scr@setline{foot}{above}}
+\newcommand*{\setfootbotline}{\scr@setline{foot}{below}}
+% \end{macrocode}
+% \begin{macro}{\scr@setline}
+% \begin{macro}{\@scr@setline}
+% \changes{v2.0d}{2001/06/19}{symbolic values implemented}
+% \begin{macro}{\@@scr@setline}
+% \changes{v2.0d}{2001/06/18}{macro name fixed}
+% \begin{macro}{\@scr@set@pre@line}
+% \changes{v2.2}{2004/07/05}{New internal}
+% The real change of the lines is done with the macros
+% \cs{scr@setline}, \cs{@scr@setline} and \cs{@@scr@setline}:
+% \begin{macrocode}
+\def\scr@setline#1#2{%
+ \@ifnextchar[%]
+ {\@scr@setline{#1}{#2}}{\@@scr@setline{#1#2}}%
+}
+\def\@scr@setline#1#2[#3]{%
+ \edef\@tempa{#3}\edef\@tempa{auto}\ifx\@tempa\@tempb
+ \deftowidthof{scr@#1#2@linelength}{#3#1}%
+ \else
+ \deftowidthof{scr@#1#2@linelength}{#3}%
+ \fi
+ \@@scr@setline{#1#2}%
+}
+\def\@@scr@setline#1#2{%
+ \edef\@tempa{#2}\edef\@tempb{current}\ifx\@tempa\@empty\else
+ \ifx\@tempa\@tempb\else
+ \setlength{\@tempdima}{#2}%
+ \expandafter\edef\csname scr@#1@linethickness\endcsname%
+ {\the\@tempdima}%
+ \fi\fi
+ \@ifnextchar[%]
+ {\@src@set@pre@line{#1}}{}%
+}
+\def\@src@set@pre@line#1[#2]{%
+ \expandafter\def\csname scr@pre@#1@line\endcsname{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+%</v2>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Extended multilanguage formats}
+% \begin{macro}{\partmarkformat}
+% \changes{v2.2}{2004/07/05}{New}
+% \begin{macro}{\chaptermarkformat}
+% \changes{v1.1}{1995/06/27}{Space after chapternumber increased.}
+% \begin{macro}{\sectionmarkformat}
+% \changes{v1.1}{1995/06/27}{Space after sectionnumber increased.}
+% \begin{macro}{\subsectionmarkformat}
+% \changes{v1.1}{1995/06/27}{Space after subsectionnumber increased.}
+% \begin{macro}{\subsubsectionmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\paragraphmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\subparagraphmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\@seccntmarkformat}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\@seccntformat}
+% \changes{v2.0}{2001/04/20}{New}
+% There are some macros to handle languages like Chinese, Japanese or Korean.
+% These macros were defined first by Werner Lemberg at his CJK-bundle. See
+% |scrclass.dtx| for further information.
+% \begin{macrocode}
+\providecommand{\partmarkformat} {\partname\ \thepart. \ }
+\if@chapter
+ \providecommand{\chaptermarkformat} {\@chapapp\ \thechapter. \ }
+ \providecommand{\sectionmarkformat} {\thesection. \ }
+%<v2> \providecommand{\subsectionmarkformat} {\@seccntmarkformat{subsection}}
+\else
+ \providecommand{\sectionmarkformat} {\thesection\quad}
+ \providecommand{\subsectionmarkformat} {\thesubsection\quad}
+\fi
+%<*v2>
+\providecommand{\subsubsectionmarkformat}{\@seccntmarkformat{subsubsection}}
+\providecommand{\paragraphmarkformat} {\@seccntmarkformat{paragraph}}
+\providecommand{\subparagraphmarkformat} {\@seccntmarkformat{subparagraph}}
+\providecommand{\@seccntmarkformat}[1] {\@seccntformat{#1}}
+%</v2>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Definition of default pagestyles}
+%
+% \begin{macrocode}
+%<*v2>
+% \end{macrocode}
+% \begin{macro}{\ps@save@plain}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instread of
+% \cs{ps@standardplain}}
+% We define two default pagestyles, which can be used instead of the
+% standard pagestyles. The two pagestyles are something like a
+% family. A pagestyle for \emph{normal} pages with head and foot and a
+% pagestyle for \emph{plain} pages with not so much head and foot. So
+% we have to redefine the standard pagestyle \texttt{plain}. But maybe
+% someone want to use the old standard pagestyle. So we first define
+% new names for old pagestyles.
+% \begin{macrocode}
+\newcommand*{\ps@save@plain}{}
+\let\ps@save@plain\ps@plain
+\newcommand*{\ps@use@plain}{\let\save@@mkboth\@mkboth
+ \ps@save@plain
+ \let\@mkboth\save@@mkboth}
+\let\ps@plain\ps@use@plain
+% \end{macrocode}
+% \begin{macro}{\ps@save@headings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instread of
+% \cs{ps@standardheadings}}
+% \begin{macro}{\ps@save@myheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0b}{2001/05/31}{use this instread of
+% \cs{ps@standardmyheadings}}
+% \begin{macro}{\ps@headings}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\ps@myheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% If standard pagestyle \texttt{headings} or \texttt{myheadings} is
+% used, also standard pagestyle \texttt{use@plain} should be
+% used. So we also define new names for the other old pagestyles and
+% new pagestyles with the old names, doing the switch back for the
+% plain pagestyle. These are defined even if the pagestyles are
+% unknown.
+% \begin{macrocode}
+\newcommand*{\ps@save@headings}{}
+\let\ps@save@headings\ps@headings
+\newcommand*{\ps@save@myheadings}{}
+\let\ps@save@myheadings\ps@myheadings
+\def\ps@headings{%
+ \PackageWarning{scrpage2}
+ {you've used pagestyle ``headings''.\MessageBreak
+ You should not use this pagestyle with a\MessageBreak
+ scrpage2-pagestyle!\MessageBreak
+ You should use pagestyle ``useheadings'' instead\MessageBreak}%
+ \let\ps@plain\ps@save@plain%
+ \ps@save@headings\@automarktrue}
+\def\ps@myheadings{%
+ \PackageWarning{scrpage2}
+ {you've used pagestyle ``myheadings''.\MessageBreak
+ You should not use this pagestyle with a\MessageBreak
+ scrpage2-pagestyle!\MessageBreak
+ You should use pagestyle ``useheadings'' instead\MessageBreak}%
+ \let\ps@plain\ps@save@plain%
+ \ps@save@myheadings\@automarkfalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\ps@useheadings}
+% \changes{v2.0b}{2001/05/31}{New}
+% \changes{v2.0m}{2002/02/05}{Fatal bug (\cs{mkboth} instead of
+% \cs{@mkboth}) fixed}
+% \changes{v2.1a}{2002/10/30}{Use of switch \cs{if@automark}}
+% This is the pagestyle, you should use instead of \texttt{headings}
+% or \texttt{myheadings}. If you are using manual marks, this behaves
+% like pagestyle \texttt{myheadings}. If you are using automatic
+% marks, this behaves like headings, but without changing
+% \cs{chaptermark}, \cs{sectionmark} or \cs{subsectionmark}.
+% \begin{macrocode}
+\newcommand*{\ps@useheadings}{%
+ \if@automark\let\@mkboth\markboth\else\let\@mkboth\@gobbletwo\fi
+ \let\ps@plain\ps@use@plain%
+ \let\save@@mkboth\@mkboth%
+ \let\save@chaptermark\chaptermark%
+ \let\save@sectionmark\sectionmark%
+ \let\save@subsectionmark\subsectionmark%
+ \ifx\@mkboth\markboth\ps@save@headings\else\ps@save@myheadings\fi%
+ \let\@mkboth\save@@mkboth%
+ \let\chaptermark\save@chaptermark%
+ \let\sectionmark\save@sectionmark%
+ \let\subsectionmark\save@subsectionmark%
+}
+% \end{macrocode}
+% Note: Because of saving \cs{@mkboth}, \cs{chaptermark},
+% \cs{sectionmark} and \cs{subsection} before changing the pagestyle
+% and restore them after changing the pagestyle it does not matter, if
+% we set pagestyle \texttt{headings} or \texttt{myheadings}. So it
+% would be possible to remove the \cs{ifx}\dots\cs{fi}-line above and
+% simply use \cs{ps@save@headings} or \cs{ps@save@myheadings} instead
+% of.
+% \end{macro}
+%
+%
+% \begin{macro}{\ps@scrplain}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0a}{2001/04/24}{\cs{strut} inserted}
+% \changes{v2.0f}{2001/06/23}{\cs{strut} inserted}
+% \changes{v2.1c}{2004/02/07}{thickness of footbelow line fixed}
+% \begin{macro}{\scrplain@even@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@even@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrplain@odd@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% After this, we can define the new pagestyles, first a new plain
+% one. It sould be variable and so we use macros to define the parts.
+% \begin{macrocode}
+\newcommand*{\ps@scrplain}{\let\ps@plain\ps@@scrplain\ps@plain}
+\newpagestyle{@scrplain}
+{%
+ (\scrplain@headabove@linelength,\scr@headabove@linethickness)
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrplain@even@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering\strut%
+ \scrplain@even@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrplain@even@right@head\strut}}}
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrplain@odd@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering%
+ \strut\scrplain@odd@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrplain@odd@right@head\strut}}}
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrplain@odd@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering%
+ \strut\scrplain@odd@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrplain@odd@right@head\strut}}}
+ (\scrplain@headbelow@linelength,\scr@headbelow@linethickness)
+}{%
+ (\scrplain@footabove@linelength,\scr@footabove@linethickness)
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrplain@even@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrplain@even@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrplain@even@right@foot\strut}}}
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrplain@odd@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrplain@odd@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrplain@odd@right@foot\strut}}}
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrplain@odd@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrplain@odd@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrplain@odd@right@foot\strut}}}
+ (\scrplain@footbelow@linelength,\scr@footbelow@linethickness)
+}
+\newcommand*{\scrplain@even@left@head}{}
+\newcommand*{\scrplain@even@middle@head}{}
+\newcommand*{\scrplain@even@right@head}{}
+\newcommand*{\scrplain@odd@left@head}{}
+\newcommand*{\scrplain@odd@middle@head}{}
+\newcommand*{\scrplain@odd@right@head}{}
+\newcommand*{\scrplain@even@left@foot}{}
+\newcommand*{\scrplain@even@middle@foot}{}
+\newcommand*{\scrplain@even@right@foot}{}
+\newcommand*{\scrplain@odd@left@foot}{}
+\newcommand*{\scrplain@odd@middle@foot}{}
+\newcommand*{\scrplain@odd@right@foot}{}
+% \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}{\ps@scrheadings}
+% \changes{v2.0}{2001/04/20}{New}
+% \changes{v2.0a}{2001/04/24}{\cs{strut} inserted}
+% \changes{v2.0f}{2001/06/23}{\cs{strut} inserted}
+% \begin{macro}{\scrheadings@even@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@left@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@middle@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@right@head}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@even@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@left@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@middle@foot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\scrheadings@odd@right@foot}
+% \changes{v2.0}{2001/04/20}{New}
+%
+% We also define define a new headings one. It sould be variable and
+% so we use macros to define the parts. But we need an \emph{also
+% action}, so we first define a inner pagestyle and then use this at a
+% outer one (definition is done in reverse order):
+% \begin{macrocode}
+\newcommand*{\ps@scrheadings}{\let\ps@plain\ps@scrplain\ps@@scrheadings}
+\newpagestyle{@scrheadings}
+{%
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrheadings@even@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering%
+ \strut\scrheadings@even@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrheadings@even@right@head\strut}}}
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrheadings@odd@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering%
+ \strut\scrheadings@odd@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrheadings@odd@right@head\strut}}}
+ {%
+ \rlap{\parbox{\@headwidth}{\raggedright%
+ \strut\scrheadings@odd@left@head\strut}}%
+ \hfill%
+ \parbox{\@headwidth}{\centering%
+ \strut\scrheadings@odd@middle@head\strut}%
+ \hfill%
+ \llap{\parbox{\@headwidth}{\raggedleft%
+ \strut\scrheadings@odd@right@head\strut}}}}
+{%
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrheadings@even@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrheadings@even@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrheadings@even@right@foot\strut}}}
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrheadings@odd@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrheadings@odd@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrheadings@odd@right@foot\strut}}}
+ {%
+ \rlap{\parbox{\@footwidth}{\raggedright%
+ \strut\scrheadings@odd@left@foot\strut}}%
+ \hfill%
+ \parbox{\@footwidth}{\centering%
+ \strut\scrheadings@odd@middle@foot\strut}%
+ \hfill%
+ \llap{\parbox{\@footwidth}{\raggedleft%
+ \strut\scrheadings@odd@right@foot\strut}}}}
+\newcommand*{\scrheadings@even@left@head}{}
+\newcommand*{\scrheadings@even@middle@head}{}
+\newcommand*{\scrheadings@even@right@head}{}
+\newcommand*{\scrheadings@odd@left@head}{}
+\newcommand*{\scrheadings@odd@middle@head}{}
+\newcommand*{\scrheadings@odd@right@head}{}
+\newcommand*{\scrheadings@even@left@foot}{}
+\newcommand*{\scrheadings@even@middle@foot}{}
+\newcommand*{\scrheadings@even@right@foot}{}
+\newcommand*{\scrheadings@odd@left@foot}{}
+\newcommand*{\scrheadings@odd@middle@foot}{}
+\newcommand*{\scrheadings@odd@right@foot}{}
+% \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}{\ihead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\ohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\chead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\lehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\lohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\rehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\rohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\cehead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\cohead}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\ifoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\ofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\cfoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\lefoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\lofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\refoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\rofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\cefoot}
+% \changes{v2.0}{2001/04/20}{New}
+% \begin{macro}{\cofoot}
+% \changes{v2.0}{2001/04/20}{New}
+% We also need macros to define the contents of the three part head
+% and foot. Each macro defines one of the part of head or foot of the
+% scrheadings pagestyle and optional of the scrplain pagestyle.
+% \begin{macrocode}
+\newcommand{\ihead}{\@ifnextchar[{\@@lhead}{\@lhead}}
+\newcommand{\@lhead}[1]{\@rehead{#1}\@lohead{#1}}
+\newcommand{\@@lhead}[2][]{\@@rehead[{#1}]{#2}\@@lohead[{#1}]{#2}}
+\newcommand{\ohead}{\@ifnextchar[{\@@rhead}{\@rhead}}
+\newcommand{\@rhead}[1]{\@lehead{#1}\@rohead{#1}}
+\newcommand{\@@rhead}[2][]{\@@lehead[{#1}]{#2}\@@rohead[{#1}]{#2}}
+\newcommand{\chead}{\@ifnextchar[{\@@chead}{\@chead}}
+\newcommand{\@chead}[1]{\@cehead{#1}\@cohead{#1}}
+\newcommand{\@@chead}[2][]{\@@cehead[{#1}]{#2}\@@cohead[{#1}]{#2}}
+\newcommand{\lehead}{\@ifnextchar[{\@@lehead}{\@lehead}}
+\newcommand{\@lehead}[1]{\renewcommand*{\scrheadings@even@left@head}{#1}}
+\newcommand{\@@lehead}[2][]{%
+ \renewcommand*{\scrplain@even@left@head}{#1}%
+ \renewcommand*{\scrheadings@even@left@head}{#2}}
+\newcommand{\lohead}{\@ifnextchar[{\@@lohead}{\@lohead}}
+\newcommand{\@lohead}[1]{\renewcommand*{\scrheadings@odd@left@head}{#1}}
+\newcommand{\@@lohead}[2][]{%
+ \renewcommand*{\scrplain@odd@left@head}{#1}%
+ \renewcommand*{\scrheadings@odd@left@head}{#2}}
+\newcommand{\rehead}{\@ifnextchar[{\@@rehead}{\@rehead}}
+\newcommand{\@rehead}[1]{\renewcommand*{\scrheadings@even@right@head}{#1}}
+\newcommand{\@@rehead}[2][]{%
+ \renewcommand*{\scrplain@even@right@head}{#1}%
+ \renewcommand*{\scrheadings@even@right@head}{#2}}
+\newcommand{\rohead}{\@ifnextchar[{\@@rohead}{\@rohead}}
+\newcommand{\@rohead}[1]{\renewcommand*{\scrheadings@odd@right@head}{#1}}
+\newcommand{\@@rohead}[2][]{%
+ \renewcommand*{\scrplain@odd@right@head}{#1}%
+ \renewcommand*{\scrheadings@odd@right@head}{#2}}
+\newcommand{\cehead}{\@ifnextchar[{\@@cehead}{\@cehead}}
+\newcommand{\@cehead}[1]{\renewcommand*{\scrheadings@even@middle@head}{#1}}
+\newcommand{\@@cehead}[2][]{%
+ \renewcommand*{\scrplain@even@middle@head}{#1}%
+ \renewcommand*{\scrheadings@even@middle@head}{#2}}
+\newcommand{\cohead}{\@ifnextchar[{\@@cohead}{\@cohead}}
+\newcommand{\@cohead}[1]{\renewcommand*{\scrheadings@odd@middle@head}{#1}}
+\newcommand{\@@cohead}[2][]{%
+ \renewcommand*{\scrplain@odd@middle@head}{#1}%
+ \renewcommand*{\scrheadings@odd@middle@head}{#2}}
+\newcommand{\ifoot}{\@ifnextchar[{\@@lfoot}{\@lfoot}}
+\newcommand{\@lfoot}[1]{\@refoot{#1}\@lofoot{#1}}
+\newcommand{\@@lfoot}[2][]{\@@refoot[{#1}]{#2}\@@lofoot[{#1}]{#2}}
+\newcommand{\ofoot}{\@ifnextchar[{\@@rfoot}{\@rfoot}}
+\newcommand{\@rfoot}[1]{\@lefoot{#1}\@rofoot{#1}}
+\newcommand{\@@rfoot}[2][]{\@@lefoot[{#1}]{#2}\@@rofoot[{#1}]{#2}}
+\newcommand{\cfoot}{\@ifnextchar[{\@@cfoot}{\@cfoot}}
+\newcommand{\@cfoot}[1]{\@cefoot{#1}\@cofoot{#1}}
+\newcommand{\@@cfoot}[2][]{\@@cefoot[{#1}]{#2}\@@cofoot[{#1}]{#2}}
+\newcommand{\lefoot}{\@ifnextchar[{\@@lefoot}{\@lefoot}}
+\newcommand{\@lefoot}[1]{\renewcommand*{\scrheadings@even@left@foot}{#1}}
+\newcommand{\@@lefoot}[2][]{%
+ \renewcommand*{\scrplain@even@left@foot}{#1}%
+ \renewcommand*{\scrheadings@even@left@foot}{#2}}
+\newcommand{\lofoot}{\@ifnextchar[{\@@lofoot}{\@lofoot}}
+\newcommand{\@lofoot}[1]{\renewcommand*{\scrheadings@odd@left@foot}{#1}}
+\newcommand{\@@lofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@left@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@left@foot}{#2}}
+\newcommand{\refoot}{\@ifnextchar[{\@@refoot}{\@refoot}}
+\newcommand{\@refoot}[1]{\renewcommand*{\scrheadings@even@right@foot}{#1}}
+\newcommand{\@@refoot}[2][]{%
+ \renewcommand*{\scrplain@even@right@foot}{#1}%
+ \renewcommand*{\scrheadings@even@right@foot}{#2}}
+\newcommand{\rofoot}{\@ifnextchar[{\@@rofoot}{\@rofoot}}
+\newcommand{\@rofoot}[1]{\renewcommand*{\scrheadings@odd@right@foot}{#1}}
+\newcommand{\@@rofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@right@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@right@foot}{#2}}
+\newcommand{\cefoot}{\@ifnextchar[{\@@cefoot}{\@cefoot}}
+\newcommand{\@cefoot}[1]{\renewcommand*{\scrheadings@even@middle@foot}{#1}}
+\newcommand{\@@cefoot}[2][]{%
+ \renewcommand*{\scrplain@even@middle@foot}{#1}%
+ \renewcommand*{\scrheadings@even@middle@foot}{#2}}
+\newcommand{\cofoot}{\@ifnextchar[{\@@cofoot}{\@cofoot}}
+\newcommand{\@cofoot}[1]{\renewcommand*{\scrheadings@odd@middle@foot}{#1}}
+\newcommand{\@@cofoot}[2][]{%
+ \renewcommand*{\scrplain@odd@middle@foot}{#1}%
+ \renewcommand*{\scrheadings@odd@middle@foot}{#2}}
+% \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}
+%
+% \begin{macro}{\clearscrheadings}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{macro}{\clearscrheadfoot}
+% \changes{v2.0j}{2001/08/18}{New}
+% \begin{macro}{\clearscrpain}
+% \changes{v2.0j}{2001/08/18}{New}
+% Maybe you want to clear the currently defined head and foot. First
+% let's clear only scrheadings pagestyle but not scrplain pagestyle.
+% We do this simply using the already known command:
+% \begin{macrocode}
+\newcommand*{\clearscrheadings}{%
+ \ihead{}\chead{}\ohead{}\ifoot{}\cfoot{}\ofoot{}}
+% \end{macrocode}
+% We can do almost the same to clear scrheadings pagestyle and
+% scrplain pagestyle together:
+% \begin{macrocode}
+\newcommand*{\clearscrheadfoot}{%
+ \ihead[]{}\chead[]{}\ohead[]{}\ifoot[]{}\cfoot[]{}\ofoot[]{}}
+% \end{macrocode}
+% But, for only clearing the scrplain pagestyle, we have to do the
+% redefinition directly:
+% \begin{macrocode}
+\newcommand*{\clearscrplain}{%
+ \renewcommand*{\scrplain@even@left@head}{}
+ \renewcommand*{\scrplain@even@middle@head}{}
+ \renewcommand*{\scrplain@even@right@head}{}
+ \renewcommand*{\scrplain@odd@left@head}{}
+ \renewcommand*{\scrplain@odd@middle@head}{}
+ \renewcommand*{\scrplain@odd@right@head}{}
+ \renewcommand*{\scrplain@even@left@foot}{}
+ \renewcommand*{\scrplain@even@middle@foot}{}
+ \renewcommand*{\scrplain@even@right@foot}{}
+ \renewcommand*{\scrplain@odd@left@foot}{}
+ \renewcommand*{\scrplain@odd@middle@foot}{}
+ \renewcommand*{\scrplain@odd@right@foot}{}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% Let's do the default setting:
+% \changes{v2.0m}{2002/02/05}{Neue Briefklasse \texttt{scrlttr2}
+% wird aktiv unterst"utzt}
+% \begin{macrocode}
+\def\@tempa{koma}\ifx\scrheadings@style\@tempa
+ \@ifclassloaded{scrlttr2}{%
+ \ifcase\@pageat
+ \lehead[\pagemark]{\pagemark}\lohead[\pagemark]{\pagemark}%
+ \chead{\rightmark}%
+ \rehead{\leftmark}\lohead{\leftmark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \chead[\pagemark]{\pagemark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \chead{\rightmark}%
+ \rehead[\pagemark]{\pagemark}\rohead[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \lefoot[\pagemark]{\pagemark}\lofoot[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \cfoot[\pagemark]{\pagemark}%
+ \or
+ \lehead{\leftmark}\lohead{\leftmark}%
+ \rehead{\rightmark}\rohead{\rightmark}%
+ \refoot[\pagemark]{\pagemark}\rofoot[\pagemark]{\pagemark}%
+ \fi
+ \let\ps@save@myheadings=\ps@save@headings
+ }{%
+ \ohead{\if@twoside\headmark\fi}%
+ \chead{\if@twoside\else\headmark\fi}%
+ \cfoot[\if@twoside\else\pagemark\fi]{\if@twoside\else\pagemark\fi}%
+ \ofoot[\if@twoside\pagemark\fi]{\if@twoside\pagemark\fi}%
+ }%
+\else\def\@tempa{standard}\ifx\scrheadings@style\@tempa
+ \ihead{\headmark}
+ \ohead{\pagemark}
+ \cfoot[\pagemark]{}
+ \else\PackageErrorNoLine{scrpage2}{unknown scrheadings style}
+ {Somehow \string\scrheadings@style was
+ defined\MessageBreak
+ as ``\scrheadings@style''.\MessageBreak
+ scrpage2 doesn't know what to do.
+ If you'll continue, pagestyle
+ ``scrheadings''\MessageBreak
+ will be predefined empty}
+\fi\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup\expandafter
+\ifx\csname chaptermark\endcsname\relax
+ \begingroup\expandafter\expandafter\expandafter\endgroup\expandafter
+ \ifx\csname sectionmark\endcsname\relax
+ \ifx\@mkboth\markboth\@automarktrue\fi
+ \else
+ \ifx\sectionmark\@gobble\else\@automarktrue\fi
+ \fi
+\else
+ \ifx\chaptermark\@gobble\else\@automarktrue\fi
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</v2>
+% \end{macrocode}
+%
+%
+% \subsection{Configurationfile}
+% Not last and not least we include the local configuration-file
+% \texttt{scrpage.cfg}, if it exists.
+% \begin{macrocode}
+\InputIfFileExists{scrpage.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file scrpage.cfg used^^J%
+ *************************************}}
+ {}
+% \end{macrocode}
+%
+%
+% \subsection{Some checks}
+% \changes{v2.0}{2001/04/20}{\cs{headheight}-check}
+% Last but not least we do some checks at version 2. Some means one at
+% the moment. And the one is a check, if the \cs{headheight} should be
+% increased.
+% \begin{macrocode}
+%<*v2>
+\AtBeginDocument{
+ \ifdim\headheight=12pt
+ \PackageWarningNoLine{scrpage2}
+ {seems you are using a constant headheight.\MessageBreak
+ If you get overfull \string\vbox\space warnings at almost every%
+ \MessageBreak
+ page, you should increase headheight e.g. writing\MessageBreak
+ \space\string\setlength{\string\headheight}{%
+ 1.1\string\baselineskip}\MessageBreak
+ into the preamble of your document.\MessageBreak
+ A better solution would be to use typearea package}
+ \else\ifdim\headheight<1.07\baselineskip
+ \PackageWarningNoLine{scrpage2}
+ {seems you are using a very small headheight.\MessageBreak
+ If you get overfull \string\vbox\space warnings at almost every%
+ \MessageBreak
+ page, you should increase headheight e.g. writing\MessageBreak
+ \space\string\setlength{\string\headheight}{%
+ 1.1\string\baselineskip}\MessageBreak
+ into the preamble of your document.\MessageBreak
+ A better solution would be to use typearea package}
+ \fi\fi}
+%</v2>
+% \end{macrocode}
+%
+% \def\englishonly{}
+% \input{scrlogo.dtx}
+%
+% \subsection{End}
+% \begin{macrocode}
+%</scrpage>
+% \end{macrocode}
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrpage.dtx'
+
+%%% Local Variables:
+%%% mode: latex
+%%% Text-master: t
+%%% End: