tmac.pictures - 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 fo… | |
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=fl… | |
11 . \" | |
12 . \" Height, width, position, and offset are for the frame, flags… | |
13 . \" the picture. The postion flag should be l, c, r, or "". Omit… | |
14 . \" position argument is also allowed for compatibility with the… | |
15 . \" version of the macro. In that case offset is taken relative … | |
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 numb… | |
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 … | |
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… | |
58 . \" Assume the frame is as wide as a line of text, then check di… | |
59 . \" to see what's really true. The order of these tests is impor… | |
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… | |
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… | |
73 . \" control of when \X'...' is put out - thus the new environmen… | |
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… | |
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… | |
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 .. |