|
|
1.1 root 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28: |attribute(page.offset; init 0;
29: $ [
30: .po$
31: .nrO \n(.o
32: .nrO0 \n(.o
33: ])
34:
35: |attribute(line.length; init 6i;
36: $ [
37: .ll$
38: .lt$
39: .nrW \n(.lu
40: ])
41:
42: |attribute(page.length; init 11i;
43: $ [
44: .pl$
45: ])
46:
47: |attribute(spacing; init off;
48: on [
49: .rs
50: ] off [
51: .ns
52: ])
53:
54: |attribute(new.page; nostack;
55: [
56: .bp
57: ] odd [
58: .bp
59: .af;P \gP
60: .afP 1
61: .nr;P \nP
62: .afP \g(;P
63: .af;P 1
64: .if!\n(;P%2 \{\
65: .rs
66: .bp\}
67: .rr;P
68: ] even [
69: .bp
70: .af;P \gP
71: .afP 1
72: .nr;P \nP
73: .afP \g(;P
74: .af;P 1
75: .if\n(;P%2 \{\
76: .rs
77: .bp\}
78: .rr;P
79: ])
80:
81: |attribute(line.spacing; stack, init 1;
82: $ [
83: .ls$
84: ])
85:
86: |attribute(blank.lines; nostack;
87: $ [
88: .sp$
89: .ti\n(.iu
90: ] [
91: .sp1
92: .ti\n(.iu
93: ])
94:
95: |attribute(minimum.lines; nostack;
96: $ [
97: .br
98: .ie!'\n(.z'' \{\
99: .if!'\n(.z'\*(}D' .rr :D :E
100: .nr;4 $v
101: .if!(\n(.d=\n(:D) .nr :E 0
102: .nr;4 -\n(:Eu
103: .if\n(;4 \{\
104: .sp\n(;4u
105: .nr:E +\n(;4u \}
106: .rm;4
107: .ds}D \n(.z
108: .nr:D \n(.d \}
109: .el\{\
110: .rr:D :E
111: .nr;4 $v
112: .if!(\n(nl=\n(:N) .nr :B 0
113: .nr;4 -\n(:Bu
114: .if\n(;4 \{\
115: .sp\n(;4u
116: .nr:B +\n(;4u \}
117: .rm;4
118: .nr:N \n(nl \}
119: .ti\n(.iu
120: ] [
121: .br
122: .ie!'\n(.z'' \{\
123: .if!'\n(.z'\*(}D' .rr :D :E
124: .nr;4 1v
125: .if!(\n(.d=\n(:D) .nr :E 0
126: .nr;4 -\n(:Eu
127: .if\n(;4 \{\
128: .sp\n(;4u
129: .nr:E +\n(;4u \}
130: .rm;4
131: .ds}D \n(.z
132: .nr:D \n(.d \}
133: .el\{\
134: .rr:D :E
135: .nr;4 1v
136: .if!(\n(nl=\n(:N) .nr :B 0
137: .nr;4 -\n(:Bu
138: .if\n(;4 \{\
139: .sp\n(;4u
140: .nr:B +\n(;4u \}
141: .rm;4
142: .nr:N \n(nl \}
143: .ti\n(.iu
144: ])
145:
146: |attribute(horizontal.motion; nostack;
147: $ [\h'$']
148: number $$. [\h'\n$$.']
149: number $number.register [\h'\n($number.register'])
150:
151: |attribute(vertical.motion; nostack;
152: $ [\v'$']
153: number $$. [\v'\n$$.']
154: number $number.register [\v'\n($number.register'])
155:
156: |attribute(concatenate; nostack;
157: [\&\c
158: ])
159:
160: |attribute(new.line; nostack;
161: [
162: .br
163: ])
164:
165: |attribute(indent; stack, default 0;
166: $ [
167: .in$
168: ])
169:
170: |attribute(indent.line; nostack;
171: $ [
172: .ti$
173: ]
174: number $$. [
175: .ti\n$$.u
176: ]
177: number $number.register [
178: .ti\n($number.registeru
179: ])
180:
181: |attribute(fill; stack, init on;
182: on [
183: 'fi
184: ] off [
185: 'nf
186: ])
187:
188: |attribute(adjust; stack, init both;
189: right [
190: .adr
191: ] left [
192: .adl
193: ] both [
194: .adb
195: ] on [
196: .ad
197: ] off [
198: .na
199: ])
200:
201: |attribute(title; nostack;
202: $left $center $right [
203: .tl\(ts$left\(ts$center\(ts$right\(ts
204: ] $$. [
205: .tl\*$$.
206: ] $$.. [
207: .tl\*($$..
208: ] $ [
209: .tl$
210: ])
211:
212: |attribute(center; stack, default off;
213: on [
214: .ce9999
215: ] off [
216: .ce0
217: ])
218:
219: |attribute(center.block; stack, default off;
220: on [
221: .nr:Y 0
222: .br
223: .di:1
224: ] off [
225: .br
226: .di
227: .nr;q \n(.u
228: .nf
229: .nr;L \n(.L
230: .ls1
231: .nr;i \n(.i
232: .if\n(dl>\n(:Y .nr :Y \n(dl
233: .if\n(:Y<\n(.l .in (\n(.lu-\n(:Yu)/2u
234: .:1
235: .if\n(;q .fi
236: .ls\n(;L
237: .in\n(;iu
238: .rr;L ;i ;q
239: .rm:1
240: ])
241:
242: |attribute(text; nostack;
243: $ [$]
244: roman $ [\f1\&$\fP\&]
245: italics $ [\f2\&$\fP\&]
246: bold $ [\f3\&$\fP\&]
247: bolditalics $ [\f4\&$\fP\&]
248: cw $ [\f(CW\&$\fP\&])
249:
250: |attribute(error; nostack;
251: number $* $$. [
252: .tm"__FILE__":__LINE__: $* \n$$.
253: ] number $* $number.register [
254: .tm"__FILE__":__LINE__: $* \n($number.register
255: ] string $* $$. [
256: .tm"__FILE__":__LINE__: $* \n$$.
257: ] string $* $string.register [
258: .tm"__FILE__":__LINE__: $* \n($string.register
259: ] $* [
260: .tm"__FILE__":__LINE__: $*
261: ])
262:
263: |attribute(here; stack, default off;
264: on [
265: .if\n(:y .tm "__FILE__":__LINE__: Here's and/or Around's can not be nested
266: .nr:y 1
267: .br
268: .di:0
269: ] off [
270: .br
271: .di
272: .nr:d 1
273: .if(\n(dn>=\n(.t)&((\n(dn<(\n(.p-\n(:r-\n(:m)):\
274: (\n(nl>(\n(.p-\n(:r-\n(:o/2u+\n(:r)))\
275: .ne\n(.tu+1v
276: .nr;q \n(.u
277: .nf
278: .nr;L \n(.L
279: .ls1
280: .nr;i \n(.i
281: .in0
282: .rs
283: .:0
284: .nr:d 0
285: .if\n(;q .fi
286: .ls\n(;L
287: .in\n(;iu
288: .nr:y 0
289: .rr;L ;i ;q
290: .rm:0
291: ])
292:
293: |attribute(around; stack, default off;
294: on [
295: .if\n(:y .tm "__FILE__":__LINE__: Here's and/or Around's can not be nested
296: .nr:y 1
297: .nr;s \n(.s
298: .nr;f \n(.f
299: .nr;u \n(.u
300: .nr;j \n(.j
301: .nr;v \n(.v
302: .nr;L \n(.L
303: .nr;l \n(.l
304: .nr;i \n(.i
305: .ev1
306: .ps\n(;s
307: .vs\n(;sp+2p
308: .ft\n(;f
309: .nf
310: .if\n(;u .fi
311: .ad\n(;j
312: .vs\n(;vu
313: .ls\n(;L
314: .ll\n(;lu
315: .in\n(;iu
316: .ti\n(;iu
317: .hy14
318: .lt\n(;lu
319: |ifvalue around_width full [
320: .if\n(:C \{\
321: .ll\n(W0u
322: .lt\n(W0u \}
323: ]
324: .di:0
325: ] off [
326: .br
327: .di
328: |ifvalue around_width full [
329: .if\n(:C \{\
330: .ll\nWu
331: .lt\nWu \}
332: ]
333: .ev
334: .nr:z \n(:z%26+1
335: .if\n(:z-\n(:w=0 .tm "__FILE__":__LINE__: too many floating displays
336: .af;w a
337: .nr;w \n(:z
338: .rn:0 ?\n(;w
339: .nr!\n(;w 0
340: |ifvalue around_width full [
341: .nr!\n(;w 1
342: ]
343: |ifnotvalue around_width full [
344: .if!\n(:C .nr !\n(;w 1
345: ]
346: .nr|\n(;w \n(dn
347: .if(((\n(:z-\n(:w=1):(\n(:z+26-\n(:w=1))&((\n(!\n(;w=1)&(\n(:C<2))&\
348: ((\n(dn<\n(.t):((\n(dn>(\n(.p-\n(:r-\n(:m))&\
349: (\n(nl<=(\n(.p-\n(:r-\n(:o/2u+\n(:r))))) .)z
350: .nr:y 0
351: .rr;L ;f ;i ;j ;l ;s ;u ;v ;w
352: ])
353:
354: |attribute(around_placement; nostack;
355: [
356: .)w
357: ])
358:
359: |attribute(footnote; stack, default off;
360: on [
361: .if\n(:x .tm "__FILE__":__LINE__: Footnotes can not be nested
362: .nr:x 1
363: .nr;s \n(.s
364: .nr;f \n(.f
365: .nr;u \n(.u
366: .nr;j \n(.j
367: .nr;v \n(.v
368: .nr;L \n(.L
369: .nr;l \n(.l
370: .ev1
371: .ps\n(;s
372: .vs\n(;sp+2p
373: .ft\n(;f
374: .nf
375: .if\n(;u .fi
376: .ad\n(;j
377: .vs\n(;vu
378: .ls\n(;L
379: .ll\n(;lu
380: .in0
381: .ti0
382: .hy14
383: .lt\n(;lu
384: |ifvalue footnote_width full [
385: .if\n(:C \{\
386: .ll\n(W0u
387: .lt\n(W0u \}
388: ]
389: .da:F
390: .ie!\n(:q \{\
391: .nr;o \n(.o
392: .po0
393: .ps10
394: .vs12p
395: .ft1
396: .ie\n(.A=0 \l'72p'
397: .el __________
398: .ft
399: .vs
400: .ps
401: .po\n(;ou \}
402: .el.sp 1
403: ] off [
404: .br
405: .da
406: |ifvalue footnote_width full [
407: .if\n(:C \{\
408: .ll\nWu
409: .lt\nWu \}
410: .nr:v 1
411: ]
412: |ifnotvalue footnote_width full [
413: .if!\n(:C .nr :v 1
414: ]
415: .ev
416: .nr:x 0
417: .if!\n(:o-\n(:m \{\
418: .nr:o +\n(:Vu-1u
419: .nrdn +\n(:V-\n(.v \}
420: .nr:q +\n(dnu
421: .nr:o +\n(dnu
422: .if!\n(.pu-\n(nlu-.5p-\n(:ou .nr :o \n(.pu-\n(nlu-.5p
423: .if!\n(:ou-\n(:mu .nr :o \n(:mu
424: .if\n(:C>1&\n(:v .nr :o \n(:mu
425: .ch)f -\n(:ou
426: .rr;L ;f ;j ;l ;o ;s ;u ;v
427: ])
428:
429: |attribute(size; stack, default 10;
430: $ [|ifvalue inline on [\s$\&]|ifvalue inline off [
431: .ps$
432: ]])
433:
434: |attribute(space; stack, init 12;
435: $ [
436: .vs$
437: ])
438:
439: |attribute(SPACE; nostack;
440: [
441: .vs\n(.sp+2p
442: ])
443:
444: |attribute(font; stack, default roman;
445: roman [|ifvalue inline on [\&\f1\&]|ifvalue inline off [
446: .ft1
447: ]] italics [|ifvalue inline on [\&\f2\&]|ifvalue inline off [
448: .ft2
449: ]] bold [|ifvalue inline on [\&\f3\&]|ifvalue inline off [
450: .ft3
451: ]] bolditalics [|ifvalue inline on [\&\f4\&]|ifvalue inline off [
452: .ft4
453: ]] cw [|ifvalue inline on [\&\f(CW\&]|ifvalue inline off [
454: .ftCW
455: ]])
456:
457: |attribute(font.family; stack, default times;
458: times [
459: .fp1 R
460: .fp2 I
461: .fp3 B
462: .fp4 BI
463: ] palatino [
464: .fp1 PA
465: .fp2 PI
466: .fp3 PB
467: .fp4 PX
468: ] bembo [
469: .fp1 B1
470: .fp2 B2
471: .fp3 B3
472: .fp4 B4
473: ] optima [
474: .fp1 O1
475: .fp2 O2
476: .fp3 O3
477: .fp4 O4
478: ] souvenir [
479: .fp1 SV
480: .fp2 SI
481: .fp3 SB
482: .fp4 SX
483: ] helvetica [
484: .fp1 H
485: .fp2 HI
486: .fp3 HB
487: .fp4 HX
488: ] cw [
489: .fp1 CW
490: .fp2 I
491: .fp3 B
492: .fp4 BI
493: ] gothic [
494: .fp1 C
495: .fp2 CX
496: .fp3 TB
497: .fp4 TX
498: ] condensed [
499: .fp1 Hcond
500: .fp2 HcondI
501: .fp3 HcondB
502: .fp4 HlightI
503: ] narrow [
504: .fp1 Hr
505: .fp2 Hi
506: .fp3 Hb
507: .fp4 Hx
508: ])
509:
510: |attribute(if; nostack;
511: $test [
512: .if$test \
513: ] begin $test [
514: .if$test \{\
515: ] end [\}\c
516: ] else $test [
517: .ie$test \
518: ] else begin $test [
519: .ie$test \{\
520: ] else [
521: .el\
522: ] else begin [
523: .el\{\
524: ])
525:
526: |attribute(tab; nostack;
527: [\& ])
528:
529: |attribute(leader; nostack;
530: [\&&])
531:
532: |attribute(thick.line; nostack;
533: $ [
534: .ps24
535: \l'$'
536: .ps
537: ] [
538: .ps24
539: \l'\n(.lu'
540: .ps
541: ])
542:
543: |attribute(line; nostack;
544: $ [\l'$']
545: [\l'\n(.lu'])
546:
547: |attribute(box; nostack;
548: x [\s12\o'\(mu\(sq'\s0]
549: empty [\s12\(sq\s0]
550: [\(sq])
551:
552: |attribute(underline; stack, default off;
553: on [\kx]
554: off [\l'|\nxu\(ul'])
555:
556: |attribute(hyphenate; stack, init on;
557: on [
558: .hy14
559: ] off [
560: .nh
561: ])
562:
563: |attribute(case; stack, init any;
564: upper [
565: ] lower [
566: ] capitalize [
567: ] any [
568: ])
569:
570: |attribute(tab.stops; nostack;
571: $* [
572: .ta$*
573: ] [
574: .ta.5i 1.0i 1.5i 2.0i 2.5i 3.0i 3.5i 4.0i 4.5i 5.0i 5.5i 6.0i 6.5i 7.0i 7.5i
575: ])
576:
577: |attribute(set; nostack;
578: $* $number [
579: |for i in $* {
580: .nr$i $number
581: }] string $* $string [
582: |for i in $* {
583: .ds$i $string
584: }])
585:
586: |attribute(store; nostack;
587: $* $$. [
588: |for i in $* {
589: .nr$i \n$$.
590: }] $* $number.register [
591: |for i in $* {
592: .nr$i \n($number.register
593: }] string $* $$. [
594: |for i in $* {
595: .ds$i \*$$.
596: }] string $* $string.register [
597: |for i in $* {
598: .ds$i \*($string.register
599: }] number.from.string $* $$. [
600: |for i in $* {
601: .nr$i \*$$.
602: }] number.from.string $* $string.register [
603: |for i in $* {
604: .nr$i \*($string.register
605: }] string.from.number $* $$. [
606: |for i in $* {
607: .ds$i \n$$.
608: }] string.from.number $* $number.register [
609: |for i in $* {
610: .ds$i \n($number.register
611: }] width $* $$. [
612: |for i in $* {
613: .nr$i \w'\*$$.'
614: }] width $* $number.register [
615: |for i in $* {
616: .nr$i \w'\*($number.register'
617: }] indent $* [
618: |for i in $* {
619: .nr$i \n(.i
620: }] linelength $* [
621: |for i in $* {
622: .nr$i \n(.l
623: }] pagewidth $* [
624: |for i in $* {
625: .nr$i \nWu
626: }] totrap $* [
627: |for i in $* {
628: .nr$i \n(.t
629: }] pageoffset $* [
630: |for i in $* {
631: .nr$i \n(.o
632: }] diversionheight $* [
633: |for i in $* {
634: .nr$i \n(dn
635: }])
636:
637: |attribute(clear; nostack;
638: $* [
639: |for i in $* {
640: .nr$i 0
641: }] string $* [
642: .rm$*
643: ])
644:
645: |attribute(rename; nostack;
646: $from $to [
647: .rn$from $to
648: ])
649:
650: |attribute(add; nostack;
651: $result $$. $* [
652: .nr$result \n$$.
653: |for i in $* {
654: .nr$result +\n($i
655: }] $result $operand $* [
656: .nr$result \n($operand
657: |for i in $* {
658: .nr$result +\n($i
659: }] $result $$. [
660: .nr$result +\n$$.
661: ] $result $operand [
662: .nr$result +\n($operand
663: ] constant $result $constant $* [
664: .nr$result $constant
665: |for i in $* {
666: .nr$result +$i
667: }] constant $result $constant [
668: .nr$result +$constant
669: ] string $string $text [
670: .as$string $text
671: ] string.from.number $string $$. [
672: .as$string \n$$.
673: ] string.from.number $string $number.register [
674: .as$string \n($number.register
675: ] string.from.string $string $$. [
676: .as$string \*$$.
677: ] string.from.string $string $string.register [
678: .as$string \*($string.register
679: ])
680:
681: |attribute(sub; nostack;
682: $result $$. $* [
683: .nr$result \n$$.
684: |for i in $* {
685: .nr$result -\n($i
686: }] $result $operand $* [
687: .nr$result \n($operand
688: |for i in $* {
689: .nr$result -\n($i
690: }] $result $$. [
691: .nr$result -\n$$.
692: ] $result $operand [
693: .nr$result -\n($operand
694: ] constant $result $constant $* [
695: .nr$result $constant
696: |for i in $* {
697: .nr$result -$i
698: }] constant $result $constant [
699: .nr$result -$constant
700: ])
701:
702: |attribute(incr; nostack;
703: $* [
704: |for i in $* {
705: .nr$i +1
706: }])
707:
708: |attribute(decr; nostack;
709: $* [
710: |for i in $* {
711: .nr$i -1
712: }])
713:
714: |attribute(protect; nostack;
715: $ [
716: .ne$
717: ] [
718: .ne3
719: ])
720:
721: |attribute(warn.orphan; nostack;
722: $ [
723: ] [
724: ])
725:
726: |attribute(column; nostack;
727: $column $width $offset [
728: .if\n(:c<$column .nr :c $column
729: .nrW$column $width
730: .nrO$column $offset
731: ] width $width [
732: .nrW\n(:c $width
733: ] offset $offset [
734: .nrO\n(:c $offset
735: ] next [
736: .nr:c +1
737: ] clear [
738: .rr:c
739: ] new [
740: .ie!\n(:C .tm "__FILE__":__LINE__: not in multi-column mode
741: .el\{\
742: .br
743: .ne\n(.tu+1v \}
744: ] new $ [
745: .ie!\n(:C .tm "__FILE__":__LINE__: not in multi-column mode
746: .el\{\
747: .br
748: .ne\n(.tu+1v
749: .nr;d \n(.lu-\n(W\n(:Cu
750: .nr:C $
751: .nrO \n(O$u
752: .po\nOu
753: .nrW \n(W$u+\n(;du
754: .ll\nWu
755: .lt\nWu
756: .rr;d \}
757: ] old $ [
758: .ie!\n(:C .tm "__FILE__":__LINE__: not in multi-column mode
759: .el\{\
760: .br
761: .if\n(nl>\n(U\n(:C \
762: .mkU\n(:C
763: .nr;d \n(.lu-\n(W\n(:Cu
764: .nr:C $
765: .nrO \n(O$u
766: .po\nOu
767: .nrW \n(W$u+\n(;du
768: .ll\nWu
769: .lt\nWu
770: .rs
771: .ie\n(U$ .sp |\n(U$u
772: .el.sp |\n(U0u
773: .ns
774: .rr;d \}
775: ] on [
776: .ie\n(:C .tm "__FILE__":__LINE__: already in multi-column mode
777: .el\{\
778: .br
779: .nr:C 1
780: .nrW \n(W1u
781: .ll\nWu
782: .lt\nWu
783: .nrO \n(O1u
784: .po\nOu
785: .mkU0
786: .ns
787: .rrU1 U2 U3 U4 U5 U6 U7 U8 U9
788: .rr;d \}
789: ] off [
790: .ie!\n(:C .tm "__FILE__":__LINE__: already in full page mode
791: .el\{\
792: .br
793: .if\n(nl>\n(U\n(:C \
794: .mkU\n(:C
795: .nr;d \n(.lu-\n(W\n(:Cu
796: .nr:C 0
797: .nrO \n(O0u
798: .po\nOu
799: .nrW \n(W0u+\n(;du
800: .ll\nWu
801: .lt\nWu
802: .rs
803: .sp|\n(U0u
804: .if\n(nl<\n(U1 \
805: .sp|\n(U1u
806: .if\n(nl<\n(U2 \
807: .sp|\n(U2u
808: .if\n(nl<\n(U3 \
809: .sp|\n(U3u
810: .if\n(nl<\n(U4 \
811: .sp|\n(U4u
812: .if\n(nl<\n(U5 \
813: .sp|\n(U5u
814: .if\n(nl<\n(U6 \
815: .sp|\n(U6u
816: .if\n(nl<\n(U7 \
817: .sp|\n(U7u
818: .if\n(nl<\n(U8 \
819: .sp|\n(U8u
820: .if\n(nl<\n(U9 \
821: .sp|\n(U9u
822: .ti\n(.iu
823: .rrU1 U2 U3 U4 U5 U6 U7 U8 U9
824: .ns
825: .rr;d \}
826: ] 2 [
827: .ie\n(:C .tm "__FILE__":__LINE__: already in multi-column mode
828: .el\{\
829: .br
830: .nr:C 1
831: .nrW0 \nW
832: .nrW \n(.lu*8u/17u
833: .nrW1 \nW
834: .nrW2 \nW
835: .nrO0 \n(.ou
836: .nrO1 \n(.ou
837: .nrO2 \n(.lu*9u/17u+\n(.ou
838: .ll\nWu
839: .lt\nWu
840: .nr:c 2
841: .mkU0
842: .ns
843: .rrU1 U2 \}
844: ])
845:
846: |attribute(divert.string; stack, default off;
847: $string.name [
848: .ds$string.name ]
849: off [
850: ])
851:
852: |attribute(divert.number; stack, default off;
853: $number.name [
854: .nr$number.name ]
855: off [
856: ])
857:
858: |attribute(divert.output; stack, default off;
859: on $string.name [
860: .nr;s \n(.s
861: .nr;f \n(.f
862: .nr;u \n(.u
863: .nr;j \n(.j
864: .nr;v \n(.v
865: .nr;L \n(.L
866: .nr;l \n(.l
867: .ev1
868: .ps\n(;s
869: .vs\n(;sp+2p
870: .ft\n(;f
871: .nf
872: .if\n(;u .fi
873: .ad\n(;j
874: .vs\n(;vu
875: .ls\n(;L
876: .ll\n(;lu
877: .in0
878: .ti0
879: .hy14
880: .lt\n(;lu
881: .di$string.name
882: ] off [
883: .br
884: .di
885: .ev
886: .rr;L ;f ;j ;l ;o ;s ;u ;v
887: ])
888:
889: |attribute(divert.input; stack, default off;
890: on $string.name [
891: .eo
892: .de$string.name\(ts\(ts
893: ] off [
894: .\(ts\(ts
895: .ec
896: ])
897:
898: |attribute(append.output; stack, default off;
899: on $string.name [
900: .nr;s \n(.s
901: .nr;f \n(.f
902: .nr;u \n(.u
903: .nr;j \n(.j
904: .nr;v \n(.v
905: .nr;L \n(.L
906: .nr;l \n(.l
907: .ev1
908: .ps\n(;s
909: .vs\n(;sp+2p
910: .ft\n(;f
911: .nf
912: .if\n(;u .fi
913: .ad\n(;j
914: .vs\n(;vu
915: .ls\n(;L
916: .ll\n(;lu
917: .in0
918: .ti0
919: .hy14
920: .lt\n(;lu
921: .da$string.name
922: ] off [
923: .br
924: .da
925: .ev
926: .rr;L ;f ;j ;l ;o ;s ;u ;v
927: ])
928:
929: |attribute(append.input; stack, default off;
930: on $string.name [
931: .eo
932: .am$string.name\(ts\(ts
933: ] off [
934: .\(ts\(ts
935: .ec
936: ])
937:
938: |attribute(invoke; nostack;
939: on $offset $what [
940: .wh15i $what
941: .ch$what \n(nlu+$offset
942: ] on number $$. $what [
943: .wh15i $what
944: .ch$what \n(nlu+\n$$.u
945: ] on number $number.register $what [
946: .wh15i $what
947: .ch$what \(nlu+\n($number.registeru
948: ] at constant $constant $what [
949: .wh15i $what
950: .ch$what $constant
951: ] at number $$. $what [
952: .wh15i $what
953: .ch$what \n$$.u
954: ] at number $number.register $what [
955: .wh15i $what
956: .ch$what \n($number.registeru
957: ] end [
958: .br
959: .di
960: ] off $what [
961: .ch$what
962: ])
963:
964: |attribute(remember; nostack;
965: $ [
966: .mk$
967: ])
968:
969: |attribute(return; nostack;
970: $$. [
971: .sp|\n$$.u
972: .ti\n(.iu
973: ] $ [
974: .sp|\n($u
975: .ti\n(.iu
976: ])
977:
978: |attribute(goto; nostack;
979: $ [
980: .sp|$
981: .ti\n(.iu
982: ])
983:
984: |attribute(string; nostack;
985: $$. [\*$$.]
986: $string.register [\*($string.register]
987: roman $$. [\f1\&\*$$.\fP\&]
988: italics $$. [\f2\&\*$$.\fP\&]
989: bold $$. [\f3\&\*$$.\fP\&]
990: bolditalics $$. [\f4\&\*$$.\fP\&]
991: cw $$. [\f(CW\&\*$$.\fP\&]
992: roman $string.register [\f1\&\*($string.register\fP\&]
993: italics $string.register [\f2\&\*($string.register\fP\&]
994: bold $string.register [\f3\&\*($string.register\fP\&]
995: bolditalics $string.register [\f4\&\*($string.register\fP\&]
996: cw $string.register [\f(CW\&\*($string.register\fP\&])
997:
998: |attribute(macro; nostack;
999: $ [
1000: .$
1001: ])
1002:
1003: |attribute(number; nostack;
1004: $$. [\n$$.]
1005: $number.register [\n($number.register]
1006: ++ $$. [\n+$$.]
1007: ++ $number.register [\n+($number.register]
1008: format $* $format [
1009: |for i in $* {
1010: .af$i $format
1011: }]
1012: incr $* $incr [
1013: |for i in $* {
1014: .nr$i +0 $incr
1015: }]
1016: format.from.string $* $$. [
1017: |for i in $* {
1018: .af$i \*$$.
1019: }]
1020: incr $* $incr [
1021: |for i in $* {
1022: .nr$i +0 $incr
1023: }]
1024: format.from.string $* $format [
1025: |for i in $* {
1026: .af$i \*($format
1027: }]
1028: incr $* $incr [
1029: |for i in $* {
1030: .nr$i +0 $incr
1031: }])
1032:
1033: |attribute(list.pre; stack, default;
1034: [
1035: .rml2
1036: ]
1037: $pre [
1038: .dsl2 $pre
1039: ])
1040:
1041: |attribute(list.format; stack, default;
1042: [
1043: .rml3
1044: ]
1045: $format [
1046: .dsl3 $format
1047: ])
1048:
1049: |attribute(list.post; stack, default;
1050: [
1051: .rml4
1052: ]
1053: $post [
1054: .dsl4 $post
1055: ])
1056:
1057: |attribute(list.indent; stack, default;
1058: [
1059: .rml5
1060: ]
1061: $indent [
1062: .dsl5 $indent
1063: ])
1064:
1065: |attribute(list; nostack;
1066: off [
1067: .)C ;i l1 \*(l1
1068: .in\n(;iu
1069: .)C l0 l0 \*(l0
1070: .rm;i
1071: ] on [
1072: .dsl1 \n(.i \*(l1
1073: .in+\w'\*(l5'u
1074: .afl0 0
1075: .dsl0 \n(l0 \*(l0
1076: .nrl0 0 1
1077: ])
1078:
1079: |attribute(file.information; nostack;
1080: [
1081: .lf__LINE__ __FILE__
1082: ])
1083:
1084: |attribute(reference.style; nostack;
1085: acm [|reference_style(acm)
1086: ] apa [|reference_style(apa)
1087: ] att [|reference_style(att)
1088: ] ieee [|reference_style(ieee)
1089: ] lsa [|reference_style(lsa)
1090: ] pami [|reference_style(pami)
1091: ] spectrum [|reference_style(spectrum)
1092: ])
1093:
1094: |attribute(reference.option; nostack;
1095: tm [|reference_style(same tm)
1096: ] rp [|reference_style(same rp)
1097: ] nroff [|reference_style(same nroff)
1098: ] troff [|reference_style(same troff)
1099: ] sort [|reference_style(same sort)
1100: ] sequence [|reference_style(same sequence)
1101: ] a [|reference_style(same a)
1102: ] d [|reference_style(same d)
1103: ] t [|reference_style(same t)
1104: ] ad [|reference_style(same ad)
1105: ] at [|reference_style(same at)
1106: ] da [|reference_style(same da)
1107: ] dt [|reference_style(same dt)
1108: ] ta [|reference_style(same ta)
1109: ] td [|reference_style(same td)
1110: ] adt [|reference_style(same adt)
1111: ] atd [|reference_style(same atd)
1112: ] dat [|reference_style(same dat)
1113: ] dta [|reference_style(same dta)
1114: ] tad [|reference_style(same tad)
1115: ] tda [|reference_style(same tda)
1116: ])
1117:
1118: |attribute(reference; stack, default off;
1119: database [|reference_database<]
1120: [|reference_include<]
1121: list [|reference_list<]
1122: on [|reference<]
1123: off [>])
1124:
1125: |attribute(reference.placement; nostack;
1126: [|reference_placement
1127: ])
1128:
1129: |attribute(table; stack, default off;
1130: on [
1131: .TS
1132: ] off [
1133: .TE
1134: ])
1135:
1136: |attribute(ipa; stack, default off;
1137: on [@ipa(]
1138: off [)])
1139:
1140: |attribute(picture; stack, default off;
1141: on [
1142: .PS
1143: ] off [
1144: .PE
1145: ])
1146:
1147: |attribute(ped; stack, default off;
1148: on [
1149: .GS
1150: ] off[
1151: .GE
1152: ])
1153:
1154: |attribute(ideal; stack, default off;
1155: on [
1156: .IS
1157: ] off[
1158: .IE
1159: ])
1160:
1161: |attribute(equation; stack, default off;
1162: on [
1163: .br
1164: .di:4
1165: .EQ
1166: ] off [
1167: .EN
1168: .br
1169: .di
1170: .rm:4
1171: |ifvalue center.block on [
1172: .if\w@\*(10\*(ES@ \{\
1173: .if\n(:Y<\w@\*(10@ .nr :Y \w@\*(10@
1174: \!\*(10\h'\\n(.lu-\w@\*(10\*(ES@u-\\n(.iu'\*(ES
1175: .rr:D :E \}]
1176: |ifvalue center on [
1177: .if\w@\*(10\*(ES@ .tl \(ts\(ts\*(10\(ts\*(ES\(ts]
1178: |ifnotvalue center.block on [ |ifnotvalue center on [
1179: .if\w@\*(10\*(ES@ \{\
1180: .pc
1181: .tl\(ts\h'\n(.iu'\*(10\(ts\(ts\*(ES\(ts
1182: .pc% \}]]
1183: .rm10
1184: ])
1185:
1186: |attribute(inline.equation; stack, default off;
1187: on []
1188: off [])
1189:
1190: |attribute(graph; stack, default off;
1191: on [
1192: .G1
1193: ] off [
1194: .G2
1195: ])
1196:
1197: |attribute(bargraph; stack, default off;
1198: on [
1199: .B1
1200: ] off [
1201: .B0
1202: ])
1203:
1204: |attribute(computeroutput; stack, default off;
1205: on [
1206: .CW
1207: ] off [
1208: .CN
1209: ])
1210:
1211: |attribute(citation; nostack;
1212: save on [
1213: .CD "]
1214: save off string $$. [" "\*$$."
1215: ] save off string $string.register [" "\*($string.register"
1216: ] save off number $$. [" "\n$$."
1217: ] save off number $number.register [" "\n($number.register"
1218: ] save string $name $$. [\&\c
1219: .CD "$name" "\*$$."
1220: ] save string $name $string.register [\&\c
1221: .CD "$name" "\*($string.register"
1222: ] save number $name $$. [\&\c
1223: .CD "$name" "\n$$."
1224: ] save number $name $number.register [\&\c
1225: .CD "$name" "\n($number.register"
1226: ] remember on [\&\c
1227: .CU "]
1228: remember off ["]
1229: remember string $name [\&\c
1230: .CU "$name"])
1231:
1232: |attribute(index; stack, default off;
1233: on [\&\c
1234: .tmix: ]
1235: off [ \nP
1236: \&])
1237:
1238: |attribute(contents; nostack;
1239: $category $level $sequence $text [
1240: .tm.TC $category $level \*($sequence \*($text \nP
1241: ])
1242:
1243: |attribute(white.text; nostack;
1244: $text [|ifvalue verbatim off []|ifvalue verbatim on [$text]])
1245:
1246: |attribute(nl.paragraph; nostack;
1247: [|ifvalue verbatim on [
1248: ]|ifvalue verbatim off []])
1249:
1250: |attribute(format.type; stack, init none;
1251: model [
1252: .dsf0 model
1253: ] acm [
1254: .dsf0 acm
1255: ] none [
1256: .dsf0 none
1257: ])
1258:
1259: |attribute(list.type; stack, default none;
1260: fixed []
1261: calculated []
1262: none [])
1263:
1264: |attribute(list.spacing; stack, default off;
1265: off []
1266: on [])
1267:
1268: |attribute(verbatim; stack, default off;
1269: off []
1270: on [])
1271:
1272: |attribute(draft; stack, default off;
1273: off []
1274: on [])
1275:
1276: |attribute(sectioning; stack, default bysection;
1277: bysection []
1278: bychapter []
1279: byappendix [])
1280:
1281: |attribute(globalparagraph.style; stack, default flushed;
1282: indented []
1283: numbered []
1284: flushed [])
1285:
1286: |attribute(localparagraph.style; stack, default flushed;
1287: indented []
1288: numbered []
1289: flushed [])
1290:
1291: |attribute(inline; stack, default on;
1292: off []
1293: on [])
1294:
1295: |attribute(footnote_width; stack, default normal;
1296: narrow []
1297: full []
1298: normal[])
1299:
1300: |attribute(around_width; stack, default normal;
1301: narrow []
1302: full []
1303: normal[])
1304:
1305: |attribute(sawreference; stack, default off;
1306: off []
1307: on [])
1308:
1309: |attribute(sawabstract; stack, default off;
1310: off []
1311: on [])
1312:
1313: |attribute(sawkeywords; stack, default off;
1314: off []
1315: on [])
1316:
1317: |attribute(sawoverflow; stack, default off;
1318: off []
1319: on [])
1320:
1321: |attribute(sawtitlebox; stack, default off;
1322: off []
1323: on [])
1324:
1325: |attribute(sawendnote; stack, default off;
1326: off []
1327: on [])
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.