% 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
