NAME¶
purifyeps - make an Encapsulated PostScript file work with both dvips and
pdflatex
SYNOPSIS¶
purifyeps
--help
purifyeps
--version
purifyeps [
--fontmap=
.fmp file] [
.eps input file [
.eps
output file]]
purifyeps
--make-man[=
filename] [
--section=
section]
purifyeps
--make-ps-man[=
filename]
[
--section=
section]
DESCRIPTION¶
While
pdflatex has a number of nice features, its primary shortcoming
relative to standard
latex+
dvips is that it is unable to read
ordinary Encapsulated PostScript (EPS) files, the most common graphics format
in the LaTeX world.
pdflatex can read only the following types of
graphics files:
- PDF
- Most people who use pdflatex convert their documents to PDF using a
utility such as epstopdf. This works well and preserves the vector
nature of the original EPS. Unfortunately, dvips does not read PDF,
so two versions of the graphic must be maintained if the document is to be
processed with both latex+dvips and pdflatex.
- PNG
- PNG is a bitmap format and therefore scales poorly. Also, dvips
does not read PNG, so two versions of the graphic must be maintained if
the document is to be processed with both latex+dvips and
pdflatex.
- JPEG
- JPEG is a bitmap format and therefore scales poorly. Also, dvips
does not read JPEG, so two versions of the graphic must be maintained if
the document is to be processed with both latex+dvips and
pdflatex.
- MPS
- This is probably the least-used pdflatex-compatible graphics
format. MPS is actually a stylized version of EPS that MetaPost outputs.
Like PDF, MPS is a vector format and remains as such when imported into a
pdflatex document. Also like PDF, dvips does not read MPS,
so two versions of the graphic must be maintained if the document is to be
processed with both latex+dvips and pdflatex.
The insight behind
purifyeps is that there are only a few, small
differences between MPS and EPS and that a file can be converted into a format
that matches both the MPS and EPS specifications simultaneously.
purifyeps inputs an EPS file, uses
pstoedit's "mpost"
filter to convert the file to MetaPost (
.mp), runs
mpost on the
file to convert it to MPS, and finally performs some touchups on the result to
convert the file back to EPS, while preserving its ability to be parsed by
pdflatex.
OPTIONS¶
- --help
- Display "Usage" and "Options" from the
purifyeps documentation.
- -V, --version
- Display the purifyeps version number, copyright, and license.
- --fontmap=.fmp file
- Specify the name of a file that tells purifyeps how to map from TeX
font names to PostScript font names. [Default: mpost.fmp]
- --make-man [=filename]]
[--section=section]
- Automatically create a Unix man page for purifyeps. section
specifies the section [default: 1 (User Commands)]. filename
defaults to purifyeps.1 or an analogous filename if section
is specified.
- --make-ps-man [=filename]]
[--section=section]
- Automatically create a PostScript version of the purifyeps
documentation. The documentation is formatted like a Unix man page.
section specifies the section [default: 1 (User Commands)].
filename defaults to purifyeps.ps.
In normal operation (i.e., when not run with "--help",
"--make-man", or "--make-ps-man"),
purifyeps takes
the name of an input file and output file. The same filename can safely be
used for both files. If the output filename is omitted, output will go to the
standard output device. If the input filename is omitted,
purifyeps
will read from the standard input device.
EXAMPLES¶
Create a PostScript version of the
purifyeps documentation, but call it
happydoc.ps instead of the default,
purifyeps.ps:
purifyeps --make-ps-man=happydoc.ps
Create a Unix man page for
purifyeps (in the usual roff format), but
indicate that it belongs in section "LOCAL" instead of the default
of section 1:
purifyeps --make-man --section=LOCAL
Purify
sample.eps (
mpost.fmp is in the current directory):
purifyeps sample.eps sample.eps
Purify
sample.eps (
mpost.fmp is in a different location):
purifyeps --fontmap=/usr/share/pstoedit/mpost.fmp sample.eps sample.eps
Rename the purified version while purifying:
purifyeps sample.eps sample-pure.eps
Do the same, but in a Unix pipeline:
cat sample.eps | purifyeps > sample-pure.eps
When you run
purifyeps, you should see the output from both
pstoedit and
mpost, followed by a success message from
purifyeps:
% cat sample.eps | purifyeps > sample-pure.eps
pstoedit: version 3.30 / DLL interface 107 (build Mar 14 2002) :
Copyright (C) 1993 - 2001 Wolfgang Glunz
Interpreter finished. Return status 0
This is MetaPost, Version 0.641 (Web2C 7.3.1)
(/tmp/purifyeps-jdeGPkh9.mp [1] )
1 output file written: purifyeps-jdeGPkh9.1
Transcript written on purifyeps-jdeGPkh9.log.
File seems to have been purified successfully.
FILES¶
- mpost.fmp
- File containing mappings between TeX and PostScript font names. See
"NOTES" for a description of this file's contents.
BUGS¶
Error reporting could definitely stand to be improved. Error messages produced
by
pstoedit and
mpost are sometimes silently ignored. Also,
errors sometimes cause
purifyeps to leave temporary files (
purifyeps- #####) lying around.
purifyeps is subject to all of the limitations that affect
pstoedit and especially the "mpost" backend to
pstoedit. As a result,
purifyeps ignores certain PostScript
constructs, such as nonuniformly scaled text.
NOTES¶
purifyeps needs a file that tells it how to map from TeX font names to
PostScript font names. This file must contain two, space-separated columns.
The first lists a PostScript font name, and the second lists the TeX
equivalent. Blank lines and lines that start with "%" are ignored.
The following is a sample
.fmp file:
% This is a sample font map for purifyeps.
Times-Bold ptmb
Times-Italic ptmri
Times-Roman ptmr
Helvetica phvr
Helvetica-Bold phvb
Helvetica-Oblique phvro
Courier pcrr
Courier-Bold pcrb
Courier-Oblique pcrro
Note that this is exactly the same format that
pstoedit uses. By default,
purifyeps looks in the current directory for a font map called
mpost.fmp. The "--fontmap" command-line option tells
purifyeps to use a different font map, which will typically be the
mpost.fmp file that comes with
pstoedit.
Once you create purified EPS files with
purifyeps, you need to instruct
pdflatex to use them. The pdfLaTeX configuration of the
"graphics" and "graphicx" packages (
pdftex.def)
normally ignores
.eps files. Putting the following LaTeX code in your
document's preamble tells
pdflatex that all
.eps files are in
MPS format:
% Tell pdfLaTeX that all .eps files were produced by MetaPost.
\usepackage{graphicx} % or graphics
\usepackage{ifpdf}
\ifpdf
\DeclareGraphicsRule{.eps}{mps}{*}{}
\makeatletter
\g@addto@macro\Gin@extensions{,.eps}
\makeatother
\fi
SEE ALSO¶
dvips(1),
epstopdf(1),
latex(1),
mpost(1),
pdflatex(1),
pstoedit(1)
AUTHOR¶
Scott Pakin,
scott+peps@pakin.org