%% BEGIN: pstricks.con (for xdvipdfmx driver) %% %% Configuration file for PSTricks %% %% Version 0.02 (2008/06/20) %% %% For use with xdvipdfmx %% Created by SMiyata based on standard pstricks.con from TeXLive distribution. %% This file may be distributed, used and modified freely. % \def\pstdriver{xdvipdfmx} \def\pstverb#1{\special{pst: #1}} % Check catcode of " \def\pstunit{1bp}% \def\pstVerb#1{\immediate\special{PST: #1}} \def\pstverbscale{72.27 72 div dup scale } % DG/SR modification begin - Apr. 28, 1997 (D. Carlisle + S. Rahtz) % \def\pstheader#1{\special{header=#1}} % We used to check for |\AtBeginDvi|, but that was broken in early release % so we now check for the existence of |\textsuperscript| (added 1995/05/16) \ifx\textsuperscript\@undefined \def\pstheader#1{\special{header=#1}} \else \ifx\Gin@PS@file@header\@undefined \def\pstheader#1{\AtBeginDvi{\special{header=#1}}} \else \let\pstheader\Gin@PS@file@header \fi \fi % DG/SR modification end %% %% In the following, CP is short for currentpoint. %% The neg is necessary because dvips scales the coordinates by 1 -1. %% \tx@NET means neg exch neg exch translate. \def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET} %% %% ****************** END xdvipdfmx ***************************** %%%%%%%%%%%%%%%%%%% !! CUSTOMIZATION STUFF GOES HERE: !! %%%%%%%%%%%%%%%%%% %% If you want to include your own customizations to pstricks.tex, then %% uncomment the \pstcustomize command, and include your modifications %% after \pstcustomize. These will be read in after pstricks.tex. \def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@} \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} \pstcustomize \typeout{Using PSTricks configuration for XeTeX+xdvipdfmx} \def\@@scalebox{% \leavevmode \hbox{% \ifdim\pst@tempd\p@<\z@ \pst@dimg=\pst@tempd\ht\pst@hbox \pst@dimh=\pst@tempd\dp\pst@hbox \dp\pst@hbox=-\pst@dimg \ht\pst@hbox=-\pst@dimh \else \ht\pst@hbox=\pst@tempd\ht\pst@hbox \dp\pst@hbox=\pst@tempd\dp\pst@hbox \fi \pst@dima=\pst@tempc\wd\pst@hbox \ifdim\pst@dima<\z@\kern-\pst@dima\fi \special{x: bscale \pst@tempc \pst@tempd}% \hbox to \z@{\box\pst@hbox\hss}% \special{x: escale}% \ifdim\pst@dima>\z@\kern\pst@dima\fi}} \let\ps@@scalebox\@@scalebox \def\ps@rotateleft#1{% \leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% \pst@Verb{90 \tx@RotBegin} \vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}% \pst@Verb{\tx@RotEnd}}}} \def\ps@rotateright#1{% \leavevmode\hbox{% \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% \pst@Verb{-90 \tx@RotBegin} \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}% \pst@Verb{\tx@RotEnd}}}} \def\ps@rotatedown#1{% \hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1% \pst@Verb{180 \tx@RotBegin}% \vbox to \z@{\hbox to \z@{\box#1\hss}\vss}% \pst@Verb{\tx@RotEnd}}}} \def\begin@psclip{\special{x: gsave}} \def\end@psclip{\special{x: grestore}} \def\@newcolor#1#2#3{% \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}% \expandafter\edef\csname\string\color@#1\endcsname{#2}% hv 1.14 2005-12-17 \expandafter\edef\csname\string\color@xetex@#1\endcsname{#3}% \ignorespaces} \def\newgray#1#2{% \pst@checknum{#2}\pst@tempg \@newcolor{#1}{\pst@tempg setgray}{gray \pst@tempg}% } \def\newrgbcolor#1#2{% \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}{rgb \pst@tempg \pst@temph \pst@tempi}% } \def\newhsbcolor#1#2{% \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}{hsb \pst@tempg \pst@temph \pst@tempi}% } \def\newcmykcolor#1#2{% \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}% {cmyk \pst@tempg \pst@temph \pst@tempi \pst@tempj}% } \newgray{black}{0} \newgray{darkgray}{.25} \newgray{gray}{.5} \newgray{lightgray}{.75} \newgray{white}{1} \newrgbcolor{red}{1 0 0} \newrgbcolor{green}{0 1 0} \newrgbcolor{blue}{0 0 1} \newrgbcolor{yellow}{1 1 0} \newrgbcolor{cyan}{0 1 1} \newrgbcolor{magenta}{1 0 1} \@ifundefined{LaTeXe}% {\def\current@@@@color{\csname\string\color@xetex@\psfillcolor\endcsname}}{% \AtBeginDocument{\@ifpackageloaded{xcolor}{\def\current@@@@color{\psfillcolor}}% {\def\current@@@@color{\csname\string\color@\psfillcolor\endcsname}}}} \def\pst@starbox{% \setbox\pst@hbox\hbox{{% \def\current@color{\current@@@@color}% \dimen@\wd\pst@hbox\advance\dimen@2\psframesep\wd\pst@hbox\dimen@% \dimen@\ht\pst@hbox\advance\dimen@\psframesep\ht\pst@hbox\dimen@% \dimen@\dp\pst@hbox\advance\dimen@\psframesep\dp\pst@hbox\dimen@% \@ifundefined{LaTeXe}{\special{color push \current@color}% \rlap{\vrule width\wd\pst@hbox height\ht\pst@hbox depth\dp\pst@hbox}% \special{color pop}}% {\color@block{\wd\pst@hbox}{\ht\pst@hbox}{\dp\pst@hbox}}}% \rlap{\hskip\psframesep\unhbox\pst@hbox}}} \def\AltClipMode{} \def\putoverlaybox#1{% \hbox{\special{x: gsave}\special{x: initoverlay #1}\copy\theoverlaybox\special{x: grestore}}} \def\pst@overlay#1{\edef\curr@overlay{#1}\special{x: clipoverlay #1}\aftergroup\pst@endoverlay} \def\pst@endoverlay{\special{x: clipoverlay \curr@overlay}} \def\AltOverlayMode{} %The next line is not necessary, if pstricks.sty of [2007/02/18 v0.33] or newer is used. \@ifundefined{LaTeXe}{}{\AtBeginDocument{\psset{fillcolor=white}}} \endinput % % %%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%% Here are the commands that must be defined in this file: \pstverb{} - The argument is included as verbatim PostScript, grouped by save and restore. The coordinate system should be square, not rotated, and with the origin at TeX's currentpoint. \pstVerb{} - The argument is included as verbatim PostScript, not grouped by (g)save and (g)restore. The currentpoint should be TeX's currentpoint. \pstunit - The units used by driver for graphics included with \pstverb. Probably 1bp or 1sp. \pstverbscale - The PostScript code that scales the coordinate system from that in effect with \pstVerb to that in effect with \pstverb. Should not translate to the currentpoint. \pstrotate - The PostScript code that takes a number off the stack and rotates the axes properly. I.e., \pstVerb{angle \pstrotate} is used to begin rotations. \pstheader{} - The argument is a header file (e.g., .pro file). If your driver does not support such a special, then the command might just remind you to include the header when printing. You can use PSTricks without a header, in which case it does not matter how you define \pstheader. See read-me.pst for details. If you cannot change the default directory where your driver looks for header files, and you cannot write to that directory, then you include the path for your PSTricks header files. E.g., \def\pstheader#1{\special{header=~/tex/#1}}. \pstdriver - The name of the driver. %%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%% See your local TeX documentation for instructions on creating a TeX format. Before making the format, be sure that this configuration file is correct. It will be read only when creating the format, and not with every job. If you are not using header files, there are no more special instructions. Special instructions when using header files: - If you want to include supplementary PSTricks files (e.g., pst-node.tex), add \input commands in the customization section above. - If your definition of \pstheader is, e.g. \def\pstheader#1{\special{\header=#1}} then change it to \def\pstheader#1{% \expandafter\everyjob\expandafter{\the\everyjob \special{header=#1}}} and put your original definition in the customization section, AFTER any \input commands. E.g., the customization section might look like: \pstcustomize \input pst-node.tex \input pst-coil.tex \def\pstheader#1{\special{header=#1}} - Input pstricks.tex at the appropriate time when creating the format. E.g., when initex stops running: *\input pstricks *\dump %% %% END: pstricks.con