summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/m-pstric.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/m-pstric.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/m-pstric.tex113
1 files changed, 113 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/m-pstric.tex b/Master/texmf-dist/tex/context/base/m-pstric.tex
new file mode 100644
index 00000000000..707984d288f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-pstric.tex
@@ -0,0 +1,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