🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.text
Article #1466

Re: LaTex to ... translator needed

#1466
From: Sebastian Rahtz
Date: Tue, 16 Jan 1990 08:51
149 lines
4981 bytes
>>>>> On 15 Jan 90 21:18:08 GMT, fred@urquell.osf.org (Fred Dalrymple) said:


 > We need to translate some LaTeX documents into troff -mm.
 > We therefore need a translator from:

 > LaTeX       troff -mm         that would solve the problem in one step

to do the job PROPERLY is impossible; so do it roughly, and then tart
it up. the following sed script does the trivial bits - add in your
own lines for the constructs your paper uses.

#!/bin/sh

# Usage: lat2mm [file]

# Converts tex document to mm for previewing; eg for foo.tex, use

#	lat2mm foo | nroff -mm | ul

# Tries to act like an nroff preprocessor, not a tex program.
# The only concession to the latter paradigm is that it tries
# appending a .tex suffix if it can't open a file.
# After all, it is for interfacing a tex file to an nroff pipeline.

# BUGS

# It would take a lot of work to perfect this sed script, because
# although sed is appropriate for a quick hack ("No sooner sed than done...")
# it is not the ideal tool for this problem (at least, not on its own).
# As a mechanism for previewing the structure of one's tex document, this
# program is fine.

# For use with troff, some special characters could be converted
# too, eg s/---/\\(em/, s/--/\\(en/, etc.
# There is a fundamental problem with small caps, in that conversion
# to upper case is required.

# HISTORY

# Based on Sebastian's LaTeX to mm Converter
# Dave goodness added 29-7-87 (some sed tricks and cmd line handling)
# More Seb goodness added 29-7-87 (improved script)
# Les goodness added 3-8-87 (improved LaTeX handling)


prog=`basename $0`

if [ $# -gt 1 ] ; then
	echo Usage: $prog "[ file ]" 1>&2
	exit 1
fi

if [ $# -eq 1 ] ; then
	file=$1
	if [ ! -r $file ] ; then
		file=$file.tex
		if [ ! -r $file ] ; then
			echo $prog: cannot open $1 1>&2
			exit 2
		fi
	fi
else
	file="-"
fi

cat $file | \

############################# THE SCRIPT ITSELF ##############################

sed   's/\([^\\]\)%\(.*\)/\1\\"\2/g
	s/^%/." /
	s/\\%/%/g
	s/\\tableofcontents/\.TC/
	/\\bibliographystyle/d
	/\\documentstyle/d
	s/\\begin{document}/\.SA  1\.nr Pt 2\.nr Ps 0\.nr Si 10\.nr Cl 2.nr *F 1/
	/\\end{document}/d
	s/\\input \([a-zA-Z0-9.]*\)/(INCLUDING FILE \1)/g
	/\\thanks/d
	s/\\title[^{]*{\(.*\)}/\.TL\1/
	/\\title/N
	s/\\title[^{]*{\(.*\)}/\.TL\1/
	s/\\footnote{\([^}]*\)}/\\\*F.FS\1.FE/
	/\\footnote{/N
	s/\\footnote{\([^}]*\)}/\\\*F.FS\1.FE/
	/\\footnote{/N
	s/\\footnote{\([^}]*\)}/\\\*F.FS\1.FE/
	s/\\author{\(.*\)}/\.AU \"\1\"/
	/\\author{/N
	s/\\author{\(.*\)}/\.AU \"\1\"/
	s/\\date{\(.*\)}/\.AF \"\1/
	s/\\maketitle.*/\.MT 4/
	s/\\chapter{\([^}]*\)}/\.bp.B.ce\1.P.sp 3/
	s/\\section{\(.*\)}/\.H 1 \"\1/
	s/\\section\*{\(.*\)}/\.H 1 \"\1/
	s/\\subsection\*{\(.*\)}/\.H 2 \"\1/
	s/\\subsection{\(.*\)}/\.H 2 \"\1/
	s/\\subsubsection{\(.*\)}/\.H 3 \"\1/
	s/\\subsubsection\*{\(.*\)}/\.H 3 \"\1/
	s/\\begin{ding.*$/\.BL/
	s/\\begin{itemize}/\.BL/
	s/\\begin{enumerate}/\.AL/
	s/\\begin{description}/\.VL 10/
	/\\begin{tabular}/,/\\end{tabular}/s/	/ /g
	/\\begin{tabular}/,/\\end{tabular}/s/\&/	/g
	/\\begin{tabular}/,/\\end{tabular}/s/\\\\//
	s/\\begin{tabular}{\(.*\)}.*/.TSbox;\1./
	s/\\end{description}/\.LE/
	s/\\end{dinglist}/\.LE/
	s/\\end{itemize}/\.LE/
	s/\\end{enumerate}/\.LE/
	s/\\end{tabular}/.TE/
	s/{\\bf \([^}]*\)}/\\fB\1\\fP/g
	/{\\bf /N
	s/{\\bf \([^}]*\)}/\\fB\1\\fP/g
	s/{\\em \([^}]*\)}/\\fI\1\\fP/g
	/{\\em /N
	s/{\\em \([^}]*\)}/\\fI\1\\fP/g
	s/{\\it \([^}]*\)}/\\fI\1\\fP/g
	/{\\it /N
	s/{\\it \([^}]*\)}/\\fI\1\\fP/g
	s/{\\sc \([^}]*\)}/\\s-2\1\\s+2/g
	s/\\item/\.LI/
	s/\\item\[\(.*\)\]/\.LI\"\1\"/
	s/\\ref{\([^}]*\)}/REFERENCE \1/g
	s/\\label{\([^}]*\)}/LABEL \1/g
	s/\\cite\[\(.*\)\]{\([^}]*\)}/CITE \1 \2/g
	s/\\cite{\([^}]*\)}/CITE \1/g
	s/\\[a-zA-Z0-9][a-zA-Z0-9]*{[^}]*}{[^}]*}//g
	s/\\[a-zA-Z0-9][a-zA-Z0-9]*{[^}]*}//g
	s/\\[a-zA-Z0-9][a-zA-Z0-9]*=[a-zA-Z0-9][a-zA-Z0-9]*//g
	s/\\[a-zA-Z0-9][a-zA-Z0-9]*//g
	s/{\([^}]*\)}/\1/g' | \

################################################################################

# translate the control-G's to newlines

tr '\007' '\012' 

exit 0

# end of lat2mm

--
Sebastian Rahtz                        S.Rahtz@uk.ac.soton.ecs (JANET)
Computer Science                       S.Rahtz@ecs.soton.ac.uk (Bitnet)
Southampton S09 5NH, UK                S.Rahtz@sot-ecs.uucp    (uucp)
Technical Details
Message-ID: <SPQR.90Jan16085156@caxton.ecs.soton.ac.uk>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!icdoc!sot-ecs!spqr
References: <20837@kuhub.cc.ukans.edu> <2736@paperboy.OSF.ORG>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!ukc!icdoc!sot-ecs!spqr
From: spqr@ecs.soton.ac.uk (Sebastian Rahtz)
Newsgroups: comp.text
Subject: Re: LaTex to ... translator needed
Message-ID: <SPQR.90Jan16085156@caxton.ecs.soton.ac.uk>
Date: 16 Jan 90 08:51:56 GMT
References: <20837@kuhub.cc.ukans.edu> <2736@paperboy.OSF.ORG>
Sender: spqr@ecs.soton.ac.uk
Organization: Southampton University Computer Science
Lines: 149
In-reply-to: fred@urquell.osf.org's message of 15 Jan 90 21:18:08 GMT