diff options
Diffstat (limited to 'Master/bin/i386-freebsd/ps4pdf')
-rwxr-xr-x | Master/bin/i386-freebsd/ps4pdf | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/Master/bin/i386-freebsd/ps4pdf b/Master/bin/i386-freebsd/ps4pdf index 81f254a3735..cbdcb022926 100755 --- a/Master/bin/i386-freebsd/ps4pdf +++ b/Master/bin/i386-freebsd/ps4pdf @@ -1,6 +1,13 @@ #!/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). # First, work around bugs/limitations in some shells on some systems: test -f /bin/sh5 && test -z "$RUNNING_SH5" \ @@ -22,7 +29,7 @@ test -n "${ZSH_VERSION+set}" && alias -g '${1+"$@"}'='"$@"' ############################################################################### cleanup() { - rc=$1 + rc=$? $needsCleanup && test -n "$tmpdir" && test -d "$tmpdir" \ && { rm -f "$tmpdir"/*; cd /; rmdir "$tmpdir"; } @@ -38,7 +45,7 @@ setupTmpDir() { $needsCleanup && return - trap 'cleanup 1' 1 2 3 7 13 15 + trap 'cleanup' 1 2 3 7 13 15 needsCleanup=true (umask 077; mkdir "$tmpdir") \ || abort "could not create directory \`$tmpdir'" @@ -61,14 +68,17 @@ myexec() if test $rc != 0; then echo "$0: command $@ returned with code $rc" cat <$log - cleanup $rc + (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" @@ -76,10 +86,16 @@ version="1.0" # look for optional things first while case $1 in - --help|-h) echo "$0 [-v|-q] file" - echo "Process LaTeX document containing PSforPDF macros." - exit 0;; + --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." + exit 0;; --version) echo "$progname version $version"; exit 0;; + --crop|-c) crop=true;; + --Xps2pdf|-Xps2pdf) shift; ps2pdf_opts="$ps2pdf_opts $1";; -q) silent=true;; -v) silent=false;; -*) echo "$progname: unknown option $1 ignored";; @@ -88,17 +104,30 @@ while do shift done + # remaining option: filename file=$1 +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 latex "$file" -myexec dvips -Ppdf -o "$job-pics.ps" "$job.dvi" -myexec ps2pdf -dAutoRotatePages=/None "$job-pics.ps" "$job-pics.pdf" -myexec pdflatex "$file" +myexec latex \ + "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$file}" +test -f "$job.dvi" && myexec dvips -Ppdf -o "$job-pics.ps" "$job.dvi" +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 pdflatex \ + "\AtBeginDocument{\RequirePackage{pst-pdf}} \input{$file}" +true +cleanup -cleanup 0 |