| author | immler | 
| Sun, 06 Jan 2019 17:54:49 +0100 | |
| changeset 69611 | 42cc3609fedf | 
| parent 67263 | 449a989f42cd | 
| child 72230 | 4710dd5093a3 | 
| permissions | -rwxr-xr-x | 
| 10555 | 1 | #!/usr/bin/env bash | 
| 7772 | 2 | # | 
| 9788 | 3 | # Author: Markus Wenzel, TU Muenchen | 
| 7772 | 4 | # | 
| 7794 | 5 | # DESCRIPTION: run LaTeX (and related tools) | 
| 7772 | 6 | |
| 7 | ||
| 10511 | 8 | PRG="$(basename "$0")" | 
| 7772 | 9 | |
| 10 | function usage() | |
| 11 | {
 | |
| 12 | echo | |
| 28650 | 13 | echo "Usage: isabelle $PRG [OPTIONS] [FILE]" | 
| 7772 | 14 | echo | 
| 15 | echo " Options are:" | |
| 67263 | 16 | echo " -o FORMAT specify output format: pdf (default), dvi, bbl, idx, sty" | 
| 7772 | 17 | echo | 
| 7857 | 18 | echo " Run LaTeX (and related tools) on FILE (default root.tex)," | 
| 19 | echo " producing the specified output format." | |
| 7772 | 20 | echo | 
| 21 | exit 1 | |
| 22 | } | |
| 23 | ||
| 24 | function fail() | |
| 25 | {
 | |
| 26 | echo "$1" >&2 | |
| 27 | exit 2 | |
| 28 | } | |
| 29 | ||
| 30 | ||
| 31 | ## process command line | |
| 32 | ||
| 33 | # options | |
| 34 | ||
| 52746 | 35 | OUTFORMAT=pdf | 
| 7772 | 36 | |
| 37 | while getopts "o:" OPT | |
| 38 | do | |
| 39 | case "$OPT" in | |
| 40 | o) | |
| 41 | OUTFORMAT="$OPTARG" | |
| 42 | ;; | |
| 43 | \?) | |
| 44 | usage | |
| 45 | ;; | |
| 46 | esac | |
| 47 | done | |
| 48 | ||
| 49 | shift $(($OPTIND - 1)) | |
| 50 | ||
| 51 | ||
| 52 | # args | |
| 53 | ||
| 7794 | 54 | FILE="root.tex" | 
| 9788 | 55 | [ "$#" -ge 1 ] && { FILE="$1"; shift; }
 | 
| 7772 | 56 | |
| 9788 | 57 | [ "$#" -ne 0 ] && usage | 
| 7772 | 58 | |
| 59 | ||
| 60 | ## main | |
| 61 | ||
| 8564 | 62 | # root file | 
| 7815 | 63 | |
| 48515 | 64 | DIR="$(dirname "$FILE")" | 
| 65 | FILEBASE="$(basename "$FILE" .tex)" | |
| 9788 | 66 | [ "$DIR" = . ] || FILEBASE="$DIR/$FILEBASE" | 
| 7772 | 67 | |
| 8568 | 68 | function check_root () { [ -f "$FILEBASE.tex" ] || fail "Bad file '$FILE'"; }
 | 
| 7794 | 69 | |
| 7815 | 70 | |
| 71 | # operations | |
| 72 | ||
| 73 | function run_latex () { $ISABELLE_LATEX "\\nonstopmode\\input{$FILEBASE.tex}"; }
 | |
| 74 | function run_pdflatex () { $ISABELLE_PDFLATEX "\\nonstopmode\\input{$FILEBASE.tex}"; }
 | |
| 75 | function run_bibtex () { $ISABELLE_BIBTEX </dev/null "$FILEBASE"; }
 | |
| 14344 | 76 | function run_makeindex () { $ISABELLE_MAKEINDEX </dev/null "$FILEBASE"; }
 | 
| 16064 | 77 | function copy_styles () | 
| 78 | {
 | |
| 16161 | 79 | for STYLEFILE in "$ISABELLE_HOME/lib/texinputs"/*.sty | 
| 80 | do | |
| 16874 | 81 | TARGET="$DIR"/$(basename "$STYLEFILE") | 
| 26576 | 82 | perl -p -e 's/\$[I]d:?(?:\s)*([^\$]*)\$//g' "$STYLEFILE" > "$TARGET" | 
| 16161 | 83 | done | 
| 16064 | 84 | } | 
| 7815 | 85 | |
| 7772 | 86 | case "$OUTFORMAT" in | 
| 52746 | 87 | pdf) | 
| 88 | check_root && \ | |
| 89 | run_pdflatex | |
| 90 | RC="$?" | |
| 91 | ;; | |
| 7772 | 92 | dvi) | 
| 8564 | 93 | check_root && \ | 
| 7815 | 94 | run_latex | 
| 9788 | 95 | RC="$?" | 
| 7772 | 96 | ;; | 
| 7815 | 97 | bbl) | 
| 8564 | 98 | check_root && \ | 
| 7815 | 99 | run_bibtex | 
| 9788 | 100 | RC="$?" | 
| 7772 | 101 | ;; | 
| 14344 | 102 | idx) | 
| 103 | check_root && \ | |
| 104 | run_makeindex | |
| 105 | RC="$?" | |
| 106 | ;; | |
| 8564 | 107 | sty) | 
| 12846 
0fce95478e19
copy_styles replaces overly conservative update_styles;
 wenzelm parents: 
11845diff
changeset | 108 | copy_styles | 
| 9788 | 109 | RC="$?" | 
| 8564 | 110 | ;; | 
| 7772 | 111 | *) | 
| 112 | fail "Bad output format '$OUTFORMAT'" | |
| 113 | ;; | |
| 114 | esac | |
| 7794 | 115 | |
| 9788 | 116 | exit "$RC" |