summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/datatool/datapie.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-07-21 21:17:50 +0000
committerKarl Berry <karl@freefriends.org>2016-07-21 21:17:50 +0000
commite8a6c5f6d758797dbff323e9d5e9012da75628d3 (patch)
treed014e2618393764a66d7d7548c687b11f131a86d /Master/texmf-dist/tex/latex/datatool/datapie.sty
parent21e06c4cf543502d43e374b7ba6868a9e3b82406 (diff)
datatool (21jul16)
git-svn-id: svn://tug.org/texlive/trunk@41744 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/datatool/datapie.sty')
-rw-r--r--Master/texmf-dist/tex/latex/datatool/datapie.sty251
1 files changed, 162 insertions, 89 deletions
diff --git a/Master/texmf-dist/tex/latex/datatool/datapie.sty b/Master/texmf-dist/tex/latex/datatool/datapie.sty
index 7b139a17504..169941de50c 100644
--- a/Master/texmf-dist/tex/latex/datatool/datapie.sty
+++ b/Master/texmf-dist/tex/latex/datatool/datapie.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datapie}[2016/01/18 v2.25 (NLCT)]
+\ProvidesPackage{datapie}[2016/07/20 v2.26 (NLCT)]
\RequirePackage{xkeyval}
\newif\ifDTLcolorpiechart
\DTLcolorpiecharttrue
@@ -165,24 +165,24 @@
\let\dtl@oldtotal=\dtl@total
\expandafter\DTLconverttodecimal\expandafter
{\DTLpievariable}{\dtl@variable}%
- \FPadd{\dtl@total}{\dtl@variable}{\dtl@total}%
+ \dtladd{\dtl@total}{\dtl@variable}{\dtl@total}%
}%
\expandafter\DTLconverttodecimal\expandafter
{\DTLstartangle}{\@dtl@start}%
\@sDTLforeach[#1]{#3}{#4}{%
\expandafter\DTLconverttodecimal\expandafter
{\DTLpievariable}{\dtl@variable}%
- \dtl@computeangles{%
- \csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname}{%
- \dtl@variable}%
+ \dtl@computeangles
+ {\csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname}%
+ {\dtl@variable}%
\expandafter\@dtl@seg\expandafter=
- \csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname%
- \FPmul{\dtl@tmp}{\dtl@variable}{100}%
+ \csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname%
+ \dtlmul{\dtl@tmp}{\dtl@variable}{100}%
\let\dtl@old=\dtl@tmp
- \FPdiv{\dtl@tmp}{\dtl@old}{\dtl@total}%
- \expandafter\FPround
- \csname dtl@piepercent@\romannumeral\@dtl@seg\endcsname\dtl@tmp
- \c@DTLpieroundvar
+ \dtldiv{\dtl@tmp}{\dtl@old}{\dtl@total}%
+ \expandafter\dtlround
+ \csname dtl@piepercent@\romannumeral\@dtl@seg\endcsname\dtl@tmp
+ \c@DTLpieroundvar
}%
\@for\dtl@row:=\dtl@piecutaways\do{%
\expandafter\@dtl@set@off\dtl@row-\relax
@@ -198,24 +198,22 @@
\csname dtl@sang@\romannumeral\@dtl@seg\endcsname}%
\edef\dtl@extent{%
\csname dtl@angle@\romannumeral\@dtl@seg\endcsname}%
- \FPadd{\dtl@endangle}{\dtl@start}{\dtl@extent}%
+ \dtladd{\dtl@endangle}{\dtl@start}{\dtl@extent}%
\edef\dtl@angle{%
\csname dtl@cut@angle@\romannumeral\@dtl@seg\endcsname}%
\let\dtl@old=\dtl@angle
\dtl@truncatedecimal\dtl@angle
\ifnum\dtl@angle>180\relax
- \FPsub{\dtl@angle}{\dtl@old}{360}%
+ \dtlsub{\dtl@angle}{\dtl@old}{360}%
\dtl@truncatedecimal\dtl@angle
\fi
\edef\dtl@cutlen{%
\csname dtl@cut@len@\romannumeral\@dtl@seg\endcsname
}%
\edef\@dtl@shift{(\dtl@angle:\dtl@cutlen)}%
- \FPmul{\dtl@angle}{\dtl@extent}{0.5}%
- \FPadd{\dtl@midangle}{\dtl@angle}{\dtl@start}%
+ \dtlmul{\dtl@angle}{\dtl@extent}{0.5}%
+ \dtladd{\dtl@midangle}{\dtl@angle}{\dtl@start}%
\begin{scope}[shift={\@dtl@shift}]%
- \dtl@truncatedecimal\dtl@start
- \dtl@truncatedecimal\dtl@endangle
\fill[color=\DTLgetpiesegmentcolor\@dtl@seg] (0,0) --
(\dtl@start:\DTLradius)
arc (\dtl@start:\dtl@endangle:\DTLradius) -- cycle;
@@ -227,10 +225,18 @@
\fi
\dtl@truncatedecimal\dtl@midangle
\ifDTLrotateinner
- \ifthenelse{\(\dtl@midangle > 90 \and \dtl@midangle < 270\)
- \TE@or \dtl@midangle < -90}%
+ \dtlifnumopenbetween{\dtl@midangle}{90}{270}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
{%
- \FPsub{\dtl@labelangle}{\dtl@midangle}{180}%
+ \dtlifnumlt{\dtl@midangle}{-90}%
+ {\let\@dtl@next\@firstoftwo}%
+ {\let\@dtl@next\@secondoftwo}%
+ }%
+ \@dtl@next
+ {%
+ \dtlsub{\dtl@labelangle}{\dtl@midangle}{180}%
\dtl@truncatedecimal\dtl@labelangle
\edef\dtl@innernodeopt{anchor=east,rotate=\dtl@labelangle}%
}%
@@ -241,10 +247,18 @@
\edef\dtl@innernodeopt{anchor=center}%
\fi
\ifDTLrotateouter
- \ifthenelse{\(\dtl@midangle > 90 \and \dtl@midangle < 270\)
- \TE@or \dtl@midangle < -90}%
+ \dtlifnumopenbetween{\dtl@midangle}{90}{270}%
{%
- \FPsub{\dtl@labelangle}{\dtl@midangle}{180}%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl@midangle}{-90}%
+ {\let\@dtl@next\@firstoftwo}%
+ {\let\@dtl@next\@secondoftwo}%
+ }%
+ \@dtl@next
+ {%
+ \dtlsub{\dtl@labelangle}{\dtl@midangle}{180}%
\dtl@truncatedecimal\dtl@labelangle
\edef\dtl@outernodeopt{anchor=east,rotate=\dtl@labelangle}%
}%
@@ -252,23 +266,74 @@
\edef\dtl@outernodeopt{anchor=west,rotate=\dtl@midangle}%
}%
\else
- \ifthenelse{\(\dtl@midangle<45\and\dtl@midangle>-45\)
- \TE@or \dtl@midangle=45
- \TE@or \dtl@midangle>315}%
+ \dtlifnumeq{\dtl@midangle}{45}
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumgt{\dtl@midangle}{315}
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumopenbetween{\dtl@midangle}{-45}{45}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \let\@dtl@next\@secondoftwo
+ }%
+ }%
+ }%
+ \@dtl@next
{%
\edef\dtl@outernodeopt{anchor=west}%
}%
{%
- \ifthenelse{\(\dtl@midangle<135\and\dtl@midangle>45\)
- \TE@or \dtl@midangle=135}%
+ \dtlifnumopenbetween{\dtl@midangle}{45}{135}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl@midangle}{135}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \let\@dtl@next\@secondoftwo
+ }%
+ }%
+ \@dtl@next
{%
\edef\dtl@outernodeopt{anchor=south}%
}%
{%
- \ifthenelse{\(\dtl@midangle<225\and\dtl@midangle>135\)
- \TE@or \dtl@midangle=225
- \TE@or \dtl@midangle=-135
- \TE@or \dtl@midangle<-135}%
+ \dtlifnumopenbetween{\dtl@midangle}{135}{225}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl@midangle}{225}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumeq{\dtl@midangle}{-135}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \dtlifnumlt{\dtl@midangle}{-135}%
+ {%
+ \let\@dtl@next\@firstoftwo
+ }%
+ {%
+ \let\@dtl@next\@secondoftwo
+ }%
+ }%
+ }%
+ }%
+ \@dtl@next
{%
\edef\dtl@outernodeopt{anchor=east}%
}%
@@ -298,71 +363,79 @@
\egroup
}
\newcommand*{\dtl@computeangles}[2]{%
-\FPifgt{\@dtl@start}{180}%
- \let\dtl@old=\@dtl@start
- \FPsub{\@dtl@start}{\dtl@old}{360}%
-\fi
-\FPiflt{\@dtl@start}{-180}%
+ \dtlifnumgt{\@dtl@start}{180}%
+ {%
+ \let\dtl@old=\@dtl@start
+ \dtlsub{\@dtl@start}{\dtl@old}{360}%
+ }%
+ {}%
+ \dtlifnumlt{\@dtl@start}{-180}%
+ {%
+ \let\dtl@old=\@dtl@start
+ \dtladd{\@dtl@start}{\dtl@old}{360}%
+ }%
+ {}%
+ \expandafter\edef\csname dtl@sang@\romannumeral#1\endcsname{%
+ \@dtl@start}%
+ \dtlmul{\dtl@angle}{360}{#2}%
+ \let\dtl@old=\dtl@angle
+ \dtldiv{\dtl@angle}{\dtl@old}{\dtl@total}%
+ \expandafter\let\csname dtl@angle@\romannumeral#1\endcsname=\dtl@angle
\let\dtl@old=\@dtl@start
- \FPadd{\@dtl@start}{\dtl@old}{360}%
-\fi
-\expandafter\edef\csname dtl@sang@\romannumeral#1\endcsname{%
-\@dtl@start}%
-\FPmul{\dtl@angle}{360}{#2}%
-\let\dtl@old=\dtl@angle
-\FPdiv{\dtl@angle}{\dtl@old}{\dtl@total}%
-\expandafter\let\csname dtl@angle@\romannumeral#1\endcsname=\dtl@angle
-\let\dtl@old=\@dtl@start
-\FPadd{\@dtl@start}{\dtl@old}{\dtl@angle}%
-\expandafter\def\csname dtl@cut@angle@\romannumeral#1\endcsname{0}%
-\expandafter\def\csname dtl@cut@len@\romannumeral#1\endcsname{0cm}%
+ \dtladd{\@dtl@start}{\dtl@old}{\dtl@angle}%
+ \expandafter\def\csname dtl@cut@angle@\romannumeral#1\endcsname{0}%
+ \expandafter\def\csname dtl@cut@len@\romannumeral#1\endcsname{0cm}%
}
\def\@dtl@set@off#1-#2\relax{%
-\ifthenelse{\equal{#2}{}}{%
-\@@dtl@set@off{#1}}{%
-\@@dtl@set@offr#1-#2\relax}%
+ \ifstrempty{#2}%
+ {%
+ \@@dtl@set@off{#1}%
+ }%
+ {%
+ \@@dtl@set@offr#1-#2\relax
+ }%
}
\newcommand*{\@@dtl@set@off}[1]{%
-\edef\dtl@old{\csname dtl@angle@\romannumeral#1\endcsname}%
-\FPmul{\dtl@angle}{\dtl@old}{0.5}%
-\let\dtl@old=\dtl@angle
-\edef\dtl@sang{\csname dtl@sang@\romannumeral#1\endcsname}%
-\FPadd{\dtl@angle}{\dtl@old}{\dtl@sang}%
-\expandafter\edef\csname dtl@cut@angle@\romannumeral#1\endcsname{%
-\dtl@angle}%
-\expandafter\edef\csname dtl@cut@len@\romannumeral#1\endcsname{%
- \the\dtl@cutawayoffset}
+ \edef\dtl@old{\csname dtl@angle@\romannumeral#1\endcsname}%
+ \dtlmul{\dtl@angle}{\dtl@old}{0.5}%
+ \let\dtl@old=\dtl@angle
+ \edef\dtl@sang{\csname dtl@sang@\romannumeral#1\endcsname}%
+ \dtladd{\dtl@angle}{\dtl@old}{\dtl@sang}%
+ \expandafter\edef\csname dtl@cut@angle@\romannumeral#1\endcsname{%
+ \dtl@angle}%
+ \expandafter\edef\csname dtl@cut@len@\romannumeral#1\endcsname{%
+ \the\dtl@cutawayoffset}%
}
\newcount\@dtl@seg
\def\@@dtl@set@offr#1-#2-\relax{%
-\ifnum#1>#2\relax
- \PackageError{datapie}{Segment ranges must go in ascending order}{%
-Try #2-#1 instead of #1-#2}%
-\else
- \def\dtl@angle{0}%
- \@dtl@seg=#1\relax
- \whiledo{\not\(\@dtl@seg > #2\)}{%
- \let\dtl@old=\dtl@angle
- \edef\dtl@segang{\csname dtl@angle@\romannumeral\@dtl@seg\endcsname}%
- \FPadd{\dtl@angle}{\dtl@old}{\dtl@segang}%
- \advance\@dtl@seg by 1\relax
- }%
- \let\dtl@old=\dtl@angle
- \FPmul{\dtl@angle}{\dtl@old}{0.5}%
- \edef\dtl@sang{\csname dtl@sang@\romannumeral#1\endcsname}%
- \let\dtl@old=\dtl@angle
- \FPadd{\dtl@angle}{\dtl@old}{\dtl@sang}%
- \@dtl@seg=#1\relax
- \whiledo{\not\(\@dtl@seg > #2\)}{%
- \expandafter
- \let\csname dtl@cut@angle@\romannumeral\@dtl@seg\endcsname
- =\dtl@angle
- \expandafter
- \edef\csname dtl@cut@len@\romannumeral\@dtl@seg\endcsname{%
- \the\dtl@cutawayoffset}
- \advance\@dtl@seg by 1\relax
- }%
-\fi
+ \ifnum#1>#2\relax
+ \PackageError{datapie}{Segment ranges must go in ascending order}{%
+ Try #2-#1 instead of #1-#2}%
+ \else
+ \def\dtl@angle{0}%
+ \@dtl@seg=#1\relax
+ \whiledo{\not\(\@dtl@seg > #2\)}{%
+ \let\dtl@old=\dtl@angle
+ \edef\dtl@segang{\csname dtl@angle@\romannumeral\@dtl@seg\endcsname}%
+ \dtladd{\dtl@angle}{\dtl@old}{\dtl@segang}%
+ \advance\@dtl@seg by 1\relax
+ }%
+ \let\dtl@old=\dtl@angle
+ \dtlmul{\dtl@angle}{\dtl@old}{0.5}%
+ \edef\dtl@sang{\csname dtl@sang@\romannumeral#1\endcsname}%
+ \let\dtl@old=\dtl@angle
+ \dtladd{\dtl@angle}{\dtl@old}{\dtl@sang}%
+ \@dtl@seg=#1\relax
+ \whiledo{\not\(\@dtl@seg > #2\)}{%
+ \expandafter
+ \let\csname dtl@cut@angle@\romannumeral\@dtl@seg\endcsname
+ =\dtl@angle
+ \expandafter
+ \edef\csname dtl@cut@len@\romannumeral\@dtl@seg\endcsname{%
+ \the\dtl@cutawayoffset}
+ \advance\@dtl@seg by 1\relax
+ }%
+ \fi
}
\endinput
%%