From c31724769ecd7df4458e402b2344b64b83c61dea Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 11 Jan 2006 23:58:59 +0000 Subject: trunk/Master/texmf-dist/source/latex/warpcol git-svn-id: svn://tug.org/texlive/trunk@586 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/warpcol/warpcol.dtx | 330 +++++++++++++++++++++ Master/texmf-dist/source/latex/warpcol/warpcol.ins | 11 + 2 files changed, 341 insertions(+) create mode 100644 Master/texmf-dist/source/latex/warpcol/warpcol.dtx create mode 100644 Master/texmf-dist/source/latex/warpcol/warpcol.ins diff --git a/Master/texmf-dist/source/latex/warpcol/warpcol.dtx b/Master/texmf-dist/source/latex/warpcol/warpcol.dtx new file mode 100644 index 00000000000..c43c25a905a --- /dev/null +++ b/Master/texmf-dist/source/latex/warpcol/warpcol.dtx @@ -0,0 +1,330 @@ +% \iffalse +% $Id: warpcol.dtx,v 1.4 1998/09/12 05:59:06 wayner Exp $ +% 1998-06-08 Wayne A. Rochester +% +% Doc-source file for use with LaTeX2e +% +% \fi +% \iffalse +%<*dtx> +\ProvidesFile{warpcol.dtx} +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{warpcol} +%\ProvidesFile{warpcol.drv} +% \fi +% \ProvidesFile{warpcol.dtx} +[1998/09/12 v1.0b Numerical column definition] +% +% \iffalse +%<*driver> +\documentclass{ltxdoc} +\usepackage{warpcol} +\begin{document} +\DocInput{warpcol.dtx} +\end{document} +% +% \fi +% +% \changes{v1.0a}{1998/06/08}{First release} +% \changes{v1.0b}{1998/09/12}{Prevented macro expansion during pattern scanning} +% +% \MakeShortVerb{\|} +% \GetFileInfo{warpcol.dtx} +% +% \title{The |warpcol| package\thanks{This file has version number +% \fileversion, last revised \filedate.}} +% \author{W. A. Rochester} +% \maketitle +% \date{\filedate} +% +% \begin{abstract} +% This file defines a tabular column type for formatting numerical +% columns. The column type enables numerical items to be right justified +% relative to each other, while centred beneath the column label. In +% addition, macros are provided to enable variations on this column type +% to be defined. +% \end{abstract} +% +% \section{Introduction} +% +% The primary aim of this package is to provide a means to centre a +% tabular column label over a column of right-justified numbers. +% However, the package goes further to provide a general mechanism for +% justifying numerical items relative to each other and column labels. +% The package works by justifying each numerical item within a box whose +% width is specified by a `pattern'. The width is calculated as the +% width of the pattern after each number in the pattern is expanded to +% that number of zeros. For example, the pattern `$-3.2$' would be +% expanded to `$-000.00$'. Naturally, pattern width calculation and +% typesetting of numerical items are performed in math mode. +% +% The applications of this package overlap with those of David +% Carlisle's |dcolumn| package, which aligns numbers on their decimal +% points. However, the differing approaches of the packages create a +% number of differences in the ways they can be used. First, the +% |dcolumn| package can align items with varying numbers of decimal +% places. To achieve such alignment with this package, numbers must be +% padded with, for example, the active character |~|, redefined to print +% a space the width of a digit. Second, the present package can align +% items that are not simple numbers. Such items include negative +% numbers, which are not properly handled by the |dcolumn| package +% (but can be if the package is modified slightly). +% +% \section{Usage} +% +% The package defines the |P| column type for use with the most common +% application of the package: centring labels over right-justified +% numbers. This column type is used as follows: +% +% \begin{verbatim} +% \begin{tabular}{P{3.1}P{-2.1}} \hline\hline +% \multicolumn{1}{c}{Label 1} & \multicolumn{1}{c}{Label 2} \\ \hline +% 123.4 & -12.3 \\ +% 12.3 & 12.3 \\ +% 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \end{verbatim} +% +% \noindent +% \begin{tabular}{P{3.1}P{-2.1}} \hline\hline +% \multicolumn{1}{c}{Label 1} & \multicolumn{1}{c}{Label 2} \\ \hline +% 123.4 & -12.3 \\ +% 12.3 & 12.3 \\ +% 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \vspace{\baselineskip} +% +% The column labels must be set using the |\multicolumn| command to +% prevent them from being formatted with the |P| column type. Additional +% column types can be defined by the use of the |\pcolbegin| and +% |\pcolend| commands. The |\pcolbegin| command takes two arguments. The +% first is a code (l, c or r) specifying how numerical items should be +% justified relative to each other. The second is the pattern. The +% remaining examples make use of the following definitions (which are +% not included in the package): +% +% \begin{verbatim} +% \newcolumntype{L}[1]{>{\pcolbegin{r}{#1}}l<{\pcolend}} +% \newcolumntype{R}[1]{>{\pcolbegin{r}{#1}}r<{\pcolend}} +% \newcommand{\pcolhd}[1]{\multicolumn{1}{c}{#1}} +% \end{verbatim} +% +% \newcolumntype{L}[1]{>{\pcolbegin{r}{#1}}l<{\pcolend}} +% \newcolumntype{R}[1]{>{\pcolbegin{r}{#1}}r<{\pcolend}} +% \newcommand{\pcolhd}[1]{\multicolumn{1}{c}{#1}} +% +% Column labels are justified correctly regardless of whether they are +% shorter or longer than the numerical items: +% +% \begin{verbatim} +% \begin{tabular}{L{3.1}L{3.1}P{3.1}P{3.1}R{3.1}R{3.1}} \hline\hline +% \multicolumn{1}{l}{SL} & \multicolumn{1}{l}{Long label} & +% \multicolumn{1}{c}{SL} & \multicolumn{1}{c}{Long label} & +% \multicolumn{1}{r}{SL} & \multicolumn{1}{r}{Long label} \\ \hline +% 123.4 & 123.4 & 123.4 & 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 & 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 & 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \end{verbatim} +% +% \noindent +% \begin{tabular}{L{3.1}L{3.1}P{3.1}P{3.1}R{3.1}R{3.1}} \hline\hline +% \multicolumn{1}{l}{SL} & \multicolumn{1}{l}{Long label} & +% \multicolumn{1}{c}{SL} & \multicolumn{1}{c}{Long label} & +% \multicolumn{1}{r}{SL} & \multicolumn{1}{r}{Long label} \\ \hline +% 123.4 & 123.4 & 123.4 & 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 & 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 & 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \vspace{\baselineskip} +% +% Numerical items can be left justified, right justified or centred +% relative to column labels: +% +% \begin{verbatim} +% \begin{tabular}{L{3.1}R{3.1}P{3.1}} \hline\hline +% \pcolhd{Left justified} & \pcolhd{Right justified} & \pcolhd{Centred} +% \\ \hline +% 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \end{verbatim} +% +% \noindent +% \begin{tabular}{L{3.1}R{3.1}P{3.1}} \hline\hline +% \pcolhd{Left justified} & \pcolhd{Right justified} & \pcolhd{Centred} +% \\ \hline +% 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \vspace{\baselineskip} +% +% They can also be left justified, right justified or centred relative +% to each other: +% +% \begin{verbatim} +% \begin{tabular}{>{\pcolbegin{l}{3.1}}c<{\pcolend}P{3.1}% +% >{\pcolbegin{c}{3.1}}c<{\pcolend}} \hline\hline +% \pcolhd{Left justified} & \pcolhd{Right justified} & \pcolhd{Centred} +% \\ \hline +% 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \end{verbatim} +% +% \noindent +% \begin{tabular}{>{\pcolbegin{l}{3.1}}c<{\pcolend}P{3.1}% +% >{\pcolbegin{c}{3.1}}c<{\pcolend}} \hline\hline +% \pcolhd{Left justified} & \pcolhd{Right justified} & \pcolhd{Centred} +% \\ \hline +% 123.4 & 123.4 & 123.4 \\ +% 12.3 & 12.3 & 12.3 \\ +% 1.2 & 1.2 & 1.2 \\ \hline\hline +% \end{tabular} +% \vspace{\baselineskip} +% +% Finally, here is an example with columns that contain something other +% than simple numbers: +% +% \begin{verbatim} +% \begin{tabular}{>{\pcolbegin{l}{< 1.3}}c<{\pcolend}P{3\,3.2}} +% \hline\hline +% \pcolhd{$p$} & \pcolhd{Cost (\$)} \\ \hline +% > 0.1 & 123\,456.78 \\ +% < 0.1 & 23\,456.78 \\ +% < 0.01 & 4\,523.45 \\ +% < 0.001 & 345.67 \\ \hline\hline +% \end{tabular} +% \end{verbatim} +% +% \noindent +% \begin{tabular}{L{< 1.3}P{3\,3.2}} +% \hline\hline +% \pcolhd{$p$} & \pcolhd{Cost (\$)} \\ \hline +% > 0.1 & 123\,456.78 \\ +% < 0.1 & 23\,456.78 \\ +% < 0.01 & 4\,523.45 \\ +% < 0.001 & 345.67 \\ \hline\hline +% \end{tabular} +% \vspace{\baselineskip} +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% Load the |array| package, if it is not already loaded. +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% Declare counters and dimensions. +% \begin{macrocode} +\newcount\WPC@digcnt +\newbox\WPC@patbox +\newbox\WPC@valbox +% \end{macrocode} +% +% \begin{macro}{\WPC@digval} +% The |\WPC@digval| command prints the given character if the character is a +% digit, and `x' otherwise. +% \begin{macrocode} +\def\WPC@digval#1{% +\ifx#100% +\else\ifx#111% +\else\ifx#122% +\else\ifx#133% +\else\ifx#144% +\else\ifx#155% +\else\ifx#166% +\else\ifx#177% +\else\ifx#188% +\else\ifx#199% +\else x\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\WPC@digstr} +% The |\WPC@digstr| command prints a row of zeroes the length of the +% count in the |\WPC@digcnt| counter. +% \begin{macrocode} +\def\WPC@digstr{% +\loop 0\advance\WPC@digcnt by-1 \ifnum\WPC@digcnt>0 \repeat} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\WPC@expandpat} +% The |\WPC@expandpat| command expands the given pattern, for example from +% $-3.2$ to $-000.00$. +% \begin{macrocode} +\def\WPC@expandpat#1{% +\ifx#1\end + \ifnum\WPC@digcnt>0 \WPC@digstr\fi + \let\WPC@next=\relax +\else + \edef\WPC@dv{\WPC@digval#1}% + \if x\WPC@dv + \ifnum\WPC@digcnt>0 \WPC@digstr\fi + #1% + \else + \multiply\WPC@digcnt by10 \advance\WPC@digcnt by\WPC@dv + \fi + \let\WPC@next=\WPC@expandpat +\fi +\WPC@next} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pcolbegin} +% The |\pcolbegin| command is executed before column entries. The first argument +% is the justification code (l, r or c), and the second is the pattern (e.g.\ +% $-2.1$). The command begins the definition of a box containing the table item. +% The width of the box is set to the width of the expanded pattern. Fill +% commands justify the value within the box. The value is typeset in math mode. +% \begin{macrocode} +\def\pcolbegin#1#2{% +% \end{macrocode} +% Initialise the digit count and save the justification code. +% \begin{macrocode} +\WPC@digcnt=0 +\edef\WPC@just{#1}% +% \end{macrocode} +% Create a box containing the expanded pattern (e.g.\ $-00.0$). +% \begin{macrocode} +\setbox\WPC@patbox=\hbox{$\WPC@expandpat#2\end$}% +% \end{macrocode} +% Begin the definition of the value box. +% \begin{macrocode} +\setbox\WPC@valbox=\hbox to\wd\WPC@patbox\bgroup +\if#1r\hfil\else\if#1c\hfil\fi\fi$} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pcolend} +% The |\pcolend| command is executed after column entries. It completes the box +% definition started by the |\pcolbegin| command, and then prints the box. +% \begin{macrocode} +\newcommand{\pcolend}{$% +\if l\WPC@just\hfil\else\if c\WPC@just\hfil\fi\fi +\egroup\box\WPC@valbox} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{P} +% Declare the |P| column type. +% \begin{macrocode} +\newcolumntype{P}[1]{>{\pcolbegin{r}{#1}}c<{\pcolend}} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \DeleteShortVerb{\|} +\endinput diff --git a/Master/texmf-dist/source/latex/warpcol/warpcol.ins b/Master/texmf-dist/source/latex/warpcol/warpcol.ins new file mode 100644 index 00000000000..d004ad0ed6a --- /dev/null +++ b/Master/texmf-dist/source/latex/warpcol/warpcol.ins @@ -0,0 +1,11 @@ +% $Id: warpcol.ins,v 1.1 1998/06/08 09:25:07 wayner Exp $ +% 1998-06-08 Wayne A. Rochester +% +% Installation batch file for use with LaTeX2e + +\def\batchfile{warpcol.ins} +\input docstrip.tex +\preamble +\endpreamble +\generateFile{warpcol.sty}{t}{\from{warpcol.dtx}{package}} +%\generateFile{warpcol.drv}{t}{\from{warpcol.dtx}{driver}} -- cgit v1.2.3