lib/Tools/latex
author kleing
Thu, 08 Jan 2004 04:32:52 +0100
changeset 14344 0f0a2148a099
parent 12846 0fce95478e19
child 14921 4ad751fa50c1
permissions -rwxr-xr-x
run makeindex if necessary
     1 #!/usr/bin/env bash
     2 #
     3 # $Id$
     4 # Author: Markus Wenzel, TU Muenchen
     5 # License: GPL (GNU GENERAL PUBLIC LICENSE)
     6 #
     7 # DESCRIPTION: run LaTeX (and related tools)
     8 
     9 
    10 PRG="$(basename "$0")"
    11 
    12 function usage()
    13 {
    14   echo
    15   echo "Usage: $PRG [OPTIONS] [FILE]"
    16   echo
    17   echo "  Options are:"
    18   echo "    -o FORMAT    specify output format: dvi (default), dvi.gz, ps, ps.gz,"
    19   echo "                 pdf, bbl, png, sty"
    20   echo
    21   echo "  Run LaTeX (and related tools) on FILE (default root.tex),"
    22   echo "  producing the specified output format."
    23   echo
    24   exit 1
    25 }
    26 
    27 function fail()
    28 {
    29   echo "$1" >&2
    30   exit 2
    31 }
    32 
    33 
    34 ## process command line
    35 
    36 # options
    37 
    38 OUTFORMAT=dvi
    39 
    40 while getopts "o:" OPT
    41 do
    42   case "$OPT" in
    43     o)
    44       OUTFORMAT="$OPTARG"
    45       ;;
    46     \?)
    47       usage
    48       ;;
    49   esac
    50 done
    51 
    52 shift $(($OPTIND - 1))
    53 
    54 
    55 # args
    56 
    57 FILE="root.tex"
    58 [ "$#" -ge 1 ] && { FILE="$1"; shift; }
    59 
    60 [ "$#" -ne 0 ] && usage
    61 
    62 
    63 ## main
    64 
    65 # root file
    66 
    67 DIR=$(dirname "$FILE")
    68 FILEBASE=$(basename "$FILE" .tex)
    69 [ "$DIR" = . ] || FILEBASE="$DIR/$FILEBASE"
    70 
    71 function check_root () { [ -f "$FILEBASE.tex" ] || fail "Bad file '$FILE'"; }
    72 
    73 
    74 # operations
    75 
    76 function run_latex () { $ISABELLE_LATEX "\\nonstopmode\\input{$FILEBASE.tex}"; }
    77 function run_pdflatex () { $ISABELLE_PDFLATEX "\\nonstopmode\\input{$FILEBASE.tex}"; }
    78 function run_bibtex () { $ISABELLE_BIBTEX </dev/null "$FILEBASE"; }
    79 function run_makeindex () { $ISABELLE_MAKEINDEX </dev/null "$FILEBASE"; }
    80 function run_dvips () { $ISABELLE_DVIPS -q -o "$FILEBASE.ps" "$FILEBASE.dvi"; }
    81 function run_thumbpdf () { [ -n "$ISABELLE_THUMBPDF" ] && $ISABELLE_THUMBPDF "$FILEBASE"; }
    82 function copy_styles () { cp -f "$ISABELLE_HOME/lib/texinputs"/*.sty "$DIR"; }
    83 
    84 case "$OUTFORMAT" in
    85   dvi)
    86     check_root && \
    87     run_latex
    88     RC="$?"
    89     ;;
    90   dvi.gz)
    91     check_root && \
    92     run_latex && \
    93     gzip -f "$FILEBASE.dvi"
    94     RC="$?"
    95     ;;
    96   ps)
    97     check_root && \
    98     run_latex && \
    99     run_dvips &&
   100     RC="$?"
   101     ;;
   102   ps.gz)
   103     check_root && \
   104     run_latex && \
   105     run_dvips &&
   106     gzip -f "$FILEBASE.ps"
   107     RC="$?"
   108     ;;
   109   pdf)
   110     check_root && \
   111     run_pdflatex
   112     RC="$?"
   113     ;;
   114   bbl)
   115     check_root && \
   116     run_bibtex
   117     RC="$?"
   118     ;;
   119   idx)
   120     check_root && \
   121     run_makeindex
   122     RC="$?"
   123     ;;
   124   png)
   125     check_root && \
   126     run_thumbpdf
   127     RC="$?"
   128     ;;
   129   sty)
   130     copy_styles
   131     RC="$?"
   132     ;;
   133   *)
   134     fail "Bad output format '$OUTFORMAT'"
   135     ;;
   136 esac
   137 
   138 exit "$RC"