blob: 6821339ec572182b8a607be5d3aeebbf23861beb (
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
|
% border.tex
% Author: James A. Brister
% Mon Jan 28 19:43:19 1991
%
% Macros to put black borders around a page in PLAIN TeX. The border is
% laid over the top of the page as it would normally be. Changes to
% \hoffset and \voffset do not affect where the border goes.
%
% To turn borders on use the command \borderson, to turn them off use
% \bordersoff.
%
% Interesting dimensions are:
%
% \borderindent the distance from the outside edge of the border to
% the paper edge. Default is 10 pts
% \borderwidth the width of the border. Default is 5pt
% \borderspace the (minimum) space between the inside edge of the
% border and the outside edge of the box containing
% all the page material. Default is 10pt. Not really
% useful in this context though, because it implies the
% internal box will be shifted, but the size
% of the internal box is adjusted to allow for this
% dimension. The macro that uses it (boxit) is
% useful, and borderspace can really be set to
% anything inside a group .e.g.
% {\borderwidth=5pt
% \borderspace=5pt
% \boxit{\hbox{fubar}}}
% won't (ok, shouldn't) affect the output routine.
% \paperheight the height of the paper, default is 11 inches
% \paperwidth the width of the paper, default is 8.5 inches
%
% NOTE: If you change these dimensions you can get
% overfull box errors. To avoid this adjust \vsize, \hsize, \hoffset, and
% \voffset accordingly.
%
%
\newdimen\borderspace \borderspace=10pt
\newdimen\borderwidth \borderwidth=5pt
\newdimen\borderindent \borderindent=10pt
\newdimen\paperheight \paperheight=11in
\newdimen\paperwidth \paperwidth=8.5in
\newdimen\bigboxheight % height of final box inside border
\newdimen\bigboxwidth % width of same box
\newdimen\leftsidekern % distance between inside of border and left of page box
\newdimen\topsidekern % distance between inside of border and top of pagebox
\newdimen\boxadjust % distance from paper edge to inside edge of border space.
%
% put a border around a box. Taken from the TeX book. Border width is
% defined by \borderwidth. Distance out from box is \borderspace.
%
% This macro can be called in a page like so:
% {\borderwidth=5pt \borderspace=5pt \boxit{\hbox{fubar}}}
%
\def\boxit#1{\vbox{\hrule height \borderwidth depth 0pt
\hbox{\vrule width \borderwidth\kern\borderspace
\vbox{\kern\borderspace#1\kern\borderspace}\kern\borderspace \vrule width
\borderwidth}\hrule height \borderwidth depth 0pt}}
%
% Wrap up the page in a border and ship it out.
%
\def\borderoutput{
\setbox255=\vbox{\makeheadline
\pagebody
\makefootline}%
\setbox255=\vbox{\makebigbox{\box255}}
\begingroup
\hoffset= -1in \advance\hoffset by \borderindent
\voffset= -1in \advance\voffset by \borderindent
\shipout\boxit{\box255}
\endgroup
\advancepageno
\ifnum\outputpenalty>-20000\else\dosupereject\fi}
%
% make a big box to hold the page, that's big enough to wrap the border
% around.
%
\def\makebigbox#1{%
\boxadjust=\borderindent
\advance\boxadjust by \borderwidth
\advance\boxadjust by \borderspace
\bigboxheight=\paperheight
\bigboxwidth=\paperwidth
\advance\bigboxheight by -\boxadjust
\advance\bigboxheight by -\boxadjust
\advance\bigboxwidth by -\boxadjust
\advance\bigboxwidth by -\boxadjust
\leftsidekern=\hoffset \advance\leftsidekern by 1in
\advance\leftsidekern by -\boxadjust
\topsidekern=\voffset \advance\topsidekern by 1in
\advance\topsidekern by -\boxadjust
\hbox to \bigboxwidth{\kern\leftsidekern
\vbox to \bigboxheight{\kern\topsidekern#1\vfil}
\hfil}}
\def\borderson{\output={\borderoutput}}
\def\bordersoff{\output={\plainoutput}} % reset to TeX's standard output
|