Extract the necessary magic from epstopdf.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7167 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2003-06-12 15:30:41 +00:00
parent 6097aeb408
commit 9f2f29ca34
2 changed files with 51 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2003-06-12 Angus Leeming <leeming@lyx.org>
* scripts/fig2pdftex.sh (legacy_xfig): Extract the necessary magic from
epstopdf and write it as a shell function, as suggested by Martin Vermeer.
Means that we are not dependent on the presence of epstopdf or of perl.
2003-06-12 Angus Leeming <leeming@lyx.org> 2003-06-12 Angus Leeming <leeming@lyx.org>
* scripts/fig2pdftex.sh (legacy_xfig): Use epstopdf, as suggested by * scripts/fig2pdftex.sh (legacy_xfig): Use epstopdf, as suggested by

View File

@ -16,10 +16,10 @@
# to generate ${base}.pdftex_t # to generate ${base}.pdftex_t
# Thereafter, you need only '\input{${base}.pdftex_t}' in your latex document. # Thereafter, you need only '\input{${base}.pdftex_t}' in your latex document.
# These are the external programs we use # The external programs
FIG2DEV=fig2dev FIG2DEV=fig2dev
# If using "legacy_xfig" only # Used only by legacy_xfig
EPSTOPDF=epstopdf GS=gs
find_exe() { find_exe() {
test $# -eq 1 || exit 1 test $# -eq 1 || exit 1
@ -49,12 +49,46 @@ modern_xfig() {
exit 0; exit 0;
} }
# This function is used only by legacy_xfig.
# It manipulates the Bounding Box info to enable gs to produce
# the appropriate PDF file from an EPS one.
# The generated PostScript commands are extracted from epstopdf, distributed
# with tetex.
clean_epsfile() {
test $# -eq 1 || exit 1
# No bounding box info
grep '%%BoundingBox' $1 > /dev/null || return 1;
bbox=`sed -n '/^%%BoundingBox/p' $1`
llx=`echo ${bbox} | cut -d' ' -f2`
lly=`echo ${bbox} | cut -d' ' -f3`
urx=`echo ${bbox} | cut -d' ' -f4`
ury=`echo ${bbox} | cut -d' ' -f5`
width=`expr $urx - $llx`
height=`expr $ury - $lly`
xoffset=`expr 0 - $llx`
yoffset=`expr 0 - $lly`
temp=$1.??
sed "/^%%BoundingBox/{
s/^\(%%BoundingBox:\).*/\1 0 0 ${width} ${height}\\
<< \/PageSize [${width} ${height}] >> setpagedevice\\
gsave ${xoffset} ${yoffset} translate/
}" $1 > $temp
mv -f $temp $1
}
# Older versions of xfig cannot do this, so we emulate the behaviour using # Older versions of xfig cannot do this, so we emulate the behaviour using
# pstex and pstex_t output. # pstex and pstex_t output.
legacy_xfig() { legacy_xfig() {
# Can we find fig2dev and epstopdf? # Can we find fig2dev and epstopdf?
find_exe ${FIG2DEV} find_exe ${FIG2DEV}
find_exe ${EPSTOPDF} find_exe ${GS}
input=$1 input=$1
pdftex_t=$2 pdftex_t=$2
@ -65,8 +99,10 @@ legacy_xfig() {
${FIG2DEV} -Lpstex_t -p${outbase} ${input} ${pdftex_t} ${FIG2DEV} -Lpstex_t -p${outbase} ${input} ${pdftex_t}
# Convert the ${pstex} EPS file (free of "special" text) to PDF format # Convert the ${pstex} EPS file (free of "special" text) to PDF format
# using epstopdf. # using gs
${EPSTOPDF} --outfile=${pdf} ${pstex} clean_epsfile ${pstex}
${GS} -q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite -sOutputFile=${pdf} ${pstex}
rm -f ${pstex} rm -f ${pstex}
exit 0; exit 0;
@ -87,9 +123,9 @@ outbase=`echo ${output} | sed 's/[.][^.]*$//'`
# Ascertain whether fig2dev is "modern enough". # Ascertain whether fig2dev is "modern enough".
# If it is, then the help info will mention "pdftex_t" as one of the # If it is, then the help info will mention "pdftex_t" as one of the
# available outputs. # available outputs.
FUNCTION=modern_xfig CONVERT_IT=modern_xfig
${FIG2DEV} -h | grep 'pdftex_t' > /dev/null || FUNCTION=legacy_xfig ${FIG2DEV} -h | grep 'pdftex_t' > /dev/null || CONVERT_IT=legacy_xfig
${FUNCTION} ${input} ${output} ${outbase} ${CONVERT_IT} ${input} ${output} ${outbase}
# The end # The end