%
%--------------------------- fancyheadings.doc ---------------------------
%Here is a documentstylestyle option that allows you to customize your
%page headers and footers in an easy way. It combines features that were
%separately available in other pagestyles, without introducing much
%complexity. You can define:
%    - three-part headers and footers
%    - rules in header and footer
%    - headers and footers wider than \textwidth
%    - multiline headers and footers
%    - separate headers and footers for even and odd pages
%    - separate headers and footers for chapter pages
%
%To use this pagestyle, you must include the ``fancyheadings'' style
%option in your \documentstyle, and issue the \pagestyle{fancy} command.
%The \pagestyle{fancy} command should be issued after any changes made to
%\textwidth.
%
%The page layout will be as follows:
%
%		LHEAD          CHEAD          RHEAD
%		----------------------------------- (rule)
%
%			     page body
%
%
%		----------------------------------- (rule)
%		LFOOT	       CFOOT	      RFOOT
%
%The L-fields will be leftadjusted, the C-fields centered and the
%R-fields rightadjusted.
%Each of the six fields and the two rules can be defined separately.
%
%Simple use:
%
%The header and footer fields can be defined by commands \lhead{LHEAD}
%and so on for the other fields. If the field depends on something in the
%document (e.g. section titles) you must in general use the \markboth and
%\markright commands, otherwise a title may end on the wrong page. You
%can do this e.g. by redefining the commands \chaptermark, \sectionmark
%and so on (see example below). The defaults for these marks are as in
%the standard pagestyles. The marks can be put into a header or footer
%field by referencing \leftmark and \rightmark.
%
%Rules in header and footer
%
%The thickness of the rules below the header and above the footer can be
%changed by redefining the length parameters \headrulewidth (default
%0.4pt) and \footrulewidth (default 0). These may be redefined by the
%\setlength command. A thickness of 0pt makes the rule invisible.
%If you want to make more complicated changes, you have to redefine the
%commands \headrule and/or \footrule.
%
%E.g. If you want a dotted line rather than a ruler you can give the
%command:
%\renewcommand{\headrule}{\vbox to 0pt{\hbox to\headwidth{\dotfill}\vss}}
%
%Headers and footers wider than \textwidth
%
%The headers and footers are set in a box of width \headwidth. The
%default for this is the value of \textwidth. You can make it wider (or
%smaller) by redefining \headwidth with the \setlength or \addtolength
%command. The headers and footers will stick out the page on the same
%side as the marginal notes. For example to include the marginal notes,
%add both \marginparsep and \marginparwidth to \headwidth (see also the
%example below).
%
%Multiline headers and footers
%
%Each of the six fields is set in an appropriate parbox, so you can put a
%multiline part in it with the \\ command. It is also possible to put
%extra space in it with the \vspace command. Note that if you do this you
%will probably have to increase the \headheight or \footskip lengths.
%
%Separate headers and footers for even and odd pages
%
%If you want the headers and footers to be different on even- and
%odd-numbered pages in the ``twoside'' style, the field-defining macros
%can be given an optional argument, to be used on the even-numbered
%pages, like \lhead[EVEN-LHEAD]{ODD-LHEAD}.
%
%Separate headers and footers for chapter pages
%
%LaTeX gives a \thispagestyle{plain} command for the first page of the
%document, the first page of each chapter and a couple of other pages. It
%might be incompatible with your pagestyle. In this case you can use a
%slightly different version of the pagestyle, called \pagestyle{fancyplain}. 
%This pagestyle redefines the pagestyle ``plain'' to also use pagestyle
%``fancy'' with the following modifications:
%    - the thicknesses of the rules is defined by \plainheadrulewidth and
%      \plainfootrulewidth (both default 0).
%    - the 6 fields may be defined separately for the plain pages by
%      giving them the value \fancyplain{PLAIN-VALUE}{NORMAL-VALUE}. This
%      construct may be used in both the optional argument and the normal
%      argument. Thus \lhead[\fancyplain{F1}{F2}]{\fancyplain{F3}{F4}}
%      specifies the LHEAD value in a two-sided document:
%	F1 on an even-numbered ``plain'' page
%	F2 on an even-numbered normal page
%	F3 on an odd-numbered ``plain'' page
%	F4 on an odd-numbered normal page.
%
%Defaults:
%
%\headrulewidth 	      0.4pt
%\footrulewidth		0pt
%\plainheadrulewidth	0pt
%\plainfootrulewidth	0pt
%
%\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
%%  i.e. empty on ``plain'' pages \rightmark on even, \leftmark on odd pages
%\chead{}
%\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
%%  i.e. empty on ``plain'' pages \leftmark on even, \rightmark on odd pages
%\lfoot{}
%\cfoot{\rm\thepage} % page number
%\rfoot{}
%
%Examples:
%
%To put two lines containing the section title and the subsection title
%in the righthandside corner, use:
%
%\documentstyle[fancyheadings]{article}
%\pagestyle{fancy}
%\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
%\renewcommand{\subsectionmark}[1]{\markright{#1}}
%\rfoot{\leftmark\\\rightmark}
%
%The following definitions give an approximation of the style used in the
%LaTeX book:
%
%\documentstyle[fancyheadings]{book}
%\pagestyle{fancyplain}
%\addtolength{\headwidth}{\marginparsep}
%\addtolength{\headwidth}{\marginparwidth}
%\renewcommand{\chaptermark}[1]{\markboth{#1}{#1}} % remember chapter title
%\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
%                                                % section number and title
%\lhead[\fancyplain{}{\bf\thepage}]{\fancyplain{}{\bf\rightmark}}
%\rhead[\fancyplain{}{\bf\leftmark}]{\fancyplain{}{\bf\thepage}}
%\cfoot{}
%
%Using section titles etc. in the headers and/or footers:
%
%You can't just change the header and/or footer fields in the middle of some
%text (e.g. after a section header). This is because TeX may have processed
%a bit more text before deciding to make up the page. It may have passed a
%section beginning, causing the wrong title on the page.  TeX has a
%mechanism called 'marks' to solve this problem.  There is in LaTeX a
%\leftmark and a \rightmark. Usually \leftmark is a chapter title and
%\rightmark is a section title. To set the marks there are two commands:
%\markboth{L}{R} sets the \leftmark to L and the rightmark to R, and
%\rightmark{R} sets only the rightmark to R.
%The default definitions of \section etc. do this already for you.
%
%An example follows:
%
%	left page						right page
%	---------						----------
%
%2	     CHAPTER 1. Introduction | 1.2 Some section                        3
%------------------------------------ | -----------------------------------------
%                                     |
%Text                                 | more text
%Text                                 | more text
%Text                                 | more text
%                                     |
%                                     |
%                                     |
%
%This can be easily done with fancyheadings as follows:
%
%\pagestyle{fancy}
%\setlength{\headrulewidth}{1pt}
%\lhead[\rm\thepage]{\sl\rightmark}
%\rhead[\sl\leftmark]{\rm\thepage}
%
%This specifies that on even pages (the [] parts) the leftheadpart is page
%number and rightheadpart is \leftmark, which is the chapter title (because that
%is given as the left argument of \markboth (see page 162 of the LaTeX book)
%
%On odd pages (the parts between {}) the leftheadpart is \rightmark (which
%is the last section title because that is given as argument to \markright
%(see the same page), and the rightheadpart is the page no.
%
%Now suppose you don't want the section number and you want the section
%title in upper case:
%You add the following to your preamble:
%
%\renewcommand{\sectionmark}[1]{\markright{\uppercase{#1}}}
%
%Or if you don't want the chapter number but only the chapter title (not in
%uppercase):
%
%\renewcommand{\chaptermark}[1]{\markboth{#1}{ }}
%
%Note: the parameter in both cases is the (section|chapter) title.
%
%KNOWN PROBLEMS:
%
%Sometimes you will get a warning message from LaTeX concerning ``overfull
%vbox during output''. In this case you have to increase the \headheight or
%\footskip lengths or both (with \addtolength or \setlength).
%
%If you want to use fancyheadings with the letter style, you must put the
%following command in the beginning of your document:
%\mark{{}{}}
%--------------------------- fancyheadings.sty ---------------------------
%% fancyheadings.sty version 1.1
%% Fancy headers and footers.
%% Piet van Oostrum, Dept of Computer Science, University of Utrecht
%% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
%% Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet)
%% Sep 23, 1992.

\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}

\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}

\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}

\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}

\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}

\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}

\newdimen\headrulewidth
\newdimen\footrulewidth
\newdimen\plainheadrulewidth
\newdimen\plainfootrulewidth
\newdimen\headwidth
\newif\if@fancyplain \@fancyplainfalse
\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}

% Initialization of the head and foot text.

\headrulewidth 0.4pt
\footrulewidth\z@
\plainheadrulewidth\z@
\plainfootrulewidth\z@

\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
%  i.e. empty on ``plain'' pages \rightmark on even, \leftmark on odd pages
\chead{}
\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
%  i.e. empty on ``plain'' pages \leftmark on even, \rightmark on odd pages
\lfoot{}
\cfoot{\rm\thepage} % page number
\rfoot{}

% Put together a header or footer given the left, center and
% right text, fillers at left and right and a rule.
% The \lap commands put the text into an hbox of zero size,
% so overlapping text does not generate an errormessage.

\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox
{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
\parbox[b]{\headwidth}{\centering#3\strut}\hfill
\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}


\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule
\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
\parbox[t]{\headwidth}{\centering#3\strut}\hfill
\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}

\def\headrule{{\if@fancyplain\headrulewidth\plainheadrulewidth\fi
\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}

\def\footrule{{\if@fancyplain\footrulewidth\plainfootrulewidth\fi
\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}}

\def\ps@fancy{
\let\@mkboth\markboth
\@ifundefined{chapter}{\def\sectionmark##1{\markboth
{\uppercase{\ifnum \c@secnumdepth>\z@
 \thesection\hskip 1em\relax \fi ##1}}{}}
\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
 \thesubsection\hskip 1em\relax \fi ##1}}}
{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne
 \@chapapp\ \thechapter. \ \fi ##1}}{}}
\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@
 \thesection. \ \fi ##1}}}}
\ps@@fancy
\headwidth\textwidth}
\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
\def\ps@@fancy{
\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss}
\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss}
\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax}
\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax}
}
%-- 
%Piet* van Oostrum, Dept of Computer Science, Utrecht University,
%Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
%Telephone: +31 30 531806   Uucp:   uunet!mcsun!ruuinf!piet
%Telefax:   +31 30 513791   Internet:  piet@cs.ruu.nl   (*`Pete')
%

