tmac.pictures (4320B)
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 ..