%%% sparklines.sty Version 1.3 %%% %%% What Are Sparklines? %%% Sparklines are intense, simple, wordlike graphics (so named by Edward Tufte). %%% In lieu of a more detailed introduction, Professor Tufte's site has an early %%% release of a chapter on sparklines, see www.edwardtufte.com. A PHP %%% implementation can be found at http://sparkline.sourceforge.net/. %%% %%% Copyright 2005 Andreas Loeffler %%% ======================================================================== %%% LICENCE: %%% This file may be distributed under the terms of the LaTeX Project Public %%% License, as described in lppl.txt in the base LaTeX distribution. %%% Either version 1 or, at your option, any later version. %%% ======================================================================== %%% al@wacc.de %%% %%% MODIFICATION HISTORY: %%% Mar 21, 2007 %%% version 1.3: Dan Luecking (luecking@uark.edu) added user-changeable %%% parameters, and expanded documentation %%% Mar 19, 2007 %%% version 1.2: Harlan Harris (harlan@harris.name) added positive-value-only bars %%% Apr 21, 2005 %%% version 1.1: bug removed thanks to Mathias Hofmann %%% Dec 12, 2004 %%% version 1.0: first version of sparklines \ProvidesPackage{sparklines} [2005/01/01 v1.3 Sparklines (see more on sparklines at www.EdwardTufte.com)] \RequirePackage{pgf} % We define the colors of two features: the background rectangle and % the spikes in a bar graph \definecolor{sparkrectanglecolor}{gray}{0.9} \definecolor{sparkspikecolor}{named}{black} % We define parameters for changing the sizes. These are % \sparklinethickness -- thickness of the line drawn by \spark, % \sparkdotwidth -- diameter of the dot drawn by \sparkdot, % \sparkspikewidth -- width of bar drawn in \sparkspike, % \sparklineheight -- macro, number of ex for the height of picture. % Defaults equal old hard-coded values. \newlength\sparklinethickness \newlength\sparkdotwidth \newlength\sparkspikewidth \setlength\sparklinethickness{0.2pt} \setlength\sparkdotwidth{1.2pt} \setlength\sparkspikewidth{2pt} \providecommand{\sparklineheight}{1.75} % defines sparkline environment % Replace hard coded line thickness and picture height with above % defined parameters. \newenvironment{sparkline}[1]{\pgfpicture{0ex}{0ex}{#1 ex}{\sparklineheight ex} \pgfsetlinewidth{\sparklinethickness} \pgfsetxvec{\pgfpoint{#1 ex}{0pt}} \pgfsetyvec{\pgfpoint{0pt}{\sparklineheight ex}} } {\pgfstroke \endpgfpicture} % defines sparkdot with color % Replace hard-coded diameter with previously defined parameter. \def\sparkdot #1 #2 #3 {% {\pgfmoveto{\pgforigin}\color{#3}\pgfcircle[fill]{\pgfxy(#1,#2)}{\sparkdotwidth}}% } % defines sparkrectangle % Replace hard-coded rgb value with with previously defined color value. \def\sparkrectangle #1 #2 {% {\pgfmoveto{\pgforigin}\color{sparkrectanglecolor} \pgfrect[fill]{\pgfxy(0, #1)}{\pgfxy(1, #2)}}} % defines sparkline-plot % Replace \@shouldIstop hack with equivalent \@ifnextchar code. \def\spark #1 #2 {% \pgfmoveto{\pgfxy(#1,#2)} % \@SPARK} \def\@SPARK#1 #2 {% \pgflineto{\pgfxy(#1,#2)} % \@ifnextchar/{\pgfstroke\ignorespaces}{\@SPARK}} % defines sparkspike % Redefine \sparkspike with code that actually detects the color % change. The old version had black hard-coded, but even changing that % made no difference in the output. The combination of setting stroke % color and \pgfusepath{stroke} made it work. In place of hard-coded % width and are now previously defined parameters. \def\sparkspike #1 #2 {% {% \pgfmoveto{\pgforigin}% \pgfsetlinewidth{\sparkspikewidth}% \pgfsetstrokecolor{sparkspikecolor}% \pgfmoveto{\pgfxy(#1, 0)}% \pgflineto{\pgfxy(#1, #2)} \pgfusepath{stroke}}% } \endinput