diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:52:04 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:52:04 +0000 |
commit | d21901adad62192ce9fff6f2fe7fe862bd99b890 (patch) | |
tree | e7b4337057f59f8081cfa44db523452fcbdee598 | |
parent | abf0cff974f4b3e51f8beddfd842a58b08ef3458 (diff) |
trunk/Master/texmf-dist/source/latex/ctable
git-svn-id: svn://tug.org/texlive/trunk@208 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/source/latex/ctable/ctable.dtx | 556 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/ctable/ctable.ins | 23 |
2 files changed, 579 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/ctable/ctable.dtx b/Master/texmf-dist/source/latex/ctable/ctable.dtx new file mode 100644 index 00000000000..f43d91762b2 --- /dev/null +++ b/Master/texmf-dist/source/latex/ctable/ctable.dtx @@ -0,0 +1,556 @@ +% \iffalse +% $Id: ctable.dtx,v 1.26 2004/06/19 13:06:01 wybo Exp $ +%%% File: ctable.dtx +\NeedsTeXFormat{LaTeX2e} +%<*dtx> +\ProvidesFile{ctable.dtx} +%</dtx> +%<package>\ProvidesPackage{ctable} +%<driver>\ProvidesFile{ctable.drv} +%<+abstract> easy centered table and figure floats with footnotes for LaTeX +% \fi +%\ProvidesFile{ctable} + [2004/06/19 v1.6b LaTeX package ctable] +%\iffalse +%<*driver> +\documentclass[a4paper]{ltxdoc} +\usepackage{carom,txfonts,ctable} +\usepackage[ + verbose, + pdftex, + paper=a4paper, + bottom=35mm, + nohead +]{geometry} + +\parindent0pt +\begin{document} +\DocInput{ctable.dtx} +\end{document} +%</driver> +% \fi +% +% \changes{v1.0}{2000/06/01}{First release.} +% \changes{v1.1}{2001/03/17}{Making use of booktabs package} +% \changes{v1.2}{2002/06/24}{Using keyval to reduce args to 4} +% \changes{v1.3}{2002/07/16}{Many syntactic correction, +% thanks to Johannes Braams} +% \changes{v1.4}{2003/08/11}{Caption, if empty, will not be typeset +% rotate option added +% star option added to use table* and figure* +% environments} +% \changes{v1.5}{2003/10/03}{maxwidth option added} +% \changes{v1.6}{2004/03/20}{left, right and center options added +% frame{sep,rule,fg,bg} options added +% error in width-setting corrected} +% \changes{v1.6a}{2004/04/01}{two errors corrected: +% made setting fboxsep and fboxrule only temporary +% removed superfluous space after tabulars} +% \changes{v1.6b}{2004/06/19}{Added several % at eol to remove superfluous +% whitespace occurring sometimes} +% \GetFileInfo{ctable} +% \MakeShortVerb{\|} +% \title{The |ctable| package\thanks +% {This file has version number \fileversion, dated \filedate.}\\ +% for use with \LaTeX2e} +% \author{Wybo Dekker\\ |wybo@servalys.nl|} +% \date{\filedate} +% \maketitle +% \tableofcontents +% \listoftables +% \listoffigures +% +% \section{Purpose} The |ctable| package lets you easily typeset +% captioned table and figure floats with optional +% footnotes. Both caption and footnotes will be forced within the +% width of the table. +% +% If the width of the table is specified, then tabularx will be used +% to typeset it, and the |X| column specifier can be used. Otherwise +% tabular will be used. +% +% This package defines the commands |\ctable|, +% |\tnote| and |\tmark|, as well as four |\tabularnewline| generating +% commands. The latter generate reasonable amounts of whitespace +% around horizontal rules and are also useful for tabulars outside +% this package. +% +% Since the |ctable| package imports the |array| and |booktabs| +% packages, all commands from those packages are available as well. +% +% Note that, in line with the comments that Simon Fear made +% describing his |booktabs| package, vertical rules for column +% separation can be produced with |\ctable|, but no provisions are +% made to have them make contact with horizontal rules. +% +% \section{Usage} +% \DescribeMacro{\ctable} +% |\ctable| is called with 4 parameters, of which the first is optional: \\ +% +% |\ctable[options] % key=value,...|\\ +% | {coldefs} % for \begin{tabular}|\\ +% | {foottable} % zero or more \tnote commands (see below)|\\ +% | {table lines} % lines for the table|\\ +% +% Options are given as key=value pairs, separated by comma's. +% Extra comma's, including one behind the last pair, don't hurt. +% Arguments to option should be put between braces if they contain +% comma's. +% Currently the following option keys have been defined: +% \\[2ex] +% \begin{tabularx}{\hsize}{@{}lX@{}} +% |caption={...}|& table caption; the braces are needed only if your +% caption contains a comma.\NN +% +% |cap={...}| & for a short caption to go to the |\tableofcontents|.\NN +% +% |pos=...| & float position, default: |tbp|.\NN +% +% |label=...| & for |\label|\NN +% +% |width=...| & tabularx will be used to typeset the table at the +% specified width\,---\,one or more |X| column +% specifiers must be provided.\NN +% +% |maxwidth=...| & like the \textsl{width} option, but any |X| column +% specifiers will be replaced with |l| if the resulting +% table width would thus stay within the specified +% maximum width. This is especially useful where the +% \LaTeX\ source is generated by a script.\NN +% +% |center| & center the table in the available text width; this is +% the default.\NN +% +% |left| & left align the table in the available text width.\NN +% +% |right| & right align the table in the available text width.\NN +% +% |figure| & produce a figure float instead of a table float.\NN +% +% |botcap| & put the caption at the bottom of the float instead +% of on top of it.\NN +% +% |rotate| & rotate table or figure by 90 degrees anticlockwise +% and put it on a separate page. If you use this option, +% the |pos| option is not allowed.\NN +% +% |star| & use the starred versions of the |table| and |figure| +% environments, which place the float over two columns +% when the |twocolumn| option or the |\twocolumn| +% command is active.\NN +% +% |framerule=...|& draw a frame around the table with the given rule +% thickness. The default is |0pt|, so that no frame +% will be seen.\NN +% +% |framesep=...| & set the distance between the frame and the table +% to the given dimension. The default is |0pt|.\NN +% +% |framefg=|\sl r g b & set the foreground color of the frame (the +% rule color) to the given triplet of +% \textsl{rgb}-values. The values should be numbers +% between 0 and 1. The default is |0 0 0| (black).\NN +% +% |framebg=|\sl r g b & set the background color of the frame (the +% color inside the frame) to the given triplet of +% \textsl{rgb}-values. The values should be numbers +% between 0 and 1. The default is |1 1 1| (white).\NN +% \end{tabularx} +% \\[2ex] +% The footnotes are placed under the table, without a rule. +% You therefore probably will want to use the |\LL| (last line) +% command if you use footnotes. +% \DescribeMacro{\tnote} +% |\tnote[label]{footnote text}| places {\footnotesize +% \textsuperscript{\normalfont\textit{label}}\,footnote text} +% under the table. +% Can only be used in the foottable parameter described above. The +% label is optional, the default label is a single $a$. For more +% detailed control, you can also replace this command with something +% like |labeltext&footnotetext\NN|. +% \par +% \DescribeMacro{\tmark} +% |\tmark[label]| this command places the superscripted label in the +% table. It is equivalent with |$^{label}$|. +% The label is optional, the default label is a single $a$. +% \par +% The newline generating commands are a combination of +% |\tabularnewline| and zero or one of |booktabs|' |\toprule|, +% |\midrule| or |\bottomrule|. These combinations have been made, and +% short names have been defined, because source texts for complex +% tables often become very crowded: +% \par +% \DescribeMacro{\NN} Normal Newline, generates just a normal new line. +% An optional dimen parameter inserts extra vertical space under the +% line\\ +% \DescribeMacro{\FL} First Line, generates a new line and a thick +% rule with some extra space under it. +% An optional dimen parameter sets the line width; the default is 0.08em \\ +% \DescribeMacro{\ML} Middle Line: generates a new line and a thin +% rule with some extra space over and under it. +% An optional dimen parameter sets the line width; the default is 0.05em \\ +% \DescribeMacro{\LL} Last Line: generates a new line and a thick +% rule with some extra space over it. +% An optional dimen parameter sets the line width; the default is 0.08em \\ +% These macros can be used outside |\ctable| constructs. +% \par +% Finally, for completeness, here are some of |booktabs|' commands +% that may be useful:\\ +% \DescribeMacro{\toprule} |\toprule[<wd>]| +% where |<wd>| is the optional thinkness of the rule\\ +% \DescribeMacro{\midrule} |\midrule[<wd>]|\\ +% \DescribeMacro{\bottomrule} |\bottomrule[<wd>]|\\ +% \DescribeMacro{\cmidrule} |\cmidrule[<wd>](<trim>){a-b}| +% where |<trim>| can be |r|, |l|, or |rl| +% and the rule is drawn over columns |a| through |b|\\ +% \DescribeMacro{\morecmidrules} |\morecmidrules| +% must be used to separate two successive cmidrules\\ +% \DescribeMacro{\addlinespace} |\addlinespace[<wd>]| +% inserts extra space between rows\\ +% \DescribeMacro{\specialrule} +% |\specialrule{<wd>}{<abovespace>}{<belowspace>}|\\ +% See the |booktabs| documentation for details. +% \ctable[ +% cap = The Skewing Angles, +% caption = The Skewing Angles ($\beta$) for +% $\fam0 Mu(H)+X_2$ and $\fam0 Mu(H)+HX$~\tmark, +% label = tab:nowidth, +% ]{rlcc}{ +% \tnote{for the abstraction reaction, +% $\fam0 Mu+HX \rightarrow MuH+X$.} +% \tnote[b]{1 degree${} = \pi/180$ radians.} +% \tnote[c]{this is a particularly long note, showing that +% footnotes are set in raggedright mode as we don't like +% hyphenation in table footnotes.} +% }{ \FL +% & & $\fam0 H(Mu)+F_2$ & $\fam0 H(Mu)+Cl_2$ \ML +% &$\beta$(H) & $80.9^\circ$\tmark[b] & $83.2^\circ$ \NN +% &$\beta$(Mu) & $86.7^\circ$ & $87.7^\circ$ \LL +% } +% +% \subsection{The width and maxwidth options} +% When \LaTeX-sources containing tables are generated automatically by a +% script, it is often not known in advance what the maximum size of an l +% column will be. A good solution for this is to use an |X| specifier, +% typesetteing the table at the text width with the tabularx package. +% However, this will result in too much white space in cases where the +% column contains small texts only. This problem can be solved by using +% the maxwidth option instead of the width option. The |X| specifiers will +% then be replaced with |l| as long as the width of the resulting table +% stays with the specified maximum width. +% +% +% \section{Examples} +% \subsection{Tables} +% Table~\ref{tab:nowidth} is an example taken from the related package +% threeparttable.sty by Donald Arseneau, with an extra footnote. +% It was typeset with: +% \begin{verbatim} +% \ctable[ +% cap = The Skewing Angles, +% caption = The Skewing Angles ($\beta$) for +% $\fam0 Mu(H)+X_2$ and $\fam0 Mu(H)+HX$~\tmark, +% label = tab:nowidth, +% ]{rlcc}{ +% \tnote{for the abstraction reaction, +% $\fam0 Mu+HX \rightarrow MuH+X$.} +% \tnote[b]{1 degree${} = \pi/180$ radians.} +% \tnote[c]{this is a particularly long note, showing that +% footnotes are set in raggedright mode as we don't like +% hyphenation in table footnotes.} +% }{ \FL +% & & $\fam0 H(Mu)+F_2$ & $\fam0 H(Mu)+Cl_2$ \ML +% &$\beta$(H) & $80.9^\circ$\tmark[b] & $83.2^\circ$ \NN +% &$\beta$(Mu) & $86.7^\circ$ & $87.7^\circ$ \LL +% } +% \end{verbatim} +% \ctable[ +% caption = Example with a specified width of 100mm, +% width = 100mm, +% pos = b, +% label = tab:width, +% left +% ]{c>{\raggedright}Xc>{\raggedright}X}{ +% \tnote{footnotes are placed under the table} +% }{ \FL +% \multicolumn{4}{c}{Example using tabularx} \ML +% \multicolumn{2}{c}{Multicolumn entry!} & THREE & FOUR \NN +% \cmidrule(r){1-2}\cmidrule(rl){3-3}\cmidrule(l){4-4} +% one& +% The width of this column depends on the width of the +% table.\tmark & +% three& +% Column four will act in the same way as +% column two, with the same width. \LL +% } +% +% Table~\ref{tab:width} is an example with a width specification, +% taken from the |tabularx| documentation, with the vertical rules +% removed. By using the trimming parameters of the |\LR|, |\MR|, and +% |\RR| commands of the |booktabs| package, some of the horizontal +% splitting was regained. By using the |left| option, the table has +% been left aligned. It was typeset with: +% \begin{verbatim} +% \ctable[ +% caption = Example with a specified width of 100mm, +% width = 100mm, +% pos = b, +% label = tab:width, +% left +% ]{c>{\raggedright}Xc>{\raggedright}X}{ +% \tnote{footnotes are placed under the table} +% }{ \FL +% \multicolumn{4}{c}{Example using tabularx} \ML +% \multicolumn{2}{c}{Multicolumn entry!} & THREE & FOUR \NN +% \cmidrule(r){1-2}\cmidrule(rl){3-3}\cmidrule(l){4-4} +% one& +% The width of this column depends on the width of the +% table.\tmark & +% three& +% Column four will act in the same way as +% column two, with the same width. \LL +% } +% \end{verbatim} +% +% \subsection{Figures} +% Figures, even single ones, are always put in tabular cells. This is not +% particularly handy for single pictures, but it eases the construction +% of arrays of pictures, including sub-captions, delineation, and spacing. +% Figure~\ref{fig} shows a figure that has been produced with the |\ctable| +% command, in combination with |\usepackage{carom}|; +% it has been typeset with: +% \begin{verbatim} +% \ctable[ +% caption = The di- and tri-bromobenzenes, +% label = fig, +% botcap, +% framebg = .53 .81 .92, +% framerule = 1pt, +% framesep = 4ex, +% figure, +% ]{ccc}{}{ \NN +% \bzdrv{1==Br;2==Br}& +% \bzdrv{1==Br;3==Br}& +% \bzdrv{1==Br;4==Br} \NN +% 1,2 & 1,3 & 1,4 \NN[3ex] +% \bzdrv{1==Br;2==Br;3==Br}& +% \bzdrv{1==Br;2==Br;4==Br}& +% \bzdrv{1==Br;3==Br;5==Br} \NN +% 1,2,3 & 1,2,4 & 1,3,5 +% } +% \end{verbatim} +% \ctable[ +% caption = The di- and tri-bromobenzenes, +% label = fig, +% botcap, +% framebg = .53 .81 .92, +% framerule = 1pt, +% framesep = 4ex, +% figure, +% ]{ccc}{}{ \NN +% \bzdrv{1==Br;2==Br}& +% \bzdrv{1==Br;3==Br}& +% \bzdrv{1==Br;4==Br} \NN +% 1,2 & 1,3 & 1,4 \NN[3ex] +% \bzdrv{1==Br;2==Br;3==Br}& +% \bzdrv{1==Br;2==Br;4==Br}& +% \bzdrv{1==Br;3==Br;5==Br} \NN +% 1,2,3 & 1,2,4 & 1,3,5 +% } +% (The excessive whitespace at the left of the figure is caused by +% the bounding boxes generated by the \textsl{carom} package.) +% \StopEventually{}\newpage +% \section{Implementation} +% \parskip2ex +% \begin{macrocode} +%<*package> +\RequirePackage{color,keyval,array,tabularx,booktabs,rotating} +\def\NN{\tabularnewline} +\def\FL{\toprule} +\def\ML{\NN\midrule} +\def\LL{\NN\bottomrule} +\def\@ctblfgcolor#1 #2 #3={\definecolor{@ctblframefg}{rgb}{#1,#2,#3}} +\def\@ctblbgcolor#1 #2 #3={\definecolor{@ctblframebg}{rgb}{#1,#2,#3}} +\newdimen\@ctblframesep +\newdimen\@ctblframerule +\newdimen\@ctblwidth +\newdimen\@ctblmaxwidth +\newdimen\@ctblw % the final width +% \end{macrocode} +% Allocate box registers so that we can determine the widths of the +% tables +% \begin{macrocode} +\newbox\ctbl@tabelx % the width with X columns +\newbox\ctbl@tabel % the width where X is replaced with l +\newbox\ctbl@t % the final box will become one of the two above +% \end{macrocode} +% Option setting commands from keyval. The table position (here, top, +% bottom, page) gets a special treatment, since \LaTeX\ does not expand +% commands there. So instead of putting things like \texttt{tbp} in a +% command like |\@ctblbegin| we put +% |\begin{table}[tbp]| in it. +% \begin{macrocode} +\define@key{ctbl}{caption} {\def\@ctblcaption {#1}} +\define@key{ctbl}{cap} {\def\@ctblcap {#1}} +\define@key{ctbl}{label} {\def\@ctbllabel {#1}} +\define@key{ctbl}{pos} {\def\@ctblpos {#1} + \def\@ctblbegin{\@ctblbeg[#1]}} +\define@key{ctbl}{width} {\@ctblwidth =#1} +\define@key{ctbl}{maxwidth}{\@ctblmaxwidth =#1} +\define@key{ctbl}{botcap}[]{\def\@ctblbotcap {1}} +\define@key{ctbl}{rotate}[]{\def\@ctblrotate {sideways}} +\define@key{ctbl}{figure}[]{\def\@ctbltaborfig{figure}} +\define@key{ctbl}{center}[]{\def\@ctblalign {center}} +\define@key{ctbl}{right} []{\def\@ctblalign {flushright}} +\define@key{ctbl}{left} []{\def\@ctblalign {flushleft}} +\define@key{ctbl}{star} []{\def\@ctblstarred {*}} +\define@key{ctbl}{framerule}{\@ctblframerule =#1} +\define@key{ctbl}{framesep}{\@ctblframesep =#1} +\define@key{ctbl}{framefg}{\@ctblfgcolor#1=} +\define@key{ctbl}{framebg}{\@ctblbgcolor#1=} +% \end{macrocode} +% a caption will only be generated if the \textsl{caption} option was used: +% \begin{macrocode} +\def\@ctblCaption{ + \ifx\@ctblcap\empty\let\@ctblcap\@ctblcaption\fi + \ifx\@ctblcaption\empty\else + \caption[\@ctblcap]{\label{\@ctbllabel}\@ctblcaption} + \fi +} +\newdimen\@ctbloldsep +\newdimen\@ctbloldrule +\def\@ctblframe#1#2#3{% + \@ctbloldsep\fboxsep\fboxsep\@ctblframesep% + \@ctbloldrule\fboxrule\fboxrule\@ctblframerule% + \fcolorbox{#1}{#2}{\fboxsep\@ctbloldsep\fboxrule\@ctbloldrule #3}% +} +\newcommand{\tnote}[2][a]{% + \hbox{\@textsuperscript{\normalfont\textit{#1}}}\NN} +\newcommand{\tmark}[1][a]{% + \hbox{\@textsuperscript{\normalfont\textit{#1}}}} +\newcommand{\ctable}[4][]{ + \def\@ctbltaborfig{table} + \def\@ctblalign {center} + \def\@ctblrotate {} + \def\@ctblpos {} + \def\@ctblcaption {} + \def\@ctblcap {} + \def\@ctbllabel {} + \def\@ctblbeg {\begin{\@ctblrotate\@ctbltaborfig\@ctblstarred}} + \def\@ctblbegin {\@ctblbeg} + \def\@ctblend {\end{\@ctblrotate\@ctbltaborfig\@ctblstarred}} + \def\@ctblbotcap {} + \def\@ctblstarred {} + \definecolor{@ctblframefg}{rgb}{0,0,0} + \definecolor{@ctblframebg}{rgb}{1,1,1} + \@ctblframerule0pt + \@ctblframesep0pt + \@ctblwidth=0pt + \@ctblmaxwidth=0pt + \setkeys{ctbl}{#1} +% \end{macrocode} +% It makes no sense to use \textsl{width} together with \textsl{maxwidth} or +% \textsl{pos} together with \textsl{rotate} +% \begin{macrocode} + \ifdim\@ctblwidth=0pt\else + \ifdim\@ctblmaxwidth=0pt\else + \PackageError{ctable}{ + You may not use the width and maxwidth options together}{% + Use either width or maxwidth} + \fi + \fi + \ifx\@ctblpos\empty\else + \ifx\@ctblrotate\empty\else + \PackageError{ctable}{ + You may not use the pos and rotate options together}{% + Rotated tables and figures are always typeset on a separate page} + \fi + \fi + \newcolumntype{Y}{X}% save the X type +% \end{macrocode} +% save the table contents in a box, so we can determine its width, one box +% will contain the table typeset with the tabular environment: +% \begin{macrocode} + \sbox\ctbl@tabel{% + \newcolumntype{X}{l}% temporarily make type X = l + \@ctblframe{@ctblframefg}{@ctblframebg}{% + \begin{tabular}{#2} + #4 + \end{tabular}% + }% + } +% \end{macrocode} +% the other will get the table typeset with the tabularx environment: +% \begin{macrocode} + + \sbox\ctbl@tabelx{% + \newcolumntype{X}{Y}% restore X + \@ctblframe{@ctblframefg}{@ctblframebg}{% + \begin{tabularx}{\ifdim\@ctblwidth>0pt\@ctblwidth\else\@ctblmaxwidth\fi}{#2} + #4 + \end{tabularx}% + }% + } +% \end{macrocode} +% if no \textsl{maxwidth} was given: +% \begin{macrocode} + \ifdim\@ctblmaxwidth=0pt +% \end{macrocode} +% and also no \textsl{width}: +% \begin{macrocode} + \ifdim\@ctblwidth=0pt +% \end{macrocode} +% then use the tabular environment: +% \begin{macrocode} + \sbox{\ctbl@t}{\usebox\ctbl@tabel} + \else +% \end{macrocode} +% if width was given: use the tabularx environment +% \begin{macrocode} + \sbox{\ctbl@t}{\usebox\ctbl@tabelx} + \fi + \else +% \end{macrocode} +% with the \textsl{maxwidth} option, we check if the table, typeset with +% the tabular environment would get too wide: +% \begin{macrocode} + \ifdim\wd\ctbl@tabel>\@ctblmaxwidth +% \end{macrocode} +% if so, we use the tabularx environment: +% \begin{macrocode} + \sbox{\ctbl@t}{\usebox\ctbl@tabelx} + \else +% \end{macrocode} +% but if within limits, we use the tabular environment: +% \begin{macrocode} + \sbox{\ctbl@t}{\usebox\ctbl@tabel} + \fi + \fi +% \end{macrocode} +% the |ctbl@t| box now contains the table as we want to typeset it; +% deternmine its width: +% \begin{macrocode} + \@ctblw=\wd\ctbl@t +% \end{macrocode} +% |\@ctblbegin| is now defined as something like |\begin{table}[tbp]|. +% \begin{macrocode} + \@ctblbegin + \begin{\@ctblalign} + \begin{minipage}{\@ctblw} + \ifx\@ctblbotcap\empty\@ctblCaption\vspace{2ex}\fi + \usebox\ctbl@t % insert the tabular + \def\@ctblfootnotes{#3} + \ifx#3\empty\else % append footnotes, if any + \\ + \begin{tabularx}{\@ctblw}{r@{\,}>{\footnotesize\raggedright}X} + #3 + \end{tabularx} + \fi + \ifx\@ctblbotcap\empty\else\@ctblCaption\fi + \end{minipage} + \end{\@ctblalign} + \@ctblend +} +%</package> +% \end{macrocode} +% \Finale diff --git a/Master/texmf-dist/source/latex/ctable/ctable.ins b/Master/texmf-dist/source/latex/ctable/ctable.ins new file mode 100644 index 00000000000..9ab8dbcb217 --- /dev/null +++ b/Master/texmf-dist/source/latex/ctable/ctable.ins @@ -0,0 +1,23 @@ +% $Id: ctable.ins,v 1.3 2002/05/20 19:03:10 wybo Exp $ +\def\batchfile{ctable.ins} +\input docstrip.tex + +\keepsilent +\askforoverwritefalse + +\generate{\file{ctable.sty}{\from{ctable.dtx}{package}} + \file{ctable.tex}{\from{ctable.dtx}{driver}} +} +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space ctable.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.dtx' through pdflatex.} +\Msg{*} +\Msg{***********************************************************} + +\endinput |