%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/datatool/ |
| Current File : //proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/datatool/databar.sty |
%%
%% This is file `databar.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% datatool.dtx (with options: `databar.sty,package')
%%
%% datatool.dtx
%% Copyright 2013 Nicola Talbot
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license of (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 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Nicola Talbot.
%%
%% This work consists of the files datatool.dtx and datatool.ins and the derived files datatool-base.sty, datatool-fp.sty, datatool-pgfmath.sty, datatool.sty, datagidx.sty, databib.sty, databar.sty, datapie.sty, dataplot.sty, person.sty, databib.bst.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{databar}[2013/01/15 v2.13 (NLCT)]
\RequirePackage{xkeyval}
\RequirePackage{dataplot}
\newif\ifDTLcolorbarchart
\DTLcolorbarcharttrue
\DeclareOption{color}{\DTLcolorbarcharttrue}
\DeclareOption{gray}{\DTLcolorbarchartfalse}
\newcommand*{\DTLbarXlabelalign}{left,rotate=-90}
\newcommand*{\DTLbarYticklabelalign}{right}
\define@boolkey{databar}[DTL]{verticalbars}[true]{%
\ifDTLverticalbars
\def\DTLbarXlabelalign{left,rotate=-90}%
\def\DTLbarYticklabelalign{right}
\else
\def\DTLbarXlabelalign{right}%
\def\DTLbarYticklabelalign{center}
\fi}
\DTLverticalbarstrue
\DeclareOption{vertical}{\DTLverticalbarstrue
\def\DTLbarXlabelalign{left,rotate=-90}%
\def\DTLbarYticklabelalign{right}
}
\DeclareOption{horizontal}{\DTLverticalbarsfalse
\def\DTLbarXlabelalign{right}%
\def\DTLbarYticklabelalign{center}
}
\ProcessOptions
\RequirePackage{datatool}
\RequirePackage{tikz}
\newlength\DTLbarchartlength
\DTLbarchartlength=3in
\newlength\DTLbarwidth
\DTLbarwidth=1cm
\newlength\DTLbarlabeloffset
\setlength\DTLbarlabeloffset{10pt}
\newcommand*{\DTLBarXAxisStyle}{-}
\newcommand*{\DTLBarYAxisStyle}{-}
\newcounter{DTLbarroundvar}
\setcounter{DTLbarroundvar}{1}
\newcommand*{\DTLbardisplayYticklabel}[1]{#1}
\newcommand*{\DTLdisplaylowerbarlabel}[1]{#1}
\newcommand*{\DTLdisplaylowermultibarlabel}[1]{#1}
\newcommand*{\DTLdisplayupperbarlabel}[1]{#1}
\newcommand*{\DTLdisplayuppermultibarlabel}[1]{#1}
\newcommand*{\DTLbaratbegintikz}{}
\newcommand*{\DTLbaratendtikz}{}
\newif\ifDTLbarxaxis
\newif\ifDTLbaryaxis
\newif\ifDTLbarytics
\newcount\@dtl@barcount
\newcommand*{\DTLsetbarcolor}[2]{%
\expandafter\def\csname dtlbar@segcol\romannumeral#1\endcsname{#2}%
}
\newcommand*{\DTLgetbarcolor}[1]{%
\csname dtlbar@segcol\romannumeral#1\endcsname}
\newcommand*{\DTLdobarcolor}[1]{%
\expandafter\color\expandafter
{\csname dtlbar@segcol\romannumeral#1\endcsname}}
\newcommand*{\DTLdocurrentbarcolor}{%
\ifnum\dtlforeachlevel=0\relax
\PackageError{databar}{Can't use
\string\DTLdocurrentbarcolor\space outside
\string\DTLbarchart}{}%
\else
\expandafter\DTLdobarcolor\expandafter{%
\csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname}%
\fi}
\newcommand*{\DTLbaroutlinecolor}{black}
\newlength\DTLbaroutlinewidth
\DTLbaroutlinewidth=0pt
\ifDTLcolorbarchart
\DTLsetbarcolor{1}{red}
\DTLsetbarcolor{2}{green}
\DTLsetbarcolor{3}{blue}
\DTLsetbarcolor{4}{yellow}
\DTLsetbarcolor{5}{magenta}
\DTLsetbarcolor{6}{cyan}
\DTLsetbarcolor{7}{orange}
\DTLsetbarcolor{8}{white}
\else
\DTLsetbarcolor{1}{black!15}
\DTLsetbarcolor{2}{black!25}
\DTLsetbarcolor{3}{black!35}
\DTLsetbarcolor{4}{black!45}
\DTLsetbarcolor{5}{black!55}
\DTLsetbarcolor{6}{black!65}
\DTLsetbarcolor{7}{black!75}
\DTLsetbarcolor{8}{black!85}
\fi
\newcommand*{\DTLeverybarhook}{}
\define@key{databar}{max}{\def\DTLbarmax{#1}}
\define@key{databar}{length}{\DTLbarchartlength=#1\relax
}
\define@key{databar}{maxdepth}{%
\ifnum#1>0\relax
\PackageError{databar}{depth must be zero or negative}{}%
\else
\def\DTLnegextent{#1}%
\fi}
\define@choicekey{databar}{axes}[\var\nr]{both,x,y,none}{%
\ifcase\nr\relax
% both
\DTLbarxaxistrue
\DTLbaryaxistrue
\DTLbaryticstrue
\or
% x only
\DTLbarxaxistrue
\DTLbaryaxisfalse
\DTLbaryticsfalse
\or
% y only
\DTLbarxaxisfalse
\DTLbaryaxistrue
\DTLbaryticstrue
\or
% neither
\DTLbarxaxisfalse
\DTLbaryaxisfalse
\DTLbaryticsfalse
\fi
}
\define@key{databar}{variable}{%
\def\DTLbarvariable{#1}%
}
\define@key{databar}{variables}{%
\def\dtlbar@variables{#1}%
}
\define@key{databar}{barwidth}{\setlength{\DTLbarwidth}{#1}}
\define@key{databar}{barlabel}{%
\def\dtl@barlabel{#1}}
\def\dtl@barlabel{}
\define@key{databar}{multibarlabels}{%
\def\dtl@multibarlabels{#1}}
\def\dtl@multibarlabels{}
\define@key{databar}{groupgap}{\def\dtlbar@groupgap{#1}}
\def\dtlbar@groupgap{1}
\define@key{databar}{upperbarlabel}{%
\def\dtl@upperbarlabel{#1}}
\def\dtl@upperbarlabel{}
\define@key{databar}{uppermultibarlabels}{%
\def\dtl@uppermultibarlabels{#1}}
\def\dtl@uppermultibarlabels{}
\define@key{databar}{yticpoints}{%
\def\dtlbar@yticlist{#1}\DTLbaryticstrue\DTLbaryaxistrue}
\let\dtlbar@yticlist=\relax
\define@key{databar}{yticgap}{%
\def\dtlbar@yticgap{#1}\DTLbaryticstrue\DTLbaryaxistrue}
\let\dtlbar@yticgap=\relax
\define@key{databar}{yticlabels}{%
\def\dtlbar@yticlabels{#1}\DTLbaryticstrue\DTLbaryaxistrue}
\let\dtlbar@yticlabels=\relax
\define@key{databar}{ylabel}{%
\def\dtlbar@ylabel{#1}}
\let\dtlbar@ylabel=\relax
\newcommand*{\DTLbarchart}[4][\boolean{true}]{%
{%
\undef\DTLbarvariable
\undef\DTLbarmax
\undef\DTLnegextent
\disable@keys{databar}{variables,multibarlabels,%
uppermultibarlabels,groupgap}%
\setkeys{databar}{#2}%
\ifundef{\DTLbarvariable}%
{%
\PackageError{databar}%
{\string\DTLbarchart\space missing variable}%
{You haven't use the "variable" key}%
}%
{%
\ifundef{\DTLbarmax}%
{%
\@sDTLforeach[#1]{#3}{#4}{%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@barvar}%
\ifundef{\DTLbarmax}%
{%
\let\DTLbarmax=\dtl@barvar
}%
{%
\let\dtl@old=\DTLbarmax
\dtlmax{\DTLbarmax}{\dtl@old}{\dtl@barvar}%
}%
}%
\ifx\dtlbar@yticgap\relax
\else
\let\dtl@thistick=\dtlbar@yticgap
\whiledo{\DTLisFPopenbetween{\dtl@thistick}{0}{\DTLbarmax}}%
{%
\dtladd{\dtl@thistick}{\dtl@thistick}{\dtlbar@yticgap}%
}%
\let\DTLbarmax=\dtl@thistick
\fi
}%
{}%
\ifundef{\DTLnegextent}%
{%
\def\DTLnegextent{0}%
\@sDTLforeach[#1]{#3}{#4}{%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@barvar}%
\let\dtl@old=\DTLnegextent
\DTLmin{\DTLnegextent}{\dtl@old}{\dtl@barvar}%
}%
\ifx\dtlbar@yticgap\relax
\else
\ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}%
{%
\edef\dtl@thistick{0}%
\whiledo{\DTLisFPclosedbetween{\dtl@thistick}{\DTLnegextent}{0}}{%
\dtlsub{\dtl@thistick}{\dtl@thistick}{\dtlbar@yticgap}%
}%
\let\DTLnegextent=\dtl@thistick
}{}%
\fi
}%
{}%
\@dtl@tmpcount=\DTLbarchartlength
\dtlsub{\dtl@extent}{\DTLbarmax}{\DTLnegextent}%
\dtldiv{\dtl@unit}{\number\@dtl@tmpcount}{\dtl@extent}%
\setlength{\dtl@yticlabelwidth}{0pt}%
\ifDTLbarytics
\ifx\dtlbar@yticlist\relax
\ifx\dtlbar@yticgap\relax
\dtl@constructticklist\DTLnegextent\DTLbarmax
\dtl@unit\dtlbar@yticlist
\else
\dtl@constructticklistwithgapz
\DTLnegextent\DTLbarmax\dtlbar@yticlist\dtlbar@yticgap
\fi
\fi
\ifx\dtlbar@ylabel\relax
\else
\ifx\dtlbar@yticlabels\relax
\@for\dtl@thislabel:=\dtlbar@yticlist\do{%
\dtlround{\dtl@thislabel}{\dtl@thislabel}
{\c@DTLbarroundvar}%
\ifDTLverticalbars
\settowidth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\else
\settoheight{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\edef\@dtl@h{\the\dtl@tmplength}%
\settodepth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\addtolength{\dtl@tmplength}{\@dtl@h}%
\addtolength{\dtl@tmplength}{\baselineskip}%
\fi
\ifdim\dtl@tmplength>\dtl@yticlabelwidth
\setlength{\dtl@yticlabelwidth}{\dtl@tmplength}%
\fi
}%
\else
\@for\dtl@thislabel:=\dtlbar@yticlabels\do{%
\ifDTLverticalbars
\settowidth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\else
\settoheight{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\edef\@dtl@h{\the\dtl@tmplength}%
\settodepth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\addtolength{\dtl@tmplength}{\@dtl@h}%
\addtolength{\dtl@tmplength}{\baselineskip}%
\fi
\ifdim\dtl@tmplength>\dtl@yticlabelwidth
\setlength{\dtl@yticlabelwidth}{\dtl@tmplength}%
\fi
}%
\fi
\fi
\fi
\edef\DTLbarchartwidth{\expandafter\number\csname dtlrows@#3\endcsname}
\begin{tikzpicture}
\ifDTLverticalbars
\pgfsetyvec{\pgfpoint{0pt}{\dtl@unit sp}}%
\pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
\else
\pgfsetxvec{\pgfpoint{\dtl@unit sp}{0pt}}%
\pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
\fi
\DTLbaratbegintikz
\def\@dtl@start{0}%
\@sDTLforeach[#1]{#3}{#4}{%
\expandafter\let\expandafter\@dtl@bar
\csname c@DTLrow\romannumeral\dtlforeachlevel\endcsname%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@variable}%
\begin{scope}
\DTLdocurrentbarcolor
\ifDTLverticalbars
\fill (\@dtl@start,0) -- (\@dtl@start,\dtl@variable)
-- (\@dtl@bar,\dtl@variable) -- (\@dtl@bar,0) -- cycle;
\else
\fill (0,\@dtl@start) -- (\dtl@variable,\@dtl@start)
-- (\dtl@variable,\@dtl@bar) -- (0,\@dtl@bar) -- cycle;
\fi
\end{scope}
\begin{scope}
\ifdim\DTLbaroutlinewidth>0pt
\expandafter\color\expandafter{\DTLbaroutlinecolor}
\ifDTLverticalbars
\draw (\@dtl@start,0) -- (\@dtl@start,\dtl@variable)
-- (\@dtl@bar,\dtl@variable) -- (\@dtl@bar,0) -- cycle;
\else
\draw (0,\@dtl@start) -- (\dtl@variable,\@dtl@start)
-- (\dtl@variable,\@dtl@bar) -- (0,\@dtl@bar) -- cycle;
\fi
\fi
\end{scope}
\ifDTLverticalbars
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@start.5}{0}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
\DTLbarXlabelalign
}%
\edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl@start.5}{0}}%
\else
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{0}{\@dtl@start.5}}
{\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
\DTLbarXlabelalign
}%
\edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl@start.5}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLdisplaylowerbarlabel{\dtl@barlabel}}
\ifDTLverticalbars
\expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
{
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@start.5}{\dtl@variable}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
}%
}{%
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@start.5}{\dtl@variable}}
{\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
}%
}
\edef\DTLendpt{\noexpand\pgfpointxy{\@dtl@start.5}{\dtl@variable}}%
\else
\expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}%
{
\edef\dtl@textopt{right,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@start.5}}
{\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
}%
}{%
\edef\dtl@textopt{left,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@start.5}}
{\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
}%
}
\edef\DTLendpt{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@start.5}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLdisplayupperbarlabel{\dtl@upperbarlabel}}
\def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
\DTLeverybarhook
\edef\@dtl@start{\number\@dtl@bar}%
}%
\ifDTLbarxaxis
\ifDTLverticalbars
\expandafter\draw\expandafter[\DTLBarXAxisStyle]
(0,0) -- (\DTLbarchartwidth,0);
\else
\expandafter\draw\expandafter[\DTLBarXAxisStyle]
(0,0) -- (0,\DTLbarchartwidth);
\fi
\fi
\ifDTLbaryaxis
\ifDTLverticalbars
\expandafter\draw\expandafter[\DTLBarYAxisStyle]
(0,\DTLnegextent) -- (0,\DTLbarmax);
\else
\expandafter\draw\expandafter[\DTLBarYAxisStyle]
(\DTLnegextent,0) -- (\DTLbarmax,0);
\fi
\fi
\ifx\dtlbar@yticlist\relax
\else
\@for\dtl@thistick:=\dtlbar@yticlist\do{%
\ifDTLverticalbars
\pgfpathmoveto{\pgfpointxy{0}{\dtl@thistick}}
\pgfpathlineto{
\pgfpointadd{\pgfpointxy{0}{\dtl@thistick}}
{\pgfpoint{-\DTLticklength}{0pt}}}
\else
\pgfpathmoveto{\pgfpointxy{\dtl@thistick}{0}}
\pgfpathlineto{
\pgfpointadd{\pgfpointxy{\dtl@thistick}{0}}
{\pgfpoint{0pt}{-\DTLticklength}}}
\fi
\pgfusepath{stroke}
\ifx\dtlbar@yticlabels\relax
\dtlround{\dtl@thislabel}{\dtl@thistick}
{\c@DTLbarroundvar}%
\else
\dtl@chopfirst\dtlbar@yticlabels\dtl@thislabel\dtl@rest
\let\dtlbar@yticlabels=\dtl@rest
\fi
\ifDTLverticalbars
\edef\dtl@textopt{\DTLbarYticklabelalign,%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{0}{\dtl@thistick}}
{\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
}}%
\else
\edef\dtl@textopt{\DTLbarYticklabelalign,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@thistick}{0}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLbardisplayYticklabel{\dtl@thislabel}}
}%
\fi
\ifx\dtlbar@ylabel\relax
\else
\addtolength{\dtl@yticlabelwidth}{\baselineskip}%
\setlength{\dtl@tmplength}{0.5\DTLbarchartlength}
\ifDTLverticalbars
\pgftext[bottom,center,at={\pgfpointadd
{\pgfpointxy{0}{\DTLnegextent}}%
{\pgfpoint{-\dtl@yticlabelwidth}{\dtl@tmplength}}},
rotate=90]{%
\dtlbar@ylabel}
\else
\pgftext[bottom,center,at={\pgfpointadd
{\pgfpointxy{\DTLnegextent}{0}}%
{\pgfpoint{\dtl@tmplength}{-\dtl@yticlabelwidth}}}]{%
\dtlbar@ylabel}
\fi
\fi
\DTLbaratendtikz
\end{tikzpicture}
}%
}%
}
\newcommand*{\DTLmultibarchart}[4][\boolean{true}]{%
{\let\dtlbar@variables=\relax
\let\DTLbarmax=\relax
\let\DTLnegextent=\relax
\disable@keys{databar}{variable,upperbarlabel}%
\setkeys{databar}{#2}%
\ifx\dtlbar@variables\relax
\PackageError{databar}{\string\DTLmultibarchart\space missing variables setting}{}%
\else
\ifx\DTLbarmax\relax
\@sDTLforeach[#1]{#3}{#4}{%
\@for\DTLbarvariable:=\dtlbar@variables\do{%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@barvar}%
\ifx\DTLbarmax\relax
\let\DTLbarmax=\dtl@barvar
\else
\let\dtl@old=\DTLbarmax
\dtlmax{\DTLbarmax}{\dtl@old}{\dtl@barvar}%
\fi
}%
}%
\ifx\dtlbar@yticgap\relax
\else
\let\dtl@thistick=\dtlbar@yticgap%
\whiledo{\DTLisFPopenbetween{\dtl@thistick}{0}{\DTLbarmax}}{%
\dtladd{\dtl@thistick}{\dtl@thistick}{\dtlbar@yticgap}%
}%
\let\DTLbarmax=\dtl@thistick
\fi
\fi
\ifx\DTLnegextent\relax
\def\DTLnegextent{0}%
\@sDTLforeach[#1]{#3}{#4}{%
\@for\DTLbarvariable:=\dtlbar@variables\do{%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@barvar}%
\let\dtl@old=\DTLnegextent
\DTLmin{\DTLnegextent}{\dtl@old}{\dtl@barvar}%
}%
}%
\ifx\dtlbar@yticgap\relax
\else
\ifthenelse{\DTLisFPlt{\DTLnegextent}{0}}{%
\edef\dtl@thistick{0}%
\whiledo{\DTLisFPclosedbetween{\dtl@thistick}{\DTLnegextent}{0}}{%
\dtlsub{\dtl@thistick}{\dtl@thistick}{\dtlbar@yticgap}%
}%
\let\DTLnegextent=\dtl@thistick
}{}%
\fi
\fi
\@dtl@tmpcount=\DTLbarchartlength
\dtlsub{\dtl@extent}{\DTLbarmax}{\DTLnegextent}%
\dtldiv{\dtl@unit}{\number\@dtl@tmpcount}{\dtl@extent}%
\setlength{\dtl@yticlabelwidth}{0pt}%
\ifDTLbarytics
\ifx\dtlbar@yticlist\relax
\ifx\dtlbar@yticgap\relax
\dtl@constructticklist\DTLnegextent\DTLbarmax
\dtl@unit\dtlbar@yticlist
\else
\dtl@constructticklistwithgapz
\DTLnegextent\DTLbarmax\dtlbar@yticlist\dtlbar@yticgap
\fi
\fi
\ifx\dtlbar@ylabel\relax
\else
\ifx\dtlbar@yticlabels\relax
\@for\dtl@thislabel:=\dtlbar@yticlist\do{%
\dtlround{\dtl@thislabel}{\dtl@thislabel}
{\c@DTLbarroundvar}%
\ifDTLverticalbars
\settowidth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\else
\settoheight{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\edef\@dtl@h{\the\dtl@tmplength}%
\settodepth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\addtolength{\dtl@tmplength}{\@dtl@h}%
\addtolength{\dtl@tmplength}{\baselineskip}%
\fi
\ifdim\dtl@tmplength>\dtl@yticlabelwidth
\setlength{\dtl@yticlabelwidth}{\dtl@tmplength}%
\fi
}%
\else
\@for\dtl@thislabel:=\dtlbar@yticlabels\do{%
\ifDTLverticalbars
\settowidth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\else
\settoheight{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\edef\@dtl@h{\the\dtl@tmplength}%
\settodepth{\dtl@tmplength}{%
\DTLbardisplayYticklabel{\dtl@thislabel}}%
\addtolength{\dtl@tmplength}{\@dtl@h}%
\addtolength{\dtl@tmplength}{\baselineskip}%
\fi
\ifdim\dtl@tmplength>\dtl@yticlabelwidth
\setlength{\dtl@yticlabelwidth}{\dtl@tmplength}%
\fi
}%
\fi
\fi
\fi
\dtl@xticlabelheight=0pt\relax
\@dtl@tmpcount=0\relax
\@for\dtl@thislabel:=\dtl@multibarlabels\do{%
\advance\@dtl@tmpcount by 1\relax
\settoheight{\dtl@tmplength}{\tikz\expandafter\pgftext\expandafter
[\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl@thislabel}};}%
\edef\@dtl@h{\the\dtl@tmplength}%
\settodepth{\dtl@tmplength}{\tikz\expandafter\pgftext\expandafter
[\DTLbarXlabelalign]{\DTLdisplaylowerbarlabel{\dtl@thislabel}};}%
\addtolength{\dtl@tmplength}{\@dtl@h}%
\addtolength{\dtl@tmplength}{\baselineskip}%
\ifdim\dtl@tmplength>\dtl@xticlabelheight
\setlength{\dtl@xticlabelheight}{\dtl@tmplength}%
\fi
}
\@dtl@tmpcount=0\relax
\@for\dtl@this:=\dtlbar@variables\do{%
\advance\@dtl@tmpcount by 1\relax
}%
\edef\DTLbargroupwidth{\number\@dtl@tmpcount}%
\edef\dtl@n{\expandafter\number\csname dtlrows@#3\endcsname}
\dtlmul{\dtl@tmpi}{\dtl@n}{\DTLbargroupwidth}
\dtlsub{\dtl@tmpii}{\dtl@n}{1}%
\dtlmul{\dtl@tmpii}{\dtl@tmpii}{\dtlbar@groupgap}%
\dtladd{\DTLbarchartwidth}{\dtl@tmpi}{\dtl@tmpii}
\begin{tikzpicture}
\ifDTLverticalbars
\pgfsetyvec{\pgfpoint{0pt}{\dtl@unit sp}}%
\pgfsetxvec{\pgfpoint{\DTLbarwidth}{0pt}}%
\else
\pgfsetxvec{\pgfpoint{\dtl@unit sp}{0pt}}%
\pgfsetyvec{\pgfpoint{0pt}{\DTLbarwidth}}%
\fi
\DTLbaratbegintikz
\def\@dtl@start{0}%
\@sDTLforeach[#1]{#3}{#4}{%
\@dtl@barcount = 1\relax
\let\dtl@multibar@labels=\dtl@multibarlabels
\let\dtl@uppermultibar@labels=\dtl@uppermultibarlabels
\dtlmul{\dtl@multimidpt}{\DTLbargroupwidth}{0.5}%
\dtladd{\dtl@multimidpt}{\dtl@multimidpt}{\@dtl@start}%
\@for\DTLbarvariable:=\dtlbar@variables\do{%
\dtladd{\@dtl@endpt}{\@dtl@start}{1}%
\expandafter\DTLconverttodecimal\expandafter
{\DTLbarvariable}{\dtl@variable}%
\dtl@chopfirst\dtl@multibar@labels\dtl@thisbarlabel\dtl@rest
\let\dtl@multibar@labels=\dtl@rest
\dtl@chopfirst\dtl@uppermultibar@labels\dtl@thisupperbarlabel\dtl@rest
\let\dtl@uppermultibar@labels=\dtl@rest
\begin{scope}
\expandafter\color\expandafter{\DTLgetbarcolor{\@dtl@barcount}}%
\ifDTLverticalbars
\fill (\@dtl@start,0) -- (\@dtl@start,\dtl@variable)
-- (\@dtl@endpt,\dtl@variable) -- (\@dtl@endpt,0) -- cycle;
\else
\fill (0,\@dtl@start) -- (\dtl@variable,\@dtl@start)
-- (\dtl@variable,\@dtl@endpt) -- (0,\@dtl@endpt) -- cycle;
\fi
\end{scope}
\begin{scope}
\ifdim\DTLbaroutlinewidth>0pt
\expandafter\color\expandafter{\DTLbaroutlinecolor}
\ifDTLverticalbars
\draw (\@dtl@start,0) -- (\@dtl@start,\dtl@variable)
-- (\@dtl@endpt,\dtl@variable) -- (\@dtl@endpt,0) -- cycle;
\else
\draw (0,\@dtl@start) -- (\dtl@variable,\@dtl@start)
-- (\dtl@variable,\@dtl@endpt) -- (0,\@dtl@endpt) -- cycle;
\fi
\fi
\end{scope}
\dtladd{\@dtl@midpt}{\@dtl@start}{0.5}%
\ifDTLverticalbars
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@midpt}{0}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}},
\DTLbarXlabelalign
}%
\edef\DTLstartpt{\noexpand\pgfpointxy{\@dtl@midpt}{0}}%
\else
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{0}{\@dtl@midpt}}
{\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}},
\DTLbarXlabelalign
}%
\edef\DTLstartpt{\noexpand\pgfpointxy{0}{\@dtl@midpt}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLdisplaylowermultibarlabel{\dtl@thisbarlabel}}
\ifDTLverticalbars
\expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
{
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@midpt}{\dtl@variable}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLbarlabeloffset}}}
}%
}{%
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\@dtl@midpt}{\dtl@variable}}
{\noexpand\pgfpoint{0pt}{\noexpand\DTLbarlabeloffset}}}
}%
}
\edef\DTLendpt{\noexpand\pgfpointxy{\@dtl@midpt}{\dtl@variable}}%
\else
\expandafter\DTLifnumlt\expandafter{\DTLbarvariable}{0}
{
\edef\dtl@textopt{right,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@midpt}}
{\noexpand\pgfpoint{-\noexpand\DTLbarlabeloffset}{0pt}}}
}%
}{%
\edef\dtl@textopt{left,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@midpt}}
{\noexpand\pgfpoint{\noexpand\DTLbarlabeloffset}{0pt}}}
}%
}
\edef\DTLendpt{\noexpand\pgfpointxy{\dtl@variable}{\@dtl@midpt}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLdisplayuppermultibarlabel{\dtl@thisupperbarlabel}}
\def\DTLmidpt{\pgfpointlineattime{0.5}{\DTLstartpt}{\DTLendpt}}%
\DTLeverybarhook
\dtladd{\@dtl@start}{\@dtl@start}{1}%
\advance\@dtl@barcount by 1\relax
}%
\setlength{\dtl@tmplength}{\DTLbarlabeloffset}%
\addtolength{\dtl@tmplength}{\dtl@xticlabelheight}%
\ifDTLverticalbars
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@multimidpt}{0}}
{\noexpand\pgfpoint{0pt}{-\noexpand\dtl@tmplength}}},
\DTLbarXlabelalign
}%
\else
\edef\dtl@textopt{%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{0}{\dtl@multimidpt}}
{\noexpand\pgfpoint{-\noexpand\dtl@tmplength}{0pt}}},
\DTLbarXlabelalign
}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLdisplaylowerbarlabel{\dtl@barlabel}}
\dtladd{\@dtl@start}{\@dtl@start}{\dtlbar@groupgap}%
}
\ifDTLbarxaxis
\ifDTLverticalbars
\expandafter\draw\expandafter[\DTLBarXAxisStyle]
(0,0) -- (\DTLbarchartwidth,0);
\else
\expandafter\draw\expandafter[\DTLBarXAxisStyle]
(0,0) -- (0,\DTLbarchartwidth);
\fi
\fi
\ifDTLbaryaxis
\ifDTLverticalbars
\expandafter\draw\expandafter[\DTLBarYAxisStyle]
(0,\DTLnegextent) -- (0,\DTLbarmax);
\else
\expandafter\draw\expandafter[\DTLBarYAxisStyle]
(\DTLnegextent,0) -- (\DTLbarmax,0);
\fi
\fi
\ifx\dtlbar@yticlist\relax
\else
\@for\dtl@thistick:=\dtlbar@yticlist\do{%
\ifDTLverticalbars
\pgfpathmoveto{\pgfpointxy{0}{\dtl@thistick}}
\pgfpathlineto{
\pgfpointadd{\pgfpointxy{0}{\dtl@thistick}}
{\pgfpoint{-\DTLticklength}{0pt}}}
\else
\pgfpathmoveto{\pgfpointxy{\dtl@thistick}{0}}
\pgfpathlineto{
\pgfpointadd{\pgfpointxy{\dtl@thistick}{0}}
{\pgfpoint{0pt}{-\DTLticklength}}}
\fi
\pgfusepath{stroke}
\ifx\dtlbar@yticlabels\relax
\dtlround{\dtl@thislabel}{\dtl@thistick}
{\c@DTLbarroundvar}%
\else
\dtl@chopfirst\dtlbar@yticlabels\dtl@thislabel\dtl@rest
\let\dtlbar@yticlabels=\dtl@rest
\fi
\ifDTLverticalbars
\edef\dtl@textopt{\DTLbarYticklabelalign,%
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{0}{\dtl@thistick}}
{\noexpand\pgfpoint{-\noexpand\DTLticklabeloffset}{0pt}},
}}%
\else
\edef\dtl@textopt{\DTLbarYticklabelalign,
at={\noexpand\pgfpointadd
{\noexpand\pgfpointxy{\dtl@thistick}{0}}
{\noexpand\pgfpoint{0pt}{-\noexpand\DTLticklabeloffset}}
}}%
\fi
\expandafter\pgftext\expandafter[\dtl@textopt]{%
\DTLbardisplayYticklabel{\dtl@thislabel}}
}%
\fi
\ifx\dtlbar@ylabel\relax
\else
\addtolength{\dtl@yticlabelwidth}{\baselineskip}%
\setlength{\dtl@tmplength}{0.5\DTLbarchartlength}
\ifDTLverticalbars
\pgftext[bottom,center,at={\pgfpointadd
{\pgfpointxy{0}{\DTLnegextent}}%
{\pgfpoint{-\dtl@yticlabelwidth}{\dtl@tmplength}}},
rotate=90]{%
\dtlbar@ylabel}
\else
\pgftext[bottom,center,at={\pgfpointadd
{\pgfpointxy{\DTLnegextent}{0}}%
{\pgfpoint{\dtl@tmplength}{-\dtl@yticlabelwidth}}}]{%
\dtlbar@ylabel}
\fi
\fi
\DTLbaratendtikz
\end{tikzpicture}
\fi
}}
\endinput
%%
%% End of file `databar.sty'.