mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 21:21:32 +00:00
A little script to generate high quality PDF from XFIG files.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7034 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ec96a1e117
commit
a6b306f4b4
@ -1,3 +1,11 @@
|
||||
2003-05-23 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* scripts/fig2pdf.sh: new script. Capable of converts an XFIG image to
|
||||
something that pdflatex can process into high quality PDF.
|
||||
Works both with "modern" xfig and with older, "legacy" versions.
|
||||
|
||||
* scripts/fig2png.sh: removed.
|
||||
|
||||
2003-05-23 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* external_templates: add a PDFLaTeX flavour to the xfig outputs.
|
||||
|
101
lib/scripts/fig2pdf.sh
Normal file
101
lib/scripts/fig2pdf.sh
Normal file
@ -0,0 +1,101 @@
|
||||
#! /bin/sh
|
||||
|
||||
# file fig2pdf.sh
|
||||
# This file is part of LyX, the document processor.
|
||||
# Licence details can be found in the file COPYING.
|
||||
#
|
||||
# author Angus Leeming
|
||||
#
|
||||
# Full author contact details are available in file CREDITS
|
||||
|
||||
|
||||
# This script converts an XFIG image to something that pdflatex can process
|
||||
# into high quality PDF.
|
||||
|
||||
# Usage: sh fig2pdf.sh ${base}.xfig
|
||||
# to generate ${base}.pdftex_t
|
||||
# Thereafter, you need only '\input{${base}.pdftex_t}' in your latex document.
|
||||
|
||||
# modern_xfig() and legacy_xfig() are the functions that do all the work.
|
||||
|
||||
# Modern versions of xfig can output the image without "special" text as
|
||||
# a PDF file ${base}.pdf and place the text in a LaTeX file
|
||||
# ${base}.pdftex_t for typesetting by pdflatex itself.
|
||||
modern_xfig() {
|
||||
input=$1.fig
|
||||
pdftex=$1.pdf
|
||||
pdftex_t=$1.pdftex_t
|
||||
|
||||
fig2dev -Lpdftex ${input} ${pdftex}
|
||||
fig2dev -Lpdftex_t -p$1 ${input} ${pdftex_t}
|
||||
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# Older versions of xfig cannot do this, so we emulate the behaviour using
|
||||
# pstex and pstex_t output.
|
||||
legacy_xfig() {
|
||||
input=$1.fig
|
||||
pstex=$1.pstex
|
||||
png=$1.png
|
||||
pdftex_t=$1.pdftex_t
|
||||
|
||||
fig2dev -Lpstex ${input} ${pstex}
|
||||
fig2dev -Lpstex_t -p$1 ${input} ${pdftex_t}
|
||||
|
||||
# Convert the ${pstex} EPS file (free of "special" text) to PDF format
|
||||
# using gs.
|
||||
|
||||
# gs is extremely fussy about the EPS files it converts, so ensure it is
|
||||
# "clean" first.
|
||||
clean=${pstex}.$$
|
||||
eps2eps ${pstex} ${clean}
|
||||
rm -f ${pstex}
|
||||
|
||||
# Extract the width and height of the image using gs' bbox device.
|
||||
# Ie, take output that includes line "%%BoundingBox: 0 0 <width> <height>"
|
||||
# and rewrite it as "-g<width>x<height>"
|
||||
geometry=`gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox ${clean} 2>&1 | \
|
||||
sed '/^%%BoundingBox/! d' | cut -d' ' -f4,5 | \
|
||||
sed 's/^\([0-9]\{1,\}\) \([0-9]\{1,\}\)$/-g\1x\2/'`
|
||||
|
||||
# Generate a PNG file using the -g option to ensure the size is the same
|
||||
# as the original.
|
||||
# If we're using a version of gs that does not have a bbox device, then
|
||||
# ${geometry} = "", so there are no unwanted side effects.
|
||||
gs -q -dSAFER -dBATCH -dNOPAUSE ${geometry} -sDEVICE=png16m \
|
||||
-sOutputFile=${png} ${clean}
|
||||
rm -f ${clean}
|
||||
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# The main logic of the script is below.
|
||||
# All it does is ascertain which of the two functions above to call.
|
||||
|
||||
# We expect a single arg, the name of the input file.
|
||||
test $# -eq 1 || exit 1
|
||||
|
||||
# Remove the .fig extension
|
||||
input=`basename $1`
|
||||
base=`echo ${input} | sed 's/\.fig$//'`
|
||||
|
||||
# Ascertain whether fig2dev is "modern enough".
|
||||
# Here "modern" means "fig2dev Version 3.2 Patchlevel 4"
|
||||
version_info=`fig2dev -h | sed '/^fig2dev/! d'`
|
||||
# If no line begins "fig2dev" then default to legacy_xfig
|
||||
test "x${version_info}" = "x" && legacy_xfig ${base}
|
||||
|
||||
version=`echo ${version_info} | cut -d' ' -f3`
|
||||
patchlevel=`echo ${version_info} | cut -d' ' -f5`
|
||||
# If we cannot extract the version of patchlevel info
|
||||
# then default to legacy_xfig
|
||||
test "x${version}" = "x" -o "x${patchlevel}" = "x" && legacy_xfig ${base}
|
||||
echo ${version} ${patchlevel} | grep '[0-9]!' -o && legacy_xfig ${base}
|
||||
|
||||
# So, is it am old version?
|
||||
test ${version} != "3.2" -o ${patchlevel} -lt 4 && legacy_xfig ${base}
|
||||
# I guess not ;-)
|
||||
modern_xfig ${base}
|
||||
|
||||
# The end
|
@ -1,48 +0,0 @@
|
||||
#! /bin/sh
|
||||
# converts an image from XFIG to PNG format
|
||||
# We go the long route to ensure that the image is of the highest
|
||||
# possible quality.
|
||||
|
||||
# We expect a single arg, the name of the input file.
|
||||
test $# -eq 1 || exit 1
|
||||
|
||||
input=`basename $1`
|
||||
base=`basename ${input} .fig`
|
||||
test ${input} = ${base} && {
|
||||
echo Expecting an XFIG file as input
|
||||
exit 1
|
||||
}
|
||||
|
||||
dir=`dirname $1`
|
||||
base=${dir}/${base}
|
||||
|
||||
# Generate the fig2dev output
|
||||
eps=${base}.eps
|
||||
pstex_t=${base}.pstex_t
|
||||
|
||||
echo Entered FIG2PNG.SH
|
||||
|
||||
fig2dev -Lpstex ${input} ${eps}
|
||||
fig2dev -Lpstex_t -p${base} ${input} ${pstex_t}
|
||||
|
||||
# Convert the EPS file (free of "special" text) to PNG format using gs
|
||||
# gs is extremely fussy about the EPS files it converts, so ensure it is
|
||||
# "clean" first.
|
||||
clean_eps=${eps}.$$
|
||||
eps2eps ${eps} ${clean_eps}
|
||||
|
||||
# Extract the width and height of the image using gs' bbox device.
|
||||
# Ie, take output that includes a line "%%BoundingBox: 0 0 <width> <height>"
|
||||
# and rewrite it as "-g<width>x<height>"
|
||||
geometry=`gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox ${clean_eps} 2>&1 | \
|
||||
sed '/^%%BoundingBox/! d' | cut -d' ' -f4,5 | \
|
||||
sed 's/^\([0-9]\{1,\}\) \([0-9]\{1,\}\)$/-g\1x\2/'`
|
||||
|
||||
# Generate the bitmap using the -g option to ensure the size is the same
|
||||
# as the original.
|
||||
# If we're using a version of gs that does not have a bbox device, then
|
||||
# $GEOMETRY = "", so there are no unwanted side effects.
|
||||
png=${base}.png
|
||||
gs -q -dSAFER -dBATCH -dNOPAUSE ${geometry} -sDEVICE=png16m \
|
||||
-sOutputFile=${png} ${clean_eps}
|
||||
rm -f ${clean_eps} ${eps}
|
Loading…
Reference in New Issue
Block a user