1<!--
2
3  $Id: linuxdoc-roff.ts,v 1.2.2.1 1996/12/22 15:32:25 joerg Exp $
4
5  Copyright (C) 1996
6       John R. Fieber.  All rights reserved.
7
8  Redistribution and use in source and binary forms, with or without
9  modification, are permitted provided that the following conditions
10  are met:
11  1. Redistributions of source code must retain the above copyright
12     notice, this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17  THIS SOFTWARE IS PROVIDED BY JOHN R. FIEBER AND CONTRIBUTORS ``AS IS'' AND
18  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  ARE DISCLAIMED.  IN NO EVENT SHALL JOHN R. FIEBER OR CONTRIBUTORS BE LIABLE
21  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  SUCH DAMAGE.
28
29-->
30
31<!--
32
33  This is an instant(1) translation specification to turn an
34  SGML document marked up according to the linuxdoc DTD into
35  a document suitable for processing with groff(1) using mm
36  macros.
37
38  Special thanks to Chuck Robey <chuckr@freebsd.org> for helping
39  to unravel the mysteries of groff.
40
41-->
42
43<!DOCTYPE transpec PUBLIC "-//FreeBSD//DTD transpec//EN" [
44
45<!ENTITY r.pass CDATA "1">
46<!ENTITY r.passw CDATA "2">
47<!ENTITY r.phack CDATA "3">
48<!ENTITY r.label CDATA "4">
49<!ENTITY r.initr CDATA "5">
50
51<!ENTITY gt CDATA ">">
52<!ENTITY lt CDATA "<">
53<!ENTITY amp CDATA "&">
54
55<!ENTITY cmap SYSTEM "roff.cmap">
56<!ENTITY sdata SYSTEM "roff.sdata">
57
58<!ENTITY family CDATA "P">
59
60]>
61
62<transpec>
63
64<!-- Character and SDATA entity mapping -->
65<cmap>&cmap;</cmap>
66<smap>&sdata;</smap>
67
68<!-- Transform rules -->
69
70<!-- Inside a HEADING, all these need to be suppressed or deferred
71     to a later time. -->
72<rule>
73<match>
74<gi>EM IT BF SF SL TT CPARAM LABEL REF PAGEREF CITE URL HTMLURL MANREF NCITE EMAIL IDX CDX F X
75<relation>ancestor HEADING
76</rule>
77
78<rule>
79<match>
80<gi>LINUXDOC
81<action>
82<start>^.\" Generated ${date} using ${transpec}
83.\" by ${user}@${host}
84.if t \{\
85.  nr W 6i
86.  nr O 1.25i
87.  nr L 11i
88.\}
89.if n .nr W 79n
90.so /usr/local/share/groff/current/tmac/tmac.m
91.nr Pt 0
92.ie t \{\
93.  fam &family;
94.  ds HP 16 14 12 10 10 10 10
95.  ds HF HB HB HB HBI HI HI HI
96.\}
97.el \{\
98.  SA 0
99.  ftr C R
100.\}
101.PH "'${_followrel descendant TITLE &r.pass;}''%'"
102.nr N 1     <!-- header at the bottom of the first page -->
103.nr Pgps 0  <!-- header/footer size immune from .S -->
104.nr Hy 1    <!-- hypenation on -->
105.nr H0 0 1  <!-- Part counter -->
106.af H0 I
107${_followrel descendant LABEL &r.initr;}</start>
108<end>^</end>
109</rule>
110
111<!-- This is used with the above ${_followrel ...} to insert the
112     .INITR command which opens a file for writing cross reference
113     information.  If there are no <label> tags, we don't want to
114     bother with this. -->
115<rule id="&r.initr;">
116<match>
117<gi>_initr
118<action>
119<start>^.INITR "${filename}"^</start>
120</rule>
121
122<rule>
123<match>
124<gi>ARTICLE
125<action>
126<start>^.nr Hb 4
127.nr Hs 4^</start>
128<end>^.bp
129.TC^</end>
130</rule>
131
132<rule>
133<match>
134<gi>REPORT BOOK
135<action>
136<start>^.nr Cl 3    <!-- TOC goes to level 3 -->
137.nr Hb 5
138.nr Hs 5^</start>
139<end>
140^.bp
141.TC^</end>
142</rule>
143
144<rule>
145<match>
146<gi>NOTES
147</rule>
148
149<rule>
150<match>
151<gi>MANPAGE
152</rule>
153
154<rule>
155<match>
156<gi>TITLEPAG
157<action>
158<start>^\&
159.if t .SP 1i^</start>
160<end>^.SP 3^</end>
161</rule>
162
163<rule>
164<match>
165<gi>TITLE
166<action>
167<start>^.if t .S 18
168.DS C F
169.if t .fam H
170.B
171.if t .SA 0^</start>
172<end>^.if t .SA 1
173.R
174.if t .fam &family;
175.DE
176.if t .S D^</end>
177</rule>
178
179<rule>
180<match>
181<gi>SUBTITLE
182</rule>
183
184<rule>
185<match>
186<gi>DATE
187<action>
188<start>^.DS C F^</start>
189<end>^.DE^</end>
190</rule>
191
192<rule>
193<match>
194<gi>ABSTRACT
195<action>
196<start>^.SP 3
197.DS C
198.B Abstract
199.DE
200.DS I F^</start>
201<end>^.DE^</end>
202</rule>
203
204<rule>
205<match>
206<gi>AUTHOR
207<action>
208<start>^.DS C F^</start>
209<end>^.DE^</end>
210</rule>
211
212<rule>
213<match>
214<gi>NAME
215</rule>
216
217<rule>
218<match>
219<gi>AND
220<action>
221<start>^.br^</start>
222</rule>
223
224<rule>
225<match>
226<gi>THANKS
227<action>
228<start>\*F
229.FS^</start>
230<end>^.FE^</end>
231</rule>
232
233<rule>
234<match>
235<gi>INST
236<action>
237<start>^.br^</start>
238</rule>
239
240<rule>
241<match>
242<gi>NEWLINE
243<action>
244<start>^.br^</start>
245</rule>
246
247<rule id="&r.label;">
248<match>
249<gi>LABEL
250<action>
251<start>^.SETR "${ID}"^</start>
252</rule>
253
254<rule>
255<match>
256<gi>HEADER
257</rule>
258
259<rule>
260<match>
261<gi>LHEAD
262<action>
263<start>^.EH '</start>
264<end>'''^</end>
265</rule>
266
267<rule>
268<match>
269<gi>RHEAD
270<action>
271<start>^.OH '''</start>
272<end>'^</end>
273</rule>
274
275<rule>
276<match>
277<gi>COMMENT
278<action>
279<start>^(*^</start>
280<end>^*)^</end>
281</rule>
282
283<rule>
284<match>
285<gi>APPENDIX
286<action>
287<start>^.af H1 A^</start>
288</rule>
289
290<rule>
291<match>
292<gi>TOC
293</rule>
294
295<rule>
296<match>
297<gi>LOF
298</rule>
299
300<rule>
301<match>
302<gi>LOT
303</rule>
304
305<rule>
306<match>
307<gi>PART
308</rule>
309
310<rule>
311<match>
312<gi>CHAPT
313<action>
314<start>^.if t .SK
315${_set sl 1}</start>
316</rule>
317
318<rule>
319<match>
320<gi>SECT
321<relation>ancestor BOOK
322<action>
323<start>${_set sl 2}</start>
324</rule>
325
326<rule>
327<match>
328<gi>SECT
329<action>
330<start>${_set sl 1}</start>
331</rule>
332
333<rule>
334<match>
335<gi>SECT1
336<relation>ancestor BOOK
337<action>
338<start>${_set sl 3}</start>
339</rule>
340
341<rule>
342<match>
343<gi>SECT1
344<action>
345<start>${_set sl 2}</start>
346</rule>
347
348<rule>
349<match>
350<gi>SECT2
351<relation>ancestor BOOK
352<action>
353<start>${_set sl 4}</start>
354</rule>
355
356<rule>
357<match>
358<gi>SECT2
359<action>
360<start>${_set sl 3}</start>
361</rule>
362
363<rule>
364<match>
365<gi>SECT3
366<relation>ancestor BOOK
367<action>
368<start>${_set sl 5}</start>
369</rule>
370
371<rule>
372<match>
373<gi>SECT3
374<action>
375<start>${_set sl 4}</start>
376</rule>
377
378<rule>
379<match>
380<gi>SECT4
381<relation>ancestor BOOK
382<action>
383<start>${_set sl 6}</start>
384</rule>
385
386<rule>
387<match>
388<gi>SECT4
389<action>
390<start>${_set sl 5}</start>
391</rule>
392
393<rule>
394<match>
395<gi>HEADING
396<context>PART
397<action>
398<start>^.if t .SK
399\&
400.if t .fam H
401.SP 3i
402.if t .S 24
403Part \n+(H0
404.SP 1i
405.if t .S 36^</start>
406<end>^.if t .S D
407.if t .fam &family;
408.if t .SK^</end>
409</rule>
410
411<rule>
412<match>
413<gi>HEADING
414<action>
415<start>^.H ${sl} "</start>
416<end>"
417${_followrel child LABEL &r.label}</end>
418</rule>
419
420<!--
421<rule>
422<match>
423<gi>HEADING
424<action>
425<start>^.br
426.di fbsd-head^</start>
427<end>^.br
428.di
429.asciify fbsd-head
430.H ${sl} \*[fbsd-head]
431${_followrel child LABEL &r.label}</end>
432</rule>
433-->
434
435<!-- A paragraph immediately following a <tag> in a <descrip>. -->
436<rule>
437<match>
438<gi>P
439<relation>sibling-1 TAG
440</rule>
441
442<rule>
443<match>
444<gi>P
445<action>
446<start>${_notempty &r.phack;}</start>
447</rule>
448
449<!-- Completely empty paragraphs. -->
450<rule id="&r.phack;">
451<match>
452<gi>_phack
453<action>
454<replace>^.P^</replace>
455</rule>
456
457
458<rule>
459<match>
460<gi>ITEMIZE
461<action>
462<start>^.BL^</start>
463<end>^.LE^</end>
464</rule>
465
466<rule>
467<match>
468<gi>ENUM
469<action>
470<start>^.AL^</start>
471<end>^.LE^</end>
472</rule>
473
474<rule>
475<match>
476<gi>DESCRIP
477<action>
478<start>^.BVL \n(Li*2/1 \n(Li^</start>
479<end>^.LE^</end>
480</rule>
481
482<rule>
483<match>
484<gi>ITEM
485<action>
486<start>^.LI^</start>
487</rule>
488
489<rule>
490<match>
491<gi>TAG
492<action>
493<start>^.LI "</start>
494<end>"^</end>
495</rule>
496
497<rule>
498<match>
499<gi>CITE
500<action>
501<start>^.\[
502${ID}
503.\]^</start>
504</rule>
505
506<rule>
507<match>
508<gi>NCITE
509<action>
510<start>^.\[
511${ID}
512.\]
513(${NOTE})</start>
514</rule>
515
516<rule>
517<match>
518<gi>FOOTNOTE
519<action>
520<start>\*F
521.FS^</start>
522<end>^.FE^</end>
523</rule>
524
525<rule>
526<match>
527<gi>SQ
528<action>
529<start>\*Q</start>
530<end>\*U</end>
531</rule>
532
533<rule>
534<match>
535<gi>LQ
536<action>
537<start>^.if t .br
538.if t .S -2
539.DS I F^</start>
540<end>^.DE
541.if t .S D^</end>
542</rule>
543
544<rule>
545<match>
546<gi>EM
547<action>
548<start>\fI</start>
549<end>\fR</end>
550</rule>
551
552<rule>
553<match>
554<gi>BF
555<action>
556<start>\fB</start>
557<end>\fR</end>
558</rule>
559
560<rule>
561<match>
562<gi>IT
563<action>
564<start>\fI</start>
565<end>\fR</end>
566</rule>
567
568<rule>
569<match>
570<gi>SF
571<action>
572<start>\fR</start>
573<end>\fR</end>
574</rule>
575
576<rule>
577<match>
578<gi>SL
579<action>
580<start>\fI</start>
581<end>\fR</end>
582</rule>
583
584<rule>
585<match>
586<gi>TT
587<action>
588<start>\fC</start>
589<end>\fR</end>
590</rule>
591
592<rule>
593<match>
594<gi>CPARAM
595<action>
596<start>\fI<</start>
597<end>>\fR</end>
598</rule>
599
600<!-- A URL with a NAME attribute -->
601<rule>
602<match>
603<gi>URL
604<attval>NAME .
605<action>
606<start>${NAME}\*F
607.FS
608\fC&lt;URL:${URL}&gt;\fP
609.FE
610\&</start>
611</rule>
612
613<!-- A URL without a NAME attribute -->
614<rule>
615<match>
616<gi>URL
617<action>
618<start>\fC&lt;URL:${URL}&gt;\fP</start>
619</rule>
620
621<rule>
622<match>
623<gi>HTMLURL
624<action>
625<start>${NAME}</start>
626</rule>
627
628<rule>
629<match>
630<gi>MANREF
631<attval>SECTION
632<action>
633<start>\fC${NAME}(${SECTION})\fR</start>
634</rule>
635
636<rule>
637<match>
638<gi>MANREF
639<action>
640<start>\fC${NAME}\fR</start>
641</rule>
642
643
644<rule>
645<match>
646<gi>REF
647<attval>NAME .
648<action>
649<start>\fI${NAME}\fP (section\~
650.GETHN "${ID}"
651, page\~
652.GETPN "${ID}"
653)</start>
654</rule>
655
656<rule>
657<match>
658<gi>REF
659<action>
660<start>\fI${ID}\fP (section\~
661.GETHN "${ID}"
662, page\~
663.GETPN "${ID}"
664)</start>
665</rule>
666
667<rule>
668<match>
669<gi>PAGEREF
670<action>
671<start>^.GETPN "${ID}"
672\&</start>
673</rule>
674
675<rule>
676<match>
677<gi>X
678</rule>
679
680<rule>
681<match>
682<gi>MC
683</rule>
684
685<rule>
686<match>
687<gi>BIBLIO
688<action>
689<start>^.\[
690\$LIST\$
691.\]^</start>
692</rule>
693
694<rule>
695<match>
696<gi>VERB CODE
697<action>
698<start>^.if t .br
699.if t .S -2
700.DS I
701.fam C^</start>
702<end>^.DE
703.if t .S D^</end>
704</rule>
705
706<rule>
707<match>
708<gi>TSCREEN
709<relation>child VERB
710</rule>
711
712<rule>
713<match>
714<gi>TSCREEN
715<action>
716<start>^.if t .br
717.if t .S -2
718.DS I
719.fam C^</start>
720<end>^.DE
721.if t .S D^</end>
722</rule>
723
724<rule>
725<match>
726<gi>QUOTE
727<action>
728<start>^.DS I F^</start>
729<end>^.DE^</end>
730</rule>
731
732<rule>
733<match>
734<gi>DEF
735<action>
736<start>^.sp
737.nr def \n\[def\]+1
738.B "Definition \n\[def\] "^</start>
739<end>^.ft P
740.sp^</end>
741</rule>
742
743<rule>
744<match>
745<gi>PROP
746<action>
747<start>^.sp
748.nr prop \n\[prop\]+1
749.B "Proposition \n\[prop\] "^</start>
750<end>^.ft P
751.sp^</end>
752</rule>
753
754<rule>
755<match>
756<gi>LEMMA
757<action>
758<start>^.sp
759.nr lemma \n\[lemma\]+1
760.B "Lemma \n\[lemma\] "^</start>
761<end>^.ft P
762.sp^</end>
763</rule>
764
765<rule>
766<match>
767<gi>COROLL
768<action>
769<start>^.sp
770.nr coroll \n\[coroll\]+1
771.B "Corolloary \n\[coroll\] "^</start>
772<end>^.ft P
773.sp^</end>
774</rule>
775
776<rule>
777<match>
778<gi>PROOF
779<action>
780<start>^.sp
781.nr proof \n\[proof\]+1
782.B "Proof \n\[proof\] "^</start>
783<end>^.ft P
784.sp^</end>
785</rule>
786
787<rule>
788<match>
789<gi>THEOREM
790<action>
791<start>^.sp
792.nr theorem \n\[theorem\]+1
793.B "Theorem \n\[theorem\] "^</start>
794<end>^.ft P
795.sp^</end>
796</rule>
797
798<rule>
799<match>
800<gi>THTAG
801<action>
802<start>^.B
803(</start>
804<end>)
805.I^</end>
806</rule>
807
808<rule>
809<match>
810<gi>F
811</rule>
812
813<rule>
814<match>
815<gi>DM
816<action>
817<start>^.DS L^</start>
818<end>^.DE^</end>
819</rule>
820
821<rule>
822<match>
823<gi>EQ
824<action>
825<start>^.DS L^</start>
826<end>^.DE^</end>
827</rule>
828
829<rule>
830<match>
831<gi>FR
832</rule>
833
834<rule>
835<match>
836<gi>NU
837<action>
838<start>{</start>
839<end>} over </end>
840</rule>
841
842<rule>
843<match>
844<gi>DE
845<action>
846<start>{</start>
847<end>}</end>
848</rule>
849
850<rule>
851<match>
852<gi>LIM
853</rule>
854
855<rule>
856<match>
857<gi>OP
858</rule>
859
860<rule>
861<match>
862<gi>LL
863<action>
864<start>from {</start>
865<end>}</end>
866</rule>
867
868<rule>
869<match>
870<gi>UL
871<action>
872<start>to {</start>
873<end>}</end>
874</rule>
875
876<rule>
877<match>
878<gi>OPD
879</rule>
880
881<rule>
882<match>
883<gi>PR
884<action>
885<start> prod </start>
886</rule>
887
888<rule>
889<match>
890<gi>IN
891<action>
892<start> int </start>
893</rule>
894
895<rule>
896<match>
897<gi>SUM
898<action>
899<start>	sum </start>
900</rule>
901
902<rule>
903<match>
904<gi>ROOT
905<action>
906<start> sqrt {</start>
907<end>}</end>
908</rule>
909
910<rule>
911<match>
912<gi>AR
913<action>
914<start>^.TS
915center, tab(|) ;
916${CA}.^</start>
917<end>^.TE^</end>
918</rule>
919
920<rule>
921<match>
922<gi>ARR
923</rule>
924
925<rule>
926<match>
927<gi>ARC
928<action>
929<start>|</start>
930</rule>
931
932<rule>
933<match>
934<gi>SUP
935<action>
936<start> sup {</start>
937<end>}</end>
938</rule>
939
940<rule>
941<match>
942<gi>INF
943<action>
944<start> sub {</start>
945<end>}</end>
946</rule>
947
948<rule>
949<match>
950<gi>UNL
951<action>
952<start>{</start>
953<end>} under </end>
954</rule>
955
956<rule>
957<match>
958<gi>OVL
959<action>
960<start>{</start>
961<end>} bar </end>
962</rule>
963
964<rule>
965<match>
966<gi>RF
967<action>
968<start> bold{</start>
969<end>}</end>
970</rule>
971
972<rule>
973<match>
974<gi>V
975<action>
976<start>{</start>
977<end>} vec </end>
978</rule>
979
980<rule>
981<match>
982<gi>FI
983<action>
984<start>\fI</start>
985<end>\fR</end>
986</rule>
987
988<rule>
989<match>
990<gi>PHR
991<action>
992<start> roman }</start>
993<end>}</end>
994</rule>
995
996<rule>
997<match>
998<gi>TU
999<action>
1000<start>^.br^</start>
1001</rule>
1002
1003<rule>
1004<match>
1005<gi>FIGURE
1006</rule>
1007
1008<rule>
1009<match>
1010<gi>EPS
1011<action>
1012<start>^.if t .PSPIC ${FILE}
1013.if n .sp 4^</start>
1014</rule>
1015
1016<rule>
1017<match>
1018<gi>PH
1019<action>
1020<start>^.sp ${VSPACE}^</start>
1021</rule>
1022
1023<rule>
1024<match>
1025<gi>CAPTION
1026<action>
1027<start>^.sp
1028.ce^</start>
1029</rule>
1030
1031<rule>
1032<match>
1033<gi>TABLE
1034<action>
1035<start>^.DF
1036.R^</start>
1037<end>^.DE^</end>
1038</rule>
1039
1040<rule>
1041<match>
1042<gi>TABULAR
1043<action>
1044<start>^.TS
1045center, tab(|) ;
1046${CA}.^</start>
1047<end>^.TE^</end>
1048</rule>
1049
1050<rule>
1051<match>
1052<gi>ROWSEP
1053<action>
1054<start>^</start>
1055</rule>
1056
1057<rule>
1058<match>
1059<gi>COLSEP
1060<action>
1061<start>|</start>
1062</rule>
1063
1064<rule>
1065<match>
1066<gi>HLINE
1067<action>
1068<start>^_^</start>
1069</rule>
1070
1071<rule>
1072<match>
1073<gi>SLIDES
1074<action>
1075<start>^.nr PS 18^</start>
1076</rule>
1077
1078<rule>
1079<match>
1080<gi>SLIDE
1081<action>
1082<end>^.bp
1083\&^</end>
1084</rule>
1085
1086<rule>
1087<match>
1088<gi>LETTER
1089<action>
1090<start>^.nf^</start>
1091<end>^</end>
1092</rule>
1093
1094<rule>
1095<match>
1096<gi>FROM
1097<action>
1098<start>^From: </start>
1099</rule>
1100
1101<rule>
1102<match>
1103<gi>TO
1104<action>
1105<start>^To: </start>
1106</rule>
1107
1108<rule>
1109<match>
1110<gi>ADDRESS
1111<action>
1112<start>^.de Ad</start>
1113<end>^..^</end>
1114</rule>
1115
1116<rule>
1117<match>
1118<gi>EMAIL
1119<action>
1120<start><</start>
1121<end>></end>
1122</rule>
1123
1124<rule>
1125<match>
1126<gi>SUBJECT
1127<action>
1128<start>^Subject: </start>
1129</rule>
1130
1131<rule>
1132<match>
1133<gi>SREF
1134<action>
1135<start>^Sref: </start>
1136</rule>
1137
1138<rule>
1139<match>
1140<gi>RREF
1141<action>
1142<start>^In-Reply-To: </start>
1143</rule>
1144
1145<rule>
1146<match>
1147<gi>CC
1148<action>
1149<start>^cc: </start>
1150</rule>
1151
1152<rule>
1153<match>
1154<gi>OPENING
1155<action>
1156<start>^.fi
1157.LP^</start>
1158</rule>
1159
1160<rule>
1161<match>
1162<gi>CLOSING
1163<action>
1164<start>^.LP^</start>
1165</rule>
1166
1167<rule>
1168<match>
1169<gi>ENCL
1170<action>
1171<start>^.XP
1172encl: </start>
1173</rule>
1174
1175<rule>
1176<match>
1177<gi>PS
1178<action>
1179<start>^.LP
1180p.s.</start>
1181</rule>
1182
1183<!-- Pass the content through -->
1184<rule id="&r.pass">
1185<match>
1186<gi>_pass-text
1187</rule>
1188
1189<rule id="&r.passw">
1190<match>
1191<gi>_pass-word
1192<action>
1193<replace>${each_C} </replace>
1194</rule>
1195
1196</transpec>
1197