%% BEGIN pst2eps.tex
%%
%% For writing EPS files with PSTricks.
%%
\def\fileversion{0.93a}
\def\filedate{93/03/12}
%%
%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
%% See pstricks.tex or pstricks.doc for copying restrictions.
%%
%% See the PSTricks User's Guide for description.
%%

\message{ v\fileversion, \filedate}

\csname PSTfilesLoaded\endcsname
\let\PSTfilesLoaded\endinput

\ifx\PSTricksLoaded\endinput\else
  \def\next{\input pstricks.tex}
  \expandafter\next
\fi

\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11

% Exporting PostScript files

\def\TeXtoEPS{\begingroup\pst@makebox{}\bgroup\ignorespaces}
\def\endTeXtoEPS{%
    \egroup
% Get contents of page, in case it contains special's:
    \begingroup
      \global\setbox\pst@boxg\box\voidb@x
      \output{\global\setbox\pst@boxg\box\@cclv}%
      \par\hbox{}\penalty-10000
    \endgroup
    \dp\pst@boxg\z@
    \ht\pst@boxg\z@
    \wd\pst@boxg\z@
  \pst@dimg=3pt
  \shipout\hbox{%
    \box\pst@boxg
    \pst@Verb{gsave CM \tx@STV CP newpath moveto
      \pst@number\pst@dimg neg 0 rmoveto clip setmatrix}%
    \vrule width \wd\pst@hbox height \ht\pst@hbox depth \dp\pst@hbox
    \pstVerb{currentpoint grestore moveto}%
    \kern -\wd\pst@hbox
    \unhbox\pst@hbox}%
  \endgroup
  \typeout{PSTricks: Converting TeX box to EPS.}%
  \typeout{\@spaces\@spaces\space\space With dvips, use -E option.}}


% Writing PSTricks graphics to EPS files

\newwrite\pst@epsout
\newwrite\pst@tempout

\def\pst@getbp#1#2#3{%
  \csname psset#1length\endcsname\pst@dimg{#2}%
  \advance\pst@dimg .49bp
  \pst@cntg=\pst@dimg
  \multiply\pst@cntg 5
  \divide\pst@cntg 328909
  \edef#3{\the\pst@cntg}}

\def\psset@bbllx#1{\pst@getbp{x}{#1}\psk@bbllx}
\psset@bbllx{-1pt}

\def\psset@bblly#1{\pst@getbp{y}{#1}\psk@bblly}
\psset@bblly{-1pt}

\def\psset@bburx#1{\pst@getbp{x}{#1}\psk@bburx}
\psset@bburx{1pt}

\def\psset@bbury#1{\pst@getbp{y}{#1}\psk@bbury}
\psset@bbury{1pt}

\def\pst@getboolean#1#2{%
  \def\pst@tempg##1##2\@nil{%
    \ifx t##1\relax\def#2{1\relax}\else\def#2{\z@}\fi}
  \pst@expandafter\pst@tempg{#1}\relax\@nil}

\def\psset@headers#1{%
  \def\pst@tempg##1##2\@nil{%
    \ifx u##1\relax
      \def\psk@headers{1\relax}%
    \else
      \ifx a#1\relax
        \def\psk@headers{2\relax}%
      \else
        \def\psk@headers{\z@}%
      \fi
    \fi}%
  \pst@expandafter\pst@tempg{#1}\relax\@nil}
\psset@headers{none}

\def\psset@checkfile#1{\pst@getboolean{#1}\psk@checkfile}
\psset@checkfile{true}

\def\psset@makeeps#1{%
  \def\pst@tempg{#1}%
  \ifx\pst@tempg\@none
    \def\psk@makeeps{\z@}%
  \else
    \def\pst@temph{all}%
    \ifx\pst@tempg\pst@temph
      \def\psk@makeeps{3\relax}%
    \else
      \def\pst@temph{all*}%
      \ifx\pst@tempg\pst@temph
        \def\psk@makeeps{2\relax}%
      \else
        \def\psk@makeeps{1\relax}%
      \fi
    \fi
  \fi}
\psset@makeeps{new}

\def\psset@headerfile#1{\def\psk@headerfile{#1}}
\psset@headerfile{}

\def\pst@checkfile#1{%
  \ifcase\psk@makeeps
    \@pstfalse
  \or
    \immediate\openin1=#1
    \ifeof1\relax\@psttrue\else\@pstfalse\fi
    \immediate\closein1
  \or
    \immediate\openin1=#1
    \ifeof1
      \@psttrue
    \else
      \typeout{^^J%
      PSTricks warning:^^J%
      !! File `#1' exists and will be erased if in current directory!^^J%
      !! Make `#1'? (y=yes; n=no)}
      \read16 to \pst@tempg
      \if y\pst@tempg\relax\@psttrue\else\@pstfalse\fi
    \fi
    \immediate\closein1=#1
  \or
    \@psttrue
  \fi}

\def\PSTtoEPS{\def\pst@par{}\pst@object{PSTtoEPS}}
\begingroup
\catcode`\%=12
\catcode`\"=14
\long\gdef\PSTtoEPS@i#1#2{"
  \begingroup
    \use@par
    \newlinechar`\^^J"
    \pst@checkfile{#1}"
    \if@pst
      \immediate\openout\pst@epsout=#1
      \def\write@eps##1{\immediate\write\pst@epsout{##1}}"
      \def\addto@pscode##1{"
        \begingroup
          \newlinechar`\ "
          \write@eps{##1}"
        \endgroup}
      \write@eps{"
        %!PS-Adobe-3.0 EPSF-3.0^^J"
        %%Creator: PSTricks^^J"
        %%Title: #1^^J"
        %%CreationDate: \the\year/\the\month/\the\day^^J"
        %%BoundingBox:
          \psk@bbllx\space\psk@bblly\space\psk@bburx\space\psk@bbury^^J"
        %%EndComments}"
      \ifcase\psk@headers
        \def\pst@tempg{}"
      \or
        \let\pst@tempg\psk@headerfile
      \or
        \edef\pst@tempg{\pst@theheaders,\psk@headerfile}"
      \fi
      \ifx\pst@tempg\@empty\else
        \expandafter\pst@writeheaders\pst@tempg,\@nil
      \fi
      \write@eps{%%BeginSetup}"
      \addto@pscode\pst@dict
      \write@eps{%%EndSetup}"
      \ifdim\pstunit=1bp\else
        \pst@dimg=\pstunit\relax
        \write@eps{\number\pst@dimg\space 65781.8 div dup scale}"
      \fi
      \addto@pscode{"
        \tx@STP
        0 setlinecap
        0 setlinejoin
        10 setmiterlimit
        [] 0 setdash
        newpath}"
      \setbox\pst@hbox=\hbox{"
        \def\init@pscode{"
          \write@eps{"
            gsave
            \psk@origin
            \psk@swapaxes
            \pst@number\pslinewidth SLW
            \pst@usecolor\pslinecolor}}"
        \def\use@pscode{\write@eps{grestore}}"
        \let\pst@rawfile\pst@filetoeps
        \def\psclip#1{\pst@misplaced\psclip}"
        \let\endpsclip\relax
        \def\pstextpath@@@[##1](##2,##3)##4{\pst@misplaced\pstextpath}"
        \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}"
        \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}"
        #2}"
      \write@eps{"
        %%Trailer^^J"
        end^^J"
        %%EOF}"
      \immediate\closeout\pst@epsout
    \fi
  \endgroup
  \ignorespaces}

\gdef\pst@writeheaders#1,{"
  \def\pst@tempg{#1}"
  \ifx\pst@tempg\@empty\else
    \write@eps{%%BeginProcSet: #1}"
    \pst@filetoeps{#1}"
    \write@eps{%%EndProcSet}"
  \fi
  \@ifnextchar\@nil{\let\pst@tempg}{\pst@writeheaders}}
\endgroup

\def\pst@filetoeps#1{%
  \begingroup
    \def\do##1{\catcode`##1=12\relax}%
    \dospecials
    \def\addto@pscode##1{\write@eps{##1}}%
    \pst@@rawfile{#1}%
  \endgroup}

\catcode`\@=\TheAtCode\relax

\endinput

%% END pst2eps.tex
