Article 11107 of comp.text.tex:
Path: sifon!newsflash.concordia.ca!utcsri!utnut!cs.utexas.edu!zaphod.mps.ohio-state.edu!sdd.hp.com!caen!batcomputer!cornell!uw-beaver!cs.ubc.ca!unixg.ubc.ca!reg.triumf.ca!asnd
From: asnd@reg.triumf.ca (Donald Arseneau)
Newsgroups: comp.text.tex
Subject: Re: captions
Date: 2 Apr 1993 15:17 PST
Organization: TRIUMF: Tri-University Meson Facility
Lines: 89
Distribution: world
Message-ID: <2APR199315172615@reg.triumf.ca>
References: <1pflc0$sip@msuinfo.cl.msu.edu>
NNTP-Posting-Host: reg.triumf.ca
News-Software: VAX/VMS VNEWS 1.41    

In article <1pflc0$sip@msuinfo.cl.msu.edu>, sven@jacobs2.css.msu.edu (Sven Bohm) writes...
>What I would like to do is to have my table captions lined up with the  
>left edge of the table (for a centered table). It should look something  
>like:
> 
>	---------------------------------
>	Table 1.1: Blah Blah Blah
>	---------------------------------
>	First	Second	Third

Here is what I use myself for that.  It also solves the perennial footnote
to a table problem.

% threeparttable.sty  (Donald Arseneau)
% \begin{threeparttable}
% \caption{...}
% tabular environment& notes identified with \tnote{a}
% \begin{tablenotes}
% \item [a] the first note
% \end{tablenotes}
% \end{threeparttable}

\expandafter\edef\csname TPT@catcodes\endcsname
  {\catcode`\noexpand\@=\the\catcode`\@\catcode`\noexpand\*=\the\catcode`\*
  \let \csname TPT@catcode\endcsname \noexpand\UndeFyneD}
\catcode`\@=11
\catcode`\*=11

\newbox\@tempboxb

\def\threeparttable{% 3 parts: title, tabular environment, notes
\par
\vbox\bgroup\sloppy
\def\@captype{table}%
\topsep\z@\hbox\bgroup
\let\@caption\TPT@caption
\let\LA@endtabular\endtabular
\def\endtabular{\LA@endtabular\aftergroup\TPT@endtabular}%
\let\LA@endtabular*\endtabular*%
\def\endtabular*{\LA@endtabular*\aftergroup\TPT@endtabular}%
}%

\def\endthreeparttable{\egroup\global\@ignoretrue}

\def\TPT@endtabular\@checkend#1{\@checkend{#1}\egroup % end \hbox
\setbox\@tempboxb\lastbox   % grab tabular environment and measure it
\hsize\wd\@tempboxb \linewidth\hsize
\ifx\TPT@docapt\@und*fined\else
  \TPT@docapt \global\let\TPT@docapt\@und*fined \vskip.2\baselineskip
\fi \par \box\@tempboxb \parindent=1em}

\def\TPT@caption#1[#2]#3{\gdef\TPT@docapt{\@caption{#1}[#2]{#3}}\ignorespaces}

\def\tablenotes{\list{}{\topsep.2\baselineskip \partopsep\z@
\itemsep.2\baselineskip \parsep\z@ \itemindent 1.5em\leftmargin\z@
\labelwidth 1em\labelsep .5em}}

\def\tnote#1{\rlap{$^{\rm #1}$}}% change \rm if using NFSS

\let\endtablenotes\endlist

\TPT@catcodes % restore catcode of @ and * to starting value

\endinput

Example:

Here is some paragraph before the table.  Note that the Table does not
float unless put inside a true table environment.
Example:

\begin{threeparttable}
\caption[The Skewing Angles ($\beta$) for $\rm Mu(H)+X_2$ and
   $\rm Mu(H)+HX$]{The Skewing Angles ($\beta$) for $\rm Mu(H)+X_2$ and
   $\rm Mu(H)+HX$~\tnote{a}}
\begin{tabular}{rlcc}
\hline
&   & $\rm H(Mu)+F_2$ & $\rm H(Mu)+Cl_2$ \\
\hline
&$\beta$(H)  & $80.9^\circ\tnote{b}$ & $83.2^\circ$ \\
&$\beta$(Mu) & $86.7^\circ$ & $87.7^\circ$ \\
\hline
\end{tabular}
\begin{tablenotes}
\item[a] for the abstraction reaction, $\rm Mu+HX \rightarrow MuH+X$.
\item[b] 1 degree${} = \pi/180$ radians.
\end{tablenotes}
\end{threeparttable}




