diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrpage.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/scrpage.dtx | 2588 |
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: |