tmac.tbl: use \D'l ..' to draw table borders
[neatroff_make.git] / tmac / tmac.fa
blob9445442cac20e79ba3675bf72c53152777115eb5
1 .\" A package for short Farsi manuscripts
2 .\" Registers and their default values
3 .nr PS 14               \" point size
4 .nr VS \n(PS+12         \" vertical spacing
5 .nr LL 6i               \" line length
6 .nr PO 1.1i             \" page offset
7 .nr FP -1.2i            \" footer position
8 .\" Internal registers
9 .nr fa.in 0             \" current indentation
10 .nr fa.ip 2m            \" IP indentation
11 .nr fa.pi 2m            \" RS indentation
12 .nr fa.pg 1             \" page numbering (0 disables)
13 .ds fa.cl "0            \" header colour
14 .\" Reset variables; when beginning a paragraph, e.g.
15 .de RT
16 .       fi
17 .       <<
18 .       ft FR
19 .       ad pk
20 .       ps \\n(PS
21 .       vs \\n(VS
22 .       ll \\n(LLu
23 .       lt \\n(LLu
24 .       po \\n(POu
25 .       in 0
26 .       in2 \\n[fa.in]u
27 .       cl 0
28 .       AL
30 .\" Alignment
31 .de AL
32 .       if \\n(.d%\\n(.v 'sp \\n(.vu-(\\n(.du%\\n(.vu)
34 .\" Paragraphs
35 .de LP          \" Paragraphs without temporary indentation
36 .       RT
38 .de PP          \" Ordinary paragraphs
39 .       RT
40 .       ti2 +3n
42 .de QP          \" Quoted paragraphs
43 .       LP
44 .       in2 \\n[fa.in]u+0.5i
45 .       ll -2m
47 .de IP          \" Indented paragraphs
48 .       br
49 .       RT
50 .       ne 1
51 .       <<
52 .       if \\n(.$>1 .nr fa.ip \\$2
53 .       in2 +\\n[fa.ip]u
54 \h'|-\\n[fa.ip]u'\\$1
55 .       sp -1
57 .de IP.en       \" Indented paragraphs (English)
58 .       br
59 .       ne 1
60 .       ft R
61 .       >>
62 .       if \\n(.$>1 .nr fa.ip \\$2
63 .       in +\\n[fa.ip]u
64 \h'|-\\n[fa.ip]u'\\$1
65 .       sp -1
67 .de RS          \" Indented block start
68 .       br
69 .       if \\n(.$ .nr fa.pi \\$1
70 .       nr fa.in +\\n[fa.pi]
72 .de RE          \" Indented block end
73 .       br
74 .       if \\n(.$ .nr fa.pi \\$1
75 .       nr fa.in -\\n[fa.pi]
77 .de QS          \" Quote start
78 .       br
79 .       RS
80 .       LP
82 .de QE          \" Quote end
83 .       br
84 .       RE
86 .\" Section header
87 .de SH
88 .       RT
89 .       sp
90 .       ne 1.5
91 .       cl \\*[fa.cl]
92 .       ft HD
93 .       ps \\n(PS+2
94 .       ad r
95 .       if \\n(.$ \{\
96 \\$1
97 .               LP
98 .       \}
100 .\" Document title
101 .de TL
102 .       RT
103 .       cl \\*[fa.cl]
104 .       ft HD
105 .       sp 2
106 .       ad c
107 .       ps \\n(PS+4
108 .       vs \\n(VS+6
109 .       fi
110 .       if \\n(.$ \{\
111 \\$1
112 .               sp 2
113 .               LP
114 .       \}
116 .\" Preprocessor macros
117 .de EQ
118 .       RT
119 .       nf
120 .       >>
121 .       ft R
122 .       di fa.eqdiv
124 .de EN
125 .       di
126 .       if \\n(dn \{\
127 .               sp .5
128 .               ce
129 .               fa.eqdiv
130 .               sp .5
131 .       \}
132 .       fi
133 .       <<
134 .       ft FR
136 .de PS
137 .       br
138 .       RT
139 .       nf
140 .       >>
141 .       in (\\n(.lu-\\$2)/2u
142 .       ne \\$1
144 .de PE
145 .       <<
146 .       in
148 .de TS
149 .       br
150 .       >>
152 .de TE
153 .       <<
154 .       RT
156 .\" Header and footer macros
157 .de FT          \" Page footer
158 .       ev fa.ft
159 .       FP
160 '       sp |\\n(.pu+\\n(FPu
161 .       RT
162 '       sp
163 .       FT.pg
164 '       bp
165 .       ev
166 .       HD
168 .de HD          \" Page header (called by FT)
169 .       ev fa.ft
170 .       RT
171 '       sp 1
172 .       HD.pg
173 .       ev
174 .       ns
175 .       keepbop
177 .de FT.pg       \" Footer page number
178 .       ie \\n[fa.pg]=1 'tl ''\>%\<''
179 .       el 'sp
181 .de HD.pg       \" Header page number
182 '       sp
184 .\" Footnotes
185 .de FS
186 '       br
187 .       ie \\n[fa.footnum] .ne 1
188 .       el .ne 1.5
189 .       if !\\n[fa.footnum] .nr fa.footpos 0\\n(FP+\\n(VSp
190 .       da fa.footdiv
191 .       ev fa.footenv
192 .       RT
193 .       ps \\n(PS-4
194 .       vs \\n(PS-2
195 .       ad l
196 .       >>
197 .       nr fa.footnum +1
198 .       if \\n[fa.footnum]=1 \l'3i'
199 .       br
200 .       ft R
201 .       in 0
202 \f(FR\\n[fa.footnum]\fP\h'|3n'\c
204 .de FE
205 .       br
206 .       ev
207 .       di
208 \s-4\d\>\\n[fa.footnum]\<\u\s+4\c
209 .       nr fa.footpos -\\n(dn
210 .       ch FT \\n[fa.footpos]u
212 .de FP
213 .       if \\n[fa.footnum] \{\
214 .               ev fa.footenv
215 '               nf
216 .               fa.footdiv
217 .               rm fa.footdiv
218 .               ev
219 .       \}
220 .       nr fa.footnum 0
221 .       ch FT \\n(FPu
223 .\" Including EPS files (overrides -meps)
224 .rn EPS _EPS
225 .de EPS
226 .       >>
227 .       _EPS \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
229 .\" Adjusting fonts
230 .de fa.gmap     \" Mapping glyphs
231 .       if \w'\N'\\$2'' .fmap \\n(.f \\$1 \\$2
233 .de fa.cmap     \" Mapping characters
234 .       if !\w'\\$1' .ochar \\n(.f \\$1 \\$2
236 .de fa.umap     \" Mapping characters (unconditionally)
237 .       if \w'\\$2' .ochar \\n(.f \\$1 \\$2
239 .de fa.ffont    \" Adjusting old Farsi fonts
240 .       ft \\$1
241 .       ff \\$1 +ccmp +rlig +rclt +calt +mset +curs +kern +mark +mkmk
242 .       fa.cmap ﻫ ﻫ
243 .       fa.cmap ﻫ ھ
244 .       fa.cmap ﻬ ﻬ
245 .       fa.cmap ﻬ ﮫ
246 .       fa.cmap ی ﻱ
247 .       fa.cmap ﯾ ﻳ
248 .       fa.cmap ﯿ ﻴ
249 .       fa.cmap ﯽ ﻰ
250 .       fa.cmap ﯽ ﻲ
251 .       fa.cmap ﮐ ﻛ
252 .       fa.cmap ﮑ ﻜ
253 .       fa.cmap ﮏ ﻚ
254 .       fa.umap 0 ۰
255 .       fa.umap 1 ۱
256 .       fa.umap 2 ۲
257 .       fa.umap 3 ۳
258 .       fa.umap 4 ۴
259 .       fa.umap 5 ۵
260 .       fa.umap 6 ۶
261 .       fa.umap 7 ۷
262 .       fa.umap 8 ۸
263 .       fa.umap 9 ۹
264 .       ft P
266 .de fa.efont    \" Adjusting English fonts
267 .       fzoom \\$1 900
269 .de fa.mfont    \" Adjusting equation fonts
270 .       ft \\$1
271 .       fzoom \\$1 900
272 .       fa.umap 0 "\f(FR۰\fP
273 .       fa.umap 1 "\f(FR۱\fP
274 .       fa.umap 2 "\f(FR۲\fP
275 .       fa.umap 3 "\f(FR۳\fP
276 .       fa.umap 4 "\f(FR۴\fP
277 .       fa.umap 5 "\f(FR۵\fP
278 .       fa.umap 6 "\f(FR۶\fP
279 .       fa.umap 7 "\f(FR۷\fP
280 .       fa.umap 8 "\f(FR۸\fP
281 .       fa.umap 9 "\f(FR۹\fP
282 .       ft P
284 .de fa.fonts    \" Adjust the default fonts
285 .       fa.ffont FR
286 .       fa.ffont FI
287 .       fa.ffont FB
288 .       fa.ffont HD
289 .       fa.efont R
290 .       fa.efont I
291 .       fa.efont B
292 .       fa.efont BI
293 .       fa.efont CMMI
295 .\" Small auxiliary macros
296 .de en          \" English phrases
297 \>\fR\\$1\fP\<
299 .chop en
300 .de num         \" Farsi numbers
301 \>\\$1\<
303 .chop num
304 .de fs          \" Footnote
306 .       FS
307 \\$1
308 .       FE
311 .chop fs
312 .de ct
313 ]\>\\$1\<[
315 .chop ct
316 .\" For tbl package
317 .de tblrst
318 .       fi
319 .       ft FR
320 .       ad pk
321 .       ps \\n(PS-2
322 .       vs \\n(VS-3
323 .       ll \\n(LLu
324 .       in 0
325 .       cl 0
326 .       >>
328 .de fa.tblhd
329 .       <<
330 .       ft FB
331 .       ad c
333 .de fa.tblfc
334 .       <<
335 .       ft FR
336 .       ad c
338 .de fa.tblfb
339 .       <<
340 .       ft FR
341 .       ad pk
343 .\" For keep package
344 .de KF
345 .       keepbeg f
347 .de KT
348 .       keepbeg t
350 .de KS
351 .       keepbeg d
353 .de KE
354 .       keepend
356 .de DS
357 .       RT
358 .       nf
360 .de DE
361 .       fi
363 .\" Initialization
364 .de fa.init
365 .       lg 1
366 .       kn 1
367 .       wh \\n(FPu FT
368 .       hy 14
369 .       hycost 800
370 .       eos .?!؟ '")]*
371 .       nh
372 .       ssh 15
373 .       ss 12 6
374 .       char ‌ \&
375 .       \" Fonts: Times Roman + IR Nazanin + Computer Modern
376 .       fp 5 FR IRNazanin       \" Farsi regular font
377 .       fp 6 FI IRNazaninIranic \" Farsi italic font
378 .       fp 7 FB IRNazaninBold   \" Farsi bold font
379 .       fp 8 HD IRNazaninBold   \" Farsi header font
380 .       fp 14 CMR CMR10
381 .       fp 15 CMEX CMEX10
382 .       fp 16 CMSY CMSY10
383 .       fp 17 CMMI CMMI10
384 .       fspecial CMR S1 S CMEX CMSY
385 .       fa.fonts
386 .       fa.mfont CMR
387 .       ds .eqnbeg "\\\\?'\\\\n[.td]@\>'
388 .       ds .eqnend "\\\\?'\\\\n[.td]@\<'
389 .       ochar CMR { "\f[CMSY]{\fP
390 .       ochar CMR } "\f[CMSY]}\fP
391 .       ochar CMR \(<= "\f[CMSY]\(<=\fP
392 .       ochar CMR < "\f[CMSY]<\fP
393 .       ochar CMR > "\f[CMSY]>\fP
394 .       ochar CMR \(>= "\f[CMSY]\(>=\fP
396 .fa.init