summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/bchart/bchart.sty
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2011-11-22 23:48:45 +0000
committerNorbert Preining <preining@logic.at>2011-11-22 23:48:45 +0000
commitb39338a5f1024304ab706fb8d4d59cfc24ba4b8a (patch)
treea648f6302e967241a673add34e3452a76aec8f5f /Master/texmf-dist/tex/latex/bchart/bchart.sty
parent9ee660a19b64751c9ae8fbd81340f4b99ae9dd15 (diff)
new package bchart (2011-11-22)
git-svn-id: svn://tug.org/texlive/trunk@24637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/bchart/bchart.sty')
-rw-r--r--Master/texmf-dist/tex/latex/bchart/bchart.sty171
1 files changed, 171 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bchart/bchart.sty b/Master/texmf-dist/tex/latex/bchart/bchart.sty
new file mode 100644
index 00000000000..36851c4763f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bchart/bchart.sty
@@ -0,0 +1,171 @@
+%-------------------------------------------------------------------------------
+% bchart (LaTeX package)
+%-------------------------------------------------------------------------------
+% Version: 0.1.0
+% Date: 22 November 2011
+% Author: Tobias Kuhn
+%-------------------------------------------------------------------------------
+
+\ProvidesPackage{bchart}
+
+\usepackage{ifthen}
+\usepackage{tikz}
+\usetikzlibrary{calc}
+
+
+% Lengths
+
+\newlength{\bcpos}
+\newlength{\bcwidth}
+
+
+% Chart Arguments
+
+\newcommand{\bcunit}{}
+\newcommand{\bcmin}{}
+\newcommand{\bcmax}{}
+\newcommand{\bcstep}{}
+\newcommand{\bcsteps}{}
+\newcommand{\bcscale}{}
+\newcommand{\bcplainchart}{}
+\makeatletter
+\define@key{bchart}{unit}{\renewcommand{\bcunit}{#1}}
+\define@key{bchart}{width}{\setlength{\bcwidth}{#1}}
+\define@key{bchart}{min}{\renewcommand{\bcmin}{#1}}
+\define@key{bchart}{max}{\renewcommand{\bcmax}{#1}}
+\define@key{bchart}{step}{\renewcommand{\bcstep}{#1}}
+\define@key{bchart}{steps}{\renewcommand{\bcsteps}{#1}}
+\define@key{bchart}{scale}{\renewcommand{\bcscale}{#1}}
+\define@key{bchart}{plain}[false]{\renewcommand{\bcplainchart}{true}}
+\makeatother
+
+
+% Bar Arguments
+
+\newcommand{\bcbarcolor}{}
+\newcommand{\bcbartext}{}
+\newcommand{\bcbarlabel}{}
+\newcommand{\bcplainbar}{}
+\makeatletter
+\define@key{bcbar}{color}{\renewcommand{\bcbarcolor}{#1}}
+\define@key{bcbar}{text}{\renewcommand{\bcbartext}{#1}}
+\define@key{bcbar}{label}{\renewcommand{\bcbarlabel}{#1}}
+\define@key{bcbar}{plain}[false]{\renewcommand{\bcplainbar}{true}}
+\makeatother
+
+
+% Skip Arguments
+
+\newcommand{\bcskiplabel}{}
+\makeatletter
+\define@key{bcskip}{label}{\renewcommand{\bcskiplabel}{#1}}
+\makeatother
+
+
+% Bar Charts
+
+\newenvironment{bchart}[1][]{%
+ % Bars:
+ \newcommand{\bcbar}[2][]{
+ % Set defaults:
+ \renewcommand{\bcbarcolor}{blue!20}
+ \renewcommand{\bcbartext}{}
+ \renewcommand{\bcbarlabel}{}
+ \renewcommand{\bcplainbar}{false}
+ % Read parameters:
+ \setkeys{bcbar}{##1}
+ % Draw bar:
+ \fill[color=\bcbarcolor,fill,draw] (0,\bcpos) rectangle ($##2-\bcmin*(\bcwidth/\bcrange,0) + (0,\bcpos-5mm)$);
+ \draw (0,\bcpos) rectangle ($##2-\bcmin*(\bcwidth/\bcrange,0) + (0,\bcpos-5mm)$);
+ \ifthenelse{\equal{\bcplainbar}{true}}{}{
+ % Write value:
+ \node[anchor=west] at ($##2-\bcmin*(\bcwidth/\bcrange,0) + (0,\bcpos-2.5mm)$) {\sf ##2\bcunit};
+ }
+ % Write text:
+ \node[anchor=west] at (0,\bcpos-2.5mm) {\sf \bcbartext};
+ % Write label:
+ \node[anchor=east] at (0,\bcpos-2.5mm) {\sf \bcbarlabel};
+ % Move vertical position downward:
+ \addtolength{\bcpos}{-5mm}
+ }%
+ % Labels:
+ \newcommand{\bclabel}[1]{
+ % Write label:
+ \node[anchor=east] at (0,\bcpos) {\sf ##1};
+ }%
+ % General skips:
+ \newcommand{\bcskip}[2][]{
+ % Set defaults:
+ \renewcommand{\bcskiplabel}{}
+ % Read parameters:
+ \setkeys{bcskip}{##1}
+ % Write label:
+ \node[anchor=east] at ($(0,\bcpos) - 0.5*(0,##2)$) {\sf \bcskiplabel};
+ % Move vertical position downward:
+ \addtolength{\bcpos}{-##2}
+ }%
+ % Small skips:
+ \renewcommand{\smallskip}[1][]{\bcskip[##1]{2.5mm}}%
+ % Medium skips:
+ \renewcommand{\medskip}[1][]{\bcskip[##1]{5.0mm}}%
+ % Large skips:
+ \renewcommand{\bigskip}[1][]{\bcskip[##1]{7.5mm}}%
+ % X-axis label:
+ \newcommand{\getbcxlabel}{}%
+ \newcommand{\bcxlabel}[1]{
+ \renewcommand{\getbcxlabel}{##1}
+ }%
+ \newcommand{\bcrange}{\bcstripunit{\dimexpr\bcmax pt-\bcmin pt\relax}}
+ % Set defaults:
+ \renewcommand{\bcunit}{}%
+ \renewcommand{\bcmin}{0}%
+ \renewcommand{\bcmax}{100}%
+ \renewcommand{\bcstep}{\bcrange}%
+ \renewcommand{\bcsteps}{0,\bcstep,...,\bcrange}%
+ \renewcommand{\bcscale}{1}%
+ \renewcommand{\bcplainchart}{false}%
+ \setlength{\bcpos}{-2.5mm}%
+ \setlength{\bcwidth}{8cm}%
+ % Read parameters:
+ \setkeys{bchart}{#1}%
+ % Draw chart:
+ \begin{tikzpicture}[scale=\bcscale]
+}{
+ % Draw axes:
+ \addtolength{\bcpos}{-2.5mm}
+ \draw (0,\bcpos) -- (\bcwidth,\bcpos);
+ \draw (0,0) -- (0,\bcpos);
+ % Draw scale:
+ \ifthenelse{\equal{\bcplainchart}{true}}
+ { % Scale off
+ % Set position for x-axis label:
+ \coordinate (labelpos) at (0,\bcpos-2mm);
+ }{ % Scale on
+ % Draw start value and set position for x-axis label:
+ \draw (0,\bcpos) -- (0,\bcpos-1mm);
+ \node[anchor=north] (n) at (0,\bcpos-1mm)
+ {\sf \bcstripunit{\dimexpr\bcmin pt\relax}\bcunit};
+ \coordinate (labelpos) at (n.south);
+ % Draw other values:
+ \foreach \x in \bcsteps {
+ \ifthenelse{\equal{\x}{0}}{}{
+ \draw ($\x*(\bcwidth/\bcrange,0) + (0,\bcpos)$) -- ($\x*(\bcwidth/\bcrange,0) + (0,\bcpos-1mm)$);
+ \node[anchor=north] at ($\x*(\bcwidth/\bcrange,0) + (0,\bcpos-1mm)$)
+ {\sf \bcstripunit{\dimexpr\bcmin pt+\x pt\relax}\bcunit};
+ }
+ }
+ }
+ % Write x-axis label:
+ \ifthenelse{\equal{\getbcxlabel}{}}{}{
+ \node[anchor=north,inner sep=0.5mm] at ($0.5*(\bcwidth,0) + (labelpos)$) {\sf \getbcxlabel};
+ }
+ \end{tikzpicture}%
+}
+
+
+% Auxiliary commands:
+
+\makeatletter
+\newcommand*{\bcstripunit}[1]{\strip@pt#1}
+\makeatother
+