From b39338a5f1024304ab706fb8d4d59cfc24ba4b8a Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 22 Nov 2011 23:48:45 +0000 Subject: new package bchart (2011-11-22) git-svn-id: svn://tug.org/texlive/trunk@24637 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/bchart/LICENSE.txt | 19 ++ Master/texmf-dist/doc/latex/bchart/README | 17 + Master/texmf-dist/doc/latex/bchart/bchart.pdf | Bin 0 -> 138879 bytes Master/texmf-dist/doc/latex/bchart/bchart.tex | 391 +++++++++++++++++++++++ Master/texmf-dist/tex/latex/bchart/bchart.sty | 171 ++++++++++ Master/tlpkg/tlpsrc/bchart.tlpsrc | 0 Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + 7 files changed, 599 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/bchart/LICENSE.txt create mode 100644 Master/texmf-dist/doc/latex/bchart/README create mode 100644 Master/texmf-dist/doc/latex/bchart/bchart.pdf create mode 100644 Master/texmf-dist/doc/latex/bchart/bchart.tex create mode 100644 Master/texmf-dist/tex/latex/bchart/bchart.sty create mode 100644 Master/tlpkg/tlpsrc/bchart.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/bchart/LICENSE.txt b/Master/texmf-dist/doc/latex/bchart/LICENSE.txt new file mode 100644 index 00000000000..47a7ec7eb54 --- /dev/null +++ b/Master/texmf-dist/doc/latex/bchart/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2011 by Tobias Kuhn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Master/texmf-dist/doc/latex/bchart/README b/Master/texmf-dist/doc/latex/bchart/README new file mode 100644 index 00000000000..b57e3511e36 --- /dev/null +++ b/Master/texmf-dist/doc/latex/bchart/README @@ -0,0 +1,17 @@ +bchart +====== + +bchart is a LaTeX package for drawing simple bar charts with horizontal bars on a numerical x-axis. +It is based on the TikZ drawing package. The focus of this package is on simplicity and aesthetics. + + +Documentation +------------- + +See bchart.pdf for the details on how to use this package. + + +License +------- + +bchart is free software licensed under the MIT License. See LICENSE.txt for the details. diff --git a/Master/texmf-dist/doc/latex/bchart/bchart.pdf b/Master/texmf-dist/doc/latex/bchart/bchart.pdf new file mode 100644 index 00000000000..b1465748b74 Binary files /dev/null and b/Master/texmf-dist/doc/latex/bchart/bchart.pdf differ diff --git a/Master/texmf-dist/doc/latex/bchart/bchart.tex b/Master/texmf-dist/doc/latex/bchart/bchart.tex new file mode 100644 index 00000000000..d483a23dcea --- /dev/null +++ b/Master/texmf-dist/doc/latex/bchart/bchart.tex @@ -0,0 +1,391 @@ +\documentclass{article} + +\usepackage{bchart} + +\frenchspacing + +\title{ + \texttt{bchart}: Simple Bar Charts in \LaTeX + \medskip\\ + \large Version 0.1.0 +} +\author{Tobias Kuhn} +\date{22 November 2011} + +\begin{document} + +\maketitle + + +\section{Introduction} + +\texttt{bchart} is a {\LaTeX} package for drawing simple bar charts with horizontal bars on a numerical x-axis. It is based on the TikZ drawing package. The focus of this package is on simplicity and aesthetics. + +To use the package, you have to make sure that {\LaTeX} is able find the file \texttt{bchart.sty}, e.g. by placing a copy of it into the directory of the source file that is using the package. In order to load the package, you have to place the following command at the beginning of your {\LaTeX} source file: +\begin{quote}\small +\begin{verbatim} +\usepackage{bchart} +\end{verbatim} +\end{quote} + + +\section{Charts} + +Charts are created with the \texttt{bchart}-environment. Within this environment, you can put one or more bars by using the \texttt{bcbar}-command. The code of a very simple chart and the resulting picture are shown here: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[max=50] + \bcbar{45} + \bcbar{26} + \bcbar{31} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[max=50] + \bcbar{45} + \bcbar{26} + \bcbar{31} +\end{bchart} +\end{quote} +The option \texttt{max} defines the maximum value on the x-axis (the default is 100). The number given to the \texttt{bcbar}-command defines the value of the respective bar, visualized by the width of the bar and printed as a number to the right of it. The minimum value on the x-axis defaults to 0, but this can be changed by the use of the option \texttt{min}. Furthermore, the option \texttt{step} can be used to show marks at regular intervals: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[min=2.5,step=0.25,max=3.75] + \bcbar{2.6} + \bcbar{3.7} + \bcbar{3.1} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[min=2.5,step=0.25,max=3.75] + \bcbar{2.6} + \bcbar{3.7} + \bcbar{3.1} +\end{bchart} +\end{quote} +For marks at irregular intervals, the \texttt{steps}-option can be used instead: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[min=1,max=18,steps={1,3,7,15}] + \bcbar{13} + \bcbar{4} + \bcbar{7} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[min=1,max=18,steps={1,3,7,15}] + \bcbar{13} + \bcbar{4} + \bcbar{7} +\end{bchart} +\end{quote} +The \texttt{plain}-flag hides all marks: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[max=8,plain] + \bcbar{6.2} + \bcbar{1.8} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[max=8,plain] + \bcbar{6.2} + \bcbar{1.8} +\end{bchart} +\end{quote} + + +\section{Bars} + +The bars of a bar chart can be modified in several ways. The \texttt{text}-option prints text within the inside of the bar: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=2,max=8] + \bcbar[text=Year 1]{6} + \bcbar[text=Year 2]{3} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=2,max=8] + \bcbar[text=Year 1]{6} + \bcbar[text=Year 2]{3} +\end{bchart} +\end{quote} + +The bars can be given different background colors by the use of the \texttt{color}-option: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[max=8] + \bcbar[text=A,color=yellow]{6} + \bcbar[text=B,color=red!50]{3} + \bcbar[text=C,color=green!60!blue]{4} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[max=8] + \bcbar[text=A,color=yellow]{6} + \bcbar[text=B,color=red!50]{3} + \bcbar[text=C,color=green!60!blue]{4} +\end{bchart} +\end{quote} +In addition to predefined colors like \texttt{yellow} and \texttt{red}, new colors can be defined and existing ones can be combined. \texttt{red!50}, for example, stands for a 50\% saturated red, whereas \texttt{green!60!blue} stands for a color obtained by blending green and blue at a ratio of 60:40. See the TikZ manual for more information on how to manipulate colors. The default color for bars is \texttt{blue:20}. + +The \texttt{plain}-flag can be used to prevent the value of the bar to be displayed: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=1,max=8] + \bcbar[plain]{6} + \bcbar[plain]{3} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=1,max=8] + \bcbar[plain]{6} + \bcbar[plain]{3} +\end{bchart} +\end{quote} + + +\section{Skips} + +The common commands \texttt{smallskip}, \texttt{medskip} and \texttt{bigskip} are redefined within the bar chart environment and can be used to insert skips of different sizes between two bars: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=2,max=10] + \bcbar{3.4} + \smallskip + \bcbar{5.6} + \medskip + \bcbar{7.2} + \bigskip + \bcbar{9.9} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=2,max=10] + \bcbar{3.4} + \smallskip + \bcbar{5.6} + \medskip + \bcbar{7.2} + \bigskip + \bcbar{9.9} +\end{bchart} +\end{quote} +With the \texttt{bcskip}-command, skips of arbitrary size can be inserted: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=10,max=100] + \bcbar{83} + \bcskip{3pt} + \bcbar{25} + \bcskip{15mm} + \bcbar{69} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=10,max=100] + \bcbar{83} + \bcskip{3pt} + \bcbar{25} + \bcskip{15mm} + \bcbar{69} +\end{bchart} +\end{quote} + + +\section{Labels} + +The x-axis can be labelled by calling the \texttt{bcxlabel}-command: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=200,max=1000] + \bcbar[text=Company A]{346} + \bcbar[text=Company B]{873} + \bcxlabel{number of employees} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=200,max=1000] + \bcbar[text=Company A]{346} + \bcbar[text=Company B]{873} + \bcxlabel{number of employees} +\end{bchart} +\end{quote} +The option \texttt{label} can be used to label bars and skips: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=2,max=16] + \bcbar[label=1st bar]{8.5} + \bigskip[label=skip] + \bcbar[label=2nd bar]{4.5} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=2,max=16] + \bcbar[label=1st bar]{8.5} + \bigskip[label=skip] + \bcbar[label=2nd bar]{4.5} +\end{bchart} +\end{quote} +The command \texttt{bclabel} generates ``free'' labels at the respective position in the chart: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=2,max=16] + \bcbar{8.5} + \bclabel{free label} + \bcbar{4.5} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=2,max=16] + \bcbar{8.5} + \bclabel{free label} + \bcbar{4.5} +\end{bchart} +\end{quote} + + +\section{Units} + +The \texttt{unit}-option of the chart environment attaches a unit to all values, like ``kg'', ``m\textsuperscript{2}'', or ``\%'': +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[min=50,max=100,step=10,unit=\%] + \bcbar{72.3} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[min=50,max=100,step=10,unit=\%] + \bcbar{72.3} +\end{bchart} +\end{quote} +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[min=50,max=100,step=10,unit=m\textsuperscript{2}] + \bcbar{72.3} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[min=50,max=100,step=10,unit=m\textsuperscript{2}] + \bcbar{72.3} +\end{bchart} +\end{quote} + + +\section{Width and Scaling} + +The \texttt{width}-option of the chart environment allows for adjusting the width of the chart: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[max=10,step=2,width=4cm] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[max=10,step=2,width=4cm] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart} +\end{quote} +Note that the height of the chart is not affected by this, nor is the size or shape of the text. The default width is 8cm. + +In order to scale the complete chart (i.e. to change width and height in a proportional way), the \texttt{scale}-option can be used: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[max=10,step=2,scale=0.7] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[max=10,step=2,scale=0.7] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart} +\end{quote} +Note that this does not change the size of the text either, only the bars and axes. To scale everything, including text, the chart environment has to be put into a \texttt{scalebox}-command instead: +\begin{quote}\small +\begin{verbatim} +\scalebox{0.7}{ +\begin{bchart}[max=10,step=2] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart}} +\end{verbatim} +\end{quote} +\begin{quote} +\scalebox{0.7}{ +\begin{bchart}[max=10,step=2] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart}} +\end{quote} + +These three ways to change the size of the chart can all be combined to produce different kinds of scaling effects: +\begin{quote}\small +\begin{verbatim} +\scalebox{0.7}{ +\begin{bchart}[max=10,step=2,width=4cm,scale=0.7] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart}} +\end{verbatim} +\end{quote} +\begin{quote} +\scalebox{0.7}{ +\begin{bchart}[max=10,step=2,width=4cm,scale=0.7] + \bcbar{7.5} + \bcbar{3.2} +\end{bchart}} +\end{quote} + + +\section{Known Issues} + +There is currently one known issue with this package. When using fractions in the \texttt{step}-option, sometimes rounding errors become apparent: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[step=0.2,max=1] + \bcbar{0.76} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[step=0.2,max=1] + \bcbar{0.76} +\end{bchart} +\end{quote} +As a workaround, the \texttt{steps}-option can be used instead, where all marks must be listed explicitely: +\begin{quote}\small +\begin{verbatim} +\begin{bchart}[steps={0.2,0.4,0.6,0.8,1},max=1] + \bcbar{0.76} +\end{bchart} +\end{verbatim} +\end{quote} +\begin{quote} +\begin{bchart}[steps={0.2,0.4,0.6,0.8,1},max=1] + \bcbar{0.76} +\end{bchart} +\end{quote} + +\end{document} + 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 + diff --git a/Master/tlpkg/tlpsrc/bchart.tlpsrc b/Master/tlpkg/tlpsrc/bchart.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index a3ea88aa9d7..73c369ed4e3 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -37,6 +37,7 @@ depend authoraftertitle depend authorindex depend background depend bashful +depend bchart depend beamer2thesis depend beameraudience depend beamerposter -- cgit v1.2.3