Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.de PI	\" Picture Include
2
.	\" $1=file(page) $2=height,width,yoff,xoff $3=flags
3
.	\" Height, width, xoff, and yoff are for the frame, flags is for the
4
.	\" picture. Default dimensions are inches.
5
\\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
6
..
7
.nr FT 0
8
.de BP	\" Begin a Picture
9
.	\"
10
.	\" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
11
.	\"
12
.	\" Height, width, position, and offset are for the frame, flags is for
13
.	\" the picture. The postion flag should be l, c, r, or "". Omitting the
14
.	\" position argument is also allowed for compatibility with the original
15
.	\" version of the macro. In that case offset is taken relative to your
16
.	\" left margin.
17
.if \\n(FT>1 .EP
18
.	\" Need these when we switch environments.
19
.nr Ov \\n(.v
20
.nr Oi \\n(.i
21
.nr Ol \\n(.l
22
.	\" Remember the arguments - sometimes as both a string and number register.
23
.nr $2 \\$2i
24
.nr $3 \\$3i
25
.nr $4 \\$4i
26
.ds $4 \\$4
27
.nr $5 \\$5i
28
.ds $5 \\$6
29
.ds $6 \\$7
30
.	\" Accept a few unadvertised position flags.
31
.if '\\*($4'L' .ds $4 l
32
.if '\\*($4'C' .ds $4 c
33
.if '\\*($4'R' .ds $4 r
34
.	\" A null with more than three arguments means l.
35
.if \\n(.$>3 .if '\\*($4'' .ds $4 l
36
.	\" Default frame dimensions if missing, zero, or null.
37
.if !\\n($2>0 .nr $2 3.0i
38
.if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
39
.if !\\n($3>0 .nr $3 \\n($2u
40
.	\" Figure out the offset that will be used the rest of the way.
41
.if '\\*($4'l' .nr $4 \\n($5u
42
.if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
43
.if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
44
.	\" If we haven't recognized the position flag assume it wasn't given and
45
.	\" treat argument four as an offset from the left.
46
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
47
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
48
.	\" Set increments for line length and indent.
49
.nr Ii \\n($3u+\\n($4u+.1i
50
.nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
51
.	\" Set the frame type to one of:
52
.	\"	0 - frame is as wide as a line of text - skip over it.
53
.	\"	1 - fits in left or right margins
54
.	\"	2 - fill with text on the right
55
.	\"	3 - on the left
56
.	\"	4 - or on both sides of the frame
57
.	\"	5 - only set in EP if FT was 4 and now filling on the right.
58
.	\" Assume the frame is as wide as a line of text, then check dimensions
59
.	\" to see what's really true. The order of these tests is important!
60
.nr FT 0
61
.if \\n($4u>1.0i .nr FT 3
62
.if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
63
.if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
64
.if \\n($3u+\\n($4u<=0 .nr FT 1
65
.if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
66
.	\" Ask for some vertical space - labeled pictures need a little extra,
67
.	\" margin pictures a little less.
68
.if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
69
.if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
70
.if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
71
.if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
72
.	\" Save our place, draw the picture, label it, and return. Need precise
73
.	\" control of when \X'...' is put out - thus the new environment.
74
.mk Oh
75
.ev 1
76
.in \\n(Oiu
77
.ll \\n(Olu
78
.vs \\n(Ovu
79
.if \\n(FT=1 .sp -1v
80
.if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
81
.if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
82
.in
83
.ll
84
.vs
85
.ev
86
.lt \\n($3u
87
.tl \(ts\(ts\\h'\\n($4u+\\n(.iu'\\v'\\n($2u+1.5v'\\*($6\\v'-\\n($2u-1.5v'\\h'-\\n($4u-\\n(.iu'\(ts\(ts
88
.lt
89
'sp |\\n(Ohu
90
.	\" Figure out what to do with the text that follows.
91
.if !'\\*($6'' .nr $2 +2v
92
.if \\n(FT=0 .sp \\n($2u+2v
93
.if \\n(FT=1 .nr FT 0
94
.if \\n(FT=2 'in +\\n(Iiu
95
.if \\n(FT>2 .ll -\\n(Ilu
96
.if \\n(FT>1 .di BB
97
.if \\n(FT>1 .dt \\n($2u+2v+1u EP
98
.	\" Clean things up.
99
.rr $2
100
.rr $3
101
.rr $4
102
.rm $4
103
.rr $5
104
.rm $5
105
.rm $6
106
.rr Oh
107
.rr Oi
108
.rr Ol
109
.rr Ov
110
.if \\n(FT=0 .EP
111
..
112
.de EP	\" End the Picture - Normally called from a trap, although it can be used
113
.	\" on its own to mark the end of a picture.
114
.nr Ot 0
115
.if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
116
.if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
117
.if \\n(FT<2 .nr Ot 0
118
.if \\n(Ot>0 .br
119
.if \\n(FT=5 .nr Ot 0
120
.if \\n(FT>1 \{\
121
.	ev 1
122
.	eo
123
.	br
124
.	di
125
.	nf
126
.	in 0
127
.	BB
128
.	in
129
.	fi
130
.	ec
131
.	ev
132
.	rm BB\}
133
.if \\n(FT=5 \{\
134
.	nr FT 2
135
'	sp |\\n(Nhu+1v\}
136
.if \\n(FT=4 \{\
137
.	mk Nh
138
.	nr Nh -1v
139
.	nr FT 5
140
'	sp -\\n(dnu+1v
141
'	in +\\n(Iiu
142
.	ll +\\n(Ilu
143
.	di BB
144
.	dt \\n(dnu-2v+1u EP\}
145
.if \\n(FT=2 'in -\\n(Iiu
146
.if \\n(FT=3 .ll +\\n(Ilu
147
.if \\n(FT<4 .nr FT 0
148
.if \\n(Ot>0 .sp \\n(Otu
149
.rr Ot
150
.if \\n(FT=0 \{\
151
.	rr Nh
152
.	rr Ii
153
.	rr Il\}
154
..