summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/support/latexmk/extra-scripts/l2
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/support/latexmk/extra-scripts/l2')
-rw-r--r--Master/texmf-dist/doc/support/latexmk/extra-scripts/l2143
1 files changed, 143 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/support/latexmk/extra-scripts/l2 b/Master/texmf-dist/doc/support/latexmk/extra-scripts/l2
new file mode 100644
index 00000000000..f179bf36a56
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latexmk/extra-scripts/l2
@@ -0,0 +1,143 @@
+#!/bin/csh -f
+#(ie run the cshell on this but don't read the .cshrc)
+
+# l2: 2002 Nov 12. John Collins.
+# l2: 2002 Nov 11. John Collins.
+# l2: 2002 Nov 6. John Collins.
+# l2: 2002 Nov 5. John Collins. Simplified from l v. 2.17
+
+set myname=l2
+set displayErrors = 0
+set mainCwd = $cwd
+
+
+#alias beep '(echo -n ""; sleep 1; echo -n "")'
+alias beep '(echo -n "")'
+
+
+nextarg:
+if ( "$1" == "-d" ) then
+ set displayErrors=1
+ shift
+ goto nextarg
+endif
+if ( "$1" == "-d-" ) then
+ set displayErrors=0
+ shift
+ goto nextarg
+endif
+
+if ( ("$1" == "") || ("$1" == "-h") || ("$1" == "--help") ) then
+ echo "Usage $myname [-d|-d-] paper.tex"
+ echo ""
+ echo " -d ==> display errors"
+ echo " -d- ==> do not display errors (default)"
+ echo " -h, --help ==> show this message"
+ exit 0
+endif
+
+set paper=$1
+if ( "$paper:e" == "" ) then
+ set base=$paper
+ set paper=${base}.tex
+else
+ set base=$paper:r
+endif
+
+if !(-f $paper) then
+ echo $paper does not exist\!
+ exit 1
+endif
+
+# set overfull = Overfull
+set overfull = NoOverfull
+echo ALL $overfull MESSAGES WILL BE SUPPRESSED
+# see Lamport page 177 for dealing with overfull boxes.
+# basically, do this:
+# \documentclass[12pt,draft]{article}
+# draft will mark the overfull boxes and the solution
+# will become obvious...
+
+# run latex. The cat /dev/null prevents
+# latex from stopping. Errors are reported to paper.log
+cat /dev/null | latex $paper | grep -v $overfull
+
+# determine if there was an error, by looking at paper.log:
+grep "Emergency stop" $base.log
+@ emergencyStop = ($status == 0)
+
+# Also find if no output produced:
+# Examine only the last line of the file to pick out only the
+# message produced by TeX, and not something else with the same
+# string.
+tail -1 $base.log | grep "No pages of output."
+@ noOutput = ($status == 0)
+
+if ($emergencyStop || $noOutput)then
+ # begin latexerrors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ echo create and display latex errors
+ beep&
+ set err = /tmp/`whoami`-$base:t
+ set tmperr = $err.tex
+
+ echo "\documentclass[12pt]{article}" > $tmperr
+ echo "\textwidth 7.5in" >> $tmperr
+ echo "\begin{document}" >> $tmperr
+ if ( $emergencyStop ) then
+ echo "Error(s) in tex file ($paper): " >> $tmperr
+ else if ( $noOutput ) then
+ echo "No output from tex file ($paper): " >> $tmperr
+ endif
+ echo "\begin{verbatim}" >> $tmperr
+
+ cat $base.log >> $tmperr
+
+ echo "\end{verbatim}" >> $tmperr
+ echo "\end{document}" >> $tmperr
+
+ # latex puts its generated files in the current directory, rather
+ # than the directory of the source file. So change to the
+ # temporary directory, and run latex with the path removed from the
+ # filename argument:
+ pushd /tmp
+ latex $err:t
+ popd
+
+ # Give the original latex file a valid dvi file containing the error log.
+ cp $err.dvi $base.dvi
+
+ # Make a dummy aux file. And also make a .aux.bak file. This
+ # solves the following:
+ # 1. Sometimes a run with errors results from or has produced
+ # a bad .aux file. This gets read in on the next run and
+ # an infinite error loop results unless the .aux file is
+ # deleted or replaced by something innocuous.
+ # 2. Latexmk is liable to make extra runs of latex after an
+ # error is produced. In simple cases, this can be avoided
+ # if the aux file is later than the tex file and the
+ # aux.bak file has the same contents.
+ echo "\relax" > $base.aux
+ echo "\relax" > $base.aux.bak
+
+ rm -f $err.aux $err.log $err.tex
+
+ if ( $displayErrors) then
+ # Popup a new window containing the error log
+ if ( $emergencyStop ) then
+ echo xdvi display shows the last page of the errors
+ set page = '+'
+ else
+ set page = ''
+ endif
+ xdvi $err.dvi $page &
+ sleep 2
+ endif
+ rm -f $err.dvi
+
+ exit 1
+ # end latexerrors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+else
+ echo Successful run
+ exit 0
+endif