Repeated graphics in a document
A logo or “watermark” image, or any other image that is repeated in
your document, has the potential to make the processed version of the
document unmanageably large. The problem is, that the default
mechanisms of graphics usage add the image at every point it’s to be
used, and when processed, the image appears in the output file at each
such point.
Huge PostScript files are embarrassing; explaining why such a file
is huge, is more embarrassing still.
The epslatex graphics tutorial
describes a technique for avoiding the problem: basically, one
converts the image that’s to be repeated into a PostScript subroutine, and
load that as a dvips prologue file. In place of the image,
you load a file (with the same bounding box as the image) containing
no more than an invocation of the subroutine defined in the prologue.
The epslatex technique is tricky, but does the job. Trickier
still is the neat scheme of converting the figure to a one-character
Adobe Type 3 outline font. While this technique is for the “real
experts” only (the author of this answer has never even tried it), it has
potential for the same sort of space saving as the epslatex
technique, with greater flexibility in actual use.
More practical is Hendri Adriaens’ graphicx-psmin; you load
this in place of graphicx, so rather than:
\usepackage[<options>]{graphicx}
you will write:
\usepackage[<options>]{graphicx-psmin}
and at the start of your document, you write:
\loadgraphics[<bb>]{<list of graphics>}
and each of the graphics in the list is converted to an “object” for
use within the resulting PostScript output. (This is, in essence, an
automated version of the epslatex technique described above.)
Having loaded the package as above, whenever you use
\
includegraphics
, the command checks if the file you’ve asked for
is one of the graphics in \
loadgraphics
’ list. If so, the
operation is converted into a call to the “object” rather than a new
copy of the file; the resulting PostScript can of course be much smaller.
Note that the package requires a recent dvips, version
5.95b (this version isn’t — yet — widely distributed).
If your PostScript is destined for conversion to PDF, either by a
ghostscript-based mechanism such as ps2pdf or by
(for example) Acrobat Distiller, the issue isn’t
so pressing, since the distillation mechanism will amalgamate graphics
objects whether or not the PostScript has them amalgamated. PDFTeX does
the same job with graphics, automatically converting multiple uses
into references to graphics objects.
- graphicx-psmin.sty
- macros/latex/contrib/graphicx-psmin (or browse the directory)
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=repeatgrf