diff options
author | Karl Berry <karl@freefriends.org> | 2015-12-06 23:47:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-12-06 23:47:59 +0000 |
commit | 780c3bdde06307c3e02c609e6a1ed4d1665aef61 (patch) | |
tree | 368cd533e2f14db6f4503575a2d43ee971b317a3 /Master/texmf-dist/tex/latex/ellipse | |
parent | 8fe2a43459967608180aff4cca4f63cd25c8ea5e (diff) |
ellipse (6dec15)
git-svn-id: svn://tug.org/texlive/trunk@39025 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/ellipse')
-rw-r--r-- | Master/texmf-dist/tex/latex/ellipse/ellipse.sty | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ellipse/ellipse.sty b/Master/texmf-dist/tex/latex/ellipse/ellipse.sty new file mode 100644 index 00000000000..7c0ecb3e915 --- /dev/null +++ b/Master/texmf-dist/tex/latex/ellipse/ellipse.sty @@ -0,0 +1,318 @@ +%% +%% This is file `ellipse.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ellipse.dtx (with options: `package') +%% +%% Copyright (C) 2015 +%% Daan Leijen +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% 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.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "author-maintained". +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{ellipse} + [2004/11/05 v1.0 .dtx ellipse file] +\RequirePackage{pict2e} + +\providecommand*\pIIe@csedef[1]{\expandafter\edef\csname #1\endcsname} +\newcommand*\pIIe@ellip@csqrt[3]{% + \@ovxx=#1\relax + \ifdim\@ovxx<\z@\@ovxx-\@ovxx\fi + \@ovyy=#2\relax + \ifdim\@ovyy<\z@\@ovyy-\@ovyy\fi + \edef\pIIe@csname{@csqrt(\number\@ovxx,\number\@ovyy)}% + \expandafter\ifx\csname\pIIe@csname\endcsname\relax + \pIIe@ellip@csqrt@% + \pIIe@csedef{\pIIe@csname}{\the\dimen@}% + #3\dimen@ + \else + #3\dimexpr\csname\pIIe@csname\endcsname\relax + \fi +} +\newcommand*\pIIe@ellip@csqrt@{% + \@ovdx\@ovxx + \advance\@ovdx by \@ovyy + \dimen@0.7071067\@ovdx + \ifdim\dimen@<\@ovyy\dimen@\@ovyy\fi + \ifdim\dimen@<\@ovxx\dimen@\@ovxx\fi + \ifdim\@ovdx<128\p@ + \edef\@tempa{\strip@pt\@ovxx}% + \@ovxx\@tempa\@ovxx + \edef\@tempa{\strip@pt\@ovyy}% + \@ovyy\@tempa\@ovyy + \advance\@ovxx by \@ovyy + \advance\dimen@ by \dimexpr1pt * \@ovxx/\dimen@\relax + \divide\dimen@ by 2% + \advance\dimen@ by \dimexpr1pt * \@ovxx/\dimen@\relax + \divide\dimen@ by 2% + \fi +} + +\newcommand*\pIIe@atan@{% + \@tempdima\dimen@ + \@tempdimb\@tempdima + \ifdim\@tempdimb<\z@\@tempdimb-\@tempdimb\fi + \dimen@0.0663\@tempdimb + \advance\dimen@ 0.2447pt\relax + \advance\@tempdimb -1pt\relax + \edef\@tempa{\strip@pt\@tempdimb}% + \dimen@\@tempa\dimen@ + \edef\@tempa{\strip@pt\@tempdima}% + \dimen@\@tempa\dimen@ + \dimen@-\dimen@ + \advance\dimen@ 0.7853\@tempdima +} + +\newcommand*\pIIe@atantwo[3]{% + \edef\pIIe@csname{@atan2(\number\dimexpr#1\relax,\number\dimexpr#2\relax)}% + \expandafter\ifx\csname\pIIe@csname\endcsname\relax + \pIIe@atantwo@{#1}{#2}{#3}% + \pIIe@csedef{\pIIe@csname}{\the\dimexpr#3\relax}% + \else + #3\dimexpr\csname\pIIe@csname\endcsname\relax + \fi +} + +\newcommand*\pIIe@atantwo@[3]{% + \@tempdima\dimexpr#2\relax + \@tempdimb\dimexpr#1\relax + \ifdim\@tempdima=\z@\relax + \ifdim\@tempdimb>\z@\relax\dimen@90\p@ + \else\ifdim\@tempdimb<\z@\relax\dimen@-90\p@ + \else\dimen@0\p@ + \fi\fi + \else + \@tempdimd\z@ + \ifdim\@tempdima<\z@\relax + \ifdim\@tempdimb<\z@\relax\@tempdimd-180\p@ + \else\@tempdimd180\p@ + \fi + \fi + \dimen@\dimexpr1pt * \@tempdimb/\@tempdima\relax + \@tempdimc\dimen@ + \ifdim\@tempdimc<\z@\relax\@tempdimc-\@tempdimc\fi + \ifdim\@tempdimc>\p@\relax + \dimen@\dimexpr1pt * \@tempdima/\@tempdimb\relax + \ifdim\dimen@<\z@\relax\def\@tempsign{-}\else\def\@tempsign{}\fi + \pIIe@atan@ + \dimen@-\dimen@ + \advance\dimen@ by \@tempsign1.5707pt\relax + \else + \pIIe@atan@ + \fi + \dimen@57.29578\dimen@ + \advance\dimen@ by \@tempdimd + \fi + #3\dimen@% +} + +\newcommand*\pIIe@noneto[2]{} +\newcommand*\pIIe@ellip@sincost@[2]{% + \CalculateSin{#1}% + \CalculateCos{#1}% + \@tempdima\UseSin{#1}\p@ + \@tempdimb\UseCos{#1}\p@ + \ifdim\@tempdima=\p@\relax + \pIIe@csedef{@ellipsin#2}{1}% + \pIIe@csedef{@ellipcos#2}{0}% + \else\ifdim\@tempdima=-\p@\relax + \pIIe@csedef{@ellipsin#2}{-1}% + \pIIe@csedef{@ellipcos#2}{0}% + \else + \@tempdimc\@ellipratio\dimexpr1pt * \@tempdima/\@tempdimb\relax + %\typeout{ i#2=\the\@tempdimc, sin(#1)=\the\@tempdima}% + \pIIe@ellip@csqrt{\p@}{\@tempdimc}\@tempdimd + \ifdim\@tempdimb<\z@\relax\@tempdimd-\@tempdimd\fi + \pIIe@csedef{@ellipsin#2}{\strip@pt\dimexpr1pt * \@tempdimc/\@tempdimd\relax}% + \pIIe@csedef{@ellipcos#2}{\strip@pt\dimexpr1pt * \p@/\@tempdimd\relax}% + \fi\fi +} + +\newcommand*\pIIe@ellip@sincost[2]{% + %\typeout{ calc sin cos: angles (#1,#2), radii: (\the\@ovro,\the\@ovri)}% + \edef\@ellipratio{\strip@pt\dimexpr1pt * \@ovro/\@ovri\relax}% + \pIIe@ellip@sincost@{#1}{one}% + \pIIe@ellip@sincost@{#2}{two}% + %\typeout{ sincos(a=#1)=(\@ellipsinone,\@ellipcosone), sincos(a=#2)=(\@ellipsintwo,\@ellipcostwo), }% +} +\newcommand*\pIIe@omega[3]{% + \@tempdima\csname @ellipcos#3\endcsname\@ovro + \advance\@tempdima by #1\relax + \@tempdimb\csname @ellipsin#3\endcsname\@ovri + \advance\@tempdimb by #2\relax +} + +\newcommand*\pIIe@omegai[1]{% + \@tempdimc\csname @ellipsin#1\endcsname\@ovro + \@tempdimc-\@tempdimc + \@tempdimd\csname @ellipcos#1\endcsname\@ovri +} + +\newcommand*\pIIe@ellip@kappa{% + \@ovyy\@ellipsinone\p@ + \@ovxx\@ellipcosone\p@ + \@tempdima\@ellipcostwo\@ovyy + \@tempdima-\@tempdima + \advance\@tempdima by \@ellipsintwo\@ovxx + \@tempdimb\@ellipcostwo\@ovxx + \advance\@tempdimb by \@ellipsintwo\@ovyy + \ifdim\@tempdima=\z@\relax + \edef\@ellipkappa{0}% + \else + \dimen@\dimexpr1pt - \@tempdimb\relax + \dimen@\dimexpr1pt * \dimen@/\@tempdima\relax + \pIIe@ellip@csqrt{2\p@}{1.73205\dimen@}{\dimen@}% + \advance\dimen@ by -\p@ + \divide\dimen@ by 3% + \edef\@tempa{\strip@pt\@tempdima}% + \dimen@\@tempa\dimen@ + \edef\@ellipkappa{\strip@pt\dimen@}% + \fi + %\typeout{ calculated kappa: \@ellipkappa}% +} + +\newcommand*\pIIe@elliparc@[5]{% + %\typeout{elliparc: #1, center: (#2, #3), radius (\the\@ovro, \the\@ovri),angle (#4, #5)}% + \ifcase #1\relax + \let\@ellip@startto\pIIe@lineto + \or \let\@ellip@startto\pIIe@moveto + \or \let\@ellip@startto\pIIe@noneto% + \else\PackageWarning{ellipse}{Illegal initial action in \protect\elliparc: % + must be one of 0 (lineto), 1 (moveto) or 2 (do nothing) but I got: #1}% + \fi + \ifdim\@ovro=\z@\relax\@ovri\z@\fi + \ifdim\@ovri=\z@\relax + \@ellip@startto{#2}{#3}% + \else + \pIIe@ellip@sincost{#4}{#5}% + \pIIe@elliparc@draw{#2}{#3}% + \fi +} +\newcommand*\pIIe@elliparc@t[5]{% + \ifcase #1\relax + \let\@ellip@startto\pIIe@lineto + \or \let\@ellip@startto\pIIe@moveto + \or \let\@ellip@startto\pIIe@noneto% + \else\PackageWarning{ellipse}{Illegal initial action in \protect\elliparc: % + must be one of 0 (lineto), 1 (moveto) or 2 (do nothing) but I got: #1}% + \fi + \ifdim\@ovro=\z@\relax\@ovri\z@\fi + \ifdim\@ovri=\z@\relax + \@ellip@startto{#2}{#3}% + \else + \CalculateSin{#4}\CalculateCos{#4}% + \edef\@ellipsinone{\UseSin{#4}}% + \edef\@ellipcosone{\UseCos{#4}}% + \CalculateSin{#5}\CalculateCos{#5}% + \edef\@ellipsintwo{\UseSin{#5}}% + \edef\@ellipcostwo{\UseCos{#5}}% + \pIIe@elliparc@draw{#2}{#3}% + \fi +} +\newcommand*\pIIe@elliparc@draw[2]{% + \pIIe@ellip@kappa% + \pIIe@omega{#1}{#2}{one}% + %\typeout{ point one: (\the\@tempdima,\the\@tempdimb)}% + \@ellip@startto\@tempdima\@tempdimb + \pIIe@omegai{one}% + \advance\@tempdima by \@ellipkappa\@tempdimc + \advance\@tempdimb by \@ellipkappa\@tempdimd + \pIIe@add@nums\@tempdima\@tempdimb + %\typeout{ control one: (\the\@tempdima,\the\@tempdimb)}% + \pIIe@omega{#1}{#2}{two}% + \pIIe@omegai{two}% + \@tempdimc\@ellipkappa\@tempdimc + \@tempdimd\@ellipkappa\@tempdimd + \@tempdimc-\@tempdimc + \@tempdimd-\@tempdimd + \advance\@tempdimc by \@tempdima + \advance\@tempdimd by \@tempdimb + \pIIe@add@nums\@tempdimc\@tempdimd + %\typeout{ control two: (\the\@tempdimc,\the\@tempdimd)}% + \pIIe@add@CP\@tempdima\@tempdimb + %\typeout{ point two: (\the\@tempdima,\the\@tempdimb)}% + \pIIe@addtoGraph\pIIe@curveto@op +} +\newcommand*\pIIe@elliparc[7][0]{% + \@ovro #4\relax + \@ovri #5\relax + \iffalse%dim\@ovro=\@ovri + \pIIe@arc[#1]{#2}{#3}{#4}{#6}{#7} + \else + \ifdim \@ovro<\z@ \pIIe@badcircarg\else + \ifdim \@ovri<\z@ \pIIe@badcircarg\else + \@arclen #7\p@ \advance\@arclen -#6\p@ + \ifdim \@arclen<\z@ \def\@tempsign{-}\else\def\@tempsign{}\fi + \ifdim \@tempsign\@arclen>720\p@ + \PackageWarning {ellipse}{The arc angle is reduced to -720..720}% + \@whiledim \@tempsign\@arclen>720\p@ \do {\advance\@arclen-\@tempsign360\p@}% + \@tempdima #6\p@ \advance\@tempdima \@arclen + \edef\@angleend{\strip@pt\@tempdima}% + \pIIe@@elliparc{#1}{#2}{#3}{#6}{\@angleend}% + \else + \pIIe@@elliparc{#1}{#2}{#3}{#6}{#7}% + \fi + \fi + \fi + \fi +} +\newcommand*\pIIe@@elliparc[5]{% + \begingroup + \ifdim \@tempsign\@arclen>90\p@ + \divide\@arclen 2% + \@tempdima #4\p@\advance\@tempdima by \@arclen + \edef\@anglemid{\strip@pt\@tempdima}% + \def\@tempa{\pIIe@@elliparc{#1}{#2}{#3}{#4}}% + \expandafter\@tempa\expandafter{\@anglemid}% + \def\@tempa{\pIIe@@elliparc{2}{#2}{#3}}% + \expandafter\@tempa\expandafter{\@anglemid}{#5}% + \else + \pIIe@elliparc@{#1}{#2}{#3}{#4}{#5}% + \fi + \endgroup +}% + +\newcommand*\pIIeelliparc[7][0]{% + \@killglue + \pIIe@elliparc[#1]{#2\unitlength}{#3\unitlength}{#4\unitlength}{#5\unitlength}{#6}{#7}% + \ignorespaces% +} +\ifx\undefined\elliparc\else + \PackageWarning{ellipse}{\protect\elliparc\space is redefined}% +\fi +\let\elliparc\pIIeelliparc + +\newcommand*\pIIeearc + {\@ifstar{\@tempswatrue\pIIe@earc@}{\@tempswafalse\pIIe@earc@}} +\newcommand*\pIIe@earc@[3][0,360]{\pIIe@earc@@(#1){#2}{#3}} +\def\pIIe@earc@@(#1,#2)#3#4{% + \if@tempswa + \pIIe@moveto\z@\z@ + \pIIe@elliparc{\z@}{\z@}{#3\unitlength}{#4\unitlength}{#1}{#2}% + \pIIe@closepath\pIIe@fillGraph + \else + \pIIe@elliparc[1]{\z@}{\z@}{#3\unitlength}{#4\unitlength}{#1}{#2}% + \pIIe@strokeGraph + \fi} +\ifx\undefined\earc\else + \PackageWarning{ellipse}{\protect\earc\space is redefined}% +\fi +\let\earc\pIIeearc + +\newcommand*\pIIeellipse + {\@ifstar{\@tempswatrue\pIIe@earc@}{\@tempswafalse\pIIe@earc@}} +\let\ellipse\pIIeellipse + +\endinput +%% +%% End of file `ellipse.sty'. |