Move a tag
[latex2e.git] / latex2e-20170415 / required / graphics / drivers.dtx
blob07c201cf873b7fcd3a49ede552bdb0f350139571
2 % \iffalse
4 %% drivers.dtx Copyright (C) 1994      David Carlisle Sebastian Rahtz
5 %%             Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
6 %%             Copyright (C) 2000--2016 David Carlisle, LaTeX3 Project
7 %%
8 %% This file is part of the Standard LaTeX `Graphics Bundle'.
9 %% It may be distributed under the terms of the LaTeX Project Public
10 %% License, as described in lppl.txt in the base LaTeX distribution.
11 %% Either version 1.3 or, at your option, any later version.
13 %<template, >\ProvidesFile{template.def}
14 %<dvips,    >\ProvidesFile{dvips.def}
15 %<dvipsnames>\ProvidesFile{dvipsnam.def}
16 %<dvipdf,   >\ProvidesFile{dvipdf.def}
17 %<emtex,    >\ProvidesFile{emtex.def}
18 %<dviwin,   >\ProvidesFile{dviwin.def}
19 %<dvipsone, >\ProvidesFile{dvipsone.def}
20 %<pctexps,  >\ProvidesFile{pctexps.def}
21 %<pctex32,  >\ProvidesFile{pctex32.def}
22 %<pctexwin, >\ProvidesFile{pctexwin.def}
23 %<pctexhp,  >\ProvidesFile{pctexhp.def}
24 %<truetex,  >\ProvidesFile{truetex.def}
25 %<tcidvi,   >\ProvidesFile{tcidvi.def}
26 %<oztex,    >\ProvidesFile{oztex.def}
27 %<textures, >\ProvidesFile{textures.def}
28 %<dvialw,   >\ProvidesFile{dvialw.def}
29 %<dvilaser, >\ProvidesFile{dvilaser.def}
30 %<psprint,  >\ProvidesFile{psprint.def}
31 %<dvi2ps,   >\ProvidesFile{dvi2ps.def}
32 %<pubps,    >\ProvidesFile{pubps.def}
33 %<dvitops,  >\ProvidesFile{dvitops.def}
34 %<ln,       >\ProvidesFile{ln.def}
36 %<*driver>
37     \NeedsTeXFormat{LaTeX2e}
38     \ProvidesFile{drivers.dtx}
39 %</driver>
40         [2016/06/17 v3.0m Driver-dependent file (DPC,SPQR)]
42 %<*driver>
43     \documentclass{ltxdoc}
44     \GetFileInfo{drivers.dtx}
45  \begin{document}
46    \title{Graphics drivers for \LaTeXe\thanks
47      {Version \fileversion, revised \filedate}}
48    \author{Sebastian Rahtz and David Carlisle}
49    \date{\filedate}
50    \MaintainedByLaTeXTeam{graphics}
51    \maketitle
52    \DocInput{drivers.dtx}
53  \end{document}
54 %</driver>
55 % \fi
59 % \providecommand\OzTeX{O\kern-.03em z\kern-.15em\TeX}
61 % \section{Driver files}
63 % This file implements some of the currently supported drivers.
64 % If the driver you use is not in this list then a `.def' file
65 % may be distributed with This graphics bundle,
66 % or may be distributed with your driver.
68 % If not, send us some details of the driver's |\special| syntax, and
69 % we will try to produce a suitable file.
71 % Note that some of these files are for drivers to which we have no
72 % access, so they are untested. Please send any corrections to the
73 % latexbugs address.
78 % \StopEventually{}
81 % \section{Colour}
83 % Most of the drivers that support colour use one of three methods.
84 % \begin{itemize}
85 % \item color1: `dvips' style colour specials.
86 % \item color2: `textures' style colour specials.
87 % \item color3: Colour implemented via literal PostScript specials.
88 % \item color4: Colour implemented by specials that only support RGB,
89 %               i.e., Red Green Blue specified as integers in the range
90 %               0--255. Other models converted to this within \TeX.
91 % \end{itemize}
92 % Some drivers do not use any of these modules and have their own code.
93 % Note that drivers using the `color3' code can not fully support the
94 % \LaTeX\ colour commands.
95 %    \begin{macrocode}
96 %<*color1|color2|color3|color4>
97 %    \end{macrocode}
99 %    \begin{macrocode}
100 \def\c@lor@arg#1{%
101   \dimen@#1\p@
102   \ifdim\dimen@<\z@\dimen@\maxdimen\fi
103   \ifdim\dimen@>\p@
104     \PackageError{color}{Argument `#1' not in range [0,1]}\@ehd
105   \fi}
106 %    \end{macrocode}
108 % Need to make sure of a trailing .0 for textures. Apparently it
109 % is OK to always add a . as 1.3. is accepted by textures.
110 % textures gray special is reversed, so just use rgb instead.
112 %    \begin{macrocode}
113 \def\color@gray#1#2{%
114   \c@lor@arg{#2}%
115 %<color4>  \c@lor@rgb@RGB\@tempa
116 %<color1>  \edef#1{gray #2}%
117 %<color2>  \edef#1{rgb #2. #2. #2.}%
118 %<color3>  \edef#1{#2 setgray}%
119 %<color4>  \edef#1{\@tempa\@tempa\@tempa}%
120   }
121 %    \end{macrocode}
123 %    \begin{macrocode}
124 \def\color@cmyk#1#2{\c@lor@@cmyk#2\@@#1}
125 \def\c@lor@@cmyk#1,#2,#3,#4\@@#5{%
126   \c@lor@arg{#4}%
127 %<color4>    \dimen@ii#4\p@
128   \c@lor@arg{#1}%
129 %<color4>  \c@lor@cmyk@RGB\@tempa
130   \c@lor@arg{#2}%
131 %<color4>  \c@lor@cmyk@RGB\@tempb
132   \c@lor@arg{#3}%
133 %<color4>  \c@lor@cmyk@RGB\@tempc
134 %<color1>  \edef#5{cmyk #1 #2 #3 #4}%
135 %<color2>  \edef#5{cmyk #1. #2. #3. #4.}%
136 %<color3>  \edef#5{#1 #2 #3 #4 setcmykcolor}%
137 %<color4>  \edef#5{\@tempa\@tempb\@tempc}%
138   }
139 %    \end{macrocode}
141 % A 0--1 range value will have been left in |\dimen@| by |\c@lor@arg|.
142 % The black value (0--1) will be stored in |\dimen@ii|.
143 % Covert to 0--255 integer, and leave in |#1|.
144 %    \begin{macrocode}
145 %<*color4>
146 \def\c@lor@cmyk@RGB#1{%
147   \advance\dimen@-\p@
148   \advance\dimen@\dimen@ii
149   \dimen@-\@cclv\dimen@
150   \divide\dimen@\p@
151   \count@\ifdim\dimen@<\z@\z@\else\dimen@\fi
152   \edef#1{\the\count@\space}}
153 %</color4>
154 %    \end{macrocode}
156 %    \begin{macrocode}
157 \def\color@rgb#1#2{\c@lor@@rgb#2\@@#1}
158 \def\c@lor@@rgb#1,#2,#3\@@#4{%
159   \c@lor@arg{#1}%
160 %<color4>  \c@lor@rgb@RGB\@tempa
161   \c@lor@arg{#2}%
162 %<color4>  \c@lor@rgb@RGB\@tempb
163   \c@lor@arg{#3}%
164 %<color4>  \c@lor@rgb@RGB\@tempc
165 %<color1>  \edef#4{rgb #1 #2 #3}%
166 %<color2>  \edef#4{rgb #1. #2. #3.}%
167 %<color3>  \edef#4{#1 #2 #3 setrgbcolor}%
168 %<color4>  \edef#4{\@tempa\@tempb\@tempc}%
169   }
170 %    \end{macrocode}
172 % A 0--1 range value will have been left in |\dimen@| by |\c@lor@arg|.
173 % Convert to 0--255 integer, and leave in |#1|.
174 %    \begin{macrocode}
175 %<*color4>
176 \def\c@lor@rgb@RGB#1{%
177   \dimen@\@cclv\dimen@
178   \count@\dimen@
179   \divide\count@\p@
180   \edef#1{\the\count@\space}}
181 %</color4>
182 %    \end{macrocode}
184 %    \begin{macrocode}
185 \def\color@RGB#1#2{\c@lor@@RGB#2\@@#1}
186 %    \end{macrocode}
188 %    \begin{macrocode}
189 \def\c@lor@@RGB#1,#2,#3\@@#4{%
190 %<!color4> \c@lor@RGB@rgb{#1}\@tempa
191 %<!color4> \c@lor@RGB@rgb{#2}\@tempb
192 %<!color4> \c@lor@RGB@rgb{#3}\@tempc
193 %<!color4> \c@lor@@rgb\@tempa,\@tempb,\@tempc\@@#4%
194 %<color4>  \edef#4{#1 #2 #3}%
195   }
196 %    \end{macrocode}
197 % % Convert 0--255 integer, |#1|, to 0--1 real, and leave in |#2|.
198 %    \begin{macrocode}
199 %<*!color4>
200 \def\c@lor@RGB@rgb#1#2{%
201   \dimen@#1\p@
202   \divide\dimen@\@cclv
203   \edef#2{\strip@pt\dimen@}}
204 %</!color4>
205 %    \end{macrocode}
207 %    \begin{macrocode}
208 %<*color1|color3>
209 \def\color@hsb#1#2{\c@lor@@hsb#2\@@#1}
210 %    \end{macrocode}
212 %    \begin{macrocode}
213 \def\c@lor@@hsb#1,#2,#3\@@#4{%
214   \c@lor@arg{#1}%
215   \c@lor@arg{#2}%
216   \c@lor@arg{#3}%
217 %<color1>  \edef#4{hsb #1 #2 #3}%
218 %<color3>  \edef#4{#1 #2 #3 sethsbcolor}%
219   }
220 %</color1|color3>
221 %    \end{macrocode}
223 %    \begin{macrocode}
224 \def\color@named#1#2{\c@lor@@named#2,,\@@#1}
225 %    \end{macrocode}
227 %    \begin{macrocode}
228 \def\c@lor@@named#1,#2,#3\@@#4{%
229   \@ifundefined{col@#1}%
230     {\PackageError{color}{Undefined color `#1'}\@ehd}%
231 %<color1&!dvipsone>  {\edef#4{ #1}}%
232 %<color2>  {\edef#4{ #1 \if!#2!\else #2.\fi}}%
233 %<color3|dvipsone|color4>  {\edef#4{\csname col@#1\endcsname}}%
234   }
235 %    \end{macrocode}
237 % Conversion from |\special| syntax to PostScript (for PSTricks).
238 %    \begin{macrocode}
239 %<*color1|color2>
240 \def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@}
241 %</color1|color2>
242 %<*color3>
243 \def\c@lor@to@ps#1\@@{#1}
244 %</color3>
245 %<*color4>
246 \def\c@lor@to@ps#1#2 #3 #4\@@{%
247   #1#2 255 div #3 255 div #4 255 div setrgbcolor}
248 %</color4>
249 %    \end{macrocode}
251 %    \begin{macrocode}
252 %<*color1>
253 \def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end}
254 \def\c@lor@ps@rgb#1\@@{#1 setrgbcolor}
255 \def\c@lor@ps@hsb#1\@@{#1 sethsbcolor}
256 \def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor}
257 \def\c@lor@ps@gray#1\@@{#1 setgray}
258 %</color1>
259 %<*color2>
260 \def\c@lor@to@ps@#1 #2\@@{\csname c@lor@ps@#1@\endcsname#2 \@@}
261 \def\c@lor@ps@#1 #2\@@{%
262   \expandafter\expandafter\expandafter
263      \c@lor@to@ps@\csname col@#1\expandafter\endcsname\space#2. \@@{#1}}
264 \def\c@lor@ps@rgb#1. #2. #3. #4\@@{#1 #2 #3 setrgbcolor}
265 \def\c@lor@ps@rgb@#1. #2. #3. #4. #5\@@#6{#1 #2 #3 setrgbcolor}
266 \def\c@lor@ps@cmyk#1. #2. #3. #4. #5. #6\@@{#1 #2 #3 #4 setcmykcolor}
267 \def\c@lor@ps@cmyk@#1. #2. #3. #4. #5. #6\@@#7{%
268        #1 #2 #3 #4  (#7)  findcustomcmykcolor
269        \if!\@firstofone#5!1 \else#5 \fi setcustomcolor}
270 %</color2>
271 %    \end{macrocode}
273 %    \begin{macrocode}
274 %<color1&!dvipsone>\def\current@color{ Black}
275 %<color1&dvipsone>\def\current@color{gray 0}
276 %<color2>\def\current@color{rgb 0. 0. 0.}
277 %<color3>\def\current@color{0 setgray}
278 %<color4>\def\current@color{0 0 0}
279 %    \end{macrocode}
281 % \changes{v3.0j}{2014/04/23}
282 %     {add \cs{nopagecolor} for dvips graphics/3873}
283 %    \begin{macrocode}
284 %<*color1>
285 \def\set@color{%
286 %<!dvipsone&!dvipdf> \special{color push  \current@color
287 %<dvipsone>          \special{color push}\special{color \current@color
288 %<dvipdf>            \special{pdf: /C  \current@color\space<<
289                           }\aftergroup\reset@color}
290 \def\reset@color{\special{%
291 %<!dvipdf>        color pop}}
292 %<dvipdf>         pdf: /C >> }}
293 \def\set@page@color{\special{%
294 %<!dvipdf>        background \current@color}}
295 %<dvipdf>         pdf: /BG \current@color}}
296 \def\define@color@named#1#2{%
297 %<!dvipsone>  \expandafter\let\csname col@#1\endcsname\@nnil}
298 %<dvipsone>   \expandafter\edef\csname col@#1\endcsname{#2}}
299 %<dvips>      \def\no@page@color{\special{background \string"newpath clip}}
300 %</color1>
301 %<*color2>
302 \def\set@color{%
303   \special{color push}%
304   \special{color \current@color}%
305   \aftergroup\reset@color}
306 \def\reset@color{\special{color pop}}
307 \def\set@page@color{\c@lor@special\sixt@@n{background \current@color}}
308 \def\define@color@named#1#2{%
309   \AtBeginDvi{\special{color define #1 #2}}%
310   \expandafter\edef\csname col@#1\endcsname{#2}}
311 %</color2>
312 %<*color3>
313 \def\set@color{%
314   \Gin@PS@raw{\current@color}\aftergroup\reset@color}
315 \def\reset@color{\Gin@PS@raw{\current@color}}
316 %</color3>
317 %<*color4>
318 \def\set@color{%
319   \special{textcolor: \current@color}\aftergroup\reset@color}
320 \def\reset@color{\special{textcolor: \current@color}}
321 %</color4>
322 %<*color3|color4>
323 \def\set@page@color{%
324   \c@lor@special\sixt@@n{background color ignored: \current@color}}
325 \def\define@color@named#1#2{%
326   \expandafter\edef\csname col@#1\endcsname{#2}}
327 %</color3|color4>
328 %    \end{macrocode}
330 %    \begin{macrocode}
331 %</color1|color2|color3|color4>
332 %    \end{macrocode}
334 %    \begin{macrocode}
335 %<*colorfix>
336 \AtBeginDocument{%
337   \let\@ldc@l@r\color
338   \def\color{\if@inlabel\leavevmode\fi\@ldc@l@r}%
339   \let\@lduseb@x\usebox
340   \def\usebox#1{\@lduseb@x{#1}\set@color}}
341 %</colorfix>
342 %    \end{macrocode}
344 %    \begin{macrocode}
345 %<*dvipsnames>
346 \DefineNamedColor{named}{GreenYellow}   {cmyk}{0.15,0,0.69,0}
347 \DefineNamedColor{named}{Yellow}        {cmyk}{0,0,1,0}
348 \DefineNamedColor{named}{Goldenrod}     {cmyk}{0,0.10,0.84,0}
349 \DefineNamedColor{named}{Dandelion}     {cmyk}{0,0.29,0.84,0}
350 \DefineNamedColor{named}{Apricot}       {cmyk}{0,0.32,0.52,0}
351 \DefineNamedColor{named}{Peach}         {cmyk}{0,0.50,0.70,0}
352 \DefineNamedColor{named}{Melon}         {cmyk}{0,0.46,0.50,0}
353 \DefineNamedColor{named}{YellowOrange}  {cmyk}{0,0.42,1,0}
354 \DefineNamedColor{named}{Orange}        {cmyk}{0,0.61,0.87,0}
355 \DefineNamedColor{named}{BurntOrange}   {cmyk}{0,0.51,1,0}
356 \DefineNamedColor{named}{Bittersweet}   {cmyk}{0,0.75,1,0.24}
357 \DefineNamedColor{named}{RedOrange}     {cmyk}{0,0.77,0.87,0}
358 \DefineNamedColor{named}{Mahogany}      {cmyk}{0,0.85,0.87,0.35}
359 \DefineNamedColor{named}{Maroon}        {cmyk}{0,0.87,0.68,0.32}
360 \DefineNamedColor{named}{BrickRed}      {cmyk}{0,0.89,0.94,0.28}
361 \DefineNamedColor{named}{Red}           {cmyk}{0,1,1,0}
362 \DefineNamedColor{named}{OrangeRed}     {cmyk}{0,1,0.50,0}
363 \DefineNamedColor{named}{RubineRed}     {cmyk}{0,1,0.13,0}
364 \DefineNamedColor{named}{WildStrawberry}{cmyk}{0,0.96,0.39,0}
365 \DefineNamedColor{named}{Salmon}        {cmyk}{0,0.53,0.38,0}
366 \DefineNamedColor{named}{CarnationPink} {cmyk}{0,0.63,0,0}
367 \DefineNamedColor{named}{Magenta}       {cmyk}{0,1,0,0}
368 \DefineNamedColor{named}{VioletRed}     {cmyk}{0,0.81,0,0}
369 \DefineNamedColor{named}{Rhodamine}     {cmyk}{0,0.82,0,0}
370 \DefineNamedColor{named}{Mulberry}      {cmyk}{0.34,0.90,0,0.02}
371 \DefineNamedColor{named}{RedViolet}     {cmyk}{0.07,0.90,0,0.34}
372 \DefineNamedColor{named}{Fuchsia}       {cmyk}{0.47,0.91,0,0.08}
373 \DefineNamedColor{named}{Lavender}      {cmyk}{0,0.48,0,0}
374 \DefineNamedColor{named}{Thistle}       {cmyk}{0.12,0.59,0,0}
375 \DefineNamedColor{named}{Orchid}        {cmyk}{0.32,0.64,0,0}
376 \DefineNamedColor{named}{DarkOrchid}    {cmyk}{0.40,0.80,0.20,0}
377 \DefineNamedColor{named}{Purple}        {cmyk}{0.45,0.86,0,0}
378 \DefineNamedColor{named}{Plum}          {cmyk}{0.50,1,0,0}
379 \DefineNamedColor{named}{Violet}        {cmyk}{0.79,0.88,0,0}
380 \DefineNamedColor{named}{RoyalPurple}   {cmyk}{0.75,0.90,0,0}
381 \DefineNamedColor{named}{BlueViolet}    {cmyk}{0.86,0.91,0,0.04}
382 \DefineNamedColor{named}{Periwinkle}    {cmyk}{0.57,0.55,0,0}
383 \DefineNamedColor{named}{CadetBlue}     {cmyk}{0.62,0.57,0.23,0}
384 \DefineNamedColor{named}{CornflowerBlue}{cmyk}{0.65,0.13,0,0}
385 \DefineNamedColor{named}{MidnightBlue}  {cmyk}{0.98,0.13,0,0.43}
386 \DefineNamedColor{named}{NavyBlue}      {cmyk}{0.94,0.54,0,0}
387 \DefineNamedColor{named}{RoyalBlue}     {cmyk}{1,0.50,0,0}
388 \DefineNamedColor{named}{Blue}          {cmyk}{1,1,0,0}
389 \DefineNamedColor{named}{Cerulean}      {cmyk}{0.94,0.11,0,0}
390 \DefineNamedColor{named}{Cyan}          {cmyk}{1,0,0,0}
391 \DefineNamedColor{named}{ProcessBlue}   {cmyk}{0.96,0,0,0}
392 \DefineNamedColor{named}{SkyBlue}       {cmyk}{0.62,0,0.12,0}
393 \DefineNamedColor{named}{Turquoise}     {cmyk}{0.85,0,0.20,0}
394 \DefineNamedColor{named}{TealBlue}      {cmyk}{0.86,0,0.34,0.02}
395 \DefineNamedColor{named}{Aquamarine}    {cmyk}{0.82,0,0.30,0}
396 \DefineNamedColor{named}{BlueGreen}     {cmyk}{0.85,0,0.33,0}
397 \DefineNamedColor{named}{Emerald}       {cmyk}{1,0,0.50,0}
398 \DefineNamedColor{named}{JungleGreen}   {cmyk}{0.99,0,0.52,0}
399 \DefineNamedColor{named}{SeaGreen}      {cmyk}{0.69,0,0.50,0}
400 \DefineNamedColor{named}{Green}         {cmyk}{1,0,1,0}
401 \DefineNamedColor{named}{ForestGreen}   {cmyk}{0.91,0,0.88,0.12}
402 \DefineNamedColor{named}{PineGreen}     {cmyk}{0.92,0,0.59,0.25}
403 \DefineNamedColor{named}{LimeGreen}     {cmyk}{0.50,0,1,0}
404 \DefineNamedColor{named}{YellowGreen}   {cmyk}{0.44,0,0.74,0}
405 \DefineNamedColor{named}{SpringGreen}   {cmyk}{0.26,0,0.76,0}
406 \DefineNamedColor{named}{OliveGreen}    {cmyk}{0.64,0,0.95,0.40}
407 \DefineNamedColor{named}{RawSienna}     {cmyk}{0,0.72,1,0.45}
408 \DefineNamedColor{named}{Sepia}         {cmyk}{0,0.83,1,0.70}
409 \DefineNamedColor{named}{Brown}         {cmyk}{0,0.81,1,0.60}
410 \DefineNamedColor{named}{Tan}           {cmyk}{0.14,0.42,0.56,0}
411 \DefineNamedColor{named}{Gray}          {cmyk}{0,0,0,0.50}
412 \DefineNamedColor{named}{Black}         {cmyk}{0,0,0,1}
413 \DefineNamedColor{named}{White}         {cmyk}{0,0,0,0}
414 %</dvipsnames>
415 %    \end{macrocode}
417 % \section{dvips}
418 % A \LaTeXe\ graphics driver file for Tom Rokicki's \emph{dvips}
419 % driver; tested with version 5.58f.
421 %    \begin{macrocode}
422 %<*dvips>
423 %    \end{macrocode}
425 % \subsection{Colour}
426 % Uses the generic `color1' code.
428 % \subsection{File inclusion}
430 % \begin{macro}{\Ginclude@eps}
431 %  |#1| input file (or command)
432 %    \begin{macrocode}
433 \def\Ginclude@eps#1{%
434  \message{<#1>}%
435   \bgroup
436 %    \end{macrocode}
437 % \emph{dvips} likes to work with its own pixel resolution, so
438 % mangle the sizes slightly.
439 %    \begin{macrocode}
440   \def\@tempa{!}%
441   \dimen@\Gin@req@width
442   \dimen@ii.1bp%
443   \divide\dimen@\dimen@ii
444   \@tempdima\Gin@req@height
445   \divide\@tempdima\dimen@ii
446     \special{PSfile="#1"\space
447       llx=\Gin@llx\space
448       lly=\Gin@lly\space
449       urx=\Gin@urx\space
450       ury=\Gin@ury\space
451       \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
452       \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
453       \ifGin@clip clip\fi}%
454   \egroup}
455 %    \end{macrocode}
456 %  \end{macro}
458 %  \begin{macro}{\Ginclude@bmp}
459 %  |#1| input file; if zero size is requested, the graphic will
460 % come at `natural' size.
461 %    \begin{macrocode}
462 \def\Ginclude@bmp#1{%
463   \message{<#1>}%
464   \dimen@\Gin@req@height
465   \advance\dimen@ by-\Gin@lly bp
466   \kern-\Gin@llx bp\raise\Gin@req@height\hbox{%
467    \ifdim\Gin@urx bp=\z@
468      \ifdim\Gin@ury bp=\z@
469         \special{em: graph #1}%
470      \else
471         \special{em: graph #1,\Gin@urx bp}%
472      \fi
473   \else
474         \special{em: graph #1,\Gin@urx bp,\Gin@ury bp}%
475   \fi
476  }%
478 %    \end{macrocode}
479 % \end{macro}
481 %  \begin{macro}{\Ginclude@pict}
482 %  \begin{macro}{\Ginclude@pntg}
483 %  \begin{macro}{\oztex@include}
484 % PICT/PNTG format from the Mac. Actually only currently supported by
485 % the version of dvips distributed with \OzTeX, and with the built in
486 % \OzTeX\ drivers, but put here anyway as it is not much code and
487 % increases portability between the systems as now |[dvips]| and
488 % |[oztex]| share the same back end.
489 %    \begin{macrocode}
490 \def\oztex@include#1#2{%
491  \dimen@1bp%
492  \divide\Gin@req@width\dimen@
493  \divide\Gin@req@height\dimen@
494  \special{#1=#2\space
495    \@width=\number\Gin@req@width \space
496    \@height=\number\Gin@req@height}}
497 %    \end{macrocode}
499 %    \begin{macrocode}
500 \def\Ginclude@pntg{\oztex@include{pntg}}
501 \def\Ginclude@pict{\oztex@include{pict}}
502 %    \end{macrocode}
503 % \end{macro}
504 % \end{macro}
505 % \end{macro}
507 % \subsection{Rotation}
508 %    \begin{macrocode}
509 \def\Grot@start{%
510  \special{ps: gsave currentpoint
511  currentpoint translate \Grot@angle\space neg
512  rotate neg exch neg exch translate}}
513 \def\Grot@end{\special{ps: currentpoint grestore moveto}}
514 %    \end{macrocode}
515 % \subsection{Scaling}
516 %    \begin{macrocode}
517 \def\Gscale@start{\special{ps:  currentpoint currentpoint translate
518   \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
519 \def\Gscale@end{\special{ps:  currentpoint currentpoint translate
520   1 \Gscale@x\space div 1 \Gscale@y\space div scale
521   neg exch neg exch translate}}
522 %    \end{macrocode}
524 % \section{Literal Postscript}
526 % Raw PostScript code, no save/restore.
527 %    \begin{macrocode}
528 \def\Gin@PS@raw#1{\special{ps: #1}}
529 %    \end{macrocode}
531 % PostScript code, to be surrounded by save/restore by the driver.
532 % Coordinate system standard PostScript, but with origin
533 % at current (\TeX) position.
534 %    \begin{macrocode}
535 \def\Gin@PS@restored#1{\special{" #1}}
536 %    \end{macrocode}
538 % PostScript code to be inserted in the Header section of the final
539 % PostScript. Must be issued on the first page of a document.
540 %    \begin{macrocode}
541 \def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}}
542 %    \end{macrocode}
544 % Name of external file, the contents of which are to be inserted in
545 % the Header section of the final PostScript. Must be issued on the
546 % first page of a document.
547 %    \begin{macrocode}
548 \def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
549 %    \end{macrocode}
551 % \section{Page Size}
553 % \changes{v3.0l}{2016/06/02}{page size special added to patch pdftex.def}
554 % \changes{v3.0m}{2016/06/17}{guards for contributed packages and plain TeX}
555 %    \begin{macrocode}
556 \@ifundefined{ifGin@setpagesize}
557   {\expandafter\let\csname ifGin@setpagesize\expandafter\endcsname
558                     \csname iftrue\endcsname}
559   {}
560 %    \end{macrocode}
562 %    \begin{macrocode}
563 \ifGin@setpagesize
564 \ifx\paperwidth\@undefined\else
565   \AtBeginDocument{\AtBeginDvi{%
566     \begingroup
567     \ifx\stockwidth\@undefined\else
568       \paperwidth\stockwidth
569       \paperheight\stockheight
570     \fi
571     \ifdim\paperwidth>\z@
572       \ifdim\paperheight>\z@
573         \special{papersize=\the\paperwidth,\the\paperheight}%
574       \fi
575     \fi
576     \endgroup}}
579 %    \end{macrocode}
581 %    \begin{macrocode}
582 %</dvips>
583 %    \end{macrocode}
586 % \section{dvipdf}
587 % A \LaTeXe\ graphics driver file for  \emph{dvipdf} driver.
589 %    \begin{macrocode}
590 %<*dvipdf>
591 %    \end{macrocode}
593 % \subsection{Colour}
594 % Uses the generic `color1' code.
596 % \subsection{File inclusion}
598 % \begin{macro}{\Ginclude@eps}
599 %  |#1| input file (or command)
600 %    \begin{macrocode}
601 \def\Ginclude@eps#1{%
602  \message{<#1>}%
603   \bgroup
604 %    \end{macrocode}
605 % \emph{dvips} likes to work with its own pixel resolution, so
606 % mangle the sizes slightly.
607 %    \begin{macrocode}
608   \def\@tempa{!}%
609   \dimen@\Gin@req@width
610   \dimen@ii.1bp%
611   \divide\dimen@\dimen@ii
612   \@tempdima\Gin@req@height
613   \divide\@tempdima\dimen@ii
614     \special{PSfile="#1"\space
615       llx=\Gin@llx\space
616       lly=\Gin@lly\space
617       urx=\Gin@urx\space
618       ury=\Gin@ury\space
619       \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
620       \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
621       \ifGin@clip clip\fi}%
622   \egroup}
623 %    \end{macrocode}
624 %  \end{macro}
626 %  \begin{macro}{\Ginclude@bmp}
627 %  |#1| input file; if zero size is requested, the graphic will
628 % come at `natural' size.
629 %    \begin{macrocode}
630 \def\Ginclude@bmp#1{%
631   \message{<#1>}%
632   \dimen@\Gin@req@height
633   \advance\dimen@ by-\Gin@lly bp
634   \kern-\Gin@llx bp\raise\Gin@req@height\hbox{%
635    \ifdim\Gin@urx bp=\z@
636      \ifdim\Gin@ury bp=\z@
637         \special{pdf: /GRAPH  #1}%
638      \else
639         \special{pdf: /GRAPH  #1 \number\Gin@req@width sp}%
640      \fi
641   \else
642         \special{pdf: /GRAPH  #1 \number\Gin@req@width sp
643                                \number\Gin@req@height sp}%
644   \fi}}
645 %    \end{macrocode}
646 % \end{macro}
648 % \subsection{Rotation}
649 %    \begin{macrocode}
650 \def\Grot@start{%
651 \special{pdf: /ROT \Grot@angle\space << }}
652 \def\Grot@end{\special{pdf: /ROT >> }}
653 %    \end{macrocode}
655 % \subsection{Scaling}
656 %    \begin{macrocode}
657 \def\Gscale@start{\special{pdf: /S \Gscale@x\space \Gscale@y\space << }}
658 \def\Gscale@end{\special{pdf: /S \space >> }}
659 %    \end{macrocode}
661 % \section{Literal Postscript}
663 % Raw PostScript code, no save/restore.
664 %    \begin{macrocode}
665 \def\Gin@PS@raw#1{\special{ps: #1}}
666 %    \end{macrocode}
668 % PostScript code, to be surrounded by save/restore by the driver.
669 % Coordinate system standard PostScript, but with origin
670 % at current (\TeX) position.
671 %    \begin{macrocode}
672 \def\Gin@PS@restored#1{\special{" #1}}
673 %    \end{macrocode}
675 % PostScript code to be inserted in the Header section of the final
676 % PostScript. Must be issued on the first page of a document.
677 %    \begin{macrocode}
678 \def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}}
679 %    \end{macrocode}
681 % Name of external file, the contents of which are to be inserted in
682 % the Header section of the final PostScript. Must be issued on the
683 % first page of a document.
684 %    \begin{macrocode}
685 \def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
686 %    \end{macrocode}
688 % \subsection{File extensions}
690 %    \begin{macrocode}
691 \@namedef{Gin@rule@.msp}#1{{bmp}{.bb}{#1}}
692 \@namedef{Gin@rule@.jpg}#1{{bmp}{.bb}{#1}}
693 \@namedef{Gin@rule@.bmp}#1{{bmp}{.bb}{#1}}
694 %    \end{macrocode}
696 %    \begin{macrocode}
697 %</dvipdf>
698 %    \end{macrocode}
700 % \section{\OzTeX}
702 % A \LaTeXe\ graphics driver file for  \OzTeX\
703 % (versions 1.42 and later),
704 % by Andrew Trevorrow.
705 %    \begin{macrocode}
706 %<*oztex>
707 %    \end{macrocode}
708 %\subsection{Graphics inclusion}
709 %    \begin{macrocode}
710 \def\Ginclude@eps{\Oztex@Include{epsf}}
711 \def\Ginclude@pntg{\Oztex@Include{pntg}}
712 \def\Ginclude@pict{\Oztex@Include{pict}}
713 \def\Oztex@Include#1#2{%
714  \ifGin@clip
715   \typeout{No clipping support in OzTeX}%
716  \fi
717  \divide\Gin@req@width by 65781% convert sp to bp
718  \divide\Gin@req@height by 65781%
719  \special{#1=#2\space
720   width=\number\Gin@req@width \space
721   height=\number\Gin@req@height
722  }%
724 %</oztex>
725 %    \end{macrocode}
726 %\section{Textures}
727 % A \LaTeXe\ graphics driver file for Blue Sky's Textures
729 % \textbf{WARNING! There is ongoing work to produce a new version of
730 % the textures support. Do not rely on anything in this file being in
731 % the next version!}
734 %    \begin{macrocode}
735 %<*textures>
736 %    \end{macrocode}
737 % \subsection{Graphics inclusion}
740 %    \begin{macrocode}
741 \PackageInfo{graphics/color}
742   {This file uses the advanced color support\MessageBreak
743    available in textures1.7\MessageBreak
744    If you are using color with an earlier version\MessageBreak
745    of textures, edit graphics.ins where marked,\MessageBreak
746    and re-latex graphics.ins.\MessageBreak\MessageBreak
747    If you are using textures1.7\MessageBreak
748    you may want to delete this warning\MessageBreak
749    from textures.def.\MessageBreak\MessageBreak
750    The code for scaling/rotation and file inclusion\MessageBreak
751    in this file is still rudimentary, and does not\MessageBreak
752    use textures' full capabilities.\MessageBreak\MessageBreak
753    A new textures.def is currently being developed\@gobble}
754 %    \end{macrocode}
757 %    \begin{macrocode}
758 \def\Ginclude@eps{\Textures@Include{illustration}}
759 \def\Ginclude@pict{\Textures@Include{pictfile}}
760 \def\Textures@Include#1#2{%
761  \def\@tempa{!}%
762  \ifx\Gin@scaley\@tempa
763      \let\Gin@scaley\Gin@scalex
764  \else
765     \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
766  \fi
767  \setlength\@tempdima{\Gin@scalex pt}%
768  \setlength\@tempdimb{\Gin@scaley pt}%
769  \ifdim\@tempdima>\@tempdimb
770     \let\Gin@scalex\Gin@scaley
771  \fi
772  \ifGin@clip
773   \typeout{no clipping support in Textures}%
774  \fi
775  \@tempdimb=1000sp%
776  \setlength\@tempdima{\Gin@scalex\@tempdimb}%
777  \special{#1 #2\space scaled \number\@tempdima}%
779 %    \end{macrocode}
780 % \subsection{Rotation}
781 % This code was written when no unprotected postscript code was allowed;
782 % it could almost certainly be rewritten now with `rawpostscript'.
783 %    \begin{macrocode}
784 \def\Grot@start{\special{postscript
785   0 0 transform
786   grestore
787   matrix currentmatrix
788   3 1 roll
789   itransform
790   dup 3 -1 roll
791   dup 4 1 roll exch
792   translate
793   \Grot@angle\space neg rotate
794   neg exch neg exch translate
795   gsave}}
796 \def\Grot@end{\special{postscript grestore  setmatrix  gsave}}
797 %    \end{macrocode}
798 % \subsection{Colour}
799 % This will only work for versions 1.6 and Version 1.7 uses `color2'.
800 %    \begin{macrocode}
801 %<color3>\def\Gin@PS@raw#1{\special{rawpostscript #1}}
802 %</textures>
803 %    \end{macrocode}
805 % \section{dvialw}
806 % A \LaTeXe\ graphics driver file for dvialw, by Nelson Beebe
807 %    \begin{macrocode}
808 %<*dvialw>
809 %    \end{macrocode}
810 % \subsection{Rotation}
811 %    \begin{macrocode}
812 \def\Ginclude@eps#1{%
813    \def\@tempa{!}%
814    \ifx\Gin@scaley\@tempa
815      \let\Gin@scaley\Gin@scalex
816    \else
817     \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
818    \fi
819    \ifGin@clip
820     \typeout{no clipping support in dvialw}%
821    \fi
822    \special{language "PS",
823       literal "\Gin@scalex\space
824         \Gin@scaley\space scale",
825       position = "bottom left",
826       include "#1\space"}%
828 %</dvialw>
829 %    \end{macrocode}
830 % \section{emtex}
831 % A \LaTeXe\ graphics driver file for Eberhard Mattes' emTeX
832 %    \begin{macrocode}
833 %<*emtex>
834 %    \end{macrocode}
835 % \subsection{Graphics file inclusion}
836 %    \begin{macrocode}
837 \def\Ginclude@bmp#1{%
838   \raise\Gin@req@height\hbox{\special{em:graph #1}}%
839 \typeout{WARNING: emtex does not permit graphics to be scaled}%
841 %</emtex>
842 %    \end{macrocode}
843 % \section{dvilaser/ps}
844 % A \LaTeXe\ graphics driver file for Arbortext's dvilaser/ps
845 %    \begin{macrocode}
846 %<*dvilaser>
847 %    \end{macrocode}
848 %\subsection{Graphic file inclusion}
849 %    \begin{macrocode}
850 \def\Ginclude@eps#1{%
851 \ifGin@clip
852   \typeout{no clipping support in dvilaser/ps}%
854 \special{ps: epsfile #1\space \the\Gin@req@width}%
856 %</dvilaser>
857 %    \end{macrocode}
858 % \section{psprint}
859 % A \LaTeXe\ graphics driver file for Trevorrow's psprint
860 %    \begin{macrocode}
861 %<*psprint>
862 %    \end{macrocode}
863 %\subsection{Graphic file inclusion}
864 %    \begin{macrocode}
865 \def\Ginclude@eps#1{%
866    \def\@tempa{!}%
867    \ifx\Gin@scaley\@tempa
868      \let\Gin@scaley\Gin@scalex
869    \else
870      \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
871    \fi
872    \ifGin@clip
873      \typeout{no clipping support in psprint}%
874    \fi
875    \special{#1\space
876        \Gin@scalex\space \Gin@scaley\space scale
877        \Gin@llx\space neg
878        \Gin@lly \space neg translate
881 %</psprint>
882 %    \end{macrocode}
883 % \section{dvipsone}
885 % A \LaTeXe\ graphics driver file for Y\&Y's dvipsone
886 %    \begin{macrocode}
887 %<*dvipsone>
888 %    \end{macrocode}
890 % \subsection{Graphic file inclusion}
892 % PostScript Files.
893 %    \begin{macrocode}
894 \def\Ginclude@eps#1{%
895  \message{<#1>}%
896   \bgroup
897   \def\@tempa{!}%
898   \dimen@\Gin@req@width
899   \dimen@ii.1bp%
900   \divide\dimen@\dimen@ii
901   \@tempdima\Gin@req@height
902   \divide\@tempdima\dimen@ii
903     \special{PSfile="#1"\space
904       llx=\Gin@llx\space
905       lly=\Gin@lly\space
906       urx=\Gin@urx\space
907       ury=\Gin@ury\space
908       \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
909       \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
910       \ifGin@clip clip\fi}%
911   \egroup}
912 %    \end{macrocode}
914 % Tiff files.
915 %    \begin{macrocode}
916 \def\Ginclude@tiff#1{%
917 \message{<#1>}%
918  \special{insertimage: #1 \number\Gin@req@width\space
919      \number\Gin@req@height}}
920 %    \end{macrocode}
922 % Windows Metafiles.
923 %    \begin{macrocode}
924 \def\Ginclude@wmf#1{%
925   \message{<#1>}%
926   \special{insertmf: #1 0 0 \number\Gin@req@width\space
927        \number\Gin@req@height}}
928 %    \end{macrocode}
930 %    \begin{macrocode}
931 %    \end{macrocode}
933 %    \begin{macrocode}
934 \def\Gin@PS@raw#1{\special{ps: #1}}
935 %    \end{macrocode}
937 % \subsection{Rotation}
938 %    \begin{macrocode}
939 \def\Grot@start{%
940  \special{ps: gsave currentpoint
941  currentpoint translate \Grot@angle\space
942  rotate neg exch neg exch translate}}
943 \def\Grot@end{%
944   \special{ps: currentfont currentpoint grestore moveto setfont}}
945 %    \end{macrocode}
947 % \subsection{Scaling}
948 %    \begin{macrocode}
949 \def\Gscale@start{\special{ps:  currentpoint currentpoint translate
950   \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
951 \def\Gscale@end{\special{ps:  currentpoint currentpoint translate
952   1 \Gscale@x\space div 1 \Gscale@y\space div scale
953   neg exch neg exch translate}}
954 %    \end{macrocode}
956 % \subsection{File Extensions}
958 %    \begin{macrocode}
959 \@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
960 \@namedef{Gin@rule@.clp}#1{{wmf}{}{#1}}
961 %    \end{macrocode}
963 % \section{Literal Postscript}
965 % Raw PostScript code, no save/restore.
966 %    \begin{macrocode}
967 \def\Gin@PS@raw#1{\special{ps: #1}}
968 %    \end{macrocode}
970 % PostScript code, to be surrounded by save/restore by the driver.
971 % Coordinate system standard PostScript, but with origin
972 % at current (\TeX) position.
973 %    \begin{macrocode}
974 \def\Gin@PS@restored#1{\special{" #1}}
975 %    \end{macrocode}
977 % PostScript code to be inserted in the Header section of the final
978 % PostScript. Must be issued on the first page of a document.
979 %    \begin{macrocode}
980 \def\Gin@PS@literal@header#1{\AtBeginDvi{\special{headertext=#1}}}
981 %    \end{macrocode}
983 % Name of external file, the contents of which are to be inserted in
984 % the Header section of the final PostScript. Must be issued on the
985 % first page of a document.
986 %    \begin{macrocode}
987 \def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
988 %    \end{macrocode}
990 %    \begin{macrocode}
991 %</dvipsone>
992 %    \end{macrocode}
994 % \section{dviwindo}
995 % A \LaTeXe\ graphics driver file for Y\&Y's dviwindo.
997 % This driver now uses the same file as |dvipsone|.
999 % \section{dvitops}
1000 % A \LaTeXe\ graphics driver file for James Clark's dvitops
1001 %    \begin{macrocode}
1002 %<*dvitops>
1003 %    \end{macrocode}
1004 % \subsection{Rotation}
1005 %    \begin{macrocode}
1006 \newcount\Grot@count
1007 \Grot@count=\@ne
1008 \def\Grot@start{\special{dvitops: origin
1009     rot\the\@tempdima}%
1010 \special{dvitops: begin rot\the\Grot@count}}%
1011 \def\Grot@end{\special{dvitops: end}%
1012 \special{dvitops: rotate rot\the\Grot@count \space
1013     \Grot@angle}%
1014 \global\advance\Grot@count by\@ne}%
1015 %    \end{macrocode}
1016 % \subsection{Graphic file inclusion}
1017 %    \begin{macrocode}
1018 \def\Ginclude@eps#1{%
1019 % These cause an arithmetic overflow, so I've commented them
1020 % out. Presumably they were there for some reason.
1021 % Any dvitops users out there??
1022 % \multiply\Gin@req@width by \@m
1023 % \multiply\Gin@req@height by \@m
1024 \ifGin@clip
1025   \typeout{no clipping support in dvitops}%
1027 \special{import #1\space \the\Gin@req@width\space
1028                          \the\Gin@req@height\space fill}}
1029 %    \end{macrocode}
1031 %    \begin{macrocode}
1032 %</dvitops>
1033 %    \end{macrocode}
1035 %\section{dvi2ps}
1036 % A \LaTeXe\ graphics driver file for original dvi2ps
1037 %    \begin{macrocode}
1038 %<*dvi2ps>
1039 %    \end{macrocode}
1041 % \subsection{Graphic file inclusion}
1042 %    \begin{macrocode}
1043 \def\Ginclude@eps#1{%
1044    \def\@tempa{!}%
1045    \ifx\Gin@scaley\@tempa
1046      \let\Gin@scaley\Gin@scalex
1047    \else
1048     \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
1049    \fi
1050    \ifGin@clip
1051      \typeout{no clipping support in dvi2ps}%
1052    \fi
1053    \special{psfile=#1\space
1054         hscale=\Gin@scalex\space 1000 mul
1055         vscale=\Gin@scaley\space 1000 mul}}
1056 %    \end{macrocode}
1058 %    \begin{macrocode}
1059 %</dvi2ps>
1060 %    \end{macrocode}
1062 % \section{pctexps}
1063 % A \LaTeXe\ graphics driver file for Personal TeX's PTI Laser/PS;
1064 % from information supplied by Lance Carnes and Tao Wang
1065 % |<pti@crl.com>|.
1066 %    \begin{macrocode}
1067 %<*pctexps>
1068 %    \end{macrocode}
1070 % \subsection{Graphic file inclusion}
1072 %    \begin{macrocode}
1073 \def\Ginclude@eps#1{%
1074 \message{<#1>}%
1075    \ifGin@clip
1076      \typeout{no clipping support in pctexps}%
1077    \fi
1078    \Gin@req@width.03515\Gin@req@width
1079    \Gin@req@height.03515\Gin@req@height
1080    \special{ps:#1\space x=\strip@pt\Gin@req@width cm,
1081                         y=\strip@pt\Gin@req@height cm}}
1082 %    \end{macrocode}
1084 %    \begin{macrocode}
1085 \def\Ginclude@ps#1{%
1086 \message{<#1>}%
1087   \ifGin@clip
1088     \typeout{no clipping support in pctexps}%
1089   \fi
1090   \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{ps:#1}}}%
1091   \typeout{^^J%
1092 ---------------------------------------------------------^^J%
1093 .ps graphics without bounding box information cannot be^^J%
1094 scaled.  If the file actually contains the information,^^J%
1095 please rename the file to .eps file extension.^^J%
1096 ---------------------------------------------------------^^J}}
1097 %    \end{macrocode}
1099 %    \begin{macrocode}
1100 \def\Gin@extensions{.eps,.ps}
1101 \@namedef{Gin@rule@.ps}#1{{ps}{.ps}{#1}}
1102 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1103 %    \end{macrocode}
1105 %    \begin{macrocode}
1106 \def\Gin@PS@raw#1{\special{ps::#1}}
1107 \def\Grot@start{%
1108  \special{ps::gsave currentpoint
1109  currentpoint translate \Grot@angle\space
1110  rotate neg exch neg exch translate}}
1111 \def\Grot@end{\special{ps:: currentpoint grestore moveto}}
1112 %    \end{macrocode}
1114 %    \begin{macrocode}
1115 \def\Gscale@start{\special{ps:: currentpoint currentpoint translate
1116   \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
1117 \def\Gscale@end{\special{ps::  currentpoint currentpoint translate
1118   1 \Gscale@x\space div 1 \Gscale@y\space div scale
1119   neg exch neg exch translate}}
1120 %    \end{macrocode}
1122 %    \begin{macrocode}
1123 %</pctexps>
1124 %    \end{macrocode}
1126 % \section{pctex32}
1127 % A \LaTeXe\ graphics driver file for Personal TeX's PC TeX for 32 bit
1128 % Windows; Code supplied by Tao Wang |<pti@crl.com>|.
1130 % \subsection{Colour}
1131 % Uses the generic `color1' code.
1133 %    \begin{macrocode}
1134 %<*pctex32>
1135 %    \end{macrocode}
1137 % \subsection{Graphic file inclusion}%
1138 %    \begin{macrocode}
1139 % including PostScript graphics
1140 \def\Ginclude@eps#1{%
1141  \message{<#1>}%
1142   \bgroup
1143   \def\@tempa{!}%
1144   \dimen@\Gin@req@width
1145   \dimen@ii.1bp%
1146   \divide\dimen@\dimen@ii
1147   \@tempdima\Gin@req@height
1148   \divide\@tempdima\dimen@ii
1149     \special{PSfile="#1"\space
1150       llx=\Gin@llx\space
1151       lly=\Gin@lly\space
1152       urx=\Gin@urx\space
1153       ury=\Gin@ury\space
1154       \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
1155       \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
1156       \ifGin@clip clip\fi}%
1157   \egroup}
1158 %    \end{macrocode}
1160 % including BMP graphics
1161 %    \begin{macrocode}
1162 \def\Ginclude@bmp#1{%
1163 \message{<#1>}%
1164    \ifGin@clip
1165      \typeout{no clipping support for BMP graphics in PCTeX32}%
1166    \fi
1167    \Gin@req@width.03515\Gin@req@width
1168    \Gin@req@height.03515\Gin@req@height
1169    \special{bmp:#1\space x=\strip@pt\Gin@req@width cm,
1170      y=\strip@pt\Gin@req@height cm}}
1171 %    \end{macrocode}
1173 % including WMF graphics
1174 %    \begin{macrocode}
1175 \def\Ginclude@wmf#1{%
1176 \message{<#1>}%
1177    \ifGin@clip
1178      \typeout{no clipping support for WMF graphics in PCTeX32}%
1179    \fi
1180    \Gin@req@width.03515\Gin@req@width
1181    \Gin@req@height.03515\Gin@req@height
1182    \special{wmf:#1\space x=\strip@pt\Gin@req@width cm,
1183      y=\strip@pt\Gin@req@height cm}}
1184 %    \end{macrocode}
1186 % \subsection{Scaling and Rotating}
1187 % PostScript rotation and scaling
1188 %    \begin{macrocode}
1189 \def\Grot@start{%
1190  \special{ps:: gsave currentpoint
1191  currentpoint translate \Grot@angle\space neg
1192  rotate neg exch neg exch translate}}
1193 \def\Grot@end{\special{ps:: currentpoint grestore moveto}}
1194 \def\Gscale@start{\special{ps::  currentpoint currentpoint translate
1195   \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
1196 \def\Gscale@end{\special{ps::  currentpoint currentpoint translate
1197   1 \Gscale@x\space div 1 \Gscale@y\space div scale
1198   neg exch neg exch translate}}
1199 %    \end{macrocode}
1201 %    \begin{macrocode}
1202 \def\Gin@PS@raw#1{\special{ps:: #1}}
1203 \def\Gin@PS@restored#1{\special{" #1}}
1204 %    \end{macrocode}
1206 % \subsection{Default Extensions}
1208 %    \begin{macrocode}
1209 \def\Gin@extensions{.eps,.ps,.wmf,.bmp}
1210 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1211 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1212 \@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
1213 \@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
1214 %    \end{macrocode}
1216 %    \begin{macrocode}
1217 %</pctex32>
1218 %    \end{macrocode}
1220 % \section{pctexwin}
1221 % A \LaTeXe\ graphics driver file for Personal TeX's PC TeX for Windows;
1222 % from information supplied by Lance Carnes and Tao Wang
1223 % |<pti@crl.com>|.
1224 %    \begin{macrocode}
1225 %<*pctexwin>
1226 %    \end{macrocode}
1228 % \subsection{Graphic file inclusion}
1230 %    \begin{macrocode}
1231 \def\Ginclude@eps#1{%
1232 \message{<#1>}%
1233    \ifGin@clip
1234      \typeout{no clipping support in pctexwin}%
1235    \fi
1236    \Gin@req@width.03515\Gin@req@width
1237    \Gin@req@height.03515\Gin@req@height
1238    \special{eps:#1\space x=\strip@pt\Gin@req@width cm,
1239                          y=\strip@pt\Gin@req@height cm}}
1240 %    \end{macrocode}
1242 %    \begin{macrocode}
1243 \def\Ginclude@ps#1{%
1244 \message{<#1>}%
1245   \ifGin@clip
1246     \typeout{no clipping support in pctexwin}%
1247   \fi
1248   \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{ps:#1}}}%
1249   \typeout{^^J%
1250 ---------------------------------------------------------^^J%
1251 .ps graphics without bounding box information cannot be^^J%
1252 scaled.  If the file actually contains the information,^^J%
1253 please rename the file to .eps file extension.^^J%
1254 ---------------------------------------------------------^^J%
1256 %    \end{macrocode}
1258 %    \begin{macrocode}
1259 \def\Ginclude@bmp#1{%
1260 \message{<#1>}%
1261    \ifGin@clip
1262      \typeout{no clipping support in pctexwin}%
1263    \fi
1264    \Gin@req@width.03515\Gin@req@width
1265    \Gin@req@height.03515\Gin@req@height
1266    \special{bmp:#1\space x=\strip@pt\Gin@req@width cm,
1267                          y=\strip@pt\Gin@req@height cm}}
1268 %    \end{macrocode}
1270 %    \begin{macrocode}
1271 \def\Ginclude@wmf#1{%
1272 \message{<#1>}%
1273    \ifGin@clip
1274      \typeout{no clipping support in pctexwin}%
1275    \fi
1276    \Gin@req@width.03515\Gin@req@width
1277    \Gin@req@height.03515\Gin@req@height
1278    \special{wmf:#1\space x=\strip@pt\Gin@req@width cm,
1279                          y=\strip@pt\Gin@req@height cm}}
1280 %    \end{macrocode}
1282 %    \begin{macrocode}
1283 \def\Gin@extensions{.eps,.ps,.wmf,.bmp}
1284 \@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
1285 \@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
1286 \@namedef{Gin@rule@.ps}#1{{ps}{.ps}{#1}}
1287 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1288 %    \end{macrocode}
1290 %    \begin{macrocode}
1291 %</pctexwin>
1292 %    \end{macrocode}
1294 % \section{pctexhp}
1295 % A \LaTeXe\ graphics driver file for Personal TeX's PTI Laser/HP;
1296 % from information supplied by Lance Carnes and Tao Wang
1297 % |<pti@crl.com>|.
1298 %    \begin{macrocode}
1299 %<*pctexhp>
1300 %    \end{macrocode}
1301 % \subsection{Graphic file inclusion}
1302 %    \begin{macrocode}
1303 \def\Ginclude@pcl#1{%
1304 \message{<#1>}%
1305    \ifGin@clip
1306      \typeout{no clipping support in pctexhp}%
1307    \fi
1308    \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{pcl:#1}}}%
1309    \typeout{WARNING: pctexhp does not permit graphics to be scaled}}
1310 \@namedef{Gin@rule@.pcl}#1{{pcl}{}{#1}}
1311 \def\Gin@extensions{.pcl}
1312 %</pctexhp>
1313 %    \end{macrocode}
1315 % \section{pubps}
1316 % A \LaTeXe\ graphics driver file for Arbortext's PUBps;
1317 % information from Peter R Wilson |pwilson@rdrc.rpi.edu|.
1318 %    \begin{macrocode}
1319 %<*pubps>
1320 %    \end{macrocode}
1321 % \subsection{Rotation}
1322 %    \begin{macrocode}
1323 \def\Grot@start{\special{ps: gsave currentpoint
1324         currentpoint translate \Grot@angle\space
1325         rotate  neg exch neg exch translate}}
1326 \def\Grot@end{\special{ps: currentpoint grestore moveto}}
1327 %</pubps>
1328 %    \end{macrocode}
1330 % \section{dviwin}
1331 % A \LaTeXe\ graphics driver file for Hippocrates Sendoukas' dviwin
1332 %    \begin{macrocode}
1333 %<*dviwin>
1334 %    \end{macrocode}
1335 % \subsection{Graphic file inclusion}
1336 % Dviwin sorts out the graphics type itself based on extension.
1337 % They all use the same |\special|, so as far as graphics.sty is
1338 % concerned they are all the same `type'. Use `bmp' for the type
1339 % as that is as good a name as any. Make this the default.
1340 %    \begin{macrocode}
1341 \@namedef{Gin@rule@*}#1{{bmp}{}{#1}}
1342 \def\Ginclude@bmp#1{%
1343   \raise\Gin@req@height\hbox{%
1344    \special{anisoscale #1,
1345    \the\Gin@req@width\space \the\Gin@req@height}}}
1346 %    \end{macrocode}
1347 % The only exception is EPS files, as they may be read for BoundingBox
1348 %    \begin{macrocode}
1349 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1350 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1351 \let\Ginclude@eps\Ginclude@bmp
1352 %    \end{macrocode}
1353 % Add a few default extensions so |\includegraphics{a}|
1354 % will pick up |a.eps| or |a.wmf|.
1355 % This list can be reset with |\DeclareGraphicsExtensions|.
1356 % Other extensions not in the list may be used explicitly, eg
1357 % |\includegraphics{a.gif}| should work as long as dviwin has access
1358 % to a gif filter. If |.gif| is added using |\DeclareGraphicsExtensions|
1359 % then  |\includegraphics{a}| would also find |a.gif|.
1360 %    \begin{macrocode}
1361 \def\Gin@extensions{.eps,.ps,.wmf,.tif}
1362 %    \end{macrocode}
1364 %    \begin{macrocode}
1365 %</dviwin>
1366 %    \end{macrocode}
1368 % \section{ln}
1369 % A \LaTeXe\ graphics driver file for B Hamilton Kelly's ln03 driver.
1370 % Untested, but based on the graphics macros distributed with the
1371 % driver.
1372 %    \begin{macrocode}
1373 %<*ln>
1374 %    \end{macrocode}
1375 % \subsection{Graphic file inclusion}
1376 %    \begin{macrocode}
1377 \def\Ginclude@sixel#1{\special{ln03:sixel #1}}
1378 %</ln>
1379 %    \end{macrocode}
1381 % \section{truetex}
1382 % A \LaTeXe\ graphics driver file for Kinch `truetex' driver.
1383 %    \begin{macrocode}
1384 %<*truetex>
1385 %    \end{macrocode}
1387 % \subsection{Colour}
1388 % Uses the `color4' colour code.
1390 % \subsection{Graphic file inclusion}
1392 %  EPS File inclusion: DVIPS style.
1393 %    \begin{macrocode}
1394 \def\Ginclude@eps#1{%
1395  \message{<#1>}%
1396   \bgroup
1397   \def\@tempa{!}%
1398   \dimen@\Gin@req@width
1399   \dimen@ii.1bp%
1400   \divide\dimen@\dimen@ii
1401   \@tempdima\Gin@req@height
1402   \divide\@tempdima\dimen@ii
1403     \special{PSfile="#1"\space
1404       llx=\Gin@llx\space
1405       lly=\Gin@lly\space
1406       urx=\Gin@urx\space
1407       ury=\Gin@ury\space
1408       \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
1409       \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
1410       \ifGin@clip clip\fi}%
1411   \egroup}
1412 %    \end{macrocode}
1414 % bmp File Inclusion.
1415 %    \begin{macrocode}
1416 \def\Ginclude@bmp#1{%
1417  \message{<#1>}%
1418  \special{bmpfile #1}}
1419 %    \end{macrocode}
1421 % tif(f) File inclusion
1422 %    \begin{macrocode}
1423 \def\Ginclude@tiff#1{%
1424  \message{<#1>}%
1425  \special{tifffile #1}}
1426 %    \end{macrocode}
1428 % \subsection{Literal PostScript}
1429 % This is not supported, so uses `nops' code.
1431 % \subsection{Default Rules}
1432 % Support (e)ps, tif and bmp, default to eps.
1433 %    \begin{macrocode}
1434 \def\Gin@extensions{.eps,.ps}
1435 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1436 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1437 \@namedef{Gin@rule@.tif}#1{{tiff}{}{#1}}
1438 \@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
1439 %    \end{macrocode}
1441 %    \begin{macrocode}
1442 \@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
1443 %    \end{macrocode}
1445 %    \begin{macrocode}
1446 %</truetex>
1447 %    \end{macrocode}
1449 % \section{tcidvi}
1450 % A \LaTeXe\ graphics driver file for Scientific Word/Workplace.
1451 % Actually for the Kinch truetex driver, augmented with extra
1452 % |\special| handling with the DLL supplied with SW.
1453 %    \begin{macrocode}
1454 %<*tcidvi>
1455 %    \end{macrocode}
1457 % \subsection{Colour}
1458 % Uses the `color4' colour code.
1460 % The above colours are handled by the Kinch-supplied dll
1461 % The TCI dll adds support for |\colorbox|, but only grey scale
1462 % The code below accepts any color model, but only the red
1463 %  component is used.
1464 %    \begin{macrocode}
1465 \AtBeginDocument{\def\color@block#1#2#3{%
1466   {\rlap{\ifcolors@
1467       \@defaultunits\count@\current@color\@nnil
1468       \dimen@\count@\p@
1469       \divide\dimen@\@cclv
1470       \dimen@ii#2%
1471       \advance\dimen@ii#3%
1472       \lower#3\hbox{%
1473       \special{language "Scientific Word";%
1474                type "greybox";%
1475                greyscale \strip@pt\dimen@;%
1476                height \the\dimen@ii;%
1477                width \the#1;%
1478                depth 0pt;}}%
1479            \fi}}}}
1480 %    \end{macrocode}
1482 % \subsection{Graphic file inclusion}
1484 %  EPS File inclusion.
1485 %    \begin{macrocode}
1486 \def\Ginclude@eps#1{%
1487  \message{<#1>}%
1488  \raise\Gin@req@height\hbox{%
1489 %    \end{macrocode}
1491 % If the bounding box has been changed by a trim or viewport
1492 % key then need to calculate the crop ratios based on the original
1493 % bb coordinates. (This assumes that clip key is also used).
1494 %    \begin{macrocode}
1495   \ifx\Gin@ollx\@undefined
1496   \else
1497     \@tempdimb \Gin@ourx bp%
1498     \advance\@tempdimb-\Gin@ollx bp%
1499     \@tempdima\Gin@llx bp%
1500     \advance\@tempdima-\Gin@ollx bp%
1501     \Gscale@div\TCI@cropleft\@tempdima\@tempdimb
1502     \@tempdima\Gin@urx bp%
1503     \advance\@tempdima-\Gin@ollx bp%
1504     \Gscale@div\TCI@cropright\@tempdima\@tempdimb
1505     \@tempdimb \Gin@oury bp%
1506     \advance\@tempdimb-\Gin@olly bp%
1507     \@tempdima\Gin@lly bp%
1508     \advance\@tempdima-\Gin@olly bp%
1509     \Gscale@div\TCI@cropbottom\@tempdima\@tempdimb
1510     \@tempdima\Gin@ury bp%
1511     \advance\@tempdima-\Gin@olly bp%
1512     \Gscale@div\TCI@croptop\@tempdima\@tempdimb
1513   \fi
1514 %    \end{macrocode}
1516 %    \begin{macrocode}
1517     \special{%
1518       language \TCI@language;%
1519       type \TCI@type;%
1520       valid_file \TCI@validfile;%
1521       width \the\Gin@req@width;%
1522       height \the\Gin@req@height;%
1523       depth 0pt;%
1524       original-width \the\Gin@nat@width;%
1525       original-height \the\Gin@nat@height;%
1526       cropleft "\TCI@cropleft";%
1527       croptop "\TCI@croptop";%
1528       cropright "\TCI@cropright";%
1529       cropbottom "\TCI@cropbottom";%
1530       filename '#1';%
1531       \ifx\TCI@temp\@empty\else tempfilename \TCI@temp;\fi
1532       }}}
1533 %    \end{macrocode}
1535 % Default values so documents produced elsewhere should work
1536 %    \begin{macrocode}
1537 \def\TCI@language{"Scientific Word"}
1538 \def\TCI@type{"GRAPHIC"}
1539 \def\TCI@validfile{'F'}
1540 \def\TCI@cropleft{0}
1541 \def\TCI@croptop{1}
1542 \def\TCI@cropright{1}
1543 \def\TCI@cropbottom{0}
1544 \let\TCI@temp\@empty
1545 %    \end{macrocode}
1547 % Non PS Graphic files.
1549 % File inclusion macro is always the same. Use a different name though
1550 % as LaTeX thinks it can read eps files for BoundingBox.
1551 %    \begin{macrocode}
1552 \let\Ginclude@bmp\Ginclude@eps
1553 %    \end{macrocode}
1555 % \subsection{Literal PostScript}
1556 % This is not supported, so uses `nops' code.
1558 % \subsection{Default Rules}
1559 % SW always gives the full name with extension.
1560 % So leave this list empty.
1561 %    \begin{macrocode}
1562 \def\Gin@extensions{}
1563 %    \end{macrocode}
1565 % .ps .PS .eps .EPS are (E)PS
1566 % rest are `bmp' which is a catch all type for anything
1567 % that the import filter can handle.
1568 %    \begin{macrocode}
1569 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1570 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1571 \@namedef{Gin@rule@.PS}#1{{eps}{.PS}{#1}}
1572 \@namedef{Gin@rule@.EPS}#1{{eps}{.EPS}{#1}}
1573 %    \end{macrocode}
1575 %    \begin{macrocode}
1576 \@namedef{Gin@rule@*}#1{{bmp}{\Gin@ext}{#1}}
1577 %    \end{macrocode}
1579 %    \begin{macrocode}
1580 %</tcidvi>
1581 %    \end{macrocode}
1583 % \section{Literal Postscript}
1584 % Most drivers writing to PostScript allow some form of `literal'
1585 % PostScript |\special| that inserts code into the final PostScript
1586 % output. However Non-PS drivers can not support this (and some PS
1587 % one's can't either). The code here makes all these commands no ops.
1588 % Individual driver sections may define the commands to do something
1589 % useful.
1591 %    \begin{macrocode}
1592 %<*nops>
1593 %    \end{macrocode}
1595 % Raw PostScript code, no save/restore. Coordinate system unspecified.
1596 %    \begin{macrocode}
1597 \def\Gin@PS@raw#1{}
1598 %    \end{macrocode}
1600 % PostScript code, to be surrounded by save/restore by the driver.
1601 % Coordinate system standard PostScript, but with origin
1602 % at current (\TeX) position.
1603 %    \begin{macrocode}
1604 \def\Gin@PS@restored#1{}
1605 %    \end{macrocode}
1607 % PostScript code to be inserted in the Header section of the final
1608 % PostScript. Must be issued on the first page of a document.
1609 %    \begin{macrocode}
1610 \def\Gin@PS@literal@header#1{}
1611 %    \end{macrocode}
1613 % Name of external file, the contents of which are to be inserted in
1614 % the Header section of the final PostScript. Must be issued on the
1615 % first page of a document.
1616 %    \begin{macrocode}
1617 \def\Gin@PS@file@header#1{}
1618 %    \end{macrocode}
1620 %    \begin{macrocode}
1621 %</nops>
1622 %    \end{macrocode}
1624 % \section{Graphics Inclusion Rules}
1625 %    \begin{macrocode}
1626 %<*psrules>
1627 %    \end{macrocode}
1629 %    \begin{macrocode}
1630 \def\Gin@extensions{.eps,.ps}
1631 %    \end{macrocode}
1633 %    \begin{macrocode}
1634 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1635 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1636 %    \end{macrocode}
1638 %    \begin{macrocode}
1639 \@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
1640 %    \end{macrocode}
1642 %    \begin{macrocode}
1643 %</psrules>
1644 %<*psrulesZ>
1645 %    \end{macrocode}
1647 % \changes{v3.0j}{2014/04/23}
1648 %     {add .mps for metapost generated postscript to match pdftex graphics/4050}
1649 %    \begin{macrocode}
1650 \def\Gin@extensions{.eps,.ps,.eps.gz,.ps.gz,.eps.Z,.mps}
1651 %    \end{macrocode}
1653 % \changes{v3.0k}{2015/12/30}
1654 %     {compressed files don't require gunzip for dvips/xdvi}
1655 %    \begin{macrocode}
1656 \@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1657 \@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1658 \@namedef{Gin@rule@.mps}#1{{eps}{.mps}{#1}}
1659 \@namedef{Gin@rule@.pz}#1{{eps}{.bb}{#1}}
1660 \@namedef{Gin@rule@.eps.Z}#1{{eps}{.eps.bb}{#1}}
1661 \@namedef{Gin@rule@.ps.Z}#1{{eps}{.ps.bb}{#1}}
1662 \@namedef{Gin@rule@.ps.gz}#1{{eps}{.ps.bb}{#1}}
1663 \@namedef{Gin@rule@.eps.gz}#1{{eps}{.eps.bb}{#1}}
1664 %    \end{macrocode}
1666 %    \begin{macrocode}
1667 \@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
1668 %    \end{macrocode}
1670 %    \begin{macrocode}
1671 %</psrulesZ>
1672 %<*dosrules>
1673 %    \end{macrocode}
1675 %    \begin{macrocode}
1676 %<!psrulesZ>\def\Gin@extensions{.eps,.ps,.pcx,.bmp}
1677 %    \end{macrocode}
1679 %    \begin{macrocode}
1680 \@namedef{Gin@rule@.pcx}#1{{bmp}{}{#1}}
1681 \@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
1682 \@namedef{Gin@rule@.msp}#1{{bmp}{}{#1}}
1683 %    \end{macrocode}
1685 %    \begin{macrocode}
1686 %</dosrules>
1687 %<*macrules>
1688 %\def\Gin@extensions{{},.ps,.eps,.pict}
1689 %\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
1690 %\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
1691 \@namedef{Gin@rule@.pict}#1{{pict}{}{#1}}
1692 \@namedef{Gin@rule@.pntg}#1{{pntg}{}{#1}}
1693 %\@namedef{Gin@rule@}#1{{pict}{\relax}{#1}}
1694 %</macrules>
1695 %<*tiffrules>
1696 \@namedef{Gin@rule@.tif}#1{{tiff}{}{#1}}
1697 %</tiffrules>
1698 %    \end{macrocode}
1700 % \Finale