tmac: use ds instead of de + chop
[neatroff_make.git] / tmac / tmac.fa
blob5612279b3923123570fe623cabc99c9081f9f791
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 .       ds fa.eqlab "\\$1
123 .       di fa.eqdiv
125 .de EN
126 .       di
127 .       if \\n(dn \{\
128 .               sp .5
129 .               ad c
130 .               ie "\\*[fa.eqlab]"" .fa.eqdiv
131 .               el \{\
132 .                       nr fa.eqwid \\n(dl
133 .                       if \\n[fa.eqwid]<(\\n(.lu/2u) .nr fa.eqwid \\n(.lu/2u
134 .                       ll \\n[fa.eqwid]u
135 .                       ad r
136 .                       fa.eqdiv
137 .                       sp -1
138 .                       ll
139 .                       in +(\\n[fa.eqwid]u+2m)
140 .                       ad l
141 \\*[fa.eqlab]
142 .                       in
143 .               \}
144 .               sp .5
145 .       \}
146 .       fi
147 .       <<
148 .       ft FR
150 .de PS
151 .       br
152 .       RT
153 .       nf
154 .       >>
155 .       in (\\n(.lu-\\$2)/2u
156 .       ne \\$1
158 .de PE
159 .       <<
160 .       in
162 .de TS
163 .       br
164 .       >>
166 .de TE
167 .       <<
168 .       RT
170 .\" Header and footer macros
171 .de FT          \" Page footer
172 .       ev fa.ft
173 .       FP
174 '       sp |\\n(.pu+\\n(FPu
175 .       RT
176 '       sp
177 .       FT.pg
178 '       bp
179 .       ev
180 .       if \\n(.t==(\\n(.p+(\\n(FP)) .HD
182 .de HD          \" Page header (called by FT)
183 .       ev fa.ft
184 .       RT
185 '       sp 1
186 .       HD.pg
187 .       ev
188 .       ns
189 .       keepbop
191 .de FT.pg       \" Footer page number
192 .       ie \\n[fa.pg]=1 'tl ''\>%\<''
193 .       el 'sp
195 .de HD.pg       \" Header page number
196 '       sp
198 .\" Footnotes
199 .de FS.common
200 '       br
201 .       ie \\n[fa.footnum] .ne 1
202 .       el .ne 1.5
203 .       if !\\n[fa.footnum] .nr fa.footpos 0\\n(FP+\\n(VSp
204 .       da fa.footdiv
205 .       ev fa.footenv
206 .       RT
207 .       ps \\n(PS-4
208 .       vs \\n(PS-2
209 .       ad l
210 .       >>
211 .       nr fa.footnum +1
212 .       if \\n[fa.footnum]=1 \l'\\n(.lu'
213 .       ds fa.footsign "\\n[fa.footnum]
214 .       if \\n(.$>0 .ds fa.footsign "\\$1
215 .       ad pk
216 .       in 3n
217 .       in2 3n
219 .de FS
220 .       FS.common \\$1
221 .       ft R
222 .       ti -3n
223 \\*[fa.footsign]
224 .       sp -1
226 .de FS.fa
227 .       FS.common \\$1
228 .       <<
229 .       ft FR
230 .       ti2 -3n
231 \>\\*[fa.footsign]\<
232 .       sp -1
234 .de FE
235 .       in 0
236 .       ev
237 .       di
238 \s-4\d\>\\*[fa.footsign]\<\u\s+4\c
239 .       nr fa.footpos -\\n(dn
240 .       ch FT \\n[fa.footpos]u
242 .de FP
243 .       if \\n[fa.footnum] \{\
244 .               ev fa.footenv
245 '               nf
246 '               ad l
247 .               fa.footdiv
248 .               rm fa.footdiv
249 .               ev
250 .       \}
251 .       nr fa.footnum 0
252 .       ch FT \\n(FPu
254 .\" Including EPS files (overrides -meps)
255 .rn EPS __EPS
256 .de EPS
257 .       >>
258 .       __EPS "\\$1" \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
260 .\" Adjusting fonts
261 .de fa.gmap     \" Mapping glyphs
262 .       fmap \\n(.f \\$1
263 .       if \w'\N'\\$2'' .fmap \\n(.f \\$1 \\$2
265 .de fa.cmap     \" Mapping characters
266 .       ochar \\n(.f \\$1
267 .       if !\w'\\$1' .ochar \\n(.f \\$1 \\$2
269 .de fa.umap     \" Mapping characters (unconditionally)
270 .       ochar \\n(.f \\$1
271 .       if \w'\\$2' .ochar \\n(.f \\$1 \\$2
273 .de fa.ffont    \" Adjusting old Farsi fonts
274 .       ft \\$1
275 .       ff \\$1 +ccmp +rlig +rclt +calt +mset +curs +kern +mark +mkmk
276 .       fa.cmap ﻫ ھ
277 .       fa.cmap ﻬ ﮫ
278 .       fa.cmap ی ﻱ
279 .       fa.cmap ﯾ ﻳ
280 .       fa.cmap ﯿ ﻴ
281 .       fa.cmap ﯽ ﻰ
282 .       fa.cmap ﯽ ﻲ
283 .       fa.cmap ﮐ ﻛ
284 .       fa.cmap ﮑ ﻜ
285 .       fa.cmap ﮏ ﻚ
286 .       fa.umap 0 ۰
287 .       fa.umap 1 ۱
288 .       fa.umap 2 ۲
289 .       fa.umap 3 ۳
290 .       fa.umap 4 ۴
291 .       fa.umap 5 ۵
292 .       fa.umap 6 ۶
293 .       fa.umap 7 ۷
294 .       fa.umap 8 ۸
295 .       fa.umap 9 ۹
296 .       ft P
298 .de fa.efont    \" Adjusting English fonts
299 .       fzoom \\$1 900
301 .de fa.mfont    \" Adjusting equation fonts
302 .       ft \\$1
303 .       fzoom \\$1 900
304 .       fa.umap 0 "\f(FR۰\fP
305 .       fa.umap 1 "\f(FR۱\fP
306 .       fa.umap 2 "\f(FR۲\fP
307 .       fa.umap 3 "\f(FR۳\fP
308 .       fa.umap 4 "\f(FR۴\fP
309 .       fa.umap 5 "\f(FR۵\fP
310 .       fa.umap 6 "\f(FR۶\fP
311 .       fa.umap 7 "\f(FR۷\fP
312 .       fa.umap 8 "\f(FR۸\fP
313 .       fa.umap 9 "\f(FR۹\fP
314 .       ft P
316 .de fa.fonts    \" Adjust the default fonts
317 .       fa.ffont FR
318 .       fa.ffont FI
319 .       fa.ffont FB
320 .       fa.ffont HD
321 .       fa.efont R
322 .       fa.efont I
323 .       fa.efont B
324 .       fa.efont BI
325 .       fa.efont CMMI
327 .\" Small auxiliary macros
328 .ds en "\>\fR\\$1\fP\<
329 .ds num "\>\\$1\<
330 .ds ct "]\>\\$1\<[
331 .de fs          \" English Footnote
333 .       FS
334 \\$1
335 .       FE
338 .chop fs
339 .de fs.fa       \" Farsi Footnote
341 .       FS.fa
342 \\$1
343 .       FE
346 .chop fs.fa
347 .\" For tbl package
348 .de tblrst
349 .       fi
350 .       ft FR
351 .       ad pk
352 .       ps \\n(PS-2
353 .       vs \\n(VS-3
354 .       ll \\n(LLu
355 .       in 0
356 .       in2 0
357 .       cl 0
358 .       >>
360 .de fa.tblhd
361 .       <<
362 .       ft FB
363 .       ad c
365 .de fa.tblfc
366 .       <<
367 .       ft FR
368 .       ad c
370 .de fa.tblfb
371 .       <<
372 .       ft FR
373 .       ad pk
375 .\" For keep package
376 .de KF
377 .       keepbeg f
379 .de KT
380 .       keepbeg t
382 .de KS
383 .       keepbeg d
385 .de KE
386 .       keepend
388 .de DS
389 .       RT
390 .       nf
392 .de DE
393 .       fi
395 .\" Initialization
396 .de fa.init
397 .       lg 1
398 .       kn 1
399 .       wh \\n(FPu FT
400 .       hy 14
401 .       hycost 800
402 .       eos .?!؟ '")]*
403 .       nh
404 .       ssh 15
405 .       ss 12 6
406 .       char ‌ \&
407 .       char ‍ \&
408 .       \" Fonts: Times Roman + IR Nazanin + Computer Modern
409 .       fp 5 FR IRNazanin       \" Farsi regular font
410 .       fp 6 FI IRNazaninIranic \" Farsi italic font
411 .       fp 7 FB IRNazaninBold   \" Farsi bold font
412 .       fp 8 HD IRNazaninBold   \" Farsi header font
413 .       fp 14 CMR CMR10
414 .       fp 15 CMEX CMEX10
415 .       fp 16 CMSY CMSY10
416 .       fp 17 CMMI CMMI10
417 .       fspecial CMR S1 S CMEX CMSY
418 .       fa.fonts
419 .       fa.mfont CMR
420 .       ds .eqnbeg "\\\\?'\\\\n[.td]@\>'
421 .       ds .eqnend "\\\\?'\\\\n[.td]@\<'
422 .       ochar CMR { "\f[CMSY]{\fP
423 .       ochar CMR } "\f[CMSY]}\fP
424 .       ochar CMR \(<= "\f[CMSY]\(<=\fP
425 .       ochar CMR < "\f[CMSY]<\fP
426 .       ochar CMR > "\f[CMSY]>\fP
427 .       ochar CMR \(>= "\f[CMSY]\(>=\fP
428 .       ochar CMR \(mi "\f[CMSY]\(mi\fP
429 .       ochar CMR \(mu "\f[CMSY]\(mu\fP
431 .fa.init