piet@ruuinf (Piet van Oostrum) (03/17/89)
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. 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-RHEAD}. 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{} %______________________________CUT_HERE______________________________ % fancyheadings.sty version 1.0 % 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) % March, 1989. \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}}}} \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} \headwidth\textwidth} \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} \def\ps@plain@fancy{\@fancyplaintrue\ps@fancy} %______________________________CUT_HERE______________________________ -- 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)
piet@ruuinf (Piet van Oostrum) (03/17/89)
In article <1205@ruuinf.UUCP>, piet@ruuinf (Piet van Oostrum) writes:
`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-RHEAD}.
^^^^^ should be LHEAD.
--
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)
williamssi@.ucalgary.ca (Simon Williams) (03/24/89)
Recently fancyheadings.sty was posted to this news group In article <1205@ruuinf.UUCP> piet@ruuinf (Piet van Oostrum) writes: >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 > >[More documentation, and the style file deleted] I found this documentstyle very useful and easy to use. However for every page of output it generates an "Overfull \vbox (12.64993pt too high) has occurred while \output is active" I can trace the vbox to the \@fancyhead definition. But not being a TeX/LaTeX hacker I haven't a clue how to solve it. Any suggestions or fixes? Cheers, Simon
hartzell@tigger (George Hartzell) (03/26/89)
In article <952@cs-spool.calgary.UUCP>, williamssi@.ucalgary (Simon Williams) writes: >... >I found this documentstyle very useful and easy to use. However for >every page of output it generates an "Overfull \vbox (12.64993pt too >high) has occurred while \output is active" > >I can trace the vbox to the \@fancyhead definition. But not being a >TeX/LaTeX hacker I haven't a clue how to solve it. Any suggestions or >fixes? > The document style that you are using probably sets the value of \headheight to something smaller than the vertical size of the box you are using for your fancy headings. Look through the source for your style and see what the setting is for \headheight. Try increasing it in the preamble of your document and see if things work better. g. -- George Hartzell (303) 492-4535 MCD Biology, University of Colorado-Boulder, Boulder, CO 80309 hartzell@Boulder.Colorado.EDU ..!{ncar,nbires}!boulder!hartzell
piet@cs.ruu.nl (Piet van Oostrum) (03/28/89)
In article <952@cs-spool.calgary.UUCP>, williamssi@.ucalgary (Simon Williams) writes:
`Recently fancyheadings.sty was posted to this news group
However for
`every page of output it generates an "Overfull \vbox (12.64993pt too
`high) has occurred while \output is active"
`
From the doc:
Note that if you do this you
will probably have to increase the \headheight or \footskip lengths.
Good luck!
--
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)