Article View: comp.text
Article #1466Re: LaTex to ... translator needed
From: Sebastian Rahtz
Date: Tue, 16 Jan 1990 08:51
Date: Tue, 16 Jan 1990 08:51
149 lines
4981 bytes
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!spqrReferences:
<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