summaryrefslogtreecommitdiff
path: root/macros/inrstex/inrstex/pagsty.tex
blob: 6eb11e719e62c1844aa848923fe9660b01d9d000 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
%-*-tex-*-
% Copyright Michael J. Ferguson, INRS-Telecommunications
% All rights reserved. 

% =========== Document Styles, Page Numbering and Page Sizes ======
% These are the macros for setting page sizes nad the various flags 
% the header/footer styles 



% ============== Document Style =============
% Such things as page sizes, header/footer fonts headers and footers should
% be active for an entire document. \documentstyle  is defined so that the
% correct switches are in force to control the document. In addition
% a \setpagesizes causes any page size changes to be made.

\newif\ifd@ocsty  % switch for document style

\def\documentstyle#1{\d@ocstytrue 
                     #1\setpagesizes\d@ocstyfalse}
% this is not done inside a group because the various assignments cannot be
% defined global 

% The switch \d@ocsty is used in to control the locality of the 
% various page styles. 





%====== page numbering ==========
\newif\ifp@agenoadv  % determines whether to advance the page number
\def\nopagenumberadvance{\p@agenoadvfalse}  % lasts for one page
\p@agenoadvtrue  % defaults to advanceing on first page
\def\n@egpagno{\global\multiply\pageno by -1 \relax}
\def\romanpagenumber{\afterassignment\n@egpagno \global\pageno }
\def\pagenumber{\global\pageno }






% ===== Macros for setting page sizes ====== 
% Pages involve margins, headers, footers, and column sizes. 
% These set the styles and flags for single and multicolumn.

% ======= dimensions for pages headers etc ======
% the simple output fixes the header and footer size but allows
% for the header and footer to be killed as required.
\newdimen\hpapersize %\hpapersize= 8.5in
\newdimen\vpapersize %\vpapersize= 11.5in
\newdimen\vouterpagesize 
\newdimen\houterpagesize 
\newdimen\vinnerpagesize 
\newdimen\hinnerpagesize 
\newdimen\hcolumnsize
\newdimen\vcolumnsize
\newdimen\topmarginsize 
\newdimen\leftmarginsize
\newdimen\vheadersize 
\newdimen\vfootersize

% ===== Historical compatibilities =====
\let\leftmargin=\leftmarginsize
\let\topmargin=\topmarginsize

% ===== Margin Macros ======
\def\leftmarginskip{\hskip \leftmarginsize}
\def\topmarginskip{\vskip \topmarginsize}

%======= page style forms  ====== 

\newcount\p@agetype \p@agetype=2  %normal ... not used 
\newcount\h@eadertype \h@eadertype=2 %normal
\newcount\f@ootertype \f@ootertype=2 %normal


% ----- General forms  for multicolumn -------
\def\c@ompvinnersize{\dimen0 = \vouterpagesize
                   \ifcase\h@eadertype \relax % delete header
                          \else \advance \dimen0  by -\vheadersize \fi
                   \ifcase\f@ootertype \relax % delete footer
                           \else \advance\dimen0  by -\vfootersize \fi
                   \global\vinnerpagesize = \dimen0
                   \ifb@alance \global\vcolumnsize = \b@alancevsize
                      \else
                        \advance\dimen0 by -\ht\t@opmultibox
                        \advance\dimen0 by -\ht\b@otmultibox \relax
\tmessage{Vcolsize - vc:\the\dimen0 - vt:\the\ht\t@opmultibox - vb:\the\ht\b@otmultibox - bs:\the\b@alancevsize - }
                        \global\vcolumnsize=\dimen0
                      \fi}

\def\s@etvsize{\global\vsize=\vcolumnsize}

% columnsize = (hinnerpagsize  - (numcols-1)intercol)/numcol

\def\c@omphinnersize{\dimen0 = \houterpagesize
                     \advance\dimen0 by -\firstcolumnoffset
                     \advance\dimen0 by -\firstcolumnoffset \relax
                     \global\hinnerpagesize = \dimen0}

\def\s@ethsize{\setbox0=\hbox{\the\intercolumnsep}
                     \dimen0= \numcolumns\wd0 %\the\dimen0
                     \advance\dimen0 by -\wd0 %\the\dimen0
                     \dimen2 = \hinnerpagesize %\the\dimen2
                     \advance\dimen2 by -\dimen0 %\the\dimen0
                     \divide\dimen2 by \numcolumns \relax
                     \global\hcolumnsize = \dimen2
                     \global\hsize = \hcolumnsize}
\def\c@omputevsize{\c@ompvinnersize\s@etvsize}
\def\c@omputehsize{\c@omphinnersize\s@ethsize}
\def\setpagesizes{\c@omputevsize \c@omputehsize}



% ==== headers, footers, pagestyles ========


\newtoks\h@eaderline \newtoks\headertext \newtoks\specialheadertext
\long\def\h@eaderform {\vbox to \vheadersize
                         {\hsize\houterpagesize \headerfont
                          \testhrule
                          \the\h@eaderline\par\vfil\testhrule}\relax}

\newtoks\f@ooterline    \newtoks\footertext \newtoks\specialfootertext
\long\def\f@ooterform{ \vbox to \vfootersize
                         {\hsize\houterpagesize \footerfont
                          \testhrule
                          \vfil
                          \the\f@ooterline\par\testhrule}\relax}
\def\m@akeheadertext{\ifcase\h@eadertype \relax  % deleted
                            \or \vskip \vheadersize % blanked
                            \or \let\h@eaderline = \headertext \h@eaderform
                            \or \let\h@eaderline = \specialheadertext
                                     \h@eaderform \fi
                     }
\def\m@akefootertext{\ifcase\f@ootertype \relax  % deleted
                            \or \vskip \vfootersize % blanked
                            \or \let\f@ooterline=\footertext \f@ooterform 
                            \or \let\f@ooterline=\specialfootertext 
                                    \f@ooterform \fi
                     }

%=== these last only for one page and are reset by output routine ====
\def\blankheaderstyle{\global\h@eadertype = 1 
                      \ifd@ocsty \global\d@ocumentheader = 1 \fi\c@omputevsize}
\def\normalheaderstyle{\global\h@eadertype= 2 
                      \ifd@ocsty \global\d@ocumentheader = 2 \fi\c@omputevsize}
\def\noheaderstyle{\global\h@eadertype =0 
                      \ifd@ocsty \global\d@ocumentheader = 0 \fi\c@omputevsize}
\def\blankfooterstyle{\global\f@ootertype = 1 
                      \ifd@ocsty \global\d@ocumentfooter = 1 \fi\c@omputevsize}
\def\normalfooterstyle{\global\f@ootertype =2 
                      \ifd@ocsty \global\d@ocumentfooter = 2 \fi\c@omputevsize}
\def\nofooterstyle{\global\f@ootertype =0 
                      \ifd@ocsty \global\d@ocumentfooter = 0 \fi\c@omputevsize}
\let\specialheaderstyle=\normalheaderstyle % default
\let\specialfooterstyle=\normalfooterstyle % default

% ----- some convenient combinations -----
\def\titlepagestyle{\global\p@agetype=1 \blankheaderstyle
                     \blankfooterstyle}
\def\normalpagestyle{\global\p@agetype =2 \normalheaderstyle 
                      \normalfooterstyle}

\def\specialpagestyle{\global\p@agetype =2 \specialheaderstyle
                      \specialfooterstyle}
\def\fullpagestyle{\global\p@agetype =0 \noheaderstyle
                    \nofooterstyle}




% ======== #1 is one of \<...>style --- reset values for output routine
\newcount\d@ocumentheader
\newcount\d@ocumentfooter