blob: cbdcb0229263057495a336d3b90809dcc73583b2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#!/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" \
&& { 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"
# 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."
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";;
*) break;;
esac
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 \
"\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
|