summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/FAQ-en/html/FAQ-repeatgrf.html
blob: f63d981ebfa497b50da0768a585b5050abc26b38 (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
<head>
<title>UK TeX FAQ -- question label repeatgrf</title>
</head><body>
<h3>Repeated graphics in a document</h3>
<p/>A logo or &ldquo;watermark&rdquo; 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&rsquo;s to be
used, and when processed, the image appears in the output file at each
such point.
<p/>Huge PostScript files are embarrassing; explaining <em>why</em> such a file
is huge, is more embarrassing still.
<p/>The <a href="FAQ-tutbitslatex.html"><i>epslatex</i> graphics tutorial</a>
describes a technique for avoiding the problem: basically, one
converts the image that&rsquo;s to be repeated into a PostScript subroutine, and
load that as a <i>dvips</i> 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.
<p/>The <i>epslatex</i> 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 &ldquo;real
experts&rdquo; only (the author of this answer has never even tried it), it has
potential for the same sort of space saving as the <i>epslatex</i>
technique, with greater flexibility in actual use.
<p/>More practical is Hendri Adriaens&rsquo; <i>graphicx-psmin</i>; you load
this <em>in place</em> of <i>graphicx</i>, so rather than:
<blockquote>
<pre>
\usepackage[&lt;options&gt;]{graphicx}
</pre>
</blockquote><p>
you will write:
<blockquote>
<pre>
\usepackage[&lt;options&gt;]{graphicx-psmin}
</pre>
</blockquote><p>
and at the start of your document, you write:
<blockquote>
<pre>
\loadgraphics[&lt;bb&gt;]{&lt;list of graphics&gt;}
</pre>
</blockquote><p>
and each of the graphics in the list is converted to an &ldquo;object&rdquo; for
use within the resulting PostScript output.  (This is, in essence, an
automated version of the <i>epslatex</i> technique described above.)
<p/>Having loaded the package as above, whenever you use
<code>\</code><code>includegraphics</code>, the command checks if the file you&rsquo;ve asked for
is one of the graphics in <code>\</code><code>loadgraphics</code>&rsquo; list.  If so, the
operation is converted into a call to the &ldquo;object&rdquo; rather than a new
copy of the file; the resulting PostScript can of course be <em>much</em> smaller.
<p/>Note that the package requires a recent <i>dvips</i>, version
5.95b (this version isn&rsquo;t &mdash; yet &mdash; widely distributed).
<p/>If your PostScript is destined for conversion to PDF, either by a
<i>ghostscript</i>-based mechanism such as <i>ps2pdf</i> or by
(for example) <i>Acrobat</i> <i>Distiller</i>, the issue isn&rsquo;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.
<dl>
<dt><tt><i>graphicx-psmin.sty</i></tt><dd><a href="http://www.tex.ac.uk/www.tex.ac.uk  tex-archive/macros/latex/contrib/graphicx-psmin.zip">macros/latex/contrib/graphicx-psmin</a> (or <a href="http://www.tex.ac.uk/www.tex.ac.uk  tex-archive/macros/latex/contrib/graphicx-psmin/">browse the directory</a>)
</dl>
<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=repeatgrf">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=repeatgrf</a>
</body>