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 |
..
|