% linuxdoc replacement file % translates into nroff, using ms macros % manpages can be processed using the man macros % does not use neqn for math. % Based on qwertz replacement file by Tom Gordon % linuxdoc mods by mdw % Groff dependencies are few. To port to another roff: % 1. Check and modify, if necessary, font changes. (e.g. In psroff the % same fonts have other names.) % 2. Check the code for including Encapsulated PostScript, generated % for eps elements. % 3. Also make versions of general.grops and math.grops, which are sed % scripts translating character entities into groff character references. <birddoc> + ".nr PS 11\n" % Hacked by mdw ".nr PI 3n\n" ".ds CF \\\\n\%\n" ".ds CH \\&\n" ".ds dR $\n" % dollar, to avoid EQN conflicts % Start with no TOC ".ds printtoc\n" % Footnote style ".nr FF 1\n" % James Clark's trick to prevent unintended paragraph % breaks ".tr \\&\n" % horizontal line ".de hl\n" ".br\n" "\\l'\\\\n(.lu-\\\\n(.iu'\n" "..\n" % paragraph spacing ".if n .nr PD 1v\n" % margins added by mdw ".nr PO 0.25i\n" ".po 0.25i\n" ".nr LL 7.0i\n" ".nr TL 7.0i\n" ".nr HM 0i\n" ".nr FM 0i\n" % Turn off right-margin filling ".na\n" % h is 1 if first paragraph after heading ".nr h 0\n" % initialize heading level ".nr il 1\n" % Number registers for list ".nr bi 0\n" % initialize begin items ".nr ll 0\n" % list level, stores current level ".nr el 0\n" % current enumeration level % Not all list levels are enumerations, as % itemizations can be embedded within enumerations % and vice versa % type of list level is in \n(t\n(ll, where % 0 : itemize, 1 : enumerate, 2: description % enumerator for an enumeration level is in % \n(e\n(el -- i.e. \n(e1=2 means current item of % enumeration level 1 is 2 % context-sensitive paragraph macro % Bug: There's some problem using this to re-start paragraphs after the % </verb> and </code>, so after verb and code I insert .LP. That's fine % except that is loses indentation when using verb or code inside of a list. ".de Pp\n" ".ie \\\\n(ll>0 \\{\\\n" % within list? ".ie \\\\n(bi=1 \\{\\\n" % first par element of item? ".nr bi 0\n" % reset bi flag % if itemization, mark with a bullet ".if \\\\n(t\\\\n(ll=0 \\{.IP \\\\(bu\\}\n" % itemize % if enumeration: increment and print enumerator % for this enumeration level ".if \\\\n(t\\\\n(ll=1 \\{.IP \\\\n+(e\\\\n(el.\\}\n" % if first par element of descrip, do nothing ".\\}\n" ".el .sp \n" % subsequent par element of item ".\\}\n" ".el \\{\\\n" % not within list ".ie \\\\nh=1 \\{\\\n" % first par after heading ".LP\n" ".nr h 0\n" % reset h flag ".\\}\n" ".el .LP \n" % Changed from .PP, mdw ".\\}\n" ".nh\n" "..\n" % for each level, a number register is created % to store its type and current item number, where % -1=bullet of an itemized list. % Format of list level enumerators ".ds f1 1\n" ".ds f2 a\n" ".ds f3 i\n" ".ds f4 A\n" % Number registers for theorems ".nr def 0\n" ".nr prop 0\n" ".nr lemma 0\n" ".nr coroll 0\n" ".nr proof 0\n" ".nr theorem 0\n" % Reference commands % redefine superscript strings so that refer tags look like [this] ".ds \[. \[\n" ".ds .\] \]\n" </birddoc> % set initial level of headings, in register il <article> + ".nr il 0" + </article> + ".if '\\*[printtoc]'true' .PX\n" <report> + ".nr il 1" + </report> + ".bp\n" ".rm LH\n.rm RH\n" ".TC" + <book> + ".nr il 1" + </book> + ".rm LH\n.rm RH\n" ".bp\n" ".TC" + <notes> </notes> <manpage> + ".nr il -1" + </manpage> <progdoc> </progdoc> % Hacked up titlepag stuff to look more reasonable. Titles and author % names are now stored in strings, printed by the end of </titlepag>. % Wake up! This uses groff-like long string names. You must use groff % to format this. <titlepag> + ".ds mdwtitle\n" ".ds mdwsubtitle\n" ".ds mdwdate\n" ".de printabstract\n" "..\n" + </titlepag> + "\\*[mdwtitle]\n" ".br\n" ".if !'\\*[mdwsubtitle]'' \\*[mdwsubtitle]\n" ".br\n" ".printauthor\n" ".br\n" "\\*[mdwdate]\n" ".br\n" ".printabstract\n" ".br\n" %<title> + ".TL" + %</title> <title> + ".ds mdwtitle " </title> + %<subtitle> + ".br\n" % ".ft R\n" % ".SM" + %</subtitle> + ".LG" + <subtitle> + ".ds mdwsubtitle " </subtitle> + <date> + ".ds mdwdate " </date> + <abstract> + ".de printabstract\n" ".LP\n" </abstract> + ".." + % author needs to be set up as its own macro, fired off from .printtitle. <author> + ".de printauthor" + </author> + ".." + %<name> + ".AU" + %</name> <name> + ".br" + </name> <and> </and> <thanks> "\\**\n" ".FS" + </thanks> + ".FE" + <inst> + ".br" + </inst> %<newline> + ".br" + <newline> + ".br" </newline> <label> </label> <header> </header> <lhead> + ".EH '" </lhead> "'''" + <rhead> + ".OH '''" </rhead> "'" + <comment> + "(*" + </comment> + "*)" + % New abstract given above --mdw %<abstract> + ".AB" + %</abstract> + ".AE" + <appendix> + ".af H1 A" + </appendix> % limitation: no list of figures or tables. A table of contents % is always generated for books and reports. Thus these next three tags % are no-ops % For now, no table-of-contents in ASCII output. (Uncomment this if % desired). %<toc> + ".ds printtoc true" %</toc> <toc> </toc> <lof> </lof> <lot> </lot> <chapt> + ".bp\n" ".NH \\n(il " + </chapt> <sect> + ".NH 1+\\n(il" + </sect> <sect1> + ".NH 2+\\n(il" + </sect1> <sect2> + ".NH 3+\\n(il" + </sect2> <sect3> + ".NH 4+\\n(il" + </sect3> <sect4> + ".NH 5+\\n(il" + </sect4> <heading> ".ds h " </heading> + "\\*h\n" ".XS \\n%\n" "\\*(SN \\*h\n" ".XE\n" ".nr h 1\n" % set heading flag to true <p> + ".Pp" + </p> <itemize> + ".nr ll +1\n" % increment list level ".nr t\\n(ll 0\n" % set type of level to itemize </itemize> + ".nr ll -1\n" % decrement list level <enum> + ".nr ll +1\n" % increment list level ".nr el +1\n" % increment enumeration level ".nr t\\n(ll 1\n" % set type of level to enum ".nr e\\n(el 0 1\n" % initialize enumerator ".af e\\n(el \\*(f\\n(el\n" % style of enumerator ".if \\n(ll>1 .RS" + </enum> + ".if \\n(ll>1 .RE\n" ".br\n" ".nr el -1\n" % decrement enumeration level ".nr ll -1\n" % decrement list level <descrip> + ".RS\n" ".nr ll +1\n" % increment list level ".nr t\\n(ll 2\n" % set type of level to descrip </descrip> + ".nr ll -1\n" % decrement list level ".RE" + % number register bi means "begin item". Used in the .P macro to print % bullets or numbers at beginning of first paragraph of an item. % If bi=1 then the paragraph is the first one of the item. <item> + ".nr bi 1\n.Pp" + </item> <tag> + ".IP \"\\fB" </tag> "\\fR\"\n" ".nr bi 1" + <m> "" </m> "" <cf> "" </cf> "" <cite> + ".\[\n[ID]\n.\]" + </cite> <ncite> + ".\[\n[ID]\n.\]\n([NOTE])" </ncite> <footnote> " (-- " </footnote> "--)" + <sq> "\\*Q" </sq> "\\*U" <lq> + ".RS\n" ".nr LL \\n(LL-\\n(PI" + </lq> + ".nr LL \\n(LL+\\n(PI\n" ".RE" + <em> "\\fI" </em> "\\fP" <bf> "\\fB" </bf> "\\fR" <it> "\\fI" </it> "\\fR" <sf> "\\fR" </sf> "\\fR" <sl> "\\fI" </sl> "\\fR" % Changed by mdw <tt> "\\fC" </tt> "\\fR" % Added by mdw <cparam> "\\fI<" </cparam> ">\\fR" <url> "[NAME] <\\fC[URL]\\fR>" </url> <htmlurl> "[NAME]" </htmlurl> <ref> "``[NAME]''" </ref> <nidx> + "\\#" </nidx> "\\n" <ncdx> + "\\#" </ncdx> "\\n" <pageref> "??" </pageref> <x> </x> <mc> </mc> <biblio> + ".\[\n" "$LIST$\n" ".\]" + </biblio> <code> + ".DS L\n" ".hl\n" ".ft R\n" + </code> + ".hl\n" ".DE\n" ".ft P\n" % ".Pp" + % continue previous paragraph (changed mdw) ".LP" <verb> + ".DS L\n" ".ft R\n" + </verb> + ".DE\n" ".ft P\n" % ".Pp" + % continue previous paragraph (changed mdw) ".LP" % tscreen added by mdw <tscreen> + ".br\n" ".po 0.75i\n" ".ll 6.0i\n" ".ft C\n" ".LP\n" % Used to be Pp </tscreen> + ".br\n" ".po 0.25i\n" ".ll 7.0i\n" ".ft R\n" % This might not be correct ".LP\n" % Used to be Pp <quote> + ".br\n" ".po 0.75i\n" ".ll 6.0i\n" ".nr LL 6.0i\n" ".LP\n" % Used to be Pp </quote> + ".br\n" ".po 0.25i\n" ".ll 7.0i\n" ".nr LL 7.0i\n" ".LP\n" % Used to be Pp % theorems and such <def> + ".sp\n" ".nr def \\n\[def\]+1\n" ".B \"Definition \\n\[def\] \"" + </def> + ".ft P\n.sp" + <prop> + ".sp\n" ".nr prop \\n\[prop\]+1\n" ".B \"Proposition \\n\[prop\] \"" + </prop> + ".ft P\n.sp" + <lemma> + ".sp\n" ".nr lemma \\n\[lemma\]+1\n" ".B \"Lemma \\n\[lemma\] \"" + </lemma> + ".ft P\n.sp" + <coroll> + ".sp\n" ".nr coroll \\n\[coroll\]+1\n" ".B \"Corolloary \\n\[coroll\] \"" + </coroll> + ".ft P\n.sp" + <proof> + ".sp\n" ".nr proof \\n\[proof\]+1\n" ".B \"Proof \\n\[proof\] \"" + </proof> + ".ft P\n.sp" + <theorem> + ".sp\n" ".nr theorem \\n\[theorem\]+1\n" ".B \"Theorem \\n\[theorem\] \"" + </theorem> + ".ft P\n.sp" + <thtag> + ".B\n(" </thtag> ")\n.I" + % mathematics -- this nroff version needs work. <f> </f> <dm> + ".DS L" + </dm> + ".DE" + <eq> + ".DS L" + </eq> + ".DE" + <fr> </fr> <nu> "{" </nu> "} over " <de> "{" </de> "}" <lim> </lim> <op> </op> <ll> " from {" </ll> "}" <ul> " to {" </ul> "}" <opd> </opd> <pr> " prod " </pr> <in> " int " </in> <sum> " sum " </sum> % limitation: eqn only does square roots! <root> " sqrt {" </root> "}" <ar> + ".TS\n" "center, tab(|) ;\n" "[ca]." + </ar> + ".TE" + <arr> "\n" </arr> <arc> "|" </arc> <sup> " sup {" </sup> "}" <inf> " sub {" </inf> "}" <unl> "{" </unl> "} under " <ovl> "{" </ovl> "} bar " <rf> " bold{" </rf> "}" <v> "{" </v> "} vec " % limitation: no calligraphic characters, using helvetica italics instead. Is there a better font? <fi> "\\fI" </fi> "\\fP" <phr> " roman }" </phr> "}" <tu> + ".br" + </tu> % figures <figure> % + ".KF" + </figure> % + ".KE" + <eps> + ".if t .PSPIC [file].ps\n" ".if n .sp 4" + </eps> % Are TeX units properly handled by this translation of ph? <ph> + ".sp [VSPACE]" + </ph> <caption> + ".sp\n.ce" + </caption> % tables <table> + ".KF\n.R" + </table> + ".KE" + <tabular> + ".TS\n" "center, tab(|) ; \n" "[ca]." + </tabular> + ".TE" + <rowsep> "\n" + </rowsep> <colsep> "|" </colsep> %<hline> + "_" + % gregh <hline> + ".hl\n" + </hline> <slides> + ".nr PS 18" + </slides> <slide> </slide> + ".bp\n\\&" + % letters -- replacement for email, using mh format. <letter> + ".nf" + </letter> + <from> + "From: " <to> + "To: " <address> + ".de Ad\n" </address> + ".." + <email> " <" </email> ">" <subject> + "Subject: " <sref> + "Sref: " <rref> + "In-Reply-To: " <cc> + "cc: " <opening> + ".fi\n.LP" + <closing> + ".LP" + <encl> + ".XP\n" "encl: " <ps> + ".LP\np.s." % end of roff replacement file