1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
%D \module
%D [ file=m-pstricks,
%D version=1997.01.15,
%D title=\CONTEXT\ Extra Modules,
%D subtitle=\PSTRICKS\ Connections,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
%M \usemodule[pstric]
\chardef\oldbarcode\the\catcode`\| \catcode`\|=12
\def\loadpstrickscolors#1%
{\pushmacro\dodefinecolor
\pushmacro\dodefinepalet
\pushmacro\dodefinecolorgroup
\def\dodefinecolor[##1][##2]%
{\doifassignmentelse{##2}
{\getparameters[pstricks][r=0,g=0,b=0,##2]%
\expanded{\newrgbcolor{##1}{{\pstricksr} {\pstricksg} {\pstricksb}}}}%
{}}%
\def\dodefinepalet [##1][##2]{}%
\def\dodefinecolorgroup[##1][##2][##3]{}%
\writestatus{pstricks}{loading colors from #1}%
\input #1 \relax
\popmacro\dodefinecolorgroup
\popmacro\dodefinepalet
\popmacro\dodefinecolor}
\doifelse{\jobsuffix}{dvi}
{\input multido \relax
\input pstricks \relax
\input pst-plot \relax
\loadpstrickscolors{colo-rgb}}
{\writestatus{pstricks}{using indirect method; enable write18}}
\catcode`\|=\oldbarcode
%D The next piece of code is for John Culleton who suggested to
%D handle \PSTRICKS\ in a similar fashion as \METAPOST, i.e.\
%D using a child process. For the moment there is no support
%D for passing environments, so these should be called
%D explicitly inside this environment.
\unprotect
%D \startPSTRICKS[offset=2pt] ... \stopPSTRICKS
%D
%D works in both dvi and pdf mode
%D
%D % \usemodule[pstric]
%D
%D \startPSTRICKS
%D \pspicture(0,0)(10,10)
%D \dorecurse{10}{\psline(0,0)(\recurselevel,10)}
%D \dorecurse{10}{\psline(0,0)(10,\recurselevel)}
%D \endpspicture
%D \stopPSTRICKS
\def\startPSTRICKS
{\dosingleempty\dostartPSTRICKS}
\ifx\startTEXapplication\undefined
\long\def\dostartPSTRICKS[#1]#2\stopPSTRICKS
{\doifelse{\jobsuffix}{dvi}
{#2}
{\bgroup
\setbuffer[pstricks]%
\usemodule[pstric]%
\setbox\scratchbox\hbox{#2}%
% There is probably a nicer way to handle this
\immediate\openout\scratchwrite=\bufferprefix dim.tmp
\immediate\write\scratchwrite{\dimen0=\the\ht\scratchbox}%
\immediate\write\scratchwrite{\dimen2=\the\wd\scratchbox}%
\immediate\closeout\scratchwrite
% Quick and dirty
\startTEXpage[#1]\box\scratchbox\stopTEXpage
\endbuffer
% Here we go!
%\immediate\write18{texexec \bufferprefix pstricks.tmp --once --batch}%
%\immediate\write18{dvips -G0 -Ppdf \bufferprefix pstricks -o}%
%\immediate\write18{ps2pdf \bufferprefix pstricks.ps \bufferprefix pstricks.pdf}%
\executesystemcommand{texexec \bufferprefix pstricks.tmp --once --batch}%
\executesystemcommand{dvips -G0 -Ppdf \bufferprefix pstricks -o}%
\executesystemcommand{ps2pdf \bufferprefix pstricks.ps \bufferprefix pstricks.pdf}%
% We pick up the dimensions from the scratch file.
\readlocfile{\bufferprefix pstricks-dim.tmp}{}{}%
% Since the graphic is put on a page (sigh) by dvips/gs
% we need to shift it around a bit.
\setbox\scratchbox\hbox
{\externalfigure[\bufferprefix pstricks.pdf][\c!object=\v!no]}%
\setbox\scratchbox\hbox
{\lower\ht\scratchbox\hbox{\raise\dimen2\box\scratchbox}}%
\wd\scratchbox\dimen0
\ht\scratchbox\dimen2
\dp\scratchbox\zeropoint
\box\scratchbox
\egroup}}
\fi
\long\def\dostartPSTRICKS[#1]#2\stopPSTRICKS
{\doifelse{\jobsuffix}{dvi} % will some day move to app as switch
{\hbox{#2}}
{\startTEXapplication[#1]{\usemodule[pstric]}#2\stopTEXapplication}}
\protect \endinput
|