summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it')
-rw-r--r--Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it203
1 files changed, 203 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it b/Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it
new file mode 100644
index 00000000000..07a8e98ad31
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cweb-latex/examples/tex-it
@@ -0,0 +1,203 @@
+#!/bin/sh
+# $ITI: tex-it,v 1.3 1995/06/14 10:49:12 schrod Exp $
+#----------------------------------------------------------------------
+
+#
+# tex-it --- transform a TeX document to a final DVI file
+#
+# (history at end)
+
+
+# SYNOPSIS
+#
+# tex-it [-bi] tex-cmd file
+#
+# tex-it runs 'tex-cmd' on 'file' as often as necessary to produce a
+# DVI file where all cross references are resolved. That convergence
+# is reached by analyzing auxilliary files:
+# -- If file.toc has changed, the table of contents is not up to date.
+# -- If file.idx has changed, the index is not up to date.
+# MakeIndex is assumed to be used for creating the index.
+# -- If file.aux has changed, cross references are not up to date.
+# -- If file.aux contains a "\bibdata" tag and if the set of
+# "\citation" tags have changed, then BibTeX is run.
+#
+# No other auxilliary files are handled. No subdocuments (via
+# "\include") are supported.
+#
+# 'tex-cmd' may be more than one word.
+#
+#
+# OPTIONS
+# `-b' skip test for BibTeX
+# `-i' skip test for MakeIndex
+
+# NOTE: On HP-UX this script is not functional, you have to substitute
+# /bin/sh by /bin/ksh in the first line. (/bin/sh doesn't have the
+# getopts builtin.)
+
+
+cmd=`basename $0`
+usage()
+{
+ echo "usage: $cmd [-bi] tex-cmd file" >&2
+ exit 1
+}
+
+
+# Normalize and check arguments.
+
+do_bibtex=true
+do_makeindex=true
+while getopts 'bi' option
+ do case "$option" in
+ b) do_bibtex=''
+ ;;
+ i) do_makeindex=''
+ ;;
+ *) usage
+ ;;
+ esac
+ done
+
+shift `expr $OPTIND - 1`
+test $# -gt 0 || usage
+
+
+# Get file name (last argument), discard extension if necessary.
+
+file=`eval "echo \\$$#"`
+file=`echo $file | sed 's/\.[^.]*//'`
+
+
+# Create temporary directory for auxilliary files to compare. Discard
+# that directory if the script is terminated. Note that trap handler
+# for 0 is executed at the end of the trap handler for the other
+# signals.
+
+tmp=/tmp/tex$$
+trap "/bin/rm -rf $tmp" 0
+trap "exit 4" 1 2 3 15
+mkdir $tmp
+
+
+# ------------------------------------------------------------
+#
+# Set up functions that save auxilliary information and check if they
+# have changed. Save functions are called `save_<type>', check
+# functions are called `check_<type>'. Check functions set $run_tex to
+# "true" if TeX must be run anew. Check functions may run programs to
+# create other auxilliary files.
+
+
+# aux: table of contents & cross references
+#
+# We don't check for *.toc files. LaTeX stores the information in the
+# AUX file anyhow, and plain-based macros typically produce the table
+# of contents at the end of the document, when it's guaranteed to be
+# OK.
+
+save_aux()
+{
+ if [ -f "$file.aux" ]
+ then cp "$file.aux" $tmp
+ else touch "$tmp/$file.aux"
+ fi
+}
+
+check_aux()
+{
+ test -f "$file.aux" || return 0
+ cmp -s "$file.aux" "$tmp/$file.aux" || run_tex=true
+}
+
+
+# bibtex: Citations
+
+save_bibtex()
+{
+ if [ -f "$file.aux" ]
+ then egrep '^\\(citation|bibdata)' "$file.aux" |
+ sort >"$tmp/$file.bib"
+ else touch "$tmp/$file.bib"
+ fi
+}
+
+
+check_bibtex()
+{
+ test "$do_bibtex" -a -f "$file.aux" || return 0
+ egrep '^\\(citation|bibdata)' "$file.aux" | sort >$tmp/bib.new
+ if grep '^\\bibdata' $tmp/bib.new >/dev/null
+ then if cmp -s "$tmp/$file.bib" $tmp/bib.new
+ then : do nothing
+ else bibtex "$file"
+ run_tex=true
+ fi
+ fi
+}
+
+
+# idx: raw index data
+
+save_idx()
+{
+ if [ -f "$file.idx" ]
+ then cp "$file.idx" $tmp
+ else touch "$tmp/$file.idx"
+ fi
+}
+
+check_idx()
+{
+ test "$do_makeindex" -a -f "$file.idx" || return 0
+ if cmp -s "$file.idx" "$tmp/$file.idx"
+ then : do nothing
+ else makeindex "$file"
+ run_tex=true
+ fi
+}
+
+
+# Two functions that collect the functions above.
+
+save_aux_info()
+{
+ save_aux
+ save_bibtex
+ save_idx
+}
+
+check_aux_info()
+{
+ check_aux
+ check_bibtex
+ check_idx
+}
+
+
+# Process the document by TeX. Determine if TeX must be run anew by
+# the functions realized above.
+
+run_tex=true
+while [ "$run_tex" ]
+ do save_aux_info
+ "$@"
+ run_tex=''
+ check_aux_info
+ done
+
+
+
+#======================================================================
+#
+# $ITIlog: tex-it,v $
+# Revision 1.3 1995/06/14 10:49:12 schrod
+# HP-UX /bin/sh doesn't grok getopts, use ksh instead.
+#
+# Revision 1.2 1995/04/19 14:31:06 schrod
+# Support MakeIndex call, too.
+#
+# Revision 1.1 1995/03/14 17:07:26 schrod
+# Added script to process a TeX document.
+#