% %--------------------------- 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') %