Subversion Repositories planix.SVN

Rev

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

.de PI  \" Picture Include
.       \" $1=file(page) $2=height,width,yoff,xoff $3=flags
.       \" Height, width, xoff, and yoff are for the frame, flags is for the
.       \" picture. Default dimensions are inches.
\\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
..
.nr FT 0
.de BP  \" Begin a Picture
.       \"
.       \" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
.       \"
.       \" Height, width, position, and offset are for the frame, flags is for
.       \" the picture. The postion flag should be l, c, r, or "". Omitting the
.       \" position argument is also allowed for compatibility with the original
.       \" version of the macro. In that case offset is taken relative to your
.       \" left margin.
.if \\n(FT>1 .EP
.       \" Need these when we switch environments.
.nr Ov \\n(.v
.nr Oi \\n(.i
.nr Ol \\n(.l
.       \" Remember the arguments - sometimes as both a string and number register.
.nr $2 \\$2i
.nr $3 \\$3i
.nr $4 \\$4i
.ds $4 \\$4
.nr $5 \\$5i
.ds $5 \\$6
.ds $6 \\$7
.       \" Accept a few unadvertised position flags.
.if '\\*($4'L' .ds $4 l
.if '\\*($4'C' .ds $4 c
.if '\\*($4'R' .ds $4 r
.       \" A null with more than three arguments means l.
.if \\n(.$>3 .if '\\*($4'' .ds $4 l
.       \" Default frame dimensions if missing, zero, or null.
.if !\\n($2>0 .nr $2 3.0i
.if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
.if !\\n($3>0 .nr $3 \\n($2u
.       \" Figure out the offset that will be used the rest of the way.
.if '\\*($4'l' .nr $4 \\n($5u
.if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
.if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
.       \" If we haven't recognized the position flag assume it wasn't given and
.       \" treat argument four as an offset from the left.
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
.if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
.       \" Set increments for line length and indent.
.nr Ii \\n($3u+\\n($4u+.1i
.nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
.       \" Set the frame type to one of:
.       \"      0 - frame is as wide as a line of text - skip over it.
.       \"      1 - fits in left or right margins
.       \"      2 - fill with text on the right
.       \"      3 - on the left
.       \"      4 - or on both sides of the frame
.       \"      5 - only set in EP if FT was 4 and now filling on the right.
.       \" Assume the frame is as wide as a line of text, then check dimensions
.       \" to see what's really true. The order of these tests is important!
.nr FT 0
.if \\n($4u>1.0i .nr FT 3
.if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
.if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
.if \\n($3u+\\n($4u<=0 .nr FT 1
.if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
.       \" Ask for some vertical space - labeled pictures need a little extra,
.       \" margin pictures a little less.
.if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
.if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
.if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
.if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
.       \" Save our place, draw the picture, label it, and return. Need precise
.       \" control of when \X'...' is put out - thus the new environment.
.mk Oh
.ev 1
.in \\n(Oiu
.ll \\n(Olu
.vs \\n(Ovu
.if \\n(FT=1 .sp -1v
.if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
.if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
.in
.ll
.vs
.ev
.lt \\n($3u
.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
.lt
'sp |\\n(Ohu
.       \" Figure out what to do with the text that follows.
.if !'\\*($6'' .nr $2 +2v
.if \\n(FT=0 .sp \\n($2u+2v
.if \\n(FT=1 .nr FT 0
.if \\n(FT=2 'in +\\n(Iiu
.if \\n(FT>2 .ll -\\n(Ilu
.if \\n(FT>1 .di BB
.if \\n(FT>1 .dt \\n($2u+2v+1u EP
.       \" Clean things up.
.rr $2
.rr $3
.rr $4
.rm $4
.rr $5
.rm $5
.rm $6
.rr Oh
.rr Oi
.rr Ol
.rr Ov
.if \\n(FT=0 .EP
..
.de EP  \" End the Picture - Normally called from a trap, although it can be used
.       \" on its own to mark the end of a picture.
.nr Ot 0
.if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
.if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
.if \\n(FT<2 .nr Ot 0
.if \\n(Ot>0 .br
.if \\n(FT=5 .nr Ot 0
.if \\n(FT>1 \{\
.       ev 1
.       eo
.       br
.       di
.       nf
.       in 0
.       BB
.       in
.       fi
.       ec
.       ev
.       rm BB\}
.if \\n(FT=5 \{\
.       nr FT 2
'       sp |\\n(Nhu+1v\}
.if \\n(FT=4 \{\
.       mk Nh
.       nr Nh -1v
.       nr FT 5
'       sp -\\n(dnu+1v
'       in +\\n(Iiu
.       ll +\\n(Ilu
.       di BB
.       dt \\n(dnu-2v+1u EP\}
.if \\n(FT=2 'in -\\n(Iiu
.if \\n(FT=3 .ll +\\n(Ilu
.if \\n(FT<4 .nr FT 0
.if \\n(Ot>0 .sp \\n(Otu
.rr Ot
.if \\n(FT=0 \{\
.       rr Nh
.       rr Ii
.       rr Il\}
..