#!/bin/sh #set -xv PREVIEW_CMD="xdvi"; PRINT_CMD="txprl"; # TMP_PRE="/tmp/texm"; NSEC="1000"; # how long "daemon" lives SLEEP="2"; # how long "daemon" sleeps # Get display size for fullscreen previewing SCREEN="`xdpyinfo | grep 'dimensions:' | awk '{print $2}'`"; # if [ "$SCREEN" != "" ]; then PREVIEW="$PREVIEW_CMD -geometry ${SCREEN}-0-0"; else PREVIEW="$PREVIEW_CMD"; fi DEVNULL=" /dev/null 2>&1 "; # unused so far AUTO=""; # Switch for Daemon KILL=""; # Switch to kill Daemon(s) PRINT="" RESTART=""; # Switch to restart previewer NOPROMPT=""; PAUSE="0"; BG="True"; prog="`basename $0`"; # our name while [ "$1" != "" ] # Process arguments do case $1 in "-na") AUTO=""; ;; "-a") AUTO="True"; ;; "-np") NOPROMPT="True"; ;; "-nbg") BG=""; ;; "-p") PRINT="True"; ;; "-r") RESTART="True"; ;; "-k"*) KILL="True"; ;; "-s") shift; SLEEP="$1"; ;; "-t") shift; NSEC="$1"; ;; "-pause") shift; PAUSE="$1"; ;; "-"*) echo; echo "$prog: $1 not an option"; exit 1; ;; *) SRC="$1"; ;; esac shift done # kill "daemon" if desired if [ "$KILL" != "" ]; then ps x | grep $TMP_PRE | grep -v grep; for i in `ps x | grep $TMP_PRE | grep -v grep | awk '{print $1}'` do if [ "$i" = "" ]; then echo "$prog: Nothing to kill"; exit 0; fi if [ "$NOPROMPT" = "" ]; then echo -n "Kill $i? [y]/n "; read Resp; else Resp="y"; fi if [ "$Resp" != "n" ] && [ "$Resp" != "N" ]; then kill $i; fi done exit 0; fi # check for source if [ "$SRC" = "" ]; then SRC="`ls -t *.tex | head -1`"; # find newest *.tex echo "$prog: Setting source to $SRC"; echo; fi if [ "$SRC" = "" ] || [ ! -f "$SRC" ] && [ ! -f "$SRC.tex" ]; then echo "$prog: No file $SRC"; # couldn't find any source exit 1; fi if [ "`echo $SRC | grep '\.tex$'`" = "" ]; then SRC="$SRC.tex"; # append .tex if needed fi BASE="`basename $SRC .tex`"; # basename DVI="$BASE.dvi"; # this is dvi file name # check if preview active TEST="`ps x | grep "$PREVIEW_CMD" | grep "$BASE" | grep -v grep`" if [ "$AUTO" = "" ] && [ "$TEST" = "" ] && [ "$NOPROMPT" = "" ]; then # if so nag about daemon echo; echo -n "Run texm \"daemon\" in background (or print)? y/[n]/p "; read Resp; if [ "$Resp" = "y" ] || [ "$Resp" = "Y" ]; then AUTO="True"; echo "OK, using NSEC = $NSEC, SLEEP = $SLEEP "; elif [ "$Resp" = "p" ]; then PRINT="True"; fi fi # check for latex if [ "`grep documentstyle $SRC | grep -v '^ *%'`" != "" ]; then TEX="latex $SRC"; if ! $TEX; then # do 1st latex exit 1; fi else TEX="tex $SRC"; # plain tex fi PREVIEW_ARGS="`grep -i '^%TEXM-PV:' $SRC | tail -1 | awk -F: '{print $2}'`"; if [ "$PREVIEW_ARGS" != "" ]; then PREVIEW="$PREVIEW_CMD $PREVIEW_ARGS "; fi if [ "$PRINT" != "" ]; then if $TEX; then # tex it even if printing nohup $PRINT_CMD $BASE.dvi /dev/null 2>&1 & fi exit 0; fi RESTART="`grep -i '^%TEXM-RS:' $SRC`"; # run tex/latex if $TEX; then # check to see if previewer up TEST="`ps x | grep "$PREVIEW_CMD" | grep "$BASE" | grep -v grep | awk '{print $1}'`"; if [ "$RESTART" != "" ]; then kill $TEST; TEST=""; fi if [ "$TEST" = "" ]; then if [ "$BG" != "" ]; then nohup $PREVIEW $BASE.dvi /dev/null 2>&1 & else nohup $PREVIEW $BASE.dvi /dev/null 2>&1 fi sleep $PAUSE; fi else sleep $PAUSE; sleep $PAUSE; exit 1; fi if [ "$AUTO" != "" ]; then # do "daemon" stuff TMP=${TMP_PRE}$$; ##<<== cat > $TMP << EOScript #!/bin/sh clean () { rm -f \$0; } trap "clean; exit 0" 15; i="0"; while [ "\$i" -lt $NSEC ] do sleep $SLEEP; i="\`expr \$i + $SLEEP \`"; if [ ! -f Makefile ]; then #<=== make -f - $DVI << EOMake $DVI: $SRC texm $SRC if [ -w /dev/tty1 ]; then echo -n "" > /dev/tty1; fi EOMake else #<=== make fi #<=== done EOScript ##<<== chmod 755 $TMP; eval $TMP $DEVNULL & fi exit 0;