summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pst-pdf/ps4pdf
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/pst-pdf/ps4pdf')
-rwxr-xr-xmacros/latex/contrib/pst-pdf/ps4pdf157
1 files changed, 157 insertions, 0 deletions
diff --git a/macros/latex/contrib/pst-pdf/ps4pdf b/macros/latex/contrib/pst-pdf/ps4pdf
new file mode 100755
index 0000000000..33ae742835
--- /dev/null
+++ b/macros/latex/contrib/pst-pdf/ps4pdf
@@ -0,0 +1,157 @@
+#!/bin/sh
+
+# Copyright (C) 2004, Thomas Esser. Public domain.
+# 2005-03-08: New option "--crop", Rolf Niepraschk.
+# dvips call only if the dvi file exist (RN).
+# 2005-06-27: ps2pdf call only if the ps file exist (RN).
+# 2006-04-05: "\RequirePackage{pst-pdf}" added to the (pdf)LaTeX calls
+# as suggested by Niall Murphy.
+# 2006-07-14: Better temp dir handling (suggested by Karl Berry) (RN).
+# 2006-07-23: New option --Xps2pdf and code cleanup (thanks to Karl Berry) (RN).
+# 2008-08-04: Remove the parameter "-Ppdf" from the dvips call (RN).
+# 2016-07-02: New option "--xelatex", (hv)
+# "--lualatex" , (hv)
+# 2016-07-11: Better tests if xelatex or lualatex (RN)
+
+# First, work around bugs/limitations in some shells on some systems:
+test -f /bin/sh5 && test -z "$RUNNING_SH5" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \
+ && { RUNNING_SH5=true; export RUNNING_SH5; exec /bin/sh5 $0 ${1+"$@"}; }
+unset RUNNING_SH5
+
+test -f /bin/bsh && test -z "$RUNNING_BSH" \
+ && { UNAMES=`uname -s`; test "x$UNAMES" = xAIX; } 2>/dev/null \
+ && { RUNNING_BSH=true; export RUNNING_BSH; exec /bin/bsh $0 ${1+"$@"}; }
+unset RUNNING_BSH
+
+# hack around a bug in zsh:
+test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"'
+
+###############################################################################
+# cleanup()
+# clean up the temp area and exit with proper exit status
+###############################################################################
+cleanup()
+{
+ rc=$?
+ $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \
+ && { rm -f "$tmpdir"/*; cd /; rmdir "$tmpdir"; }
+
+ # set exit code in a portable way; see the autoconf manual for details:
+ (exit $rc); exit $rc
+}
+
+###############################################################################
+# setupTmpDir()
+# set up a temp directory and a trap to remove it
+###############################################################################
+setupTmpDir()
+{
+ $needsCleanup && return
+
+ trap 'cleanup' 1 2 3 7 13 15
+ needsCleanup=true
+ (umask 077; mkdir "$tmpdir") \
+ || abort "could not create directory \`$tmpdir'"
+}
+###############################################################################
+# myexec(args)
+# execute the command given as "args"; abort on error; redirect messages to
+# log in "silent" mode; redirect stdin (</dev/null) in silent mode
+###############################################################################
+myexec()
+{
+ if $silent; then
+ echo "$0: running $@"
+ "$@" >$log 2>&1 </dev/null
+ rc=$?
+ else
+ "$@"
+ rc=$?
+ fi
+ if test $rc != 0; then
+ echo "$0: command $@ returned with code $rc"
+ cat <$log
+ (exit $rc) # set return value
+ cleanup
+ fi
+}
+
+# some initializations
+progname=pdflatexps
+silent=true # default setting; change if you like
+crop=false
+needsCleanup=false
+ps2pdf_opts="-dAutoRotatePages=/None"
+tmpdir=${TMPDIR-${TEMP-${TMP-/tmp}}}/.$progname$$
+log=$tmpdir/log
+version="1.0"
+
+## the defaults
+ENGINE1=latex
+OPTIONS=
+ENGINE2=pdflatex
+DVIPS=dvips
+PS2PDF=ps2pdf
+FILE=$1
+
+# look for optional things first
+while
+ case $1 in
+ --help|-h) echo "$0 [-v|-q|--crop|--version|--Xps2pdf OPT] FILE"
+ echo "Process LaTeX document FILE using the pst-pdf package,"
+ echo "including running latex, dvips, and ps2pdf as necessary."
+ echo "--Xps2pdf OPT passes OPT to ps2pdf."
+ echo " (-dAutoRotatePages=/None is always passed.)"
+ echo "--crop runs pdfcrop on ps2pdf output."
+ echo "--lualatex using the luatex engine for .dvi and .pdf"
+ echo "--xelatex using the xetex engine for .xdv and .pdf"
+ exit 0;;
+ --version) echo "$progname version $version"; exit 0;;
+ --lualatex) ENGINE1=lualatex;
+ OPTIONS="--output-format=dvi";
+ ENGINE2=lualatex; FILE=$2;;
+ --xelatex) ENGINE1=xelatex;
+ OPTIONS="-no-pdf";
+ ENGINE2=xelatex;
+ DVIPS=xdvipdfmx; FILE=$2;;
+ --crop|-c) crop=true;;
+ --Xps2pdf|-Xps2pdf) shift; ps2pdf_opts="$ps2pdf_opts $1";;
+ -q) silent=true;;
+ -v) silent=false;;
+ -*) echo "$progname: unknown option $1 ignored";;
+ *) break;;
+ esac
+do
+ shift
+done
+
+# remaining option: filename
+if test -z "$FILE"; then
+ echo "$0: no file to process, try --help for more information." >&2
+ exit 1
+fi
+
+# jobname von TeX: Verzeichnisse entfernen, evtl. vorhandene Extension
+# entfernen.
+job=`echo "x$1" | sed 's@x@@; s@.*/@@; s@\.[^.]*$@@'`
+
+setupTmpDir
+myexec ${ENGINE1} ${OPTIONS} "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$FILE}"
+
+if test "$ENGINE1" = "latex" || test "$ENGINE1" = "lualatex"; then
+ myexec ${DVIPS} -o "$job-pics.ps" "$job.dvi"
+else
+ myexec ${DVIPS} -o "$job-pics.pdf" "$job.xdv"
+fi
+
+test -f "$job-pics.ps" && myexec ${PS2PDF} "$ps2pdf_opts" "$job-pics.ps" "$job-pics.pdf"
+
+if $crop; then
+ myexec pdfcrop "$job-pics.pdf" "$job-pics-crop.pdf"
+ mv "$job-pics-crop.pdf" "$job-pics.pdf"
+fi
+myexec ${ENGINE2} "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$FILE}"
+true
+cleanup
+