]>
Commit | Line | Data |
---|---|---|
1 | % fancyheadings.sty version 1.92 | |
2 | % Fancy headers and footers. | |
3 | % Piet van Oostrum, Dept of Computer Science, University of Utrecht | |
4 | % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands | |
5 | % Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!sun4nl!ruuinf!piet) | |
6 | % Sep 16, 1994 | |
7 | % version 1.4: Correction for use with \reversemargin | |
8 | % Sep 29, 1994: | |
9 | % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands | |
10 | % Oct 4, 1994: | |
11 | % version 1.6: Reset single spacing in headers/footers for use with | |
12 | % setspace.sty or doublespace.sty | |
13 | % Oct 4, 1994: | |
14 | % version 1.7: changed \let\@mkboth\markboth to | |
15 | % \def\@mkboth{\protect\markboth} to make it more robust | |
16 | % Dec 5, 1994: | |
17 | % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more | |
18 | % importantly) use the \chapter/sectionmark definitions from ps@headings if | |
19 | % they exist (which should be true for all standard classes). | |
20 | % May 31, 1995: | |
21 | % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... | |
22 | % construction in the doc did not work properly with the fancyplain style. | |
23 | % June 1, 1995: | |
24 | % version 1.91: The definition of \@mkboth wasn't restored on subsequent | |
25 | % \pagestyle{fancy}'s. | |
26 | % June 1, 1995: | |
27 | % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} | |
28 | % \pagestyle{fancy} would erroneously select the plain version. | |
29 | ||
30 | \def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}} | |
31 | \def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}} | |
32 | \def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}} | |
33 | ||
34 | \def\chead{\@ifnextchar[{\@xchead}{\@ychead}} | |
35 | \def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}} | |
36 | \def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}} | |
37 | ||
38 | \def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}} | |
39 | \def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}} | |
40 | \def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}} | |
41 | ||
42 | \def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}} | |
43 | \def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}} | |
44 | \def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}} | |
45 | ||
46 | \def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}} | |
47 | \def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}} | |
48 | \def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}} | |
49 | ||
50 | \def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}} | |
51 | \def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}} | |
52 | \def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}} | |
53 | ||
54 | \newdimen\headrulewidth | |
55 | \newdimen\footrulewidth | |
56 | \newdimen\plainheadrulewidth | |
57 | \newdimen\plainfootrulewidth | |
58 | \newdimen\headwidth | |
59 | \newif\if@fancyplain | |
60 | \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} | |
61 | ||
62 | % Command to reset various things in the headers: | |
63 | % a.o. single spacing (taken from setspace.sty) | |
64 | % and the catcode of ^^M (so that epsf files in the header work if a | |
65 | % verbatim crosses a page boundary) | |
66 | \def\fancy@reset{\restorecr | |
67 | \def\baselinestretch{1}% | |
68 | \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e | |
69 | \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi% | |
70 | \else% NFSS (2.09) present | |
71 | \@newbaseline% | |
72 | \fi} | |
73 | ||
74 | % Initialization of the head and foot text. | |
75 | ||
76 | \headrulewidth 0.4pt | |
77 | \footrulewidth\z@ | |
78 | \plainheadrulewidth\z@ | |
79 | \plainfootrulewidth\z@ | |
80 | ||
81 | \lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}} | |
82 | % i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages | |
83 | \chead{} | |
84 | \rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}} | |
85 | % i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages | |
86 | \lfoot{} | |
87 | \cfoot{\rm\thepage} % page number | |
88 | \rfoot{} | |
89 | ||
90 | % Put together a header or footer given the left, center and | |
91 | % right text, fillers at left and right and a rule. | |
92 | % The \lap commands put the text into an hbox of zero size, | |
93 | % so overlapping text does not generate an errormessage. | |
94 | ||
95 | \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox | |
96 | {\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill | |
97 | \parbox[b]{\headwidth}{\centering#3\strut}\hfill | |
98 | \llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} | |
99 | ||
100 | ||
101 | \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule | |
102 | \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill | |
103 | \parbox[t]{\headwidth}{\centering#3\strut}\hfill | |
104 | \llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} | |
105 | ||
106 | \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi | |
107 | \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} | |
108 | ||
109 | \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi | |
110 | \vskip-0.3\normalbaselineskip\vskip-\footrulewidth | |
111 | \hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}} | |
112 | ||
113 | \def\ps@fancy{% | |
114 | \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook | |
115 | \@ifundefined{chapter}{\def\sectionmark##1{\markboth | |
116 | {\uppercase{\ifnum \c@secnumdepth>\z@ | |
117 | \thesection\hskip 1em\relax \fi ##1}}{}}% | |
118 | \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne | |
119 | \thesubsection\hskip 1em\relax \fi ##1}}}% | |
120 | {\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne | |
121 | \@chapapp\ \thechapter. \ \fi ##1}}{}} | |
122 | \def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ | |
123 | \thesection. \ \fi ##1}}}}% | |
124 | \csname ps@headings\endcsname % use \ps@headings defaults if they exist | |
125 | \ps@@fancy | |
126 | \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% | |
127 | \headwidth\textwidth} | |
128 | \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} | |
129 | \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} | |
130 | \def\ps@@fancy{% | |
131 | \def\@mkboth{\protect\markboth}% | |
132 | \def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}% | |
133 | \def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}% | |
134 | \def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}% | |
135 | \def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}% | |
136 | } | |
137 | \def\@lodd{\if@reversemargin\hss\else\relax\fi} | |
138 | \def\@rodd{\if@reversemargin\relax\else\hss\fi} | |
139 | ||
140 | \let\latex@makecol\@makecol | |
141 | \def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} | |
142 | \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} | |
143 | \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} | |
144 | \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} | |
145 |