diff options
Diffstat (limited to 'Master/bin/i386-linux/simpdftex')
-rwxr-xr-x | Master/bin/i386-linux/simpdftex | 222 |
1 files changed, 153 insertions, 69 deletions
diff --git a/Master/bin/i386-linux/simpdftex b/Master/bin/i386-linux/simpdftex index 86f8ec0e623..e5d5d4218b3 100755 --- a/Master/bin/i386-linux/simpdftex +++ b/Master/bin/i386-linux/simpdftex @@ -2,8 +2,8 @@ # Created by Gerben Wierda, May 2001 # Rewritten by Gerben Wierda, January 2002 - -# Modified by Joachim Kock, May 2003 +# Modified by Joachim Kock, May 2003 +# Modified by Gerben Wierda, April 2007 # COPYRIGHT Gerben Wierda 2001--2004 # This file is free software. You are free to use this file in any way you like @@ -111,19 +111,26 @@ # In the future, the old modes (altpdflatex and friends) through # symlinks will disappear from my distribution, though they will # still work. +# 2007/05/07 Added dvipdfm support with compatibility with the patched version +# that is available on the net (simpdftex_dpmx) +# Changed version string to date-based string +# 2007/08/09 Protected echo command against broken builtin versions by running +# /bin/echo explicitly. There may exist /bin/echo implementations +# that do not support -n and this script will have to be changed +# before it works on such a system # FEATURE: it seems -u +foo.map -u -foo.map does not work. So --extradvipsopts # cannot be used to remove a map from the standard list # BUG: Handling of file name extensions is not completely equialent to TeX # i.e. foo.bar.bla gets you foo.bar.pdf not foo.bar.bla.pdf -# Give all extensions +# Hint: Give all extensions explicitely on the command line -version='$Revision: 2.18 $' +version='20070809' calledas=`basename "$0"` if [ "${calledas}" = "simpdftex" ] then - argwithoutlead=`echo -n "$1"|sed 's/^--//'` + argwithoutlead=`/bin/echo -n "$1"|sed 's/^--//'` if [ "$1" != "" -a "$1" = "${argwithoutlead}" ] then formatname="$1" @@ -133,6 +140,8 @@ then fi argvbackup="$*" +dviprogram="dvips" # Might be dvips, dvipdfm or dvipdfmx + # maxpkdvipsopts: use only pfb's for real PS fonts, bitmaps are default for the others maxpkdvipsopts="-Ppk" # maxpfbdvipsopts: use as many pfb's as possible @@ -159,33 +168,39 @@ distillerprog="ps2pdf13" distillerfilter="no" unset outdir debug="no" +dvipdfmoptions="" usage() { cat <<_eof_help This is simpdftex, $version -Usage: simpdftex formatname +Usage: simpdftex formatname [--mode modestring] [--dvipsopts dvipsoptstring] [--extradvipsopts dvipsoptstring] [--pdf] [--default] [--maxpk] [--maxpfb] [--extendedname] [--no-echo-version] [--tex-path dir] [--keep-psfile] [--distiller-path dir] [--debug] [--distiller prog] [--distiller-filter prog] [--help] - [--outdir dir] [--extratexopts texoptsstring] tex-or-dvi-file + [--outdir dir] [--extratexopts texoptsstring] + [--dvipdfmopts dvipdfmoptstring] tex-or-dvi-file simpdftex is a way to do pdf{e}{la}tex without having pdf{e}{la}tex. It needs a -working TeX environment and ghostscript. Since pdf{e}{la}tex cannot handle -insertion of .eps graphics, simpdftex gives an alternative. The output for both -systems is comparable. +working TeX environment and one of three ways to turn DVI file into PDF: + - dvips + a distiller like ghostscript + - dvipdfm + - dvipdfmx +Since pdf{e}{la}tex cannot handle insertion of .eps graphics, simpdftex gives an +alternative when using dvips mode. The output for both systems is comparable. simpdftex compiles the file with {LA}TeX, processes the DVI file with dvips into -PostScript and uses gs to produce pdf (with ps2pdf). There is finegrained -control over the resulting filename and the options with which dvips produces -the PostScript intermediary file. +PostScript and uses gs to produce pdf (with ps2pdf). Or it uses dvipdfm or +dvipdfmx to turn the DVI file into PDF. There is finegrained control over the +resulting filename and the options with which dvips produces the PostScript +intermediary file. Dvips will call Metafont to produce bitmaps or include PostScript .pfb files depending on the flags. See below. -Default settings is normal name, maximal use of pfb's, just like pdf{la}tex, +The default setting is normal name, maximal use of pfb's, just like pdf{la}tex, in other words, "pdftex file.tex" and "altpdftex file.tex" both produce an output file file.pdf. For pdftex, output options are controlled by pdftex.cfg, for altpdftext by config.ps (unless --pdf is given). @@ -195,6 +210,15 @@ Arguments: If a .dvi file is given, skip the TeX process. Otherwise, TeX the input file, dvips the resulting dvi file and ps2pdf the resulting ps file + --mode + Tell simpdftex how to go from DVI to PDF. There are three modes: + - dvips + - dvipdfm + - dvipdfmx + --dpx + Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfmx + --dpm + Compatibility flag with simpdftex_dpmx. Equal to --mode dvipdfm --help Display this message and exit --no-echo-version @@ -216,6 +240,7 @@ Arguments: optimal results for the chosen printer. For file contents (not name) equivalent to: --dvipsopts "-Ppk" + Not yet functional for the other modes. --maxpfb Use PostScript pfb files whenever possible. This produces optimal results for the screen. @@ -223,6 +248,7 @@ Arguments: --dvipsopts "-Poutline" If any font is included as TeX pk bitmap, it is rendered at the default resolution. + Not yet functional for the other modes. --pdf Select .pdfmode extension for the output file name if --extendedname has been set. Use printer definition @@ -268,11 +294,13 @@ Arguments: --distiller=/usr/local/alternate/bin/ps2pdf --distiller=pstill Using this flag sets the distiller filter mode to off + This flag only makes sense in dvips mode --distiller-filter prog Use a distiller executable or executable script which is called with the PS input as standard input and which writes the PDF output to standard output. E.g.: --distiller-filter=u-psbuild + This flag only makes sense in dvips mode --distiller-path Give path needed by the distiller binary. This path is added to the begin of you PATH environment before the distiller is @@ -282,6 +310,12 @@ Arguments: /usr/local/bin/ps2pdf find another gs than intended. By giving an empty path, the path is not changed before the distiller program is run. The default is empty. + This flag only makes sense in dvips mode + --dvipdfmopts + Give arbitrary arguments to dvipdfm or dvipdfmx, e.g. + --dvipdfmopts "-c" + Sets extension for --extendedfilename to .custom. --dvipdfmopts + overrides other flags that set dvipdfmopts. --outdir dir Write files here *if* our current directory is unwritable. This mimicks the TEXMFOUTPUT environment variable of TeX, but @@ -313,6 +347,15 @@ do outputpostfix=".custom" dvipsoptions="$1" ;; + --dvipdfmopts) + outputpostfix=".custom" + shift + dvipdfmoptions="$1" + ;; + --dvipdfopts) # Compatibility with simpdftex_dpmx + shift + dvipdfmoptions="$1" + ;; --extradvipsopts) shift extradvipsoptions="$1" @@ -360,6 +403,16 @@ do distillerprog="$1" distillerfilter="no" ;; + --mode) + shift + if [ "$1" = "dvips" -o "$1" = "dvipdfm" -o "$1" = "dvipdfmx" ] + then + dviprogram="$1" + else + /bin/echo "Unknown mode $1" + exit 1 + fi + ;; --outdir) shift export TEXINPUTS=`pwd`:`kpsewhich --expand-var '$TEXINPUTS'` @@ -376,8 +429,14 @@ do --no-echo-version) echoversion="no" ;; + --dpx) # Compatibility with simpdftex_dpmx + dviprogram="dvipdfmx" + ;; + --dpm) # Compatibility with simpdftex_dpmx + dviprogram="dvipdfm" + ;; --*) - echo "Unknown option $1" + /bin/echo "Unknown option $1" exit 1;; "") ;; @@ -389,15 +448,56 @@ done if [ "${echoversion}" = "yes" -a "${debug}" = "no" ] then - echo "### This is $0, Version ${version}" + /bin/echo "### This is $0, Version ${version}" fi if [ "${debug}" = "yes" ] then - echo "##### This is $0, Version ${version}" - echo "##### Arguments: ${argvbackup}" + /bin/echo "##### This is $0, Version ${version}" + /bin/echo "##### Arguments: ${argvbackup}" fi +run_dvipdfm() +{ + /bin/echo "### ${texpath}/${dviprogram} ${dvipdfmoptions} -o ${pdffile} ${dvifile}" + "${texpath}/${dviprogram}" ${dvipdfmoptions} -o "${pdffile}" "${dvifile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})"; \ + exit 1; } +} + +run_dvips() +{ + /bin/echo "### ${texpath}/${dviprogram} -R ${dvipsoptions} ${extradvipsoptions} -o ${psfile} ${dvifile}" + "${texpath}/${dviprogram}" -R ${dvipsoptions} ${extradvipsoptions} -o "${psfile}" "${dvifile}" || \ + { /bin/echo "### FAILED to generate ${psfile} (${status})"; \ + exit 1; } + + if [ "${keeppsfile}" = "yes" ]; then + /bin/echo "### Saving intermediary ps file ${psfile} as ${savedpsfile}" + /bin/cp "${psfile}" "${savedpsfile}" || \ + /bin/echo "### FAILED to save ${psfile} (${status})" + fi + + if [ "${distillerpath}" != "" ]; then + PATH="${distillerpath}:${PATH}";export PATH + if [ "${debug}" = "yes" ]; then + /bin/echo "##### PATH set to ${PATH}" + fi + fi + + if [ "${distillerfilter}" = "yes" ]; then + /bin/echo "### ${distillerprog} <${psfile} >${pdffile}" + "${distillerprog}" <"${psfile}" >"${pdffile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})" + exit 1; } + else + /bin/echo "### ${distillerprog} ${psfile} ${pdffile}" + "${distillerprog}" "${psfile}" "${pdffile}" || \ + { /bin/echo "### FAILED to generate ${pdffile} (${status})" + exit 1; } + fi +} + cleanup() { if [ "${tmpdir}" != "" -a "${debug}" = "no" ] @@ -418,7 +518,7 @@ main() { if [ "${file}" = "" ] then - echo "simpdftex Empty argument: tex-or-dvi-file-name" + /bin/echo "simpdftex Empty argument: tex-or-dvi-file-name" exit 1 fi @@ -431,8 +531,8 @@ main() startwithdvi="no" basename=`basename "${file}"` - nosuffixbasename=`echo -n ${basename}|sed 's/\.[^.]*$//'` - nodvisuffixbasename=`echo -n ${basename}|sed 's/\.[dD][vV][iI]$//'` + nosuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[^.]*$//'` + nodvisuffixbasename=`/bin/echo -n ${basename}|sed 's/\.[dD][vV][iI]$//'` if [ "${nodvisuffixbasename}" = "${nosuffixbasename}" -a \ "${basename}" != "${nosuffixbasename}" ] then @@ -454,14 +554,14 @@ main() fi else - echo "### Cannot write in current directory and no redirect found. Bailing out..." + /bin/echo "### Cannot write in current directory and no redirect found. Bailing out..." exit 1 fi fi # Assume the command is called altpdf* where the rest is the actual tex # program to be run - texprogram=`echo ${calledas}|sed 's/altpdf//'` + texprogram=`/bin/echo ${calledas}|sed 's/altpdf//'` if [ "${texprogram}" = "omega" -o "${texprogram}" = "lambda" ] then dvips="odvips" @@ -492,72 +592,56 @@ main() if [ "${debug}" = "yes" ] then - echo "##### TeX file: $texfile" - echo "##### DVI file: $dvifile" - echo "##### PS file: $psfile" - echo "##### Saved PS file: $savedpsfile" - echo "##### Created PDF file: $pdffile" - echo "##### Final PDF file: $savedpdffile" - echo "##### Environment:" + /bin/echo "##### TeX file: $texfile" + /bin/echo "##### DVI file: $dvifile" + if [ "${dviprogram}" = "dvips" ] + then + /bin/echo "##### PS file: $psfile" + /bin/echo "##### Saved PS file: $savedpsfile" + fi + /bin/echo "##### Created PDF file: $pdffile" + /bin/echo "##### Final PDF file: $savedpdffile" + /bin/echo "##### Environment:" env | sed 's/^/##### /g' fi if [ "${startwithdvi}" = "yes" ]; then - echo "### Skipping ${texprogram} ${texfile} [dvi->pdf only]" + /bin/echo "### Skipping ${texprogram} ${texfile} [dvi->pdf only]" else - echo "### ${texpath}/${texprogram} ${texfile}" + /bin/echo "### ${texpath}/${texprogram} ${texfile}" "${texpath}/${texprogram}" ${extratexoptions} "${texfile}" || \ - echo "### WARNING: TeX returned non zero exit status ${status}" - fi - - echo "### ${texpath}/${dvips} -R ${dvipsoptions} ${extradvipsoptions} -o ${psfile} ${dvifile}" - "${texpath}/${dvips}" -R ${dvipsoptions} ${extradvipsoptions} -o "${psfile}" "${dvifile}" || \ - { echo "### FAILED to generate ${psfile} (${status})"; \ - exit 1; } - - if [ "${keeppsfile}" = "yes" ]; then - echo "### Saving intermediary ps file ${psfile} as ${savedpsfile}" - /bin/cp "${psfile}" "${savedpsfile}" || \ - echo "### FAILED to save ${psfile} (${status})" + /bin/echo "### WARNING: TeX returned non zero exit status ${status}" fi - if [ "${distillerpath}" != "" ]; then - PATH="${distillerpath}:${PATH}";export PATH - if [ "${debug}" = "yes" ]; then - echo "##### PATH set to ${PATH}" - fi - fi - - if [ "${distillerfilter}" = "yes" ]; then - echo "### ${distillerprog} <${psfile} >${pdffile}" - "${distillerprog}" <"${psfile}" >"${pdffile}" || \ - { echo "### FAILED to generate ${pdffile} (${status})" - exit 1; } - else - echo "### ${distillerprog} ${psfile} ${pdffile}" - "${distillerprog}" "${psfile}" "${pdffile}" || \ - { echo "### FAILED to generate ${pdffile} (${status})" - exit 1; } - fi + case "${dviprogram}" in + "dvips") + run_dvips;; + "dvipdfm") + run_dvipdfm;; + "dvipdfmx") + run_dvipdfm;; + *) + /bin/echo "### ERROR: wrong dvipdf mode ${dviprogram}" + esac - echo "### Copying/moving pdf file ${pdffile} to ${savedpdffile}" + /bin/echo "### Copying/moving pdf file ${pdffile} to ${savedpdffile}" /bin/cp "${pdffile}" "${savedpdffile}.${tmpext}" || \ - echo "### FAILED to copy ${pdffile} (${status})" + /bin/echo "### FAILED to copy ${pdffile} (${status})" /bin/rm -f "${savedpdffile}" /bin/mv "${savedpdffile}.${tmpext}" "${savedpdffile}" || \ - echo "### FAILED to rename ${savedpdffile}.${tmpext} (${status})" + /bin/echo "### FAILED to rename ${savedpdffile}.${tmpext} (${status})" if [ "${startwithdvi}" = "yes" ]; then if [ "${keeppsfile}" = "yes" ]; then - echo "### Succesfully generated ${savedpdffile} and ${savedpsfile}" + /bin/echo "### Succesfully generated ${savedpdffile} and ${savedpsfile}" else - echo "### Succesfully generated ${savedpdffile}" + /bin/echo "### Succesfully generated ${savedpdffile}" fi else if [ "${keeppsfile}" = "yes" ]; then - echo "### Succesfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}" + /bin/echo "### Succesfully generated ${dvifile}, ${savedpdffile} and ${savedpsfile}" else - echo "### Succesfully generated ${dvifile} and ${savedpdffile}" + /bin/echo "### Succesfully generated ${dvifile} and ${savedpdffile}" fi fi |