.ds TI FlexFAX Release Notes .\".ds VE Document Version X.X .\".ds SE IRIS-4D Series .\" .\" DO *NOT* EDIT THIS FILE below this line. As of the 7.5x9 changes, .\" there are "No user servicable parts inside." Thank you :-) .\" .\" The xM register holds the "mode" for the current operation. It may be .\" set on the command line, via "-rx", where is a number. The modes .\" are as follows: .\" .\" say: to print: .\" .\" -rx0 Chapters, the default. .\" -rx1 Appendices. .\" -rx2 Table of Contents, List of Tables, and List of Figures. .\" -rx3 Index .\" .\" Other values are undefined. .\" .\" The mode is quickly copied into the xM register, since we use "x" for .\" various other purposes throughout the macros. .\" .nr xM 0\nx \" The mode, passed from the command line. . .PH "''''" .PF "''''" .if !\n(.A \{. .fp 1 PR .fp 2 PI .fp 3 PB .fp 4 PX \" was HO .fp 5 H .fp 6 HB .fp 7 C .fp 8 CB\} .hw trans-ceiver .hw work-station .ds u U\s-2NIX\s0 .ds t \v`2p`\o@@@\v`-2p` .ds ^ \|\v`2p`^\v`-2p`\| .ds Lf List of Figures .ds Lt List of Tables .ds Lx List of Exhibits .ds Le List of Equations .nr L 11i \" page length, plus 2 inches at the top .pl \nLu \" set it now. . .PH "''''" \" clear all headers .EH "''''" .OH "''''" . .nr xI 1.25i \" paragraph offset . .nr O .75i \" The real page offset, .nr O +\n(xIu \" plus the offset of the running text. .po \nOu \" Set it now. . .nr xW 6i \" The real line length. .nr W \n(xWu-\n(xIu \" The effective line length, without the offset. .ev 0 .ll \nWu \" set ev 0 line length .lt \nWu \" set ev 0 title length .ev \" pop to previous environment .ev 1 .ll \nWu \" set ev 1 line length .lt \nWu \" set ev 1 title length .ev \" pop to previous environment .ev 2 .ll \nWu \" set ev 2 line length .lt \nWu \" set ev 2 title length .ev \" pop to previous environment .S 10 12 .nr Of 0 .nr Cl 3 .ds TT 0 26p 62p 106p 106p+44p \" ToC (and LoT, LoF) "tab stops" .rm )E \" remove old method of ToC emmissions .nr De 0 .nr Df 5 .nr Ej 0 .nr Li 3 .nr Pi 3 .nr Ps 2 .nr Si 0 .nr Hc 0 .nr Hb 7 .nr Hs 7 .nr Hu 4 .nr x |0i . .nr Tp 2.75i \" Default top of page, for chaptes/appendices .\" if \n(xM=2 .nr Tp 232p \" ToC, LoT, LoF .\" if \n(xM=3 .nr Tp 230p \" Index . .nr N 5 . . . \" before changing the "last text line" and "footer position" . \" traps, it is important to remove the existing traps. There are . \" two traps set at :m, and one at :r. . .wh -\n(:mu .wh -\n(:mu .wh -\n(:ru . . \" Now it is safe to reset the last text baseline trap and the . \" footer trap registers, and then set the traps themselves: . .nr :m 1.25i \" last text line trap (from bottom of page) .nr :r .625i \" footer position trap (from bottom of page) .nr :r +1v \" compensate for some -mm spacing . .nr :o \n(:mu \" save "last permitted baseline" value in :o for later 'wh -\n(:mu )f \" set the first trap 'ch )f 15i \" move it for a sec... 'wh -\n(:mu )n \" set the second trap, 'ch )f -\n(:mu \" and move the first one back. 'wh -\n(:ru )b \" set the footer trap. .nr :M \n(:mu \" save the value in :M for later, also. . .\" Parameters for each level of heading: . .ie \n(xM=1 .HM A 1 1 1 1 1 1 \" heading mark style for appendices .el .HM 1 1 1 1 1 1 1 \" heading mark style for chapters . .ds HF 6 6 6 6 6 6 6 \" font .ds HP 14 12 11 10 10 10 10 \" point size .ds HV 12 12 12 12 12 12 12 \" vertical spacing .ds HB 0 48p 38p 38p 38p 38p 38p \" space before .ds HA 100p 28p 28p 28p 28p 28p 28p \" space after .ds HN 1.25i 0 .625i 1.25i 1.25i 1.25i 1.25i \" mark indent .ds HT 1.25i .625i 1.25i 1.25i 1.25i 1.25i 1.25i \" text indent .ds HE 9i 2.75i 1.3125i 6v 6v 6v 6v \" ``need'' amount to spring new pages . .nr xH 34p \" vertical space from chapter number to chapter title . .de TP .rs .sp |\\n(Tpu .ns .. .de Ex .lg 0 .ls 1 .nf .sp .\".ie '\\$1'' .in +.25i .\".el .in +.0i .if !\n(.A .ft 7 .ta 8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m,+8m .\".nr xp \\n(.s \" save current point size (from .s) in register .xp .ps 9 .\".nr xv \\n(.v \" save current vertical space (from .v) in register .xv .vs 10 .. .\" end display of program excerpts and commands .de Ee .if !\n(.A .ft 1 .\" if arg given then don't space. Kludge in case at very bottom of page at .\" end of chapter. .\".ie '\\$1'' .in -.25i .\".el .in -.0i .fi .ls .lg 1 .ps 10 .vs 12 .sp .ns .\".ps \\n(xp \" restore point size from register .xp .\".vs \\n(xv \" restore vertical space from register .xv .. .de Cf .lg 0 .ls 1 .nf .sp .in +.25i .if !\n(.A .ft 7 .ta 4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m,+4m .nr xp \\n(.s \" save current point size (from .s) in register .xp .ps 9 .nr xv \\n(.v \" save current vertical space (from .v) in register .xv .vs 10 .. .de Ce .if !\n(.A .ft 1 .in -.25i .\".sp .fi .ls .lg 1 .ps \\n(xp \" restore point size from register .xp .vs \\n(xv \" restore vertical space from register .xv .. .de Cd .ie \\$2=1 .ds Na FORTRAN .el .ds Na C .nf .sp .nr xp \\n(.s .ps 9 .ft 6 \(bx \\*(Na Program: \\$1 .ta 2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m,+2m .ps 8 .ft 7 .. .de Cq .fi .ps \\n(xp .ft 1 .\".sp .. .de BX \\$3\(br\|\f7\s10\\$1\s0\fP\|\(br\l'|0\(rn'\l'|0\(ul'\\$2 .. .de I \\$3\f2\\$1\fP\\$2 .. .de B \\$3\f3\\$1\fP\\$2 .. .de T \\$3\f7\s-1\\$1\s0\fP\\$2 .. .de bT \\$3\f8\s-1\\$1\s0\fP\\$2 .. .de hb \\$3\f6\s-2\\$1\s0\fP\\$2 .. .de HX . .\" The )I macro picks a single word out of a list, and puts it in string }3. .\" For example, ".)I 3 one two three four five" will set }3 to "three". We .\" use this macro several times to pick the right word out of the strings .\" HV, HP, HF, etc. to set the dimensions for the headings at each level. .\" The number in \\$1 is the level, the rest of the arguments are taken from .\" one of the strings of dimensions (.e.g. HV). . .)I \\$1 \\*(HE \" set }3 to "page eject" limit .ie 0\\*(}3\{. \" if it is defined, and greater than 0, . ne \\*(}3u \" need that much. .\} .el \{. . ne 6v .\} . .in 0 \" our numbers are relative to 0 indent . . \" special handling for level 1 headings: .if \\$1=1 \{. .if !\\$3"" .ds SH \\$3 . .if \\nP%2=0&\\n(H1>1 \{. \" if new page is even, and chapter > 1... . rs \" turn spacing back on, . bp \" start another new page. .\} .nr P 1 \" reset page counter to 1. .\} \" end of special handling for level 1 . .if (\\$1<=\\n(Cl) \{. \" if the level is righ, emit ToC info . tm TC .xT \\n(;1 \\$1 "\\*(}0" "\\$3" \\nP \\n(H1 .\} . \" rebuild the mark, one piece at a time: .ds }0 .)I \\$1 \\*(HN \" set }3 to the "mark indent" value .as }0 \\h\\*(}3 . .\" We must set point size and font so "width" function works right later: .)I \\$1 \\*(HP \" set }3 to the point size for this level .ps \\*(}3 .)I \\$1 \\*(HF \" set }3 to the font for this level .ft \\*(}3 . . \" add the parts of the number to the mark, .if (\\n(Hu>0)&(\\$1<\\n(Hu)\{. \" but keeping an eye on the "Hu" register. . if \\$1>=2 .as }0 \\n(H1.\\n(H2 . if \\$1>=3 .as }0 .\\n(H3 . if \\$1>=4 .as }0 .\\n(H4 . if \\$1>=5 .as }0 .\\n(H5 . if \\$1>=6 .as }0 .\\n(H6 . if \\$1>=7 .as }0 .\\n(H7 .\} .)I \\$1 \\*(HT \" get "text indent" value, add to mark .nr x \\*(}3-\\w\\*(}0 .as }0 \\h\\nxu .. . .de HY .po -1.25i \" just before printing, push the offset left .)I \\$1 \\*(HB \" set }3 to "space before" for this level .if !\\*(}3 \{. \" if HB value is not empty... . . \" Note that some spacing either has been done or will be done by . \" the .H macro; it's either .5v or 1.5v, so we'll just compensate . \" for those values here. . . ie \\$1=1 \{\. \" for chapter headings... . nr x \\*(}3 \" target is HB, . sp |\\n(Tpu+\\nxu \" absolute position from top of page . \} . el \{\. \" for other headings... . nr x (\\*(}3)-1.5v \" target is HB value minus 1.5v . sp \\nxu \" normal spacing from here. . \} .\} . . \" special case chapter prefix for level 1... .if \\$1=1 \{\ . ft 2 . ps 12 . )I \\$1 \\*(HN . ie \\n(xM=1 \\h'\\*(}3'Appendix \\n(H1 . el \\h'\\*(}3'Chapter \\n(H1 . sp \\n(xHu-1v . ps .\} . .. . .de HZ . . \" Note that some spacing either has been done or will be done . \" by the .H macro; we compensate for it here, with -1.5v . .)I \\$1 \\*(HA \" set }3 to "space after" for this level .nr x (\\*(}3)-1.5v \" our value, minus spacing already done .if !\\*(}3 .sp \\nxu \" if not empty, do the space after . \" otherwise, there was no HA, so do nothing. .ns .po +1.25i \" after printing, put the offset back .)R \" restore normal indents, sizes, etc. . .if \\$1=1 \{. \" special processing for chapter headings: . nr :p . SA 0 . ev 2 . lt \nWu . PF "''''" . . \" Because the footer strings get scanned four times (once now, while . \" this macro is being defined, and then three more times as described . \" in the manual), it is necessary to use eight backslashes to get just . \" one in the right place at the right time. . . \" Except, of course, the chapter title, which is in $3 right now, . \" so we must use it right now, with two backslashes. . .\". EF "#\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP \\&\\\\\\\\s9\\$3##\\\\\\\\*(SE\\\\\\\\s0#" .\". OF "#\\\\\\\\s9\\\\\\\\*(VE\\\\\\\\s0##\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP#" . EF "#\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP##\\\\\\\\s9\\$3\\\\\\\\s0#" . OF "#\\\\\\\\s9\\\\\\\\*(TI\\\\\\\\s0##\\\\\\\\f6\\\\\\\\n(H1-\\\\\\\\nP\\\\\\\\fP#" . ev .\} .. .de TB .sp 12p .nr !1 1 .ps -1 .nr x \\n+(Tb .tm TB .xT -1 Table \\n(H1-\\nx "\\$1" \\nP \\n(H1 .ie \\nN=5 .)F \f6Table 1 \\nx "\f1\\$1\f1" "\\n(H1-" 0\f1 .el .)F \f6Table 1 \\nx "\f1\\$1\f1" "\\$2" 0\\$3\f1 .)R .. .de EC .nr !2 1 .nr x \\n+(Ec .tm EC .xT -1 Equation \\n(H1-\\nx "\\$1" \\nP \\n(H1 .ie \\nN=5 .)F \f6Equation 2 \\nx "\f5\\$1\f1" "\\n(H1-" 0 .el .)F \f6Equation 2 \\nx "\f5\\$1\f1" "\\$2" 0\\$3 .. .de EX .nr !3 1 .nr x \\n+(Ex .tm EX .xT -1 Exhibit \\n(H1-\\nx "\\$1" \\nP \\n(H1 .ie \\nN=5 .)F \f6Exhibit 3 \\nx "\f5\\$1\f1" "\\n(H1-" 0 .el .)F \f6Exhibit 3 \\nx "\f5\\$1\f1" "\\$2" 0\\$3 .. .de FG .sp 12p .nr !0 1 .ps -1 .nr x \\n+(Fg .tm FG .xT -1 Figure \\n(H1-\\nx "\\$1" \\nP \\n(H1 .ie \\nN=5 .)F \f6Figure 0 \\nx "\f1\\$1\f1" "\\n(H1-" 0 .el .)F \f6Figure 0 \\nx "\f1\\$1\f1" "\\$2" 0\\$3 .)R .. .de KS .\" br .\" \".ev 1 .\" nr ni \\n(.iu .\" in 0 .\" ll \\nWu-\\n(xIu .\" fi .\" di XX .DS .. .de KE .\" br .\" di .\" if (\\n(dnu>=\\n(.t) .bp .\" nf .\" ll \\nWu .\" in \\n(niu .\" XX .\" )R \" reset everything .\" \".ev .DE .. .de Ix .tm IX \\n(H1-\\nP \\$1 .. .deFS 'nr:s +1 .if\\n(:F .)D "FS:missing FE" .if\\n(:F .FE .if\\n(:y .)D "FS:missing DE" .if\\n(:y .DE .nr:F 1 .if!\\n(!F \{\ .ie\\n(;C .nr !F 2 .el.nr !F 1 \} .ie(\\n(;C>0)&((\\n(;b=1):((\\n(;j=1)&(\\n(!F=1))) \{\ .nr!F 1 .>W \} .el.if ((\\n(;C=0)&(\\n(;j=1)&(\\n(!F=2)) .>N 'ev1 'll \\nWu 'di>b .nr:D 1 .)R 'nh 'if\\n(:i 'hy 14 'ad 'if\\n(:j 'na 'ps-2 'vs\\n(.sp+1p 'sp\\n(Fsu*3p 'if\\n(.$ 'ds }y \\$1\ 'if!\\n(.$ 'ds }y \\*(]y.\ 'if\\n(:k \\*(}y\&\c 'if!\\n(:k 'nr ;v \w\0\0.\  'if!\\n(:k 'nr ;u \w\\*(}y 'if!\\n(:k 'in +\\n(;vu 'if!\\n(:k 'if !\\n(:l 'ti -\\n(;vu 'if!\\n(:k 'if !\\n(:l 'if !\\n(;u-\\n(;v \\*(}y\h\\n(;vu-\\n(;uu\&\c 'if!\\n(:k 'if !\\n(:l 'if \\n(;u-\\n(;v \\*(}y\&\c 'if!\\n(:k 'if \\n(:l 'if \\n(;v-\\n(;u 'ti -\\n(;uu 'if!\\n(:k 'if \\n(:l 'if !\\n(;v-\\n(;u 'ti -\\n(;vu 'if!\\n(:k 'if \\n(:l \\*(}y\&\c .. .deFE .if!\\n(:F .)D "FE:no FS active" .br 'di .nr:D 0 .if\\n(;c .nr :D \\n(;c 'in0 'nf 'na .if!\\n% \{\ 'da>c .>b \!. br 'di .if!(\\n(:D=3) \{\ .nr:G 1 .da>d .>b \!. br .di 'br\} 'br\} .if!((\\n%=0)*(\\n(:D=3)*(\\n(:t=1):(\\n(;X)) \{\ 'da>y .>b \!. br 'di 'br\} 'rm>b .)R 'ev .nr:F 0 .>R .if!((\\n%=0)*(\\n(:D=3)*(\\n(:t=1):(\\n(;X)) \{\ .if!((\\n(!A=1):((\\n(;C=2)&(\\n(!F=1))) \{\ 'if!\\n(:s-1 'nr dn +4v+.5p 'nr:o +\\n(dnu 'nr:O +\\n(dnu .nrdn 0 'if!\\n(.pu-\\n(nlu-.5p-\\n(:ou 'nr :o \\n(.pu-\\n(nlu-.5p 'if!\\n(:ou-\\n(:mu 'nr :o \\n(:mu 'ch)f -\\n(:ou 'br\}\} .. .\" Screen definition .deSs .br .disC .br .fi .ls1 .in\\n(%ou .sp1.5 .mkQ .ps4 \v'0.4i'\ \h'4.7i'\ \D'a -0.5i 0 0 -0.5i'\ \D'l -3.7i 0'\ \D'a 0 0.5i -0.5i 0' .sp|\\nQu .di .br .diST .ev2 .br .in\\n(%ou .in+0.36i .sp0.4 .nf .ps8 .vs10 .csC 18 .ftC .ls1 .. .deSb .sp0.4 .ft .vs .ps .in .ev .\".if\\n(.tu<2v .nrsT 1 .di .ie\\n(dnu<\\n(.tu \{\ .\".tm here .sC .nr@c (\\n(nlu-2v)u .nrs@ 1 \} .el \{\ .\".tm there .\".tm \n(}f .if!\\n(}f .ie(\\n(dnu+1i)>\\n(.tu 'bp .if\\n(}f .ie(\\n(dnu+1.6i)>\\n(.tu 'bp .el .sp1 .nr@c \\n(nlu .nrs@ 1 .sC \} .nf .csC 18 .ftC .ST .in\\n(%ou .\".ie\\nA .in+0.21i .\".el .in+0.2i .fi .ls1 .ps4 .ft1 .nrc@ \\n(nlu .ie\\n(s@>0 \{\ .\".tm hello .nrf@ 1 \v'-0.27i'\ \D'a 0.5i 0 0 0.5i'\ \D'l 3.7i 0'\ \D'a 0 -0.5i 0.5i 0'\ \D'l 0 -(\\n(c@u-\\n(@cu-3.65v)u'\ \h'-4.7i'\ \D'l 0 (\\n(c@u-\\n(@cu-3.65v)u' \} .el \{\ .\".tm goodbye \v'-0.27i'\ \D'a 0.5i 0 0 0.5i'\ \D'l 3.7i 0'\ \D'a 0 -0.5i 0.5i 0'\ \D'l 0 -(\\n(dnu-1.9v)u'\ \h'-4.7i'\ \D'l 0 (\\n(dnu-1.9v)u' \} .sp2.5 \\.if\\n(}f>0 \{\ . in0 . {f . rm{f \\. tm fig Figure \\*(&z\\n(Fg:\\0\\*({g \\*(&z\\n% \\. nr}f 0 . in \} .ls .in\\n(%ou .rmSC .rmST .rrc@ .rrf@ .rrs@ .rr@c .ps 11 .vs 13 .wh -2.9i pF .. .de Rt .br .nr Xs \\n(Ps .nr Ps 1 .di rT .sp .5v \s+2\f6\\$1\fP\s0 .sp .5v .. .de Re .di .if \\n(dn>\\n(.t \{. .ne \\n(dnu\} .nf .rT .fi .nr Ps \\n(Xs .. . .\" Footers.... modified to have page offset fixed before and after. . .de)b 'ev2 .nf .?1 .?2 .?3 .?4 .?5 .br .)R .af;P \\gP .afP 1 .nr;P \\nP .afP \\g(;P .af;P 1 .po -\\n(xIu .lt \\n(xWu .ie!\\n(;P%2 .tl \\*(}f .el.tl \\*(}p .ie\\n(;P=1 \{\ .ie\\nN=1 .tl \\*(}t .el.tl \\*(}b \} .el.tl \\*(}b .if\\nC .tl \\*(]C .po .lt .)R 'ev . The "last baseline" traps are set again here, in case they were . temporarily changed to squeeze another line on the page. . .ch )f -\\n(:Mu .ch )n -\\n(:Mu .. .de AL .nr!D 0 .ds x 20p .if!\\n(.$>1 .)L \\*x 0 0 1 "\\$1" .if\\n(.$>1 .if !\\n(.$-2 .LB \\*x 0 0 1 "\\$1" .if\\n(.$>2 .if !\w\\$2 .)L \\*x 0 0 1 "\\$1" 0 2 .if\\n(.$>2 .if \w\\$2 .LB \\*x 0 0 1 "\\$1" 0 2 .. .de BL .ds x 20p .if\\n(.$<1 .)L \\*x 0 0 0 \\*(BU .if\\n(.$=1 .LB \\*x 0 0 0 \\*(BU .if\\n(.$>1 \{.ie !\w\\$1 .)L \\*x 0 0 0 \\*(BU 0 2 .el.LB \\*x 0 0 0 \\*(BU 0 2 \} .. .de DL .ds x 20p .if\\n(.$<1 .)L \\*x 0 0 0 \\- .if\\n(.$=1 .LB \\*x 0 0 0 \\- .if\\n(.$>1 \{.ie !\w\\$1 .)L \\*x 0 0 0 \\- 0 2 .el.LB \\*x 0 0 0 \\- 0 2 \} .. .de ML \" needs work? .if\\n(.$<1 .)D "ML:missing arg" .nr;0 \w\\$1u/3u/\\n(.su+1u .ie\\n(.$<2 .LB \\n(;0 0 1 0 "\\$1" .el.if \\n(.$<3 .LB 0\\$2 0 1 0 "\\$1" .if\\n(.$>2 \{.ie !\w\\$2 .LB \\n(;0 0 1 0 "\\$1" 0 2 .el.LB 0\\$2 0 1 0 "\\$1" 0 2 \} .. .de RL \" needs work? .if\\n(.$<1 .LB 6 0 2 4 .if\\n(.$=1 .LB 0\\$1 0 2 4 .if\\n(.$>1 \{.ie !\w\\$1 .LB 6 0 2 4 1 0 2 .el.LB 0\\$1 0 2 4 1 0 2 \} .. .de VL .if\\n(.$<1 .)D "VL:missing arg" .ie\\n(.$<3 .LB 0\\$1 0\\$2 0 0 .el.LB 0\\$1 0\\$2 0 0 \& 0 2 .. . .de )L .if\\n(:g>5 .)D "LB:too many nested lists" .if\\n(:g .)A .if!\\n+(:g-1 .ds ]b \\n(.i .nr:b \\n(.iu+0\\$1u .nr:c \\n(.iu+0\\$2u .nr:d 0\\$3 .nr:e 0\\$4 .nr:f 0\\$6 .if!\w\\$6 .nr :f 1 .ds]g \\$5 .if!\w\\$5 \{.ds ]g \& .if\\n(:e .ds ]g 1 'br\} .nr:a 0 1 .if0\\$4 .af :a \\$5 1 .SP 1 .fi .in\\n(:bu .ti\\n(:bu .. .de LE .if(\\n(:I>1)&(\\n(nl-\\n(:J) .nr :I 0 .if\\n(:I<2 .nr :I 0 .ie\\n(:g<1 .)D "LE:mismatched" .el.)B .sp 1 .ns .nr:J \\n(nl .. .de LF \"list fix macro, use following .LE that preceeds an .H(1-5) head .\"if argument is 1 space an additional 24 pts, .\"else space additional 12pts .rs .ie\\n(.$=1 .sp 24p .el .sp 12p .ns .. .de LI .if!\\n(:g .)D "LI:no lists active" .if(\\n(:g<=\\n(Ls)&(\\n(:f>0) .SP 1 .in\\n(:bu .if(\\n(:f)&(\\n(:D<1) .ne1v+.5p .ds}0 \\*(]g .if\\n(:e .ds }0 \\n+(:a. .if\\n(:e-1 .ds }0 \\n(:a) .if\\n(:e-2 .ds }0 (\\n(:a) .if\\n(:e-3 .ds }0 [\\n(:a] .if\\n(:e-4 .ds }0 <\\n(:a> .if\\n(:e-5 .ds }0 {\\n(:a} .if\\n(.$-1 .ds }0 \\$1\ \\*(}0 .if\\n(.$=1 .ds }0 \\$1 .nr;0 \w\\*(}0 .nr;1 \\n(:c .if\\n(:d .nr ;1 \\n(:bu-\\n(:du-\\n(;0u .if!\\n(;1 .nr ;1 0 .nr;0 \\n(:bu-\\n(;1u-\\n(;0u .ti\\n(;1u .if!\\n(;0 .nr ;0 \w u .if\w\\*(}0 \&\\*(}0\h\\n(;0u\&\c .. .rn LI lI \" rename the real LI macro to lI -- we'll need it later. . .de LI .\" First, call the real LI .lI "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" .\" Then, if the tag is very long, break .if (\\n(:c+\\w\\*(}0)>\\n(:b .br .. . . \" The GM macro works by reducing the position of the two "last permitted . \" baseline" traps by some number of vertical spaces. The traps are . \" restored when the page boundary is crossed. It is not wise to ask for . \" too many lines; no telling where they will end up. . \" . \" The traps will be restored to their proper positions by the )b macro, . \" which gets called at the bottom of every page to print the footers. . .de GM . \" Starting with the "real" trap position :M, .nr x \\n(:M-0\\$1v \" subtract the argument, if there is one. .if \\nx=\\n(:M .nr x -1v \" if nothing happened, use 1v. . .ch )f -\\nxu \" change the )f trap .ch )n -\\nxu \" change the )n trap .. . .rm xL .de xT . .\" Print one line of a ToC, LoT, Lof. . .ie \\$1<0 .\{ \" table or Figure . . if !'\\$2'\\*(xL' \{. \" this "type" doesn't match previous. . rs \" throw a page. . bp . af P 1 \" make page number arabic again, . nr x \\nP \" and get its value, . af P i \" then make it roman again, . if (\\nx%2)==0 \{. \" and then if it's even, . rs \" throw another page. . bp \" Phew. . \} . %T "\\$2s" . ds xL \\$2 . \} . . nr x1 0 . nr x2 62p .\} .el \{. \" make ToC: . . )I \\$1 \\*(TT \" set }3 to the "table tab" for this level . nr x1 \\*(}3 . . )I \\$1+1 \\*(TT \" set }3 to table tab for next level . nr x2 \\*(}3 .\} . .\" Define the chapter-page number string .ft 1 .ds x \\$6-\\$5 . .in \\n(x2u \" indent to text position .ti \\n(x1u \" temp indent back to number's position .ll \nWu-\\w'\\*x'u-3n \" shorten line by width of page number and 3n's .di >A \" send into a diversion, so that filling happens . \" in the shorter line length. The "\\a" leader . \" character gets expanded to dots, at the full . \" line length, when the diversion finally gets . \" output. . . \" This line is made of the following parts: . \" $3 is the heading number. . \" horizontal = distance between number (at x1) and text (at x2) . \" $4 is the text. . \" \\a is the "leader" character that becomes dots. . \" *x is the chapter-page number. . .fi .na .ie \\$1<0 \{. \" table of figure: . fp 4 PI \\f6\\$2 \\$3\\f1\\h'|\\n(x2u'\\$4\\f1\\a\\*x .\} .el \{. \" everything else: . ie \\$1=1 \{. \" chapters: . ft 6 \" HB, Helvetica Bold . fp 4 HD \" "italic" font (4) is Helvetica Bold Oblique . sp 32p-1v \" Level 1's get extra space . \} . el \{. \" non-chapters: . ft 1 \" PA, Palatino . fp 4 PI \" the "italic" font (4) is Palatino Italic . \} \\$3\\h'|\\n(x2u-\\n(x1u'\\$4\\f1\\a\\*x .\} .br .di . .ll \\nWu \" Full line width. .ta \\nWuR \" number is right-adjusted at the right margin. .in 0 \" indenting is already done; put it back now. .nf \" filling is already done; don't do it again. .na .ne \\n(dnu+1v \" This might be somewhere about right... .>A \" dump out the text .)R \" reset all the fonts and sizes and stuff. .. .de %T . TP . ft 6 . ps 14 . rs . sp |232p \\$1 . sp 100p . ns . ft 1 . ps 10 .. . . .de Xh \" Index heading -- new letter .sp 40p .ft 6 .ne 1v+22p+2v .ps 10 .vs 12 .in 0 \\$1 .sp 22p .ft 1 .ps 10 .vs 12 .. . . .de Xa \" type "a" entry -- normal .in 9p .ti 0 \\$1 .. . . .de Xb \" type "b" entry -- indented .in 18p .ti 27p \\$1 .. . .if \n(xM=2 \{. \" -rx2, print the ToC, LoT, LoF . . S 10 14 . . OF "#\\\\s9\\\\*(VE\\\\s0##\\\\f6\\\\nP\\\\fP#" . EF "#\\\\f6\\\\nP\\\\fP\&\\\\s9##\\\\s0#" . . af P i . nr P 2 \" to begin Contents on page iii . . %T Contents . .\} . .if \n(xM=3 \{. \" -rx3, print the index . . \" initialize and start the first page . . OF "#\\\\s9\\\\f1\\\\*(TI##\\\\f6Index-\\\\nP#" . EF "#\\\\s9\\\\f6Index-\\\\nP##\\\\f1\\\\*(SE#" . . nr P 0 . . TP . . 2C . fi . na . . ps 10 . vs 12 . in 0 . ft 6 Index . sp 50p . ns .\} .de )F . ne 6 . in 0 \\$1 \\$5\\$3. . sp -1v . in \\w'\\$1 \\$5\\$3.\ \ 'u . fi . na \\$4 . br . in .. .EQ delim $$ .EN