% $Id: pstricks.sty 908 2024-06-28 19:39:00Z herbert $
%%
%% This is file `pstricks.sty'.
%%
%% IMPORTANT NOTICE:
%%
%% pstricks.sty Copyright (C) 1997 Timothy Van Zandt
%% pstcol.sty   Copyright (C) 1994-1996 1999 David Carlisle
%% pstricks.sty Copyright (C) 2004-2019 Rolf Niepraschk <[email protected]>
%%                                      Herbert Voss <[email protected]>
%%                            2019-     Herbert Voss <[email protected]>
%%
%% This package 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.
%%

\NeedsTeXFormat{LaTeX2e}

\ProvidesPackage{pstricks}[2024/02/02 v0.75 LaTeX wrapper for `PSTricks' (RN,HV)]
%
\let\pst@documentclass=\documentclass
\def\documentclass{%
 \edef\@tempa{"\jobname.tex" }%
 \edef\@tempb{\@filef@und}%
 \@onelevel@sanitize\@tempa
 \@onelevel@sanitize\@tempb
 \ifx\@tempa\@tempb
   \@latex@error
     {`\jobname.tex' is a forbidden name for your document,\MessageBreak
     it is already a name of a package}%
     {Choose another name for your document}\@gobble
 \else
   \expandafter\pst@documentclass
 \fi
}
\RequirePackage{iftex}
\def\pst@ColorPackage{xcolor}
\DeclareOption{noxcolor}{\def\pst@ColorPackage{color}}
%
\newif\ifpst@useCalc  \pst@useCalcfalse
\newif\ifpst@psfonts  \pst@psfontsfalse
\newif\ifpstGSfonts  \pstGSfontsfalse
\newif\if@check@engine  \@check@enginetrue
\newif\ifpst@xetex  \pst@xetexfalse
\newif\ifpst@autopdf  \pst@autopdffalse

\DeclareOption{useCalc}{\pst@useCalctrue}
\DeclareOption{gsfonts}{\pstGSfontstrue}
\DeclareOption{psfonts}{\pst@psfontstrue}
\DeclareOption{noEngineCheck}{\@check@enginefalse}
\DeclareOption{pdf}{\global\pst@autopdftrue}
\DeclareOption{xetex}{\global\pst@xetextrue}
%
%---------------------------------DISTILLER --------------------------------
\newif\ifpst@distiller\pst@distillerfalse
\DeclareOption{distiller}{\pst@distillertrue\pst@psfontstrue}
%
%---------------------------------COLOR --------------------------------
\DeclareOption{monochrome}{%
 \AtBeginDocument{\special{ps:
  true setglobal globaldict begin
   /setrgbcolor { add add 0 gt {1}{0} ifelse setgray } def
   /setcmykcolor{ 4 dict begin
     /k ED /y ED /m ED /c ED
     1 1 k sub c mul k add sub 0.29 mul
     1 1 k sub m mul k add sub 0.587 mul add
     1 1 k sub y mul k add sub 0.114 mul add
     end 0 gt {1}{0} ifelse setgray } def
  end false setglobal }}}

\DeclareOption{grayscale}{%
 \AtBeginDocument{\special{ps:
  true setglobal globaldict begin
   /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def
   /setcmykcolor{ 4 dict begin
     /k ED /y ED /m ED /c ED
     1 1 k sub c mul k add sub 0.29 mul
     1 1 k sub m mul k add sub 0.587 mul add
     1 1 k sub y mul k add sub 0.114 mul add
     end setgray } def
   end false setglobal }}}

\DeclareOption*{\PassOptionsToPackage\CurrentOption{\pst@ColorPackage}}
\ProcessOptions\relax

\let\pgfutil@protected\protected
\let\pgfutil@unexpanded\unexpanded

\ifpst@useCalc
 \RequirePackage{pst-calculate}
\fi
\RequirePackage{\pst@ColorPackage}
%
\@ifundefined{PSTricksLoaded}
{%
%
 \let\saved@scalebox\scalebox
 \input{pst-xkey}%
 \input{pstricks}%
 \ProvidesFile{pstricks.tex}[\filedate\space v\fileversion\space `PSTricks' (tvz,hv)]
 \input{pst-fp.tex}%
 \ProvidesFile{pst-fp.tex}[\filedate\space v\fileversion\space `PST-fp' (hv)]
 \IfFileExists{pstricks.pro}{%
   \ProvidesFile{pstricks.pro}
     [2020/11/16 v. 1.41,  PostScript prologue file (hv)]
       \@addtofilelist{pstricks.pro}}{}%
 \IfFileExists{pst-algparser.pro}{%
   \ProvidesFile{pst-algparser.pro}[2011/10/31 v. 0.04,  PostScript prologue file (hv)]
       \@addtofilelist{pst-algparser.pro}}{}%
 \IfFileExists{pst-tools.pro}{%
   \ProvidesFile{pst-tools.pro}[2012/01/01 v. 0.02,  PostScript prologue file (hv)]
       \@addtofilelist{pst-tools.pro}}{}%
 \IfFileExists{pst-dots.pro}{%
   \ProvidesFile{pst-dots.pro}[2006/12/19 v. 2.00,  PostScript prologue file (hv)]
       \@addtofilelist{pst-dots.pro}}{}%
}{}
%
\ifpst@distiller
 \pst@def{setTransparency}<
   [ /ca \psk@opacityalpha
     /CA \psk@opacityalpha /SetTransparency pdfmark >
 \pst@def{setStrokeTransparency}<
   [ /ca \psk@strokeopacityalpha
     /CA \psk@strokeopacityalpha /SetTransparency pdfmark >
 \pst@def{setBlendmode}<
   [ /BM%
    \ifcase\psk@blendmode
     /Normal \or
     /Compatible \or
     /Screen \or
     /Multiply \or
     /HardLight \or
     /Darken \or
     /Lighten \or
     /Difference \or
     /ColorDodge \or
     /ColorBurn \or
     /SoftLight \or
     /Hue \or
     /Saturation \or
     /Luminosity \or
     /Overlay \or
     /Exclusion \or
     /Color
   \else
     /Normal
   \fi
   /ca \psk@shapealpha /CA \psk@opacityalpha /SetTransparency pdfmark >
\fi
%
\@ifpackageloaded{xcolor}{%
 \@ifpackagelater{xcolor}{2004/05/02}%
 {%
   \let\pst@getcolor\XC@getcolor
   \let\pst@usecolor\XC@usecolor
 }
 {%
   \PackageError{pstricks}{%
   *************************************************\MessageBreak
   * Your Version of `xcolor.sty' is too old!\MessageBreak
   * You need the version from 2004/05/02 or newer\MessageBreak
   * or use: \string\usepackage[noxcolor]{pstricks}\MessageBreak
   *************************************************}{}%
 }%
}{%
 \def\pst@getcolor#1#2{%
   \@ifundefined{\string\color@#1}%
   {\@pstrickserr{Color `#1' not defined}\@eha}%
   {\edef#2{#1}}}%
 \def\pst@usecolor#1{\expandafter\expandafter\expandafter\c@lor@to@ps%
   \csname\string\color@#1\endcsname\@@\space}%
 \definecolor{darkgray}{gray}{.25}
 \definecolor{gray}{gray}{.5}
 \definecolor{lightgray}{gray}{.75}
}%
%
\definecolor{gradbegin}{rgb}{0,1,1}
\definecolor{gradend}{rgb}{0,.1,.95}
%
\@ifundefined{xglobal}%
{\def\xglobal#1#2#3#4% UK 2005-11-17
  {#1{#2}{#3}{#4}%
   \expandafter\global\expandafter\let\csname\string\color@#2%
   \expandafter\endcsname\csname\string\color@#2\endcsname}}{}%
%
\def\newgray#1{%
 \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
 \xglobal\definecolor{#1}{gray}}%
%
\def\newrgbcolor#1#2{%
 \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
 \edef\@tempa{\noexpand\newrgbcolorx{#1}#2\noexpand\@@}\@tempa}%
\def\newrgbcolorx#1#2 #3 #4\@@{%
 \xglobal\definecolor{#1}{rgb}{#2,#3,#4}}
%
\def\newcmykcolor#1#2{%
 \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
 \edef\@tempa{\noexpand\newcmykcolorx{#1}#2\noexpand\@@}\@tempa}
\def\newcmykcolorx#1#2 #3 #4 #5\@@{%
 \xglobal\definecolor{#1}{cmyk}{#2,#3,#4,#5}}
%
\def\newhsbcolor#1#2{%
 \expandafter\gdef\csname #1\endcsname{\color{#1}}%  HV 2004-03-31
 \edef\@tempa{\noexpand\newhsbcolorx{#1}#2\noexpand\@@}\@tempa}
\def\newhsbcolorx#1#2 #3 #4\@@{%
 \xglobal\definecolor{#1}{hsb}{#2,#3,#4}}
%
\definecolor{black}{gray}{0}
\definecolor{darkgray}{gray}{.25}
\definecolor{gray}{gray}{.5}
\definecolor{lightgray}{gray}{.75}
\definecolor{white}{gray}{1}
\definecolor{red}{rgb}{1,0,0}
\definecolor{green}{rgb}{0,1,0}
\definecolor{blue}{rgb}{0,0,1}
%\definecolor{yellow}{rgb}{1,1,0}
%\definecolor{cyan}{rgb}{0,1,1}
%\definecolor{magenta}{rgb}{1,0,1}
\definecolor{yellow}{cmyk}{0,0,1,0}
\definecolor{cyan}{cmyk}{1,0,0,0}
\definecolor{magenta}{cmyk}{0,1,0,0}
%
\renewcommand*\black{\color{black}}
\renewcommand*\darkgray{\color{darkgray}}
\renewcommand*\gray{\color{gray}}
\renewcommand*\lightgray{\color{lightgray}}
\renewcommand*\white{\color{white}}
\renewcommand*\blue{\color{blue}}
\renewcommand*\red{\color{red}}
\renewcommand*\green{\color{green}}
\renewcommand*\yellow{\color{yellow}}
\renewcommand*\magenta{\color{magenta}}
\renewcommand*\cyan{\color{cyan}}
%
\AtBeginDocument{%
%  \psset{fillcolor=white}%      hv 0.33
 \let\pst@endcolor=\relax%
%  \let\pst@color=\relax%
% LaTeX used `\color@endgroup' instead. RN 2004-05-06
}
\pst@cntm=0
\ifXeTeX\pst@cntm=1\else\ifpst@xetex\pst@cntm=1\fi\fi

\ifnum\pst@cntm>\z@
 \typeout{>>> Loading XeTeX special macros}%
 \input{pstricks-xetex.def}%
\fi
\endinput
%
%% End of file `pstricks.sty'.