summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-01-09 00:42:35 +0000
committerKarl Berry <karl@freefriends.org>2013-01-09 00:42:35 +0000
commitfb5b3b29ae853f623a30daf32661c7c875e2c1c8 (patch)
tree00ac6e3ebd611b3ea819072c882a0cf4fa8a7798 /Master
parentf05912aa0f6e3ea5c769bbaa2dc5a9f5987948e7 (diff)
xpicture.dtx
git-svn-id: svn://tug.org/texlive/trunk@28770 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/xpicture/xpicture.cfgxmpl99
-rw-r--r--Master/texmf-dist/tex/latex/xpicture/xpicture.sty1256
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
3 files changed, 1356 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/xpicture/xpicture.cfgxmpl b/Master/texmf-dist/doc/latex/xpicture/xpicture.cfgxmpl
new file mode 100644
index 00000000000..87dcea1917d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/xpicture/xpicture.cfgxmpl
@@ -0,0 +1,99 @@
+%%
+%% This is file `xpicture.cfgxmpl',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xpicture.dtx (with options: `defaults,cfg')
+%% ************************************************************************
+%% This is xpicture.cfgxmpl, part of the xpicture distribution
+%% Copyright (C) 2010, 2011, 2012 by Robert Fuster <rfuster@mat.upv.es>
+%% All rights reserved
+%%
+%% This is a model for the xpicture configuration file
+%%
+%% You should not modify this file.
+%% To costumize your xpicture installation, make a copy of this file,
+%% save it as 'xpicture.cfg' and modify this new file at your convenience.
+%% ************************************************************************
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+
+
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% xpicture configurable parameters %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%%%% Cartesian and polar axes
+ % Thickness and color of axes
+\axesthickness=1pt
+\def\axescolor{black}
+ % Color, size, mathversion and mathalphabet of numeric labels
+\def\axeslabelcolor{\axescolor}
+\def\axeslabelsize{\small}
+\def\axeslabelmathversion{normal}
+\def\axeslabelmathalphabet{\mathrm}
+ % Relative position of numeric labels on x- y- and r- axes
+\xlabelpos{-90}
+\ylabelpos{180}
+\rlabelpos{bbr}
+ % Distance between tags and cut marks,
+ % is is a number (not a lenght) of \unitlength units
+\def\axislabelsep{0.1}
+ % Color, thickness and size of tics
+\def\ticscolor{\axescolor}
+\ticsthickness=1pt
+\ticssize=4pt
+ % Size of secundary tics
+\secundaryticssize=2pt
+ % Thickness and color of Cartesian or polar grid
+\gridthickness=0.4pt
+\def\gridcolor{gray}
+ % Thickness and color of Cartesian or polar secundary grid
+\secundarygridthickness=0.2pt
+\def\secundarygridcolor{lightgray}
+ % Number of divisions of unity in x- y- and r-axis
+\def\xunitdivisions{1}
+\def\yunitdivisions{1}
+\def\runitdivisions{1}
+ % Arc labels in radians (\xpct@radianslabel)
+ % or degrees (\xpct@degreeslabel)
+\def\xpct@polarlabel{\xpct@radianslabel}
+%%%%% \put and \multiput extensions
+ % Distance from label to reference point,
+ % is is a number (not a lenght) of \unitlength units
+\def\Pictlabelsep{0.1}
+ % Default layout for distance (\defaultPut{c} or \defaultPut{r})
+\defaultPut{c}
+%%%%% Reference systems
+ % Default reference system
+\referencesystem(0,0)(1,0)(0,1)
+ % Cartesian or polar reference
+\cartesianreference
+%%%%% Arrow size in \xtrivVECTOR
+\arrowsize{5}{2}
+%%%%% Default interval divisions
+ % (used when plotting conic sections and arcs)
+\def\defaultplotdivs{8}
+%%%%% Size to be used by \pointmark
+\def\pointmarkdiam{0.1}
+%%%%% Point mark used by \PlotPointsOfFunction
+\def\pointmark{\circle*{\pointmarkdiam}}
+%%
+%%
+%% End of file `xpicture.cfgxmpl'.
diff --git a/Master/texmf-dist/tex/latex/xpicture/xpicture.sty b/Master/texmf-dist/tex/latex/xpicture/xpicture.sty
new file mode 100644
index 00000000000..0676c93eadf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xpicture/xpicture.sty
@@ -0,0 +1,1256 @@
+%%
+%% This is file `xpicture.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xpicture.dtx (with options: `xpicture,defaults')
+%% ********************************************************************
+%% The xpicture package
+%% Copyright (C) 2010, 2011, 2012 by Robert Fuster <rfuster@mat.upv.es>
+%% All rights reserved
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% ********************************************************************
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xpicture}[2012/12/17 v.1.2a picture environment extensions]
+\newif\ifdraft\draftfalse
+\DeclareOption{draft}{\drafttrue}
+\DeclareOption*{%
+ \PassOptionsToPackage{\CurrentOption}{curve2e}
+ \PassOptionsToPackage{\CurrentOption}{xcolor}}
+\ProcessOptions
+\newif\ifpolar\polarfalse
+\newif\ifrputstar\rputstarfalse
+\newif\ifdegrees\degreesfalse
+\newif\iftics\ticstrue
+\newif\iflabels\labelstrue
+\newif\ifgrid\gridfalse
+\newif\ifticslabelsgrid\ticslabelsgridfalse
+\newif\ifinzeroaxes\inzeroaxestrue
+\newif\ifbg\bgfalse
+\RequirePackage{curve2e}
+\RequirePackage{xcolor}
+\RequirePackage{calculus}
+\def\xpct@Warnbadpos{%
+ \PackageWarning{xpicture}%
+ {Argument in \noexpand\defaultPut command must be either
+ 'c' or 'r'\MessageBreak
+ I will no change the default position for
+ \noexpand\Put commands}}
+\def\xpct@Infopos#1{%
+ \PackageInfo{xpicture}%
+ {Default position for \noexpand\Put commands changed to #1}}
+\def\xpct@WarnIncSys(#1,#2)(#3,#4){%
+ \PackageWarning{xpicture}{%
+ Incompatible linear system!\MessageBreak
+ Tangent lines are parallel}}
+\def\xpct@ErrHypCons{%
+ \PackageError{xpicture}{%
+ Inconsistent parameters in \noexpand\Hyperbola command}{%
+ The first and second parameters in a \noexpand\Hyperbola
+ command\MessageBreak
+ must be, respectively, lesser than the third and
+ the fourth ones.}}
+\def\xpct@Infocfg{\PackageInfo{xpicture}{%
+ Loading local configuration file xpicture.cfg}}
+\def\xpct@Infonocfg{\PackageInfo{xpicture}{%
+ Local configuration file xpicture.cfg does not exists}}
+\newcounter{xpct@counta}
+\newcounter{xpct@countb}
+\newcounter{xpct@step}
+\newcounter{multiput}
+\newdimen\xpct@bxw
+\newdimen\xpct@bxh
+\def\xpct@maxnum{16383.99998}
+\def\makenotics{\ticsfalse}
+\def\maketics{\ticstrue}
+\def\makenolabels{\labelsfalse}
+\def\makelabels{\labelstrue}
+\def\makenogrid{\gridfalse}
+\def\makegrid{\gridtrue}
+\def\externalaxes{\inzeroaxesfalse}
+\def\internalaxes{\inzeroaxestrue}
+\newdimen\axesthickness
+\def\xpct@axeslabelattrib{\axeslabelsize%
+ \pictcolor{\axeslabelcolor}%
+ \mathversion{\axeslabelmathversion}}
+\newdimen\ticsthickness
+\newdimen\ticssize
+\newdimen\secundaryticssize
+\newdimen\gridthickness
+\newdimen\secundarygridthickness
+\def\pictcolor{\@killglue\color}
+\def\standardreferencesystem{\referencesystem(0,0)(1,0)(0,1)}
+\def\referencesystem(#1,#2)(#3,#4)(#5,#6){%
+ \COPY{#1}\xpct@xorigin
+ \COPY{#2}\xpct@yorigin
+ \COPY{#3}\xpct@xI
+ \COPY{#4}\xpct@yI
+ \COPY{#5}\xpct@xII
+ \COPY{#6}\xpct@yII}
+\def\changereferencesystem(#1)(#2)(#3){%
+ \refsysPoint(#1)(\xpct@newx,\xpct@newy)
+ \refsysVector(#2)(\xpct@newux,\xpct@newuy)
+ \refsysVector(#3)(\xpct@newvx,\xpct@newvy)
+ \referencesystem(\xpct@newx,\xpct@newy)(\xpct@newux,\xpct@newuy)%
+ (\xpct@newvx,\xpct@newvy)}
+\def\translateorigin(#1){\changereferencesystem(#1)(1,0)(0,1)}
+\def\rotateaxes#1{%
+ \ifdegrees\DEGREESCOS{#1}\xpct@cosine\DEGREESSIN{#1}\xpct@sine
+ \else\COS{#1}\xpct@cosine\SIN{#1}\xpct@sine\fi
+ \changereferencesystem%
+ (0,0)(\xpct@cosine,\xpct@sine)(-\xpct@sine,\xpct@cosine)}
+\def\symmetrize#1{%
+ \MULTIPLY{2}{#1}{\xpct@sym}
+ \ifdegrees
+ \DEGREESCOS{\xpct@sym}\xpct@cosine\DEGREESSIN{\xpct@sym}\xpct@sine
+ \else
+ \COS{\xpct@sym}\xpct@cosine\SIN{\xpct@sym}\xpct@sine\fi
+ \changereferencesystem%
+ (0,0)(\xpct@cosine,\xpct@sine)(\xpct@sine,-\xpct@cosine)}
+\def\refsysxyVector(#1)(#2,#3){%
+ \MATRIXVECTORPRODUCT%
+ (\xpct@xI,\xpct@xII;\xpct@yI,\xpct@yII)(#1)(#2,#3)}
+\def\refsysxyPoint(#1)(#2,#3){%
+ \MATRIXVECTORPRODUCT(\xpct@xI,\xpct@xII;\xpct@yI,\xpct@yII)(#1)(#2,#3)
+ \VECTORADD(#2,#3)(\xpct@xorigin,\xpct@yorigin)(#2,#3)}
+\def\refsyspVector(#1,#2)(#3,#4){%
+ \polarcoor(#1,#2)(\xpct@polarx,\xpct@polary)
+ \refsysxyVector(\xpct@polarx,\xpct@polary)(#3,#4)}
+\def\refsyspPoint(#1,#2)(#3,#4){%
+ \polarcoor(#1,#2)(\xpct@polarx,\xpct@polary)
+ \refsysxyPoint(\xpct@polarx,\xpct@polary)(#3,#4)}
+\def\cartesianreference{%
+ \def\refsysVector{\refsysxyVector}%
+ \def\refsysPoint{\refsysxyPoint}\polarfalse}
+\def\polarreference{%
+ \def\refsysVector{\refsyspVector}%
+ \def\refsysPoint{\refsyspPoint}\polartrue}
+\def\polarcoor(#1,#2)(#3,#4){%
+ \ifdegrees\DEGREESCOS{#2}{\xpct@Px}\DEGREESSIN{#2}{\xpct@Py}
+ \else\COS{#2}{\xpct@Px}\SIN{#2}{\xpct@Py}\fi
+ \MULTIPLY{\xpct@Px}{#1}{#3}
+ \MULTIPLY{\xpct@Py}{#1}{#4}}
+\def\degreesangles{\degreestrue}
+\def\radiansangles{\degreesfalse}
+\def\Picture{\@ifnextchar[{\xpct@@Picture}{\xpct@Picture}}
+\def\xpct@Picture(#1,#2)(#3,#4){%
+ \refsysxyPoint(#1,#2)(\xpct@xzero,\xpct@yzero)
+ \refsysxyPoint(#3,#4)(\xpct@xone,\xpct@yone)
+ \refsysxyPoint(#1,#4)(\xpct@xtwo,\xpct@ytwo)
+ \refsysxyPoint(#3,#2)(\xpct@xthree,\xpct@ythree)
+ \MIN{\xpct@xzero}{\xpct@xone}{\xpct@xmin}
+ \MIN{\xpct@xmin}{\xpct@xtwo}{\xpct@xmin}
+ \MIN{\xpct@xmin}{\xpct@xthree}{\xpct@xmin}
+ \MIN{\xpct@yzero}{\xpct@yone}{\xpct@ymin}
+ \MIN{\xpct@ymin}{\xpct@ytwo}{\xpct@ymin}
+ \MIN{\xpct@ymin}{\xpct@ythree}{\xpct@ymin}
+ \MAX{\xpct@xzero}{\xpct@xone}{\xpct@xmax}
+ \MAX{\xpct@xmax}{\xpct@xtwo}{\xpct@xmax}
+ \MAX{\xpct@xmax}{\xpct@xthree}{\xpct@xmax}
+ \MAX{\xpct@yzero}{\xpct@yone}{\xpct@ymax}
+ \MAX{\xpct@ymax}{\xpct@ytwo}{\xpct@ymax}
+ \MAX{\xpct@ymax}{\xpct@ythree}{\xpct@ymax}
+ \SUBTRACT{\xpct@xmax}{\xpct@xmin}{\xpct@pictwidth}
+ \SUBTRACT{\xpct@ymax}{\xpct@ymin}{\xpct@pictheight}
+ \begin{picture}(\xpct@pictwidth,\xpct@pictheight)(%
+ \xpct@xmin,\xpct@ymin)
+ \highestlabel{\normalfont\normalsize$1$}
+ \ifdraft
+ \colorlet{backgroundcolor}{lightgray}
+ \xpct@backgrd
+ \put(\xpct@xmin,\xpct@ymin){\line(1,0){\xpct@pictwidth}}
+ \put(\xpct@xmin,\xpct@ymin){\line(0,1){\xpct@pictheight}}
+ \put(\xpct@xmin,\xpct@ymax){\line(1,0){\xpct@pictwidth}}
+ \put(\xpct@xmax,\xpct@ymin){\line(0,1){\xpct@pictheight}}
+ \VECTORADD(\xpct@xmax,\xpct@ymax)(\xpct@xmin,\xpct@ymin)(%
+ \xpct@xmed,\xpct@ymed)
+ \SCALARVECTORPRODUCT{0.5}(\xpct@xmed,\xpct@ymed)(%
+ \xpct@xmed,\xpct@ymed)
+ \put(\xpct@xmed,\xpct@ymed){\makebox(0,0){\scshape xpicture}}
+ \else
+ \ifbg\xpct@backgrd\fi
+ \fi}
+\def\xpct@@Picture[#1](#2,#3)(#4,#5){%
+ \colorlet{backgroundcolor}{#1}%
+ \bgtrue\xpct@Picture(#2,#3)(#4,#5)}
+\def\xpct@backgrd{\begingroup
+ \pictcolor{backgroundcolor}
+ \moveto(\xpct@xzero,\xpct@yzero)
+ \lineto(\xpct@xthree,\xpct@ythree)
+ \lineto(\xpct@xone,\xpct@yone)
+ \lineto(\xpct@xtwo,\xpct@ytwo)
+ \closepath\fillpath
+ \endgroup}
+\def\endPicture{\end{picture}}
+\newenvironment{xpicture}{\begin{Picture}}{\end{Picture}}
+\def\cPut#1(#2,#3)#4{%
+ \COPY{0}{\xpct@CorRput}
+ \xpct@PUT{#1}(#2,#3){#4}}
+\def\rPut{\@ifstar
+ \xpct@rPutstar%
+ \xpct@rPut%
+ }
+\def\Put{\@ifstar
+ \xpct@Putstar%
+ \xpct@Put%
+ }
+\def\defaultPut#1{\def\xpct@tempa{#1}\def\xpct@tempb{r}
+ \ifx\xpct@tempa\xpct@tempb
+ \xpct@Infopos#1
+ \def\xpct@defaultPut{\rPut}
+ \else
+ \xpct@Infopos#1
+ \def\xpct@tempc{c}
+ \ifx\xpct@tempa\xpct@tempc
+ \def\xpct@defaultPut{\cPut}
+ \else
+ \xpct@Warnbadpos
+ \fi\fi}
+\def\highestlabel#1{\settoheight{\xpct@bxh}{#1}%
+ \LENGTHDIVIDE{\xpct@bxh}{\unitlength}{\xpct@rputmxhg}}
+\def\xpct@rPutstar{\rputstartrue\COPY{1}{\xpct@CorRput}\xpct@PUT}
+\def\xpct@rPut{\rputstarfalse\COPY{1}{\xpct@CorRput}\xpct@PUT}
+\def\xpct@Putstar{\@ifnextchar[{\xpct@@Putstar}{\xpct@@Put}}
+\def\xpct@Put{\@ifnextchar[{\xpct@@@Put}{\xpct@@Put}}
+\def\xpct@@Put(#1){\refsysPoint(#1)(\xpct@abscoorx,\xpct@abscoory)
+ \put(\xpct@abscoorx,\xpct@abscoory)}
+\def\xpct@@Putstar[#1](#2)#3{\xpct@convtoang{#1}{\xpct@putpos}{\xpct@CorR}
+ \if\xpct@CorR c
+ \cPut{#1}(#2){#3}
+ \else
+ \rPut*{#1}(#2){#3}
+ \fi}
+\def\xpct@@@Put[#1](#2)#3{\xpct@convtoang{#1}{\xpct@putpos}{\xpct@CorR}
+ \if\xpct@CorR c
+ \cPut{#1}(#2){#3}
+ \else
+ \if\xpct@CorR r
+ \rPut{#1}(#2){#3}
+ \else
+ \xpct@defaultPut{#1}(#2){#3}
+ \fi\fi}
+\def\xpct@PUT#1(#2,#3)#4{%
+ \xpct@alphaput{#1}{\xpct@CorRput}
+ \refsysxyVector(\xpct@xPictsep,\xpct@yPictsep)(\xpct@Posx,\xpct@Posy)
+ \refsysPoint(#2,#3)(\xpct@posx,\xpct@posy)
+ \xpct@alphamove{#4}{\xpct@CorRput}
+ \VECTORADD(\xpct@posx,\xpct@posy)(\xpct@Posx,\xpct@Posy)(%
+ \xpct@Posx,\xpct@Posy)
+ \put(\xpct@Posx,\xpct@Posy){#4}}
+\def\xpct@alphaput#1#2{\def\xpct@tempa{#1}\def\xpct@tempb{c}%
+ \ifx\xpct@tempa\xpct@tempb
+ \COPY{0}{\xpct@xPictsep}\COPY{0}{\xpct@yPictsep}
+ \else
+ \xpct@convtoang{#1}{\xpct@putpos}{\xpct@CorR}
+ \ifnum #2=0
+ \DEGREESCOS{\xpct@putpos}{\xpct@cosine}
+ \DEGREESSIN{\xpct@putpos}{\xpct@sine}
+ \else
+ \qCOS{\xpct@putpos}{\xpct@cosine}
+ \qSIN{\xpct@putpos}{\xpct@sine}
+ \fi
+ \MULTIPLY{\Pictlabelsep}{\xpct@cosine}{\xpct@xPictsep}
+ \MULTIPLY{\Pictlabelsep}{\xpct@sine}{\xpct@yPictsep}
+ \fi}
+\def\xpct@alphamove#1#2{%
+ \xpct@halfbox{#1}{\xpct@amplada}{\xpct@altura}
+ \ifx\xpct@tempa\xpct@tempb
+ \else
+ \ifnum #2=0
+ \UNITVECTOR(\xpct@Posx,\xpct@Posy)(\xpct@xdir,\xpct@ydir)
+ \else
+ \qUNITVECTOR(\xpct@Posx,\xpct@Posy)(\xpct@xdir,\xpct@ydir)
+ \ifrputstar
+ \ifdim\xpct@ydir\p@=-1\p@
+ \DIVIDE{\xpct@rputmxhg}{2}{\xpct@altura}
+ \fi
+ \fi
+ \fi
+ \MULTIPLY{\xpct@ydir}{\xpct@altura}{\xpct@ydir}
+ \MULTIPLY{\xpct@xdir}{\xpct@amplada}{\xpct@xdir}
+ \VECTORADD(\xpct@Posx,\xpct@Posy)(\xpct@xdir,\xpct@ydir)%
+ (\xpct@Posx,\xpct@Posy)
+ \fi
+ \VECTORSUB(\xpct@Posx,\xpct@Posy)(\xpct@amplada,\xpct@altura)(%
+ \xpct@Posx,\xpct@Posy)}
+\def\xpct@convtoang#1#2#3{%
+ \def\xpct@tempc{#1}
+ \def\xpct@tempd{r}\ifx\xpct@tempc\xpct@tempd\COPY{0}{#2}\def#3{r}\else
+ \def\xpct@tempd{tr}\ifx\xpct@tempc\xpct@tempd\COPY{45}{#2}\def#3{r}\else
+ \def\xpct@tempd{t}\ifx\xpct@tempc\xpct@tempd\COPY{90}{#2}\def#3{r}\else
+ \def\xpct@tempd{tl}\ifx\xpct@tempc\xpct@tempd\COPY{135}{#2}\def#3{r}\else
+ \def\xpct@tempd{l}\ifx\xpct@tempc\xpct@tempd\COPY{180}{#2}\def#3{r}
+ \else
+ \def\xpct@tempd{bl}\ifx\xpct@tempc\xpct@tempd\COPY{-135}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{b}\ifx\xpct@tempc\xpct@tempd\COPY{-90}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{br}\ifx\xpct@tempc\xpct@tempd\COPY{-45}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{rtr}\ifx\xpct@tempc\xpct@tempd\COPY{22.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{ttr}\ifx\xpct@tempc\xpct@tempd\COPY{67.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{ttl}\ifx\xpct@tempc\xpct@tempd\COPY{112.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{ltl}\ifx\xpct@tempc\xpct@tempd\COPY{157.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{lbl}\ifx\xpct@tempc\xpct@tempd\COPY{-157.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{bbl}\ifx\xpct@tempc\xpct@tempd\COPY{-112.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{bbr}\ifx\xpct@tempc\xpct@tempd\COPY{-67.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{rbr}\ifx\xpct@tempc\xpct@tempd\COPY{-22.5}{#2}
+ \def#3{r}\else
+ \def\xpct@tempd{E}\ifx\xpct@tempc\xpct@tempd\COPY{0}{#2}\def#3{c}\else
+ \def\xpct@tempd{NE}\ifx\xpct@tempc\xpct@tempd\COPY{45}{#2}\def#3{c}\else
+ \def\xpct@tempd{N}\ifx\xpct@tempc\xpct@tempd\COPY{90}{#2}\def#3{c}\else
+ \def\xpct@tempd{NW}\ifx\xpct@tempc\xpct@tempd\COPY{135}{#2}\def#3{c}\else
+ \def\xpct@tempd{W}\ifx\xpct@tempc\xpct@tempd\COPY{180}{#2}\def#3{c}\else
+ \def\xpct@tempd{SW}\ifx\xpct@tempc\xpct@tempd\COPY{-135}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{S}\ifx\xpct@tempc\xpct@tempd\COPY{-90}{#2}\def#3{c}\else
+ \def\xpct@tempd{SE}\ifx\xpct@tempc\xpct@tempd\COPY{-45}{#2}\def#3{c}\else
+ \def\xpct@tempd{ENE}\ifx\xpct@tempc\xpct@tempd\COPY{22.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{NNE}\ifx\xpct@tempc\xpct@tempd\COPY{67.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{NNW}\ifx\xpct@tempc\xpct@tempd\COPY{112.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{WNW}\ifx\xpct@tempc\xpct@tempd\COPY{157.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{WSW}\ifx\xpct@tempc\xpct@tempd\COPY{-157.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{SSW}\ifx\xpct@tempc\xpct@tempd\COPY{-112.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{SSE}\ifx\xpct@tempc\xpct@tempd\COPY{-67.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{ESE}\ifx\xpct@tempc\xpct@tempd\COPY{-22.5}{#2}
+ \def#3{c}\else
+ \def\xpct@tempd{c}\ifx\xpct@tempc\xpct@tempd\COPY{0}{#2}\def#3{c}\else
+ \COPY{#1}{#2}\def#3{a}
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
+\def\xpct@halfbox#1#2#3{%
+ \settowidth\xpct@bxw{#1}%
+ \settoheight\xpct@bxh{#1}%
+ \LENGTHDIVIDE{\xpct@bxw}{\unitlength}{#2}
+ \LENGTHDIVIDE{\xpct@bxh}{\unitlength}{#3}
+ \MULTIPLY{0.5}{#2}{#2}
+ \MULTIPLY{0.5}{#3}{#3}}
+\def\qCOS#1#2{%
+ \ifdim #1\p@<-135\p@
+ \ADD{360}{#1}{\xpct@angles}\qCOS{\xpct@angles}{#2}
+ \else
+ \ifdim #1\p@>225\p@ \SUBTRACT{#1}{360}{\xpct@angles}
+ \qCOS{\xpct@angles}{#2}
+ \else
+ \ifdim #1\p@<-45\p@ \DEGREESCOT{#1}{#2}\MULTIPLY{-1}{#2}{#2}
+ \else
+ \ifdim #1\p@<45\p@ \COPY{1}{#2}
+ \else
+ \ifdim #1\p@<135\p@ \DEGREESCOT{#1}{#2}
+ \else
+ \COPY{-1}{#2}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\qSIN#1#2{%
+ \ifdim #1\p@<-135\p@
+ \ADD{360}{#1}{\xpct@angles}\qSIN{\xpct@angles}{#2}
+ \else
+ \ifdim #1\p@>225\p@ \SUBTRACT{#1}{360}{\xpct@angles}
+ \qSIN{\xpct@angles}{#2}
+ \else
+ \ifdim #1\p@<-45\p@ \COPY{-1}{#2}
+ \else
+ \ifdim #1\p@<45\p@ \DEGREESTAN{#1}{#2}
+ \else
+ \ifdim #1\p@<135\p@ \COPY{1}{#2}
+ \else
+ \DEGREESTAN{#1}{#2}\MULTIPLY{-1}{#2}{#2}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+\def\qUNITVECTOR(#1,#2)(#3,#4){%
+ \VECTORCOPY(#1,#2)(#3,#4)
+ \ABSVALUE{#4}{\xpct@Ydir}
+ \ifdim \xpct@Ydir\p@ < 0.00005\p@
+ \COPY{\xpct@maxnum}{\xpct@tan}
+ \else
+ \DIVIDE{#3}{#4}{\xpct@tan}
+ \fi
+ \ifdim #3\p@ > 0\p@
+ \ifdim #4\p@ > 0\p@
+ \ifdim #3\p@ > #4\p@
+ \COPY{1}{#3}\DIVIDE{#4}{\xpct@tan}{#4}
+ \else
+ \COPY{1}{#4}\COPY{\xpct@tan}{#3}
+ \fi
+ \else
+ \ifdim #3\p@ > -#4\p@
+ \COPY{1}{#3}\DIVIDE{-#4}{\xpct@tan}{#4}
+ \else
+ \COPY{-1}{#4}\MULTIPLY{-1}{\xpct@tan}{#3}
+ \fi
+ \fi
+ \else
+ \ifdim #4\p@ > 0\p@
+ \ifdim -#3\p@ > #4\p@
+ \COPY{-1}{#3}\DIVIDE{-#4}{\xpct@tan}{#4}
+ \else
+ \COPY{1}{#4}\COPY{\xpct@tan}{#3}
+ \fi
+ \else
+ \ifdim #3\p@ > #4\p@
+ \COPY{-1}{#4}\COPY{-\xpct@tan}{#3}
+ \else
+ \COPY{-1}{#3}\DIVIDE{#4}{\xpct@tan}{#4}
+ \fi
+ \fi
+ \fi
+}
+\def\multicPut#1{\def\xpct@mPut{\cPut{#1}}\xpct@@mPut}
+\def\multirPut{\@ifstar
+ \xpct@multirPutstar%
+ \xpct@multirPut%
+ }
+\def\multiPut{\@ifstar
+ \xpct@multiPutstar%
+ \xpct@multiPut%
+ }
+\def\xpct@multirPutstar#1{\def\xpct@mPut{\rPut*{#1}}\xpct@@mPut}
+\def\xpct@multirPut#1{\def\xpct@mPut{\rPut{#1}}\xpct@@mPut}
+\def\xpct@multiPut{\@ifnextchar[{\xpct@@@multiPut}{\xpct@@multiPut}}
+\def\xpct@multiPutstar{\@ifnextchar[{\xpct@@@multiPutstar}{\xpct@@multiPutstar}}
+\def\xpct@@multiPut{\def\xpct@mPut{\Put}\xpct@@mPut}
+\def\xpct@@multiPutstar{\def\xpct@mPut{\Put*}\xpct@@mPut}
+\def\xpct@@@multiPut[#1]{\def\xpct@mPut{\Put[#1]}\xpct@@mPut}
+\def\xpct@@@multiPutstar[#1]{\def\xpct@mPut{\Put*[#1]}\xpct@@mPut}
+\def\xpct@@mPut(#1,#2)(#3,#4)#5#6{%
+ \COPY{#1}\xpct@@abscoorx\COPY{#2}\xpct@@abscoory
+ \setcounter{multiput}{0}%
+ \@whilenum\value{multiput}<#5 \do
+ {\xpct@mPut(\xpct@@abscoorx,\xpct@@abscoory){#6}
+ \ADD{#3}\xpct@@abscoorx\xpct@@abscoorx
+ \ADD{#4}\xpct@@abscoory\xpct@@abscoory
+ \stepcounter{multiput}}}
+\def\multicPlot#1#2(#3){\cPut{#1}(#3){#2}\@ifnextchar({\multicPlot{#1}{#2}}{}}
+\def\multirPlot{\@ifstar
+ \xpct@multirPlotstar%
+ \xpct@multirPlot%
+ }
+\def\multiPlot{\@ifstar
+ \xpct@multiPlotstar%
+ \xpct@multiPlot%
+ }
+\def\xpct@multirPlotstar#1#2(#3){\rPut*{#1}(#3){#2}
+ \@ifnextchar({\xpct@multirPlotstar{#1}{#2}}{}}
+\def\xpct@multirPlot#1#2(#3){\rPut{#1}(#3){#2}
+ \@ifnextchar({\xpct@multirPlot{#1}{#2}}{}}
+\def\xpct@multiPlotstar{%
+ \@ifnextchar[{\xpct@@@multiPlotstar}{\xpct@@multiPlotstar}}
+\def\xpct@multiPlot{\@ifnextchar[{\xpct@@@multiPlot}{\xpct@@multiPlot}}
+\def\xpct@@multiPlot#1(#2){\Put(#2){#1}\@ifnextchar({\xpct@@multiPlot{#1}}{}}
+\def\xpct@@@multiPlot[#1]#2(#3){\Put[#1](#3){#2}
+ \@ifnextchar({\xpct@@@multiPlot[#1]{#2}}{}}
+\def\xpct@@multiPlotstar#1(#2){\Put*(#2){#1}
+ \@ifnextchar({\xpct@@multiPlotstar{#1}}{}}
+\def\xpct@@@multiPlotstar[#1]#2(#3){\Put*[#1](#3){#2}
+ \@ifnextchar({\xpct@@@multiPlotstar[#1]{#2}}{}}
+\def\xLINE(#1)(#2){%
+ \refsysPoint(#1)(\xpct@xzero,\xpct@yzero)
+ \refsysPoint(#2)(\xpct@xone,\xpct@yone)
+ \xpct@strline(\xpct@xzero,\xpct@yzero)(\xpct@xone,\xpct@yone)}
+\let\strline\xLINE
+\def\xpct@strline{\@killglue\@ifundefined{segment}{\LINE}{\segment}}
+\def\xVECTOR(#1)(#2){%
+ \refsysPoint(#1)(\xpct@xzero,\xpct@yzero)
+ \refsysPoint(#2)(\xpct@xone,\xpct@yone)
+ \VECTOR(\xpct@xzero,\xpct@yzero)(\xpct@xone,\xpct@yone)}
+\def\xtrivVECTOR(#1)(#2){%
+ \refsysPoint(#1)(\xpct@xzeropoint,\xpct@yzeropoint)
+ \refsysPoint(#2)(\xpct@xonepoint,\xpct@yonepoint)
+ \xpct@xtrivVECTOR(\xpct@xzeropoint,\xpct@yzeropoint)(%
+ \xpct@xonepoint,\xpct@yonepoint)}
+\def\arrowsize#1#2{\COPY{#1}{\xpct@xarrowlen}
+ \COPY{#2}{\xpct@yarrowlen}}
+\def\xpct@xtrivVECTOR(#1)(#2){%
+ \xpct@strline(#1)(#2)
+ \VECTORSUB(#2)(#1)(\xpct@xarrow,\xpct@yarrow)
+ \VECTORNORM(\xpct@xarrow,\xpct@yarrow){\xpct@xarrowunit}
+ \DIVIDE{\xpct@xarrow}{\xpct@xarrowunit}{\xpct@xarrow}
+ \DIVIDE{\xpct@yarrow}{\xpct@xarrowunit}{\xpct@yarrow}
+ \xpct@arrow(#2){\xpct@xarrow}{\xpct@yarrow}}
+\def\xpct@arrow(#1)#2#3{\begingroup%
+ \referencesystem(#1)(#2,#3)(-#3,#2)
+ \Put(0,0){\setlength{\unitlength}{1pt}%
+ \begin{Picture}(0,0)(0,0)\cartesianreference
+ \xLINE(-\xpct@xarrowlen,\xpct@yarrowlen)(0,0)
+ \xLINE(0,0)(-\xpct@xarrowlen,-\xpct@yarrowlen)
+ \end{Picture}}\endgroup}
+\def\zerovector(#1){%
+ \UNITVECTOR(#1)(\xpct@dirx,\xpct@diry)
+ \SCALARVECTORPRODUCT{0.01}(\xpct@dirx,\xpct@diry)(\xpct@dirx,\xpct@diry)
+ \xVECTOR(0,0)(\xpct@dirx,\xpct@diry)}
+\def\zerotrivvector(#1){%
+ \UNITVECTOR(#1)(\xpct@dirx,\xpct@diry)
+ \SCALARVECTORPRODUCT{0.01}(\xpct@dirx,\xpct@diry)(\xpct@dirx,\xpct@diry)
+ \xtrivVECTOR(0,0)(\xpct@dirx,\xpct@diry)}
+\def\xline(#1,#2)#3{%
+ \xpct@xline(#1,#2){#3}
+ \xLINE(0,0)(\xpct@@xdir,\xpct@@ydir)}
+
+\def\xvector(#1,#2)#3{%
+ \ifdim #3 pt = 0 pt \zerovector(#1,#2)
+ \else
+ \xpct@xline(#1,#2){#3}
+ \xVECTOR(0,0)(\xpct@@xdir,\xpct@@ydir)
+ \fi}
+
+\def\xtrivvector(#1,#2)#3{%
+ \ifdim #3 pt = 0 pt \zerotrivvector(#1,#2)
+ \else
+ \xpct@xline(#1,#2){#3}
+ \xtrivVECTOR(0,0)(\xpct@@xdir,\xpct@@ydir)
+ \fi}
+\def\xpct@xline(#1,#2)#3{%
+ \ABSVALUE{#1}{\xpct@modx}
+ \ifdim \xpct@modx pt < 0.0001 pt
+ \COPY{0}{\xpct@@xdir}
+ \ifdim #2\p@>\z@ \COPY{#3}{\xpct@@ydir}
+ \else \MULTIPLY{-1}{#3}{\xpct@@ydir}
+ \fi
+ \else
+ \DIVIDE{#1}{\xpct@modx}{\xpct@@xdir}
+ \DIVIDE{#2}{\xpct@modx}{\xpct@@ydir}
+ \SCALARVECTORPRODUCT{#3}(\xpct@@xdir,\xpct@@ydir)(%
+ \xpct@@xdir,\xpct@@ydir)
+ \fi}
+\def\Polyline(#1)(#2){%
+ \xLINE(#1)(#2)\@ifnextchar({\Polyline(#2)}{}}
+\def\Polygon(#1,#2)(#3){%
+ \COPY{#1}{\xpct@firstx}\COPY{#2}{\xpct@firsty}
+ \xpct@Polygon(#1,#2)(#3)}
+\def\xpct@Polygon(#1)(#2){%
+ \xLINE(#1)(#2)\@ifnextchar({\xpct@Polygon(#2)}{%
+ \xLINE(#2)(\xpct@firstx,\xpct@firsty)}}
+\def\regularPolygon{%
+ \@ifnextchar[{\xpct@regPolygon}{\xpct@@regPolygon}}
+\def\xpct@@regPolygon#1#2{\xpct@regPolygon[0]{#1}{#2}}
+\def\xpct@regPolygon[#1]#2#3{\begingroup%
+ \polarreference\degreesangles
+ \setcounter{xpct@counta}{0}%
+ \setcounter{xpct@countb}{#3}%
+ \DIVIDE{360}{#3}{\xpct@angles}
+ \COPY{#1}{\xpct@anglea}
+ \@whilenum\value{xpct@counta}<\value{xpct@countb} \do {%
+ \ADD{\xpct@anglea}{\xpct@angles}{\xpct@angleb}
+ \xLINE(#2,\xpct@anglea)(#2,\xpct@angleb)
+ \COPY{\xpct@angleb}{\xpct@anglea}\stepcounter{xpct@counta}}
+ \endgroup}
+\def\xpct@ctrlpoint(#1,#2)(#3,#4)(#5,#6)(#7,#8){%
+ \DETERMINANT(#3,#4;#7,#8)\xpct@detA
+ \DETERMINANT(#1,#2;#3,#4)\xpct@detB
+ \DETERMINANT(#5,#6;#7,#8)\xpct@detC
+ \DETERMINANT(#3,#7;\xpct@detB,\xpct@detC)\xpct@detD
+ \DETERMINANT(#4,#8;\xpct@detB,\xpct@detC)\xpct@detE
+ \ABSVALUE{\xpct@detA}{\xpct@@detA}
+ \ABSVALUE{\xpct@detD}{\xpct@@detD}
+ \ABSVALUE{\xpct@detE}{\xpct@@detE}
+ \ifdim \xpct@@detA pt<0.00005 pt
+ \ifdim \xpct@@detD pt<0.00005 pt %\xpct@detD pt=0 pt
+ \ifdim \xpct@@detE pt<0.00005 pt %\xpct@detE pt=0 pt
+ \ADD{#1}{#5}{\xpct@solx}\DIVIDE{\xpct@solx}{2}{\xpct@solx}
+ \ADD{#2}{#6}{\xpct@soly}\DIVIDE{\xpct@soly}{2}{\xpct@soly}
+ \fi\else
+ \xpct@WarnIncSys(#1,#2)(#5,#6)
+ \let\xpct@solx\undefined\let\xpct@soly\undefined
+ \fi
+ \else
+ \DIVIDE{\xpct@detD}{\xpct@detA}{\xpct@solx}
+ \DIVIDE{\xpct@detE}{\xpct@detA}{\xpct@soly}
+ \fi}
+\def\qCurve(#1){\@ifnextchar({\xpct@@qCurve(#1)}{\xpct@@@qCurve(#1)}}
+\def\xpct@@qCurve(#1)(#2)(#3)(#4){%
+ \refsysPoint(#1)(\xpct@@xzero,\xpct@@yzero)
+ \refsysPoint(#3)(\xpct@@xone,\xpct@@yone)
+ \refsysVector(#2)(\xpct@@dxzero,\xpct@@dyzero)
+ \refsysVector(#4)(\xpct@@dxone,\xpct@@dyone)
+ \xpct@qCurve(\xpct@@xzero,\xpct@@yzero)(\xpct@@dxzero,\xpct@@dyzero)(%
+ \xpct@@xone,\xpct@@yone)%
+ (\xpct@@dxone,\xpct@@dyone)}
+\def\xpct@@@qCurve(#1)#2(#3)#4{%
+ \ifpolar
+ \qCurve(#1)(1,#2)(#3)(1,#4)
+ \else
+ \DEGREESCOS{#2}{\xpct@angxz}
+ \DEGREESSIN{#2}{\xpct@angyz}
+ \DEGREESCOS{#4}{\xpct@angxo}
+ \DEGREESSIN{#4}{\xpct@angyo}
+ \qCurve(#1)(\xpct@angxz,\xpct@angyz)(#3)%
+ (\xpct@angxo,\xpct@angyo)\fi}
+\def\xpct@qCurve(#1)(#2)(#3)(#4){%
+ \xpct@ctrlpoint(#1)(#2)(#3)(#4)
+ \ifx\xpct@solx\undefined
+ \else
+ \qbezier(#1)(\xpct@solx,\xpct@soly)(#3)\fi\ignorespaces}
+\def\PlotQuadraticCurve(#1){%
+ \@ifnextchar({\xpct@PlotQuadraticCurve(#1)}{%
+ \xpct@@PlotQuadraticCurve(#1)}}
+\def\xpct@PlotQuadraticCurve(#1)(#2)(#3)(#4){%
+ \qCurve(#1)(#2)(#3)(#4)
+ \@ifnextchar({\PlotQuadraticCurve(#3)(#4)}{}}
+\def\xpct@@PlotQuadraticCurve(#1)#2(#3)#4{%
+ \qCurve(#1){#2}(#3){#4}
+ \@ifnextchar({\PlotQuadraticCurve(#3){#4}}{}}
+\newvectorfunction{\xpct@circulararc}{%
+ \ifdegrees
+ \DEGREESCOS{\t}{\x}
+ \DEGREESSIN{\t}{\y}
+ \COPY{\x}{\Dy}
+ \MULTIPLY{-1}{\y}{\Dx}
+ \else
+ \COS{\t}{\x}
+ \SIN{\t}{\y}
+ \COPY{\x}{\Dy}
+ \MULTIPLY{-1}{\y}{\Dx}
+ \fi}
+\newvectorfunction{\xpct@hyperbolicarc}{%
+ \DIVIDE{1}{\t}{\xpct@invt}
+ \ADD{\t}{\xpct@invt}{\x}
+ \SUBTRACT{\t}{\xpct@invt}{\y}
+ \MULTIPLY{0.5}{\x}{\x}
+ \MULTIPLY{0.5}{\y}{\y}
+ \COPY{\x}{\Dy}
+ \COPY{\y}{\Dx}}
+\newvectorfunction{\xpct@parabolicarc}{%
+ \COPY{\t}{\y}
+ \COPY{1}{\Dy}
+ \SQUARE{\t}{\x}
+ \MULTIPLY{2}{\t}{\Dx}}
+\def\circularArc#1#2#3{\ellipticArc{#1}{#1}{#2}{#3}}
+\let\xArc\circularArc
+\def\ellipticArc#1#2#3#4{%
+ \begingroup
+ \cartesianreference
+ \changereferencesystem(0,0)(#1,0)(0,#2)
+ \PlotParametricFunction[\defaultplotdivs]{\xpct@circulararc}{#3}{#4}
+ \endgroup\ignorespaces}
+\def\Circle#1{\begingroup\radiansangles
+ \circularArc{#1}{0}{\numberTWOPI}\endgroup\ignorespaces}
+\def\Ellipse#1#2{\begingroup\radiansangles
+ \ellipticArc{#1}{#2}{0}{\numberTWOPI}
+ \endgroup\ignorespaces}
+\def\lhyperbolicArc#1#2#3#4{%
+ \begingroup
+ \changereferencesystem(0,0)(-1,0)(0,1)
+ \rhyperbolicArc{#1}{#2}{#3}{#4}
+ \endgroup}
+\def\rhyperbolicArc#1#2#3#4{%
+ \xpct@hypluy{#2}{#3}{\xpct@uone}
+ \xpct@hypluy{#2}{#4}{\xpct@utwo}
+ \xpct@hyperbolicArc{#1}{#2}{\xpct@uone}{\xpct@utwo}}
+\def\xpct@hyperbolicArc#1#2#3#4{%
+ \begingroup
+ \cartesianreference
+ \changereferencesystem(0,0)(#1,0)(0,#2)
+ \PlotParametricFunction[\defaultplotdivs]{\xpct@hyperbolicarc}{#3}{#4}
+ \endgroup}
+\def\lHyperbola#1#2#3#4{%
+ \begingroup
+ \changereferencesystem(0,0)(-1,0)(0,1)
+ \rHyperbola{#1}{#2}{#3}{#4}
+ \endgroup}
+\def\rHyperbola#1#2#3#4{%
+ \def\xpct@hycons{}\xpct@hypconsist{#1}{#3}%
+ \ifx\xpct@hycons\undefined
+ \else
+ \xpct@hyperbolalastu{#1}{#2}{#3}{#4}
+ \DIVIDE{1}{\xpct@umax}{\xpct@umin}
+ \xpct@hyperbolicArc{#1}{#2}{\xpct@umin}{1}
+ \xpct@hyperbolicArc{#1}{#2}{1}{\xpct@umax}
+ \fi}
+\def\Hyperbola#1#2#3#4{%
+ \begingroup
+ \def\xpct@hycons{}\xpct@hypconsist{#1}{#3}%
+ \ifx\xpct@hycons\undefined
+ \else
+ \xpct@hyperbolalastu{#1}{#2}{#3}{#4}
+ \DIVIDE{1}{\xpct@umax}{\xpct@umin}
+ \xpct@hyperbolicArc{#1}{#2}{\xpct@umin}{1}
+ \xpct@hyperbolicArc{#1}{#2}{1}{\xpct@umax}
+ \changereferencesystem(0,0)(-1,0)(0,1)
+ \xpct@hyperbolicArc{#1}{#2}{\xpct@umin}{1}
+ \xpct@hyperbolicArc{#1}{#2}{1}{\xpct@umax}
+ \fi\endgroup}
+\def\xpct@hypconsist#1#2{%
+ \ifnum #1<#2\else\xpct@ErrHypCons
+ \let\xpct@hycons\undefined\fi}
+\def\xpct@hyperbolalastu#1#2#3#4{%
+ \xpct@hyplux{#1}{#3}{\xpct@umaxx}
+ \xpct@hypluy{#2}{#4}{\xpct@umaxy}
+ \MIN{\xpct@umaxx}{\xpct@umaxy}{\xpct@umax}}
+\def \xpct@hyplux#1#2#3{%
+ \DIVIDE{#2}{#1}{\xpct@xa}
+ \SQUARE{\xpct@xa}{#3}
+ \SUBTRACT{#3}{1}{#3}
+ \SQUAREROOT{#3}{\xpct@@umaxx}
+ \ADD{\xpct@xa}{\xpct@@umaxx}{#3}}
+\def \xpct@hypluy#1#2#3{%
+ \DIVIDE{#2}{#1}{\xpct@xa}
+ \SQUARE{\xpct@xa}{#3}
+ \ADD{#3}{1}{#3}
+ \SQUAREROOT{#3}{\xpct@@umaxx}
+ \ADD{\xpct@xa}{\xpct@@umaxx}{#3}}
+\def\parabolicArc#1#2#3{%
+ \begingroup
+ \changereferencesystem(0,0)(#1,0)(0,1)
+ \PlotParametricFunction[\defaultplotdivs]{\xpct@parabolicarc}{#2}{#3}
+ \endgroup}
+\def\Parabola#1#2#3{%
+ \xpct@parabolalasty{#1}{#2}{#3}
+ \parabolicArc{#1}{-\xpct@maxy}{0}
+ \parabolicArc{#1}{0}{\xpct@maxy}}
+\def\xpct@parabolalasty#1#2#3{%
+ \ABSVALUE{#1}{\xpct@@maxy}
+ \DIVIDE{#2}{\xpct@@maxy}{\xpct@@maxy}
+ \SQUAREROOT{\xpct@@maxy}{\xpct@maxy}
+ \MIN{\xpct@maxy}{#3}{\xpct@maxy}}
+\def\PlotFunction{%
+ \@ifnextchar[{\xpct@iterateplotfunction}{\xpct@plotfunction}}
+\def\xpct@iterateplotfunction[#1]#2#3#4{%
+\setcounter{xpct@step}{0}%
+\COPY{#3}{\xpct@oldt}
+\SUBTRACT{#4}{#3}{\xpct@step}
+\DIVIDE{\xpct@step}{#1}{\xpct@step}
+\@whilenum \value{xpct@step}<#1 \do
+ {\ADD{\xpct@oldt}{\xpct@step}{\xpct@newt}
+ \xpct@plotfunction{#2}{\xpct@oldt}{\xpct@newt}
+ \stepcounter{xpct@step}%
+ \COPY\xpct@newt\xpct@oldt
+}}
+\def\xpct@plotfunction#1#2#3{\@killglue%
+ #1{#2}{\yzero}{\Dyzero}%
+ #1{#3}{\yone}{\Dyone}%
+ \PlotxyDyData(#2,\yzero,\Dyzero)(#3,\yone,\Dyone)
+ \ifx\xpct@solx\undefined
+ \ADD{#2}{#3}{\xpct@middt}
+ \MULTIPLY{0.5}{\xpct@middt}{\xpct@middt}
+ \xpct@plotfunction{#1}{#2}{\xpct@middt}
+ \xpct@plotfunction{#1}{\xpct@middt}{#3}
+ \fi}
+\def\PlotPointsOfFunction#1#2#3#4{%
+ \setcounter{xpct@step}{0}%
+\COPY{#3}{\xpct@oldt}
+\SUBTRACT{#4}{#3}{\xpct@step}
+\DIVIDE{\xpct@step}{#1}{\xpct@step}
+\ADD{#1}{1}{\xpct@lastt}
+\@whilenum \value{xpct@step}<\xpct@lastt \do
+ {\ADD{\xpct@oldt}{\xpct@step}{\xpct@newt}
+ #2{\xpct@oldt}{\xpct@oldy}{\xpct@oldDy}
+ \Put[c](\xpct@oldt,\xpct@oldy){\pointmark}
+ \stepcounter{xpct@step}%
+ \COPY\xpct@newt\xpct@oldt
+}}
+\def\PlotxyDyData(#1,#2,#3)(#4,#5,#6){%
+ \qCurve(#1,#2)(1,#3)(#4,#5)(1,#6)
+ \@ifnextchar({\PlotxyDyData(#4,#5,#6)}{}}
+\def\PlotParametricFunction{%
+ \@ifnextchar[{\xpct@iterateplotpfunction}{\xpct@plotpfunction}}
+\def\xpct@iterateplotpfunction[#1]#2#3#4{%
+\setcounter{xpct@step}{0}%
+\COPY{#3}{\xpct@oldt}
+\SUBTRACT{#4}{#3}{\xpct@step}
+\DIVIDE{\xpct@step}{#1}{\xpct@step}
+\@whilenum \value{xpct@step}<#1 \do
+ {\ADD{\xpct@oldt}{\xpct@step}{\xpct@newt}
+ \xpct@plotpfunction{#2}{\xpct@oldt}{\xpct@newt}
+ \stepcounter{xpct@step}%
+ \COPY\xpct@newt\xpct@oldt}\ignorespaces}
+\def\xpct@plotpfunction#1#2#3{%
+ \begingroup
+ #1{#2}\xzero\Dxzero\yzero\Dyzero
+ #1{#3}\xone\Dxone\yone\Dyone
+ \cartesianreference
+ \qCurve(\xzero,\yzero)(\Dxzero,\Dyzero)(\xone,\yone)(\Dxone,\Dyone)
+ \endgroup\ignorespaces}
+\def\cartesiangrid(#1,#2)(#3,#4){%
+ \begingroup\gridtrue\cartesianaxes(#1,#2)(#3,#4)\endgroup}
+\def\cartesianaxes(#1,#2)(#3,#4){%
+ \begingroup\cartesianreference
+ \GLOBALCOPY{#1}{\xpct@XZero}\GLOBALCOPY{#2}{\xpct@YZero}
+ \GLOBALCOPY{#3}{\xpct@XOne}\GLOBALCOPY{#4}{\xpct@YOne}
+ \iftics
+ \ticslabelsgridtrue
+ \else
+ \iflabels
+ \ticslabelsgridtrue
+ \else
+ \ifgrid
+ \ticslabelsgridtrue
+ \fi\fi\fi
+ \ifticslabelsgrid
+ \xpct@plotticslabels
+ \fi
+ \xpct@plotaxes\endgroup}
+\def\plotxtic#1{%
+ \maketics
+ \xpct@adjticssize
+ \xpct@adjxorytics{#1}{0}
+ \xpct@printtic}
+\def\plotytic#1{%
+ \maketics
+ \xpct@adjticssize
+ \xpct@adjxorytics{#1}{1}
+ \xpct@printtic}
+\def\printxlabel#1#2{%
+ \xpct@adjticssize
+ \xpct@adjxorytics{#1}{0}
+ \xpct@printlabel{0}{#2}}
+\def\printylabel#1#2{%
+ \xpct@adjticssize
+ \xpct@adjxorytics{#1}{1}
+ \xpct@printlabel{1}{#2}}
+\def\printxticlabel#1#2{\plotxtic{#1}\printxlabel{#1}{#2}}
+\def\printyticlabel#1#2{\plotytic{#1}\printylabel{#1}{#2}}
+\def\plotxtics{\xpct@plottics{0}}
+\def\plotytics{\xpct@plottics{1}}
+\def\printxlabels{%
+ \@ifnextchar[{\xpct@printlabels{0}}{\xpct@printlabels{0}[-1]}}
+\def\printylabels{%
+ \@ifnextchar[{\xpct@printlabels{1}}{\xpct@printlabels{1}[-1]}}
+\def\printxticslabels{%
+ \@ifnextchar[{\xpct@printxticslabels}{\xpct@printxticslabels[-1]}}
+\def\printyticslabels{%
+ \@ifnextchar[{\xpct@printyticslabels}{\xpct@printyticslabels[-1]}}
+
+\def\xpct@plotaxes{\linethickness{\axesthickness}%
+ \pictcolor{\axescolor}
+ \ifinzeroaxes
+ \xLINE(\xpct@XZero,0)(\xpct@XOne,0)
+ \xLINE(0,\xpct@YZero)(0,\xpct@YOne)
+ \else
+ \xLINE(\xpct@XZero,\xpct@YZero)(\xpct@XOne,\xpct@YZero)
+ \xLINE(\xpct@XZero,\xpct@YZero)(\xpct@XZero,\xpct@YOne)
+ \fi}
+\def\xpct@plotticslabels{%
+ \xpct@adjticssize
+ \xpct@plotxticslabels\xpct@plotyticslabels}
+\def\xpct@plotxticslabels{%
+ \ifgrid\xpct@plotgrid\fi
+ \begingroup
+ \ifnum\xunitdivisions=1
+ \xpct@ticsinterval{\xpct@XZero}{\xpct@XOne}
+ \xpct@plotxtics
+ \else
+ \begingroup
+ \xpct@adjstics
+ \MULTIPLY{\secundaryyticssize}{\yunitdivisions}{\yticssize}
+ \makenolabels
+ \def\xunitdivisions{1}
+ \xpct@plotxticslabels
+ \endgroup
+ \def\xunitdivisions{1}
+ \xpct@plotxticslabels
+ \fi
+ \endgroup}
+\def\xpct@plotyticslabels{%
+ \begingroup
+ \ifnum\yunitdivisions=1
+ \xpct@ticsinterval{\xpct@YZero}{\xpct@YOne}
+ \xpct@plotytics
+ \else
+ \begingroup
+ \xpct@adjstics
+ \MULTIPLY{\secundaryxticssize}{\xunitdivisions}{\xticssize}
+ \makenolabels
+ \def\yunitdivisions{1}
+ \xpct@plotyticslabels
+ \endgroup
+ \def\yunitdivisions{1}
+ \xpct@plotyticslabels
+ \fi
+ \endgroup}
+\def\xpct@adjstics{%
+ \MULTIPLY{\xpct@XZero}{\xunitdivisions}{\xpct@XZero}
+ \MULTIPLY{\xpct@YZero}{\yunitdivisions}{\xpct@YZero}
+ \MULTIPLY{\xpct@XOne}{\xunitdivisions}{\xpct@XOne}
+ \MULTIPLY{\xpct@YOne}{\yunitdivisions}{\xpct@YOne}
+ \DIVIDE{1}{\xunitdivisions}{\xpct@xunit}
+ \DIVIDE{1}{\yunitdivisions}{\xpct@yunit}
+ \changereferencesystem(0,0)(\xpct@xunit,0)(0,\xpct@yunit)
+ \def\gridthickness{\secundarygridthickness}
+ \def\gridcolor{\secundarygridcolor}}
+\def\xpct@plotxtics{\xpct@maketics{\xpct@firstint}{\xpct@numtics}{0}}
+\def\xpct@plotytics{\xpct@maketics{\xpct@firstint}{\xpct@numtics}{1}}
+\def\xpct@maketics#1#2#3{%
+ \xpct@adjxorytics{#1}{#3}
+ \setcounter{xpct@counta}{0}%
+ \iflabels\setcounter{xpct@countb}{#1}\fi
+ \@whilenum \value{xpct@counta}<#2 \do {%
+ \iftics
+ \xpct@printtic
+ \fi
+ \iflabels
+ \highestlabel{\xpct@axeslabelattrib%
+ $\axeslabelmathalphabet{1}$}%
+ \xpct@printlabel{#3}{\thexpct@countb}
+ \stepcounter{xpct@countb}%
+ \fi
+ \stepcounter{xpct@counta}%
+ \VECTORADD(\xpct@@xzero,\xpct@@yzero)(\xpct@@xincr,\xpct@@yincr)%
+ (\xpct@@xzero,\xpct@@yzero)
+ \VECTORADD(\xpct@@xone,\xpct@@yone)(\xpct@@xincr,\xpct@@yincr)%
+ (\xpct@@xone,\xpct@@yone)
+ }}
+\def\xpct@adjxorytics#1#2{%
+ \ifnum #2=0
+ \COPY{#1}{\xpct@@xzero}
+ \COPY{-\yticssize}{\xpct@@yzero}
+ \COPY{#1}{\xpct@@xone}
+ \COPY{\yticssize}{\xpct@@yone}
+ \COPY{1}{\xpct@@xincr}
+ \COPY{0}{\xpct@@yincr}
+ \ifinzeroaxes\else
+ \ADD{\xpct@YZero}{\xpct@@yzero}{\xpct@@yzero}
+ \ADD{\xpct@YZero}{\xpct@@yone}{\xpct@@yone}
+ \fi
+ \else
+ \COPY{#1}{\xpct@@yzero}
+ \COPY{-\xticssize}{\xpct@@xzero}
+ \COPY{#1}{\xpct@@yone}
+ \COPY{\xticssize}{\xpct@@xone}
+ \COPY{1}{\xpct@@yincr}
+ \COPY{0}{\xpct@@xincr}
+ \ifinzeroaxes\else
+ \ADD{\xpct@XZero}{\xpct@@xzero}{\xpct@@xzero}
+ \ADD{\xpct@XZero}{\xpct@@xone}{\xpct@@xone}
+ \fi
+ \fi}
+\def\xpct@printtic{\pictcolor{\ticscolor}
+ \linethickness{\ticsthickness}
+ \xLINE(\xpct@@xzero,\xpct@@yzero)(\xpct@@xone,\xpct@@yone)}
+\def\xpct@adjticssize{%
+ \LENGTHDIVIDE{\ticssize}{\unitlength}{\xpct@ticssize}
+ \LENGTHDIVIDE{\secundaryticssize}{\unitlength}{\xpct@sticssize}
+ \refsysxyVector(1,0)(\xpct@a,\xpct@b)
+ \VECTORNORM(\xpct@a,\xpct@b){\xpct@norm}
+ \DIVIDE{\xpct@ticssize}{\xpct@norm}{\xticssize}
+ \DIVIDE{\xpct@sticssize}{\xpct@norm}{\secundaryxticssize}
+ \DIVIDE{\axislabelsep}{\xpct@norm}{\xpct@xaxislabelsep}
+ \refsysxyVector(0,1)(\xpct@a,\xpct@b)
+ \VECTORNORM(\xpct@a,\xpct@b){\xpct@norm}
+ \DIVIDE{\xpct@ticssize}{\xpct@norm}{\yticssize}
+ \DIVIDE{\xpct@sticssize}{\xpct@norm}{\secundaryyticssize}
+ \DIVIDE{\axislabelsep}{\xpct@norm}{\xpct@yaxislabelsep}}
+\def\xpct@printlabel#1#2{%
+ \iftics
+ \ifnum #1=0
+ \ADD{\yticssize}{\xpct@yaxislabelsep}{\Pictlabelsep}
+ \else
+ \ADD{\xticssize}{\xpct@xaxislabelsep}{\Pictlabelsep}
+ \fi
+ \else
+ \ifnum #1=0
+ \COPY{\xpct@yaxislabelsep}{\Pictlabelsep}
+ \else
+ \COPY{\xpct@xaxislabelsep}{\Pictlabelsep}
+ \fi
+ \fi
+ \ifinzeroaxes
+ \ifnum\thexpct@countb=0
+ \else
+ \ifnum #1=0
+ \rPut*{\xpct@xlblpos}(\xpct@@xzero,0){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{#2}}}
+ \else
+ \rPut*{\xpct@ylblpos}(0,\xpct@@yzero){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{#2}}}
+ \fi
+ \fi
+ \else
+ \ifnum #1=0
+ \rPut*{\xpct@xlblpos}(\xpct@@xzero,\xpct@YZero){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{#2}}}
+ \else
+ \rPut*{\xpct@ylblpos}(\xpct@XZero,\xpct@@yzero){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{#2}}}
+ \fi
+ \fi}
+\def\xlabelpos#1{\xpct@convtoang{#1}{\xpct@xlblpos}{\xpct@CorR}}
+\def\ylabelpos#1{\xpct@convtoang{#1}{\xpct@ylblpos}{\xpct@CorR}}
+\def\xpct@printxticslabels[#1]#2#3#4{%
+ \plotxtics{#2}{#3}{#4}\printxlabels[#1]{#2}{#3}{#4}}
+\def\xpct@printyticslabels[#1]#2#3#4{%
+ \plotytics{#2}{#3}{#4}\printylabels[#1]{#2}{#3}{#4}}
+\def\xpct@plottics#1#2#3#4{%
+ \COPY{#2}{\xpct@ticcoor}
+ \@whiledim\xpct@ticcoor\p@<#4\p@ \do {%
+ \ifnum #1=0
+ \plotxtic{\xpct@ticcoor}
+ \else
+ \plotytic{\xpct@ticcoor}
+ \fi
+ \ADD{#3}{\xpct@ticcoor}{\xpct@ticcoor}
+ }
+ \ifdim\xpct@ticcoor\p@>#4\p@
+ \else
+ \ifnum #1=0
+ \plotxtic{\xpct@ticcoor}
+ \else
+ \plotytic{\xpct@ticcoor}
+ \fi
+ \fi}
+\def\xpct@printlabels#1[#2]#3#4#5{%
+ \COPY{#3}{\xpct@ticcoor}
+ \@whiledim\xpct@ticcoor\p@<#5\p@ \do {%
+ \ifnum #2=-1
+ \COPY{\xpct@ticcoor}{\xpct@Ticcoor}
+ \else
+ \ROUND[#2]{\xpct@ticcoor}{\xpct@Ticcoor}
+ \fi
+ \xpct@prtlbl{#1}
+ \ADD{#4}{\xpct@ticcoor}{\xpct@ticcoor}}
+ \ifdim\xpct@ticcoor\p@>#5\p@
+ \else
+ \ifnum #2=-1
+ \COPY{\xpct@ticcoor}{\xpct@Ticcoor}
+ \else
+ \ROUND[#2]{\xpct@ticcoor}{\xpct@Ticcoor}
+ \fi
+ \xpct@prtlbl{#1}
+ \fi}
+\def\xpct@prtlbl#1{%
+ \ifinzeroaxes
+ \ifdim \xpct@ticcoor\p@=\z@\else
+ \xpct@adjticssize
+ \xpct@adjxorytics{\xpct@ticcoor}{#1}
+ \xpct@printlabel{#1}{\xpct@Ticcoor}
+ \fi
+ \else
+ \xpct@adjticssize
+ \xpct@adjxorytics{\xpct@ticcoor}{#1}
+ \xpct@printlabel{#1}{\xpct@Ticcoor}\fi}
+\def\xpct@plotgrid{%
+ \xpct@ticsinterval{\xpct@XZero}{\xpct@XOne}
+ \begingroup\setcounter{xpct@counta}{0}%
+ \pictcolor{\gridcolor}\linethickness{\gridthickness}
+ \COPY{\xpct@firstint}{\xpct@grid}
+ \@whilenum\value{xpct@counta}<\xpct@numtics\do{
+ \xLINE(\xpct@grid,\xpct@YZero)(\xpct@grid,\xpct@YOne)
+ \ADD{1}{\xpct@grid}{\xpct@grid}
+ \stepcounter{xpct@counta}}\endgroup
+ \xpct@ticsinterval{\xpct@YZero}{\xpct@YOne}
+ \begingroup\setcounter{xpct@counta}{0}%
+ \pictcolor{\gridcolor}\linethickness{\gridthickness}
+ \COPY{\xpct@firstint}{\xpct@grid}
+ \@whilenum\value{xpct@counta}<\xpct@numtics\do{
+ \xLINE(\xpct@XZero,\xpct@grid)(\xpct@XOne,\xpct@grid)
+ \ADD{1}{\xpct@grid}{\xpct@grid}
+ \stepcounter{xpct@counta}}\endgroup}
+\def\xpct@ticsinterval#1#2{\TRUNCATE[0]{#1}{\xpct@firstint}
+ \TRUNCATE[0]{#2}{\xpct@lastint}
+ \SUBTRACT{\xpct@lastint}{\xpct@firstint}{\xpct@numtics}
+ \ADD{\xpct@numtics}{1}{\xpct@numtics}}
+\def\polargrid#1#2{%
+ \begingroup
+ \polarreference
+ \FLOOR{#1}{\xpct@rint}
+ \MULTIPLY{\xpct@rint}{\runitdivisions}{\xpct@rdivs}
+ \DIVIDE{1}{\runitdivisions}{\rincr}
+ \COPY{0}{\xpct@radius}
+ \setcounter{xpct@counta}{1}%
+ \begingroup
+ \pictcolor{\gridcolor}
+ \linethickness{\gridthickness}
+ \@whilenum \value{xpct@counta}<\xpct@rdivs\do {%
+ \ADD{\rincr}{\xpct@radius}{\xpct@radius}
+ \Ellipse{\xpct@radius}{\xpct@radius}
+ \stepcounter{xpct@counta}}%
+ \pictcolor{\axescolor}
+ \linethickness{\axesthickness}
+ \Ellipse{\xpct@rint}{\xpct@rint}
+ \endgroup
+ \COPY{0}{\xpct@angle}
+ \DIVIDE{\numberTWOPI}{#2}{\xpct@angincr}
+ \setcounter{xpct@counta}{0}%
+ \pictcolor{\gridcolor}
+ \linethickness{\gridthickness}
+ \@whilenum \value{xpct@counta}<#2 \do {%
+ \xLINE(0,0)(#1,\xpct@angle)
+ \iflabels
+ \COPY{\axislabelsep}{\Pictlabelsep}
+ \MULTIPLY{2}{\thexpct@counta}{\xpct@arc}
+ \xpct@polarlabel{#1}{\xpct@arc}{#2}\fi
+ \ADD{\xpct@angincr}{\xpct@angle}{\xpct@angle}
+ \stepcounter{xpct@counta}}%
+ \pictcolor{\axescolor}
+ \linethickness{\axesthickness}
+ \xLINE(0,0)(#1,0)
+ \iflabels
+ \highestlabel{\xpct@axeslabelattrib$\axeslabelmathalphabet{1}$}
+ \multiPut*[\xpct@rlblpos](1,0)(1,0){\xpct@rint}{%
+ \ADD{\value{multiput}}{1}{\xpct@lbl}
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{\xpct@lbl}}}%
+ \fi
+ \endgroup}
+
+\def\rlabelpos#1{\xpct@convtoang{#1}{\xpct@rlblpos}{\xpct@CorR}}
+\def\degreespolarlabels{\def\xpct@polarlabel{\xpct@degreeslabel}}
+\def\radianspolarlabels{\def\xpct@polarlabel{\xpct@radianslabel}}
+\def\xpct@degreeslabel#1#2#3{%
+ \FRACTIONSIMPLIFY{#2}{#3}\xpct@num\xpct@den
+ \MULTIPLY{\xpct@num}{180}{\xpct@degangle}
+ \DIVIDE{\xpct@degangle}{\xpct@den}{\xpct@degangle}
+ \cPut{\xpct@degangle}(#1,\xpct@angle){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet{\xpct@degangle^\mathrm{o}}}}}
+\def\xpct@radianslabel#1#2#3{%
+ \RADtoDEG{\xpct@angle}{\xpct@angles}
+ \cPut{\xpct@angles}(#1,\xpct@angle){%
+ \xpct@axeslabelattrib%
+ \ensuremath{\axeslabelmathalphabet
+ {\xpct@prtfracrad{#2}{#3}}}}}
+\def\xpct@prtfracrad#1#2{%
+ \FRACTIONSIMPLIFY{#1}{#2}\xpct@num\xpct@den
+ \ifnum \xpct@num = 0 0
+ \else
+ \ifnum \xpct@num = 1
+ \ifnum \xpct@den = 1 \pi
+ \else \pi/\xpct@den
+ \fi
+ \else \xpct@num\pi/\xpct@den
+ \fi
+ \fi}
+\axesthickness=1pt
+\def\axescolor{black}
+\def\axeslabelcolor{\axescolor}
+\def\axeslabelsize{\small}
+\def\axeslabelmathversion{normal}
+\def\axeslabelmathalphabet{\mathrm}
+\xlabelpos{-90}
+\ylabelpos{180}
+\rlabelpos{bbr}
+\def\axislabelsep{0.1}
+\def\ticscolor{\axescolor}
+\ticsthickness=1pt
+\ticssize=4pt
+\secundaryticssize=2pt
+\gridthickness=0.4pt
+\def\gridcolor{gray}
+\secundarygridthickness=0.2pt
+\def\secundarygridcolor{lightgray}
+\def\xunitdivisions{1}
+\def\yunitdivisions{1}
+\def\runitdivisions{1}
+\def\xpct@polarlabel{\xpct@radianslabel}
+\def\Pictlabelsep{0.1}
+\defaultPut{c}
+\referencesystem(0,0)(1,0)(0,1)
+\cartesianreference
+\arrowsize{5}{2}
+\def\defaultplotdivs{8}
+\def\pointmarkdiam{0.1}
+\def\pointmark{\circle*{\pointmarkdiam}}
+\def\draftPictures{%
+ \drafttrue
+ \def\cPut##1(##2,##3)##4{}
+ \def\xpct@@Put(##1)##2{}
+ \def\xpct@@Putstar[##1](##2)##3{}
+ \def\xpct@@@Put[##1](##2)##3{}
+ \def\defaultPut##1{\def\xpct@defaultPut{\cPut}}
+ \def\xpct@@mPut(##1,##2)(##3,##4)##5##6{}
+ \def\xpct@PUT##1(##2,##3)##4{}
+ \def\xLINE(##1)(##2){}
+ \def\xtrivVECTOR(##1)(##2){}
+ \def\xVECTOR(##1)(##2){}
+ \def\zerovector(##1){}
+ \def\zerotrivvector(##1){}
+ \def\xline(##1,##2)##3{}
+ \def\xvector(##1,##2)##3{}
+ \def\xtrivvector(##1,##2)##3{}
+ \def\xpct@regPolygon[##1]##2##3{}
+ \def\xpct@@qCurve(##1)(##2)(##3)(##4){}
+ \def\xpct@PlotQuadraticCurve(##1)(##2)(##3)(##4){%
+ \@ifnextchar({\PlotQuadraticCurve(##3)(##4)}{}}
+ \def\xpct@@PlotQuadraticCurve(##1)##2(##3)##4{%
+ \@ifnextchar({\PlotQuadraticCurve(##3){##4}}{}}
+ \def\circularArc##1##2##3{}
+ \def\ellipticArc##1##2##3##4{}
+ \def\Ellipse##1##2{}
+ \def\Circle##1{}
+ \def\xpct@hyperbolicArc##1##2##3##4{}
+ \def\lHyperbola##1##2##3##4{}
+ \def\rHyperbola##1##2##3##4{}
+ \def\Hyperbola##1##2##3##4{}
+ \def\rhyperbolicArc##1##2##3##4{}
+ \def\lhyperbolicArc##1##2##3##4{}
+ \def\parabolicArc##1##2##3{}
+ \def\Parabola##1##2##3{}
+ \def\PlotPointsOfFunction##1##2##3##4{}
+ \def\xpct@iterateplotfunction[##1]##2##3##4{}
+ \def\xpct@plotfunction##1##2##3{}
+ \def\xpct@iterateplotpfunction[##1]##2##3##4{}
+ \def\xpct@plotpfunction##1##2##3{}
+ \def\cartesianaxes(##1,##2)(##3,##4){}
+ \def\cartesiangrid(##1,##2)(##3,##4){}
+ \def\plotxtic##1{}
+ \def\plotytic##1{}
+ \def\printxlabel##1##2{}
+ \def\printylabel##1##2{}
+ \def\printxticlabel##1##2{}
+ \def\printyticlabel##1##2{}
+ \def\plotxtics##1##2##3{}
+ \def\plotytics##1##2##3{}
+ \def\xpct@printlabels##1[##2]##3##4##5{}
+ \def\polargrid##1##2{}
+}
+\ifdraft
+ \draftPictures
+\fi
+\InputIfFileExists{xpicture.cfg}{\xpct@Infocfg}{\xpct@Infonocfg}
+%%
+%%
+%% End of file `xpicture.sty'.
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 6911655d4f5..fcd091a81d9 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1969,6 +1969,7 @@ $standardsource='\.(bat|c|drv|dtx|fea|fdd|ins|sfd)$|configure.*|install-sh';
'ulqda', 'ulqda.dtx',
'undolabl', 'undolabl.dtx',
'xecjk', 'xeCJK.dtx',
+ 'xpicture', "$package.dtx",
);
$standardins='\.ins$';