diff options
author | Karl Berry <karl@freefriends.org> | 2016-07-21 21:17:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-07-21 21:17:50 +0000 |
commit | e8a6c5f6d758797dbff323e9d5e9012da75628d3 (patch) | |
tree | d014e2618393764a66d7d7548c687b11f131a86d /Master/texmf-dist/tex/latex/datatool/datapie.sty | |
parent | 21e06c4cf543502d43e374b7ba6868a9e3b82406 (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.sty | 251 |
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 %% |