From f93db42320d62005b3978b6ce006e45f0a45851c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 20 Apr 2011 23:20:38 +0000 Subject: colortab.tex misplaced (heiko 21 Apr 2011 01:19:01) git-svn-id: svn://tug.org/texlive/trunk@22155 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/generic/colortab/colortab.tex | 669 --------------------- .../texmf-dist/tex/generic/colortab/colortab.tex | 669 +++++++++++++++++++++ 2 files changed, 669 insertions(+), 669 deletions(-) delete mode 100644 Master/texmf-dist/doc/generic/colortab/colortab.tex create mode 100644 Master/texmf-dist/tex/generic/colortab/colortab.tex (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/generic/colortab/colortab.tex b/Master/texmf-dist/doc/generic/colortab/colortab.tex deleted file mode 100644 index 85abe169366..00000000000 --- a/Master/texmf-dist/doc/generic/colortab/colortab.tex +++ /dev/null @@ -1,669 +0,0 @@ -%% BEGIN colortab.tex/colortab.sty -%% -\def\fileversion{1.0} -\def\filedate{10/05/13} -%% -%% COPYRIGHT 1993/2010, by Timothy Van Zandt, tvz@Princeton.EDU -%% -%% DESCRIPTION: -%% colortab.tex/colortab.sty lets you shade or color the cells in a -%% alignment environments (e.g., \halign and \LaTeX's tabular and -%% array environments). It is compatible with most TeX macro packages, -%% including Plain TeX, LaTeX, AmSTeX, and Ams-LaTeX. You must be -%% use in conjunction with other color commands. -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%% CODE: -% -% colortab.tex uses TeX primitives, plus the Plain TeX commands: -% \newcount, \newtoks, \newbox, \newif and \z@. -% -% The LaTeX specific macros also use some LaTeX commands. -% -\csname ColortabLoaded\endcsname -\let\ColortabLoaded\endinput -\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi -% -\message{\space\space v\fileversion\space\space\filedate\space\space } -\edef\TheAtCode{\the\catcode`\@}\catcode`\@=11 -% -% These scratch registers are set globally: -% -\newcount\CT@cnt -\newdimen\CT@dim -\newbox\CT@box -% -% This flag is used to shut off colortab: -% -\newif\ifcolortab -\colortabtrue -% -% To color row cells of unknown height we first have to put the rows in an -% alignment and measure the resulting height, then put down a row of blobs -% (with \hrule, and then move back up the page. -% -% For TeX's \halign primitive, \coloralign saves the preamble in the token -% register \CT@preamble. This is used to calculate the height of the columns -% that are to be colored in. -% -\newtoks\CT@preamble -\def\coloralign{% - \afterassignment\coloralign@ - \setbox\CT@box=\hbox} -\def\coloralign@#1\cr{% - \egroup - \CT@preamble{\halign\bgroup#1\cr}% - \the\CT@preamble} -% -% \CC reads the next row, which should contain the color commands, and then -% the rows to be colored. The height of the latter rows is calculated, and -% then the row of colors is processed. \CT@columncolor uses \leaders to get -% each color to fill the column horizontally, and it uses the previously -% calculated height to fill the columns vertically. -% \begin{macrocode} -\def\CT@columncolor{% - \ifx\next\@nil - \def\next##1&\@nil{\gdef\CT@next{##1}}% - \expandafter\next\CT@next\@nil - \def\CT@temp\@nil{}% - \else - \ifx\next\CT@space - \def\CT@temp{% - \def\next{\futurelet\next\CT@columncolor}% - \afterassignment\next\let\CT@temp= }% - \else - \def\CT@temp{\CT@@columncolor}% - \fi - \fi - \CT@temp} -\def\CT@@columncolor#1&{% - \ifx\next&% - \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next\omit{}&}% - \else - \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next - \omit{{\ignorespaces#1{\leaders\hrule height\CT@dim\hfil}}}&}% - \fi - \futurelet\next\CT@columncolor} -{\def\\{\global\let\CT@space= }\\ } -\def\CC@#1#2#3{% - \ifcolortab - \noalign{% - \setbox\CT@box=\vbox{#1#3\crcr\egroup}% - \CT@dim=\ht\CT@box - \global\advance\CT@dim by \dp\CT@box - \def\CT@next{}% - \futurelet\next\CT@columncolor#2&\@nil}% - \CT@next\cr - \noalign{\vskip-\CT@dim}% - \fi - #3} -\def\CC#1\cr#2\ECC{\CC@{\the\CT@preamble}{#1}{#2}} -% -% With \LaTeX's alignment macros, the preamble is saved for us in \@preamble. -% Otherwise, \LCC is the same as \CC. -% -\def\LCC#1\\#2\ECC{\CC@{\@preamble}{#1}{#2}} -% -% This unaligned color stuff only works with PSTricks: -% -\def\AC#1{% -% \@ifundefined{color@#1}% -% {\@pstrickserr{Color not defined: `#1'}\@ehpa}% - {\pstVerb{\pst@usecolor{#1}}}} -\def\EAC{\pstVerb{\pst@currentcolor}} -\def\NAC#1{\noalign{\AC{#1}}} -\def\ENAC{\noalign{\EAC}} -% -\def\SP{\noalign{\global\let\CT@savedpreamble\@preamble}} -\def\RP{\noalign{\global\let\@preamble\CT@savedpreamble}} -% -\newcount\CT@LCnum -\def\LColors#1\\{% - \noalign{% - \ifnum\CT@LCinitflag=\c@LT@tables\else\CT@LCinit\fi - \ifnum\CT@LCflag=\z@ - \global\CT@LCnum 1 - \CT@LColors#1&\@nil - \global\CT@LCnum\CT@LCmax - \fi}} -\def\CT@LColors#1&{% - \global\@namedef{LColor@\the\CT@LCnum}{#1}% - \@ifnextchar\@nil{\@gobble}{% - \global\advance\CT@LCnum 1 - \CT@LColors}} -\def\CT@LCinit{% - \ifcolortab - \@ifundefined{LT@\romannumeral\c@LT@tables}% - {\gdef\CT@LCflag{1}}{\gdef\CT@LCflag{\z@}}% - \else - \gdef{CT@LCflag{1}}% - \fi - \ifnum\CT@LCflag=\z@ - \begingroup - \def\omit\kern##1&{% - \advance\CT@LCnum 1 - \CT@dim=##1\relax - \expandafter\xdef\csname LCdim@\the\CT@LCnum\endcsname{% - \number\CT@dim sp}}% - \CT@LCnum\z@ - \@nameuse{LT@\romannumeral\c@LT@tables}&% - \xdef\CT@LCmax{\the\CT@LCnum}% - \endgroup - \fi - \xdef\CT@LCinitflag{\the\c@LT@tables}} -\def\CT@LCinitflag{\z@} -\def\LC@Cell{% - \kern-\@tempdima - \ifnum\CT@LCflag=\z@ - \ifnum\CT@LCnum=\CT@LCmax\relax - \global\CT@LCnum 1 - \else - \global\advance\CT@LCnum 1 - \fi - \CT@dim=\@nameuse{LCdim@\the\CT@LCnum}\relax - \advance\CT@dim-\@tempdimb - \expandafter\ifx\csname LColor@\the\CT@LCnum\endcsname\@empty\else - \begingroup - \@nameuse{LColor@\the\CT@LCnum}{% - \vrule width\CT@dim}% - \endgroup - \kern-\CT@dim - \fi - \fi} -\def\LC{\@tempdima=\z@\@tempdimb=\z@\LC@Cell} -\def\LCi{\LCi@\LC@Cell} -\def\LCi@{% - \@tempdima=\doublerulesep - \ifnum\CT@LCflag=\z@ - \ifnum\CT@LCnum=\CT@LCmax\relax - \@tempdimb=\arrayrulewidth - \else - \@tempdimb=\z@ - \fi - \fi} -\def\LCii{% - \@tempdima=\z@ - \@tempdimb=\doublerulesep - \advance\@tempdimb=\arrayrulewidth - \LC@Cell} -\def\LCiii{% - \LCi@ - \advance\@tempdimb\doublerulesep - \advance\@tempdimb\arrayrulewidth - \LC@Cell} -\def\LCz#1#2{% - \@tempdima=#1 - \@tempdimb=#2 - \LC@Cell} -% -\catcode`\@=\TheAtCode\relax -\endinput -%% END colortab.tex/colortab.sty - -%% BEGIN colortab.doc -\def\FileVersion{0.9} -\def\FileDate{93/01/11} -%% -%% Documentation for colortab.tex/colortab.sty. -%% Run through LaTeX, with or without the NFSS. -%% -%% You need the file fancybox.sty, available from Princeton.EDU:/pub/tvz -%% -%% The color commands \gray and \lightgray must be defined if you -%% want to see the examples. pstricks.tex will be loaded for this -%% purpose if it is found. Otherwise, you must load your own -%% color commands. -%% -%% Change these if using different size paper. You can also include the -%% twosided style option, if desired: - -\def\paperwidth{8.5in} -\def\paperheight{11in} - -\documentstyle[12pt,fancybox]{article} - -\makeatletter - -% Load pstricks.tex if it is found: -\@input{pstricks.tex} - -% Input colortab.tex here to check file version: -\input colortab.tex -\ifx\FileVersion\fileversion\else - \@latexerr{colortab input file and documentation do not have the same - version}\@ehd -\fi - -% DATES, VERSIONS AND TITLES: - -\def\expanddate#1/#2/#3/{\year=19#1 \month=#2 \day=#3} -\begingroup - \expandafter\expanddate\filedate/ - \xdef\thefiledate{\today} -\endgroup - -\title{Documentation for colortab.tex/colortab.sty:\\[5pt] - Shading and coloring \TeX\ tables} -\author{Timothy Van Zandt\\ tvz@Princeton.EDU} -\date{Version \fileversion\\ \thefiledate} - -\def\@maketitle{% - \begin{center} - {\Large\bf \@title \par} - \vskip 1.2em {\lineskip .5em - \begin{tabular}[t]{c}\@author\end{tabular}\par} - \vskip .8em {\@date}% - \end{center} - \par - \vskip .5em} - -% PAGE STYLE: - -\pagestyle{myheadings} -\if@twoside - \markboth{Documentation for colortab.tex/.sty}% - {Version \fileversion, \thefiledate}% -\else - \markright{colortab.tex, Version \fileversion} -\fi - -% TABLE OF CONTENTS - -\newskip\myskip - -\def\tableofcontents{% - \par\vfill - \begin{quote} - \begin{center} \Large\bf Contents \end{center} - \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}% - \let\oldaddvspace\addvspace - \def\addvspace##1{% - \myskip##1\relax - \oldaddvspace{.5\myskip}} - \@starttoc{toc}% - \end{quote} - \thispagestyle{empty} - \vfill - \clearpage} - - -% PAGE PARAMETERS: - -% Paragraphs are marked by large space rather than indentation: -\parindent 0pt -\parskip 7pt plus 1pt minus 1pt - -\setlength{\topmargin}{0pt} -\setlength{\headheight}{12pt} % height of running head -\setlength{\headsep}{30pt} % distance between header and text -\setlength{\textheight}{8.2in} % height of text on page - -% Adjust margins for different paper size: -\@tempdima=\paperwidth -\advance\@tempdima-8.5in -\advance\oddsidemargin .5\@tempdima -\advance\evensidemargin .5\@tempdima -\@tempdima=\paperheight -\advance\@tempdima-11in -\advance\topmargin .5\@tempdima - -% VERBATIM HACKS: - -\VerbatimFootnotes - -% Short meta (works in verbatim. Can't use < for other purposes. -\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % (works in verbatim) - -% Short verbatim. " can appear in verbatim environments. -\def\temp{\Verb"} -\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\"} -\catcode`\"=13 -\let"\temp - -\def\n#1{{\tt\string#1}} - -% Verbatim item: -\newcommand{\vitem}{\SaveVerb[{\def\bf{}\item[\UseVerb{\MyTemp}]}]{\MyTemp}} - -% Verbatim section" - -% EXAMPLES: -% 1. Save example verbatim to \jobname.tmp, -% 2. Input verbatim with \catcode`\"=14 (" is a comment). -% 3. Input again with \catcode\`"=9 (" is ignored). - -\renewcommand{\EveryVerbatimLine}[2]{} - -\renewcommand{\EveryVerbOutLine}[2]{} - -\newcommand{\BeginExample}{% - \VerbatimEnvironment\begin{VerbatimOut}{\jobname.tmp}} - -\newcommand{\EndExample}{% - \end{VerbatimOut}%. - \renewcommand{\EveryVerbatimLine}{}% - \renewcommand{\EveryVerbatimCodes}{\catcode`\"=14}% - \LVerbatimInput{\jobname.tmp}% - \catcode`\"=9} - -\@ifundefined{lightgray}{\@testfalse}% - {\@ifundefined{gray}{\@testfalse}{\@testtrue}} - -\if@test - -\newenvironment{example}{\BeginExample}{\EndExample - \begin{center}\leavevmode\input{\jobname.tmp}\end{center}} - -\else - -\newenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim} - -\fi - -% END PREAMBLE: -\makeatother - -\begin{document} - -\maketitle - -\begin{quote} -"colortab.tex/colortab.sty" contains macros that let you use your color -commands for shading and coloring cells in tables and other alignment -environments. It is compatible with most \TeX\ macro packages. -\end{quote} - -\tableofcontents - -\section{Introduction} - -Adding color to tables is fraught with difficulties, but as the examples in -this file indicate, it can be done. In any case, consider this an advanced -topic, and be aware that the commands in "colortab.tex" are not robust. - -This is meant to supplement your own color commands. There are many macro -files that implement color for the various "dvi" drivers that can support -color. E.g., the PSTricks package works with a variety of DVI-to-PS drivers. - -For example, suppose you have a macro that defines the color command "\gray". -"colortab.tex" requires that one of the following produce a gray line: -\begin{LVerbatim} - {\gray \hrule} - \gray{\hrule} -\end{LVerbatim} -if you want to use this command to color the cells in tables. -This is probably the case if the one of the following produces gray text: -\begin{LVerbatim} - {\gray I am gray!} - \gray{I am gray!} -\end{LVerbatim} - -"colortab.tex" contains macros for \TeX's "\halign" primitive. Incorporating -color into high-level macros based on the "\halign" primitive requires a -case-by-case treatment. "colortab.tex" also contains macros for coloring cells -\LaTeX's various array environments, and for the \LaTeX\ "longtable" -environment that is defined in the "longtable" (or "longtabl") style option. -These can serve as examples that can be accommodated to other table macros. -See the code itself for happy hacking. - -\section{\TeX's halign primitive} - -To shade cells in an alignment, use -\begin{LVerbatim} - \coloralign -\end{LVerbatim} -instead of "\halign". Then, to color the columns in one or more rows, type -\begin{LVerbatim} - \CC - \cr - \cr - \ECC -\end{LVerbatim} -For example: -\begin{example} - \setbox\strutbox=\hbox{\vrule height11.5pt - depth6.5pt width0pt}% - \vbox{\offinterlineskip - \coloralign{% - \vrule\strut\quad\hfil#\hfil\quad - &\vrule\quad\hfil#\quad\vrule\cr - \noalign{\hrule}% - \CC - \gray &\cr - Tamarind&Chiplote\cr - \ECC\noalign{\hrule}% - \CC - \lightgray &\gray\cr - Lulu&Serrano\cr\noalign{\hrule}% - Guanabana&Larga\cr - \ECC\noalign{\hrule}% - }} -\end{example} - -"\CC" and "\ECC" stand for ``ColorCells'' and ``EndColorCells'', respectively. -You cannot change the name of "\ECC" with "\let" or "\def" (without redefining -"\CC"), because it is really just a delimiter. This is also true of the first -"\cr", which marks the end of the row of color commands. -Remember that only complete rows can go between "\CC" and "\ECC". Where you -include horizontal lines is generally inconsequential. You can have nested -"\coloralign" environments, but the nested environment must be enclosed in -brackets "{}". There is no "\coloralign to" or "\coloralign spread" because -the space inserted by "\tabskip" won't be shaded. - -These macros are not very robust. You can make best use of them by knowing how -they work. "\coloralign" just saves the preamble, and otherwise is identical -to "\halign". "\CC" finds the height of the rows that have to be colored, and -then "\CC" draws a rectangle using \TeX's line-drawing primitives in each -cell, colored by the color commands included in the first line that follows -"\CC". E.g., -\begin{LVerbatim} - \yellow &&\red \cr -\end{LVerbatim} -draws a yellow rectangle in column 1, nothing in column 2, and a red rectangle -in column 3. Then "\CC" goes back up the height of the rectangle, so that -\TeX's current point is back where it was when "\CC" started. At this point, -"\CC" has finished its work. When the next rows of the alignment environment -are processed by "\halign", they are put down on top of the rectangles, and -hence have colored backgrounds. - -"\CC" finds the height of the rows to be colored by putting the rows into an -"\halign" environment, using the preamble that was saved by "\coloralign", and -then measuring the height of the resulting box. - -\section{\LaTeX\ array environments} - -Cells can be colored in a \LaTeX\ array without using a special array -environment (i.e., there is no \LaTeX\ analog to "\coloralign"). Use "\LCC" -instead of "\CC", and use "\\" to end the row of color commands instead of -"\cr". For example: -\begin{example} - \def\arraystretch{1.5}% - \begin{tabular}{|l|c|}\hline - \LCC - \gray & \\ - Tamarind & Chiplote \\ \hline - \ECC - \LCC - \lightgray & \gray\\ - Lulu & Serrano\\ \hline - Guanabana & Larga\\ \hline - \ECC - \end{tabular} -\end{example} -The same caveats apply as with the "\coloralign" environment. - -When \n\LCC\ and \n\ECC\ are used with Frank Mittelbach's "array.sty", nested -array-type environments and "\multicolumn" commands wipe out information -needed by \n\ECC\. Here is a workaround: Put "\SP" (``SavePreamble'') at the -beginning of the array-type environment (right after the column declarations), -and put "\RP" (``RestorePreamble'') at the end of each line containing a -"\multicolumn" command or nested array-type environment (after the "\\", and -before the \n\ECC). For example: -\begin{LVerbatim} - \begin{tabular}{|l|c|}\SP\hline - \LCC - \gray & \\ - \multicolumn{2}{c}{Tamarind}\\ \RP \hline - \ECC - \end{tabular} -\end{LVerbatim} -Further nesting (e.g., an array within a "\multicolumn", or a "\multicolumn" -or array within a nested array) sometimes works and sometimes doesn't. You -will have to figure that one out for yourself. - - -\section{longtable.sty} - -"longtable.sty", by David Carlisle, defines the "longtable" environment, for -making multipage tables. "\LCC" will not work with "longtable". However, -"colortab" contains other macros that will work, if you use "longtable.sty" in -conjunction with Frank Mittelbach's "array.sty". These macros have been tested -only briefly, with version 3.04 of "longtable.sty" and version 2.1b of -"array.sty". - -Before every column identifier in the environment's argument (e.g., "c", "l", -"r", "p", "m" or "b"), put -\begin{description} - \vitem"!{\LC}" If none of the below applies; - \vitem"!{\LCi}" If the column is preceded by one or more vertical lines; - \vitem"!{\LCii}" If the column is followed by two vertical lines; - \vitem"!{\LCiii}" If the column is preceded by one or more vertical lines -and followed by two vertical lines. - \vitem"!{\LCz{}{}}" If "colortab" should back up by -before drawing the background, and should draw the background shorter -than the width of the column. -\end{description} -Remember that you have to do this for every column, not just the columns that -you want to color. - -Then include -\begin{LVerbatim} - \LColors & & ... & \\ -\end{LVerbatim} -in the first row of the environment, and later on as well if you wish to -change the colors. Here also you have to include every column, but you can -leave an entry blank if you don't want any background color in that column. - -The color comes out right, or at all, only after you have run the file enough -times for "longtable.sty" to set the alignment correctly. - -Here is an example. The output will appear in this documentation only if -"longtable.sty" or "longtabl.sty" is installed on your system. -\begingroup - \makeatletter - \catcode`\<=12 - \@input{longtable.sty}% - \@input{longtabl.sty}% - \@input{array.sty}% - \@testtrue - \@ifundefined{c@LT@tables}{\@testfalse}{}% - \@ifundefined{d@llarbegin}{\@testfalse}{}% - \if@test\else - \renewenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim}% - \fi - \makeatother -\begin{example} - \LARGE - \begin{longtable}{|!{\LCiii}l||!{\LCi}c|!{\LCi}c|}\hline - \LColors \gray & & \\ - Tamarind & Chiplote & Galanga\\ \hline - \LColors \lightgray & & \gray\\ - Lulu & & Serrano\\ \hline - Guanabana & Larga &\\ \hline - \end{longtable} -\end{example} -\endgroup - -\section{Coloring lines} - -Let's begin with the "\halign" environment. Changing the color of lines is -easy, because if you write, say, "{\gray\hrule}", then the line comes out -gray. For example: -\begin{example} - % Thicker lines and wider spacing give better view: - \setbox\strutbox=\hbox{% - \vrule height15.5pt depth8.5pt width0pt}% - \def\Hrule{\hrule height 2.5pt}% - \def\Vrule{\vrule width 2.5pt}% - % Now the table: - \vbox{\offinterlineskip - \halign{% - {\lightgray\Vrule}\strut\quad\hfil#\hfil\quad - &{\gray\Vrule}\quad\hfil#\quad\Vrule\cr - \noalign{\Hrule}% - Tamarind& Chiplote\cr\noalign{{\darkgray\Hrule}}% - Lulu& Serrano\cr\noalign{\Hrule}% - Guanabana& Larga\cr\noalign{{\lightgray\Hrule}}% - }} -\end{example} - -With \LaTeX, you can add an entry like -\begin{LVerbatim} - @{\hspace{\tabcolsep}{\gray\vrule}\hspace{\tabcolsep}} -\end{LVerbatim} -to the argument of the alignment environment, instead of "|", if you want to -color the vertical line that is drawn. If using "array.sty", you can try: -\begin{LVerbatim} - !{{\gray\vrule}} -\end{LVerbatim} - -To color horizontal lines with \LaTeX, don't bother trying -\begin{LVerbatim} - {\gray\hline} -\end{LVerbatim} -because it won't work. You write your own version of "\hline" and "\cline", or -use the non-aligned color commands described in the next section. - -\section{Non-aligned color with PSTricks} - -Here are a few other commands that can be useful for adding color to tables. -{\bf They only work with PSTricks, v0.93 or later.} in this case is -the name of the color, without the backslash. These fudge the color commands -so that they do not have to be balanced with respect to \TeX\ grouping. You -can achieve the same thing using "\special{}" and "\noalign", -if you know what you are doing. These should work with just about any -alignment macro, include "\halign" and \LaTeX's "tabular" environment. - -\begin{description} - -\vitem"\AC{} ... \EAC" \ - - These stand for "AlignColor" and "EndAlignColor", respectively. is -the name of the color, without a backslash, rather than a color command. This -can be used within a cell, but they do not have to be within the same cell, -nor do they have to be properly nested with respect to \TeX\ grouping. -Generally, "\AC{}" switches to , and \n\EAC\ restores the color -that would be in effect if the first \n\AC\ command were missing. - -\vitem"\NAC{} ... \ENAC" \ - - These stand for "NoAlignColor" and "EndNoAlignColor", respectively. These -are like \n\AC\ and \n\EAC, but the color commands are put inside a -"\noalign". They can only appear at the end of a line, after "\\" or "\cr". - -\end{description} -Actually, these do not even have to be used in pairs. - -Here is an example of how "\AC", etc., can be used. to color lines in \LaTeX\ -arrays. The output will appear in this documentation only if PSTricks is -installed on your system: -\begingroup -\ifx\PSTricksLoaded\endinput\else - \renewenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim} -\fi -\begin{example} - \arrayrulewidth 1.5pt - \begin{tabular}{|l|c|}\hline - Tamarind& Chiplote\\ \NAC{gray}\hline\ENAC - Lulu& Serrano\\ \cline{1-1} - \NAC{lightgray}\cline{2-2}\ENAC - Guanabana\AC{lightgray} & \EAC Larga\\ \hline - \end{tabular} -\end{example} -\endgroup - -\end{document} -%% END colortab.doc diff --git a/Master/texmf-dist/tex/generic/colortab/colortab.tex b/Master/texmf-dist/tex/generic/colortab/colortab.tex new file mode 100644 index 00000000000..85abe169366 --- /dev/null +++ b/Master/texmf-dist/tex/generic/colortab/colortab.tex @@ -0,0 +1,669 @@ +%% BEGIN colortab.tex/colortab.sty +%% +\def\fileversion{1.0} +\def\filedate{10/05/13} +%% +%% COPYRIGHT 1993/2010, by Timothy Van Zandt, tvz@Princeton.EDU +%% +%% DESCRIPTION: +%% colortab.tex/colortab.sty lets you shade or color the cells in a +%% alignment environments (e.g., \halign and \LaTeX's tabular and +%% array environments). It is compatible with most TeX macro packages, +%% including Plain TeX, LaTeX, AmSTeX, and Ams-LaTeX. You must be +%% use in conjunction with other color commands. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% CODE: +% +% colortab.tex uses TeX primitives, plus the Plain TeX commands: +% \newcount, \newtoks, \newbox, \newif and \z@. +% +% The LaTeX specific macros also use some LaTeX commands. +% +\csname ColortabLoaded\endcsname +\let\ColortabLoaded\endinput +\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi +% +\message{\space\space v\fileversion\space\space\filedate\space\space } +\edef\TheAtCode{\the\catcode`\@}\catcode`\@=11 +% +% These scratch registers are set globally: +% +\newcount\CT@cnt +\newdimen\CT@dim +\newbox\CT@box +% +% This flag is used to shut off colortab: +% +\newif\ifcolortab +\colortabtrue +% +% To color row cells of unknown height we first have to put the rows in an +% alignment and measure the resulting height, then put down a row of blobs +% (with \hrule, and then move back up the page. +% +% For TeX's \halign primitive, \coloralign saves the preamble in the token +% register \CT@preamble. This is used to calculate the height of the columns +% that are to be colored in. +% +\newtoks\CT@preamble +\def\coloralign{% + \afterassignment\coloralign@ + \setbox\CT@box=\hbox} +\def\coloralign@#1\cr{% + \egroup + \CT@preamble{\halign\bgroup#1\cr}% + \the\CT@preamble} +% +% \CC reads the next row, which should contain the color commands, and then +% the rows to be colored. The height of the latter rows is calculated, and +% then the row of colors is processed. \CT@columncolor uses \leaders to get +% each color to fill the column horizontally, and it uses the previously +% calculated height to fill the columns vertically. +% \begin{macrocode} +\def\CT@columncolor{% + \ifx\next\@nil + \def\next##1&\@nil{\gdef\CT@next{##1}}% + \expandafter\next\CT@next\@nil + \def\CT@temp\@nil{}% + \else + \ifx\next\CT@space + \def\CT@temp{% + \def\next{\futurelet\next\CT@columncolor}% + \afterassignment\next\let\CT@temp= }% + \else + \def\CT@temp{\CT@@columncolor}% + \fi + \fi + \CT@temp} +\def\CT@@columncolor#1&{% + \ifx\next&% + \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next\omit{}&}% + \else + \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next + \omit{{\ignorespaces#1{\leaders\hrule height\CT@dim\hfil}}}&}% + \fi + \futurelet\next\CT@columncolor} +{\def\\{\global\let\CT@space= }\\ } +\def\CC@#1#2#3{% + \ifcolortab + \noalign{% + \setbox\CT@box=\vbox{#1#3\crcr\egroup}% + \CT@dim=\ht\CT@box + \global\advance\CT@dim by \dp\CT@box + \def\CT@next{}% + \futurelet\next\CT@columncolor#2&\@nil}% + \CT@next\cr + \noalign{\vskip-\CT@dim}% + \fi + #3} +\def\CC#1\cr#2\ECC{\CC@{\the\CT@preamble}{#1}{#2}} +% +% With \LaTeX's alignment macros, the preamble is saved for us in \@preamble. +% Otherwise, \LCC is the same as \CC. +% +\def\LCC#1\\#2\ECC{\CC@{\@preamble}{#1}{#2}} +% +% This unaligned color stuff only works with PSTricks: +% +\def\AC#1{% +% \@ifundefined{color@#1}% +% {\@pstrickserr{Color not defined: `#1'}\@ehpa}% + {\pstVerb{\pst@usecolor{#1}}}} +\def\EAC{\pstVerb{\pst@currentcolor}} +\def\NAC#1{\noalign{\AC{#1}}} +\def\ENAC{\noalign{\EAC}} +% +\def\SP{\noalign{\global\let\CT@savedpreamble\@preamble}} +\def\RP{\noalign{\global\let\@preamble\CT@savedpreamble}} +% +\newcount\CT@LCnum +\def\LColors#1\\{% + \noalign{% + \ifnum\CT@LCinitflag=\c@LT@tables\else\CT@LCinit\fi + \ifnum\CT@LCflag=\z@ + \global\CT@LCnum 1 + \CT@LColors#1&\@nil + \global\CT@LCnum\CT@LCmax + \fi}} +\def\CT@LColors#1&{% + \global\@namedef{LColor@\the\CT@LCnum}{#1}% + \@ifnextchar\@nil{\@gobble}{% + \global\advance\CT@LCnum 1 + \CT@LColors}} +\def\CT@LCinit{% + \ifcolortab + \@ifundefined{LT@\romannumeral\c@LT@tables}% + {\gdef\CT@LCflag{1}}{\gdef\CT@LCflag{\z@}}% + \else + \gdef{CT@LCflag{1}}% + \fi + \ifnum\CT@LCflag=\z@ + \begingroup + \def\omit\kern##1&{% + \advance\CT@LCnum 1 + \CT@dim=##1\relax + \expandafter\xdef\csname LCdim@\the\CT@LCnum\endcsname{% + \number\CT@dim sp}}% + \CT@LCnum\z@ + \@nameuse{LT@\romannumeral\c@LT@tables}&% + \xdef\CT@LCmax{\the\CT@LCnum}% + \endgroup + \fi + \xdef\CT@LCinitflag{\the\c@LT@tables}} +\def\CT@LCinitflag{\z@} +\def\LC@Cell{% + \kern-\@tempdima + \ifnum\CT@LCflag=\z@ + \ifnum\CT@LCnum=\CT@LCmax\relax + \global\CT@LCnum 1 + \else + \global\advance\CT@LCnum 1 + \fi + \CT@dim=\@nameuse{LCdim@\the\CT@LCnum}\relax + \advance\CT@dim-\@tempdimb + \expandafter\ifx\csname LColor@\the\CT@LCnum\endcsname\@empty\else + \begingroup + \@nameuse{LColor@\the\CT@LCnum}{% + \vrule width\CT@dim}% + \endgroup + \kern-\CT@dim + \fi + \fi} +\def\LC{\@tempdima=\z@\@tempdimb=\z@\LC@Cell} +\def\LCi{\LCi@\LC@Cell} +\def\LCi@{% + \@tempdima=\doublerulesep + \ifnum\CT@LCflag=\z@ + \ifnum\CT@LCnum=\CT@LCmax\relax + \@tempdimb=\arrayrulewidth + \else + \@tempdimb=\z@ + \fi + \fi} +\def\LCii{% + \@tempdima=\z@ + \@tempdimb=\doublerulesep + \advance\@tempdimb=\arrayrulewidth + \LC@Cell} +\def\LCiii{% + \LCi@ + \advance\@tempdimb\doublerulesep + \advance\@tempdimb\arrayrulewidth + \LC@Cell} +\def\LCz#1#2{% + \@tempdima=#1 + \@tempdimb=#2 + \LC@Cell} +% +\catcode`\@=\TheAtCode\relax +\endinput +%% END colortab.tex/colortab.sty + +%% BEGIN colortab.doc +\def\FileVersion{0.9} +\def\FileDate{93/01/11} +%% +%% Documentation for colortab.tex/colortab.sty. +%% Run through LaTeX, with or without the NFSS. +%% +%% You need the file fancybox.sty, available from Princeton.EDU:/pub/tvz +%% +%% The color commands \gray and \lightgray must be defined if you +%% want to see the examples. pstricks.tex will be loaded for this +%% purpose if it is found. Otherwise, you must load your own +%% color commands. +%% +%% Change these if using different size paper. You can also include the +%% twosided style option, if desired: + +\def\paperwidth{8.5in} +\def\paperheight{11in} + +\documentstyle[12pt,fancybox]{article} + +\makeatletter + +% Load pstricks.tex if it is found: +\@input{pstricks.tex} + +% Input colortab.tex here to check file version: +\input colortab.tex +\ifx\FileVersion\fileversion\else + \@latexerr{colortab input file and documentation do not have the same + version}\@ehd +\fi + +% DATES, VERSIONS AND TITLES: + +\def\expanddate#1/#2/#3/{\year=19#1 \month=#2 \day=#3} +\begingroup + \expandafter\expanddate\filedate/ + \xdef\thefiledate{\today} +\endgroup + +\title{Documentation for colortab.tex/colortab.sty:\\[5pt] + Shading and coloring \TeX\ tables} +\author{Timothy Van Zandt\\ tvz@Princeton.EDU} +\date{Version \fileversion\\ \thefiledate} + +\def\@maketitle{% + \begin{center} + {\Large\bf \@title \par} + \vskip 1.2em {\lineskip .5em + \begin{tabular}[t]{c}\@author\end{tabular}\par} + \vskip .8em {\@date}% + \end{center} + \par + \vskip .5em} + +% PAGE STYLE: + +\pagestyle{myheadings} +\if@twoside + \markboth{Documentation for colortab.tex/.sty}% + {Version \fileversion, \thefiledate}% +\else + \markright{colortab.tex, Version \fileversion} +\fi + +% TABLE OF CONTENTS + +\newskip\myskip + +\def\tableofcontents{% + \par\vfill + \begin{quote} + \begin{center} \Large\bf Contents \end{center} + \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}% + \let\oldaddvspace\addvspace + \def\addvspace##1{% + \myskip##1\relax + \oldaddvspace{.5\myskip}} + \@starttoc{toc}% + \end{quote} + \thispagestyle{empty} + \vfill + \clearpage} + + +% PAGE PARAMETERS: + +% Paragraphs are marked by large space rather than indentation: +\parindent 0pt +\parskip 7pt plus 1pt minus 1pt + +\setlength{\topmargin}{0pt} +\setlength{\headheight}{12pt} % height of running head +\setlength{\headsep}{30pt} % distance between header and text +\setlength{\textheight}{8.2in} % height of text on page + +% Adjust margins for different paper size: +\@tempdima=\paperwidth +\advance\@tempdima-8.5in +\advance\oddsidemargin .5\@tempdima +\advance\evensidemargin .5\@tempdima +\@tempdima=\paperheight +\advance\@tempdima-11in +\advance\topmargin .5\@tempdima + +% VERBATIM HACKS: + +\VerbatimFootnotes + +% Short meta (works in verbatim. Can't use < for other purposes. +\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % (works in verbatim) + +% Short verbatim. " can appear in verbatim environments. +\def\temp{\Verb"} +\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\"} +\catcode`\"=13 +\let"\temp + +\def\n#1{{\tt\string#1}} + +% Verbatim item: +\newcommand{\vitem}{\SaveVerb[{\def\bf{}\item[\UseVerb{\MyTemp}]}]{\MyTemp}} + +% Verbatim section" + +% EXAMPLES: +% 1. Save example verbatim to \jobname.tmp, +% 2. Input verbatim with \catcode`\"=14 (" is a comment). +% 3. Input again with \catcode\`"=9 (" is ignored). + +\renewcommand{\EveryVerbatimLine}[2]{} + +\renewcommand{\EveryVerbOutLine}[2]{} + +\newcommand{\BeginExample}{% + \VerbatimEnvironment\begin{VerbatimOut}{\jobname.tmp}} + +\newcommand{\EndExample}{% + \end{VerbatimOut}%. + \renewcommand{\EveryVerbatimLine}{}% + \renewcommand{\EveryVerbatimCodes}{\catcode`\"=14}% + \LVerbatimInput{\jobname.tmp}% + \catcode`\"=9} + +\@ifundefined{lightgray}{\@testfalse}% + {\@ifundefined{gray}{\@testfalse}{\@testtrue}} + +\if@test + +\newenvironment{example}{\BeginExample}{\EndExample + \begin{center}\leavevmode\input{\jobname.tmp}\end{center}} + +\else + +\newenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim} + +\fi + +% END PREAMBLE: +\makeatother + +\begin{document} + +\maketitle + +\begin{quote} +"colortab.tex/colortab.sty" contains macros that let you use your color +commands for shading and coloring cells in tables and other alignment +environments. It is compatible with most \TeX\ macro packages. +\end{quote} + +\tableofcontents + +\section{Introduction} + +Adding color to tables is fraught with difficulties, but as the examples in +this file indicate, it can be done. In any case, consider this an advanced +topic, and be aware that the commands in "colortab.tex" are not robust. + +This is meant to supplement your own color commands. There are many macro +files that implement color for the various "dvi" drivers that can support +color. E.g., the PSTricks package works with a variety of DVI-to-PS drivers. + +For example, suppose you have a macro that defines the color command "\gray". +"colortab.tex" requires that one of the following produce a gray line: +\begin{LVerbatim} + {\gray \hrule} + \gray{\hrule} +\end{LVerbatim} +if you want to use this command to color the cells in tables. +This is probably the case if the one of the following produces gray text: +\begin{LVerbatim} + {\gray I am gray!} + \gray{I am gray!} +\end{LVerbatim} + +"colortab.tex" contains macros for \TeX's "\halign" primitive. Incorporating +color into high-level macros based on the "\halign" primitive requires a +case-by-case treatment. "colortab.tex" also contains macros for coloring cells +\LaTeX's various array environments, and for the \LaTeX\ "longtable" +environment that is defined in the "longtable" (or "longtabl") style option. +These can serve as examples that can be accommodated to other table macros. +See the code itself for happy hacking. + +\section{\TeX's halign primitive} + +To shade cells in an alignment, use +\begin{LVerbatim} + \coloralign +\end{LVerbatim} +instead of "\halign". Then, to color the columns in one or more rows, type +\begin{LVerbatim} + \CC + \cr + \cr + \ECC +\end{LVerbatim} +For example: +\begin{example} + \setbox\strutbox=\hbox{\vrule height11.5pt + depth6.5pt width0pt}% + \vbox{\offinterlineskip + \coloralign{% + \vrule\strut\quad\hfil#\hfil\quad + &\vrule\quad\hfil#\quad\vrule\cr + \noalign{\hrule}% + \CC + \gray &\cr + Tamarind&Chiplote\cr + \ECC\noalign{\hrule}% + \CC + \lightgray &\gray\cr + Lulu&Serrano\cr\noalign{\hrule}% + Guanabana&Larga\cr + \ECC\noalign{\hrule}% + }} +\end{example} + +"\CC" and "\ECC" stand for ``ColorCells'' and ``EndColorCells'', respectively. +You cannot change the name of "\ECC" with "\let" or "\def" (without redefining +"\CC"), because it is really just a delimiter. This is also true of the first +"\cr", which marks the end of the row of color commands. +Remember that only complete rows can go between "\CC" and "\ECC". Where you +include horizontal lines is generally inconsequential. You can have nested +"\coloralign" environments, but the nested environment must be enclosed in +brackets "{}". There is no "\coloralign to" or "\coloralign spread" because +the space inserted by "\tabskip" won't be shaded. + +These macros are not very robust. You can make best use of them by knowing how +they work. "\coloralign" just saves the preamble, and otherwise is identical +to "\halign". "\CC" finds the height of the rows that have to be colored, and +then "\CC" draws a rectangle using \TeX's line-drawing primitives in each +cell, colored by the color commands included in the first line that follows +"\CC". E.g., +\begin{LVerbatim} + \yellow &&\red \cr +\end{LVerbatim} +draws a yellow rectangle in column 1, nothing in column 2, and a red rectangle +in column 3. Then "\CC" goes back up the height of the rectangle, so that +\TeX's current point is back where it was when "\CC" started. At this point, +"\CC" has finished its work. When the next rows of the alignment environment +are processed by "\halign", they are put down on top of the rectangles, and +hence have colored backgrounds. + +"\CC" finds the height of the rows to be colored by putting the rows into an +"\halign" environment, using the preamble that was saved by "\coloralign", and +then measuring the height of the resulting box. + +\section{\LaTeX\ array environments} + +Cells can be colored in a \LaTeX\ array without using a special array +environment (i.e., there is no \LaTeX\ analog to "\coloralign"). Use "\LCC" +instead of "\CC", and use "\\" to end the row of color commands instead of +"\cr". For example: +\begin{example} + \def\arraystretch{1.5}% + \begin{tabular}{|l|c|}\hline + \LCC + \gray & \\ + Tamarind & Chiplote \\ \hline + \ECC + \LCC + \lightgray & \gray\\ + Lulu & Serrano\\ \hline + Guanabana & Larga\\ \hline + \ECC + \end{tabular} +\end{example} +The same caveats apply as with the "\coloralign" environment. + +When \n\LCC\ and \n\ECC\ are used with Frank Mittelbach's "array.sty", nested +array-type environments and "\multicolumn" commands wipe out information +needed by \n\ECC\. Here is a workaround: Put "\SP" (``SavePreamble'') at the +beginning of the array-type environment (right after the column declarations), +and put "\RP" (``RestorePreamble'') at the end of each line containing a +"\multicolumn" command or nested array-type environment (after the "\\", and +before the \n\ECC). For example: +\begin{LVerbatim} + \begin{tabular}{|l|c|}\SP\hline + \LCC + \gray & \\ + \multicolumn{2}{c}{Tamarind}\\ \RP \hline + \ECC + \end{tabular} +\end{LVerbatim} +Further nesting (e.g., an array within a "\multicolumn", or a "\multicolumn" +or array within a nested array) sometimes works and sometimes doesn't. You +will have to figure that one out for yourself. + + +\section{longtable.sty} + +"longtable.sty", by David Carlisle, defines the "longtable" environment, for +making multipage tables. "\LCC" will not work with "longtable". However, +"colortab" contains other macros that will work, if you use "longtable.sty" in +conjunction with Frank Mittelbach's "array.sty". These macros have been tested +only briefly, with version 3.04 of "longtable.sty" and version 2.1b of +"array.sty". + +Before every column identifier in the environment's argument (e.g., "c", "l", +"r", "p", "m" or "b"), put +\begin{description} + \vitem"!{\LC}" If none of the below applies; + \vitem"!{\LCi}" If the column is preceded by one or more vertical lines; + \vitem"!{\LCii}" If the column is followed by two vertical lines; + \vitem"!{\LCiii}" If the column is preceded by one or more vertical lines +and followed by two vertical lines. + \vitem"!{\LCz{}{}}" If "colortab" should back up by +before drawing the background, and should draw the background shorter +than the width of the column. +\end{description} +Remember that you have to do this for every column, not just the columns that +you want to color. + +Then include +\begin{LVerbatim} + \LColors & & ... & \\ +\end{LVerbatim} +in the first row of the environment, and later on as well if you wish to +change the colors. Here also you have to include every column, but you can +leave an entry blank if you don't want any background color in that column. + +The color comes out right, or at all, only after you have run the file enough +times for "longtable.sty" to set the alignment correctly. + +Here is an example. The output will appear in this documentation only if +"longtable.sty" or "longtabl.sty" is installed on your system. +\begingroup + \makeatletter + \catcode`\<=12 + \@input{longtable.sty}% + \@input{longtabl.sty}% + \@input{array.sty}% + \@testtrue + \@ifundefined{c@LT@tables}{\@testfalse}{}% + \@ifundefined{d@llarbegin}{\@testfalse}{}% + \if@test\else + \renewenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim}% + \fi + \makeatother +\begin{example} + \LARGE + \begin{longtable}{|!{\LCiii}l||!{\LCi}c|!{\LCi}c|}\hline + \LColors \gray & & \\ + Tamarind & Chiplote & Galanga\\ \hline + \LColors \lightgray & & \gray\\ + Lulu & & Serrano\\ \hline + Guanabana & Larga &\\ \hline + \end{longtable} +\end{example} +\endgroup + +\section{Coloring lines} + +Let's begin with the "\halign" environment. Changing the color of lines is +easy, because if you write, say, "{\gray\hrule}", then the line comes out +gray. For example: +\begin{example} + % Thicker lines and wider spacing give better view: + \setbox\strutbox=\hbox{% + \vrule height15.5pt depth8.5pt width0pt}% + \def\Hrule{\hrule height 2.5pt}% + \def\Vrule{\vrule width 2.5pt}% + % Now the table: + \vbox{\offinterlineskip + \halign{% + {\lightgray\Vrule}\strut\quad\hfil#\hfil\quad + &{\gray\Vrule}\quad\hfil#\quad\Vrule\cr + \noalign{\Hrule}% + Tamarind& Chiplote\cr\noalign{{\darkgray\Hrule}}% + Lulu& Serrano\cr\noalign{\Hrule}% + Guanabana& Larga\cr\noalign{{\lightgray\Hrule}}% + }} +\end{example} + +With \LaTeX, you can add an entry like +\begin{LVerbatim} + @{\hspace{\tabcolsep}{\gray\vrule}\hspace{\tabcolsep}} +\end{LVerbatim} +to the argument of the alignment environment, instead of "|", if you want to +color the vertical line that is drawn. If using "array.sty", you can try: +\begin{LVerbatim} + !{{\gray\vrule}} +\end{LVerbatim} + +To color horizontal lines with \LaTeX, don't bother trying +\begin{LVerbatim} + {\gray\hline} +\end{LVerbatim} +because it won't work. You write your own version of "\hline" and "\cline", or +use the non-aligned color commands described in the next section. + +\section{Non-aligned color with PSTricks} + +Here are a few other commands that can be useful for adding color to tables. +{\bf They only work with PSTricks, v0.93 or later.} in this case is +the name of the color, without the backslash. These fudge the color commands +so that they do not have to be balanced with respect to \TeX\ grouping. You +can achieve the same thing using "\special{}" and "\noalign", +if you know what you are doing. These should work with just about any +alignment macro, include "\halign" and \LaTeX's "tabular" environment. + +\begin{description} + +\vitem"\AC{} ... \EAC" \ + + These stand for "AlignColor" and "EndAlignColor", respectively. is +the name of the color, without a backslash, rather than a color command. This +can be used within a cell, but they do not have to be within the same cell, +nor do they have to be properly nested with respect to \TeX\ grouping. +Generally, "\AC{}" switches to , and \n\EAC\ restores the color +that would be in effect if the first \n\AC\ command were missing. + +\vitem"\NAC{} ... \ENAC" \ + + These stand for "NoAlignColor" and "EndNoAlignColor", respectively. These +are like \n\AC\ and \n\EAC, but the color commands are put inside a +"\noalign". They can only appear at the end of a line, after "\\" or "\cr". + +\end{description} +Actually, these do not even have to be used in pairs. + +Here is an example of how "\AC", etc., can be used. to color lines in \LaTeX\ +arrays. The output will appear in this documentation only if PSTricks is +installed on your system: +\begingroup +\ifx\PSTricksLoaded\endinput\else + \renewenvironment{example}{\VerbatimEnvironment\LVerbatim}{\endLVerbatim} +\fi +\begin{example} + \arrayrulewidth 1.5pt + \begin{tabular}{|l|c|}\hline + Tamarind& Chiplote\\ \NAC{gray}\hline\ENAC + Lulu& Serrano\\ \cline{1-1} + \NAC{lightgray}\cline{2-2}\ENAC + Guanabana\AC{lightgray} & \EAC Larga\\ \hline + \end{tabular} +\end{example} +\endgroup + +\end{document} +%% END colortab.doc -- cgit v1.2.3