\documentclass[german, american, parskip=half, pagesize=auto]{scrartcl}

\usepackage{fixltx2e}
\usepackage{etex}
\usepackage{xspace}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{babel}
\usepackage[svgnames]{xcolor}
\usepackage{listings}
\usepackage{microtype}
\usepackage{hyperref}

\newcommand*{\mail}[1]{\href{mailto:#1}{\texttt{#1}}}
\newcommand*{\pkg}[1]{\textsf{#1}}
\newcommand*{\env}[1]{\texttt{#1}}

\addtokomafont{title}{\rmfamily}

\lstset{%
  language=[LaTeX]TeX,%
  columns=fullflexible,%
  numbers=left,%
  basicstyle=\ttfamily,%
  keywordstyle=\color{Navy},%
  commentstyle=\color{DimGray},%
  numberstyle=\footnotesize\color{SlateGray}%
}

\title{The \pkg{ftcap} package}
\author{Hans Friedrich Steffani\\\mail{hans.steffani@e-technik.tu-chemnitz.de}}
\date{1999/10/16}


\begin{document}

\maketitle

\begin{quote}
  \footnotesize
  Copyright \textcopyright\ 1999 Hans Friedrich Steffani

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\@.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; see the file COPYING\@.  If not, write to
  the Free Software Foundation, Inc., 59 Temple Place~-- Suite 330,
  Boston, MA 02111--1307, USA.
\end{quote}


\noindent
Lamport places the \verb|\caption| below tables and figures. That is ok
for figures but not for tables, as tables may be longer than one
page. In this case the reader has to search for the \verb|\caption|
until  he finds it after a couple of pages. If you have the
\verb|\caption| at  the top of the table there is no such problem.
And as the \verb|\caption|  of a table should always be at the same place,
we have to place the  \verb|\caption| \emph{always} at the top of
the table  If you want \verb|\caption| above tabular, you cannot
use the normal  \verb|\caption|, because the spaces above and below
\verb|\caption| are wrong.   Some stys (e.\,g. \pkg{topcapt.sty}) recommend
to have a special makro like  \verb|\topcaption| for captions above
an object. I prefer to have ONE  caption and changing the spaces
whenever we are within a \env{table}  environment. That's what this sty
does.

\begin{otherlanguage}{german}
  Lamport plaziert seine \verb|\caption| ueber Tabellen und Bildern.
  Bei Bildern ist das ok. Bei mehrseitigen Tabellen muss man
  allerdings nach der \verb|\caption| suchen, so dass es guenstiger
  erscheint, die \verb|\caption| \emph{oberhalb} der Tabelle zu
  setzen. Und das sollte natuerlich um der Einheitlichkeit willen
  dann auch bei kuerzeren Tabellen so sein.
  Wenn die \verb|\caption| bei Tabellen ueber der Tabelle, bei
  Bildern aber  daruntersteht, braucht man verschiedene Werte fuer
  \verb|\abovecaptionskip| und \verb|\belowcaptionskip|.
  Gelegentlich werden dazu zwei makros, \verb|\tablecaption| und
  \verb|\figurecaption| oder auch \verb|\topcaption| vorgeschlagen,
  aber das finde ich umstaendlich und fehleranfaellig.
  \verb|\caption| ist \verb|\caption| und der Nutzer soll sich nicht
  um Details  kuemmern. Daher also:
\end{otherlanguage}

\begin{lstlisting}
% from book.cls
%% \renewenvironment{figure}
%%                 {\@float{figure}}
%%                {\end@float}

%% \newenvironment{table}
%%                {\@float{table}}
%%                {\end@float}

\newcommand{\@ldtable}{}
\let\@ldtable\table
\renewcommand{\table}{%
                 \setlength{\@tempdima}{\abovecaptionskip}%
                 \setlength{\abovecaptionskip}{\belowcaptionskip}%
                 \setlength{\belowcaptionskip}{\@tempdima}%
                 \@ldtable}%
\end{lstlisting}


\section*{List of Changes}

\begin{otherlanguage}{german}
  \begin{labeling}[\hspace{\labelsep}--]{Version: 1.4}
  \item[Version: 1.4] Die optionalen Parameter von \env{table} sollten nun gehen
  \item[Version: 1.3] Einige Versuche rueckgaengig gemacht
  \item[Version: 1.2] Es heisst nun \verb|\ProvidesPackage{ftcap}| ohne \verb|sty|\\
    ausserdem stimmt das Datum
  \item[Version: 1.1]
  \end{labeling}
\end{otherlanguage}



\end{document}
