summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/curve2e
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-10-24 03:02:46 +0000
committerNorbert Preining <norbert@preining.info>2019-10-24 03:02:46 +0000
commit33b877a6413cc7b93c7a2c17e6df36c03f55481d (patch)
treed1006be84566ca91a3dc9fdc5798c20c9fb0c095 /macros/latex/contrib/curve2e
parent43e60b98142683b95336b9086ee52f4daefff93e (diff)
CTAN sync 201910240302
Diffstat (limited to 'macros/latex/contrib/curve2e')
-rw-r--r--macros/latex/contrib/curve2e/README.txt4
-rw-r--r--macros/latex/contrib/curve2e/curve2e-v161.sty906
-rw-r--r--macros/latex/contrib/curve2e/curve2e.dtx178
-rw-r--r--macros/latex/contrib/curve2e/curve2e.pdfbin670168 -> 672221 bytes
-rw-r--r--macros/latex/contrib/curve2e/curve2e.sty729
5 files changed, 101 insertions, 1716 deletions
diff --git a/macros/latex/contrib/curve2e/README.txt b/macros/latex/contrib/curve2e/README.txt
index 3e797117be..ae0202fb22 100644
--- a/macros/latex/contrib/curve2e/README.txt
+++ b/macros/latex/contrib/curve2e/README.txt
@@ -10,7 +10,7 @@
%% License information appended
%%
File README.txt for package curve2e
- [2019-10-17 v.2.0.3 Extension package for pict2e]
+ [2019-10-21 v.2.0.4 Extension package for pict2e]
@@ -106,7 +106,7 @@ claudio dot beccari at gmail dot com
%%
%% This work consists of file curve2e.dtx, and the derived files
%% curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-%% README.txt and manifest.txt.
+%% README.txt and curve2e-v161.sty.
%%
%%
%% End of file `README.txt'.
diff --git a/macros/latex/contrib/curve2e/curve2e-v161.sty b/macros/latex/contrib/curve2e/curve2e-v161.sty
deleted file mode 100644
index af7081e23d..0000000000
--- a/macros/latex/contrib/curve2e/curve2e-v161.sty
+++ /dev/null
@@ -1,906 +0,0 @@
-%%
-%% This is file `curve2e-v161.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% curve2e.dtx (with options: `v161')
-%%
-%% Copyright (C) 2005--2019 Claudio Beccari all rights reserved.
-%% License information appended
-%%
-
-
-
-\NeedsTeXFormat{LaTeX2e}[2016/01/01]
-\ProvidesPackage{curve2e-v161}%
- [2019/02/07 v.1.61 Extension package for pict2e]
-
-\RequirePackage{color}
-\RequirePackageWithOptions{pict2e}[2014/01/01]
-\RequirePackage{xparse}
-\def\TRON{\tracingcommands\tw@ \tracingmacros\tw@}%
-\def\TROF{\tracingcommands\z@ \tracingmacros\z@}%
-\ifx\undefined\@tdA \newdimen\@tdA \fi
-\ifx\undefined\@tdB \newdimen\@tdB \fi
-\ifx\undefined\@tdC \newdimen\@tdC \fi
-\ifx\undefined\@tdD \newdimen\@tdD \fi
-\ifx\undefined\@tdE \newdimen\@tdE \fi
-\ifx\undefined\@tdF \newdimen\@tdF \fi
-\ifx\undefined\defaultlinewidth \newdimen\defaultlinewidth \fi
-\gdef\linethickness#1{\@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}%
-\newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax
-\def\thicklines{\linethickness{\defaultlinewidth}}%
-\def\thinlines{\linethickness{.5\defaultlinewidth}}%
-\thinlines\ignorespaces}
-\def\LIne(#1){{\GetCoord(#1)\@tX\@tY
- \moveto(0,0)
- \pIIe@lineto{\@tX\unitlength}{\@tY\unitlength}\strokepath}\ignorespaces}%
-\def\segment(#1)(#2){\@killglue\polyline(#1)(#2)}%
-\def\line(#1)#2{\begingroup
- \@linelen #2\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \expandafter\DirOfVect#1to\Dir@line
- \GetCoord(\Dir@line)\d@mX\d@mY
- \ifdim\d@mX\p@=\z@\else
- \DividE\ifdim\d@mX\p@<\z@-\fi\p@ by\d@mX\p@ to\sc@lelen
- \@linelen=\sc@lelen\@linelen
- \fi
- \moveto(0,0)
- \pIIe@lineto{\d@mX\@linelen}{\d@mY\@linelen}%
- \strokepath
- \fi
-\endgroup\ignorespaces}%
-\ifx\Dashline\undefined
-\def\Dashline{\@ifstar{\Dashline@@}{\Dashline@}}
-\def\Dashline@(#1)(#2)#3{%
-\bgroup
- \countdef\NumA3254\countdef\NumB3252\relax
- \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA
- \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB
- \SubVect\V@ttA from\V@ttB to\V@ttC
- \ModOfVect\V@ttC to\DlineMod
- \DivideFN\DlineMod by#3 to\NumD
- \NumA\expandafter\Integer\NumD.??
- \ifodd\NumA\else\advance\NumA\@ne\fi
- \NumB=\NumA \divide\NumB\tw@
- \DividE\DlineMod\p@ by\NumA\p@ to\D@shMod
- \DividE\p@ by\NumA\p@ to \@tempa
- \MultVect\V@ttC by\@tempa,0 to\V@ttB
- \MultVect\V@ttB by 2,0 to\V@ttC
- \advance\NumB\@ne
- \edef\@mpt{\noexpand\egroup
- \noexpand\multiput(\V@ttA)(\V@ttC){\number\NumB}%
- {\noexpand\LIne(\V@ttB)}}%
- \@mpt\ignorespaces}%
-\let\Dline\Dashline
-
-\def\Dashline@@(#1)(#2)#3{\put(#1){\Dashline@(0,0)(#2){#3}}}
-\fi
-\ifx\Dotline\undefined
-\def\Dotline{\@ifstar{\Dotline@@}{\Dotline@}}
-\def\Dotline@(#1)(#2)#3{%
-\bgroup
- \countdef\NumA 3254\relax \countdef\NumB 3255\relax
- \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA
- \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB
- \SubVect\V@ttA from\V@ttB to\V@ttC
- \ModOfVect\V@ttC to\DotlineMod
- \DivideFN\DotlineMod by#3 to\NumD
- \NumA=\expandafter\Integer\NumD.??
- \DivVect\V@ttC by\NumA,0 to\V@ttB
- \advance\NumA\@ne
- \edef\@mpt{\noexpand\egroup
- \noexpand\multiput(\V@ttA)(\V@ttB){\number\NumA}%
- {\noexpand\makebox(0,0){\noexpand\circle*{0.5}}}}%
- \@mpt\ignorespaces}%
-
-\def\Dotline@@(#1)(#2)#3{\put(#1){\Dotline@(0,0)(#2){#3}}}
-\fi
-\AtBeginDocument{\@ifpackageloaded{eso-pic}{%
-\renewcommand\LenToUnit[1]{\strip@pt\dimexpr#1*\p@/\unitlength}}{}}
-
-\def\GetCoord(#1)#2#3{%
-\expandafter\SplitNod@\expandafter(#1)#2#3\ignorespaces}
-\def\isnot@polar#1:#2!!{\def\@tempOne{#2}\ifx\@tempOne\empty
-\expandafter\@firstoftwo\else
-\expandafter\@secondoftwo\fi
-{\SplitNod@@}{\SplitPolar@@}}
-
-\def\SplitNod@(#1)#2#3{\isnot@polar#1:!!(#1)#2#3}%
-\def\SplitNod@@(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}%
-\def\SplitPolar@@(#1:#2)#3#4{\DirFromAngle#1to\@DirA
-\ScaleVect\@DirA by#2to\@DirA
-\expandafter\SplitNod@@\expandafter(\@DirA)#3#4}
-
-\let\originalput\put
-\def\put(#1){\bgroup\GetCoord(#1)\@tX\@tY
-\edef\x{\noexpand\egroup\noexpand\originalput(\@tX,\@tY)}\x}
-
-\let\originalmultiput\multiput
-\let\original@multiput\@multiput
-
-\long\def\@multiput(#1)#2#3{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\original@multiput(\@mptX,\@mptY)}%
-\x{#2}{#3}\ignorespaces}
-
-\gdef\multiput(#1)#2{\bgroup\GetCoord(#1)\@mptX\@mptY
-\edef\x{\noexpand\egroup\noexpand\originalmultiput(\@mptX,\@mptY)}\x(}%)
- \def\vector(#1)#2{%
- \begingroup
- \GetCoord(#1)\d@mX\d@mY
- \@linelen#2\unitlength
- \ifdim\d@mX\p@=\z@\ifdim\d@mY\p@=\z@\@badlinearg\fi\fi
- \ifdim\@linelen<\z@ \@linelen=-\@linelen\fi
- \MakeVectorFrom\d@mX\d@mY to\@Vect
- \DirOfVect\@Vect to\Dir@Vect
- \YpartOfVect\Dir@Vect to\@ynum \@ydim=\@ynum\p@
- \XpartOfVect\Dir@Vect to\@xnum \@xdim=\@xnum\p@
- \ifdim\d@mX\p@=\z@
- \else\ifdim\d@mY\p@=\z@
- \else
- \DividE\ifdim\@xnum\p@<\z@-\fi\p@ by\@xnum\p@ to\sc@lelen
- \@linelen=\sc@lelen\@linelen
- \fi
- \fi
- \@tdB=\@linelen
-\pIIe@concat\@xdim\@ydim{-\@ydim}\@xdim{\@xnum\@linelen}{\@ynum\@linelen}%
- \@linelen\z@
- \pIIe@vector
- \fillpath
- \@linelen=\@tdB
- \@tdA=\pIIe@FAW\@wholewidth
- \@tdA=\pIIe@FAL\@tdA
- \advance\@linelen-\@tdA
- \ifdim\@linelen>\z@
- \moveto(0,0)
- \pIIe@lineto{\@xnum\@linelen}{\@ynum\@linelen}%
- \strokepath\fi
- \endgroup}
-\def\Vector(#1){{%
-\GetCoord(#1)\@tX\@tY
-\ifdim\@tX\p@=\z@\vector(\@tX,\@tY){\@tY}
-\else
-\vector(\@tX,\@tY){\@tX}\fi}}
-\def\VECTOR(#1)(#2){\begingroup
-\SubVect#1from#2to\@tempa
-\expandafter\put\expandafter(#1){\expandafter\Vector\expandafter(\@tempa)}%
-\endgroup\ignorespaces}
-\let\lp@r( \let\rp@r)
-\renewcommand*\polyline[1][\beveljoin]{\p@lylin@[#1]}
-
-\def\p@lylin@[#1](#2){\@killglue#1\GetCoord(#2)\d@mX\d@mY
- \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\p@lyline}{%
- \PackageWarning{curve2e}%
- {Polylines require at least two vertices!\MessageBreak
- Control your polyline specification\MessageBreak}%
- \ignorespaces}}
-
-\def\p@lyline(#1){\GetCoord(#1)\d@mX\d@mY
- \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\p@lyline}{\strokepath\ignorespaces}}
-\providecommand\polygon{}
-\RenewDocumentCommand\polygon{s O{\beveljoin} }{\@killglue\begingroup
-\IfBooleanTF{#1}{\@tempswatrue}{\@tempswafalse}%
-\@polygon[#2]}
-
-\def\@polygon[#1](#2){\@killglue#1\GetCoord(#2)\d@mX\d@mY
- \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\@@polygon}{%
- \PackageWarning{curve2e}%
- {Polygons require at least two vertices!\MessageBreak
- Control your polygon specification\MessageBreak}%
- \ignorespaces}}
-
- \def\@@polygon(#1){\GetCoord(#1)\d@mX\d@mY
- \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\@@polygon}{\pIIe@closepath
- \if@tempswa\pIIe@fillGraph\else\pIIe@strokeGraph\fi
- \endgroup
- \ignorespaces}}
-\def\GraphGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
-\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt
-\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne
-\multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}%
-\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne
-\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}%
-\egroup\ignorespaces}
-\def\RoundUp#1modulo#2to#3{\expandafter\@tempcnta\Integer#1.??%
-\count254\@tempcnta\divide\count254by#2\relax
-\multiply\count254by#2\relax
-\count252\@tempcnta\advance\count252-\count254
-\ifnum\count252>0\advance\count252-#2\relax
-\advance\@tempcnta-\count252\fi\edef#3{\number\@tempcnta}\ignorespaces}%
-\def\Integer#1.#2??{#1}%
-\ifdefined\dimexpr
- \unless\ifdefined\DividE
-\def\DividE#1by#2to#3{\bgroup
-\dimendef\Num2254\relax \dimendef\Den2252\relax
-\dimendef\@DimA 2250
-\Num=\p@ \Den=#2\relax
-\ifdim\Den=\z@
- \edef\x{\noexpand\endgroup\noexpand\def\noexpand#3{\strip@pt\maxdimen}}%
-\else
- \@DimA=#1\relax
- \edef\x{%
- \noexpand\egroup\noexpand\def\noexpand#3{%
- \strip@pt\dimexpr\@DimA*\Num/\Den\relax}}%
-\fi
-\x\ignorespaces}%
-\fi
- \unless\ifdefined\DivideFN
- \def\DivideFN#1by#2to#3{\DividE#1\p@ by#2\p@ to{#3}}%
- \fi
- \unless\ifdefined\MultiplY
- \def\MultiplY#1by#2to#3{\bgroup
- \dimendef\@DimA 2254 \dimendef\@DimB2255
- \@DimA=#1\p@\relax \@DimB=#2\p@\relax
- \edef\x{%
- \noexpand\egroup\noexpand\def\noexpand#3{%
- \strip@pt\dimexpr\@DimA*\@DimB/\p@\relax}}%
- \x\ignorespaces}%
- \let\MultiplyFN\MultiplY
- \fi
-\fi
-
-\unless\ifdefined\Numero
- \def\Numero#1#2{\bgroup\dimen3254=#2\relax
- \edef\x{\noexpand\egroup\noexpand\edef\noexpand#1{%
- \strip@pt\dimen3254}}\x\ignorespaces}%
-\fi
-\def\g@tTanCotanFrom#1to#2and#3{%
-\DividE 114.591559\p@ by#1to\X@ \@tdB=\X@\p@
-\countdef\I=2546\def\Tan{0}\I=11\relax
-\@whilenum\I>\z@\do{%
- \@tdC=\Tan\p@ \@tdD=\I\@tdB
- \advance\@tdD-\@tdC \DividE\p@ by\@tdD to\Tan
- \advance\I-2\relax}%
-\def#2{\Tan}\DividE\p@ by\Tan\p@ to\Cot \def#3{\Cot}\ignorespaces}%
-\def\SinOf#1to#2{\bgroup%
-\@tdA=#1\p@%
-\ifdim\@tdA>\z@%
- \@whiledim\@tdA>180\p@\do{\advance\@tdA -360\p@}%
-\else%
- \@whiledim\@tdA<-180\p@\do{\advance\@tdA 360\p@}%
-\fi \ifdim\@tdA=\z@
- \def\@tempA{0}%
-\else
- \ifdim\@tdA>\z@
- \def\Segno{+}%
- \else
- \def\Segno{-}%
- \@tdA=-\@tdA
- \fi
- \ifdim\@tdA>90\p@
- \@tdA=-\@tdA \advance\@tdA 180\p@
- \fi
- \ifdim\@tdA=90\p@
- \def\@tempA{\Segno1}%
- \else
- \ifdim\@tdA=180\p@
- \def\@tempA{0}%
- \else
- \ifdim\@tdA<\p@
- \@tdA=\Segno0.0174533\@tdA
- \DividE\@tdA by\p@ to \@tempA%
- \else
- \g@tTanCotanFrom\@tdA to\T and\Tp
- \@tdA=\T\p@ \advance\@tdA \Tp\p@
- \DividE \Segno2\p@ by\@tdA to \@tempA%
- \fi
- \fi
- \fi
-\fi
-\edef\endSinOf{\noexpand\egroup
- \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}%
-\endSinOf}%
-\def\CosOf#1to#2{\bgroup%
-\@tdA=#1\p@%
-\ifdim\@tdA>\z@%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA -360\p@}%
-\else%
- \@whiledim\@tdA<\z@\do{\advance\@tdA 360\p@}%
-\fi
-\ifdim\@tdA>180\p@
- \@tdA=-\@tdA \advance\@tdA 360\p@
-\fi
-\ifdim\@tdA<90\p@
- \def\Segno{+}%
-\else
- \def\Segno{-}%
- \@tdA=-\@tdA \advance\@tdA 180\p@
-\fi
-\ifdim\@tdA=\z@
- \def\@tempA{\Segno1}%
-\else
- \ifdim\@tdA<\p@
- \@tdA=0.0174533\@tdA \Numero\@tempA\@tdA
- \@tdA=\@tempA\@tdA \@tdA=-.5\@tdA
- \advance\@tdA \p@
- \DividE\@tdA by\p@ to\@tempA%
- \else
- \ifdim\@tdA=90\p@
- \def\@tempA{0}%
- \else
- \g@tTanCotanFrom\@tdA to\T and\Tp
- \@tdA=\Tp\p@ \advance\@tdA-\T\p@
- \@tdB=\Tp\p@ \advance\@tdB\T\p@
- \DividE\Segno\@tdA by\@tdB to\@tempA%
- \fi
- \fi
-\fi
-\edef\endCosOf{\noexpand\egroup
- \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}%
-\endCosOf}%
-\def\TanOf#1to#2{\bgroup%
-\@tdA=#1\p@%
-\ifdim\@tdA>90\p@%
- \@whiledim\@tdA>90\p@\do{\advance\@tdA -180\p@}%
-\else%
- \@whiledim\@tdA<-90\p@\do{\advance\@tdA 180\p@}%
-\fi%
-\ifdim\@tdA=\z@%
- \def\@tempA{0}%
-\else
- \ifdim\@tdA>\z@
- \def\Segno{+}%
- \else
- \def\Segno{-}%
- \@tdA=-\@tdA
- \fi
- \ifdim\@tdA=90\p@
- \def\@tempA{\Segno16383.99999}%
- \else
- \ifdim\@tdA<\p@
- \@tdA=\Segno0.0174533\@tdA
- \DividE\@tdA by\p@ to\@tempA%
- \else
- \g@tTanCotanFrom\@tdA to\T and\Tp
- \@tdA\Tp\p@ \advance\@tdA -\T\p@
- \DividE\Segno2\p@ by\@tdA to\@tempA%
- \fi
- \fi
-\fi
-\edef\endTanOf{\noexpand\egroup
- \noexpand\def\noexpand#2{\@tempA}\noexpand\ignorespaces}%
-\endTanOf}%
-\def\ArcTanOf#1to#2{\bgroup
-\countdef\Inverti 4444\Inverti=0
-\def\Segno{}
-\edef\@tF{#1}\@tdF=\@tF\p@ \@tdE=57.295778\p@
-\@tdD=\ifdim\@tdF<\z@ -\@tdF\def\Segno{-}\else\@tdF\fi
-\ifdim\@tdD>\p@
-\Inverti=\@ne
-\@tdD=\dimexpr\p@*\p@/\@tdD\relax
-\fi
-\unless\ifdim\@tdD>0.02\p@
- \def\@tX{\strip@pt\dimexpr57.295778\@tdD\relax}%
-\else
- \edef\@tX{45}\relax
- \countdef\I 2523 \I=9\relax
- \@whilenum\I>0\do{\TanOf\@tX to\@tG
- \edef\@tG{\strip@pt\dimexpr\@tG\p@-\@tdD\relax}\relax
- \MultiplY\@tG by57.295778to\@tG
- \CosOf\@tX to\@tH
- \MultiplY\@tH by\@tH to\@tH
- \MultiplY\@tH by\@tG to \@tH
- \edef\@tX{\strip@pt\dimexpr\@tX\p@ - \@tH\p@\relax}\relax
- \advance\I\m@ne}%
-\fi
-\ifnum\Inverti=\@ne
-\edef\@tX{\strip@pt\dimexpr90\p@-\@tX\p@\relax}
-\fi
-\edef\x{\egroup\noexpand\edef\noexpand#2{\Segno\@tX}}\x\ignorespaces}%
-\def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}\ignorespaces}%
-\def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}%
-\def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\@tempdima=\t@X\p@ \ifdim\@tempdima<\z@ \@tempdima=-\@tempdima\fi
-\@tempdimb=\t@Y\p@ \ifdim\@tempdimb<\z@ \@tempdimb=-\@tempdimb\fi
-\ifdim\@tempdima=\z@
- \ifdim\@tempdimb=\z@
- \def\@T{0}\@tempdimc=\z@
- \else
- \def\@T{0}\@tempdimc=\@tempdimb
- \fi
-\else
- \ifdim\@tempdima>\@tempdimb
- \DividE\@tempdimb by\@tempdima to\@T
- \@tempdimc=\@tempdima
- \else
- \DividE\@tempdima by\@tempdimb to\@T
- \@tempdimc=\@tempdimb
- \fi
-\fi
-\unless\ifdim\@tempdimc=\z@
- \unless\ifdim\@T\p@=\z@
- \@tempdima=\@T\p@ \@tempdima=\@T\@tempdima
- \advance\@tempdima\p@%
- \@tempdimb=\p@%
- \@tempcnta=5\relax
- \@whilenum\@tempcnta>\z@\do{\DividE\@tempdima by\@tempdimb to\@T
- \advance\@tempdimb \@T\p@ \@tempdimb=.5\@tempdimb
- \advance\@tempcnta\m@ne}%
- \@tempdimc=\@T\@tempdimc
- \fi
-\fi
-\Numero#2\@tempdimc
-\ignorespaces}%
-\def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\ModOfVect#1to\@tempa
-\unless\ifdim\@tempdimc=\z@
- \DividE\t@X\p@ by\@tempdimc to\t@X
- \DividE\t@Y\p@ by\@tempdimc to\t@Y
-\fi
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\ModAndDirOfVect#1to#2and#3{%
-\GetCoord(#1)\t@X\t@Y
-\ModOfVect#1to#2%
-\ifdim\@tempdimc=\z@\else
- \DividE\t@X\p@ by\@tempdimc to\t@X
- \DividE\t@Y\p@ by\@tempdimc to\t@Y
-\fi
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\DistanceAndDirOfVect#1minus#2to#3and#4{%
-\SubVect#2from#1to\@tempa
-\ModAndDirOfVect\@tempa to#3and#4\ignorespaces}%
-\def\XpartOfVect#1to#2{%
-\GetCoord(#1)#2\@tempa\ignorespaces}%
-\def\YpartOfVect#1to#2{%
-\GetCoord(#1)\@tempa#2\ignorespaces}%
-\def\DirFromAngle#1to#2{%
-\CosOf#1to\t@X
-\SinOf#1to\t@Y
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\ArgOfVect#1to#2{\bgroup\GetCoord(#1){\t@X}{\t@Y}%
-\def\s@gno{}\def\addflatt@ngle{0}
-\ifdim\t@X\p@=\z@
- \ifdim\t@Y\p@=\z@
- \def\ArcTan{0}%
- \else
- \def\ArcTan{90}%
- \ifdim\t@Y\p@<\z@\def\s@gno{-}\fi
- \fi
-\else
- \ifdim\t@Y\p@=\z@
- \ifdim\t@X\p@<\z@
- \def\ArcTan{180}%
- \else
- \def\ArcTan{0}%
- \fi
- \else
- \ifdim\t@X\p@<\z@%
- \def\addflatt@ngle{180}%
- \edef\t@X{\strip@pt\dimexpr-\t@X\p@}%
- \edef\t@Y{\strip@pt\dimexpr-\t@Y\p@}%
- \ifdim\t@Y\p@<\z@
- \def\s@gno{-}%
- \edef\t@Y{-\t@Y}%
- \fi
- \fi
- \DivideFN\t@Y by\t@X to \t@A
- \ArcTanOf\t@A to\ArcTan
- \fi
-\fi
-\edef\ArcTan{\unless\ifx\s@gno\empty\s@gno\fi\ArcTan}%
-\unless\ifnum\addflatt@ngle=0\relax
- \edef\ArcTan{%
- \strip@pt\dimexpr\ArcTan\p@\ifx\s@gno\empty-\else+\fi
- \addflatt@ngle\p@\relax}%
-\fi
-\edef\x{\noexpand\egroup\noexpand\edef\noexpand#2{\ArcTan}}%
-\x\ignorespaces}
-\def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y
-\@tempdima=\t@X\p@ \@tempdima=#2\@tempdima\Numero\t@X\@tempdima
-\@tempdima=\t@Y\p@ \@tempdima=#2\@tempdima\Numero\t@Y\@tempdima
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\ConjVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\@tempdima=-\t@Y\p@\Numero\t@Y\@tempdima
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\AddVect#1and#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\@tempdima\tu@X\p@\advance\@tempdima\td@X\p@ \Numero\t@X\@tempdima
-\@tempdima\tu@Y\p@\advance\@tempdima\td@Y\p@ \Numero\t@Y\@tempdima
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\SubVect#1from#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\@tempdima\td@X\p@\advance\@tempdima-\tu@X\p@ \Numero\t@X\@tempdima
-\@tempdima\td@Y\p@\advance\@tempdima-\tu@Y\p@ \Numero\t@Y\@tempdima
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\MultVect#1by{\@ifstar{\@ConjMultVect#1by}{\@MultVect#1by}}%
-\def\@MultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\@tempdima\tu@X\p@ \@tempdimb\tu@Y\p@
-\@tempdimc=\td@X\@tempdima\advance\@tempdimc-\td@Y\@tempdimb
-\Numero\t@X\@tempdimc
-\@tempdimc=\td@Y\@tempdima\advance\@tempdimc\td@X\@tempdimb
-\Numero\t@Y\@tempdimc
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\@ConjMultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y \@tempdima\tu@X\p@ \@tempdimb\tu@Y\p@
-\@tempdimc=\td@X\@tempdima\advance\@tempdimc+\td@Y\@tempdimb
-\Numero\t@X\@tempdimc
-\@tempdimc=\td@X\@tempdimb\advance\@tempdimc-\td@Y\@tempdima
-\Numero\t@Y\@tempdimc
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}
-\def\DivVect#1by#2to#3{\ModAndDirOfVect#2to\@Mod and\@Dir
-\DividE\p@ by\@Mod\p@ to\@Mod \ConjVect\@Dir to\@Dir
-\ScaleVect#1by\@Mod to\@tempa
-\MultVect\@tempa by\@Dir to#3\ignorespaces}%
-\def\Arc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\unless\ifdim\@tdA=\z@
- \@Arc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\@Arc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi
-\Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#2from#1to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
-\def\@@Arc{%
-\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}%
-\ifdim\@tdA>180\p@
- \advance\@tdA-180\p@
- \Numero\@gradi\@tdA
- \SubVect\@pPun from\@Cent to\@V
- \AddVect\@V and\@Cent to\@sPun
- \MultVect\@V by0,-1.3333333to\@V \if\Segno-\ScaleVect\@V by-1to\@V\fi
- \AddVect\@pPun and\@V to\@pcPun
- \AddVect\@sPun and\@V to\@scPun
- \GetCoord(\@pcPun)\@pcPunX\@pcPunY
- \GetCoord(\@scPun)\@scPunX\@scPunY
- \GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
- \CopyVect\@sPun to\@pPun
-\fi
-\ifdim\@tdA>\z@
- \DirFromAngle\@gradi to\@Dir \if\Segno-\ConjVect\@Dir to\@Dir \fi
- \SubVect\@Cent from\@pPun to\@V
- \MultVect\@V by\@Dir to\@V
- \AddVect\@Cent and\@V to\@sPun
- \@tdA=.5\@tdA \Numero\@gradi\@tdA
- \DirFromAngle\@gradi to\@Phimezzi
- \GetCoord(\@Phimezzi)\@cosphimezzi\@sinphimezzi
- \@tdB=1.3333333\p@ \@tdB=\@Raggio\@tdB
- \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@ \Numero\@tempa\@tdC
- \@tdB=\@tempa\@tdB
- \DividE\@tdB by\@sinphimezzi\p@ to\@cZ
- \ScaleVect\@Phimezzi by\@cZ to\@Phimezzi
- \ConjVect\@Phimezzi to\@mPhimezzi
- \if\Segno-%
- \let\@tempa\@Phimezzi
- \let\@Phimezzi\@mPhimezzi
- \let\@mPhimezzi\@tempa
- \fi
- \SubVect\@sPun from\@pPun to\@V
- \DirOfVect\@V to\@V
- \MultVect\@Phimezzi by\@V to\@Phimezzi
- \AddVect\@sPun and\@Phimezzi to\@scPun
- \ScaleVect\@V by-1to\@V
- \MultVect\@mPhimezzi by\@V to\@mPhimezzi
- \AddVect\@pPun and\@mPhimezzi to\@pcPun
- \GetCoord(\@pcPun)\@pcPunX\@pcPunY
- \GetCoord(\@scPun)\@scPunX\@scPunY
- \GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
-\fi}
-\def\VectorArc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@ \ifdim\@tdA=\z@\else
- \@VArc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\VectorARC(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\ifdim\@tdA=\z@\else
- \@VARC(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\@VArc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
-\@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE
-\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
-\@tdD=\DeltaGradi\p@
-\@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD
-\@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
-\DirFromAngle\@tempa to\@Dir
-\MultVect\@V by\@Dir to\@sPun
-\edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}%
-\MultVect\@sPun by 0,\@tempA to\@vPun
-\DirOfVect\@vPun to\@Dir
-\AddVect\@sPun and #1 to \@sPun
-\GetCoord(\@sPun)\@tdX\@tdY
-\@tdD\ifx\Segno--\fi\DeltaGradi\p@
-\@tdD=.5\@tdD \Numero\DeltaGradi\@tdD
-\DirFromAngle\DeltaGradi to\@Dird
-\MultVect\@Dir by*\@Dird to\@Dir
-\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}%
-\@tdE =\ifx\Segno--\fi\DeltaGradi\p@
-\advance\@tdA -\@tdE \Numero\@gradi\@tdA
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
-\def\@VARC(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
-\@tdE=\pIIe@FAW\@wholewidth \@tdE=0.8\@tdE
-\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
-\@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD
-\@tdD=\if\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
-\DirFromAngle\@tempa to\@Dir
-\MultVect\@V by\@Dir to\@sPun% corrects the end point
-\edef\@tempA{\if\Segno--\fi1}%
-\MultVect\@sPun by 0,\@tempA to\@vPun
-\DirOfVect\@vPun to\@Dir
-\AddVect\@sPun and #1 to \@sPun
-\GetCoord(\@sPun)\@tdX\@tdY
-\@tdD\if\Segno--\fi\DeltaGradi\p@
-\@tdD=.5\@tdD \Numero\@tempB\@tdD
-\DirFromAngle\@tempB to\@Dird
-\MultVect\@Dir by*\@Dird to\@Dir
-\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% end point arrowt ip
-\@tdE =\DeltaGradi\p@
-\advance\@tdA -2\@tdE \Numero\@gradi\@tdA
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\SubVect\@Cent from\@pPun to \@V
-\edef\@tempa{\if\Segno-\else-\fi\@ne}%
-\MultVect\@V by0,\@tempa to\@vPun
-\@tdE\if\Segno--\fi\DeltaGradi\p@
-\Numero\@tempB{0.5\@tdE}%
-\DirFromAngle\@tempB to\@Dird
-\MultVect\@vPun by\@Dird to\@vPun% corrects the starting point
-\DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}}% starting point arrow tip
-\edef\@tempa{\if\Segno--\fi\DeltaGradi}%
-\DirFromAngle\@tempa to \@Dir
-\SubVect\@Cent from\@pPun to\@V
-\MultVect\@V by\@Dir to\@V
-\AddVect\@Cent and\@V to\@pPun
-\GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
-\def\CurveBetween#1and#2WithDirs#3and#4{%
-\StartCurveAt#1WithDir{#3}\relax
-\CurveTo#2WithDir{#4}\CurveFinish\ignorespaces}%
-\def\StartCurveAt#1WithDir#2{%
-\begingroup
-\GetCoord(#1)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Pzero
-\pIIe@moveto{\@tempa\unitlength}{\@tempb\unitlength}%
-\GetCoord(#2)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Dzero
-\DirOfVect\@Dzero to\@Dzero
-\ignorespaces}
-\def\ChangeDir<#1>{%
-\GetCoord(#1)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Dzero
-\DirOfVect\@Dzero to\@Dzero
-\ignorespaces}
-\def\CurveFinish{\strokepath\endgroup\ignorespaces}%
-\def\FillCurve{\fillpath\endgroup\ignorespaces}
-\def\CurveEnd{\fillstroke\endgroup\ignorespaces}
-\def\CbezierTo#1WithDir#2AndDists#3And#4{%
-\GetCoord(#1)\@tX\@tY \MakeVectorFrom\@tX\@tY to\@Puno
-\GetCoord(#2)\@tX\@tY \MakeVectorFrom\@tX\@tY to \@Duno
-\DirOfVect\@Duno to\@Duno
-\ScaleVect\@Dzero by#3to\@Czero \AddVect\@Pzero and\@Czero to\@Czero
-\ScaleVect\@Duno by-#4to \@Cuno \AddVect\@Puno and\@Cuno to \@Cuno
-\GetCoord(\@Czero)\@XCzero\@YCzero
-\GetCoord(\@Cuno)\@XCuno\@YCuno
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\pIIe@curveto{\@XCzero\unitlength}{\@YCzero\unitlength}%
- {\@XCuno\unitlength}{\@YCuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}%
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}%
-\def\CbezierBetween#1And#2WithDirs#3And#4UsingDists#5And#6{%
-\StartCurveAt#1WithDir{#3}\relax
-\CbezierTo#2WithDir#4AndDists#5And{#6}\CurveFinish}
-
-\def\@isTension#1;#2!!{\def\@tempA{#1}%
-\def\@tempB{#2}\unless\ifx\@tempB\empty\strip@semicolon#2\fi}
-\def\strip@semicolon#1;{\def\@tempB{#1}}
-\def\CurveTo#1WithDir#2{%
-\def\@Tuno{1}\def\@Tzero{1}\relax
-\edef\@Puno{#1}\@isTension#2;!!%
-\expandafter\DirOfVect\@tempA to\@Duno
-\bgroup\unless\ifx\@tempB\empty\GetCoord(\@tempB)\@Tzero\@Tuno\fi
-\DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord
-\MultVect\@Dzero by*\@DirChord to \@Dpzero
-\MultVect\@Duno by*\@DirChord to \@Dpuno
-\GetCoord(\@Dpzero)\@DXpzero\@DYpzero
-\GetCoord(\@Dpuno)\@DXpuno\@DYpuno
-\DivideFN\@Chord by2 to\@semichord
-\ifdim\@DXpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@KCzero{\@semichord\@tdA}%
-\fi
-\ifdim\@DYpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@Kpzero{\@semichord\@tdA}%
-\fi
-\unless\ifdim\@DXpzero\p@=\z@
- \unless\ifdim\@DYpzero\p@=\z@
- \edef\@CosDzero{\ifdim\@DXpzero\p@<\z@ -\fi\@DXpzero}%
- \edef\@SinDzero{\ifdim\@DYpzero\p@<\z@ -\fi\@DYpzero}%
- \@tdA=\@semichord\p@ \@tdA=1.333333\@tdA
- \DividE\@tdA by\@SinDzero\p@ to \@KCzero
- \@tdA=\dimexpr(\p@-\@CosDzero\p@)\relax
- \DividE\@KCzero\@tdA by\@SinDzero\p@ to \@KCzero
- \fi
-\fi
-\MultiplyFN\@KCzero by \@Tzero to \@KCzero
-\ScaleVect\@Dzero by\@KCzero to\@CPzero
-\AddVect\@Pzero and\@CPzero to\@CPzero
-\ifdim\@DXpuno\p@=\z@
- \@tdA=-1.333333\p@
- \Numero\@KCuno{\@semichord\@tdA}%
-\fi
-\ifdim\@DYpuno\p@=\z@
- \@tdA=-1.333333\p@
- \Numero\@KCuno{\@semichord\@tdA}%
-\fi
-\unless\ifdim\@DXpuno\p@=\z@
- \unless\ifdim\@DYpuno\p@=\z@
- \edef\@CosDuno{\ifdim\@DXpuno\p@<\z@ -\fi\@DXpuno}%
- \edef\@SinDuno{\ifdim\@DYpuno\p@<\z@ -\fi\@DYpuno}%
- \@tdA=\@semichord\p@ \@tdA=-1.333333\@tdA
- \DividE\@tdA by \@SinDuno\p@ to \@KCuno
- \@tdA=\dimexpr(\p@-\@CosDuno\p@)\relax
- \DividE\@KCuno\@tdA by\@SinDuno\p@ to \@KCuno
- \fi
-\fi
-\MultiplyFN\@KCuno by \@Tuno to \@KCuno
-\ScaleVect\@Duno by\@KCuno to\@CPuno
-\AddVect\@Puno and\@CPuno to\@CPuno
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\GetCoord(\@CPzero)\@XCPzero\@YCPzero
-\GetCoord(\@CPuno)\@XCPuno\@YCPuno
-\pIIe@curveto{\@XCPzero\unitlength}{\@YCPzero\unitlength}%
- {\@XCPuno\unitlength}{\@YCPuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}\egroup
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}%
-\def\Curve{\@ifstar{\let\fillstroke\fillpath\Curve@}%
-{\let\fillstroke\strokepath\Curve@}}
-\def\Curve@(#1)<#2>{%
- \StartCurveAt#1WithDir{#2}%
- \@ifnextchar\lp@r\@Curve{%
- \PackageWarning{curve2e}{%
- Curve specifications must contain at least two nodes!\Messagebreak
- Please, control your Curve specifications\MessageBreak}}}
-\def\@Curve(#1)<#2>{%
- \CurveTo#1WithDir{#2}%
- \@ifnextchar\lp@r\@Curve{%
- \@ifnextchar[\@ChangeDir\CurveEnd}}
-\def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve}
-\def\Qurve{\@ifstar{\let\fillstroke\fillpath\Qurve@}%
-{\let\fillstroke\strokepath\Qurve@}}
-
-\def\Qurve@(#1)<#2>{%
- \StartCurveAt#1WithDir{#2}%
- \@ifnextchar\lp@r\@Qurve{%
- \PackageWarning{curve2e}{%
- Quadratic curve specifications must contain at least
- two nodes!\Messagebreak
- Please, control your Qurve specifications\MessageBreak}}}%
-\def\@Qurve(#1)<#2>{\QurveTo#1WithDir{#2}%
- \@ifnextchar\lp@r\@Qurve{%
- \@ifnextchar[\@ChangeQDir\CurveEnd}}%
-\def\@ChangeQDir[#1]{\ChangeDir<#1>\@Qurve}%
-\def\QurveTo#1WithDir#2{%
-\edef\@Puno{#1}\DirOfVect#2to\@Duno\bgroup
-\DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord
-\MultVect\@Dzero by*\@Duno to \@Scalar
-\YpartOfVect\@Scalar to \@YScalar
-\ifdim\@YScalar\p@=\z@
-\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have their starting\MessageBreak
- and ending directions parallel or antiparallel with\MessageBreak
- each other. This arc is skipped and replaced with
- a dotted line.\MessageBreak}%
- \Dotline(\@Pzero)(\@Puno){2}\relax
-\else
-\MultVect\@Dzero by*\@DirChord to \@Dpzero
-\MultVect\@Duno by*\@DirChord to \@Dpuno
-\GetCoord(\@Dpzero)\@DXpzero\@DYpzero
-\GetCoord(\@Dpuno)\@DXpuno\@DYpuno
-\MultiplyFN\@DXpzero by\@DXpuno to\@XXD
-\MultiplyFN\@DYpzero by\@DYpuno to\@YYD
-\unless\ifdim\@YYD\p@<\z@\ifdim\@XXD\p@<\z@
-\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have inflection points\MessageBreak
- Therefore the tangents to the starting and ending arc\MessageBreak
- points cannot be directed to the same half plane.\MessageBreak
- This arc is skipped and replaced by a dotted line\MessageBreak}%
- \Dotline(\@Pzero)(\@Puno){2}\fi
-\else
-\edef\@CDzero{\@DXpzero}\relax
-\edef\@SDzero{\@DYpzero}\relax
-\edef\@CDuno{\@DXpuno}\relax
-\edef\@SDuno{\@DYpuno}\relax
-\MultiplyFN\@SDzero by\@CDuno to\@tempA
-\MultiplyFN\@SDuno by\@CDzero to\@tempB
-\edef\@tempA{\strip@pt\dimexpr\@tempA\p@-\@tempB\p@}\relax
-\@tdA=\@SDuno\p@ \@tdB=\@Chord\p@ \@tdC=\@tempA\p@
-\edef\@tempC{\strip@pt\dimexpr \@tdA*\@tdB/\@tdC}\relax
-\MultiplyFN\@tempC by\@CDzero to \@XC
-\MultiplyFN\@tempC by\@SDzero to \@YC
-\ModOfVect\@XC,\@YC to\@KC
-\ScaleVect\@Dzero by\@KC to\@CP
-\AddVect\@Pzero and\@CP to\@CP
-\GetCoord(\@Pzero)\@XPzero\@YPzero
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\GetCoord(\@CP)\@XCP\@YCP
-\@ovxx=\@XPzero\unitlength \@ovyy=\@YPzero\unitlength
-\@ovdx=\@XCP\unitlength \@ovdy=\@YCP\unitlength
-\@xdim=\@XPuno\unitlength \@ydim=\@YPuno\unitlength
- \pIIe@bezier@QtoC\@ovxx\@ovdx\@ovro
- \pIIe@bezier@QtoC\@ovyy\@ovdy\@ovri
- \pIIe@bezier@QtoC\@xdim\@ovdx\@clnwd
- \pIIe@bezier@QtoC\@ydim\@ovdy\@clnht
- \pIIe@moveto\@ovxx\@ovyy
- \pIIe@curveto\@ovro\@ovri\@clnwd\@clnht\@xdim\@ydim
-\fi\fi\egroup
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}
-
-
-%%
-%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%%
-%% This work is "author-maintained"
-%%
-%% This work consists of file curve2e.dtx, and the derived files
-%% curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-%% README.txt and ltxdoc.cfg, although the latter can be freely
-%% modified before running pdfltex, in order to include or exclude
-%% typesetting of the bundle code.
-%%
-%%
-%% End of file `curve2e-v161.sty'.
diff --git a/macros/latex/contrib/curve2e/curve2e.dtx b/macros/latex/contrib/curve2e/curve2e.dtx
index 015b659d79..9f8a34835a 100644
--- a/macros/latex/contrib/curve2e/curve2e.dtx
+++ b/macros/latex/contrib/curve2e/curve2e.dtx
@@ -22,7 +22,7 @@ This work is "author-maintained"
This work consists of file curve2e.dtx, and the derived files
curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-README.txt and manifest.txt.
+README.txt and curve2e-v161.sty.
\endpostamble
\askforoverwritefalse
@@ -47,7 +47,7 @@ README.txt and manifest.txt.
%<+package>\ProvidesPackage{curve2e}%
%<+readme>File README.txt for package curve2e
%<*package|readme>
- [2019-10-17 v.2.0.3 Extension package for pict2e]
+ [2019-10-21 v.2.0.4 Extension package for pict2e]
%</package|readme>
%<*driver>
\documentclass{ltxdoc}\errorcontextlines=9
@@ -104,7 +104,7 @@ README.txt and manifest.txt.
%</driver>
% \fi
%
-% \CheckSum{5571}
+% \CheckSum{5569}
% \begin{abstract}
% This file documents the |curve2e| extension package to the |pict2e|
% bundle implementation that has been described by Lamport
@@ -2231,22 +2231,22 @@ README.txt and manifest.txt.
}
% \end{macrocode}
% In order to avoid problems with divisions by zero, or with numbers that
-% yield results to large to be used as multipliers of lengths, it would be
-% preferable that the above code be preceded or followed by some tests and
-% possible messages. Actually we decided to avoid such tests and messages,
-% because the internal L3 functions already provide some. This is what it
-% was done in the previous versions of this package, when the |\fpeval| L3
-% function was not available.
-%
-% Notice that operands |#1| and |#2| may be integer numbers or fractional,
-% or mixed numbers. They may be also dimensions, but while dimensions in
-% printer points (72.27pt=1in) are handled as assumed, when different
-% units are used, the length must be enclosed in parentheses:
+% yield results to large to be used as multipliers of lengths, it would
+% be preferable that the above code be preceded or followed by some tests
+% and possible messages. Actually we decided to avoid such tests and
+% messages, because the internal L3 functions already provide some. This
+% is what it was done in the previous versions of this package, when the
+% |\fpeval| L3 function was not available.
+%
+% Notice that operands |#1| and |#2| may be integer numbers or
+% fractional, or mixed numbers. They may be also dimensions, but while
+% dimensions in printer points (72.27pt=1in) are handled as assumed, when
+% different units are used, the length must be enclosed in parentheses:
%\begin{verbatim}
%\DividE(1mm)by(3mm) to\result
%\end{verbatim}
-% yields correctly |\result=0.33333333|. Without parentheses the result is
-% unpredictable.
+% yields correctly |\result=0.33333333|. Without parentheses the result
+% is unpredictable.
%
% For backward compatibility we need an alias.
% \begin{macrocode}
@@ -2262,12 +2262,13 @@ README.txt and manifest.txt.
\def\MultiplY#1by#2to#3{\edef#3{\fpeval{#1 * #2}}}\relax
\let\MultiplyFN\MultiplY
% \end{macrocode}
-% but with multiplication it is better to avoid computations with lengths.
+% but with multiplication it is better to avoid computations with
+% lengths.
%
-% The next macro uses the \verb|\strip@pt| \LaTeX\ kernel macro to get the
-% numerical value of a measure in points. One has to call |\Numero| with
-% a control sequence and a dimension; the dimension value in points is
-% assigned to the control sequence.
+% The next macro uses the \verb|\strip@pt| \LaTeX\ kernel macro to get
+% the numerical value of a measure in points. One has to call |\Numero|
+% with a control sequence and a dimension; the dimension value in points
+% is assigned to the control sequence.
% \begin{macrocode}
\unless\ifdefined\Numero
\def\Numero#1#2{\bgroup\dimen3254=#2\relax
@@ -2447,20 +2448,20 @@ README.txt and manifest.txt.
% in the mathematical sense of an ordered pair of real numbers; it can be
% viewed as a vector joining the origin of the coordinate axes to the
% coordinates indicated by the ordered pair; it can be interpreted as a
-% roto-amplification operator that scales its operand and rotates it about
-% a pivot point; besides the usual conventional representation used by the
-% mathematicians where the ordered pair is enclosed in round parentheses
-% (which is in perfect agreement with the standard code used by the
-% |picture| environment) there is the other conventional representation
-% used by the engineers that stresses the roto-amplification nature of a
-% complex number:
+% roto-amplification operator that scales its operand and rotates it
+% about a pivot point; besides the usual conventional representation used
+% by the mathematicians where the ordered pair is enclosed in round
+% parentheses (which is in perfect agreement with the standard code used
+% by the |picture| environment) there is the other conventional
+% representation used by the engineers that stresses the
+% roto-amplification nature of a complex number:
%\[
%(x, y) = x + \mathrm{j}y =M \mathrm{e}^{\mathrm{j}\theta}
%\]
% Even the imaginary unit is indicated with $\mathrm{i}$ by the
-% mathematicians and with $\mathrm{j}$ by the engineers. In spite of these
-% differences, these objects, the \emph{complex numbers}, are used without
-% any problem by both mathematicians and engineers.
+% mathematicians and with $\mathrm{j}$ by the engineers. In spite of
+% these differences, these objects, the \emph{complex numbers}, are used
+% without any problem by both mathematicians and engineers.
%
% The important point is that these objects can be summed, subtracted,
% multiplied, divided, raised to any power (integer, fractional, positive
@@ -2470,21 +2471,22 @@ README.txt and manifest.txt.
% doing some of these operations.
%
% In facts we need macros for summing, subtracting, multiplying, dividing
-% complex numbers, for determining their directions (unit vectors); a unit
-% vector is the complex number divided by its magnitude so that the result
-% is the cartesian or polar form of the Euler's formula
+% complex numbers, for determining their directions (unit vectors); a
+% unit vector is the complex number divided by its magnitude so that the
+% result is the cartesian or polar form of the Euler's formula
% \[
% \mathrm{e}^{\mathrm{j}\phi} = \cos\phi+\mathrm{j}\sin\phi
% \]
%
-% The magnitude of a vector is determined by taking a ‘clever’ square root
-% of a function of the real and the imaginary parts; see further on.
+% The magnitude of a vector is determined by taking a ‘clever’ square
+% root of a function of the real and the imaginary parts; see further on.
%
% It's better to represent each complex number with one control sequence;
% this implies frequent assembling and disassembling the pair of real
% numbers that make up a complex number. These real components are
-% assembled into the defining control sequence as a couple of coordinates,
-% i.e.\ two comma separated integer or fractional signed decimal numbers.
+% assembled into the defining control sequence as a couple of
+% coordinates, i.e.\ two comma separated integer or fractional signed
+% decimal numbers.
%
% For assembling two real numbers into a complex number we use the
% following elementary macro:
@@ -2496,8 +2498,8 @@ README.txt and manifest.txt.
\def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}%
% \end{macrocode}
% The magnitude is determined with the macro |\ModOfVect| with delimited
-% arguments; as usual it is assumed that the results are retrieved by means
-% of control sequences, not used directly.
+% arguments; as usual it is assumed that the results are retrieved by
+% means of control sequences, not used directly.
%
% In the preceding version of package |curve2e| the magnitude $M$ was
% determined by taking the moduli of the real and imaginary parts, by
@@ -2507,16 +2509,18 @@ README.txt and manifest.txt.
% \[
% M = \sqrt{a^2+b^2} = \vert a\vert\sqrt{1+(b/a)^2}
% \]
-% In this way the radicand never exceeds 2 and it was quite easy to get its
-% square root by means of the Newton iterative process; due to the
+% In this way the radicand never exceeds 2 and it was quite easy to get
+% its square root by means of the Newton iterative process; due to the
% quadratic convergence, five iterations were more than sufficient. When
-% one of the components was zero, the Newton iterative process was skipped.
+% one of the components was zero, the Newton iterative process was
+% skipped.
% With the availability of the |xfp| package and its floating point
% algorithms it is much easier to compute the magnitude of a complex
% number; since these algorithms allow to use very large numbers, it is
% not necessary to normalise the complex number components to the largest
-% one; therefore the code is much simpler than the ne used for implementing
-% the Newton method in the previous versions of this package.
+% one; therefore the code is much simpler than the one used for
+% implementing the Newton method in the previous versions of this
+% package.
% \begin{macrocode}
\def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
\edef#2{\fpeval{sqrt(\t@X*\t@X + \t@Y*\t@Y)}}\relax
@@ -2524,16 +2528,16 @@ README.txt and manifest.txt.
% \end{macrocode}
%
% Since the macro for determining the magnitude of a vector is available,
-% we can now normalize the vector to its magnitude, therefore getting the
+% we can now normalise the vector to its magnitude, therefore getting the
% Cartesian form of the direction vector. If by any chance the direction
% of the null vector is requested, the output is again the null vector,
-% without normalization.
+% without normalisation.
% \begin{macrocode}
\def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
\ModOfVect#1to\@tempa
\unless\ifdim\@tempa\p@=\z@
- \DividE\t@X\p@ by\@tempa to\t@X
- \DividE\t@Y\p@ by\@tempa to\t@Y
+ \DividE\t@X by\@tempa to\t@X
+ \DividE\t@Y by\@tempa to\t@Y
\fi
\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
% \end{macrocode}
@@ -2541,29 +2545,29 @@ README.txt and manifest.txt.
% A cumulative macro uses the above ones to determine with one call both
% the magnitude and the direction of a complex number. The first argument
% is the input complex number, the second its magnitude, and the third is
-% again a complex number normalised to unit magnitude (unless the input was
-% the null complex number); remember always that output quantities must be
-% specified with control sequences to be used at a later time.
+% again a complex number normalised to unit magnitude (unless the input
+% was the null complex number); remember always that output quantities
+% must be specified with control sequences to be used at a later time.
% \begin{macrocode}
\def\ModAndDirOfVect#1to#2and#3{%
\GetCoord(#1)\t@X\t@Y
\ModOfVect#1to#2%
\DirOfVect#1to#3\ignorespaces}%
% \end{macrocode}
-% The next macro computes the magnitude and the direction of the difference
-% of two complex numbers; the first input argument is the minuend, the
-% second is the subtrahend; the output quantities are the third argument
-% containing the magnitude of the difference and the fourth is the
-% direction of the difference.
-% The service macro |\SubVect| executes the difference of two complex
+% The next macro computes the magnitude and the direction of the
+% difference of two complex numbers; the first input argument is the
+% minuend, the second is the subtrahend; the output quantities are the
+% third argument containing the magnitude of the difference and the
+% fourth is the direction of the difference.
+% The service macro |\SubVect| executes the difference of two complex
% numbers and is described further on.
% \begin{macrocode}
\def\DistanceAndDirOfVect#1minus#2to#3and#4{%
\SubVect#2from#1to\@tempa
\ModAndDirOfVect\@tempa to#3and#4\ignorespaces}%
% \end{macrocode}
-% We now have two macros intended to fetch just the real or, respectively,
-% the imaginary part of the input complex number.
+% We now have two macros intended to fetch just the real or,
+% respectively, the imaginary part of the input complex number.
% \begin{macrocode}
\def\XpartOfVect#1to#2{%
\GetCoord(#1)#2\@tempa\ignorespaces}%
@@ -2571,8 +2575,8 @@ README.txt and manifest.txt.
\def\YpartOfVect#1to#2{%
\GetCoord(#1)\@tempa#2\ignorespaces}%
% \end{macrocode}
-% With the next macro we create a direction vector (second argument) from a
-% given angle (first argument, in degrees).
+% With the next macro we create a direction vector (second argument) from
+% a given angle (first argument, in degrees).
% \begin{macrocode}
\def\DirFromAngle#1to#2{%
\CosOf#1to\t@X
@@ -2580,8 +2584,9 @@ README.txt and manifest.txt.
\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
% \end{macrocode}
%
-% Sometimes it is necessary to scale a vector by an arbitrary real factor;
-% this implies scaling both the real and imaginary part of the input given vector.
+% Sometimes it is necessary to scale a vector by an arbitrary real
+% factor; this implies scaling both the real and imaginary part of the
+% input given vector.
% \begin{macrocode}
\def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y
\edef\t@X{\fpeval{#2 * \t@X}}\relax
@@ -2620,13 +2625,19 @@ README.txt and manifest.txt.
% For the multiplication we need to split the operation according to the
% fact that we want to multiply by the second operand or by the complex
% conjugate of the second operand; it would be nice if we could use the
-% usual postfixed asterisk notation for the complex conjugate, but we could
-% not find a simple means for doing so; therefore we use the prefixed
-% notation, that is I put the asterisk before the second operand. The first
-% part of the multiplication macro just takes care of the multiplicand and
-% then checks for the asterisk; if there is no asterisk it calls a second
-% service macro that performs a regular complex multiplication, otherwise
-% it calls a third service macro that executes the conjugate
+% usual postfixed asterisk notation for the complex conjugate, but we
+% could not find a simple means for doing so\footnote{Actually the simple
+% means do exist now through the use of the \texttt{xparse} package, but
+% they became available only when the syntax of this
+% \texttt{\string\MultVect} macro had been already in use for a long
+% time; changing the position of the asterisk at this moment, would mean
+% to render the new definition incompatible with the existing source
+% document files.}; therefore we use the prefixed notation, that is we
+% put the asterisk \emph{before} the second operand. The first part of
+% the multiplication macro just takes care of the multiplicand and then
+% checks for the asterisk; if there is no asterisk it calls a second
+% (service) macro that performs a regular complex multiplication,
+% otherwise it calls a third service macro that executes the conjugate
% multiplication.
% \begin{macrocode}
\def\MultVect#1by{\@ifstar{\@ConjMultVect#1by}{\@MultVect#1by}}%
@@ -2646,7 +2657,12 @@ README.txt and manifest.txt.
%
% The division of two complex numbers implies scaling down the dividend
% by the magnitude of the divisor and by rotating the dividend scaled
-% vector by the opposite direction of the divisor; therefore:
+% vector by the conjugate direction of the divisor;
+%\[
+% \frac{\vec{N}}{\vec{D}}= \frac{\vec{N}}{M\vec{u}}=
+% \frac{\vec{N}}{M}\vec{u}^{\mkern2mu\star}
+%\]
+%therefore:
% \begin{macrocode}
\def\DivVect#1by#2to#3{\ModAndDirOfVect#2to\@Mod and\@Dir
\edef\@Mod{\fpeval{1 / \@Mod}}\relax
@@ -3741,8 +3757,8 @@ README.txt
curve2e-v161.sty
ltxdoc.cfg
-curve2e.dtx is the documented TeX source file of file curve2e.sty; you get
-both curve2e.sty and curve2e.pdf by running pdflatex on curve2e.dtx.
+curve2e.dtx is the documented TeX source file of file curve2e.sty; you
+get both curve2e.sty and curve2e.pdf by running pdflatex on curve2e.dtx.
The ltxdoc.cfg file customises the way the documentation file is typeset.
This .cfg file is not subject to the LPPL licence.
@@ -3756,11 +3772,12 @@ standard picture LaTeX environment according to what Leslie Lamport
specified in the second edition of his LaTeX manual.
This further extension allows to draw lines and vectors with any non
-integer slope parameters, to draw dashed lined of any slope, to draw arcs
+integer slope parameters, to draw dashed lines of any slope, to draw arcs
and curved vectors, to draw curves where just the interpolating nodes are
-specified together with the slopes at the nodes; closed paths of any shape
-can be filled with color; all coordinates are treated as ordered pairs,
-i.e. 'complex numbers'; coordinates may be expressed also in polar form.
+specified together with the slopes at the nodes; closed paths of any
+shape can be filled with color; all coordinates are treated as ordered
+pairs, i.e. 'complex numbers'; coordinates may be expressed also in
+polar form.
Some of these features have been incorporated in the 2011 version of
pict2e; therefore this package avoids any modification to the original
pict2e commands.
@@ -3768,7 +3785,10 @@ pict2e commands.
Curve2e now accepts polar coordinates in addition to the usual cartesian
ones; several macros have been upgraded and a new macro for tracing cubic
-Bezier splines with their control nodes specified in polar form is available. The same applies to quadratic Bezier splines.
+Bezier splines with their control nodes specified in polar form is
+available. The same applies to quadratic Bezier splines. The multiput
+command has been completely modified in a backwards compatible way, as
+to manipulate the increment components.
This version solves a conflict with package eso-pic.
diff --git a/macros/latex/contrib/curve2e/curve2e.pdf b/macros/latex/contrib/curve2e/curve2e.pdf
index 59094e6a2d..f20ef1d96c 100644
--- a/macros/latex/contrib/curve2e/curve2e.pdf
+++ b/macros/latex/contrib/curve2e/curve2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/curve2e/curve2e.sty b/macros/latex/contrib/curve2e/curve2e.sty
deleted file mode 100644
index 052cc398b0..0000000000
--- a/macros/latex/contrib/curve2e/curve2e.sty
+++ /dev/null
@@ -1,729 +0,0 @@
-%%
-%% This is file `curve2e.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% curve2e.dtx (with options: `package')
-%%
-%% Copyright (C) 2005--2019 Claudio Beccari all rights reserved.
-%% License information appended
-%%
-\NeedsTeXFormat{LaTeX2e}[2016/01/01]
-\ProvidesPackage{curve2e}%
- [2019-10-17 v.2.0.3 Extension package for pict2e]
-
-
-
-\IfFileExists{xfp.sty}{%
- \RequirePackage{color}
- \RequirePackageWithOptions{pict2e}[2014/01/01]
- \@ifl@aded{sty}{xparse}{}{\RequirePackage{xparse}}
- \@ifl@aded{sty}{xfp}{}{\RequirePackage{xfp}}%
-}{%
- \RequirePackage{curve2e-v161}%
- \PackageWarningNoLine{curve2e}{%
- Package xfp is required, but apparently\MessageBreak%
- such package cannot be found in this \MessageBreak%
- TeX system installation\MessageBreak%
- Either your installation is not complete \MessageBreak%
- or it is older than 2018-10-17.\MessageBreak%
- \MessageBreak%
- ***************************************\MessageBreak%
- Version 1.61 of curve2e has been loaded\MessageBreak%
- instead of the current version\MessageBreak%
- ***************************************\MessageBreak}%
- \endinput
-}
-\def\TRON{\tracingcommands\tw@ \tracingmacros\tw@}%
-\def\TROF{\tracingcommands\z@ \tracingmacros\z@}%
-\ifx\undefined\@tdA \newdimen\@tdA \fi
-\ifx\undefined\@tdB \newdimen\@tdB \fi
-\ifx\undefined\@tdC \newdimen\@tdC \fi
-\ifx\undefined\@tdD \newdimen\@tdD \fi
-\ifx\undefined\@tdE \newdimen\@tdE \fi
-\ifx\undefined\@tdF \newdimen\@tdF \fi
-\ifx\undefined\defaultlinewidth \newdimen\defaultlinewidth \fi
-\gdef\linethickness#1{%
-\@wholewidth#1\@halfwidth.5\@wholewidth\ignorespaces}%
-\newcommand\defaultlinethickness[1]{\defaultlinewidth=#1\relax
-\def\thicklines{\linethickness{\defaultlinewidth}}%
-\def\thinlines{\linethickness{.5\defaultlinewidth}}\thinlines
- \ignorespaces}%
-\def\LIne(#1){{\GetCoord(#1)\@tX\@tY
- \moveto(0,0)
- \pIIe@lineto{\@tX\unitlength}{\@tY\unitlength}\strokepath}\ignorespaces
-}%
-\def\segment(#1)(#2){\@killglue\polyline(#1)(#2)}%
-\def\line(#1)#2{\begingroup
- \@linelen #2\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \expandafter\DirOfVect#1to\Dir@line
- \GetCoord(\Dir@line)\d@mX\d@mY
- \ifdim\d@mX\p@=\z@\else
- \edef\sc@lelen{\fpeval{1 / abs(\d@mX)}}\relax
- \@linelen=\sc@lelen\@linelen
- \fi
- \moveto(0,0)
- \pIIe@lineto{\d@mX\@linelen}{\d@mY\@linelen}%
- \strokepath
- \fi
-\endgroup\ignorespaces}%
-\ifx\Dashline\undefined
- \def\Dashline{\@ifstar{\Dashline@@}{\Dashline@}}
-
- \def\Dashline@(#1)(#2)#3{%
- \bgroup
- \countdef\NumA3254\countdef\NumB3252\relax
- \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA
- \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB
- \SubVect\V@ttA from\V@ttB to\V@ttC
- \ModOfVect\V@ttC to\DlineMod
- \DivideFN\DlineMod by#3 to\NumD
- \NumA=\fpeval{trunc(\NumD,0)}\relax
- \unless\ifodd\NumA\advance\NumA\@ne\fi
- \NumB=\NumA \divide\NumB\tw@
- \DividE\DlineMod\p@ by\NumA\p@ to\D@shMod
- \DividE\p@ by\NumA\p@ to \@tempa
- \MultVect\V@ttC by\@tempa,0 to\V@ttB
- \MultVect\V@ttB by 2,0 to\V@ttC
- \advance\NumB\@ne
- \edef\@mpt{\noexpand\egroup
- \noexpand\multiput(\V@ttA)(\V@ttC){\number\NumB}%
- {\noexpand\LIne(\V@ttB)}}%
- \@mpt\ignorespaces}%
- \let\Dline\Dashline
-
- \def\Dashline@@(#1)(#2)#3{\put(#1){\Dashline@(0,0)(#2){#3}}}
-\fi
-\ifx\Dotline\undefined
- \def\Dotline{\@ifstar{\Dotline@@}{\Dotline@}}
- \def\Dotline@(#1)(#2)#3{%
- \bgroup
- \countdef\NumA 3254\relax \countdef\NumB 3255\relax
- \GetCoord(#1)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttA
- \GetCoord(#2)\@tA\@tB \MakeVectorFrom\@tA\@tB to\V@ttB
- \SubVect\V@ttA from\V@ttB to\V@ttC
- \ModOfVect\V@ttC to\DotlineMod
- \DivideFN\DotlineMod by#3 to\NumD
- \NumA=\fpeval{trunc(\NumD,0)}\relax
- \DivVect\V@ttC by\NumA,0 to\V@ttB
- \advance\NumA\@ne
- \edef\@mpt{\noexpand\egroup
- \noexpand\multiput(\V@ttA)(\V@ttB){\number\NumA}%
- {\noexpand\makebox(0,0){\noexpand\circle*{0.5}}}}%
- \@mpt\ignorespaces}%
-
- \def\Dotline@@(#1)(#2)#3{\put(#1){\Dotline@(0,0)(#2){#3}}}%
-\fi
-\AtBeginDocument{\@ifpackageloaded{eso-pic}{%
-\renewcommand\LenToUnit[1]{\strip@pt\dimexpr#1*\p@/\unitlength}}{}}%
-\def\GetCoord(#1)#2#3{%
-\expandafter\SplitNod@\expandafter(#1)#2#3\ignorespaces}
-\def\SplitNod@(#1)#2#3{\isnot@polar#1:!!(#1)#2#3}%
-\def\isnot@polar#1:#2!!{\def\@tempOne{#2}\ifx\@tempOne\empty
-\expandafter\@firstoftwo\else
-\expandafter\@secondoftwo\fi
-{\SplitNod@@}{\SplitPolar@@}}
-
-\def\SplitNod@@(#1,#2)#3#4{\edef#3{#1}\edef#4{#2}}%
-\def\SplitPolar@@(#1:#2)#3#4{\DirFromAngle#1to\@DirA
-\ScaleVect\@DirA by#2to\@DirA
-\expandafter\SplitNod@@\expandafter(\@DirA)#3#4}
-\let\originalput\put
-\def\put(#1){\bgroup\GetCoord(#1)\@tX\@tY
-\edef\x{\noexpand\egroup\noexpand\originalput(\@tX,\@tY)}\x}
-\RenewDocumentCommand{\multiput}{ d() d() m m o }{%
-\IfNoValueTF{#1}{\PackageError{curve2e}{%
- \string\multiput\space initial point coordinates missing}%
- {Nothing done}}%
- {\IfNoValueTF{#2}{\PackageError{curve2e}{%
- \string\multiput\space Increment components missing}%
- {Nothing done}%
- }%
- {\GetCoord(#2)\dX\dY
- \put(#1){\def\X{0}\def\Y{0}\@multicnt=#3\relax
- \@whilenum \@multicnt > \z@\do{%
- \put(\X,\Y){#4}\IfValueTF{#5}{#5}{%
- \edef\X{\fpeval{\X+\dX}}\edef\Y{\fpeval{\Y+\dY}}}%
- \advance\@multicnt\m@ne
- }%
- }}
- }%
-}
- \def\vector(#1)#2{%
- \begingroup
- \GetCoord(#1)\d@mX\d@mY
- \@linelen#2\unitlength
- \ifdim\d@mX\p@=\z@\ifdim\d@mY\p@=\z@\@badlinearg\fi\fi
- \ifdim\@linelen<\z@ \@linelen=-\@linelen\fi
- \MakeVectorFrom\d@mX\d@mY to\@Vect
- \DirOfVect\@Vect to\Dir@Vect
- \YpartOfVect\Dir@Vect to\@ynum \@ydim=\@ynum\p@
- \XpartOfVect\Dir@Vect to\@xnum \@xdim=\@xnum\p@
- \ifdim\d@mX\p@=\z@
- \else\ifdim\d@mY\p@=\z@
- \else
- \edef\sc@lelen{\fpeval{1 / abs(\@xnum)}}\relax
- \@linelen=\sc@lelen\@linelen
- \fi
- \fi
- \@tdB=\@linelen
-\pIIe@concat\@xdim\@ydim{-\@ydim}\@xdim{\@xnum\@linelen}{\@ynum\@linelen}%
- \@linelen\z@
- \pIIe@vector
- \fillpath
- \@linelen=\@tdB
- \@tdA=\pIIe@FAW\@wholewidth
- \@tdA=\pIIe@FAL\@tdA
- \advance\@linelen-\@tdA
- \ifdim\@linelen>\z@
- \moveto(0,0)
- \pIIe@lineto{\@xnum\@linelen}{\@ynum\@linelen}%
- \strokepath\fi
- \endgroup}
-\def\Vector(#1){{%
-\GetCoord(#1)\@tX\@tY
-\ifdim\@tX\p@=\z@
- \vector(\@tX,\@tY){\@tY}%
-\else
- \vector(\@tX,\@tY){\@tX}%
-\fi}}
-\def\VECTOR(#1)(#2){\begingroup
-\SubVect#1from#2to\@tempa
-\expandafter\put\expandafter(#1){\expandafter\Vector\expandafter(\@tempa)}%
-\endgroup\ignorespaces}
-\def\VVECTOR(#1)(#2){{\SubVect#1from#2to\@tempb
-\ScaleVect\@tempb by0.5to\@tempb
-\AddVect\@tempb and#1to\@tempb
-\VECTOR(\@tempb)(#2)\VECTOR(\@tempb)(#1)\ignorespaces}}
-\let\lp@r( \let\rp@r)
-\renewcommand*\polyline[1][\beveljoin]{\p@lylin@[#1]}
-
-\def\p@lylin@[#1](#2){\@killglue#1\GetCoord(#2)\d@mX\d@mY
- \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\p@lyline}{%
- \PackageWarning{curve2e}%
- {Polylines require at least two vertices!\MessageBreak
- Control your polyline specification\MessageBreak}%
- \ignorespaces}}
-
-\def\p@lyline(#1){\GetCoord(#1)\d@mX\d@mY
- \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\p@lyline}{\strokepath\ignorespaces}}
-\providecommand\polygon{}
-\RenewDocumentCommand\polygon{s O{\beveljoin} }{\@killglue\begingroup
-\IfBooleanTF{#1}{\@tempswatrue}{\@tempswafalse}%
-\@polygon[#2]}
-
-\def\@polygon[#1](#2){\@killglue#1\GetCoord(#2)\d@mX\d@mY
- \pIIe@moveto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\@@polygon}{%
- \PackageWarning{curve2e}%
- {Polygons require at least two vertices!\MessageBreak
- Control your polygon specification\MessageBreak}%
- \ignorespaces}}
-
- \def\@@polygon(#1){\GetCoord(#1)\d@mX\d@mY
- \pIIe@lineto{\d@mX\unitlength}{\d@mY\unitlength}%
- \@ifnextchar\lp@r{\@@polygon}{\pIIe@closepath
- \if@tempswa\pIIe@fillGraph\else\pIIe@strokeGraph\fi
- \endgroup
- \ignorespaces}}
-
-\def\GraphGrid(#1,#2){\bgroup\textcolor{red}{\linethickness{.1\p@}%
-\RoundUp#1modulo10to\@GridWd \RoundUp#2modulo10to\@GridHt
-\@tempcnta=\@GridWd \divide\@tempcnta10\relax \advance\@tempcnta\@ne
-\multiput(0,0)(10,0){\@tempcnta}{\line(0,1){\@GridHt}}%
-\@tempcnta=\@GridHt \divide\@tempcnta10\advance\@tempcnta\@ne
-\multiput(0,0)(0,10){\@tempcnta}{\line(1,0){\@GridWd}}\thinlines}%
-\egroup\ignorespaces}
-\def\RoundUp#1modulo#2to#3{\expandafter\@tempcnta\Integer#1.??%
-\count254\@tempcnta\divide\count254by#2\relax
-\multiply\count254by#2\relax
-\count252\@tempcnta\advance\count252-\count254
-\ifnum\count252>0\advance\count252-#2\relax
-\advance\@tempcnta-\count252\fi\edef#3{\number\@tempcnta}\ignorespaces}%
-\def\Integer#1.#2??{#1}%
-
-\def\DividE#1by#2to#3{%
- \edef#3{\fpeval{#1 / #2}}\relax
-}
-\let\DivideFN\DividE
-\def\MultiplY#1by#2to#3{\edef#3{\fpeval{#1 * #2}}}\relax
-\let\MultiplyFN\MultiplY
-\unless\ifdefined\Numero
- \def\Numero#1#2{\bgroup\dimen3254=#2\relax
- \edef\x{\noexpand\egroup\noexpand\edef\noexpand#1{%
- \strip@pt\dimen3254}}\x\ignorespaces}%
-\fi
-\def\SinOf#1to#2{\edef#2{\fpeval{round(sind#1,6)}}}\relax
-\def\CosOf#1to#2{\edef#2{\fpeval{round(cosd#1,6)}}}\relax
-\def\ArgOfVect#1to#2{\bgroup\GetCoord(#1){\t@X}{\t@Y}%
-\def\s@gno{}%
-\ifdim\t@X\p@=\z@
- \ifdim\t@Y\p@=\z@
- \def\ArcTan{0}% vettore nullo
- \else
- \def\ArcTan{90}% vettore verticale
- \ifdim\t@Y\p@<\z@\def\ArcTan{-90}\fi
- \fi
-\else
- \ifdim\t@Y\p@=\z@% vettore orizzontale
- \ifdim\t@X\p@<\z@
- \def\ArcTan{180}%
- \else
- \def\ArcTan{0}%
- \fi
- \else % vettore qualsiasi
- \edef\ArcTan{\fpeval{atand(\t@Y / \t@X)}}\relax
- \ifdim\t@X\p@<\z@% vettore nei quadranti di sinistra
- \ifdim\t@Y\p@<\z@
- \edef\ArcTan{\fpeval{\ArcTan - 180}}\relax
- \else
- \edef\ArcTan{\fpeval{\ArcTan + 180}}\relax
- \fi
- \fi
- \fi
-\fi
-\edef\x{\noexpand\egroup\noexpand\edef\noexpand#2{\ArcTan}}%
-\x\ignorespaces}
-\def\MakeVectorFrom#1#2to#3{\edef#3{#1,#2}\ignorespaces}%
-\def\CopyVect#1to#2{\edef#2{#1}\ignorespaces}%
-\def\ModOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\edef#2{\fpeval{sqrt(\t@X*\t@X + \t@Y*\t@Y)}}\relax
-\ignorespaces}%
-\def\DirOfVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\ModOfVect#1to\@tempa
-\unless\ifdim\@tempa\p@=\z@
- \DividE\t@X\p@ by\@tempa to\t@X
- \DividE\t@Y\p@ by\@tempa to\t@Y
-\fi
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\ModAndDirOfVect#1to#2and#3{%
-\GetCoord(#1)\t@X\t@Y
-\ModOfVect#1to#2%
-\DirOfVect#1to#3\ignorespaces}%
-\def\DistanceAndDirOfVect#1minus#2to#3and#4{%
-\SubVect#2from#1to\@tempa
-\ModAndDirOfVect\@tempa to#3and#4\ignorespaces}%
-\def\XpartOfVect#1to#2{%
-\GetCoord(#1)#2\@tempa\ignorespaces}%
-\def\YpartOfVect#1to#2{%
-\GetCoord(#1)\@tempa#2\ignorespaces}%
-\def\DirFromAngle#1to#2{%
-\CosOf#1to\t@X
-\SinOf#1to\t@Y
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\ScaleVect#1by#2to#3{\GetCoord(#1)\t@X\t@Y
-\edef\t@X{\fpeval{#2 * \t@X}}\relax
-\edef\t@Y{\fpeval{#2 * \t@Y}}\relax
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\ConjVect#1to#2{\GetCoord(#1)\t@X\t@Y
-\edef\t@Y{-\t@Y}%
-\MakeVectorFrom\t@X\t@Y to#2\ignorespaces}%
-\def\AddVect#1and#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\edef\t@X{\fpeval{\tu@X + \td@X}}\relax
-\edef\t@Y{\fpeval{\tu@Y + \td@Y}}\relax
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\SubVect#1from#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\edef\t@X{\fpeval{\td@X - \tu@X}}\relax
-\edef\t@Y{\fpeval{\td@Y - \tu@Y}}\relax
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\MultVect#1by{\@ifstar{\@ConjMultVect#1by}{\@MultVect#1by}}%
-\def\@MultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\edef\t@X{\fpeval{\tu@X * \td@X - \tu@Y * \td@Y}}\relax
-\edef\t@Y{\fpeval{\tu@Y * \td@X + \tu@X * \td@Y}}\relax
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}%
-\def\@ConjMultVect#1by#2to#3{\GetCoord(#1)\tu@X\tu@Y
-\GetCoord(#2)\td@X\td@Y
-\edef\t@X{\fpeval{\tu@X * \td@X + \tu@Y * \td@Y}}\relax
-\edef\t@Y{\fpeval{\tu@Y * \td@X - \tu@X * \td@Y}}\relax
-\MakeVectorFrom\t@X\t@Y to#3\ignorespaces}
-\def\DivVect#1by#2to#3{\ModAndDirOfVect#2to\@Mod and\@Dir
-\edef\@Mod{\fpeval{1 / \@Mod}}\relax
-\ConjVect\@Dir to\@Dir
-\ScaleVect#1by\@Mod to\@tempa
-\MultVect\@tempa by\@Dir to#3\ignorespaces}%
-\def\Arc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\unless\ifdim\@tdA=\z@
- \@Arc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\@Arc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi
-\Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#2from#1to\@V \ModOfVect\@V to\@Raggio
-\CopyVect#2to\@pPun
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc\strokepath\ignorespaces}%
-\def\@@Arc{%
-\pIIe@moveto{\@pPunX\unitlength}{\@pPunY\unitlength}%
-\ifdim\@tdA>180\p@
- \advance\@tdA-180\p@
- \Numero\@gradi\@tdA
- \SubVect\@pPun from\@Cent to\@V
- \AddVect\@V and\@Cent to\@sPun
- \MultVect\@V by0,-1.3333333to\@V
- \if\Segno-\ScaleVect\@V by-1to\@V\fi
- \AddVect\@pPun and\@V to\@pcPun
- \AddVect\@sPun and\@V to\@scPun
- \GetCoord(\@pcPun)\@pcPunX\@pcPunY
- \GetCoord(\@scPun)\@scPunX\@scPunY
- \GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
- \CopyVect\@sPun to\@pPun
-\fi
-\ifdim\@tdA>\z@
- \DirFromAngle\@gradi to\@Dir \if\Segno-\ConjVect\@Dir to\@Dir \fi
- \SubVect\@Cent from\@pPun to\@V
- \MultVect\@V by\@Dir to\@V
- \AddVect\@Cent and\@V to\@sPun
- \@tdA=.5\@tdA \Numero\@gradi\@tdA
- \DirFromAngle\@gradi to\@Phimezzi
- \GetCoord(\@Phimezzi)\@cosphimezzi\@sinphimezzi
- \@tdB=1.3333333\p@ \@tdB=\@Raggio\@tdB
- \@tdC=\p@ \advance\@tdC -\@cosphimezzi\p@ \Numero\@tempa\@tdC
- \@tdB=\@tempa\@tdB
- \DividE\@tdB by\@sinphimezzi\p@ to\@cZ
- \ScaleVect\@Phimezzi by\@cZ to\@Phimezzi
- \ConjVect\@Phimezzi to\@mPhimezzi
- \if\Segno-%
- \let\@tempa\@Phimezzi
- \let\@Phimezzi\@mPhimezzi
- \let\@mPhimezzi\@tempa
- \fi
- \SubVect\@sPun from\@pPun to\@V
- \DirOfVect\@V to\@V
- \MultVect\@Phimezzi by\@V to\@Phimezzi
- \AddVect\@sPun and\@Phimezzi to\@scPun
- \ScaleVect\@V by-1to\@V
- \MultVect\@mPhimezzi by\@V to\@mPhimezzi
- \AddVect\@pPun and\@mPhimezzi to\@pcPun
- \GetCoord(\@pcPun)\@pcPunX\@pcPunY
- \GetCoord(\@scPun)\@scPunX\@scPunY
- \GetCoord(\@sPun)\@sPunX\@sPunY
- \pIIe@curveto{\@pcPunX\unitlength}{\@pcPunY\unitlength}%
- {\@scPunX\unitlength}{\@scPunY\unitlength}%
- {\@sPunX\unitlength}{\@sPunY\unitlength}%
-\fi}
-\def\VectorArc(#1)(#2)#3{\begingroup
-\@tdA=#3\p@ \ifdim\@tdA=\z@\else
- \@VArc(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\VectorARC(#1)(#2)#3{\begingroup
-\@tdA=#3\p@
-\ifdim\@tdA=\z@\else
- \@VARC(#1)(#2)%
-\fi
-\endgroup\ignorespaces}%
-\def\@VArc(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
-\@tdE=\pIIe@FAW\@wholewidth \@tdE=\pIIe@FAL\@tdE
-\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
-\@tdD=\DeltaGradi\p@
-\@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD
-\@tdD=\ifx\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
-\DirFromAngle\@tempa to\@Dir
-\MultVect\@V by\@Dir to\@sPun
-\edef\@tempA{\ifx\Segno-\m@ne\else\@ne\fi}%
-\MultVect\@sPun by 0,\@tempA to\@vPun
-\DirOfVect\@vPun to\@Dir
-\AddVect\@sPun and #1 to \@sPun
-\GetCoord(\@sPun)\@tdX\@tdY
-\@tdD\ifx\Segno--\fi\DeltaGradi\p@
-\@tdD=.5\@tdD \Numero\DeltaGradi\@tdD
-\DirFromAngle\DeltaGradi to\@Dird
-\MultVect\@Dir by*\@Dird to\@Dir
-\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}%
-\@tdE =\ifx\Segno--\fi\DeltaGradi\p@
-\advance\@tdA -\@tdE \Numero\@gradi\@tdA
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
-\def\@VARC(#1)(#2){%
-\ifdim\@tdA>\z@
- \let\Segno+%
-\else
- \@tdA=-\@tdA \let\Segno-%
-\fi \Numero\@gradi\@tdA
-\ifdim\@tdA>360\p@
- \PackageWarning{curve2e}{The arc aperture is \@gradi\space degrees
- and gets reduced\MessageBreak%
- to the range 0--360 taking the sign into consideration}%
- \@whiledim\@tdA>360\p@\do{\advance\@tdA-360\p@}%
-\fi
-\SubVect#1from#2to\@V \ModOfVect\@V to\@Raggio \CopyVect#2to\@pPun
-\@tdE=\pIIe@FAW\@wholewidth \@tdE=0.8\@tdE
-\DividE\@tdE by \@Raggio\unitlength to\DeltaGradi
-\@tdD=\DeltaGradi\p@ \@tdD=57.29578\@tdD \Numero\DeltaGradi\@tdD
-\@tdD=\if\Segno--\fi\@gradi\p@ \Numero\@tempa\@tdD
-\DirFromAngle\@tempa to\@Dir
-\MultVect\@V by\@Dir to\@sPun% corrects the end point
-\edef\@tempA{\if\Segno--\fi1}%
-\MultVect\@sPun by 0,\@tempA to\@vPun
-\DirOfVect\@vPun to\@Dir
-\AddVect\@sPun and #1 to \@sPun
-\GetCoord(\@sPun)\@tdX\@tdY
-\@tdD\if\Segno--\fi\DeltaGradi\p@
-\@tdD=.5\@tdD \Numero\@tempB\@tdD
-\DirFromAngle\@tempB to\@Dird
-\MultVect\@Dir by*\@Dird to\@Dir
-\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@tdX,\@tdY){\vector(\@xnum,\@ynum){0}}% end point arrowt ip
-\@tdE =\DeltaGradi\p@
-\advance\@tdA -2\@tdE \Numero\@gradi\@tdA
-\CopyVect#1to\@Cent \GetCoord(\@pPun)\@pPunX\@pPunY
-\SubVect\@Cent from\@pPun to \@V
-\edef\@tempa{\if\Segno-\else-\fi\@ne}%
-\MultVect\@V by0,\@tempa to\@vPun
-\@tdE\if\Segno--\fi\DeltaGradi\p@
-\Numero\@tempB{0.5\@tdE}%
-\DirFromAngle\@tempB to\@Dird
-\MultVect\@vPun by\@Dird to\@vPun% corrects the starting point
-\DirOfVect\@vPun to\@Dir\GetCoord(\@Dir)\@xnum\@ynum
-\put(\@pPunX,\@pPunY){\vector(\@xnum,\@ynum){0}}% starting point arrow tip
-\edef\@tempa{\if\Segno--\fi\DeltaGradi}%
-\DirFromAngle\@tempa to \@Dir
-\SubVect\@Cent from\@pPun to\@V
-\MultVect\@V by\@Dir to\@V
-\AddVect\@Cent and\@V to\@pPun
-\GetCoord(\@pPun)\@pPunX\@pPunY
-\@@Arc
-\strokepath\ignorespaces}%
-\def\CurveBetween#1and#2WithDirs#3and#4{%
- \StartCurveAt#1WithDir{#3}\relax
- \CurveTo#2WithDir{#4}\CurveFinish\ignorespaces
-}%
-\def\StartCurveAt#1WithDir#2{%
-\begingroup
-\GetCoord(#1)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Pzero
-\pIIe@moveto{\@tempa\unitlength}{\@tempb\unitlength}%
-\GetCoord(#2)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Dzero
-\DirOfVect\@Dzero to\@Dzero
-\ignorespaces}
-\def\ChangeDir<#1>{%
-\GetCoord(#1)\@tempa\@tempb
-\CopyVect\@tempa,\@tempb to\@Dzero
-\DirOfVect\@Dzero to\@Dzero
-\ignorespaces}
-\def\CurveFinish{\strokepath\endgroup\ignorespaces}%
-\def\FillCurve{\fillpath\endgroup\ignorespaces}
-\def\CurveEnd{\fillstroke\endgroup\ignorespaces}
-\def\CbezierTo#1WithDir#2AndDists#3And#4{%
-\GetCoord(#1)\@tX\@tY \MakeVectorFrom\@tX\@tY to\@Puno
-\GetCoord(#2)\@tX\@tY \MakeVectorFrom\@tX\@tY to \@Duno
-\DirOfVect\@Duno to\@Duno
-\ScaleVect\@Dzero by#3to\@Czero \AddVect\@Pzero and\@Czero to\@Czero
-\ScaleVect\@Duno by-#4to \@Cuno \AddVect\@Puno and\@Cuno to \@Cuno
-\GetCoord(\@Czero)\@XCzero\@YCzero
-\GetCoord(\@Cuno)\@XCuno\@YCuno
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\pIIe@curveto{\@XCzero\unitlength}{\@YCzero\unitlength}%
- {\@XCuno\unitlength}{\@YCuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}%
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}%
-\def\CbezierBetween#1And#2WithDirs#3And#4UsingDists#5And#6{%
-\StartCurveAt#1WithDir{#3}\relax
-\CbezierTo#2WithDir#4AndDists#5And{#6}\CurveFinish}
-
-\def\@isTension#1;#2!!{\def\@tempA{#1}%
-\def\@tempB{#2}\unless\ifx\@tempB\empty\strip@semicolon#2\fi}
-
-\def\strip@semicolon#1;{\def\@tempB{#1}}
-\def\CurveTo#1WithDir#2{%
-\def\@Tuno{1}\def\@Tzero{1}\relax
-\edef\@Puno{#1}\@isTension#2;!!%
-\expandafter\DirOfVect\@tempA to\@Duno
-\bgroup\unless\ifx\@tempB\empty\GetCoord(\@tempB)\@Tzero\@Tuno\fi
-\DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord
-\MultVect\@Dzero by*\@DirChord to \@Dpzero
-\MultVect\@Duno by*\@DirChord to \@Dpuno
-\GetCoord(\@Dpzero)\@DXpzero\@DYpzero
-\GetCoord(\@Dpuno)\@DXpuno\@DYpuno
-\DivideFN\@Chord by2 to\@semichord
-\ifdim\@DXpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@KCzero{\@semichord\@tdA}%
-\fi
-\ifdim\@DYpzero\p@=\z@
- \@tdA=1.333333\p@
- \Numero\@Kpzero{\@semichord\@tdA}%
-\fi
-\unless\ifdim\@DXpzero\p@=\z@
- \unless\ifdim\@DYpzero\p@=\z@
- \edef\@CosDzero{\ifdim\@DXpzero\p@<\z@ -\fi\@DXpzero}%
- \edef\@SinDzero{\ifdim\@DYpzero\p@<\z@ -\fi\@DYpzero}%
- \@tdA=\@semichord\p@ \@tdA=1.333333\@tdA
- \DividE\@tdA by\@SinDzero\p@ to \@KCzero
- \@tdA=\dimexpr(\p@-\@CosDzero\p@)\relax
- \DividE\@KCzero\@tdA by\@SinDzero\p@ to \@KCzero
- \fi
-\fi
-\MultiplyFN\@KCzero by \@Tzero to \@KCzero
-\ScaleVect\@Dzero by\@KCzero to\@CPzero
-\AddVect\@Pzero and\@CPzero to\@CPzero
-\ifdim\@DXpuno\p@=\z@
- \@tdA=-1.333333\p@
- \Numero\@KCuno{\@semichord\@tdA}%
-\fi
-\ifdim\@DYpuno\p@=\z@
- \@tdA=-1.333333\p@
- \Numero\@KCuno{\@semichord\@tdA}%
-\fi
-\unless\ifdim\@DXpuno\p@=\z@
- \unless\ifdim\@DYpuno\p@=\z@
- \edef\@CosDuno{\ifdim\@DXpuno\p@<\z@ -\fi\@DXpuno}%
- \edef\@SinDuno{\ifdim\@DYpuno\p@<\z@ -\fi\@DYpuno}%
- \@tdA=\@semichord\p@ \@tdA=-1.333333\@tdA
- \DividE\@tdA by \@SinDuno\p@ to \@KCuno
- \@tdA=\dimexpr(\p@-\@CosDuno\p@)\relax
- \DividE\@KCuno\@tdA by\@SinDuno\p@ to \@KCuno
- \fi
-\fi
-\MultiplyFN\@KCuno by \@Tuno to \@KCuno
-\ScaleVect\@Duno by\@KCuno to\@CPuno
-\AddVect\@Puno and\@CPuno to\@CPuno
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\GetCoord(\@CPzero)\@XCPzero\@YCPzero
-\GetCoord(\@CPuno)\@XCPuno\@YCPuno
-\pIIe@curveto{\@XCPzero\unitlength}{\@YCPzero\unitlength}%
- {\@XCPuno\unitlength}{\@YCPuno\unitlength}%
- {\@XPuno\unitlength}{\@YPuno\unitlength}\egroup
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}%
-\def\Curve{\@ifstar{\let\fillstroke\fillpath\Curve@}%
-{\let\fillstroke\strokepath\Curve@}}
-
-\def\Curve@(#1)<#2>{%
- \StartCurveAt#1WithDir{#2}%
- \@ifnextchar\lp@r\@Curve{%
- \PackageWarning{curve2e}{%
- Curve specifications must contain at least two nodes!\Messagebreak
- Please, control your \string\Curve\space specifications\MessageBreak}}}
-\def\@Curve(#1)<#2>{%
- \CurveTo#1WithDir{#2}%
- \@ifnextchar\lp@r\@Curve{%
- \@ifnextchar[\@ChangeDir\CurveEnd}}
-\def\@ChangeDir[#1]{\ChangeDir<#1>\@Curve}
-\def\Qurve{\@ifstar{\let\fillstroke\fillpath\Qurve@}%
-{\let\fillstroke\strokepath\Qurve@}}
-
-\def\Qurve@(#1)<#2>{%
- \StartCurveAt#1WithDir{#2}%
- \@ifnextchar\lp@r\@Qurve{%
- \PackageWarning{curve2e}{%
- Quadratic curve specifications must contain at least
- two nodes!\Messagebreak
- Please, control your Qurve specifications\MessageBreak}}}%
-
-\def\@Qurve(#1)<#2>{\QurveTo#1WithDir{#2}%
- \@ifnextchar\lp@r\@Qurve{%
- \@ifnextchar[\@ChangeQDir\CurveEnd}}%
-
-\def\@ChangeQDir[#1]{\ChangeDir<#1>\@Qurve}%
-\def\QurveTo#1WithDir#2{%
-\edef\@Puno{#1}\DirOfVect#2to\@Duno\bgroup
-\DistanceAndDirOfVect\@Puno minus\@Pzero to\@Chord and\@DirChord
-\MultVect\@Dzero by*\@Duno to \@Scalar
-\YpartOfVect\@Scalar to \@YScalar
-\ifdim\@YScalar\p@=\z@
-\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have their starting\MessageBreak
- and ending directions parallel or antiparallel with\MessageBreak
- each other. This arc is skipped and replaced with
- a dotted line.\MessageBreak}%
- \Dotline(\@Pzero)(\@Puno){2}\relax
-\else
-\MultVect\@Dzero by*\@DirChord to \@Dpzero
-\MultVect\@Duno by*\@DirChord to \@Dpuno
-\GetCoord(\@Dpzero)\@DXpzero\@DYpzero
-\GetCoord(\@Dpuno)\@DXpuno\@DYpuno
-\MultiplyFN\@DXpzero by\@DXpuno to\@XXD
-\MultiplyFN\@DYpzero by\@DYpuno to\@YYD
-\unless\ifdim\@YYD\p@<\z@\ifdim\@XXD\p@<\z@
-\PackageWarning{curve2e}%
- {Quadratic Bezier arcs cannot have inflection points\MessageBreak
- Therefore the tangents to the starting and ending arc\MessageBreak
- points cannot be directed to the same half plane.\MessageBreak
- This arc is skipped and replaced by a dotted line\MessageBreak}%
- \Dotline(\@Pzero)(\@Puno){2}\fi
-\else
-\edef\@CDzero{\@DXpzero}\relax
-\edef\@SDzero{\@DYpzero}\relax
-\edef\@CDuno{\@DXpuno}\relax
-\edef\@SDuno{\@DYpuno}\relax
-\MultiplyFN\@SDzero by\@CDuno to\@tempA
-\MultiplyFN\@SDuno by\@CDzero to\@tempB
-\edef\@tempA{\strip@pt\dimexpr\@tempA\p@-\@tempB\p@}\relax
-\@tdA=\@SDuno\p@ \@tdB=\@Chord\p@ \@tdC=\@tempA\p@
-\edef\@tempC{\strip@pt\dimexpr \@tdA*\@tdB/\@tdC}\relax
-\MultiplyFN\@tempC by\@CDzero to \@XC
-\MultiplyFN\@tempC by\@SDzero to \@YC
-\ModOfVect\@XC,\@YC to\@KC
-\ScaleVect\@Dzero by\@KC to\@CP
-\AddVect\@Pzero and\@CP to\@CP
-\GetCoord(\@Pzero)\@XPzero\@YPzero
-\GetCoord(\@Puno)\@XPuno\@YPuno
-\GetCoord(\@CP)\@XCP\@YCP
-\@ovxx=\@XPzero\unitlength \@ovyy=\@YPzero\unitlength
-\@ovdx=\@XCP\unitlength \@ovdy=\@YCP\unitlength
-\@xdim=\@XPuno\unitlength \@ydim=\@YPuno\unitlength
- \pIIe@bezier@QtoC\@ovxx\@ovdx\@ovro
- \pIIe@bezier@QtoC\@ovyy\@ovdy\@ovri
- \pIIe@bezier@QtoC\@xdim\@ovdx\@clnwd
- \pIIe@bezier@QtoC\@ydim\@ovdy\@clnht
- \pIIe@curveto\@ovro\@ovri\@clnwd\@clnht\@xdim\@ydim
-\fi\fi\egroup
-\CopyVect\@Puno to\@Pzero
-\CopyVect\@Duno to\@Dzero
-\ignorespaces}
-
-%%
-%%
-%% Distributable under the LaTeX Project Public License,
-%% version 1.3c or higher (your choice). The latest version of
-%% this license is at: http://www.latex-project.org/lppl.txt
-%%
-%% This work is "author-maintained"
-%%
-%% This work consists of file curve2e.dtx, and the derived files
-%% curve2e.sty and curve2e.pdf, plus the auxiliary derived files
-%% README.txt and manifest.txt.
-%%
-%%
-%% End of file `curve2e.sty'.