|
|
1.1 ! root 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: ..
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.