summaryrefslogtreecommitdiff
path: root/macros/generic/epsf/README
blob: 986453765a2a252304c713e3317ef3566294abba (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
%% /u/sy/beebe/tex/epsf/epsf-2.7.3/README, Sat Jul 30 18:41:35 2005
%% Edit by Nelson H. F. Beebe <beebe@math.utah.edu>

============
Introduction
============

The epsf.tex and epsf.sty (identical) files provide for
low-level typesetting of Encapsulated PostScript (EPS)
files, with optional suppression of the figure contents (for
faster display and printing during document development),
optional figure framing, and optional figure labeling.

See the header comments in epsf.tex or epsf.sty files for
usage information.

LaTeX users are cautioned that the graphicx package
documented in the LaTeX Graphics Companion and LaTeX
Companion (2nd ed.) books provides a much more powerful and
general facility, and allows easy switching between
pdf(la)tex and (la)tex without document modification.

Plain TeX and AmSTeX users, however, may find epsf.tex
useful.


===================
Testing the package
===================

The test files in the package can be typeset on Unix systems
with

	make check

You can then view or print the .dvi files to see several
examples of what they are supposed to look like.

If you are in doubt about their appearance when generated at
your site, try the okay/*.dvi files: they were produced by
the package maintainers to illustrate the correct behavior
the package macros.


=================
Problem EPS files
=================

If you experience difficulty in positioning an EPS picture,
and find that it appears in an unexpected location, or in an
incorrect scale or orientation, then it is often the case
that the PostScript is not EPSF-conformant (see the
specification in the references below).  This may be because
it uses forbidden low-level PostScript operators that modify
the PostScript page transformations.  The fndbadps shell
script in the distribution can be used on Unix systems to
search for forbidden operators in EPS files.  If you find
any, you should complain to the author or vendor of the
software that produced the bad EPS files: the EPS
specification has been available since 1992, and is very
clear about what operators are forbidden.

It is sometimes possible to repair problem EPS files by
converting from PostScript to PDF and back to PostScript.
Suitable tools for PostScript to PDF conversion include
Adobe distill, ghostscript ps2pdf, and Frank M. Siegert's
pstill.  For PDF to PostScript conversion, use Adobe
acroread, ghostscript pdf2ps, or your PDF file viewer's
print-to-PostScript-file option.

In bad cases, the only way to deal with a problem EPS file
may be to convert it to a high-resolution bitmap and back to
PostScript, taking care to choose a lossless bitmap format.
This can be done with the NetPBM tools and ghostscript.
These utilities offer a myriad of options, so it is
convenient to combine them in a separate tool that provides
the commonly-needed options: pstopngtops (see the References
section below).


===========================
Bounding boxes and clipping
===========================

Sometimes the only problem is that the size of the figure is
wrong.  This is usually because the %%BoundingBox comment
that is normally present in the first few lines of the EPS
file is wrong: indeed, most PostScript-producing software
produces nonsensical bounding boxes.

One way to fix this problem is to print your EPS file and
the bboxgrid.ps file from this package on the SAME printer,
overlay them against a light source, and measure the
lower-left and upper-right corner coordinates in big points
(72bp = 1in = 25.4mm) of the picture and then edit the EPS
file to supply the correct coordinates as whole numbers in
order:

	%%BoundingBox: lower-left-x lower-left-y upper-right-x upper-right-y

The PostScript coordinate system is right-handed Cartesian
with the origin at the lower-left page corner.  The reason
that you need the grid provided by bboxgrid.ps is that even
though PostScript defines the coordinate position (0,0) to
be at the lower-left page corner, mechanical limitations
and/or misadjustments in PostScript printers often result in
that point being displaced by as much 1cm in any direction.
Even two identical models of the same printer can differ in
their true page origins!  When you measure the picture
corners of your figure using the bboxgrid.ps output on the
same printer, you eliminate this source of confusion and
error.

A better way to obtain an accurate bounding box is to ask
ghostscript to measure it for you:

	% gs -sDEVICE=bbox -dNOPAUSE bboxgrid.ps quit.ps
	AFPL Ghostscript 8.51 (2005-04-18)
	Copyright (C) 2005 artofcode LLC, Benicia, CA.  All rights reserved.
	This software comes with NO WARRANTY: see the file PUBLIC for details.
	Loading NimbusSanL-Bold font from /usr/local/share/ghostscript/fonts/n019004l.pfb... 4506264 2452117 1502816 214110 1 done.
	Loading NimbusSanL-Regu font from /usr/local/share/ghostscript/fonts/n019003l.pfb... 4506264 2483411 1522912 220580 1 done.
	%%BoundingBox: 15 18 610 783
	%%HiResBoundingBox: 15.444000 18.395999 609.713981 782.045976

You can then replace the faulty %%BoundingBox comment in
your file with the correct one.

The %%HiResBoundingBox comment is produced and used by some
software, but is nonstandard, and should not be relied on.
The epsf package ignores it, and PostScript printers ignore
all comments (text outside strings from percent to end of
line).

If editing the EPS file is impossible, impractical, or
undesirable, you can supply the correct bounding box as a
square-bracketed optional argument to \epsfbox:

	\epsfbox[30 50 250 270]{filename.eps}

This will override any %%BoundingBox comment in the file,
and if clipping is turned on with \epsfclipon, only material
inside the bounding box will appear in your output.

If you find that the bounding box specification near the
start of the EPS file looks like this:

	%%BoundingBox: (atend)

then search backward from the end of the file to find the
NEAREST %%BoundingBox comment, and then replace the (atend)
comment with the one you just found.  TeX has to read the
EPS file until it finds the %%BoundingBox comment, and the
further it is from the beginning, the longer TeX will take
to find it.  Parsing text in TeX is NOT a fast operation!

Historical note: The bbox device was added to ghostscript at
version 3.68 in April 1996 at the suggestion of Nelson
H. F. Beebe.


==========
References
==========

Web resources:

	LaTeX graphicx package:
		http://ctan.tug.org/tex-archive/macros/latex/required/graphics/graphicx.dtx


	Pstill (PostScript to PDF conversion tool):
		http://www.wizards.de/~frank/pstill.html
		http://www.this.net/~frank/pstill_win.html

	Aladdin Ghostscript:
		ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/
		http://prdownloads.sourceforge.net/ghostscript/
		http://www.artifex.com/
		http://www.cs.wisc.edu/~ghost/

	GNU Ghostscript:
		ftp://ftp.gnu.org/gnu/ghostscript
		http://directory.fsf.org/ghostscript.html

	pstopngtops:
		ftp://ftp.math.utah.edu/pub/pstopngtops
		http://www.math.utah.edu/pub/pstopngtops

	netpbm:
		http://netpbm.sourceforge.net/
		http://sourceforge.net/projects/netpbm/
		http://ii2.sourceforge.net/
		Note: NetPBM has a nonstandard build
		procedure and historically has been very
		painful to build on most Unix systems.  The
		first URL listed provides pointers to binary
		distributions for some platforms that you
		may find easier to install.  Some GNU/Linux
		distributions already have them: if the
		Unix command

			which pngtopnm pnmcrop pnmmargin pnmtops

		reports locations of each those tools, then
		you already have the ones needed for pstopngtops.
		Mac OS X users can most conveniently install NetPBM
		from the ii2 link above.


Books:

@String{pub-ADOBE               = "{Adobe Systems Incorporated}"}
@String{pub-ADOBE:adr           = "San Jose, CA, USA"}

@String{pub-AW                  = "Ad{\-d}i{\-s}on-Wes{\-l}ey"}
@String{pub-AW:adr              = "Reading, MA, USA"}

@Book{Adobe:1990:PLR,
  author =       "Adobe Systems Incorporated",
  title =        "{PostScript} Language Reference Manual",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  edition =      "Second",
  pages =        "viii + 764",
  year =         "1990",
  ISBN =         "0-201-18127-4",
  ISBN-13 =      "978-0-201-18127-2",
  LCCN =         "QA76.73.P67 P67 1990",
  bibdate =      "Sat Oct 28 08:25:15 2000",
  remark =       "Appendix H documents the EPSF 3.0 specification.",
}

@TechReport{Adobe:1992:EPF,
  author =       "{Adobe PostScript Developer Support Group}",
  title =        "{Encapsulated PostScript Files} Specification Version
                 3.0",
  number =       "PN LPS5002",
  institution =  pub-ADOBE,
  address =      pub-ADOBE:adr,
  day =          "1",
  month =        may,
  year =         "1992",
  bibdate =      "Sat Jul 30 18:50:43 2005",
  URL =          "http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf",
  note =         "The specification is also published in
                  \cite[Appendix~H]{Adobe:PLR90}.",
}

@Book{Goossens:1997:LGC,
  author =       "Michel Goossens and Sebastian Rahtz and Frank
                 Mittelbach",
  title =        "The {\LaTeX} Graphics Companion: Illustrating
                 Documents with {\TeX} and {PostScript}",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  pages =        "xxi + 554",
  year =         "1997",
  ISBN =         "0-201-85469-4",
  ISBN-13 =      "978-0-201-85469-5",
  LCCN =         "Z253.4.L38G663 1997",
  bibdate =      "Fri Jul 11 07:51:47 1997",
  price =        "US\$39.75",
  series =       "Tools and Techniques for Computer Typesetting",
  acknowledgement = ack-nhfb,
  keywords =     "LaTeX (Computer file); Computerized typesetting.;
                 PostScript (Computer program language); Scientific
                 illustration --- Computer programs.; Mathematics
                 printing --- Computer programs.; Technical publishing
                 --- Computer programs.",
}

@Book{Mittelbach:2004:LC,
  author =       "Frank Mittelbach and Michel Goossens and Johannes
                 Braams and David Carlisle and Chris Rowley and
                 Christine Detig and Joachim Schrod",
  title =        "The {\LaTeX} Companion",
  publisher =    pub-AW,
  address =      pub-AW:adr,
  edition =      "Second",
  pages =        "xxvii + 1090",
  year =         "2004",
  ISBN =         "0-201-36299-6",
  ISBN-13 =      "978-0-201-36299-2",
  LCCN =         "Z253.4.L38 G66 2004",
  bibdate =      "Thu May 20 13:23:24 2004",
  price =        "US\$59.99, CAN\$86.99",
  series =       "Tools and Techniques for Computer Typesetting",
  acknowledgement = ack-nhfb,
  remark =       "Authors listed as: Frank Mittelbach and Michel
                 Goossens with Johannes Braams, David Carlisle, and
                 Chris Rowley, and with contributions by Christine Detig
                 and Joachim Schrod.",
}