summaryrefslogtreecommitdiff
path: root/support/kamal/TEX
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/kamal/TEX
Initial commit
Diffstat (limited to 'support/kamal/TEX')
-rw-r--r--support/kamal/TEX227
1 files changed, 227 insertions, 0 deletions
diff --git a/support/kamal/TEX b/support/kamal/TEX
new file mode 100644
index 0000000000..149b69bf68
--- /dev/null
+++ b/support/kamal/TEX
@@ -0,0 +1,227 @@
+#! /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)