diff options
Diffstat (limited to 'Master/texmf-dist/doc/support/latexmk/extra-scripts/startacroread')
-rw-r--r-- | Master/texmf-dist/doc/support/latexmk/extra-scripts/startacroread | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/support/latexmk/extra-scripts/startacroread b/Master/texmf-dist/doc/support/latexmk/extra-scripts/startacroread new file mode 100644 index 00000000000..a1e98fce6b6 --- /dev/null +++ b/Master/texmf-dist/doc/support/latexmk/extra-scripts/startacroread @@ -0,0 +1,231 @@ +#!/bin/bash + +# ------------------------------------------------------------------- +# +# Shell program to start an instance of "acroread" on localhost via +# "pdfopen" and call "pdfopen" again every time when catching the SIGUSR1 +# signal. This provides the same behaviour as "xdvi" for reloading changed +# files. Acrobat Reader doesn't come with a "watch file" option, hence +# this workaround, sigh... +# +# Copyright 2005, Thorsten Bonow +# ( thorsten.bonow at post.rwth-aachen.de ). +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Description: +# +# +# +# Usage: +# +# startacrobat [ -h | --help ] [PDF document] +# +# Options: +# +# -h, --help Display this help message and exit. +# +# Known Bugs: +# +# No other instance of Acrobat Reader should be running: this script kills +# all of them on exit! +# +# Revision History: +# +# 01/05/2005 Initial version, adapted from "startxpdf" +# 28/08/2005 Adapted to "pdfopen" and "acrobat" +# 01/14/2006 Use HUP or USR1 signal for update to be fully +# compatible with latexmk 3.07 and 3.08 +# (modification by John Collins (collins at phys.psu.edu)) +# +# +# ------------------------------------------------------------------- + + +# ------------------------------------------------------------------- +# Constants +# ------------------------------------------------------------------- + + PROGNAME=$(basename $0) + VERSION="0.95A" + ACRO_RELOAD_EXEC="pdfopen --file" + ACROBAT_EXEC="acroread" + +# ------------------------------------------------------------------- +# Functions +# ------------------------------------------------------------------- + + +function clean_up +{ + +# ----------------------------------------------------------------------- +# Function to kill remote instance of acrobat +# No arguments +# ----------------------------------------------------------------------- + + return +} + + +function error_exit +{ + +# ----------------------------------------------------------------------- +# Function for exit due to fatal program error +# Accepts 1 argument: +# string containing descriptive error message +# ----------------------------------------------------------------------- + + + echo "${PROGNAME}: ${1:-"Unknown Error"}" >&2 + clean_up + exit 1 +} + + +function graceful_exit +{ + +# ----------------------------------------------------------------------- +# Function called for a graceful exit +# No arguments +# ----------------------------------------------------------------------- + + clean_up + exit +} + + +function usage +{ + +# ----------------------------------------------------------------------- +# Function to display usage message (does not exit) +# No arguments +# ----------------------------------------------------------------------- + + echo "Usage: ${PROGNAME} [-h | --help] [PDF document]" +} + + +function helptext +{ + +# ----------------------------------------------------------------------- +# Function to display help message for program +# No arguments +# ----------------------------------------------------------------------- + + local tab=$(echo -en "\t\t") + + cat <<- -EOF- + + ${PROGNAME} ver. ${VERSION} + Shell program to start an instance of "acroread" on localhost via + "acro-reload" and call "acro-reload" again every time when catching the + SIGUSR1 signal. This provides the same behaviour as "xdvi" for reloading + changed files. Acrobat Reader doesn't come with a "watch file" option, + hence this workaround, sigh... + + $(usage) + + Options: + + -h, --help Display this help message and exit. + + + + +-EOF- +} + + +function signal_handle +{ + +# ----------------------------------------------------------------------- +# Function to handle signals +# Accepts 1 argument: +# signal_spec +# ----------------------------------------------------------------------- + + case $1 in + INT) echo "$PROGNAME: Program aborted by user" >&2 + clean_up + exit + ;; + TERM) echo "$PROGNAME: Program terminated" >&2 + clean_up + exit + ;; + USR1) echo "$PROGNAME: Reloading..." >&2 + $ACRO_RELOAD_EXEC $PDF_FILE + ;; + *) error_exit "$PROGNAME: Terminating on unknown signal" + ;; + esac +} + + +# ------------------------------------------------------------------- +# Program starts here +# ------------------------------------------------------------------- + + +##### Command Line Processing ##### + +if [ "$1" = "--help" ]; then + helptext + graceful_exit +fi + +while getopts ":h" opt; do + case $opt in + + h ) helptext + graceful_exit ;; + * ) usage + clean_up + exit 1 + esac +done + +PDF_FILE="$1" + +##### Initialization And Setup ##### + +# Trap TERM and INT signals and properly exit + +trap "signal_handle TERM" TERM +trap "signal_handle INT" INT + +# Trap HUP and USR1 signals for reloading the PDF document +# Convert to USR1 +# (Note HUP is used by gv, and USR1 by xdvi, so both signals have precedent) + +trap "signal_handle USR1" HUP USR1 + + +##### Main Logic ##### + +$ACRO_RELOAD_EXEC $PDF_FILE + +while [ 1 ]; + do + # sleeps again after being interrupted by SIGUSR1, breaks if Acrobat Reader is + # killed + sleep 1 + eval pgrep "-f" "$ACROBAT_EXEC" ">/dev/null" || break +done + +graceful_exit + |