summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/graphics/drivers.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/graphics/drivers.dtx')
-rw-r--r--Master/texmf-dist/source/latex/graphics/drivers.dtx1662
1 files changed, 1662 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/graphics/drivers.dtx b/Master/texmf-dist/source/latex/graphics/drivers.dtx
new file mode 100644
index 00000000000..19f013d4ef6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/graphics/drivers.dtx
@@ -0,0 +1,1662 @@
+%
+% \iffalse
+%
+%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
+%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
+%%
+%% This file is part of the Standard LaTeX `Graphics Bundle'.
+%% It may be distributed under the terms of the LaTeX Project Public
+%% License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%<template, >\ProvidesFile{template.def}
+%<dvips, >\ProvidesFile{dvips.def}
+%<dvipsnames>\ProvidesFile{dvipsnam.def}
+%<dvipdf, >\ProvidesFile{dvipdf.def}
+%<emtex, >\ProvidesFile{emtex.def}
+%<dviwin, >\ProvidesFile{dviwin.def}
+%<dvipsone, >\ProvidesFile{dvipsone.def}
+%<pctexps, >\ProvidesFile{pctexps.def}
+%<pctex32, >\ProvidesFile{pctex32.def}
+%<pctexwin, >\ProvidesFile{pctexwin.def}
+%<pctexhp, >\ProvidesFile{pctexhp.def}
+%<truetex, >\ProvidesFile{truetex.def}
+%<tcidvi, >\ProvidesFile{tcidvi.def}
+%<oztex, >\ProvidesFile{oztex.def}
+%<textures, >\ProvidesFile{textures.def}
+%<dvialw, >\ProvidesFile{dvialw.def}
+%<dvilaser, >\ProvidesFile{dvilaser.def}
+%<psprint, >\ProvidesFile{psprint.def}
+%<dvi2ps, >\ProvidesFile{dvi2ps.def}
+%<pubps, >\ProvidesFile{pubps.def}
+%<dvitops, >\ProvidesFile{dvitops.def}
+%<ln, >\ProvidesFile{ln.def}
+%
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}
+ \ProvidesFile{drivers.dtx}
+%</driver>
+ [1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)]
+%
+%<*driver>
+ \documentclass{ltxdoc}
+ \GetFileInfo{drivers.dtx}
+ \begin{document}
+ \title{Graphics drivers for \LaTeXe\thanks
+ {Version \fileversion, revised \filedate}}
+ \author{Sebastian Rahtz and David Carlisle}
+ \date{\filedate}
+ \maketitle
+ \DocInput{drivers.dtx}
+ \end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{1541}
+%
+%
+% \providecommand\OzTeX{O\kern-.03em z\kern-.15em\TeX}
+%
+% \section{Driver files}
+%
+% This file implements some of the currently supported drivers.
+% If the driver you use is not in this list then a `.def' file
+% may be distributed with This graphics bundle,
+% or may be distributed with your driver.
+%
+% If not, send us some details of the driver's |\special| syntax, and
+% we will try to produce a suitable file.
+%
+% Note that some of these files are for drivers to which we have no
+% access, so they are untested. Please send any corrections to the
+% latexbugs address.
+%
+%
+%
+%
+% \StopEventually{}
+%
+%
+% \section{Colour}
+%
+% Most of the drivers that support colour use one of three methods.
+% \begin{itemize}
+% \item color1: `dvips' style colour specials.
+% \item color2: `textures' style colour specials.
+% \item color3: Colour implemented via literal PostScript specials.
+% \item color4: Colour implemented by specials that only support RGB
+% ie Red Green Blue specified as integers in the range
+% 0--255. Other models converted to this within \TeX.
+% \end{itemize}
+% Some drivers do not use any of these modules and have their own code.
+% Note that drivers using the `color3' code can not fully support the
+% \LaTeX\ colour commands.
+% \begin{macrocode}
+%<*color1|color2|color3|color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\c@lor@arg#1{%
+ \dimen@#1\p@
+ \ifdim\dimen@<\z@\dimen@\maxdimen\fi
+ \ifdim\dimen@>\p@
+ \PackageError{color}{Argument `#1' not in range [0,1]}\@ehd
+ \fi}
+% \end{macrocode}
+%
+% Need to make sure of a trailing .0 for textures. Apparently it
+% is OK to always add a . as 1.3. is accepted by textures.
+% textures gray special is reversed, so just use rgb instead.
+%
+% \begin{macrocode}
+\def\color@gray#1#2{%
+ \c@lor@arg{#2}%
+%<color4> \c@lor@rgb@RGB\@tempa
+%<color1> \edef#1{gray #2}%
+%<color2> \edef#1{rgb #2. #2. #2.}%
+%<color3> \edef#1{#2 setgray}%
+%<color4> \edef#1{\@tempa\@tempa\@tempa}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\color@cmyk#1#2{\c@lor@@cmyk#2\@@#1}
+\def\c@lor@@cmyk#1,#2,#3,#4\@@#5{%
+ \c@lor@arg{#4}%
+%<color4> \dimen@ii#4\p@
+ \c@lor@arg{#1}%
+%<color4> \c@lor@cmyk@RGB\@tempa
+ \c@lor@arg{#2}%
+%<color4> \c@lor@cmyk@RGB\@tempb
+ \c@lor@arg{#3}%
+%<color4> \c@lor@cmyk@RGB\@tempc
+%<color1> \edef#5{cmyk #1 #2 #3 #4}%
+%<color2> \edef#5{cmyk #1. #2. #3. #4.}%
+%<color3> \edef#5{#1 #2 #3 #4 setcmykcolor}%
+%<color4> \edef#5{\@tempa\@tempb\@tempc}%
+ }
+% \end{macrocode}
+%
+% A 0--1 range value will have been left in |\dimen@| by |\c@lor@arg|.
+% The black value (0--1) will be stored in |\dimen@ii|.
+% Covert to 0--255 integer, and leave in |#1|.
+% \begin{macrocode}
+%<*color4>
+\def\c@lor@cmyk@RGB#1{%
+ \advance\dimen@-\p@
+ \advance\dimen@\dimen@ii
+ \dimen@-\@cclv\dimen@
+ \divide\dimen@\p@
+ \count@\ifdim\dimen@<\z@\z@\else\dimen@\fi
+ \edef#1{\the\count@\space}}
+%</color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\color@rgb#1#2{\c@lor@@rgb#2\@@#1}
+\def\c@lor@@rgb#1,#2,#3\@@#4{%
+ \c@lor@arg{#1}%
+%<color4> \c@lor@rgb@RGB\@tempa
+ \c@lor@arg{#2}%
+%<color4> \c@lor@rgb@RGB\@tempb
+ \c@lor@arg{#3}%
+%<color4> \c@lor@rgb@RGB\@tempc
+%<color1> \edef#4{rgb #1 #2 #3}%
+%<color2> \edef#4{rgb #1. #2. #3.}%
+%<color3> \edef#4{#1 #2 #3 setrgbcolor}%
+%<color4> \edef#4{\@tempa\@tempb\@tempc}%
+ }
+% \end{macrocode}
+%
+% A 0--1 range value will have been left in |\dimen@| by |\c@lor@arg|.
+% Convert to 0--255 integer, and leave in |#1|.
+% \begin{macrocode}
+%<*color4>
+\def\c@lor@rgb@RGB#1{%
+ \dimen@\@cclv\dimen@
+ \count@\dimen@
+ \divide\count@\p@
+ \edef#1{\the\count@\space}}
+%</color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\color@RGB#1#2{\c@lor@@RGB#2\@@#1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\c@lor@@RGB#1,#2,#3\@@#4{%
+%<!color4> \c@lor@RGB@rgb{#1}\@tempa
+%<!color4> \c@lor@RGB@rgb{#2}\@tempb
+%<!color4> \c@lor@RGB@rgb{#3}\@tempc
+%<!color4> \c@lor@@rgb\@tempa,\@tempb,\@tempc\@@#4%
+%<color4> \edef#4{#1 #2 #3}%
+ }
+% \end{macrocode}
+% % Convert 0--255 integer, |#1|, to 0--1 real, and leave in |#2|.
+% \begin{macrocode}
+%<*!color4>
+\def\c@lor@RGB@rgb#1#2{%
+ \dimen@#1\p@
+ \divide\dimen@\@cclv
+ \edef#2{\strip@pt\dimen@}}
+%</!color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*color1|color3>
+\def\color@hsb#1#2{\c@lor@@hsb#2\@@#1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\c@lor@@hsb#1,#2,#3\@@#4{%
+ \c@lor@arg{#1}%
+ \c@lor@arg{#2}%
+ \c@lor@arg{#3}%
+%<color1> \edef#4{hsb #1 #2 #3}%
+%<color3> \edef#4{#1 #2 #3 sethsbcolor}%
+ }
+%</color1|color3>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\color@named#1#2{\c@lor@@named#2,,\@@#1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\c@lor@@named#1,#2,#3\@@#4{%
+ \@ifundefined{col@#1}%
+ {\PackageError{color}{Undefined color `#1'}\@ehd}%
+%<color1&!dvipsone> {\edef#4{ #1}}%
+%<color2> {\edef#4{ #1 \if!#2!\else #2.\fi}}%
+%<color3|dvipsone|color4> {\edef#4{\csname col@#1\endcsname}}%
+ }
+% \end{macrocode}
+%
+% Conversion from |\special| syntax to PostScript (for PSTricks).
+% \begin{macrocode}
+%<*color1|color2>
+\def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@}
+%</color1|color2>
+%<*color3>
+\def\c@lor@to@ps#1\@@{#1}
+%</color3>
+%<*color4>
+\def\c@lor@to@ps#1#2 #3 #4\@@{%
+ #1#2 255 div #3 255 div #4 255 div setrgbcolor}
+%</color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*color1>
+\def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end}
+\def\c@lor@ps@rgb#1\@@{#1 setrgbcolor}
+\def\c@lor@ps@hsb#1\@@{#1 sethsbcolor}
+\def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor}
+\def\c@lor@ps@gray#1\@@{#1 setgray}
+%</color1>
+%<*color2>
+\def\c@lor@to@ps@#1 #2\@@{\csname c@lor@ps@#1@\endcsname#2 \@@}
+\def\c@lor@ps@#1 #2\@@{%
+ \expandafter\expandafter\expandafter
+ \c@lor@to@ps@\csname col@#1\expandafter\endcsname\space#2. \@@{#1}}
+\def\c@lor@ps@rgb#1. #2. #3. #4\@@{#1 #2 #3 setrgbcolor}
+\def\c@lor@ps@rgb@#1. #2. #3. #4. #5\@@#6{#1 #2 #3 setrgbcolor}
+\def\c@lor@ps@cmyk#1. #2. #3. #4. #5. #6\@@{#1 #2 #3 #4 setcmykcolor}
+\def\c@lor@ps@cmyk@#1. #2. #3. #4. #5. #6\@@#7{%
+ #1 #2 #3 #4 (#7) findcustomcmykcolor
+ \if!\@firstofone#5!1 \else#5 \fi setcustomcolor}
+%</color2>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<color1&!dvipsone>\def\current@color{ Black}
+%<color1&dvipsone>\def\current@color{gray 0}
+%<color2>\def\current@color{rgb 0. 0. 0.}
+%<color3>\def\current@color{0 setgray}
+%<color4>\def\current@color{0 0 0}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*color1>
+\def\set@color{%
+%<!dvipsone&!dvipdf> \special{color push \current@color
+%<dvipsone> \special{color push}\special{color \current@color
+%<dvipdf> \special{pdf: /C \current@color\space<<
+ }\aftergroup\reset@color}
+\def\reset@color{\special{%
+%<!dvipdf> color pop}}
+%<dvipdf> pdf: /C >> }}
+\def\set@page@color{\special{%
+%<!dvipdf> background \current@color}}
+%<dvipdf> pdf: /BG \current@color}}
+\def\define@color@named#1#2{%
+%<!dvipsone> \expandafter\let\csname col@#1\endcsname\@nnil}
+%<dvipsone> \expandafter\edef\csname col@#1\endcsname{#2}}
+%</color1>
+%<*color2>
+\def\set@color{%
+ \special{color push}%
+ \special{color \current@color}%
+ \aftergroup\reset@color}
+\def\reset@color{\special{color pop}}
+\def\set@page@color{\c@lor@special\sixt@@n{background \current@color}}
+\def\define@color@named#1#2{%
+ \AtBeginDvi{\special{color define #1 #2}}%
+ \expandafter\edef\csname col@#1\endcsname{#2}}
+%</color2>
+%<*color3>
+\def\set@color{%
+ \Gin@PS@raw{\current@color}\aftergroup\reset@color}
+\def\reset@color{\Gin@PS@raw{\current@color}}
+%</color3>
+%<*color4>
+\def\set@color{%
+ \special{textcolor: \current@color}\aftergroup\reset@color}
+\def\reset@color{\special{textcolor: \current@color}}
+%</color4>
+%<*color3|color4>
+\def\set@page@color{%
+ \c@lor@special\sixt@@n{background color ignored: \current@color}}
+\def\define@color@named#1#2{%
+ \expandafter\edef\csname col@#1\endcsname{#2}}
+%</color3|color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</color1|color2|color3|color4>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*colorfix>
+\AtBeginDocument{%
+ \let\@ldc@l@r\color
+ \def\color{\if@inlabel\leavevmode\fi\@ldc@l@r}%
+ \let\@lduseb@x\usebox
+ \def\usebox#1{\@lduseb@x{#1}\set@color}}
+%</colorfix>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*dvipsnames>
+\DefineNamedColor{named}{GreenYellow} {cmyk}{0.15,0,0.69,0}
+\DefineNamedColor{named}{Yellow} {cmyk}{0,0,1,0}
+\DefineNamedColor{named}{Goldenrod} {cmyk}{0,0.10,0.84,0}
+\DefineNamedColor{named}{Dandelion} {cmyk}{0,0.29,0.84,0}
+\DefineNamedColor{named}{Apricot} {cmyk}{0,0.32,0.52,0}
+\DefineNamedColor{named}{Peach} {cmyk}{0,0.50,0.70,0}
+\DefineNamedColor{named}{Melon} {cmyk}{0,0.46,0.50,0}
+\DefineNamedColor{named}{YellowOrange} {cmyk}{0,0.42,1,0}
+\DefineNamedColor{named}{Orange} {cmyk}{0,0.61,0.87,0}
+\DefineNamedColor{named}{BurntOrange} {cmyk}{0,0.51,1,0}
+\DefineNamedColor{named}{Bittersweet} {cmyk}{0,0.75,1,0.24}
+\DefineNamedColor{named}{RedOrange} {cmyk}{0,0.77,0.87,0}
+\DefineNamedColor{named}{Mahogany} {cmyk}{0,0.85,0.87,0.35}
+\DefineNamedColor{named}{Maroon} {cmyk}{0,0.87,0.68,0.32}
+\DefineNamedColor{named}{BrickRed} {cmyk}{0,0.89,0.94,0.28}
+\DefineNamedColor{named}{Red} {cmyk}{0,1,1,0}
+\DefineNamedColor{named}{OrangeRed} {cmyk}{0,1,0.50,0}
+\DefineNamedColor{named}{RubineRed} {cmyk}{0,1,0.13,0}
+\DefineNamedColor{named}{WildStrawberry}{cmyk}{0,0.96,0.39,0}
+\DefineNamedColor{named}{Salmon} {cmyk}{0,0.53,0.38,0}
+\DefineNamedColor{named}{CarnationPink} {cmyk}{0,0.63,0,0}
+\DefineNamedColor{named}{Magenta} {cmyk}{0,1,0,0}
+\DefineNamedColor{named}{VioletRed} {cmyk}{0,0.81,0,0}
+\DefineNamedColor{named}{Rhodamine} {cmyk}{0,0.82,0,0}
+\DefineNamedColor{named}{Mulberry} {cmyk}{0.34,0.90,0,0.02}
+\DefineNamedColor{named}{RedViolet} {cmyk}{0.07,0.90,0,0.34}
+\DefineNamedColor{named}{Fuchsia} {cmyk}{0.47,0.91,0,0.08}
+\DefineNamedColor{named}{Lavender} {cmyk}{0,0.48,0,0}
+\DefineNamedColor{named}{Thistle} {cmyk}{0.12,0.59,0,0}
+\DefineNamedColor{named}{Orchid} {cmyk}{0.32,0.64,0,0}
+\DefineNamedColor{named}{DarkOrchid} {cmyk}{0.40,0.80,0.20,0}
+\DefineNamedColor{named}{Purple} {cmyk}{0.45,0.86,0,0}
+\DefineNamedColor{named}{Plum} {cmyk}{0.50,1,0,0}
+\DefineNamedColor{named}{Violet} {cmyk}{0.79,0.88,0,0}
+\DefineNamedColor{named}{RoyalPurple} {cmyk}{0.75,0.90,0,0}
+\DefineNamedColor{named}{BlueViolet} {cmyk}{0.86,0.91,0,0.04}
+\DefineNamedColor{named}{Periwinkle} {cmyk}{0.57,0.55,0,0}
+\DefineNamedColor{named}{CadetBlue} {cmyk}{0.62,0.57,0.23,0}
+\DefineNamedColor{named}{CornflowerBlue}{cmyk}{0.65,0.13,0,0}
+\DefineNamedColor{named}{MidnightBlue} {cmyk}{0.98,0.13,0,0.43}
+\DefineNamedColor{named}{NavyBlue} {cmyk}{0.94,0.54,0,0}
+\DefineNamedColor{named}{RoyalBlue} {cmyk}{1,0.50,0,0}
+\DefineNamedColor{named}{Blue} {cmyk}{1,1,0,0}
+\DefineNamedColor{named}{Cerulean} {cmyk}{0.94,0.11,0,0}
+\DefineNamedColor{named}{Cyan} {cmyk}{1,0,0,0}
+\DefineNamedColor{named}{ProcessBlue} {cmyk}{0.96,0,0,0}
+\DefineNamedColor{named}{SkyBlue} {cmyk}{0.62,0,0.12,0}
+\DefineNamedColor{named}{Turquoise} {cmyk}{0.85,0,0.20,0}
+\DefineNamedColor{named}{TealBlue} {cmyk}{0.86,0,0.34,0.02}
+\DefineNamedColor{named}{Aquamarine} {cmyk}{0.82,0,0.30,0}
+\DefineNamedColor{named}{BlueGreen} {cmyk}{0.85,0,0.33,0}
+\DefineNamedColor{named}{Emerald} {cmyk}{1,0,0.50,0}
+\DefineNamedColor{named}{JungleGreen} {cmyk}{0.99,0,0.52,0}
+\DefineNamedColor{named}{SeaGreen} {cmyk}{0.69,0,0.50,0}
+\DefineNamedColor{named}{Green} {cmyk}{1,0,1,0}
+\DefineNamedColor{named}{ForestGreen} {cmyk}{0.91,0,0.88,0.12}
+\DefineNamedColor{named}{PineGreen} {cmyk}{0.92,0,0.59,0.25}
+\DefineNamedColor{named}{LimeGreen} {cmyk}{0.50,0,1,0}
+\DefineNamedColor{named}{YellowGreen} {cmyk}{0.44,0,0.74,0}
+\DefineNamedColor{named}{SpringGreen} {cmyk}{0.26,0,0.76,0}
+\DefineNamedColor{named}{OliveGreen} {cmyk}{0.64,0,0.95,0.40}
+\DefineNamedColor{named}{RawSienna} {cmyk}{0,0.72,1,0.45}
+\DefineNamedColor{named}{Sepia} {cmyk}{0,0.83,1,0.70}
+\DefineNamedColor{named}{Brown} {cmyk}{0,0.81,1,0.60}
+\DefineNamedColor{named}{Tan} {cmyk}{0.14,0.42,0.56,0}
+\DefineNamedColor{named}{Gray} {cmyk}{0,0,0,0.50}
+\DefineNamedColor{named}{Black} {cmyk}{0,0,0,1}
+\DefineNamedColor{named}{White} {cmyk}{0,0,0,0}
+%</dvipsnames>
+% \end{macrocode}
+%
+% \section{dvips}
+% A \LaTeXe\ graphics driver file for Tom Rokicki's \emph{dvips}
+% driver; tested with version 5.58f.
+%
+% \begin{macrocode}
+%<*dvips>
+% \end{macrocode}
+%
+% \subsection{Colour}
+% Uses the generic `color1' code.
+%
+% \subsection{File inclusion}
+%
+% \begin{macro}{\Ginclude@eps}
+% |#1| input file (or command)
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \bgroup
+% \end{macrocode}
+% \emph{dvips} likes to work with its own pixel resolution, so
+% mangle the sizes slightly.
+% \begin{macrocode}
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{PSfile="#1"\space
+ llx=\Gin@llx\space
+ lly=\Gin@lly\space
+ urx=\Gin@urx\space
+ ury=\Gin@ury\space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
+ \ifGin@clip clip\fi}%
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Ginclude@bmp}
+% |#1| input file; if zero size is requested, the graphic will
+% come at `natural' size.
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+ \message{<#1>}%
+ \dimen@\Gin@req@height
+ \advance\dimen@ by-\Gin@lly bp
+ \kern-\Gin@llx bp\raise\Gin@req@height\hbox{%
+ \ifdim\Gin@urx bp=\z@
+ \ifdim\Gin@ury bp=\z@
+ \special{em: graph #1}%
+ \else
+ \special{em: graph #1,\Gin@urx bp}%
+ \fi
+ \else
+ \special{em: graph #1,\Gin@urx bp,\Gin@ury bp}%
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Ginclude@pict}
+% \begin{macro}{\Ginclude@pntg}
+% \begin{macro}{\oztex@include}
+% PICT/PNTG format from the Mac. Actually only currently supported by
+% the version of dvips distributed with \OzTeX, and with the built in
+% \OzTeX\ drivers, but put here anyway as it is not much code and
+% increases portability between the systems as now |[dvips]| and
+% |[oztex]| share the same back end.
+% \begin{macrocode}
+\def\oztex@include#1#2{%
+ \dimen@1bp%
+ \divide\Gin@req@width\dimen@
+ \divide\Gin@req@height\dimen@
+ \special{#1=#2\space
+ \@width=\number\Gin@req@width \space
+ \@height=\number\Gin@req@height}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Ginclude@pntg{\oztex@include{pntg}}
+\def\Ginclude@pict{\oztex@include{pict}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Rotation}
+% \begin{macrocode}
+\def\Grot@start{%
+ \special{ps: gsave currentpoint
+ currentpoint translate \Grot@angle\space neg
+ rotate neg exch neg exch translate}}
+\def\Grot@end{\special{ps: currentpoint grestore moveto}}
+% \end{macrocode}
+% \subsection{Scaling}
+% \begin{macrocode}
+\def\Gscale@start{\special{ps: currentpoint currentpoint translate
+ \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
+\def\Gscale@end{\special{ps: currentpoint currentpoint translate
+ 1 \Gscale@x\space div 1 \Gscale@y\space div scale
+ neg exch neg exch translate}}
+% \end{macrocode}
+%
+% \section{Literal Postscript}
+%
+% Raw PostScript code, no save/restore.
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps: #1}}
+% \end{macrocode}
+%
+% PostScript code, to be surrounded by save/restore by the driver.
+% Coordinate system standard PostScript, but with origin
+% at current (\TeX) position.
+% \begin{macrocode}
+\def\Gin@PS@restored#1{\special{" #1}}
+% \end{macrocode}
+%
+% PostScript code to be inserted in the Header section of the final
+% PostScript. Must be issued on the first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}}
+% \end{macrocode}
+%
+% Name of external file, the contents of which are to be inserted in
+% the Header section of the final PostScript. Must be issued on the
+% first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dvips>
+% \end{macrocode}
+%
+%
+% \section{dvipdf}
+% A \LaTeXe\ graphics driver file for \emph{dvipdf} driver.
+%
+% \begin{macrocode}
+%<*dvipdf>
+% \end{macrocode}
+%
+% \subsection{Colour}
+% Uses the generic `color1' code.
+%
+% \subsection{File inclusion}
+%
+% \begin{macro}{\Ginclude@eps}
+% |#1| input file (or command)
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \bgroup
+% \end{macrocode}
+% \emph{dvips} likes to work with its own pixel resolution, so
+% mangle the sizes slightly.
+% \begin{macrocode}
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{PSfile="#1"\space
+ llx=\Gin@llx\space
+ lly=\Gin@lly\space
+ urx=\Gin@urx\space
+ ury=\Gin@ury\space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
+ \ifGin@clip clip\fi}%
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Ginclude@bmp}
+% |#1| input file; if zero size is requested, the graphic will
+% come at `natural' size.
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+ \message{<#1>}%
+ \dimen@\Gin@req@height
+ \advance\dimen@ by-\Gin@lly bp
+ \kern-\Gin@llx bp\raise\Gin@req@height\hbox{%
+ \ifdim\Gin@urx bp=\z@
+ \ifdim\Gin@ury bp=\z@
+ \special{pdf: /GRAPH #1}%
+ \else
+ \special{pdf: /GRAPH #1 \number\Gin@req@width sp}%
+ \fi
+ \else
+ \special{pdf: /GRAPH #1 \number\Gin@req@width sp
+ \number\Gin@req@height sp}%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Rotation}
+% \begin{macrocode}
+\def\Grot@start{%
+\special{pdf: /ROT \Grot@angle\space << }}
+\def\Grot@end{\special{pdf: /ROT >> }}
+% \end{macrocode}
+%
+% \subsection{Scaling}
+% \begin{macrocode}
+\def\Gscale@start{\special{pdf: /S \Gscale@x\space \Gscale@y\space << }}
+\def\Gscale@end{\special{pdf: /S \space >> }}
+% \end{macrocode}
+%
+% \section{Literal Postscript}
+%
+% Raw PostScript code, no save/restore.
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps: #1}}
+% \end{macrocode}
+%
+% PostScript code, to be surrounded by save/restore by the driver.
+% Coordinate system standard PostScript, but with origin
+% at current (\TeX) position.
+% \begin{macrocode}
+\def\Gin@PS@restored#1{\special{" #1}}
+% \end{macrocode}
+%
+% PostScript code to be inserted in the Header section of the final
+% PostScript. Must be issued on the first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}}
+% \end{macrocode}
+%
+% Name of external file, the contents of which are to be inserted in
+% the Header section of the final PostScript. Must be issued on the
+% first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
+% \end{macrocode}
+%
+% \subsection{File extensions}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@.msp}#1{{bmp}{.bb}{#1}}
+\@namedef{Gin@rule@.jpg}#1{{bmp}{.bb}{#1}}
+\@namedef{Gin@rule@.bmp}#1{{bmp}{.bb}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dvipdf>
+% \end{macrocode}
+%
+% \section{\OzTeX}
+%
+% A \LaTeXe\ graphics driver file for \OzTeX\
+% (versions 1.42 and later),
+% by Andrew Trevorrow.
+% \begin{macrocode}
+%<*oztex>
+% \end{macrocode}
+%\subsection{Graphics inclusion}
+% \begin{macrocode}
+\def\Ginclude@eps{\Oztex@Include{epsf}}
+\def\Ginclude@pntg{\Oztex@Include{pntg}}
+\def\Ginclude@pict{\Oztex@Include{pict}}
+\def\Oztex@Include#1#2{%
+ \ifGin@clip
+ \typeout{No clipping support in OzTeX}%
+ \fi
+ \divide\Gin@req@width by 65781% convert sp to bp
+ \divide\Gin@req@height by 65781%
+ \special{#1=#2\space
+ width=\number\Gin@req@width \space
+ height=\number\Gin@req@height
+ }%
+}
+%</oztex>
+% \end{macrocode}
+%\section{Textures}
+% A \LaTeXe\ graphics driver file for Blue Sky's Textures
+%
+% \textbf{WARNING! There is ongoing work to produce a new version of
+% the textures support. Do not rely on anything in this file being in
+% the next version!}
+%
+%
+% \begin{macrocode}
+%<*textures>
+% \end{macrocode}
+% \subsection{Graphics inclusion}
+%
+%
+% \begin{macrocode}
+\PackageInfo{graphics/color}
+ {This file uses the advanced color support\MessageBreak
+ available in textures1.7\MessageBreak
+ If you are using color with an earlier version\MessageBreak
+ of textures, edit graphics.ins where marked,\MessageBreak
+ and re-latex graphics.ins.\MessageBreak\MessageBreak
+ If you are using textures1.7\MessageBreak
+ you may want to delete this warning\MessageBreak
+ from textures.def.\MessageBreak\MessageBreak
+ The code for scaling/rotation and file inclusion\MessageBreak
+ in this file is still rudimentary, and does not\MessageBreak
+ use textures' full capabilities.\MessageBreak\MessageBreak
+ A new textures.def is currently being developed\@gobble}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\def\Ginclude@eps{\Textures@Include{illustration}}
+\def\Ginclude@pict{\Textures@Include{pictfile}}
+\def\Textures@Include#1#2{%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa
+ \let\Gin@scaley\Gin@scalex
+ \else
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
+ \fi
+ \setlength\@tempdima{\Gin@scalex pt}%
+ \setlength\@tempdimb{\Gin@scaley pt}%
+ \ifdim\@tempdima>\@tempdimb
+ \let\Gin@scalex\Gin@scaley
+ \fi
+ \ifGin@clip
+ \typeout{no clipping support in Textures}%
+ \fi
+ \@tempdimb=1000sp%
+ \setlength\@tempdima{\Gin@scalex\@tempdimb}%
+ \special{#1 #2\space scaled \number\@tempdima}%
+}
+% \end{macrocode}
+% \subsection{Rotation}
+% This code was written when no unprotected postscript code was allowed;
+% it could almost certainly be rewritten now with `rawpostscript'.
+% \begin{macrocode}
+\def\Grot@start{\special{postscript
+ 0 0 transform
+ grestore
+ matrix currentmatrix
+ 3 1 roll
+ itransform
+ dup 3 -1 roll
+ dup 4 1 roll exch
+ translate
+ \Grot@angle\space neg rotate
+ neg exch neg exch translate
+ gsave}}
+\def\Grot@end{\special{postscript grestore setmatrix gsave}}
+% \end{macrocode}
+% \subsection{Colour}
+% This will only work for versions 1.6 and Version 1.7 uses `color2'.
+% \begin{macrocode}
+%<color3>\def\Gin@PS@raw#1{\special{rawpostscript #1}}
+%</textures>
+% \end{macrocode}
+%
+% \section{dvialw}
+% A \LaTeXe\ graphics driver file for dvialw, by Nelson Beebe
+% \begin{macrocode}
+%<*dvialw>
+% \end{macrocode}
+% \subsection{Rotation}
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa
+ \let\Gin@scaley\Gin@scalex
+ \else
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
+ \fi
+ \ifGin@clip
+ \typeout{no clipping support in dvialw}%
+ \fi
+ \special{language "PS",
+ literal "\Gin@scalex\space
+ \Gin@scaley\space scale",
+ position = "bottom left",
+ include "#1\space"}%
+}
+%</dvialw>
+% \end{macrocode}
+% \section{emtex}
+% A \LaTeXe\ graphics driver file for Eberhard Mattes' emTeX
+% \begin{macrocode}
+%<*emtex>
+% \end{macrocode}
+% \subsection{Graphics file inclusion}
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+ \raise\Gin@req@height\hbox{\special{em:graph #1}}%
+\typeout{WARNING: emtex does not permit graphics to be scaled}%
+}
+%</emtex>
+% \end{macrocode}
+% \section{dvilaser/ps}
+% A \LaTeXe\ graphics driver file for Arbortext's dvilaser/ps
+% \begin{macrocode}
+%<*dvilaser>
+% \end{macrocode}
+%\subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+\ifGin@clip
+ \typeout{no clipping support in dvilaser/ps}%
+\fi
+\special{ps: epsfile #1\space \the\Gin@req@width}%
+}
+%</dvilaser>
+% \end{macrocode}
+% \section{psprint}
+% A \LaTeXe\ graphics driver file for Trevorrow's psprint
+% \begin{macrocode}
+%<*psprint>
+% \end{macrocode}
+%\subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa
+ \let\Gin@scaley\Gin@scalex
+ \else
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
+ \fi
+ \ifGin@clip
+ \typeout{no clipping support in psprint}%
+ \fi
+ \special{#1\space
+ \Gin@scalex\space \Gin@scaley\space scale
+ \Gin@llx\space neg
+ \Gin@lly \space neg translate
+}%
+}
+%</psprint>
+% \end{macrocode}
+% \section{dvipsone}
+%
+% A \LaTeXe\ graphics driver file for Y\&Y's dvipsone
+% \begin{macrocode}
+%<*dvipsone>
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}
+%
+% PostScript Files.
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \bgroup
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{PSfile="#1"\space
+ llx=\Gin@llx\space
+ lly=\Gin@lly\space
+ urx=\Gin@urx\space
+ ury=\Gin@ury\space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
+ \ifGin@clip clip\fi}%
+ \egroup}
+% \end{macrocode}
+%
+% Tiff files.
+% \begin{macrocode}
+\def\Ginclude@tiff#1{%
+\message{<#1>}%
+ \special{insertimage: #1 \number\Gin@req@width\space
+ \number\Gin@req@height}}
+% \end{macrocode}
+%
+% Windows Metafiles.
+% \begin{macrocode}
+\def\Ginclude@wmf#1{%
+ \message{<#1>}%
+ \special{insertmf: #1 0 0 \number\Gin@req@width\space
+ \number\Gin@req@height}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps: #1}}
+% \end{macrocode}
+%
+% \subsection{Rotation}
+% \begin{macrocode}
+\def\Grot@start{%
+ \special{ps: gsave currentpoint
+ currentpoint translate \Grot@angle\space
+ rotate neg exch neg exch translate}}
+\def\Grot@end{%
+ \special{ps: currentfont currentpoint grestore moveto setfont}}
+% \end{macrocode}
+%
+% \subsection{Scaling}
+% \begin{macrocode}
+\def\Gscale@start{\special{ps: currentpoint currentpoint translate
+ \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
+\def\Gscale@end{\special{ps: currentpoint currentpoint translate
+ 1 \Gscale@x\space div 1 \Gscale@y\space div scale
+ neg exch neg exch translate}}
+% \end{macrocode}
+%
+% \subsection{File Extensions}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
+\@namedef{Gin@rule@.clp}#1{{wmf}{}{#1}}
+% \end{macrocode}
+%
+% \section{Literal Postscript}
+%
+% Raw PostScript code, no save/restore.
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps: #1}}
+% \end{macrocode}
+%
+% PostScript code, to be surrounded by save/restore by the driver.
+% Coordinate system standard PostScript, but with origin
+% at current (\TeX) position.
+% \begin{macrocode}
+\def\Gin@PS@restored#1{\special{" #1}}
+% \end{macrocode}
+%
+% PostScript code to be inserted in the Header section of the final
+% PostScript. Must be issued on the first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@literal@header#1{\AtBeginDvi{\special{headertext=#1}}}
+% \end{macrocode}
+%
+% Name of external file, the contents of which are to be inserted in
+% the Header section of the final PostScript. Must be issued on the
+% first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dvipsone>
+% \end{macrocode}
+%
+% \section{dviwindo}
+% A \LaTeXe\ graphics driver file for Y\&Y's dviwindo.
+%
+% This driver now uses the same file as |dvipsone|.
+%
+% \section{dvitops}
+% A \LaTeXe\ graphics driver file for James Clark's dvitops
+% \begin{macrocode}
+%<*dvitops>
+% \end{macrocode}
+% \subsection{Rotation}
+% \begin{macrocode}
+\newcount\Grot@count
+\Grot@count=\@ne
+\def\Grot@start{\special{dvitops: origin
+ rot\the\@tempdima}%
+\special{dvitops: begin rot\the\Grot@count}}%
+\def\Grot@end{\special{dvitops: end}%
+\special{dvitops: rotate rot\the\Grot@count \space
+ \Grot@angle}%
+\global\advance\Grot@count by\@ne}%
+% \end{macrocode}
+% \subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+% These cause an arithmetic overflow, so I've commented them
+% out. Presumably they were there for some reason.
+% Any dvitops users out there??
+% \multiply\Gin@req@width by \@m
+% \multiply\Gin@req@height by \@m
+\ifGin@clip
+ \typeout{no clipping support in dvitops}%
+\fi
+\special{import #1\space \the\Gin@req@width\space
+ \the\Gin@req@height\space fill}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dvitops>
+% \end{macrocode}
+%
+%\section{dvi2ps}
+% A \LaTeXe\ graphics driver file for original dvi2ps
+% \begin{macrocode}
+%<*dvi2ps>
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \def\@tempa{!}%
+ \ifx\Gin@scaley\@tempa
+ \let\Gin@scaley\Gin@scalex
+ \else
+ \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi
+ \fi
+ \ifGin@clip
+ \typeout{no clipping support in dvi2ps}%
+ \fi
+ \special{psfile=#1\space
+ hscale=\Gin@scalex\space 1000 mul
+ vscale=\Gin@scaley\space 1000 mul}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dvi2ps>
+% \end{macrocode}
+%
+% \section{pctexps}
+% A \LaTeXe\ graphics driver file for Personal TeX's PTI Laser/PS;
+% from information supplied by Lance Carnes and Tao Wang
+% |<pti@crl.com>|.
+% \begin{macrocode}
+%<*pctexps>
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}
+%
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexps}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{ps:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Ginclude@ps#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexps}%
+ \fi
+ \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{ps:#1}}}%
+ \typeout{^^J%
+---------------------------------------------------------^^J%
+.ps graphics without bounding box information cannot be^^J%
+scaled. If the file actually contains the information,^^J%
+please rename the file to .eps file extension.^^J%
+---------------------------------------------------------^^J}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps}
+\@namedef{Gin@rule@.ps}#1{{ps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps::#1}}
+\def\Grot@start{%
+ \special{ps::gsave currentpoint
+ currentpoint translate \Grot@angle\space
+ rotate neg exch neg exch translate}}
+\def\Grot@end{\special{ps:: currentpoint grestore moveto}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gscale@start{\special{ps:: currentpoint currentpoint translate
+ \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
+\def\Gscale@end{\special{ps:: currentpoint currentpoint translate
+ 1 \Gscale@x\space div 1 \Gscale@y\space div scale
+ neg exch neg exch translate}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pctexps>
+% \end{macrocode}
+%
+% \section{pctex32}
+% A \LaTeXe\ graphics driver file for Personal TeX's PC TeX for 32 bit
+% Windows; Code supplied by Tao Wang |<pti@crl.com>|.
+%
+% \subsection{Colour}
+% Uses the generic `color1' code.
+%
+% \begin{macrocode}
+%<*pctex32>
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}%
+% \begin{macrocode}
+% including PostScript graphics
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \bgroup
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{PSfile="#1"\space
+ llx=\Gin@llx\space
+ lly=\Gin@lly\space
+ urx=\Gin@urx\space
+ ury=\Gin@ury\space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
+ \ifGin@clip clip\fi}%
+ \egroup}
+% \end{macrocode}
+%
+% including BMP graphics
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support for BMP graphics in PCTeX32}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{bmp:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% including WMF graphics
+% \begin{macrocode}
+\def\Ginclude@wmf#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support for WMF graphics in PCTeX32}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{wmf:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% \subsection{Scaling and Rotating}
+% PostScript rotation and scaling
+% \begin{macrocode}
+\def\Grot@start{%
+ \special{ps:: gsave currentpoint
+ currentpoint translate \Grot@angle\space neg
+ rotate neg exch neg exch translate}}
+\def\Grot@end{\special{ps:: currentpoint grestore moveto}}
+\def\Gscale@start{\special{ps:: currentpoint currentpoint translate
+ \Gscale@x\space \Gscale@y\space scale neg exch neg exch translate}}
+\def\Gscale@end{\special{ps:: currentpoint currentpoint translate
+ 1 \Gscale@x\space div 1 \Gscale@y\space div scale
+ neg exch neg exch translate}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@PS@raw#1{\special{ps:: #1}}
+\def\Gin@PS@restored#1{\special{" #1}}
+% \end{macrocode}
+%
+% \subsection{Default Extensions}
+%
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps,.wmf,.bmp}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
+\@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pctex32>
+% \end{macrocode}
+%
+% \section{pctexwin}
+% A \LaTeXe\ graphics driver file for Personal TeX's PC TeX for Windows;
+% from information supplied by Lance Carnes and Tao Wang
+% |<pti@crl.com>|.
+% \begin{macrocode}
+%<*pctexwin>
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}
+%
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexwin}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{eps:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Ginclude@ps#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexwin}%
+ \fi
+ \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{ps:#1}}}%
+ \typeout{^^J%
+---------------------------------------------------------^^J%
+.ps graphics without bounding box information cannot be^^J%
+scaled. If the file actually contains the information,^^J%
+please rename the file to .eps file extension.^^J%
+---------------------------------------------------------^^J%
+}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexwin}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{bmp:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Ginclude@wmf#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexwin}%
+ \fi
+ \Gin@req@width.03515\Gin@req@width
+ \Gin@req@height.03515\Gin@req@height
+ \special{wmf:#1\space x=\strip@pt\Gin@req@width cm,
+ y=\strip@pt\Gin@req@height cm}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps,.wmf,.bmp}
+\@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
+\@namedef{Gin@rule@.wmf}#1{{wmf}{}{#1}}
+\@namedef{Gin@rule@.ps}#1{{ps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</pctexwin>
+% \end{macrocode}
+%
+% \section{pctexhp}
+% A \LaTeXe\ graphics driver file for Personal TeX's PTI Laser/HP;
+% from information supplied by Lance Carnes and Tao Wang
+% |<pti@crl.com>|.
+% \begin{macrocode}
+%<*pctexhp>
+% \end{macrocode}
+% \subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@pcl#1{%
+\message{<#1>}%
+ \ifGin@clip
+ \typeout{no clipping support in pctexhp}%
+ \fi
+ \hbox{\kern-\Gin@llx bp\raise-\Gin@lly bp\hbox{\special{pcl:#1}}}%
+ \typeout{WARNING: pctexhp does not permit graphics to be scaled}}
+\@namedef{Gin@rule@.pcl}#1{{pcl}{}{#1}}
+\def\Gin@extensions{.pcl}
+%</pctexhp>
+% \end{macrocode}
+%
+% \section{pubps}
+% A \LaTeXe\ graphics driver file for Arbortext's PUBps;
+% information from Peter R Wilson |pwilson@rdrc.rpi.edu|.
+% \begin{macrocode}
+%<*pubps>
+% \end{macrocode}
+% \subsection{Rotation}
+% \begin{macrocode}
+\def\Grot@start{\special{ps: gsave currentpoint
+ currentpoint translate \Grot@angle\space
+ rotate neg exch neg exch translate}}
+\def\Grot@end{\special{ps: currentpoint grestore moveto}}
+%</pubps>
+% \end{macrocode}
+%
+% \section{dviwin}
+% A \LaTeXe\ graphics driver file for Hippocrates Sendoukas' dviwin
+% \begin{macrocode}
+%<*dviwin>
+% \end{macrocode}
+% \subsection{Graphic file inclusion}
+% Dviwin sorts out the graphics type itself based on extension.
+% They all use the same |\special|, so as far as graphics.sty is
+% concerned they are all the same `type'. Use `bmp' for the type
+% as that is as good a name as any. Make this the default.
+% \begin{macrocode}
+\@namedef{Gin@rule@*}#1{{bmp}{}{#1}}
+\def\Ginclude@bmp#1{%
+ \raise\Gin@req@height\hbox{%
+ \special{anisoscale #1,
+ \the\Gin@req@width\space \the\Gin@req@height}}}
+% \end{macrocode}
+% The only exception is EPS files, as they may be read for BoundingBox
+% \begin{macrocode}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\let\Ginclude@eps\Ginclude@bmp
+% \end{macrocode}
+% Add a few default extensions so |\includegraphics{a}|
+% will pick up |a.eps| or |a.wmf|.
+% This list can be reset with |\DeclareGraphicsExtensions|.
+% Other extensions not in the list may be used explicitly, eg
+% |\includegraphics{a.gif}| should work as long as dviwin has access
+% to a gif filter. If |.gif| is added using |\DeclareGraphicsExtensions|
+% then |\includegraphics{a}| would also find |a.gif|.
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps,.wmf,.tif}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dviwin>
+% \end{macrocode}
+%
+% \section{ln}
+% A \LaTeXe\ graphics driver file for B Hamilton Kelly's ln03 driver.
+% Untested, but based on the graphics macros distributed with the
+% driver.
+% \begin{macrocode}
+%<*ln>
+% \end{macrocode}
+% \subsection{Graphic file inclusion}
+% \begin{macrocode}
+\def\Ginclude@sixel#1{\special{ln03:sixel #1}}
+%</ln>
+% \end{macrocode}
+%
+% \section{trutex}
+% A \LaTeXe\ graphics driver file for Kinch `truetex' driver.
+% \begin{macrocode}
+%<*truetex>
+% \end{macrocode}
+%
+% \subsection{Colour}
+% Uses the `color4' colour code.
+%
+% \subsection{Graphic file inclusion}
+%
+% EPS File inclusion: DVIPS style.
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \bgroup
+ \def\@tempa{!}%
+ \dimen@\Gin@req@width
+ \dimen@ii.1bp%
+ \divide\dimen@\dimen@ii
+ \@tempdima\Gin@req@height
+ \divide\@tempdima\dimen@ii
+ \special{PSfile="#1"\space
+ llx=\Gin@llx\space
+ lly=\Gin@lly\space
+ urx=\Gin@urx\space
+ ury=\Gin@ury\space
+ \ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
+ \ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
+ \ifGin@clip clip\fi}%
+ \egroup}
+% \end{macrocode}
+%
+% bmp File Inclusion.
+% \begin{macrocode}
+\def\Ginclude@bmp#1{%
+ \message{<#1>}%
+ \special{bmpfile #1}}
+% \end{macrocode}
+%
+% tif(f) File inclusion
+% \begin{macrocode}
+\def\Ginclude@tiff#1{%
+ \message{<#1>}%
+ \special{tifffile #1}}
+% \end{macrocode}
+%
+% \subsection{Literal PostScript}
+% This is not supported, so uses `nops' code.
+%
+% \subsection{Default Rules}
+% Support (e)ps, tif and bmp, default to eps.
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.tif}#1{{tiff}{}{#1}}
+\@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</truetex>
+% \end{macrocode}
+%
+% \section{tcidvi}
+% A \LaTeXe\ graphics driver file for Scientific Word/Workplace.
+% Actually for the Kinch truetex driver, augmented with extra
+% |\special| handling with the DLL supplied with SW.
+% \begin{macrocode}
+%<*tcidvi>
+% \end{macrocode}
+%
+% \subsection{Colour}
+% Uses the `color4' colour code.
+%
+% The above colours are handled by the Kinch-supplied dll
+% The TCI dll adds support for |\colorbox|, but only grey scale
+% The code below accepts any color model, but only the red
+% component is used.
+% \begin{macrocode}
+\AtBeginDocument{\def\color@block#1#2#3{%
+ {\rlap{\ifcolors@
+ \@defaultunits\count@\current@color\@nnil
+ \dimen@\count@\p@
+ \divide\dimen@\@cclv
+ \dimen@ii#2%
+ \advance\dimen@ii#3%
+ \lower#3\hbox{%
+ \special{language "Scientific Word";%
+ type "greybox";%
+ greyscale \strip@pt\dimen@;%
+ height \the\dimen@ii;%
+ width \the#1;%
+ depth 0pt;}}%
+ \fi}}}}
+% \end{macrocode}
+%
+% \subsection{Graphic file inclusion}
+%
+% EPS File inclusion.
+% \begin{macrocode}
+\def\Ginclude@eps#1{%
+ \message{<#1>}%
+ \raise\Gin@req@height\hbox{%
+% \end{macrocode}
+%
+% If the bounding box has been changed by a trim or viewport
+% key then need to calculate the crop ratios based on the original
+% bb coordinates. (This assumes that clip key is also used).
+% \begin{macrocode}
+ \ifx\Gin@ollx\@undefined
+ \else
+ \@tempdimb \Gin@ourx bp%
+ \advance\@tempdimb-\Gin@ollx bp%
+ \@tempdima\Gin@llx bp%
+ \advance\@tempdima-\Gin@ollx bp%
+ \Gscale@div\TCI@cropleft\@tempdima\@tempdimb
+ \@tempdima\Gin@urx bp%
+ \advance\@tempdima-\Gin@ollx bp%
+ \Gscale@div\TCI@cropright\@tempdima\@tempdimb
+ \@tempdimb \Gin@oury bp%
+ \advance\@tempdimb-\Gin@olly bp%
+ \@tempdima\Gin@lly bp%
+ \advance\@tempdima-\Gin@olly bp%
+ \Gscale@div\TCI@cropbottom\@tempdima\@tempdimb
+ \@tempdima\Gin@ury bp%
+ \advance\@tempdima-\Gin@olly bp%
+ \Gscale@div\TCI@croptop\@tempdima\@tempdimb
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \special{%
+ language \TCI@language;%
+ type \TCI@type;%
+ valid_file \TCI@validfile;%
+ width \the\Gin@req@width;%
+ height \the\Gin@req@height;%
+ depth 0pt;%
+ original-width \the\Gin@nat@width;%
+ original-height \the\Gin@nat@height;%
+ cropleft "\TCI@cropleft";%
+ croptop "\TCI@croptop";%
+ cropright "\TCI@cropright";%
+ cropbottom "\TCI@cropbottom";%
+ filename '#1';%
+ \ifx\TCI@temp\@empty\else tempfilename \TCI@temp;\fi
+ }}}
+% \end{macrocode}
+%
+% Default values so documents produced elsewhere should work
+% \begin{macrocode}
+\def\TCI@language{"Scientific Word"}
+\def\TCI@type{"GRAPHIC"}
+\def\TCI@validfile{'F'}
+\def\TCI@cropleft{0}
+\def\TCI@croptop{1}
+\def\TCI@cropright{1}
+\def\TCI@cropbottom{0}
+\let\TCI@temp\@empty
+% \end{macrocode}
+%
+% Non PS Graphic files.
+%
+% File inclusion macro is always the same. Use a different name though
+% as LaTeX thinks it can read eps files for BoundingBox.
+% \begin{macrocode}
+\let\Ginclude@bmp\Ginclude@eps
+% \end{macrocode}
+%
+% \subsection{Literal PostScript}
+% This is not supported, so uses `nops' code.
+%
+% \subsection{Default Rules}
+% SW always gives the full name with extension.
+% So leave this list empty.
+% \begin{macrocode}
+\def\Gin@extensions{}
+% \end{macrocode}
+%
+% .ps .PS .eps .EPS are (E)PS
+% rest are `bmp' which is a catch all type for anything
+% that the inport filter can handle.
+% \begin{macrocode}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.PS}#1{{eps}{.PS}{#1}}
+\@namedef{Gin@rule@.EPS}#1{{eps}{.EPS}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@*}#1{{bmp}{\Gin@ext}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</tcidvi>
+% \end{macrocode}
+%
+% \section{Literal Postscript}
+% Most drivers writing to PostScript allow some form of `literal'
+% PostScript |\special| that inserts code into the final PostScript
+% output. However Non-PS drivers can not support this (and some PS
+% one's can't either). The code here makes all these commands no ops.
+% Individual driver sections may define the commands to do something
+% useful.
+%
+% \begin{macrocode}
+%<*nops>
+% \end{macrocode}
+%
+% Raw PostScript code, no save/restore. Coordinate system unspecified.
+% \begin{macrocode}
+\def\Gin@PS@raw#1{}
+% \end{macrocode}
+%
+% PostScript code, to be surrounded by save/restore by the driver.
+% Coordinate system standard PostScript, but with origin
+% at current (\TeX) position.
+% \begin{macrocode}
+\def\Gin@PS@restored#1{}
+% \end{macrocode}
+%
+% PostScript code to be inserted in the Header section of the final
+% PostScript. Must be issued on the first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@literal@header#1{}
+% \end{macrocode}
+%
+% Name of external file, the contents of which are to be inserted in
+% the Header section of the final PostScript. Must be issued on the
+% first page of a document.
+% \begin{macrocode}
+\def\Gin@PS@file@header#1{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</nops>
+% \end{macrocode}
+%
+% \section{Graphics Inclusion Rules}
+% \begin{macrocode}
+%<*psrules>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</psrules>
+%<*psrulesZ>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\Gin@extensions{.eps,.ps,.eps.gz,.ps.gz,.eps.Z}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.pz}#1{{eps}{.bb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.eps.Z}#1{{eps}{.eps.bb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.ps.Z}#1{{eps}{.ps.bb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.ps.gz}#1{{eps}{.ps.bb}{`gunzip -c #1}}
+\@namedef{Gin@rule@.eps.gz}#1{{eps}{.eps.bb}{`gunzip -c #1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</psrulesZ>
+%<*dosrules>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<!psrulesZ>\def\Gin@extensions{.eps,.ps,.pcx,.bmp}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@namedef{Gin@rule@.pcx}#1{{bmp}{}{#1}}
+\@namedef{Gin@rule@.bmp}#1{{bmp}{}{#1}}
+\@namedef{Gin@rule@.msp}#1{{bmp}{}{#1}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</dosrules>
+%<*macrules>
+%\def\Gin@extensions{{},.ps,.eps,.pict}
+%\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}}
+%\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}}
+\@namedef{Gin@rule@.pict}#1{{pict}{}{#1}}
+\@namedef{Gin@rule@.pntg}#1{{pntg}{}{#1}}
+%\@namedef{Gin@rule@}#1{{pict}{\relax}{#1}}
+%</macrules>
+%<*tiffrules>
+\@namedef{Gin@rule@.tif}#1{{tiff}{}{#1}}
+%</tiffrules>
+% \end{macrocode}
+%
+% \Finale
+%