% \iffalse meta-comment
%
% Copyright (C) 2001-2021 by Wybo Dekker <wybodekker@me.com>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License (LPPL), either
% version 1.3c of this license or (at your option) any later
% version.  The latest version of this license is in the file:
%
% http://www.latex-project.org/lppl.txt
%
% This work consists of the self-extracting file ctable.dtx
% Installation: see the readme section below.
%
%<*internal>
\iffalse
%</internal>
%<*readme>
# ctable
|    key | description|
|    ---:|:---|
| ctable | package for flexible key/value driven typesetting of floats|
|version | 1.34|
|   date | 2026-08-12 |
| author | Wybo Dekker|
|  email | `wybodekker@me.com`|
|license | Released under the LaTeX Project Public License v1.3c or later|
# Short description:
ctable.sty provides commands to easily typeset centered or left or right
aligned table and (multiple-)figure floats, with footnotes. Instead of an
environment, a command with 4 arguments is used; the first is optional and
is used for key,value pairs generating variations on the defaults and
offering a route for future extensions.
# Installation:
This is a self-extracting file. Install as follows:
1. Try `make help` to show this help.
2. Run `tex ctable.dtx`.
3. Run `sh make.sh`.
4. Run `make install` to install in local tree (needs sudo rights), or
5. Run `make inst` to install in your own tree.
6. Run `make zip` to create a zip file for CTAN.
7. Run `make clean` to remove all but the dtx file, README and CTAN zip.
make clean writes back any changes in files contained by ctable.dtx into it..
%</readme>
%<*make>
uudecode etc.uue
tar xf etc.taz
make
make help
%</make>
%<*etc>
begin-base64 664 etc.taz
H4sIAAAAAAAAA+z3BWxgy84uCoaxw8zMzMzMzMzMzMzMnHSYkw4zM3aYmZk5
6WSy9/nP+eHe9+6MdN5II01JS17LZbvsr2xXLRkDKxNTC2sTgP8HB/33YGVl
/osysLHQ/1f6jylWFgAGFkYmNnomFmYGVgB6BgbGbxY+/f+TTv1zuDg5Gzji
4wO4eRja/d/J/Z/m/390KImLSEvj8+AbGjiZQ9EKi4gKqEgr64nJCUjjc/Lg
G1hbQ0EJCiiJ4H+LGDkbGFqbQKlICOP/9UlM7mRuYm2Nb2GMT+NCASWv9t/Z
9m7GFFCqIopK/5Vp7ez+V7JZ2Jra4dNYuX7z/zJOQWvs7E4BJS0nJCD9X4St
7J1M3MwtjMzxaWhcDRy/H2sXE3xlEXUZ0b9FKaBUlBVFRP7f0xCXkxGhgIIS
UReQkZcWUfpWomcw+H4M8ekZrb4f6+/HBp+e6ZvH9M1j/qbM35Tlm7L8RY3w
taEgvwOkZ/3msH5z2L4p2zdl/6bs35TDEJ+B3uD7+aaM35Txm35bY2D6ixrh
MzAb/Gt1PXlhUaW/3f6nO5wkPCS09samFP+d5/QPJhSUsKKcvIi68reOgYs7
vqm1E76Ztd3344Rvbvy9Ae74FtZm+Ba23++2TvjWdmb4di7O+M52RvhOHrZG
zibutGaef9v4e1FTO0cTg2+MTNydqYnJ/8M0BfU/94KY/HuC4ntRaYFv5L41
rF0MrA2+jeDTWNg6mzgaGDlb2NnyGBo4G5nb2BmbfHsnJ8T4HdK36LeChKyw
Bo+pgbWTyT8QkxGQEvnmiajzkNl895pvJ/+y9B3A9xuthZMz2T/E/l6Mh4yY
/O8Xiv/gfq9qwWjsavG9nw4uFibOUFBE36//jvFtSNjOyMXGxNbZ4K94/n2G
ob6LhhPfyNzEyOpf+f29i1BQ/+WD879m/vdGGNjYW5s4QUHyf+/HP8D8zgTu
f2u0Iv9c5N8X6D/95vzPrP07tb9zx/j7ULE1+Xvz9f5jCoqY4a/Q8Z3+g5J+
qzHQ/hW0tS0+jSk+MTE3vqmjgdlfW0L7vfF/o/GPbPgnQn+x8XnpjE1c6Wxd
vuudkZeU4Vvs25qRo539P5PkX9J/rfKPxf6nLVcTR8P/D4z9Lf5ffP8Wc7T5
y+f/4e8/mP9c3uu7Vqm/a5X6uyCpv7V8/pvE3zb/VxGT7/r4O1f+s0r/tkb9
n43hr1I1+W5t36gbfefafwP5r6l/KFBQ/FXD/8YEErI2MbC1sDX7NyaQ0V8m
OSGJ8P9+ocY3/O5aViYm9n+1Mefv0P46b/D/OjCc8A2+m5uQsoAsjaeFPb6d
rbUHPtE3nFr4BPg07viOJvYmzkb4Ovje3vi0dP/4goL8B9b/6HAU//z0cqL2
0aJn0NGip+HQ0TIwNLKyttGhpcS3/u4BtPa2Zvj2JrZmLha2tJb2Zvi0lLTG
drYm/9T9tvot+VcXo3Uy/+eif8FN+a9y9vreRGonZw8ffJn/uFj9W/dA4j9w
+Td3rL/g5oT8R8si+if43xTfw87FEd/OzRbf2dHE5G/EbayMLRzxaey/I/77
9KWg8/rOfWqnb0EjE2pjOyMfur8PC7r/QAQK0sj+vzW7f+n9Q+X/Rvobxv+U
/kvo/1r0r9pUFBEQlhGhtTH+T6Vvd/6HEtR/BPfPBv3forW2+66nf4RKbmti
YuyE7+RibIfvaGFm7uxE8Xf4fzP+Cwb/uIj8HzH4W+1/AeI/lP/3QPxPlX+g
8R8q/xs0/qf8/4TkPzT/N5D8O3vEd4XiG3+f6o4W37X8703S78L/zxw1+m6O
zib4fzWD70b5j3X/jw3h74PGyRSfFv9fqPH/ZYFG2NHhm/V9g6X4Jyo0xOR/
3V0paP+a/8fN759KdF7/gpX6v5X996b+Xfr/0ef/cw0TI3M7/P+d4X9EYfzv
3YK/EPpHv/y+E9v/O7v1X5Y5v+NxNnFyxif8rjIJYQpCfAIefEJ6QnwaA3wa
27+4f4f3X77/kXiEf23F923OGZ8BCuovx/5q+07mdm74zuYWTn+7+vcG/oXV
PyH7q9Pif/+dmZk4O/21rpOJ8V82yeh0tQxoPAVoNGl1KDnpZLmc6Di1dIl0
KInwtcn/ftH+LlZaSjpObWdtBjp7sn/1Yvy/XLD/CxoaBsb/sRihqomj03fG
cv5jq/8Rxb8mVZxMHP/uDJz4/2ov/zkr/a/GwfmvSvtvut9BmvynF39l7F8M
A0M7138F+Peh9p9KsnbOJn+78j1kTb4vC/gu32b+KnICQqh/4//fP8+9f6PJ
/2X8/ZPP/H/1/8/G9v0BwMDMyMDAzMb2/fnX/z8TPeP//////xsjQl5WDAYK
86+UgpEQF1b8pi/fzzTEX5OsGfF/JQakvbiGEwAANOJfD+Dcpu8HAAAOqqey
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
9LHhUPHPR4fk4S9epZ+IYNusVONPLGS3fHPwLygzNOlpbChy8KZyopsioGKa
+fMasFCckVzvCmetepZEJhCkUSPfSyrbkXVUpGSOSMafnUCKUT7U0lcO7WhU
cEUHbORfchgyREq905En+GcnIy54NdbW6oVtFQqaSjdrJ5VMpTPaTJxbu0X/
0lgp4ahWfRcj1FFcy5vZgBdoGCOVQBBh1vIqUww0jkBUEIt61A3zI+lPniNl
PnylTvl0wUUjLhwtQeIjqdL+0BJrebs87NrtySX6Hb6SXnAGv+ZyBv6kfZmY
c309NIYnPsf42wcVokSgZBKtqPTJQN6H5M8jXowlovkmUAo6O5Kx+wTcAmF/
v1K3Fh/kJmPwLDE8nqFKkhi3ecjWZEPniHnls5u+dtHm18HIWx4df1q/qww/
758JTGR8hSGbKHZm5ztPiI6WjQqe7i6MJA7TCDCXBmMsKomqeB772XI2+jA+
9eKdbbff9p3pLkCwhNsejRl72ktBzZOUxVGBxUjNO7an/CBqm3eszOj8WRn1
C+dsIViwqlp6O+TR561mytzZFHVRzQu9SbCgtErn4Rt6l+1V9ypVrXtO0aMU
6Hvhu+59NCiT9dE1cFdIBs5g0IPsE/zQgQzUmKkkAZxY2DJq6E6ZPvw53NM/
5w0Bcvw/833UONlC9d8Cu0izSAySCcmgzBf4wdJhkb1rLub1gGSJDvVX8rxA
J2kDI5KpipcTSM5n+GWv6WHnxYzR9oKyn5YJOySrETfO6YiYx/depycc+tjS
J3YFT8AH4KdO3MhGzRYlIYMYOcVRZ+uHsTFV4YgU7DmCDShUHEqa8+GEQxJS
H6MPD+/JTZabf79xx6CYW3ApMK72BfcnoAp+WkUT0duNvw10602fiLgrOOtz
mtJrqDPOV8U2/LiOcPVdIPP7oe/F9VuKY9zyIpM5vUZZHESVmWbdvSWTnlqZ
krG57ywBIctiM9LEM8MaI1yolxT/fNEYMDSbE5a89Cbaok1NnzvfCwhrN28F
bBlS3ifNhInoYB7v14LCAS1cyImXPAs2771qNyz7kmnGu3vfH2+qiNMs+d9S
wnwpIaAp93Alh8eN6LP0fHlCNrZdsgnNirAs5Kac6i78dlALr09jMNN2FLkr
s+W65vLzJV5Xw8KJMQSUqIs14TxjztI6wwNCYXm46J/04NByDp8KjQ5E2nbq
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
====
%</etc>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX
\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\ifx\fmtname\nameofplainTeX
  \generate{
    \file{\jobname.sty}{\from{\jobname.dtx}{package}}
    \nopreamble
    \nopostamble
    \file{README.md}{\from{\jobname.dtx}{readme}}
    \file{etc.uue}{\from{\jobname.dtx}{etc}}
    \file{make.sh}{\from{\jobname.dtx}{make}}
  }
\fi
%</install>
%<install>\endbatchfile                                                                                       
%<*internal>
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{ctable.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2021/11/15]
%<package>\ProvidesPackage{ctable}
%<*package|driver>
    [2026-08-12 1.34 package for flexible key/value driven typesetting of floats]
%</package|driver>
%<*driver>
\documentclass{ltxdoc}
\usepackage{paralist}\setdefaultleftmargin{1em}{1em}{1em}{1em}{1em}{1em}
\usepackage[a4paper,margin=20mm,left=50mm,nohead]{geometry}
\usepackage[numbered]{hypdoc}
\usepackage{longtable}
\usepackage{\jobname}
\usepackage{fontspec}
\usepackage[final]{microtype}
\setmainfont{TeX Gyre TermesX}
\usepackage{tocloft}
\setlength\cftparskip{.5ex}
\setlength\cftbeforesecskip{.5ex}
\setlength\cftaftertoctitleskip{1ex}
\graphicspath{{./doc/}}
\definecolor{vbgreen}{rgb}{0,.6,0}
\definecolor{B}{rgb}{0.77, 0.90, 0.96}
\definecolor{Y}{rgb}{1,1,.878}
\def\REF#1{\href{http://www.ctan.org/pkg/#1}{\texttt{#1}}}
\def\isarg#1{\hskip-1em=\texttt{\textsl{#1}}\\}
\def\oarg#1{\hskip-1em\texttt{[\textsl{#1}]}}
\def\marg#1{\hskip-1em\texttt{\{\textsl{#1}\}}}
\def\arg#1{\texttt{\{\textsl{#1}\}}}
\marginparwidth25mm
\parindent0pt\parskip1ex
\let\DescribeKey\DescribeEnv
\newcommand{\ROW}[3]{\parskip0pt%
  \colorbox{#1}{%
    \parbox{.98\hsize}{%
      \rule{0pt}{1.5ex}\\%
      \parbox{.57\hsize}{\includegraphics{#2}}%
      \parbox{.43\hsize}{\centering{\includegraphics{#3}}}%
      \\\rule{0pt}{1.5ex}%
    }%
  }\par%
}
\EnableCrossrefs
\CodelineIndex
\hypersetup{
     pdftitle = ctable package for flexible key/value driven typesetting of floats
    pdfauthor = Wybo Dekker,
   pdfsubject = {Typesetting centered, right, and left aligned table and figure
                 floats, with many configuration options},
  pdfkeywords = {
                 table floats,
                 figure floats,
                 key=value options,
                 footnotes,
                 booktabs,
                 tabularx,
                 threeparttable
                },
  bookmarksopen,
  colorlinks
}
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{\jobname.dtx}
% \DoNotIndex{
% \,\\,\@ifclassloaded,\@ifpackageloaded,\@rot@twosidefalse,\@rot@twosidetrue,
% \@textsuperscript,\addlinespace,\addtocounter,\AtBeginDocument,\begin,
% \begingroup,\def,\define@key,\definecolor,\edef,\else,\empty,\end,\endgroup,
% \endinput,\expandonce,\fboxrule,\fboxsep,\fcolorbox,\fi,\hbox,\hsize,
% \if@twoside,\ifdim,\ifpdf,\ifx,\label,\left,\let,\long,\makeatletter,
% \makeatother,\MessageBreak,\NC@find@X,\newbox,\newcolumntype,\newcommand,
% \newdimen,\newif,\noexpand,\normalfont,\PackageError,\PackageWarningNoLine,
% \parindent,\pos,\raggedleft,\raggedright,\relax,\RequirePackage,\rot@LR,
% \sbox,\strut,\textit,\textsuperscript,\undefined,\usebox,\vskip,\wd}
%
% \title{\textsf{ctable} --- package for flexible key/value driven typesetting of floats}
% \date{\large\fileversion\quad\filedate}
% \author{Wybo Dekker\thanks{Email: wybodekker@me.com}}
% \maketitle
% \begin{abstract}\noindent
% The \texttt{ctable} package provides a \texttt{ctable}
% command for the typesetting of table and figure floats. You will
% not need to type the usual nested begin...end sequences, as
% \texttt{ctable} is a command, not an environment. \texttt{ctable}
% has only 4 arguments, but the optional first one may hold many
% \textsl{key=value} pairs and makes \texttt{ctable} very flexible
% and extensible. It uses Simon Fear's \REF{booktabs} package for
% better vertical spacing around horizontal rules and it provides
% facilities for making table footnotes.
% \end{abstract}
% \tableofcontents
%
% \section{Purpose} The |ctable| package lets you easily typeset captioned
% table and figure floats with optional footnotes. Both caption and
% footnotes will normally be forced within the width of the table.
%
% If the width of the table is specified, then \REF{tabularx} will be used
% to typeset it, and one or more |X| column specifiers should be specified.
% Otherwise tabular will be used.
%
% This package defines the commands \cs{ctable}, \cs{tnote} and
% \cs{tmark}, and four \cs{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 \REF{array} and \REF{booktabs}
% packages, all commands from those packages are available as well.
%
% Note that, in line with the comments that Simon Fear made
% describing his \REF{booktabs} package, vertical rules for column
% separation can be produced with \cs{ctable}, but no provisions are
% made to have them make contact with horizontal rules.
%
% \section{Usage}
% \DescribeMacro{\ctable}\oarg{key=value,...}\arg{coldefs}\arg{foottable}\arg{rows}\\
% typesets the \textsl{rows} in a table float with column specifiers
% \textsl{coldefs} like in the |tabularx| environment. \textsl{foottable}
% consists of zero or more instances of the \cs{tnote} command described
% in section \ref{other}. The table properties are specified with
% \textsl{key=value} pairs described in section \ref{options}.
%
% \DescribeMacro{\setupctable}\marg{key=value....}\\
% sets \cs{ctable} defaults, either in the preamble or in the body.
% \section{Options}\label{options}
% Options are given as key=value pairs, separated by comma's.
% Extra comma's, including any behind the last pair, don't hurt.
% Arguments to option should be put between braces if they contain
% comma's or equals signs.
% Currently the following option keys have been defined:
% 
% \DescribeKey{bgopacity}\isarg{...}
% Sets the opacity of the table's background color, where 1 is 100\% opaque
% (the default), and 0 is completely transparent. One application is with
% watermarking: most watermarking packages print their watermark on the
% background. |ctable|'s background color, which is opaque by default, may
% make the watermark (partially) invisible. You can avoid this by setting
% the |bgopacity| option to a value lower than 1. Note that this works only
% in PDF mode, a warning is issued otherwise.\\
% Note: there are two limitations to transparency setting:
% \begin{compactenum}
% \item it works only in PDF mode: so it works in pdflatex and lualatex,
% but is disabled in xelatex.
% \item it disables transparency features in the tikz package; therefore,
% ctable checks if the tikz package is loaded and if so, disables its own 
% transparency with a warning. That helps only if you load tikz
% \textit{before} ctable.
% \end{compactenum}
% 
% \DescribeKey{botcap}
% put the caption at the bottom of the float instead of on top of it.
% See also: |topcap|, |sidecap|.
%
% \DescribeKey{caption}\isarg{...}
% table caption; the braces are needed only if your caption contains a
% comma or an equals sign.
%
% \DescribeKey{cap}\isarg{...}
% for a short caption to go to the \cs{listoftables}. Without the |cap|
% option, the full caption will go into the \cs{listoftables}. If |cap| is
% given an empty value, \textsl{and you have loaded the |caption| package},
% no entry in the \cs{listoftables} will be made. This may be useful, for
% example, with the |continued| option.
%
% \DescribeKey{captionskip}\isarg{...}
% moves the caption relative to the table; the default is |0ex|, which puts
% captions at their default \LaTeX\ positions. For the standard \LaTeX\
% classes this means that a top caption's baseline at
% |1ex| above the top rule position of the table and a bottom caption's
% baseline at |4ex| below the bottom rule position. These dimensions may be
% different for other classes or when other packages are included. The
% |memoir| class and the |caption| package, for example, both typeset
% captions differently, and the combination of both even differs from each
% alone.\footnote{I did some measurements on the whitespace between the
% caption and the top of the table with and without using the caption
% package and/or the memoir class: standard LaTeX: 1ex; memoir:
% 2.32ex; caption: 2.69ex; both memoir and caption: 2.68ex. For the
% distances between bottom caption baselines and the table bottom I found,
% respectively: 3.90ex, 3.41ex, 3.72ex and 3.74ex } Keep in mind that when
% you use the |caption| package in the |memoir| class, |memoir|'s caption
% commands are suspended and |caption|'s commands must be used.
%
% \DescribeKey{captionsleft} This option is defined for
% \cs{setupctable} only, and it is effective only where the |sideways| option
% is used. After |\setupctable{captionsleft}| all tables typeset with the
% |sideways| option will have their captions at the left.
%
% \DescribeKey{captionsright} This option is defined for
% \cs{setupctable} only, and it is effective only where the |sideways| option
% is used. After |\setupctable{captionsright}| all tables typeset with the
% |sideways| option will have their captions at the right.
%
% \DescribeKey{captionsinside}
% This option is defined for \cs{setupctable} only, it is the default, and it is effective
% only where the |sideways| option is used. After
% |\setupctable{captionsinside}| all tables typeset with the |sideways|
% option will have their captions at the left in one-sided documents. In
% twosided documents, captions will be on the left for odd-numbered pages
% and on the right for even-numbered pages. This is the default. 
%
% \DescribeKey{center}
% center the table in the available text width; this is the default.
% See also: |left|, |right|.
%
% \DescribeKey{continued}\isarg{...}
% if used, the table will be numbered the same as the previous table. If
% used without an argument, the caption will be suffixed with `
% (continued)', if used with an argument, the suffix will be the argument.
%
% \DescribeKey{doinside}\isarg{...}
% command to be run inside, just before the tabular or tabularx
% environment. You can use this, for example, for the adjustment of the
% font size with \cs{small}.
%
% \DescribeKey{figure}
% produce a figure float instead of a table float. See also: |table|.
%
% \DescribeKey{footerwidth}\isarg{...}
% Footnotes are typeset within the width of the table. When you use the
% |mincapwidth| option, presumably because the table is very narrow, footnotes
% are given the same width as the caption. With small footnotes this may not
% be what you want; this option can be used to give the footnotes their own width. 
% Without an argument, they will be typeset within the width of the table. 
% 
% \DescribeKey{framebg}\isarg{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).
%
%
% \DescribeKey{framefg}\isarg{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).
%
%
% \DescribeKey{framerule}\isarg{...}
% draw a frame around the table with the given rule thickness. The default
% is |0pt|, so that no frame will be seen.
%
%
% \DescribeKey{framesep}\isarg{...}
% set the distance between the frame and the table to the given dimension.
% The default is |0pt|.
%
%
% \DescribeKey{label}\isarg{...}
% labels the float with \cs{label}.
%
% \DescribeKey{left}
% left align the table in the available text width. See also: |center|, |right|.
%
% \DescribeKey{maxwidth}\isarg{...}
% 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.
%
% \DescribeKey{mincapwidth}\isarg{...}
% sets the minimum width of the float. Without this option, the width is
% set to that of the tabular, and the caption and footnotes are typeset
% within that width. This may be a problem with very narrow tables;
% |mincapwidth| can then be used to give the float a minimum width. The
% tabular will be centered in it. If you don't want the footnotes to be affected
% see the |footerwidth| option.
%
% \DescribeKey{nonotespar}
% typeset footnotes in a table; this is the default. See also: |notespar|.
%
% \DescribeKey{nosideways}
% undo the sideways option. See also: |sideways|.
%
% \DescribeKey{nostar}
% use the un-starred versions of the |table| and |figure| environments;
% this is the default
%
% \DescribeKey{nosuper}
% in the footnote table, typeset footnote markers on the line, instead of
% superscripted.
%
% \DescribeKey{notespar}
% typeset footnotes in a paragraph instead of in a table.
%
% \DescribeKey{pos}\isarg{...}
% float position, default: |tbp|.
%
% \DescribeKey{right}
% right align the table in the available text width.
%
% \DescribeKey{sidecap}
% put the caption at the side of the float. Currently, this works only if
% you have loaded the |memoir| class, otherwise an error message is
% generated. The parameters for the caption, such as its vertical
% positioning, width and more, must be set with the appropriate |memoir|
% commands. See also: |botcap|, |topcap|.
%
% \DescribeKey{sideways}
% rotate table or figure by 90 degrees anticlockwise and put it on a
% separate page. With the twoside option for the standard \LaTeX\ document
% classes, rotation will be -90 on even pages, unless the options
% |captionleft| or |captionsright| are used. If you use this option, the
% |pos| option is not allowed. See also: |nosideways|, |captionsinside|.
%
% \DescribeKey{star}
% use the starred versions of the |table| and |figure| environments, which
% place the float over two columns when the |twocolumn| option or the
% \cs{twocolumn} command is active. See also: |nostar|.
%
% \DescribeKey{super}
% in the footnote table, typeset footnote markers as superscripts; this is
% the default. See also: |nosuper|.
%
% \DescribeKey{table}
% produce a table float (this is the default). See also: |figure|.
%
% \DescribeKey{topcap}
% put the caption top of the float; this is the default. See also: |botcap|, |sidecap|.
%
% \DescribeKey{width}\isarg{...}
% \REF{tabularx} will be used to typeset the table at the specified
% width\,---\,one or more |X| column specifiers must be provided.
%
% \section{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,
% typesetting the table at the text width with the \REF{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{Tables wider than the text width}
% When you make a table wider than \cs{textwidth}, it will extend in the right margin. 
% If it is a large table, occupying a whole page, you can use the geometry package
% and surround your ctable call with |\newgeometry{width=...,margin=...}| and \cs{restoregeometry}.
% However, both geometry commands imply \cs{clearpage}, so your table will appear on an otherwise 
% empty page. 
%
% Alternatively, you can center the table on the paper, extending in both margins, by using the 
% option |doinside=\hspace*{<dimen>}| with an appropriate negative |dimen>|.
%
% \section{Setting option defaults: setupctable}
% Every call of \cs{ctable} resets the options to their defaults before evaluating the
% first (optional) argument. So if you make two ctables: |\ctable[left,...| and
% |\ctable[...|, the first will be left-aligned on the page, but the second, lacking
% the |left| option, will be centered, because that is the default. If you want all
% your tables left-aligned, it's more practical to change the default by calling
% \DescribeMacro{\setupctable}
% |\setupctable{left}|, either in the preamble or somewhere in the body. In latter
% case only tables following the call will have their defaults changed. \par
% \cs{setupctable} can set the defaults for all options except (of course) |caption|,
% |cap|, and |label|. Actually, the initial option defaults are set by
% calling \cs{setupctable} as follows:
% \begin{verbatim}
% \setupctable{
%   captionskip=0pt,        framerule=0pt,    nostar,
%   center,                 framesep=0pt,     pos=tbp,
%   continued=(continued),  maxwidth=0pt,     super,
%   doinside={},            mincapwidth=0pt,  table,
%   framebg=1 1 1,          nonotespar,       topcap,
%   framefg=0 0 0,          nosideways,       width=0pt
% }
% \end{verbatim}
% \section{Other commands}\label{other}
% \DescribeMacro{\tnote}\oarg{label}\arg{footnote text}\\
% places {\footnotesize\textsuperscript{\normalfont\textit{label}}\,footnote text}
% under the table.
% This command can only be used in \cs{ctable}'s third argument, that
% is: the foottable argument 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|.
% The footnotes are placed under the table, without a rule.
% You therefore probably will want to use the \cs{LL} (last line)
% command if you use footnotes.
% \par
% \DescribeMacro{\tmark}\oarg{label}
% places the superscripted label in the table. It is equivalent with |$^{label}$|.
% The label is optional, the default label is a single $a$.
% \cs{tmark} may be used in captions, but only \textit{without} an argument.
% \par
% The newline generating commands are a combination of
% \cs{tabularnewline} and zero or one of \REF{booktabs} \cs{toprule},
% \cs{midrule} or \cs{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. Is an alias for \cs{tabularnewline}
% \par
% \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.
% Is an alias for \cs{toprule}
% \par
% \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.
% Is an alias for |\tabularnewline\midrule|
% \par
% \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.
% Is an alias for |\tabularnewline\bottomrule|
% \par
% These macros can be used outside \cs{ctable} constructs, that is:
% in tabulars, longtables, et cetera.
% \par
% Finally, for completeness, here are some of \REF{booktabs}' commands
% that may be useful:
% \par
% \DescribeMacro{\toprule} |\toprule[<wd>]|
% where |<wd>| is the optional thinkness of the rule.
% \par
% \DescribeMacro{\midrule} |\midrule[<wd>]|.
% \par
% \DescribeMacro{\bottomrule} |\bottomrule[<wd>]|.
% \par
% \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|.
% \par
% \DescribeMacro{\morecmidrules} \cs{morecmidrules}
% must be used to separate two successive cmidrules.
% \par
% \DescribeMacro{\addlinespace} |\addlinespace[<wd>]|
% inserts extra space between rows.
% \par
% \DescribeMacro{\specialrule}
% |\specialrule{<wd>}{<abovespace>}{<belowspace>}|.
% \par
% See the \REF{booktabs} documentation for details.
% \newpage
% \section{Examples}
% Table~\ref{nowidth} is an example taken from the related package
% \REF{threeparttable} by Donald Arseneau, with an extra footnote.
% It was typeset with:
% \color{vbgreen}
% \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   = nowidth,
%    pos     = h
% ]{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}
% \color{black}
% \ctable[
%    cap     = The Skewing Angles,
%    caption = The Skewing Angles ($\beta$) for
%              $\fam0 Mu(H)+X_2$ and $\fam0 Mu(H)+HX$~\tmark,
%    label   = nowidth,
%    pos     = h
% ]{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
% }
% Table~\ref{width} is an example with a width specification,
% taken from the \REF{tabularx} documentation, with the vertical rules
% removed. 
% By using the trimming parameters of the \REF{booktabs} \cs{cmidrule}
% command, some of the horizontal splitting was regained.
% The |left| option left aligns the table. It was typeset with:
% \color{vbgreen}
% \begin{verbatim}
% \ctable[
%    caption = Example with a specified width of 100mm,
%    label   = width,
%    width   = 100mm,
%    pos     = ht,
%    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}
% \color{black}
% \ctable[
%    caption = Example with a specified width of 100mm,
%    label   = width,
%    width   = 100mm,
%    pos     = ht,
%    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
% }
%
% 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. For a
% small example, which also shows how you can simplify the construction of
% figure arrays, see subsection~\ref{figureexample} on
% page~\pageref{figureexample}.
%
% \section{Option examples}
% In the following, small examples will be shown illustrating the effect of
% options. In the left column the relevant part of the source is shown, in the
% right column you see the result. In most cases you see a standard example on a
% light yellow background, followed by one or more variations on a light blue
% background. Where necessary, the example will show boxes to indicate the page
% and the text body.
%
% \subsection{\ttfamily\bfseries center, left, right}
% These options align the float in the page; the default is |center|:
% \medskip\\
% \ROW{Y}{s02k}{02k}
% \ROW{B}{s02l}{02l}
% \ROW{B}{s02m}{02m}
% 
% \subsection{\ttfamily\bfseries super, nosuper}
% Footnote markers in |ctable| are typeset superscripted by default. Use the
% |nosuper| option to place them on the base line:
% \medskip\\
% \ROW{Y}{s07a}{07a}
% \ROW{B}{s07b}{07b}
% 
% \subsection{\ttfamily\bfseries notespar, nonotespar}
% By default, footnotes in |ctable| are typeset in a table, one line per note. 
% This corresponds with the |nonotespar| option.You can also typeset them in a paragraph,
% one after the other, by using the |notespar| option: 
% \medskip\\
% \ROW{Y}{s12a}{12a}
% \ROW{B}{s12b}{12b}
% 
% \subsection{\ttfamily\bfseries continued}
% The |continued| option suffixes the caption with ` (continued)', and lowers the table
% number by one, so that it obtains the same number as the previous table.
% This option can be given an argument to replace the default suffix:
% \medskip\\
% \ROW{Y}{s13a}{13a}
% \ROW{B}{s13b}{13b}
% \ROW{B}{s13c}{13c}
% 
% \subsection{\ttfamily\bfseries mincapwidth}
% |ctable| forces caption and footnotes to stay within the width of the table.
% Sometimes, however, tables are so narrow, that this is not really what you want.
% In such cases, use the |mincapwidth| option to give caption and footnotes some
% extra room:
% \medskip\\
% \ROW{Y}{s05a}{05a}
% \ROW{B}{s05b}{05b}
% \medskip
% You can set |mincapwidth| to a large value, say \cs{hsize}, if you want a one-line
% caption. Note, however, that this may influence the horizontal positioning of
% the table: values larger than \cs{hsize} will move a centered table out of the
% center, a value of \cs{hsize} will prevent the |left| and |right| options to do
% their work, because the table is already captured between the left and right
% margins. When footnotes are small, you may wish to undo the effect of the
% |mincapwidth| option on them:
% \medskip\\
% \ROW{B}{s05c}{05c}
% \medskip
% 
% \subsection{\ttfamily\bfseries maxwidth}
% 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,
% typesetting the table at the text width with the \REF{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.
% \medskip\\
% \ROW{Y}{s06a}{06a}
% \ROW{B}{s06b}{06b}
% 
% \subsection{\ttfamily\bfseries framerule}
% The following examples show the use of frames and backgrounds. Every table
% is typeset by |ctable| with a frame around it, but the frame is, by default,
% drawn with a zero width line, and is therefore invisible. You can make it
% visible by either changing the linewidth to a positive value or by giving it a
% background color, which will be used to fill the frame.
% 
% Here is a simple table without a frame, followed by one with a red, |1pt| thick
% frame:
% \medskip\\
% \ROW{Y}{s08a}{08a}
% \ROW{B}{s08b}{08b}
% \medskip
% As you see, the frame fits closely to the first (\cs{FL}) and last (\cs{LL}) table
% lines. This can be a reason to either remove those lines, or to introduce some
% whitespace between the frame and the table with the |framesep| option:
% \medskip\\
% \ROW{B}{s09b}{09b}
% \medskip
% And finally, we could also frame the table by giving it a, say, yellow backgound
% instead of a red frame line, or even do both:
% \medskip\\
% \ROW{Y}{s10a}{10a}
% \ROW{B}{s10b}{10b}
% 
% \newpage
% \subsection{\ttfamily\bfseries captionskip}
% The distance between a top caption and the table is \texttt{2ex},
% but it can be varied with \texttt{captionskip}:
% \medskip\\
% \ROW{Y}{s03a}{03a}
% \ROW{B}{s03b}{03b}
% \medskip
% This works for bottom caption, too:
% \medskip\\
% \ROW{Y}{s04a}{04a}
% \ROW{B}{s04b}{04b}
% 
% \subsection{\ttfamily\bfseries figure, botcap}\label{figureexample}
% By default, |ctable| generates a table float, but with the |figure| option, a
% figure float is generated instead. The caption stays on top, so if you are
% accustomed to have bottom caption for your figures, you will probably also need
% the |botcap| option:
% \medskip\\
% \ROW{Y}{s01a}{01a}
% \ROW{B}{s01b}{01b}
% 
% \newpage
% \subsection{\ttfamily\bfseries doinside}
% The argument of doinside is supposed to be a command to be run inside,
% just before the tabular or tabularx environment. You can use this, for
% example, for the adjustment of the font size with \cs{small}:
% \medskip\\
% \ROW{Y}{s14a}{14a}
% Put your descriptive text here
% \StopEventually{^^A
% \newpage
% \section{History}
% \begin{longtable}{@{}p{8mm}p{127mm}@{}}
% 1.00 & 2000-06-01\\
%      & - first release.\\
% 1.01 & 2001-03-17\\
%      & - making use of booktabs package\\
% 1.02 & 2002-06-24\\
%      & - using keyval to reduce args to 4\\
% 1.03 & 2002-07-16\\
%      & - many syntactic corrections, thanks to Johannes Braams\\
% 1.04 & 2003-08-11\\
%      & - caption, if empty, will not be typeset\\
%      & - rotate option added\\
%      & - star option added to use table* and figure*\\
%      & - environments\\
% 1.05 & 2003-10-03\\
%      & - maxwidth option added\\
% 1.06 & 2004-03-20\\
%      & - left, right and center options added\\
%      & - frame{sep,rule,fg,bg} options added\\
%      & - error in width-setting corrected\\
% 1.06a& 2004-04-01\\
%      & - made setting fboxsep and fboxrule only temporary\\
%      & - removed superfluous space after tabulars\\
% 1.06b& 2004-06-19\\
%      & - added several \% at eol to remove superfluous whitespace occurring sometimes\\
% 1.07 & 2005-08-09\\
%      & - added option sideways, option rotate now obsolete\\
%      & - added option captionskip\\
% 1.08 & 2006-04-10\\
%      & - standardized file setup following dtxtut.pdf\\
%      & - mincapwidth option added\\
%      & - moved newdimen definition outside ctable macro\\
% 1.09 & 2007-03-04\\
%      & - added option nosuper\\
%      & - corrected incorrect positioning when table is wider than mincapwidth\\
% 1.10 & 2007-08-17\\
%      & - footnote markers now stay superscript with nosuper\\
%      & - documentation: added many examples for the options\\
%      & - corrected some unwanted white space in captions\\
%      & - caption package included to correct booktabs errors in caption position\\
%      & - captionskip option redefined: 0pt value now corresponds to LaTeX default\\
% 1.11 & 2007-09-07\\
%      & - added some percent signs at EOL to prevent whitespace\\
%      & - removed xspace usage - caused overfull badness\\
% 1.12 & 2008-04-12\\
%      & option notespar added\\
% 1.13 & 2008-05-01\\
%      & - cap option with empty argument will not be inserted in lot/lof\\
%      & - added option continued, for continuation tables\\
% 1.14 & 2009-09-15\\
%      & - nosuper propagation to later tables prohibited\\
%      & - added option doinside\\
%      & - use of (obsolete) carom.sty for docs discontinued\\
%      & - empty labels not created\\
%      & - newcolumntype warnings removed\\
%      & - caption package not needed anymore\\
% 1.15 & 2009-09-17\\
%      & - removed whitespace before tables\\
%      & - corrected marginpars in the documentation\\
% 1.16 & 2010-06-26\\
%      & - option cap={} did not suppress lot/lof entry\\
%      & - notespar option now generates fully justified notes\\
% 1.17 & 2010-10-30\\
%      & - doinside option propagated in subsequent ctable calls\\
% 1.18 & - 2011-04-15\\
%      & - added setupctable for option defaults\\
%      & - added complement for several options (topcap, nosideways, et cetera)\\
% 1.19 & 2011-05-01\\
%      & - sideways option did not work anymore; corrected\\
% 1.20 & 2011-08-24\\
%      & - added options captionsleft, captionsright, captionsinside\\
% 1.21 & 2011-09-05\\
%      & - better documentation for sideways, captionsleft/right/inside options\\
% 1.22 & 2012-05-25\\
%      & - allow empty lines in last (tabular) argument\\
%      & - corrected error from hyperref's nameref calls (thanks Marco Daniel!)\\
% 1.23 & 2012-05-28\\
%      & - footerwidth option added\\
% 1.24 & - 2013-04-28\\
%      & - require xcolor instead of color\\
%      & - added option bgopacity\\
%      & - added option sidecap (for memoir only)\\
% 1.25 & 2013-05-24\\
%      & - url's to CTAN corrected\\
% 1.26 & 2013-06-15\\
%      & - footerwidth option was inactive when notespar option was active\\
% 1.27 & - 2013-12-19\\
%      & - label option did not work with side caption\\
%      & - disable transparency with warning if tikz package loaded\\
% 1.28 & 2014-02-20\\
%      & - added percent characters at EOLs causing whitespace\\
% 1.29 & 2014-04-20\\
%      & - reorganized inst script\\
% 1.30 & 2015-08-29\\
%      & - tikz' transparency got broken when tikz loaded after ctable\\
%      & - removed overfull hboxes from documentation\\
% 1.31 & 2015-10-03\\
%      & - documentation: comments about tmark in captions\\
%      & - documentation: more info about caption skips\\
%      & - use expandonce from etoolbox\\
%      & - use AtBeginDocument, not AtEndPreamble from etoolbox (problems with tikz)\\
% 1.32 & 2025-07-10\\
%      & - help argument missing in PackageError calls\\
%      & - simultaneous use of pos and sideways options incorrectly tested\\
%      & - now contained in 1 self-extracting file\\
% 1.33 & 2025-10-22\\
%      & - missing args inside AtBeginDocument corrected\\
% 1.34 & 2026-08-12\\
%      & - simplified self extraction\\
%      & - Makefile rewritten\\
% \end{longtable}
% \newpage
% \PrintIndex
% }
% \section{Implementation}
% \subsection{Initialization}
%     \begin{macrocode}
%<*package>
\RequirePackage{ifpdf,etoolbox,xcolor,xkeyval,array,tabularx,booktabs,rotating}
%    \end{macrocode}
% The transparency package works only in pdf mode, and if the tikz package is not loaded;
% otherwise define a dummy \cs{transparent} and issue a warning.
%    \begin{macrocode}
\ifpdf
  \@ifpackageloaded{tikz}{
    \PackageWarningNoLine{ctable}{
      Transparency disabled: incompatible with tikz package
    }
    \def\transparent#1{}
  }{
    \RequirePackage{transparent}
  }
\else
  \PackageWarningNoLine{ctable}{\MessageBreak
    Transparency disabled: pdfTeX is not running in PDF mode
  }
  \def\transparent#1{}
\fi
%    \end{macrocode}
% We need to know if the user has loaded tikz after ctable. If so, we have 
% loaded the transparent package already, which then will disturb the tikz
% definitions, so we must quit with an error message.
% Some warnings depend on whether the caption package is loaded or not.
% Here a flag is set to remember that.
%    \begin{macrocode}
\newif\if@CTcaptionloaded
\AtBeginDocument{%
  \@ifpackageloaded{tikz}{%
    \@ifpackageloaded{transparent}{%
      \PackageError{ctable}{You must load ctable after tikz}{}%
    }{}%
  }{}%
  \@ifpackageloaded{caption}{\@CTcaptionloadedtrue}{\@CTcaptionloadedfalse}%
}
\def\NN{\tabularnewline}
\def\FL{\toprule}
\def\ML{\NN\midrule}
\def\LL{\NN\bottomrule}
\def\@dfltCTfgcolor#1 #2 #3={\definecolor{@dfltCTframefg}{rgb}{#1,#2,#3}}
\def\@dfltCTbgcolor#1 #2 #3={\definecolor{@dfltCTframebg}{rgb}{#1,#2,#3}}
\def\@CTfgcolor#1 #2 #3={%
  \definecolor{@CTframefg}{rgb}{#1,#2,#3}
  \def\@CTfgactual{@CTframefg}}
\def\@CTbgcolor#1 #2 #3={%
  \definecolor{@CTframebg}{rgb}{#1,#2,#3}
  \def\@CTbgactual{@CTframebg}}
\def\@CTtextsuperscript#1{%
  \ifx\@CTsuper\@CTtrue\@textsuperscript{#1}\else{\footnotesize#1}\fi
}
%    \end{macrocode}
% define a true and a false value
%    \begin{macrocode}
\def\@CTtrue{1}
\def\@CTfalse{0}
%    \end{macrocode}
% normally we do nothing special inside the float, but that can be changed with the doinside option
%    \begin{macrocode}
\def\@CTdoinside{\relax}
%    \end{macrocode}
% Need three booleans to remember:
%  if we use tabularx,
%  if we are running in the memoir class,
%    \begin{macrocode}
\newif\if@CTusex
\newif\if@CTinmemoir
\@ifclassloaded{memoir}{\@CTinmemoirtrue}{\@CTinmemoirfalse}
%    \end{macrocode}
% Need lots of dimens and their defaults
%    \begin{macrocode}
\newdimen\@CTframesep         \newdimen\@dfltCTframesep
\newdimen\@CTframerule        \newdimen\@dfltCTframerule
\newdimen\@CTwidth            \newdimen\@dfltCTwidth
\newdimen\@CTcaptionskip      \newdimen\@dfltCTcaptionskip
\newdimen\@CTmaxwidth         \newdimen\@dfltCTmaxwidth
\newdimen\@CTmincapwidth      \newdimen\@dfltCTmincapwidth
\newdimen\@CTfooterwidth      \newdimen\@dfltCTfooterwidth
\newdimen\@CTw % the final width
\newdimen\@CTfloatwidth
\newdimen\@CToldsep
\newdimen\@CToldrule
%    \end{macrocode}
%    Allocate box registers so that we can determine the widths of the
%    tables
%    \begin{macrocode}
\newbox\CT@t          % tabular saved and measured here
%    \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 |\@CTbegin| we put
% |\begin{table}[tbp]| in it.
%    \begin{macrocode}
\define@key{suCT}{bgopacity}{\def\@dfltCTbgopacity{#1}}
\define@key{suCT}{botcap}[]{\let\@dfltCTbotcap\@CTtrue}
\define@key{suCT}{captionsinside}[]{\def\rot@LR{-1}
                                      \if@twoside\@rot@twosidetrue
                                      \else\@rot@twosidefalse\fi}
\define@key{suCT}{captionsleft}[]{\@rot@twosidefalse\def\rot@LR{-1}}
\define@key{suCT}{captionsright}[]{\@rot@twosidefalse\def\rot@LR{0}}
\define@key{suCT}{captionskip}{\@dfltCTcaptionskip=#1}
\define@key{suCT}{center}[]{\let\@dfltCTalign\centering}
\define@key{suCT}{continued}{\def\@dflttextcontinued{#1}}
\define@key{suCT}{doinside}{\def\@dfltCTdoinside{#1}}
\define@key{suCT}{figure}[]{\def\@dfltCTtaborfig{figure}}
\define@key{suCT}{framebg}{\@dfltCTbgcolor#1=}
\define@key{suCT}{framefg}{\@dfltCTfgcolor#1=}
\define@key{suCT}{framerule}{\@dfltCTframerule=#1}
\define@key{suCT}{framesep}{\@dfltCTframesep=#1}
\define@key{suCT}{left}[]{\let\@dfltCTalign\raggedright}
\define@key{suCT}{maxwidth}{\@dfltCTmaxwidth=#1}
\define@key{suCT}{mincapwidth}{\@dfltCTmincapwidth=#1}
\define@key{suCT}{footerwidth}[-1pt]{\@dfltCTfooterwidth=#1}
\define@key{suCT}{nonotespar}[]{\let\@dfltCTnotespar\@CTfalse}
\define@key{suCT}{nosideways}[]{\let\@dfltCTsideways\empty}
\define@key{suCT}{nostar}[]{\def\@dfltCTstarred{}}
\define@key{suCT}{nosuper}[]{\let\@dfltCTsuper\@CTfalse}
\define@key{suCT}{notespar}[]{\let\@dfltCTnotespar\@CTtrue}
\define@key{suCT}{pos}{\def\@dfltCTpos{#1}}
\define@key{suCT}{right}[]{\let\@dfltCTalign\raggedleft}
\define@key{suCT}{sideways}[]{\def\@dfltCTsideways{sideways}}
\define@key{suCT}{star}[]{\def\@dfltCTstarred{*}}
\define@key{suCT}{super}[]{\let\@dfltCTsuper\@CTtrue}
\define@key{suCT}{table}[]{\def\@dfltCTtaborfig{table}}
\define@key{suCT}{topcap}[]{\let\@dfltCTbotcap\@CTfalse}
\define@key{suCT}{width}{\@dfltCTwidth=#1}
\newcommand{\setupctable}[1]{\setkeys{suCT}{#1}}
\setupctable{
  bgopacity=1,
  captionskip=0pt,
  center,
  continued=(continued),
  doinside={},
  footerwidth=0pt,
  framebg=1 1 1,
  framefg=0 0 0,
  framerule=0pt,
  framesep=0pt,
  maxwidth=0pt,
  mincapwidth=0pt,
  nonotespar,
  nosideways,
  nostar,
  super,
  table,
  topcap,
  width=0pt,
}
\define@key{CT}{bgopacity}{\def\@CTbgopacity{#1}}
\define@key{CT}{botcap}[]{\let\@CTbotcap\@CTtrue}
\define@key{CT}{captionskip}{\@CTcaptionskip=#1}
\define@key{CT}{caption}{\def\@CTcaption{#1}}
\define@key{CT}{cap}{\def\@CTcap{#1}}
\define@key{CT}{center}[]{\let\@CTalign\centering}
\define@key{CT}{continued}[\@dflttextcontinued]{\def\@CTcontinued{#1}}
\define@key{CT}{doinside}{\def\@CTdoinside{#1}}
\define@key{CT}{figure}[]{\def\@CTtaborfig{figure}}
\define@key{CT}{framebg}{\@CTbgcolor#1=}
\define@key{CT}{framefg}{\@CTfgcolor#1=}
\define@key{CT}{framerule}{\@CTframerule=#1}
\define@key{CT}{framesep}{\@CTframesep=#1}
\define@key{CT}{label}{\def\@CTlabel{#1}}
\define@key{CT}{left}[]{\let\@CTalign\raggedright}
\define@key{CT}{maxwidth}{\@CTmaxwidth=#1}
\define@key{CT}{mincapwidth}{\@CTmincapwidth=#1}
\define@key{CT}{footerwidth}[-1pt]{\@CTfooterwidth=#1}
\define@key{CT}{nonotespar}[]{\let\@CTnotespar\@CTfalse}
\define@key{CT}{nosideways}[]{\let\@CTsideways\empty}
\define@key{CT}{nostar}[]{\def\@CTstarred{}}
\define@key{CT}{nosuper}[]{\let\@CTsuper\@CTfalse}
\define@key{CT}{notespar}[]{\let\@CTnotespar\@CTtrue}
\define@key{CT}{pos}{\def\@CTpos{#1}\def\@CTbegin{\@CTbeg[#1]}}
\define@key{CT}{right}[]{\let\@CTalign\raggedleft}
\define@key{CT}{sidecap}[]{\let\@CTbotcap\undefined}
\define@key{CT}{sideways}[]{\def\@CTsideways{sideways}}
\define@key{CT}{star}[]{\def\@CTstarred{*}}
\define@key{CT}{super}[]{\let\@CTsuper\@CTtrue}
\define@key{CT}{table}[]{\def\@CTtaborfig{table}}
\define@key{CT}{topcap}[]{\let\@CTbotcap\@CTfalse}
\define@key{CT}{width}{\@CTwidth=#1}
%    \end{macrocode}
% A caption will only be generated if the \textsl{caption} option was used, with a
% non-empty value. If so, it goes in the lot/lof, unless the \textsl{cap} option 
% specified a different (probably shorter) value for it. A \textsl{cap} option with
% an empty value inhibits a tof/lof entry.
% The \cs{expandonce} trick below is from Marco Daniel.
% It expands the arguments of \cs{caption}
% so that the hyperref command \cs{nameref} works OK.
% See http://tex.stackexchange.com/questions/57396/
% Note that, in captions, |tmark| may only be used without its optional argument.
%    \begin{macrocode}
\def\@CTCaption{
   \ifx\@CTcaption\empty\else
      \def\@CTcaptionarg{\ifx\@CTlabel\empty\else\label{\@CTlabel}\fi
         \@CTcaption\ \@CTcontinued\strut}
      \begingroup
        \ifx\@CTcap\empty
          \edef\x{\endgroup\noexpand\caption[]{\expandonce\@CTcaptionarg}}
        \else
        \edef\x{\endgroup\noexpand\caption[\expandonce\@CTcap]%
                                          {\expandonce\@CTcaptionarg}}
        \fi
      \x
   \fi
}
%    \end{macrocode}
% Need to redefine X columntype, but the array package would generate a warning.
% So first set the type to be redefined to \cs{undefined} to suppress the warning.
% Save the standard X type once in the new type Y
%    \begin{macrocode}
\newcolumntype{Y}{X}
\def\@CTXcolumntype#1{%
  \let\NC@find@X\undefined
  \newcolumntype{X}{#1}%
}
\long\def\@CTframe#1#2#3{%
   \@CToldsep\fboxsep\fboxsep\@CTframesep%
   \@CToldrule\fboxrule\fboxrule\@CTframerule%
   \transparent{\@CTbgopacity}%
   \fcolorbox{#1}{#2}{\fboxsep\@CToldsep\fboxrule\@CToldrule\transparent{1}#3}%
}
\newcommand{\tnote}[2][a]{%
   \ifx\@CTnotespar\@CTtrue%
     \@CTtextsuperscript{\normalfont\textit{#1}}\,#2
   \else%
     \hbox{\@CTtextsuperscript{\normalfont\textit{#1}}}&#2\NN
   \fi
}
\newcommand{\tmark}[1][a]{%
   \hbox{\textsuperscript{\normalfont\textit{#1}}}}
\newdimen\@CTcurftwidth
\newcommand{\ctable}[4][]{%
   \let\@CTtaborfig  \@dfltCTtaborfig
   \let\@CTalign     \@dfltCTalign
   \let\@CTsideways  \@dfltCTsideways
   \let\@CTcontinued \empty
   \let\@CTpos       \@dfltCTpos
   \let\@CTcaption   \empty
   \let\@CTcap       \undefined
   \let\@CTlabel     \empty
   \let\@CTbotcap    \@dfltCTbotcap
   \let\@CTstarred   \@dfltCTstarred
   \let\@CTsuper     \@dfltCTsuper
   \let\@CTnotespar  \@dfltCTnotespar
   \let\@CTdoinside  \@dfltCTdoinside
   \let\@CTbgopacity \@dfltCTbgopacity
   \@CTframerule     \@dfltCTframerule
   \@CTcaptionskip   \@dfltCTcaptionskip
   \@CTframesep      \@dfltCTframesep
   \@CTwidth         \@dfltCTwidth
   \@CTmaxwidth      \@dfltCTmaxwidth
   \@CTmincapwidth   \@dfltCTmincapwidth
   \@CTfooterwidth   \@dfltCTfooterwidth
   \def\@CTfgactual {@dfltCTframefg}%
   \def\@CTbgactual {@dfltCTframebg}%
   \def\@CTbeg      {\begin{\@CTsideways\@CTtaborfig\@CTstarred}}%
   \def\@CTbegin    {\@CTbeg}%
   \def\@CTend      {\end{\@CTsideways\@CTtaborfig\@CTstarred}}%
   \setkeys{CT}{#1}%
%    \end{macrocode}
% Make the short caption equal to the caption if it has not been defined
%    \begin{macrocode}
   \ifx\@CTcap\undefined\let\@CTcap\@CTcaption\fi
%    \end{macrocode}
% Issue a warning if the short caption is empty and the caption package is not loaded
%    \begin{macrocode}
   \ifx\@CTcap\empty
     \if@CTcaptionloaded\else
       \PackageWarningNoLine{ctable}
          {\MessageBreak An empty cap= option prevents lot/loc entry only
           \MessageBreak if the caption package is loaded!
          }
     \fi
   \fi
%    \end{macrocode}
% Currently, the sidecap option can only be used from within the memoir class; 
% here we test if memoir is loaded:
%    \begin{macrocode}
   \if@CTinmemoir\else
      \ifx\@CTbotcap\undefined
         \PackageError{ctable}%
            {sidecap option not available here}%
            {\MessageBreak You can, currently, use the sidecap option only with
             \MessageBreak memoir documents. Use topcap or botcap only.
            }
      \fi
   \fi
%    \end{macrocode}
% It makes no sense to use \textsl{width} together with \textsl{maxwidth} or
% \textsl{pos} together with \textsl{sideways}
%    \begin{macrocode}
   \ifdim\@CTwidth=0pt\else
      \ifdim\@CTmaxwidth=0pt\else
         \PackageError{ctable}
           {width and maxwidth options are mutually exclusive}
           {\MessageBreak You may not use the width and maxwidth options together.
            \MessageBreak Use either width or maxwidth.
           }
      \fi
   \fi
   \ifx\@CTpos\undefined\else
      \ifx\@CTsideways\empty\else
      \PackageError{ctable}
         {pos and sideways options are mutually exclusive}
         {\MessageBreak You may not use the pos and sideways options together.
          \MessageBreak Rotated tables and figures appear on a separate page.
         }
      \fi
   \fi
%    \end{macrocode}
% It makes no sense to label a captionless table, because the label can't
% be placed, leaving the user wondering why references to the table get a ??
%    \begin{macrocode}
   \ifx\@CTcaption\empty
      \ifx\@CTlabel\empty\else
         \PackageError{ctable}
           {label option used in captionless table}
           {\MessageBreak You may not label a captionless table.
            \MessageBreak Such a label can't be referenced.
           }
      \fi
   \fi
%    \end{macrocode}
% save the table contents in a box, so we can determine its width,
% initially, save the table typeset with the tabular environment:
%    \begin{macrocode}
   \sbox\CT@t{%
      \@CTXcolumntype{l}% temporarily make  type X = l
      \@CTframe{\@CTfgactual}{\@CTbgactual}{%
         \@CTdoinside
         \begin{tabular}{#2}
            #4%
         \end{tabular}%
      }%
   }%
%    \end{macrocode}
% then look if we'll need the tabularx environment:
%    \begin{macrocode}
   \@CTusexfalse
   \ifdim\@CTmaxwidth=0pt
      \ifdim\@CTwidth=0pt
      \else
         \@CTusextrue
      \fi
   \else
      \ifdim\wd\CT@t>\@CTmaxwidth
         \@CTusextrue
      \fi
   \fi
%
% if so, replace tabular with tabularx:
%
   \if@CTusex
      \sbox\CT@t{%
         \@CTXcolumntype{Y}% restore X
         \@CTframe{\@CTfgactual}{\@CTbgactual}{%
            \@CTdoinside
            \begin{tabularx}{\ifdim\@CTwidth>0pt\@CTwidth\else\@CTmaxwidth\fi}{#2}
               #4%
            \end{tabularx}%
         }%
      }%
   \fi
%    \end{macrocode}
% the |CT@t| box now contains the table as we want to typeset it;
% determine its width:
%    \begin{macrocode}
   \@CTw=\wd\CT@t
%    \end{macrocode}
% Now find the width of the float, |\@CTfloatwidth|; everything in it will
% be centered within that width.
% Normally we'll use the width of the table, |\@CTw|, but if the
% mincapwidth, |\@CTmincapwidth| was set wider than the table, that will be used:
%    \begin{macrocode}
   \@CTfloatwidth=\ifdim\@CTmincapwidth>\@CTw
      \@CTmincapwidth
   \else
      \@CTw
   \fi
%    \end{macrocode}
% |\@CTbegin| is now defined as something like |\begin{table}[tbp]|.
%    \begin{macrocode}
   \@CTbegin
      \ifx\@CTcontinued\empty\else\addtocounter{\@CTtaborfig}{-1}\fi
      \@CTalign
      \begin{minipage}{\@CTfloatwidth}\parindent0pt
         \ifx\@CTbotcap\@CTfalse\@CTCaption\vskip\@CTcaptionskip\fi
         \ifx\@CTbotcap\undefined%
             \begin{sidecaption}[\@CTcap]{\@CTcaption}[\@CTlabel]
         \fi
         \centering{\usebox\CT@t}% insert the tabular
         \def\@CTfootnotes{#3}%
         \ifx#3\empty\else{% append footnotes, if any
%    \end{macrocode}
% Footnotes: if the |footerwidth| is 0pt (the default), typeset the footer as
% wide as the caption (which may be wider than the table because of the
% |mincapwidth| option); if it is -1pt (because |footerwidth| was set without an argument)
% make it as wide as the table; otherwise, give it the width set by the
% |footerwidth| option.
%    \begin{macrocode}
            \@CTcurftwidth=\ifdim\@CTfooterwidth=-1pt\@CTw\else
                                \ifdim\@CTfooterwidth=0pt\hsize\else
                                \@CTfooterwidth\fi\fi
            \footnotesize
            \ifx\@CTnotespar\@CTtrue%
               \\[.2ex]
               \begin{minipage}{\@CTcurftwidth}%
                  #3%
               \end{minipage}%
            \else%
               \\
               \begin{tabularx}{\@CTcurftwidth}{r@{\,}>{\raggedright}X}
                  #3%
               \end{tabularx}%
            \fi
         }
         \fi
         \ifx\@CTbotcap\undefined\end{sidecaption}\fi
         \ifx\@CTbotcap\@CTtrue\vskip\@CTcaptionskip\@CTCaption\fi
      \end{minipage}
   \@CTend
}
\endinput
%</package>
%    \end{macrocode}
%\Finale
