% \iffalse meta-comment
%
% File:      tablestyles.sty
% Version:   2014/06/27 v0.1
% Author:    Matthias Pospiech
% Email:     <matthias.pospiech@gmx.de>
%
% Copyright (C) 2014 by Matthias Pospiech (matthias@pospiech.eu)
% ---------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (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 Matthias Pospiech.
%
% This work consists of the files tablestyles.dtx and tablestyles.ins
% and the derived filebase tablestyles.sty.
%
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{tablestyles.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{tablestyles}
%<*package>
    [2014/06/27 0.1 enhanced table commands for configurable table layout]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{hypdoc}
\RequirePackage[%
  loadHyperref=true,
  createIndexEntries=false,
  applyLayout=true]
{doctools} % 
%
\usepackage{tablestyles}[2014/06/27]
\EnableCrossrefs
\CodelineIndex
\RecordChanges
%
%%% Additional packages
\usepackage{soulutf8}
\usepackage[table]{xcolor}
\usepackage{enumitem}
\usepackage{tabu}
\usepackage{float}
\usepackage{ltxtable}
%
\listfiles
\begin{document}
  \DocInput{tablestyles.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%</driver>
% \fi
%
% 
%
% \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         \~}
%
%
% \changes{0.1}{2014/06/27}{Initial version.}
%
% \DoNotIndex{\newcommand,\newenvironment}
%
% \providecommand*{\url}{\texttt}
% \GetFileInfo{tablestyles.dtx}
% \title{The \textsf{tablestyles} package}
% \author{Matthias Pospiech \\ \url{matthias.pospiech@gmx.de}}
% \date{\fileversion~from \filedate}
%
% \maketitle
% \begin{abstract}\noindent
% LaTeX unfortunately does not include a good separation of text and style in
% tables. This package tries to solve this problem by defining reusable table
% commands and an interface to define a style for table. Furthermore the
% package defines common used column styles and a bugfix command for lists in
% tables.
% \end{abstract}
% \tableofcontents
%
% \section{Introduction}
%
% This package provides commands to be used inside a tabular environment, 
% which allow the user to define the style of a table once but apply it to
% every table using the commands defined by this package.
% The styles are divided into the head, subhead and the body of the table.
% Further this package introduces new column types and enhancing the
% typesetting of lists inside tables.
%
% \section{Usage}
%
% The usage is first described using a brief review of the possibilities
% to change the layout of a table using the font size, font color, 
% line appearance and the background colors of special and 
% alternating cells. The latter is based on the xcolor/colortab package.
% Subsequent the commands provided by the package are explained in detail
%  followed by a description of the creation of new styles.
%
% \subsection{Loading}
% The package is loaded with
% \iffalse
%<*example>
% \fi
\begin{lstlisting}[style=lstDemoStyleLaTeXCode]%
\usepackage{tablestyles}
\end{lstlisting}
% \iffalse
%</example>
% \fi
% \noindent It should be loaded after the xcolor package and before the
% hyperref package.
%
% \subsection{Tutorial}
% 
% The code listing~\ref{code:manualtable} shows a tabular with all commands
% necessary to set up the style of the table displayed below
% (table~\ref{tab:examplenostyle}). In this code the commands of this package
% are \emph{not} used. The equivalent code with the commands of this package
% is provided in the following code listing~\ref{code:tablewithstyle}.
% \iffalse
%<*example>
% \fi

\colorlet{colorbody}{white!100}
\colorlet{colorsubhead}{gray!30}
\colorlet{colorhead}{gray!25}
\colorlet{colorrow}{gray!15.0}

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , basicstyle=\small\ttfamily,
 captionpos=b,caption={example code for a table with manual changes to the appereance.},label={code:manualtable}]
\begin{table}
%
\small    % fontsize
\sffamily % font family = sans serif
\centering % alignment of tabular
\renewcommand{\arraystretch}{1.4} % larger cell height
\rowcolors{1}{colorrow}{colorbody}%
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
 \hline
 \rowcolor{colorhead}
    \bfseries header &
    \bfseries header \\
 \hline
 %
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \rowcolor{colorsubhead}
 subhead & subhead \\
 %
 content  & content \\
 content  & content \\
 \hline
\end{tabular}
\caption{table with bold header font}
\end{table} 
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
% \begin{table}[H]
% %
% \small
% \sffamily
% \centering
% \renewcommand{\arraystretch}{1.4}
% \rowcolors{1}{colorrow}{colorbody}
% 
% \begin{tabular}{*{2}{p{0.45\textwidth}}}
% \hline
% \rowcolor{colorhead}
%     \bfseries header &
%     \bfseries header \\
% \hline
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  \rowcolor{colorsubhead}
%  subhead  & subhead \\
%  content  & content \\
%  content  & content \\
% \hline
% \end{tabular}
% 
% \caption{table with bold header font}
% \label{tab:examplenostyle}
% \end{table} 
%
% The aim of this package is to generalize the generation of such tabular
% styles. The code listing~\ref{code:tablewithstyle} demonstrates the usage,
% with the result shown in  table~\ref{tab:examplestyle}, 
% which is identical with the previous one (table~\ref{tab:examplenostyle}).
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example code for a table with style commands.}, label={code:tablewithstyle}]
\begin{table}
%
\tablestyle[sansbold]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\theadstart
    \thead header &
    \thead header \\
\tbody
 %
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 %
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\caption{table with bold header font using the styles by this package}
\end{table} 
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
% \begin{table}[H]
% %
% \tablestyle[sansbold]
%
% \begin{tabular}{*{2}{p{0.45\textwidth}}}
% \theadstart
%     \thead header &
%     \thead header \\
% \tbody
%  %
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  content  & content \\
%  %
%  \tsubheadstart
%  \tsubhead subhead &
%  \tsubhead subhead \\
%  %
%  content  & content \\
%  content  & content \\
%  \tend
% \end{tabular}
% \caption{table with bold header font using the styles by this package}
% \label{tab:examplestyle}
% \end{table} 
%
% The following sections show the possibilities of applying a style in general
% and how to style a heading or subheading
%
% \subsubsection{applying styles}
% 
% The command \DescribeMacro{\tablestyle}\cs{tablestyle}\oarg{style} is used
% to choose the style of the table. It redefines all commands that apply
% changes to font, colors, lines, etc. It is required before the tabular
% environment to apply the changes to the complete table.
% If not inserted the last chosen layout, or if never applied the standard
% layout is used.
%
% To apply lines or any other elements at the top and bottom of a table the 
% commands \DescribeMacro{\tbegin}\cs{tbegin} at the beginning 
% \DescribeMacro{\tend}\cs{tend} at the end of the table are used.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={code example with table style applied.}, label={code:tablestylebasic}]
\begin{table}
%
\tablestyle[stylename]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\tbegin
 %
 content  & content \\
 content  & content \\
\tend
\end{tabular}
\end{table} 
\end{lstlisting}

% \iffalse
%</example>
% \fi
% 
% \subsubsection{headings and subheadings}
% 
% If a table starts with a header \cs{tbegin} is replaced by \cs{theadstart}
% and the following main table content starts with 
% \DescribeMacro{\tbody}\cs{tbody} (as shown in the previous code
% listing~\ref{code:tablestylebasic}). In general the commands
% \DescribeMacro{\theadstart}\cs{theadstart} and
% \DescribeMacro{\tsubheadstart}\cs{tsubheadstart} set up
% the color of the heading row and  print out a line by default.
% \DescribeMacro{\theadend}\cs{theadend} and
% \DescribeMacro{\tsubheadend}\cs{tsubheadend} can be used to print out a
% line afterwards (or apply any other useful properties at the end), but are
% empty by default. The properties of each cell in the heading are applied with
% \DescribeMacro{\thead}\cs{thead} and \DescribeMacro{\tsubhead}\cs{tsubhead}.
% Unfortunately the cell property command must be applied to each cell. The
% code listing~\ref{code:headings} demonstrates the implementation of 
% heading and subheading.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={code for heading and subheading.}, label={code:headings}]
\theadstart
    \thead header &
    \thead header \\
\theadend % not necessary in default styles
\tbody
 %
 content  & content \\
...
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 \tsubheadend % not necessary in default styles
 %
\end{lstlisting}

% \iffalse
%</example>
% \fi
% 
% If a heading or subheading shall span all columns of a table this can be
% achieved with the simplified commands
%  \DescribeMacro{\theadrow}\cs{theadrow}\marg{number of cells}\marg{text} 
% and the equivalent \DescribeMacro{\tsubheadrow}\cs{tsubheadrow}\marg{number
% of cells}\marg{text}. 
% Note that these automatically insert a \cs{tabularnewline}. The first
% parameter therefore must match the number of columns in the table.
% 
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example for multi column rows.}, label={code:headrows}]
\theadstart
\theadrow{2}{full width header} 
\tbody
 %
 content  & content \\
 %
\tsubheadrow{2}{full width subheader}  %
%
 content  & content \\
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
%
% \subsection{Setup of styles}
%
% Style are applied to the table with the following commands
% \begin{itemize}[noitemsep]
% \item \cs{tbegin}
% \item \cs{tbody}
% \item \cs{tend}
% \item \cs{thead}
% \item \cs{theadstart}
% \item \cs{theadend}
% \item \cs{tsubheadstart}
% \item \cs{tsubheadend}
% \item \cs{tsubhead}
% \item \cs{theadrow}
% \item \cs{tsubheadrow}
% \end{itemize}
% which were described in the previous section. To define the style the following
% commands are used which define the font, the color, and other settings.
%
% 
% \subsubsection{fontsize}
% Font sizes can be set up using \DescribeMacro{\setuptablefontsize}
% \cs{setuptablefontsize}\marg{name}\marg{size definition} and be retrieved with
% \DescribeMacro{\tablefontsize}\cs{tablefontsize}\marg{name}. Predefined are sizes
% for \emph{body} and \emph{head}
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={configuration and selection of font sizes .}, label={code:fontsizes}]
% definition
\setuptablefontsize{body}{\small}
...
% request size
\tablefontsize{body} % outputs \small
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
% \subsubsection{colors}
% Colors are defined and requested similar to font sizes, here with the
% commands  \DescribeMacro{\setuptablecolor}
% \cs{setuptablecolor}\marg{color name}\marg{color definition} and 
% \DescribeMacro{\tablecolor}\cs{tablecolor}\marg{color name}. The color
% definition % must be in the notation of xcolor.
% Predefined are colors for \emph{body}, \emph{head}, \emph{subhead} and
% \emph{row}.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={configuration and selection of colors.}, label={code:colors}]
% definition
\setuptablecolor{body}{white!100}
...
% request color
\tablecolor{body} % outputs white!100
\end{lstlisting}

% \iffalse
%</example>
% \fi

% \subsubsection{alternating row colors}
% 
% Alternating rows are implemented using the \cs{rowcolors} command of the
% colortbl package (should be loaded by xcolor).
% Here the colors \emph{body} and \emph{row} are alternated. They are
% introduced using \DescribeMacro{\tablealtcolored}\cs{tablealtcolored} and
% can be disabled (until the style of tables is reset using \cs{tablestyle})
% with \DescribeMacro{\disablealternatecolors}\cs{disablealternatecolors}. 
% The examples below show the effect.
%
% \iffalse
%<*example>
% \fi

\begin{minipage}[t]{0.48\linewidth}
\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={automatic alternating row colors.}, label={code:rowcolors}]
\begin{table}[H]
\tablestyle % using \tablealtcolored
\begin{tabular}{*{2}{p{0.25\textwidth}}}
\tbegin
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\end{table} \end{lstlisting}
\end{minipage}
\hfill
\begin{minipage}[t]{0.48\linewidth}
\begin{table}[H]
\tablestyle
\begin{tabular}{*{2}{p{0.25\textwidth}}}
\tbegin
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\end{table} 
\end{minipage} \newline

\begin{minipage}[t]{0.48\linewidth}
\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={disabled alternating row colors.}, label={code:norowcolors}]
\begin{table}[H]
\tablestyle 
\disablealternatecolors
\begin{tabular}{*{2}{p{0.25\textwidth}}}
\tbegin
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\end{table} 
\end{lstlisting}
\end{minipage}
\hfill
\begin{minipage}[t]{0.48\linewidth}
\begin{table}[H]
\tablestyle
\disablealternatecolors
\begin{tabular}{*{2}{p{0.25\textwidth}}}
\tbegin
 content  & content \\
 content  & content \\
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\end{table} 
\end{minipage} \newline

% \iffalse
%</example>
% \fi
%
% \subsubsection{colored lines in tables}
% 
% Horizontal lines are inserted with \cs{hline} and vertical lines with
% \cs{vline}. These can be changed in color with 
% \lstinline!\arrayrulecolor{red}\hline! and \lstinline!\color{red}\vline!.
% This package provides the commands
% \DescribeMacro{\coloredhline}\cs{coloredhline}\marg{color} and
% \DescribeMacro{\coloredvline}\cs{coloredvline}\marg{color} in order to
% generalise the setting of line colors.
% The code listing~\ref{code:coloredlines} shows an example of their usage.
% Note that this example uses tabularx and makes use of the new columnstyle
% `C'.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={disabled alternating row colors.}, label={code:coloredlines}]
\colorlet{grayline}{gray!70}
\definecolor{blueline}{rgb}{0,0.27,0.55}

\begin{table}
\tablestyle
  % Overwriting style, instead of defining a new one
  \renewcommand{\tbegin}{\coloredhline{blueline}}
  \renewcommand{\tbody}{\coloredhline{blueline}}
  \renewcommand{\tend}{\coloredhline{blueline}}
\begin{tabularx}{0.8\textwidth}{%
l!{\coloredvline{grayline}}
CC!{\coloredvline{grayline}}
CC!{\coloredvline{grayline}}
C
}
\theadstart
\thead header & 
\multicolumn{2}{>{\columncolor{\tablecolor{head}}\thead}
  c!{\coloredvline{grayline}}}{header} & 
\multicolumn{2}{>{\columncolor{\tablecolor{head}}\thead}
  c!{\coloredvline{grayline}}}{header} & 
\multicolumn{1}{>{\columncolor{\tablecolor{head}}\thead}c}
  {header} 
%
\tabularnewline
\tbody
%
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80 \\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80 \\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80 \\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80 \\
\tend
\end{tabularx}
\end{table}
\end{lstlisting}

\colorlet{grayline}{gray!70}
\definecolor{blueline}{rgb}{0,0.27,0.55}

\begin{table}[H]
\tablestyle
  \renewcommand{\tlinetop}{\coloredhline{blueline}}
  \renewcommand{\tlinemid}{\coloredhline{blueline}}
  \renewcommand{\tlinebottom}{\coloredhline{blueline}}
\begin{tabularx}{0.8\textwidth}{%
l!{\coloredvline{grayline}}
ZZ!{\coloredvline{grayline}}
ZZ!{\coloredvline{grayline}}
Z
}
\theadstart
header & 
\multicolumn{2}{>{\columncolor{\tablecolor{head}}\thead}c
!{\coloredvline{grayline}}}
{header} & 
\multicolumn{2}{>{\columncolor{\tablecolor{head}}\thead}c
!{\coloredvline{grayline}}}
{header} & 
\multicolumn{1}{>{\columncolor{\tablecolor{head}}\thead}c}
{header} 
%
\tabularnewline
\tbody
%
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80\\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80\\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80\\
description & 0,3 & 0,35 & 0,5 & 0,65 & 0,80\\
\tend
\end{tabularx}
\caption{table with colored vertical and horizontal lines}
\label{tab:coloredlines}
\end{table}

% \iffalse
%</example>
% \fi
%
% \subsubsection{Table styles}
%
% Complete styles are applied using
% \DescribeMacro{\tablestyle}\cs{tablestyle}\oarg{style name}
% and defined with \DescribeMacro{\setuptablestyle}\cs{setuptablestyle}
% \marg{style name}\marg{style definition}. If no argument is given for the
% command \cs{tablestyle} the style with name \emph{default} is used.
% Within the definition of styles the command \DescribeMacro{\resettablestyle}
% \cs{resettablestyle} has a special meaning. Its purpose is to reset a style
% before the actual style definitions are applied. Any change to this command
% has thus an influence to all styles using this command. 
%
% The default style for example is defined by the code
% listing~\ref{code:setupdefaultstyle}. 
% It sets up font sizes for body and head (used in \cs{head} and
% \cs{subhead}), defines the font style using the sans serif font family,
% redefines the \cs{arraystretch} and introduces alternating row colors with
% \cs{tablealtcolored}.
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={definition of the default style.}, label={code:setupdefaultstyle}]
 \setuptablestyle{default}{%
  \resettablestyle
  \renewcommand{\arraystretch}{1.4}
  \centering
  \sffamily
  \upshape%
  \tablefontsize{body}
  \tablealtcolored%
  \renewcommand{\thead}{%
\tablefontsize{head}%
\ignorespaces%
  }
  \renewcommand{\tsubhead}{%
\tablefontsize{head}%
\ignorespaces%
  }  
}
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
% The package defines the styles
% \begin{itemize}[noitemsep]
%   \item default (sans serif fonts, alternating row colors, 
%   header with gray background color)
%   \item roman  (as default style, but with roman fonts)
%   \item sansbold (as default style, but with bold heading font) 
%   \item sansboldbw (as sansbold style, but with darker heading background) 
% \end{itemize}
% 
% These styles are demonstrated by the following tables
% \ref{tab:style:default} - \ref{tab:style:sansboldbw}.
%
% \iffalse
%<*example>
% \fi

\begin{table}[H]
%
\tablestyle[default]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\theadstart
    \thead header &
    \thead header \\
\tbody
 %
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 %
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\caption{default style}
\label{tab:style:default}
\end{table} 

\begin{table}[H]
%
\tablestyle[roman]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\theadstart
    \thead header &
    \thead header \\
\tbody
 %
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 %
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\caption{roman style}
\label{tab:style:roman}
\end{table} 

\begin{table}[H]
%
\tablestyle[sansbold]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\theadstart
    \thead header &
    \thead header \\
\tbody
 %
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 %
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\caption{sansbold style}
\label{tab:style:sansbold}
\end{table} 

\begin{table}[H]
%
\tablestyle[sansboldbw]
%
\begin{tabular}{*{2}{p{0.45\textwidth}}}
\theadstart%
\thead header &
\thead header \\
\tbody
 %
 content  & content \\
 content  & content \\
 content  & content \\
 %
 \tsubheadstart
 \tsubhead subhead &
 \tsubhead subhead \\
 %
 content  & content \\
 content  & content \\
 \tend
\end{tabular}
\caption{sansboldbw style}
\label{tab:style:sansboldbw}
\end{table} 

% \iffalse
%</example>
% \fi
%
% \subsection{Column type definitions}
% \DescribeMacro{l}\DescribeMacro{c}\DescribeMacro{r}\DescribeMacro{p}
% \LaTeX{} defines itself only the columntypes left (l), right(c) and center
% (c). Unfortunatley these do not automatically wrap text in cells.
% even if the text overrungs the width of the page. For fixed width columns
% this can be solved using the p-columntype. These default 
% columntypes are shown in listing~\ref{code:ct:default} and table
% \ref{tab:ct:standard}. However a combination of paragraph like columns and
% non-justified alignment requires the definition of new column types, which
% are shown hereafter.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example of default column types.}, label={code:ct:default}]
\begin{table}
\tablestyle
%
\begin{tabular}{|l|c|r|p{0.3\linewidth}|}
\theadstart
   \thead \centering header l &
   \thead \centering header c &   
   \thead \centering header r &   
   \thead \centering header p \tabularnewline
\tbody
%
left & center & right & 
text which is considerably longer than the width of the column \\
\tend
\end{tabular}
\caption{standard column types (lcrp)}
\end{table}
\end{lstlisting}

% \iffalse
%</example>
% \fi
% 
% \begin{table}[H]
% \tablestyle
% \begin{tabular}{|l|c|r|p{0.3\linewidth}|}
% \theadstart
%    \thead \centering header l &
%    \thead \centering header c &   
%    \thead \centering header r &   
%    \thead \centering header p \tabularnewline
% \tbody
% left & center & right & 
% text which is considerably longer than the width of the column \\
% \tend
% \end{tabular}
% \caption{standard column types (lcrp)}
% \label{tab:ct:standard}
% \end{table}
% 
% \DescribeMacro{m}\DescribeMacro{b}
% The array package provides further the column types middle (m) and bottom
% (b), which act like the p-type, but provide a different vertical alignment
% as demonstrated in listing~\ref{code:ct:pmb} and table \ref{tab:ct:pmb}. 
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example of paragraph column types.}, label={code:ct:pmb}]
\begin{table}
\tablestyle
%
\begin{tabular}{|p{0.3\linewidth}|m{0.3\linewidth}|b{0.3\linewidth}|}
\theadstart
   \thead \centering header p &
   \thead \centering header m &   
   \thead \centering header b \tabularnewline
\tbody
%
text which is considerably longer than the width of the column & 
text which is considerably longer than the width of the column & 
text which is considerably longer than the width of the column \\
\tend
\end{tabular}
\caption{column types (pmb)}
\end{table}
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
%	\begin{table}[H]
%	\tablestyle
%	\begin{tabular}{|p{0.3\linewidth}|m{0.3\linewidth}|b{0.3\linewidth}|}
%	\theadstart
%	   \thead \centering header p &
%	   \thead \centering header m &   
%	   \thead \centering header b \tabularnewline
%	\tbody
%	%
%	text which is considerably longer than the width of the column & 
%	text which is considerably longer than the width of the column & 
%	text which is considerably longer than the width of the column \\
%	\tend
%	\end{tabular}
%	\caption{column types (pmb)}
%	\label{tab:ct:pmb}
%	\end{table}
% 
% \DescribeMacro{X}\DescribeMacro{Z}\DescribeMacro{Y}
% The tabularx-package provides a further column type (X), which uses
% automatically calculated column width. 
% This package defines additional column types bases on X for centered (Z) and
% right (Y) aligned columns, shown
% table~\ref{tab:ct:XCY}, which is using the column definition:
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example of tabularx type columns.}, label={code:ct:XZY}]
\begin{table}
\tablestyle
\begin{tabularx}{\textwidth}{|X|Z|Y|}
...
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
%	\begin{table}[H]
%	\tablestyle
%	\begin{tabularx}{\textwidth}{|X|Z|Y|}
%	\theadstart
%	   \thead \centering header X &
%	   \thead \centering header Z &   
%	   \thead \centering header Y \tabularnewline
%	\tbody
%	text which is considerably longer than the width of the column  & 
%	text which is considerably longer than the width of the column  & 
%	text which is considerably longer than the width of the column \\
%	\tend
%	\end{tabularx}
%	\caption{column types (XZY)}
%	\label{tab:ct:XZY}
%	\end{table}
%
% 
% \DescribeMacro{L}\DescribeMacro{C}\DescribeMacro{R}
% Furthermore, this package provides additional column types with fixed with
% and left (L), centered (C) and right (R) aligned column, each derived from
% the p-columntype. In the example (table~\ref{tab:ct:LZR}) the advantage of
% using ragged text alignment (L) in tables over the justified alignment (p)
% is clearly visible. 
%
% \begin{table}[H]
% \tablestyle
% \begin{tabularx}{\textwidth}{|p{0.17\linewidth}|L{0.17\linewidth}|C{0.17\linewidth}|R{0.17\linewidth}|X|}
% \theadstart
%   \thead \centering header p &
%   \thead \centering header L &   
%   \thead \centering header C &
%   \thead \centering header R &   
%   \thead \centering header X \tabularnewline
% \tbody
% text which is considerably longer than the width of the column  & 
% text which is considerably longer than the width of the column  & 
% text which is considerably longer than the width of the column  & 
% text which is considerably longer than the width of the column  & 
% text which is considerably longer than the width of the column  \\
% \tend
% \end{tabularx}
% \caption{column types (LCR)}
% \label{tab:ct:LCR}
% \end{table}
%
% The column definition for table~\ref{tab:ct:LCR} is shown in
% listing~\ref{code:ct:LCR}:
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example of new p-type columns.}, label={code:ct:LCR}]
\begin{table}
\tablestyle
\begin{tabularx}{\textwidth}{|p{0.17\linewidth}|L{0.17\linewidth}|C{0.17\linewidth}|R{0.17\linewidth}|X|}
...
\end{lstlisting}

% \iffalse
%</example>
% \fi
% 
% Further column definitions can be defined similar to the definitions used
% here. The implementation is demonstrated in 
% section~\ref{sec:impl:columntypes}.
% 
% \subsection{Items in tables}
% 
% 
% Itemized, enumerated or other list typically introduce a horizontal
% indentation which should not appear within a tabular environment. Therefore
% the command \DescribeMacro{\tableitemize}\cs{tableitemize} is introduced 
% to remove the indentation.
%
%
% \begin{table}[H]
% \tablestyle
% \begin{tabularx}{1\textwidth}{|X|X|X|}
% \theadstart
%    \thead \centering header X &
%    \thead \centering header items (X) &   
%    \thead \centering header enums (X) \tabularnewline
% \tbody
% The \LaTeX{} document preparation system is a special version of Donald
% Knuth's \TeX{} program. \TeX{} is a sophisticated program designed to 
% produce high-quality typesetting, especially for mathematical text.
% & 
% \tableitemize
% \begin{itemize}
% \item The \LaTeX{} document preparation system is a special version of Donald
% Knuth's \TeX{} program.
% \item \TeX{} is a  sophisticated program designed to produce high-quality typesetting,
% \item especially for mathematical text.
% \end{itemize}
% &
% \tableitemize
% \begin{enumerate}
% \item The \LaTeX{} document preparation system is a special version of Donald
% Knuth's \TeX{} program.
% \item \TeX{} is a sophisticated program designed to produce high-quality typesetting,
% \item especially for mathematical text.
% \end{enumerate}
% \tabularnewline
% \tend
% \end{tabularx}
% \caption{table item list using \texttt{tableitemize}}
% \label{tab:tableitemize}
%\end{table}
%
% In table~\ref{tab:tableitemize} this is realized by inserting the command
% \cs{tableitemize} directly before the beginning of a list,
% as shown in listing~\ref{code:tableitemize}.
%
% \iffalse
%<*example>
% \fi

\begin{lstlisting}[style=lstDemoStyleLaTeXCode   , captionpos=b,caption={example of tableitemize.}, label={code:tableitemize}]
...
The ...
&
\tableitemize % <---
\begin{itemize}
\item The ...
\item \TeX{} is a ... 
\item especially ...
\end{itemize}
&
\tableitemize % <---
\begin{enumerate}
\item The ...
\item \TeX{} is a ... 
\item especially ...
\end{enumerate}
\tabularnewline
...
\end{lstlisting}

% \iffalse
%</example>
% \fi
%
% \StopEventually{}
% \clearpage
% \section{Implementation}
%
% \iffalse
%<*tablestyles.sty>
% \fi
%
% \subsection{Setup and packages}           
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{tablestyles}
          [2011/10/01 v0.1 tablestyles]
%    \end{macrocode}
%
% The following packages are loaded by this package. array is required for
% most of the tables anyway, xcolor with the option `table' is required for 
% the color definitions (table loads colortbl for all commands of colors in
% tables. ragged2e is used for the new columntypes and etoolbox for the
% implementation of the code.
% 
%    \begin{macrocode}
\RequirePackage{array}
\RequirePackage{etoolbox}
%% check that xcolor is not loaded
\@ifpackageloaded{xcolor}{%
  \ifcsdef{rowcolors}{}{%
    \PackageError{tablestyles}%
    {%
\MessageBreak%
Package 'xcolor' must be loaded with the option\MessageBreak%
'tables'. Otherwise the command rowcolors\MessageBreak%
is not available. \MessageBreak%
    }{}%
    \endinput%
  }%
}{%
  % xcolor not loaded
  \PassOptionsToPackage{table}{xcolor}
  \RequirePackage{xcolor}
}
\RequirePackage{ragged2e}
\AtBeginDocument{%
\@ifpackageloaded{tabularx}{}{
    \PackageError{tablestyles}%
    {%
\MessageBreak%
Package 'tabularx' must be loaded, otherwise tablestyles will not
work.
  }%
}% end of ifpackageloaded
}% end of AtBeginDocument
%    \end{macrocode}
%
% \subsection{Configuration commands}
%
% The heart of this package is the definition of the table styles, which are
% very simply only saved as a command sequence.
% An error are printed out if a style is requested, which has not been defined
% before.
%
% \begin{macro}{\setuptablestyle}
%    \begin{macrocode}
%% define table styles (save the code)
\newcommand{\setuptablestyle}[2]{%
  \ifcsdef{tsty@style@#1}
  {
    \PackageWarning{tablestyles}{
    \MessageBreak
      table style `#1' is already defined.
    }{}
  }{}
  \csdef{tsty@style@#1}{#2}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tablestyle}
%    \begin{macrocode}
%% apply table styles (use the code)
\newcommand{\tablestyle}[1][default]{%
  \ifcsdef{tsty@style@#1}{}{
    \PackageError{tablestyles}{
      \MessageBreak
      table style `#1' is not defined.
      \endinput%
    }{}
  }
  \csuse{tsty@style@#1}
}
%    \end{macrocode}
% \end{macro}
%
% Font sizes are save in a special command sequence, so that they can be
% reused, and identified using their names:
%
% \begin{macro}{\setuptablefontsize}
%    \begin{macrocode}
%% save font size with name
\newcommand{\setuptablefontsize}[2]{
  \csdef{tsty@font@#1@size}{#2}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tablefontsize}
%    \begin{macrocode}
%% apply font size with name
\newcommand{\tablefontsize}[1]{
  \ifcsdef{tsty@font@#1@size}%
  {\csuse{tsty@font@#1@size}%
  }{ % not defined
    \PackageError{tablestyles}{
      \MessageBreak
      table font size `#1' is not defined.
      \endinput%
    }{}%
  }%
}%
%    \end{macrocode}
% 
% The default values for the predefined sizes \emph{body} and \emph{head} are
% set to \cs{small} since tables should 
% always be printed slightly smaller than the normal text.
% 
%    \begin{macrocode}
%% define default font sizes
\setuptablefontsize{body}{\small}
\setuptablefontsize{head}{\small}
%    \end{macrocode}
% \end{macro}
%
% The definition of colors is almost identical to the definition of font
% sizes. This definition is restricted to the xcolor way of defining colors.
%
% \begin{macro}{\setuptablecolor}
%    \begin{macrocode}
%% save color with name
\newcommand{\setuptablecolor}[2]{%
  \colorlet{tsty@color@#1}{#2}%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tablecolor}
%    \begin{macrocode}
%% apply colorwith name
\newcommand{\tablecolor}[1]{tsty@color@#1}
%    \end{macrocode}
% \end{macro}
%
% The default colors are defined as 
%
% \begin{macro}{\tsty@defaultcolors}
%    \begin{macrocode}
%% default colors
\newcommand{\tsty@defaultcolors}{
  \setuptablecolor{body}{white!100}
  \setuptablecolor{row}{gray!10}
  \setuptablecolor{head}{gray!25}
  \setuptablecolor{subhead}{gray!30}
}
%    \end{macrocode}
% \end{macro}
%
% and exectuted afterwards. 
% 
%    \begin{macrocode}
%% exectuted default colors
\tsty@defaultcolors
%    \end{macrocode}
% 
% Alternating row colors are simplified with the command \cs{tablealtcolored},
% which reuses the \cs{rowcolors} and the table color definitions for
% \emph{row} and \emph{body}.
%
% \begin{macro}{\tablealtcolored}
%    \begin{macrocode}
%% shortcut for alternating rowcolors
\newcommand\tablealtcolored{%
	\rowcolors{1}{\tablecolor{row}}{\tablecolor{body}}%
}
%    \end{macrocode}
% \end{macro}
%
% The alternating rows are disabled by changing the row color identical to the
% body color. Since every tablestyle should load \cs{tsty@defaultcolors} this
% is reset at every applied tablestyle.
% 
% \begin{macro}{\disablealternatecolors}
%    \begin{macrocode}
%% disable alternating rowcolors by changing the colors
\newcommand{\disablealternatecolors}{%
  \setuptablecolor{row}{\tablecolor{body}}%
}
%    \end{macrocode}
% \end{macro}
%
% The \cs{coloredhline} uses the \cs{arrayrulecolor} of the colortlb-package.
%
% \begin{macro}{\coloredhline}
%    \begin{macrocode}
%% colored horizontal lines (hlines)
\providecommand{\coloredhline}[1]{%
    \arrayrulecolor{#1}\hline
    \arrayrulecolor{black}
}%
%    \end{macrocode}
% \end{macro}
%
% The \cs{coloredvline} applies the color to the \cs{vline} with a standard
% \cs{color} command.
%
% \begin{macro}{\coloredvline}
%    \begin{macrocode}
%% colored vertical lines (vlines)
\providecommand{\coloredvline}[1]{%
    \color{#1}\vline
}%
%    \end{macrocode}
% \end{macro}
% \subsection{Style applying commands}
%
% The lines for the top (above the header), middle (below the header) and 
% the bottom of the table (at the end) are defined with \cs{tlinetop}, 
% \cs{tlinemid} and \cs{tlinebottom}
%
% \begin{macro}{\tlinetop}
%    \begin{macrocode}
%% commands for the style of the lines
\newcommand{\tlinetop}{\coloredhline{black}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\tlinemid}
%    \begin{macrocode}
\newcommand{\tlinemid}{\coloredhline{black}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\tlinebottom}
%    \begin{macrocode}
\newcommand{\tlinebottom}{\coloredhline{black}}
%    \end{macrocode}
% \end{macro}
%
% These are supposed to be inserted in the table with the commands
% \cs{tbegin}, % \cs{tbody} and % \cs{tend}, which prints out the last line
% and restores color, font and size.
%
% \begin{macro}{\tbegin}
%    \begin{macrocode}
%% commands for the seperations (includes the lines)
\newcommand{\tbegin}{\tlinetop}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{tbody}
%    \begin{macrocode}
\newcommand{\tbody}{\tlinemid}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\tend}
%    \begin{macrocode}
\newcommand{\tend}{\tlinebottom}
%    \end{macrocode}
% \end{macro}
%
% The predefined \cs{thead} includes only the
% font size. The same applies for \cs{tsubhead}
% \begin{macro}{\thead}
%    \begin{macrocode}
%% default head style (only fontsize)
\newcommand\thead{%
  \tablefontsize{head}
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\tsubhead}
%    \begin{macrocode}
%% default subhead style (only fontsize)
\newcommand{\tsubhead}{%
  \tablefontsize{head}
}
%    \end{macrocode}
% \end{macro}
%
% Both head and subhead have a start and an end command. By default the start
% includes a hline and the rowcolor, whereas the end command does nothing.
%
% \begin{macro}{\theadstart}
%    \begin{macrocode}
%% style of header start (line and row color)
\newcommand\theadstart{%
  \tlinetop%
  \rowcolor{\tablecolor{head}}%
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\theadend}
%    \begin{macrocode}
%% style of header end - empty
\newcommand\theadend{}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\tsubheadstart}
%    \begin{macrocode}
%% style of subheader start (row color)
\newcommand{\tsubheadstart}{%
  \rowcolor{\tablecolor{subhead}}
}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\tsubheadend}
%    \begin{macrocode}
%% style of subheader end - empty
\newcommand\tsubheadend{}
%    \end{macrocode}
% \end{macro}
%
% The commands \cs{theadrow} and the equivalent \cs{tsubheadrow} define a
% multicolumn row for the whole table width. 
% It should be used to have a full width spanning header. This command
% includes the background color and the cell properties 
% using \cs{thead} and \cs{tsubhead}.
% 
% \begin{macro}{\theadrow}
%    \begin{macrocode}
%% shortcut for multi column row in header
\newcommand{\theadrow}[2]{%
  \multicolumn{#1}{>{\columncolor{\tablecolor{head}}}l}{%
  \thead #2%
  }%  
  \tabularnewline%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tsubheadrow}
%    \begin{macrocode}
%% shortcut for multi column row in subheader
\newcommand{\tsubheadrow}[2]{%
  \multicolumn{#1}{>{\columncolor{\tablecolor{subhead}}}l}{%
  \tsubhead #2%
  }%
  \tabularnewline%
}%
%    \end{macrocode}
% \end{macro}
%
% \subsection{Style definitions}
% 
% The following \cs{resettablestyle} is meant to be used with in the
% definition of a table style. It resets most commands to a default value
% equivalent to what a table would look like without 
% any style applied. New styles should be built on this basis. The content of
% this command can be changed. However it means that this changes are applied
% to all styles of this package.
% 
% \begin{macro}{\resettablestyle}
%    \begin{macrocode}
%% reset to default styles
\newcommand{\resettablestyle}{%
  \normalcolor\normalfont\normalsize%
  \renewcommand{\arraystretch}{1}%
  \rmfamily%
  \tsty@defaultcolors%
  \renewcommand{\tlinetop}{\coloredhline{black}}
  \renewcommand{\tlinemid}{\coloredhline{black}}
  \renewcommand{\tlinebottom}{\coloredhline{black}}
  \renewcommand{\theadstart}{\tlinetop\rowcolor{\tablecolor{head}}}
  \renewcommand{\tbegin}{\tlinetop}
  \renewcommand{\tbody}{\tlinemid}
  \renewcommand{\tend}{\tlinebottom}
}
%    \end{macrocode}
% \end{macro}
%
% \subsubsection{default}
%
%    \begin{macrocode}
%% style: default
\setuptablestyle{default}{%
  \resettablestyle
  \renewcommand{\arraystretch}{1.4}
  \centering
  \sffamily
  \upshape%
  \tablefontsize{body}
  \tablealtcolored%
  \renewcommand{\thead}{%
\tablefontsize{head}%
\ignorespaces%
  }
  \renewcommand{\tsubhead}{%
\tablefontsize{head}%
\ignorespaces%
  }  
}
%    \end{macrocode}
%
% \subsubsection{roman}
% This style differs from the default style only in the exchange of the
% \cs{sffamily} with \cs{rmfamily}.
%    \begin{macrocode}
%% style: roman
\setuptablestyle{roman}{%
  \resettablestyle
  \renewcommand{\arraystretch}{1.4}
  \centering
  \rmfamily
  \upshape%
  \tablefontsize{body}
  \tablealtcolored%
  \renewcommand{\thead}{%
\tablefontsize{head}%
\ignorespaces%
  }
  \renewcommand{\tsubhead}{%
\tablefontsize{head}%
\ignorespaces%
  }  
}
%    \end{macrocode}
%
% \subsubsection{sansbold}
% This style differs from the default style in the inclusion of \cs{bfseries}
% in the heading commands.
%
%    \begin{macrocode}
%% style: sansbold
\setuptablestyle{sansbold}{%
  \resettablestyle
  \renewcommand{\arraystretch}{1.4}
  \centering
  \sffamily
  \upshape%
  \tablefontsize{body}
  \tablealtcolored%
  \renewcommand{\thead}{%
\tablefontsize{head}%
\bfseries
\upshape%
\ignorespaces%
  }
  \renewcommand{\tsubhead}{%
\tablefontsize{head}%
\upshape%
\ignorespaces%
  }  
}
%    \end{macrocode}
%
% \subsubsection{sansboldbw}
% This style differs from the sansbold style in exchange of the table colors
% with much darker heading colors 
% and a white heading font, which is printed slanted.
%
%    \begin{macrocode}
%% style: sansboldbw
\setuptablestyle{sansboldbw}{%
  \resettablestyle
  \setuptablecolor{body}{white!100}
  \setuptablecolor{row}{gray!15}
  \setuptablecolor{head}{black!60}
  \setuptablecolor{subhead}{gray!40}
%    \end{macrocode}
%
%    \begin{macrocode}
  \renewcommand{\arraystretch}{1.4}
  \centering
  \sffamily
  \upshape%
  \tablefontsize{body}
  \tablealtcolored%
  \renewcommand{\thead}{%
\leavevmode\color{white}
\tablefontsize{head}%
\bfseries
\slshape
\ignorespaces%
  }
  \renewcommand{\tsubhead}{%
\tablefontsize{head}%
\bfseries
\ignorespaces%
  }  
}
%    \end{macrocode}
%
% \subsection{Support for itemized lists in tables}
%
% \begin{macro}{\tsty@removeindentation}
%    \begin{macrocode}
%% bugfix code for lists in tables
\newcommand{\tsty@removeindentation}{%
	\leftmargini=\labelsep%
	\advance\leftmargini by \labelsep%
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tableitemize}
%    \begin{macrocode}
\newcommand\tableitemize{
	\@minipagetrue%
	\tsty@removeindentation
}
%    \end{macrocode}
% \end{macro}
%
% \subsection{New columntype definitions}
%\label{sec:impl:columntypes}
%
% The \cs{arraybackslash} is required to restore the definition of
% \lstinline!\\! after its redefinition. \cs{hspace}\{0pt\} is included to 
% allow hyphenation also of the first word.
% 
% New columntype definitions:
% 
%    \begin{macrocode}
%% New columntype definitions:
%% centered (X):
\newcolumntype{Z}{>{\centering\arraybackslash\hspace{0pt}}X}
%% right (X):
\newcolumntype{Y}{>{\RaggedLeft\arraybackslash\hspace{0pt}}X}
%% left (X):
\newcolumntype{W}{>{\RaggedRight\arraybackslash\hspace{0pt}}X}
%% left (p):
\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash\hspace{0pt}}p{#1}}
%% right (p):
\newcolumntype{R}[1]{>{\RaggedLeft\arraybackslash\hspace{0pt}}p{#1}}
%% centered (p):
\newcolumntype{C}[1]{>{\Centering\arraybackslash\hspace{0pt}}p{#1}}
%    \end{macrocode}
%
%
% \iffalse
%</tablestyles.sty>
% \fi
%
% \Finale
\endinput