#!/bin/sh ######################################################################### # # FILE : latextool # DATE : 29.8.1998 # LAST MOD. : 28.8.2000 # AUTHOR : Patrick Meier / patrick.meier@gmx.net # DESCRIPTION : simple script to view / print and convert latex files # # Copyrigth (C) 2001 by Patrick Meier, Switzerland # ######################################################################### PN=`basename "$0"` ######################################################################### # definitions ######################################################################### # programmes VIEWER="gv" PRINTTOOL="lpr" LATEX="latex" PDFLATEX="pdfelatex" DVIPS="dvips" RM="rm" MAKEINDEX="makeindex" # logfile name LOGFILE="`date '+%d_%m_%Y__%H_%M_%S'`___$$" # parameters VIEW="view" PRINT="print" PS="ps" PDF="pdf" LANDSCAPE="landscape" PORTRAIT="portrait" # extentsions LATEX_EXT="tex" DVI_EXT="dvi" PS_EXT="ps" PDF_EXT="pdf" INDEX_EXT="idx" IND_EXT="ind" IST_EXT="ist" ######################################################################### # Usage ######################################################################### Usage() { echo "$PN - simple script to view / print and convert latex files" echo "usage : $PN [-v | -p | -ps | -pdf] [-landscape | -portrait] filename" exit 1 } ######################################################################### # clean ######################################################################### clean() { $RM $1.log $1.toc $1.aux $1.idx $1.ind $1.ilg >/dev/null 2>&1 } ######################################################################### # makeIndex ######################################################################### makeIndex() { echo -e "\n\n========================================================================" echo " make index" echo "========================================================================" $MAKEINDEX $@ } ######################################################################### # compile ######################################################################### compile() { if [ -n "$3" ] then oldPath="`pwd`" cd $3 fi echo "" > $2.$IND_EXT CMD="$1 $2.$LATEX_EXT" if( eval $CMD ) then if [ -r $2.$INDEX_EXT ] then makeIndex -s $2.$IST_EXT $2.$INDEX_EXT # while () # do eval $CMD #> /dev/null 2>&1 # done fi eval $CMD > /dev/null 2>&1 eval $CMD > /dev/null 2>&1 fi if [ -n "$3" ] then cd $oldPath fi } ######################################################################### # convert2dvi ######################################################################### convert2dvi() { echo -e "\n\n========================================================================" echo " compile $2$1.$LATEX_EXT to $2$1.$DVI_EXT" echo "========================================================================" if( ! compile $LATEX $1 $2 ) then if [ -r $LOGFILE ] then cat $LOGFILE fi clean $2$1 exit 1 fi } ######################################################################### # convert2ps ######################################################################### convert2ps() { echo -e "\n\n========================================================================" echo " convert $3$1.$DVI_EXT to $3$1.$PS_EXT" echo "========================================================================" $DVIPS -t $2 -o $3$1.$PS_EXT $3$1.$DVI_EXT $RM $3$1.$DVI_EXT >/dev/null 2>&1 } ######################################################################### # convert2pdf ######################################################################### convert2pdf() { echo -e "\n\n========================================================================" echo " compile $3$1.$LATEX_EXT to $3$1.$PDF_EXT" echo "========================================================================" if( ! compile $PDFLATEX $1 $3 ) then if [ -r $LOGFILE ] then cat $LOGFILE fi fi } ######################################################################### # view ######################################################################### view() { convert2ps $1 $2 $3 if [ "$3" = "$LANDSCAPE" ] then $VIEWER -swap $3$1.$PS_EXT else $VIEWER $3$1.$PS_EXT fi $RM $3$1.$PS_EXT } ######################################################################### # printit ######################################################################### printit() { convert2ps $1 $2 $3 $PRINTTOOL $3$1.$PS_EXT $RM $3$1.$PS_EXT } ######################################################################### # main ######################################################################### OPERATION="" ORIENTATION="" NAME="" # Arg stuff: while [ $# != 0 ] do case "$1" in -p) if [ -z "$OPERATION" ] then OPERATION=$PRINT else echo "Only one operation can be done!" Usage fi shift ;; -v) if [ -z "$OPERATION" ] then OPERATION=$VIEW else echo "Only one operation can be done!" Usage fi shift ;; -ps) if [ -z "$OPERATION" ] then OPERATION=$PS else echo "Only one operation can be done!" Usage fi shift ;; -pdf) if [ -z "$OPERATION" ] then OPERATION=$PDF else echo "Only one operation can be done!" Usage fi shift ;; -landscape) if [ -z "$ORIENTATION" ] then ORIENTATION=$LANDSCAPE else echo "Only one orientation can be chosed!" Usage fi shift ;; -portrait) if [ -z "$ORIENTATION" ] then ORIENTATION=$PORTRAIT else echo "Only one orientation can be chosed!" Usage fi shift ;; *) if [ -z "$NAME" ] then NAME=$1 shift else echo "Only one orientation can be chosed!" Usage fi esac done # set default parameters if [ -z "$OPERATION" ] then OPERATION=$VIEW fi if [ -z "$ORIENTATION" ] then ORIENTATION=$PORTRAIT fi # test name and test file if [ -z "$NAME" ] then Usage else NAME="${NAME%.$LATEX_EXT}" FILEPATH="${NAME%/*}" NAME="${NAME##*/}" if [ "$FILEPATH" = "$NAME" ] then FILEPATH="" else FILEPATH="$FILEPATH/" fi if [ ! -r "$FILEPATH$NAME.$LATEX_EXT" ] then echo "File $FILEPATH$NAME.$LATEX_EXT not readable!" exit 1 fi LOGFILE="$FILEPATH$NAME_$LOGFILE" fi # test latexfile if [ -n "`grep \landscape $FILEPATH$NAME.$LATEX_EXT`" ] && [ "$ORIENTATION" = "$PORTRAIT" ] then echo -e "\n\n========================================================================" echo "Warning: Can not compile latex source to a landscape document. In the document is landscape set!" echo "========================================================================" ORIENTATION="$LANDSCAPE" fi # do commands case "$OPERATION" in "$PS") convert2dvi $NAME $FILEPATH convert2ps $NAME $ORIENTATION $FILEPATH ;; "$PDF") convert2pdf $NAME $ORIENTATION $FILEPATH ;; "$PRINT") convert2dvi $NAME $FILEPATH printit $NAME $ORIENTATION $FILEPATH ;; *) convert2dvi $NAME $FILEPATH view $NAME $ORIENTATION $FILEPATH ;; esac # clean up clean $FILEPATH$NAME $RM *.aux >/dev/null 2>&1 ######################################################################### # EOF #########################################################################