home *** CD-ROM | disk | FTP | other *** search
- #! /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
-
- removal:
- /bin/rm -f $tmp.tex $tmp.log $tmp.dvi $tmp.ver $tmp.imp $tmp.aux
- exit($st)
-