#! /bin/csh -f
#
# Usage: TEX [-flags ...] filename
#
# The various flags are described below, but only one filename should
# be given; stdin is not used. File types are indicated by the filename
# suffix. Input files may have one of the following suffixes:
# .tex -- a file with tex commands, equations.
# .dvi -- device independent format.
# .ver -- output of verser1 (for the varian or AED)
# .imp -- output of dvi-imagen (or dviimp)
# Anything else is assumed to be in .tex format.
# If TEX sees a .dvi, .ver, or .imp suffix, it will skip ahead to the right
# point in the processing sequence. Specifically,
# texeqn accepts .tex, outputs .tex
# tex accepts .tex, outputs .dvi and .log
# latex accepts .tex, outputs .dvi and .log
# verser1 accepts .dvi, outputs .ver (for the varian or AED, not on hanuma).
# lpr accepts .ver, outputs raster
# ipr accepts .imp, outputs raster
#
# Flags:
# -latex uses LaTeX.
# -log saves a log file from the tex run in filename.log.
# -d quits once the .dvi file has been made.
# -x makes two passes on the (latex) input, so cross-references
# are resolved.
# -v output device is the varian (imagen is the default)
# -q quits once the .imp file has been made if the imagen is the target printer
# or after the .ver file (i.e. after verser1 stage) if the AED or the varian
# is the target printer.
# -eqn strips out the equations with texeqn and typeset them.
#
# Authors: Kamal Al-Yahya, Jeff Thorson, and Chuck Sword, Stanfor University
#
umask 0
onintr removal
set name=() host=()
set destdir = /usr/local
set tmp = TEX$$
set device = imagen
set st = 0
unset latex x d q eqn log
if ($#argv == 0) then
echo "usage: TEX [-latex] [-eqn] [-log] [-d] [-q] [-x] filename"
exit(-1)
endif
while ($#argv > 0 && !($?inf))
switch ($argv[1])
case -latex:
set latex
breaksw
case -x:
set x
breaksw
case -q:
set q
breaksw
case -d:
set d
breaksw
case -v:
set device = varian
breaksw
case -eqn:
set eqn
breaksw
case -log:
set log
breaksw
case -*:
echo unknown flag $argv[1], ignored
breaksw
default:
set inf = $argv[1]
if !(-e $inf) then
# filename not found, try with .tex ending
if !(-e $inf.tex) then
echo $0 'cannot find file' $inf.
exit(-1)
else
set inf = ($inf.tex)
endif
endif
breaksw
endsw
shift argv
end
set name = $inf:t
set sname = $name:r
set name = $cwd/$name
set suffix = $name:e
if ($suffix == dvi) then
echo TEX: starting with .dvi file
set name = $name:r
set dvifile = $inf
goto dvi
endif
if ($suffix == ver) then
echo TEX: starting with .ver file
set name = $name:r
set verfile = $inf
goto ver
endif
if ($suffix == imp) then
echo TEX: starting with .imp file
set name = $name:r
set impfile = $inf
goto imp
endif
if ($suffix == tex || $suffix == eqn) then
set name = $name:r
endif
echo "\batchmode" > $tmp.tex
if ($?eqn) then
$destdir/texeqn < $inf >> $tmp.tex
else
cat $inf >> $tmp.tex
endif
echo "\bye" >> $tmp.tex
# Choose tex or latex
if ($?latex) then
if (-e $name.aux) then
cp $name.aux $tmp.aux
endif
$destdir/latex $tmp:t
if ($status != 0) then
goto oops
else
if (-e $tmp.aux) then
cp $tmp.aux $name.aux
endif
endif
if ($?x) then
echo "Starting second pass"
$destdir/latex $tmp
if ($status != 0) then
goto oops
endif
if (-e $tmp.aux) then
cp $tmp.aux $name.aux
endif
endif
else $destdir/tex $tmp
if ($status != 0) then
oops:
echo TEX could not process your file.
echo Error messages are in $name.log
mv -f $tmp.log $name.log
set st = -1
goto removal
endif
endif
if ($?log) then
mv -f $tmp.log $name.log
if (-e $tmp.aux) then
mv -f $tmp.aux $name.aux
endif
endif
set dvifile = $tmp.dvi
if ($?d) then
mv -f $dvifile $name.dvi
goto removal
endif
dvi:
if($device == imagen) then
$destdir/dvi-imagen -s $dvifile > $tmp.imp
if ($?q) then
mv -f $tmp.imp $name.imp
goto removal
endif
set impfile = $tmp.imp
imp:
(echo -n \@document\(owner \"$user\", site \"$host\", spooldate \
\"`date`\", language \"imPress\", jobheader off, \
jamresistance on\) ; cat $impfile ) | $destdir/ipr
goto removal
endif
if($device == varian) then
$destdir/verser1 < $dvifile > $tmp.ver
if ($status != 0) then
echo TEX bombed out on verser1.
set st = -1
goto removal
endif
set verfile = $tmp.ver
if ($?q) then
mv -f $verfile $name.ver
goto removal
endif
ver:
lpr -d -s -Pvarian $tmp.ver
endif