9base

revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log | Files | Refs | README | LICENSE

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