|
|
1.1 root 1: |include(macro.h)
2:
3: |include(style.h)
4:
5: |macro(.top.of.page;
6: [
7: '\" #T used by tbl to draw boxes ?????
8: '\" :2 store for multi-page table heading
9: '\" :A multi-page table heading being used
10: '\" :T top of table printed
11: '\" :V vertical spacing
12: '\" :d prevent )h from outputting a floating group
13: '\" :m initial footer place and partial footnote diverter trap
14: '\" :o footer trap location
15: '\" :q amount of footnote text
16: '\" :r position at end of page header macro
17: '\" :v width of stored footnote 0=narrow, 1=wide
18: '\" :w output counter for floating keeps
19: '\" :z input counter for floating keeps
20: '\" Un position to return to for column n
21: '\" W current page width
22: '\" Wn page width for column n
23: '\" ;i remembered indent TEMP
24: '\" ;o prevailing page offset ??????? bug with .po
25: '\" ;t copy of :w TEMP
26: '\" ;w convert to alpha format TEMP
27: . de )h
28: . ev 2 \" use header environment
29: . ll \\nWu \" use full page
30: . lt \\nWu
31: . ie "\*(.T"aps" \{\
32: . nr ;o \\n(.o \" save prevailing page offset
33: . po 0 \" always from left margin
34: . lt 7.5i \" width of photo composer
35: . ps 10 \" 10 point roman font
36: . vs 12p
37: . ft 1
38: . tl '--''--' \" output the cut marks
39: . ft \" restore values
40: . vs
41: . ps
42: . lt
43: . po \\n(;ou \}
44: . el \{\
45: . ps 10 \" 10 point roman font
46: . vs 12p
47: . ft 1
48: . tl '''' \" output nothing
49: . ft \" restore values
50: . vs
51: . ps \}
52: . nr page_counter +1 \" incr page number
53: . if \\n(column_counter \{\
54: . ll \\n(W0u \" go wide
55: . lt \\n(W0u \}
56: . TP \" user-redefinable macro
57: . if \\n(column_counter \{\
58: . ll \\nWu \" go narrow
59: . lt \\nWu \}
60: . br \" force a break in the header environment
61: . ev \" back to main environment
62: . ch )n -\\n(:mu \" reset partial footnote diverter
63: . ch )f -\\n(:ou \" reset footer trap
64: . if !\\n(:q .nr :v 0 \" no saved footnotes, thus narrow
65: . nr :V \\n(.v \" for footnote uncertainty correction
66: . mk :r \" position at end of page header macro
67: . mk U0 \" save where all columns start
68: . rr U1 U2 U3 U4 U5 U6 U7 U8 U9 \" zero column starts
69: '\" output floating displays
70: . if \\n(:d=0&((\\n(:z-\\n(:w):(\\n(:w-\\n(:z)) \{\
71: . nr ;t \\n(:w%26+1 \" get index of next output element
72: . af ;w a \" conversion register for display queue names
73: . nr ;w \\n(;t \" form the next queue element name
74: . ie \\n(!\\n(;w \{\
75: . )z \" output at least one floating display
76: . )s \" but as many as will fit
77: . mk U0 \" save where all columns start
78: . rr U1 U2 U3 U4 U5 U6 U7 U8 U9 \} \" zero column starts
79: . el \{\
80: . )z \" output at least one floating display
81: . )s \} \" but as many as will fit
82: . rr ;t ;w \} \" free storage
83: '\" print top part of multi-page table
84: . nr :T 0 \" mark multi-page table header not printed
85: . if \\n(:A>0 \{\
86: . nr ;i \\n(.i \" save prevailing indent
87: . in 0 \" indent back
88: . :2 \" heading
89: . nr :T 1 \" mark multi-page table header printed
90: . in \\n(;iu \} \" restore prevailing indent
91: . mk #T \" mark spot for table drawing ???????
92: . rr ;i ;o ;t ;w \" free storage
93: . ns \" avoid .sp in user text here
94: ..
95: ])
96:
97: |macro(top.of.page;
98: [
99: '\" ;P page number register TEMP
100: . de TP
101: ' sp
102: . af ;P \\g'page_counter' \" save format of page_counter
103: . af page_counter 1 \" normal format for next line
104: . nr ;P \\n'page_counter' \" must use different name for P
105: . af page_counter \\g(;P \" restore format to P
106: . af ;P 1 \" normal format for control register
107: ' sp 2
108: . if \\n(;P-1 .tl \\*(page_header \" output headers
109: . if !\\n(;P%2 .tl \\*(even_header
110: . if \\n(;P%2 .tl \\*(odd_header
111: ' sp 2
112: . if \\n(;P=4 .if "\\*(format_type"model" \
113: . pl 13.25i \" model format kludge
114: . rr ;P \" free storage
115: ..
116: ])
117:
118: |macro(.bottom.of.page;
119: [
120: '\" !{a-z} width of stored floating 0=narrow, 1=wide
121: '\" #T used by tbl to draw boxes ?????
122: '\" :2 store for multi-page table heading
123: '\" :A multi-page table heading being used
124: '\" :K position for )f trap
125: '\" :M initial footer and partial footnote diverter for full output page
126: '\" :T top of table printed
127: '\" :V vertical spacing
128: '\" :c number of columns
129: '\" :d prevent )h from outputting a floating group
130: '\" :f bottom of table printed
131: '\" :m initial footer place and partial footnote diverter trap
132: '\" :o footer trap location
133: '\" :q amount of footnote text
134: '\" :v width of stored footnote 0=narrow, 1=wide
135: '\" :w output counter for floating keeps
136: '\" :z input counter for floating keeps
137: '\" O current page offset
138: '\" On page offset for column n
139: '\" Un position to return to for column n
140: '\" W current page width
141: '\" Wn page width for column n
142: '\" T# used by tbl to draw boxes ?????
143: '\" T. ?????
144: '\" ;d delta width TEMP
145: '\" ;i remembered indent TEMP
146: '\" ;t copy of :w TEMP
147: '\" ;u hidden def of )f TEMP
148: '\" ;w convert to alpha format TEMP
149: '\" ;y room left on the page TEMP
150: . de )f
151: '\" print bottom part of boxed multi-page table
152: . if \\n(:A \{\
153: . rn )f ;u \" hide footer
154: . nr T. 1
155: . if \\n(:f=0 .T# 1 \" print multi-page table footer
156: ' br \" output new page
157: . nr :f 1 \" remember footer has been printed
158: . rn ;u )f \} \" restore footer
159: . nr ;y \\n(.pu-\\n(nlu-\\n(:mu \" compute amount of room left on the page
160: . if \\n(:qu>1v .nr ;y -1v \" output a reasonable amount
161: '\" if footnotes and there is room left and full page or left column output,
162: '\" or narrow footnotes, call footnote expander
163: . ie \\n(:q&\\n(;y&((\\n(column_counter<2):(\\n(:v=0)) .)o
164: . el \{\
165: . nr :o \\n(:m+\\n(:q \" reset footer trap location
166: . if \\n(:q \
167: . nr :o +\\n(:Vu-1u \" traps spring once we go past
168: . ch )n 15i \" hide partial footnote diverter
169: . ch )f 15i \} \" move footer over it
170: . ie \\n(column_counter=0 'bp \" new page if not multi-column
171: '\" end last column
172: . el .ie \\n(column_counter=\\n(:c \{\
173: . nr ;d \\n(.lu-\\n(W\\n('column_counter'u \" quotations shrink line length
174: . nr column_counter 1 \" set column indicator
175: . nr O \\n(O1u \" restore first column offset
176: . po \\nOu \" set first column offset
177: . nr W \\n(W1u+\\n(;du \" restore first column width
178: . ll \\nWu \" set first column line length
179: . lt \\nWu \" set first column title length
180: . nr :m \\n(:M \" set initial footer place and partial footnote diverter trap
181: ' bp \" force next page
182: . rr ;d \} \" free storage
183: '\" end other columns
184: . el \{\
185: . if \\n(column_counter=1 .if "\\*(format_type"acm" \
186: . pl 10.875i \" acm format kludge
187: . if \\n(nl>\\n(U\\n(column_counter \
188: . mk U\\n(column_counter \" new vertical position
189: . nr ;d \\n(.lu-\\n(W\\n('column_counter'u \" quotations shrink line length
190: . nr column_counter +1 \" set column indicator
191: . ie \\n(U\\n('column_counter'u \
192: ' sp |\\n(U\\n('column_counter'u \" restore vertical position
193: . el 'sp |\\n(U0u \" default top if not set
194: . ch )n -\\n(:mu \" reset partial footnote diverter
195: . ch )f -\\n(:ou \" reset footer trap
196: . if !\\n(:q .nr :v 0 \" no saved footnotes, thus narrow
197: . nr O \\n(O\\n('column_counter'u \" restore new offset
198: . po \\nOu \" set new offset
199: . nr W \\n(W\\n('column_counter'u+\\n(;du \" restore new width
200: . ll \\nWu \" set new line length
201: . lt \\nWu \" set new title length
202: '\" output floating displays that are narrow
203: . if \\n(:d=0&((\\n(:z-\\n(:w):(\\n(:w-\\n(:z)) \{\
204: . nr ;t \\n(:w%26+1 \" get index of next output element
205: . af ;w a \" conversion register for display queue names
206: . nr ;w \\n(;t \" form the next queue element name
207: '\" inhibit if wide display
208: . if !\\n(!\\n(;w \{\
209: . )z \" output at least one floating display
210: . )s \} \" but as many as will fit
211: . rr ;t ;w \} \" free storage
212: '\" print top part of multi-page table
213: . nr :T 0 \" mark multi-page table header not printed
214: . if \\n(:A>0 \{\
215: . nr ;i \\n(.i \" save prevailing indent
216: . in 0 \" indent back
217: . :2 \" heading
218: . nr :T 1 \" mark multi-page table header printed
219: . in \\n(;iu \} \" restore prevailing indent
220: . mk #T \" mark spot for table drawing ???????
221: . rr ;d ;i ;t ;w \" free storage
222: . ns \} \" avoid .sp in user text here
223: . if \\n(:A \{\
224: . nr :K \\n(:ou+2v \" position for )f trap
225: . ch >f -(\\n(:Ku+1v) \" when moved by >f macro
226: ' br \}
227: . rr ;y \" free storage
228: ..
229: ])
230:
231: |macro(bottom.of.page;
232: [
233: '\" ;P page number register TEMP
234: . de BP
235: . ev 2 \" use header environment
236: . if \\n(column_counter \{\
237: . ll \\n(W0u \" go wide
238: . lt \\n(W0u \}
239: ' sp
240: . af ;P \\g'page_counter' \" save format of page_counter
241: . af page_counter 1 \" normal format for next line
242: . nr ;P \\n'page_counter' \" must use different name for P
243: . af page_counter \\g(;P \" restore format to P
244: . af ;P 1 \" normal format for control register
245: . if !\\n(;P%2 .tl \\*(even_footer
246: . if \\n(;P%2 .tl \\*(odd_footer
247: . tl \\*(page_footer \" output footers
248: . if \\n(column_counter \{\
249: . ll \\nWu \" go narrow
250: . lt \\nWu \}
251: . ev \" back to main environment
252: . rr ;P \" free storage
253: ..
254: ])
255:
256: |macro(.float.output;
257: [
258: '\" !{a-z} width of stored floating 0=narrow, 1=wide
259: '\" :d prevent )h from outputting a floating group
260: '\" :w output counter for floating keeps
261: '\" :z input counter for floating keeps
262: '\" ?{a-z} text of stored floating
263: '\" |{a-z} size of stored floating
264: '\" ;L remembered line spacing TEMP
265: '\" ;i remembered indent TEMP
266: '\" ;q remembered fill/no-fill mode TEMP
267: '\" ;w convert to alpha format TEMP
268: . de )z
269: . if \\n(:z=\\n(:w .tm no floats to output
270: . nr :w \\n(:w%26+1 \" get index of next output element
271: . af ;w a \" conversion register for display queue names
272: . nr ;w \\n(:w \" form the next queue element name
273: . nr ;q \\n(.u \" save prevailing fill/no-fill mode
274: . nr ;L \\n(.L \" save line spacing
275: . nr ;i \\n(.i \" save prevailing indent
276: . ev 1 \" use footnote environment
277: . nf \" bring it back in no-fill
278: . ls 1 \" output display in ls 1
279: . in 0 \" indent back
280: . nr :d 1 \" inhibit header from calling )y
281: . rs \" restore spacing
282: . br \" output partial line before display
283: . ?\\n(;w \" lay out one keep
284: . if \\n(;q .fi \" restore fill if necessary
285: . ls \\n(;L \" restore line spacing
286: . in \\n(;iu \" restore prevailing indent
287: . nr :d 0 \" allow )h to process fl keeps again
288: . ev \" back to previous environment
289: . ne 2 \" require two lines under float
290: . rm ?\\n(;w \" free storage
291: . rr |\\n(;w !\\n(;w
292: . rr ;L ;i ;q ;w
293: ..
294: ])
295:
296: |macro(.multiple.float.output;
297: [
298: '\" !{a-z} width of stored floating 0=narrow, 1=wide
299: '\" :m initial footer place and partial footnote diverter trap
300: '\" :o footer trap location
301: '\" :r position at end of page header macro
302: '\" :w output counter for floating keeps
303: '\" :z input counter for floating keeps
304: '\" |{a-z} size of stored floating
305: '\" ;h height of floating display on top of queue TEMP
306: '\" ;t copy of :w TEMP
307: '\" ;w convert to alpha format TEMP
308: . de )s
309: '\" inhibit if no floats in queue
310: . if !(\\n(:z=\\n(:w) \{\
311: . nr ;t \\n(:w%26+1 \" get index of next output element
312: . af ;w a \" conversion register for display queue names
313: . nr ;w \\n(;t \" form the next queue element name
314: . nr ;h \\n(|\\n(;w \" height of current display
315: '\" The following if condition tests: (1) if wide displays and (2) we are on the
316: '\" first column and (3) if the float fits on the current page
317: '\" or (4) the float is too large to fit on any one page, and (5) we have used
318: '\" less than half of the current page. (the five conditions are grouped
319: '\" in the form ((1 & 2) & (1 : (2 & 3))). If this total condition is true,
320: '\" then a float is output.
321: . if (((\\n(!\\n(;w=1)&(\\n(column_counter<2))&\
322: ((\\n(;h<\\n(.t):((\\n(;h>(\\n(.p-\\n(:r-\\n(:m))&\
323: (\\n(nl<=(\\n(.p-\\n(:r-\\n(:o/2u+\\n(:r))))) \{\
324: . )z \" output it
325: . )s \} \" recurse
326: . rr ;h ;t ;w \} \" free storage
327: ..
328: ])
329:
330: |macro(.flush.float.output;
331: [
332: '\" :d prevent )h from outputting a floating group
333: '\" :w output counter for floating keeps
334: '\" :z input counter for floating keeps
335: '\" ;o copy of :w TEMP
336: . de )w
337: '\" inhibit if no floats in queue
338: . if !(\\n(:z=\\n(:w) \{\
339: . nr ;o \\n(:w \" save output count
340: . )s
341: . if \\n(:w=\\n(;o \{\
342: . nr :d 1 \" inhibit header from calling )y
343: . rs \" turn on spacing
344: . bp \" top of next page
345: . nr :d 0 \} \" allow )h to process fl keeps again
346: . )w \} \" recurse
347: . rr ;o \" free storage
348: ..
349: ])
350:
351: |macro(.footnote.output;
352: [
353: '\" dump accumulated footnote text
354: '\" long text may spring )n trap so the remaining partial
355: '\" text may go into :3
356: '\" :3 store for partial footnotes
357: '\" :F Footnote text
358: '\" :H height of footnote separater
359: '\" :V vertical spacing
360: '\" :m initial footer place and partial footnote diverter trap
361: '\" :o footer trap location
362: '\" :q amount of footnote text
363: '\" :v width of stored footnote 0=narrow, 1=wide
364: . de )o
365: . if \\n(:v&\\n(column_counter=1 .nr :m \\n(:o \" if printing wide
366: . ev 1 \" use footnote environment
367: . nf \" bring it back in no-fill
368: . ls 1 \" output display in ls 1
369: . in 0 \" indent back
370: . :F \" lay out footnotes
371: '\" did we spring the partial footnote trap
372: . ie "\\n(.z":3" \{\
373: . br \" get last partial line
374: . di \" end diversion
375: . ie \\n(dnu<=\\n(:Hu \{\
376: . nr :q 0 \" ignore just divider line
377: . nr :o \\n(:mu \" reset footnote location register
378: . rm :3 :F \}
379: . el \{\
380: . nr dn +\\n(:V-\\n(.v \" uncertainty correction
381: . nr :q \\n(dnu \" fix amount of footnote text
382: . nr :o \\n(:mu+\\n(:qu \" reset footnote location register
383: . nr :o +\\n(:Vu-1u \" traps spring once we go past
384: . rn :3 :F \} \} \" put text back in :F
385: . el \{\
386: . nr :q 0 \" clear amount of footnote text
387: . rm :F \" clear text of footnote
388: . nr :o \\n(:mu \" reset footnote location register
389: . ch )n 15i \} \" hide partial footnote diverter
390: . ev \" back to main environment
391: ..
392: ])
393:
394: |macro(.footnote.diverter;
395: [
396: '\" partial footnote text diverter
397: '\" called via trap planted at -\n(:m
398: '\" since the default footer trap is also at -n(:m,
399: '\" this macro actually invoked when the footer trap
400: '\" has been moved up due to footnote processing
401: '\" :3 store for partial footnotes
402: '\" :H height of footnote separater
403: '\" O current page offset
404: '\" ;o prevailing page offset ??????? bug with .po
405: . de )n
406: . di :3
407: . nr ;o \\n(.o \" save prevailing page offset
408: . po \\nOu \" always from left margin
409: . ps 10 \" 10 point roman font
410: . vs 12p
411: . ft 1
412: . ie \n(.A=0 \l@\\n(.lu@
413: . el _____________________________
414: . nr :H \\n(.v \" height of separater
415: . ft \" restore values
416: . vs
417: . ps
418: . po \\n(;ou
419: ..
420: ])
421:
422: |macro(.catch.diverter;
423: [
424: '\" catch output diverter
425: . de catch_diverter
426: . di catch_output
427: ..
428: ])
429:
430: |macro(.end.of.file;
431: [
432: . de )q
433: ..
434: ])
435:
436: |macro(.pop.counter;
437: [
438: '\" clever way to restore a number from a stack
439: '\" push is via .ds fo \n(xx \*(fo
440: '\" .)C counter-name stack-name stack-args
441: . de )C
442: . nr \\$1 \\$3
443: . ds \\$2 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
444: ..
445: ])
446:
447: |macro(.initalize;
448: [
449: '\" REQUIRED INITIALIZATIONS
450: '\" initialize various regs
451: '\" !{a-z} width of stored floating 0=narrow, 1=wide
452: '\" #T used by tbl to draw boxes ?????
453: '\" :0 store for initally diverted text
454: '\" :1 store for centered block text
455: '\" :2 store for multi-page table heading
456: '\" :3 store for partial footnotes
457: '\" :4 store for equations
458: '\" :A multi-page table heading being used
459: . nr :A 0
460: '\" :B amount of accumulate blank lines
461: . nr :B 0
462: '\" column_counter 0=one column, N=column number
463: . nr column_counter 0
464: '\" :D amount of accumulate blank lines in diversion
465: '\" :E position of last minimum space in diversion
466: '\" :F Footnote text
467: '\" :H height of footnote separater
468: '\" :K position for )f trap
469: . nr :K 0
470: '\" :M initial footer and partial footnote diverter for full output page
471: . nr :M .8i
472: '\" :N position of last minimum space
473: . nr :N 0
474: '\" :T top of table printed
475: . nr :T 0
476: '\" :V vertical spacing
477: . nr :V \n(.v
478: '\" :Y width of a center block diversion
479: '\" :c number of columns
480: . nr :c 0
481: '\" :d prevent )h from outputting a floating group
482: . nr :d 0
483: '\" :f bottom of table printed
484: . nr :f 0
485: '\" :m initial footer place and partial footnote diverter trap
486: . nr :m .8i
487: '\" :o footer trap location
488: . nr :o \n(:mu
489: '\" :q amount of footnote text
490: . nr :q 0
491: '\" :r position at end of page header macro
492: . nr :r .6i
493: '\" :v width of stored footnote 0=narrow, 1=wide
494: . nr :v 0
495: '\" :w output counter for floating keeps
496: . nr :w 0
497: '\" :x flag indicating footnote in progress
498: . nr :x 0
499: '\" :y flag indicating group/float in progress
500: . nr :y 0
501: '\" :z input counter for floating keeps
502: . nr :z 0
503: '\" ?{a-z} text of stored floating
504: '\" |{a-z} size of stored floating
505: '\" }D name of last minimum space diversion
506: '\" 10 the equation as a string
507: '\" AT string containing AT&T in helvetica
508: . ds AT \f(HBA\h'-.2m'T\h'-.15m'\s0\s13&\s0\s16\h'-.15m'T\fP
509: '\" date string
510: . if \n(mo-0 .ds date_string January
511: . if \n(mo-1 .ds date_string February
512: . if \n(mo-2 .ds date_string March
513: . if \n(mo-3 .ds date_string April
514: . if \n(mo-4 .ds date_string May
515: . if \n(mo-5 .ds date_string June
516: . if \n(mo-6 .ds date_string July
517: . if \n(mo-7 .ds date_string August
518: . if \n(mo-8 .ds date_string September
519: . if \n(mo-9 .ds date_string October
520: . if \n(mo-10 .ds date_string November
521: . if \n(mo-11 .ds date_string December
522: . as date_string " \n(dy, 19\n(yr
523: '\" at&t logo
524: . ie "\*(.T"aps" .ds att_logo \s36\(Lb\s0
525: . el .ie "\*(.T"eps" .ds att_logo \s36\(Lb\s0
526: . el .ie "\*(.T"i300" .ds att_logo \s36\(Lb\s0
527: . el .ie "\*(.T"im300" .ds att_logo \s36\(Lb\s0
528: . el .ie "\*(.T"post" .ds att_logo \s36\(LH\s0
529: . el .ds att_logo \s36\(L1\s0\s16\v'-.4'\*(AT\v'.4'\h'-\w'\*(AT'u'\s0
530: '\" MK set to a non zero by eqn if a mark or a lineup is used
531: '\" O current page offset
532: '\" On page offset for column n
533: '\" page number
534: . if \n'page_counter' .nr page_counter -1
535: . nr page_counter \n'page_counter' 1
536: '\" T# used by tbl to draw boxes ?????
537: '\" T. ?????
538: '\" Un position to return to for column n
539: . nr U0 .6i
540: . rr U1 U2 U3 U4 U5 U6 U7 U8 U9
541: '\" W current page width
542: '\" Wn page width for column n
543: '\" INITIAL SET UP
544: . ds page_header ''- \\n'page_counter' -'' \" top of page string
545: . wh 0 )h \" trap for header
546: . wh -\n(:mu )f \" trap for footer
547: . ch )f 15i \" move it over partial footnote diverter
548: . wh -\n(:mu )n \" trap for partial footnote diverter
549: . ch )f -\n(:mu
550: . wh -\n(:ru BP \" trap for bottom
551: . em )q \" end macro
552: '\" TROFF ACCENTS (` ' ^ ~ cedilla and 2 umlauts)
553: '\" The accent string must follow immediately the character to be accented.
554: '\" These strings are "tuned" to the Times Roman type faces ONLY.
555: '\" The R, I, and B fonts are assumed to be mounted in
556: '\" positions 1, 2, and 3, respectively.
557: '\" All of these strings alter the number register `:'.
558: '\" Grave accent -- {aeou}\*`
559: . ds ` \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m@\(ga\h@|\\n:u@
560: '\" Lower-case acute accent -- {aeou}\*'
561: . ds ' \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m+.07m@\(aa\h@|\\n:u@
562: '\" Upper-case acute accent -- {aeou}\*+
563: . ds + \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m+.07m@\[email protected]@\(aa\[email protected]@\h@|\\n:u@
564: '\" Circumflex -- {aeou}\*^
565: . ds ^ \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.15m-.07m@\
566: \h@\\n(.fu-1u/2u*.02m@^\h@|\\n:u@
567: '\" Tilde -- n\*~ (But watch out for ".tr ~")
568: . ds ~ \\k:\h@-\\n(.wu*8u/10u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*.2m-.07m@\
569: \h@\\n(.fu-1u/2u*.05m@~\h@|\\n:u@
570: '\" Cedilla -- c\*,
571: . ds , \\k:\h@-\\n(.wu*85u/100u@\[email protected]@,\[email protected]@\h@|\\n:u@
572: '\" Lower-case umlaut -- {aeou}\*:
573: . ds : \\k:\h@-\\n(.wu*85u/100u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*3u*.06m@\
574: \h@3u-\\n(.fu/2u*.05m-.1m@\
575: \[email protected]@\z.\h@\\n(.fu-1u/2u*.05m+.2m@.\[email protected]@\h@|\\n:u@
576: '\" Upper-case umlaut -- {AEOU}\*;
577: . ds ; \\k:\h@-\\n(.wu*75u/100u@\h@\\n(.fu/2u*2u+1u-\\n(.fu*3u*.09m@\
578: \h@3u-\\n(.fu/2u*.06m-.15m@\h@\\n(.fu-1u/2u*.04m@\
579: \[email protected]@\z.\[email protected]@.\[email protected]@\h@|\\n:u@
580: '\" Nasal -- c\*-
581: . ds - \\k:\h@-\\n(.wu*75u/100u@\[email protected]@`\[email protected]@\h@|\\n:u@
582: '\" Slash -- c\*/
583: . ds / \\k:\h@-\\n(.wu*85u/100u@\[email protected]@\(aa\[email protected]@\h@|\\n:u@
584: ])
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.