Revision 9eba034662db17ae6f414fac22b555ec7891a35a authored by hieuhoang1972 on 25 July 2007, 10:05:34 UTC, committed by hieuhoang1972 on 25 July 2007, 10:05:34 UTC
git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@1435 1f5c12ca-751b-0410-a591-d2e778427230
1 parent 1b09cb1
Raw File
subfig.dtx
% \iffalse % meta-comment
% subfig.dtx
% Sub-float macros for use with the LaTeX figure/table environments.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Copyright © 2003, 2004, 2005 Steven Douglas Cochran.
% 
% This work (the subfig package) may be distributed and/or modified 
% under the conditions of the LaTeX Project Public License, either 
% version 1.3 of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% This work has the LPPL maintenance status "author-maintained".
% 
% This Current Maintainer of this work is Steven Douglas Cochran.
%
% This work consists of all files listed under "MANIFEST" in the
% README file distributed with the subfig package.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% @LaTeX-style-file{
%%    author     = "Steven Douglas Cochran",
%%    version    = "1.3",
%%    date       = "2005/07/05",
%%    time       = "04:19:08",
%%    filename   = "subfig.sty",
%%    address    = "Digital Mapping Laboratory, 
%%                  School of Computer Science
%%                  Carnegie-Mellon University, 
%%                  5000 Forbes Avenue
%%                  Pittsburgh, PA 15213-3890
%%                  USA",
%%    telephone  = "+1 412.268.5654",
%%    fax        = "+1 412.268.5576",
%%    email      = "cochran@ieee.org",
%%    codetable  = "ISO/ASCII",
%%    keywords   = "LaTeX, float, sub-float, continued figure",
%%    supported  = "yes",
%%    abstract   = "LaTeX package for providing support for the
%%                  inclusion of small, `sub', figures and tables.  It
%%                  simplifies the positioning, captioning and
%%                  labeling of them within a single figure or table
%%                  environment.  In addition, this package allows
%%                  such sub-captions to be written to the List of
%%                  Figures or List of Tables if desired."
%% }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \fi
%
% \catcode`\^=14                ^ We will use a ^ for a comment.
%
% \def\filename{subfig.dtx}
% \def\fileversion{version 1.3}
% \def\filedate{2005/06/28}	^ Last code change
% \def\docdate{2005/07/05}	^ Last documentation change
%
% \CheckSum{1183}
%
% \iffalse
%<*driver>
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesFile{subfig.dtx}
\documentclass[a4paper]{ltxdoc}
\usepackage{hyperref}
\makeatletter
  \@twosidetrue
  \def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
  \def\cmd@to@cs#1#2{#2}
  \DeclareRobustCommand\cs[1]{\textbackslash #1}
  %
  % Widen the standard ltxdoc pagesize, just a little.
  %
  \setlength\topmargin        {0pt}
  \setlength\headheight       {12pt}
  \setlength\headsep          {24pt}
  \setlength\@tempdima        {\paperheight}
  \addtolength\@tempdima      {-2in}
  \addtolength\@tempdima      {-\headheight}
  \addtolength\@tempdima      {-\headsep}
  \divide\@tempdima           \baselineskip
  \@tempcnta                  \@tempdima
  \setlength\textheight       {\@tempcnta\baselineskip}
  %
  \setlength\textwidth        {\paperwidth}
  \addtolength\textwidth      {-3in}
  \addtolength\textwidth      {-20pt}
  \setlength\oddsidemargin    {1in}
  \addtolength\textwidth      {20pt}
  \setlength\evensidemargin   {\oddsidemargin}
  %
  \setlength\marginparsep     {8pt}
  \setlength\marginparwidth   {2in}
\makeatother
\RequirePackage[format=hang,justification=RaggedRight]{caption}[2005/06/26]
\RequirePackage[format=default,justification=justified,%
                lofdepth=2,lotdepth=2,subrefformat=parens]{subfig}[2005/06/28]
% Create map and submap floats for example
\usepackage{float}
\newfloat{map}{tbph}{lom}
\restylefloat*{map}
\floatstyle{plain}
\floatname{map}{Map}
\captionsetup[map]{position=top}
\newsubfloat[position=top,listofformat=simple]{map}
\newcommand{\listofmaps}{\listof{map}{List of Maps}}
\setcounter{lomdepth}{2}
% Other packages
\usepackage{color}
\definecolor{lightgray}{gray}{.8}
\IfFileExists{booktabs.sty}{%
  \usepackage{booktabs}%
}{%
  \PackageWarning{subfig}%
      {booktabs.sty is missing.\MessageBreak
      I'm emulating the needed commands, but you should\MessageBreak
      install it for better results.}%
  \let\toprule\hline
  \let\midrule\hline
  \let\bottomrule\hline
}
% Handy temp values.
\newbox{\tempbox}
\newdimen{\tempdima}
\newdimen{\tempdimb}
% Make a SubFloat environment.
\makeatletter
\newbox\sf@box
\newenvironment{SubFloat}[2][]%
  {\def\sf@one{#1}%
   \def\sf@two{#2}%
   \setbox\sf@box\hbox
     \bgroup}%
  {  \egroup
   \ifx\@empty\sf@two\@empty\relax
     \def\sf@two{\@empty}
   \fi
   \ifx\@empty\sf@one\@empty\relax
     \subfloat[\sf@two]{\box\sf@box}%
   \else
     \subfloat[\sf@one][\sf@two]{\box\sf@box}%
   \fi}
\makeatother
% Adjust internal stuff
\makeatletter
\IfFileExists{multirow.sty}{%
  \usepackage{multirow}%
}{%
  \PackageWarning{subfig}%
      {multirow.sty is missing.\MessageBreak
      I'm emulating the needed command, but you should\MessageBreak
      install it for better results.}%
    \def\multirow##1##2##3{%
      \@tempcnta=##1%
      \@tempdima\@tempcnta\ht\@arstrutbox
      \advance\@tempdima\@tempcnta\dp\@arstrutbox
      \ifnum\@tempcnta<0%
        \@tempdima=-\@tempdima
      \fi
      \if*##2
        \setbox0\vtop to \@tempdima{%
          \vfill
          \raggedright
          \hbox{\strut##3\strut}%
          \vfill}%
      \else
        \setbox0\vtop to \@tempdima{%
          \hsize##2
          \@parboxrestore
          \vfill
          \raggedright
          \strut##3\strut\par
          \vfill}%
      \fi
      \ht0\z@
      \dp0\z@
      \ifnum\@tempcnta<0%
        \advance\@tempdima-\dp\@arstrutbox
      \else
        \@tempdima=\ht\@arstrutbox
      \fi
      \leavevmode
      \vtop{%
        \vskip-\@tempdima
        \box0%
        \vss}}}
\makeatother
% Penalty Settings
\setlength\hfuzz{100pt}  \setlength\vfuzz{100pt}    \clubpenalty=10000
\widowpenalty=10000      \displaywidowpenalty=5000  \brokenpenalty=5000
\begin{document}
  \pagestyle{empty}
  \DocInput{subfig.dtx}
\end{document}
%</driver>
%
%<*ltxdoc>
\AtBeginDocument{%
%  \OnlyDescription % comment out for implementation details
  \EnableCrossrefs
  \RecordChanges
  \CodelineIndex
}
\AtEndDocument{
  \newpage
  \PrintChanges
  \newpage
  \PrintIndex
}
%</ltxdoc>
%
% \fi
% \newcommand*{\Lopt}[1]{\textsf{#1}}         ^ Package options
% \newcommand*{\Lfile}[1]{\texttt{#1}}        ^ File names
% \newcommand*{\Lpack}[1]{\textsf{#1}}        ^ Package names
% \newcommand*{\Lenv}[1]{\texttt{#1}}         ^ Environment names
% \newcommand*{\Lcount}[1]{\textsl{\small#1}} ^ Counter names
% \newcommand*{\Lif}[1]{\textsc{\bf#1}}       ^ \if names
% \newcommand*{\Lvar}[1]{``#1''}              ^ variable names
% \newcommand*{\Lkv}[1]{`#1'}                 ^ keyword/value names
%
% ^^
% ^^ NOTE: Hacks added to make the final format (if any)
% ^^       are marked with the comment ``^finalhack''.
% ^^
%
% \changes{v1.0}{21 August 2003}{Created (based on the \Lpack{subfigure}
% package.} 
% \changes{v1.2}{28 January 2004}{Changed the names \Lkv{topskip} to
% \Lkv{farskip}, and \Lkv{bottomskip} to \Lkv{nearskip}.  Added
% a hyphen to ``sub-float'' and ``sub-caption'' where they occurs as
% regular text to match the usage in The \LaTeX\ Companion. Also fixed
% bug in the alternative code if the \Lpack{multirow} package is not found.}
% \changes{v1.3}{26 March 2004}{Lots of documentation changes.  I hope
% that they are improvements!}
%
% \DoNotIndex{\@@@,\@auxout,\@bsphack,\@classoptionslist,\@currbox}
% \DoNotIndex{\@currext,\@currname\@dblarg,\@dottedtocline,\@ehd,\@empty}
% \DoNotIndex{\@esphack,\@expandtwoargs,\@firstofone,\@firstoftwo}
% \DoNotIndex{\@floatpenalty,\@for,\@gobble,\@ifnextchar}
% \DoNotIndex{\@ifpackageloaded,\@ifstar,\@ifundefined,\@largefloatcheck}
% \DoNotIndex{\@latex@error,\@minipagefalse,\@namedef,\@nameuse,\@ne}
% \DoNotIndex{\@onlypreamble,\@parboxrestore,\@ptionlist,\@removeelement}
% \DoNotIndex{\@secondoftwo,\@setminipage,\@undefined}
% \DoNotIndex{\@unprocessedoptions,\@unusedoptionlist,\@xaddvskip}
% \DoNotIndex{\addcontentsline,\addtocounter,\advance,\alph,\arabic}
% \DoNotIndex{\AtBeginDocument,\AtEndOfPackage,\begin,\begingroup}
% \DoNotIndex{\bfseries,\bgroup,\box,\cmd,\csname,\CurrentOption,\def}
% \DoNotIndex{\define@key,\do,\dp,\edef,\egroup,\else,\end,\endcsname}
% \DoNotIndex{\endgroup,\endinput,\expandafter,\fi,\footnotesize,\gdef}
% \DoNotIndex{\global,\hb@xt@,\hbox,\hrule,\hss,\ht,\if@minipage,\ifcase}
% \DoNotIndex{\ifdim,\ifnum,\ifx,\ignorespaces,\InputIfFileExists}
% \DoNotIndex{\itshape,\l@addto@macro,\label,\Large,\large,\lastskip}
% \DoNotIndex{\leaders,\leavevmode,\let,\long,\m@ne,\mdseries}
% \DoNotIndex{\NeedsTeXFormat,\newcounter,\newdimen,\newif,\newlabel}
% \DoNotIndex{\newskip,\next,\noexpand,\normalsize,\numberline,\or,\p@}
% \DoNotIndex{\PackageError,\PackageWarning,\pageref,\par,\parbox}
% \DoNotIndex{\protect,\protected@edef,\protected@write,\ProvidesPackage}
% \DoNotIndex{\ref,\refstepcounter,\relax,\RequirePackage,\rmfamily}
% \DoNotIndex{\romannumeral,\scriptsize,\scshape,\setbox,\setcounter}
% \DoNotIndex{\sffamily,\slshape,\small,\space,\string,\strip@period}
% \DoNotIndex{\the,\thepage,\thr@@,\ttfamily,\tw@,\typeout,\upshape}
% \DoNotIndex{\value,\vbox,\vrule,\vskip,\vtop,\wd,\xdef,\z@}
%
% ^ Allow a little more freedom in typesetting floats.
% \setcounter{topnumber}{8}
% \def\topfraction{.95}
% \setcounter{bottomnumber}{8}
% \def\bottomfraction{.95}
% \setcounter{totalnumber}{8}
% \def\textfraction{.05}
% \def\floatpagefraction{.95}
% \setcounter{dbltopnumber}{8}
% \def\dbltopfraction{.95}
% \def\dblfloatpagefraction{.9}
%
% ^  Useful hacks
% \def\eg{{\em e.g.}}
% \def\ie{{\em i.e.}}
% \def\etc{{\em etc.}}
%
% ^ Add some space above any footnotes.
% \skip\footins=1.5\baselineskip
%
% ^  Setup for illustrations.
% \def\sc{Short caption.}
% \def\lc{Non fuit causa cur postularet. Qui hoc intellegi 
%         potest? Naevio neque ex societatis ratione neque
%         privatim quicquam debuit Quinctius.\par
%         Quis huic rei testis est? Idem qui acerrimus 
%         adversarius; in hanc rem te, te inquam, testem, 
%         Naevi, citabo.}
% \def\lcX{Non fuit causa cur postularet. Qui hoc intellegi 
%         potest? Naevio neque ex societatis ratione neque
%         privatim quicquam debuit Quinctius.\par
%         Quis huic rei testis est? Idem qui acerrimus 
%         adversarius; in hanc rem te, te inquam, testem, 
%         Naevi, citabo.\par
%         Annum et eo diutius post mortem C. Quincti fuit 
%         in Gallia tecum simul Quinctius.}
% \def\b{\fboxsep=-\fboxrule
%        \fbox{\hbox to 2.0in{\vbox to 2mm{\vfil\null}\hfil}}}
% \def\B#1#2{%
%        \fcolorbox{black}{#1}{%
%            \hbox to 1.9in{\vbox to 4mm{\vss\hbox to 1.9in{%
%            \hfil[\texttt{#2}]\hfil}\vss}}}}
% \def\g{\hspace{.5in}}
% 
%  ^  General drop for text.
%  \def\drop#1#2{\smash{\lower#1\hbox{#2}}}
%
% \makeatletter
%   ^ Remove some space above minipage footnotes.
%   \skip\@mpfootins=2.6\p@
%
%   ^ Define a raggedright for use in tabular's.
%   \def\rr{%
%     \@rightskip\@flushglue
%     \rightskip\@rightskip
%     \leftskip\z@
%     \parindent\z@}
%   
%   ^ Turn off any list entries by ``eating'' any \addcontentsline stuff.
%   \def\eatthree#1#2#3{}^
%   \def\turnofflistentry{\let\addcontentsline=\eatthree}
%
%   ^ Special \footnotetext command for placing footnotes in strange places.
%   \def\tabFootnotetext#1{^
%     \vbox{^
%       \vskip\skip\@mpfootins
%       \footnotesize
%       \@parboxrestore
%      \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}^
%       \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces#1\strut}}}
% 
%   ^ Templates for showing options.
%   \newcommand{\figfont}[3]{%
%     \captionsetup[subfigure]{#2=#3}^
%     \subfloat[{Option [\texttt{#2=#3}].}]^
%              [\sc]{\label{#1}\B{white}{#2=#3}}}
%   \newcommand{\figfontlist}[3]{^
%     \captionsetup[subfigure]{#2={#3}}^
%     \subfloat[{Option [\texttt{#2=\{#3\}}].}]^
%              [\sc]{\label{#1}\B{white}{#2=\{#3\}}}}
%   \newcommand{\figfontlistS}[3]{^
%     \captionsetup[subfigure]{#2={#3}}^
%     \subfloat[{Option [\texttt{#2=\{#3\}}].}]^
%              [\sc]{\label{#1}\B{lightgray}{#2=\{#3\}}}}
%   \newcommand{\figshape}[3][\@empty]{^
%     \begin{figure}^
%       \centering
%       \captionsetup[subfigure]{#3}^
%       \subfloat[][\sc]{\b}\g\subfloat[][\lc\label{#2b}]{\b}^
%       \ifx\@empty#1\relax
%         \caption{Options [\texttt{#3}].}^
%       \else
%         \caption[Options [\texttt{#1}{].}]{Options [\texttt{#3}].}^
%       \fi
%       \label{#2}^
%     \end{figure}}
%
% \makeatother
%
% \title{The \Lpack{Subfig} Package\footnote{This paper documents
%        the \Lpack{subfig} package \fileversion, last revised 
%        \filedate.}\\[10pt]}
% \author{Steven Douglas Cochran\\[15pt]
%         Digital Mapping Laboratory, School of Computer Science \\
%         Carnegie-Mellon University, 5000 Forbes Avenue \\
%         Pittsburgh, PA 15213--3890 \\
%         USA\\[15pt]
%         \texttt{cochran@ieee.org}\\
%         \texttt{sdc@cs.cmu.edu}}
% \date{\docdate}
%
% \addtolength\oddsidemargin{-.5in}
% \maketitle\thispagestyle{empty}
%
% \begin{abstract}
% \noindent
% This article documents the \LaTeX\ package `\Lpack{subfig}', which
% provides support for the inclusion of small, `sub', figures and
% tables.  It simplifies the positioning, captioning and labeling of
% such objects within a single \Lenv{figure} or \Lenv{table} environment
% and to continue a \Lenv{figure} or \Lenv{table} across multiple pages.
% In addition, this package allows such sub-captions to be written to a
% List-of-Floats page as desired.  The `\Lpack{subfig}' package requires
% the `\Lpack{caption}' package by H.A. Sommerfeldt and replaces the
% older `\Lpack{subfigure}' package.
% \end{abstract}
% 
% \cleardoublepage
% \addtolength\oddsidemargin{.5in}
% \setcounter{page}{1}
% \pagenumbering{roman}
% \pagestyle{myheadings}
% \markboth{The \Lpack{Subfig} Package}{\slshape\rightmark}
% \renewcommand{\sectionmark}[1]{\markright{\thesection\quad#1}}
%
% \tableofcontents
% \listoffigures
% \listoftables
% \listofmaps
% 
% \cleardoublepage
% \setcounter{page}{1}
% \pagenumbering{arabic}
% \section{Introduction}
% 
% This package provides support for the manipulation and reference of
% small or `sub' floats within a single floating (\eg, \Lenv{figure} or
% \Lenv{table}) environment\footnote{Section~\ref{sec:customfloat}
% describes how to add support for additional \Lenv{float}
% environments.}  It is convenient to use this package when your
% sub-floats are to be separately captioned, referenced, or when such
% sub-captions are to be included on a List-of-Floats page.
% 
% This package is a replacement for the \Lpack{subfigure} package, from
% which it was derived.  However, the new \Lpack{subfig} package is not
% completely backward compatible (see section~\ref{sec:back-compat}.
% Therefore, a new name was called for.  The newer package is smaller
% and easier to use than the older package, however, it now uses the
% following additional packages:
% \begin{tabbing}
%   \qquad $\bullet\space$ \Lpack{ragged2e} \= (required) \kill
%   \qquad $\bullet\space$ \Lpack{caption}  \> (required)\\
%   \qquad $\bullet\space$ \Lpack{everysel} \> (optional)\\
%   \qquad $\bullet\space$ \Lpack{keyval}   \> (required)\\
%   \qquad $\bullet\space$ \Lpack{ragged2e} \> (optional)
% \end{tabbing}
% It will work without the \Lpack{ragged2e} and \Lpack{everysel}
% packages if you do not use the following justification options:
% \Lkv{Center}, \Lkv{RaggedRight} and \Lkv{RaggedLeft}.  The other
% justification options \Lkv{center}, \Lkv{raggedright} and 
% \Lkv{raggedleft} will work without the above two packages.
%
% {\scshape\bf Note}: If the \Lpack{ragged2e} package is present, than
% the \Lpack{caption} package will load it and it will, in turn, load
% the \Lpack{everysel} package.  This happens whether or not you will
% be using the justification options that require it.  If it cannot
% find the \Lpack{ragged2e} package, than the \Lpack{caption} package
% will print a message that \Lkv{RaggedRight}, \etc\ will not be
% available.
% 
% \subsection{Do You Need This Package?}
% 
% Before using the \Lpack{subfig} package, consider the following to
% see if you really need it.
% \begin{enumerate}
%   \item If you simply want to center your figure on the page, then you
%         can use |\centerline|, |\centering| or the \Lenv{center}
%         environment to do so, see \cite[page 112]{Lamp94}.
%   \item If your figure has a short width or if you wrap your figure in
%         a |\parbox| or a \Lenv{minipage} of a short width, then you
%         can place multiple figures or tables side-by-side\footnote{You
%         might have to use the optional position arguments `[b]' or
%         `[t]' if the figures are of different heights, see
%         sections~\ref{sec:examples} and \ref{sec:faq:align} as well as
%         \cite[page 218]{Lamp94}.}.  For example, the following will
%         put two images side-by-side in a single figure as shown in
%         figure~\ref{fig:1figs}:
% \begin{verbatim}
%     \begin{figure}%
%       \centering
%       \parbox{1.2in}{...figure code...}%
%       \qquad
%       \begin{minipage}{1.2in}%
%         ...figure code...
%       \end{minipage}%
%       \caption{Here are two figures side-by-side.}%
%       \label{fig:1figs}%
%     \end{figure}
% \end{verbatim}
% \begin{figure}^
%   \centering
%   \parbox{1.2in}{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%   \qquad
%   \begin{minipage}{1.2in}^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}^
%   \end{minipage}^
%   \caption{Here are two figures side-by-side.}^
%   \label{fig:1figs}^
%   \vspace{12pt}
% \end{figure}
%   \item Finally, if you place the caption inside the |\parbox| or
%         \Lenv{minipage}, then the width of the caption will be limited
%         to the width of the parbox or minipage as shown in
%         figures~\ref{fig:2figsA} and \ref{fig:2figsB}:
% \begin{verbatim}
%     \begin{figure}%
%       \centering
%       \parbox{1.2in}{%
%         ...figure code...
%         \caption{First.}%
%         \label{fig:2figsA}}%
%       \qquad
%       \begin{minipage}{1.2in}%
%         ...figure code...
%         \caption{Second.}%
%         \label{fig:2figsB}%
%       \end{minipage}%
%     \end{figure}
% \end{verbatim}
% \begin{figure}^
%   \centering
%   \parbox{1.2in}{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\vfil\null}\hfil}}^
%     \caption{First.}^
%     \label{fig:2figsA}}^
%   \qquad
%   \begin{minipage}{1.2in}^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\vfil\null}\hfil}}^
%     \caption{Second.}^
%     \label{fig:2figsB}^
%   \end{minipage}^
%   \vspace{12pt}
% \end{figure}
% \end{enumerate}
% 
% For more information on typesetting figures and tables, see 
% the book ``The \LaTeX\ Companion'' by Mittelbach and Goossens
% \cite[\textsection~5 \& 6]{Mitt-etal04} and the document ``Using 
% Imported Graphics in \LaTeXe'' by Keith Reckdahl \cite{Reck97}.
% 
% \section{Package Commands}
% 
% In this section, we describe the commands defined by the
% \Lpack{subfig} package and three commands from the \Lpack{caption}
% package that are needed or very useful in setting and changing the
% package options.
% 
% \subsection{Preamble Commands}
% 
% In the preamble of your \LaTeX\ file, you may load the \Lpack{subfig}
% package, define new and extended options and create new sub-floats.
% See the documentation for the \Lpack{caption} package for other
% preamble commands that may be used to customize the caption portion of
% a sub-float.
% 
% \subsubsection{The \cmd{\usepackage} Command}
% \begin{quote}
%   |\usepackage|\oarg{KV-list}\{subfig\}
% \end{quote}
% 
% \noindent
% The optional argument list to the \Lpack{subfig} package is in the
% form of a KV-list or ``Key-Value list'' (see \cite{Carl99} for more
% detail).  The KV-list is composed of a comma-separated list of
% keywords with optional values.  The keywords without a value indicate
% that a default value is to be used.  This list is bound to the
% variable \Lvar{subfloat} and is re-evaluated each time a |\subfloat| is
% encountered.  These initial values may also be viewed, removed or
% changed with the |\showcaptionsetup|[uniq]\{subfloat\},
% |\clearcaptionsetup|[subfloat] or
% |\captionsetup|[subfloat]\marg{KV-list} commands.
% 
% \subsubsection{The \cmd{\newsubfloat} Command}
% \label{sec:newsubfloat}
% \begin{quote}\DescribeMacro{\newsubfloat}
%   |\newsubfloat|\oarg{KV-list}\marg{float-name}
% \end{quote}
% 
% \noindent
% This command creates all of the internal structures and commands
% needed to support the new subfloat (the corresponding float structure
% must already exist, see section~\ref{sec:customfloat}).  For instance
% when the \Lvar{subfigure} is created the set of internals instantiated
% are shown in table~\ref{tab:newsubfloat}.
% \begin{table}
%  \centering
%  \caption{Example of internals created by a \cmd{\newsubfloat} ``subfigure''.}^
%  \label{tab:newsubfloat}^
%  \begin{tabular}{llp{2.2in}}                                                               \toprule
%    {\bf Function/}     &                            &                                   \\
%    {\bf \quad Keyword} & {\bf Default}              & {\bf Description}                 \\ \midrule
%    |\c@subfigure|      & 0                          & Internal counter variable.        \\
%    |\c@subfigure@save| & 0                          & Internal variable to save last counter value
%                                                       in case of a continued figure.    \\
%    |\subfigurename|    &                            & Name prepended to the subcaption 
%                                                       number (empty by default).        \\
%    |\p@subfigure|      & |\thefigure|               & Figure number prepended to the subcaption
%                                                       number in references via |\ref|.  \\
%    |\thesubfigure|     & |\alph{subfigure}|         & Format of the subcaption number.  \\
%    |\ext@subfigure|    & lof                        & List-of-Floats file extension.    \\
%    |\l@subfigure|      & {\textbackslash@dottedxxxline\{figure\}}
%                                                     & Format of List-of-Floats entry.   \\
%                        & \multicolumn{2}{l}{{\qquad\{lof\}\{2\}\{\textbackslash sf@indent\}}}
%                                                                                         \\
%                        & \multicolumn{2}{l}{{\qquad\qquad\{\textbackslash sf@numwidth\}\}}}
%                                                                                         \\
%    |\c@lofdepth|       & 1                          & List-of-Floats depth variable.    \\
%    \Lkv{lofdepth}      & 2                          & Sets |\c@lofdepth|.               \\ \bottomrule
%  \end{tabular}
% \end{table}
%
% The two internals \cmd{\subfigurename} and \cmd{\thesubfigure} are left
% for easy adjustment by the user, the rest should not be directly
% changed under normal circumstances.  Note that you may change the
% values of any counter variable |\c@cnt| with the counter functions
% |\setcounter| or |\addtocounter| (see \cite[pg.~194]{Lamp94}).  Also,
% the internals |\sf@indent| and |\sf@numwidth| may be change with the
% keywords \Lkv{listofindent} and \Lkv{listofnumwidth}, respectively.
% 
% Once the new float is created, the KV-list is placed at the top ``level''.
% For example the options for the above {\it subfigure\/} are added to the 
% name \Lvar{subfigure}. See section~\ref{sec:layers} below, for more detail
% about option layers.
% 
% \subsubsection{The \cmd{\DeclareCaptionListOfFormat} Command}
% \begin{quote}\DescribeMacro{\DeclareCaptionListOfFormat}
%   |\DeclareCaptionListOfFormat|\marg{keyword value}\marg{code}
% \end{quote}
% 
% \noindent
% The |\DeclareCaptionListOfFormat| command allows the specification of
% how the sub-caption references are shown on the List-of-Floats pages.
% See section~\ref{sec:lof} for more details on setting up and adjusting
% the List-of-Floats entries.  
%
% The \marg{code} section is passed two parameters that may be used or ignored.  
% These are the value of the associated \cmd{\p@<sub-float>} type and the 
% \cmd{\the<sub-float>} respectively.
% 
% \subsubsection{The \cmd{\DeclareSubrefFormat} Command}
% \label{sec:declaresubrefformat}
% \begin{quote}\DescribeMacro{\DeclareSubrefFormat}
%   |\DeclareSubrefFormat|\marg{keyword value}\marg{code}
% \end{quote}
% 
% \noindent
% The |\DeclareSubrefFormat| command allows the specification of how the 
% \cmd{\subref*} command generates its reference to a sub-caption label in
% the text.
% 
% The \marg{code} section is passed four parameters that may be used or
% ignored.  The frist two are the values of the associated
% \cmd{\p@$<$sub-float$>$} type and the \cmd{\the$<$sub-float$>$}
% (\eg, \cmd{\p@subfigure} and \cmd{\thesubfigure}), like the
% \cmd{\DeclareCaptionListOfFormat} command.  The second two are the
% {\em raw} values of the $<$float$>$ and the $<$sub-float$>$ counters.
% 
% \subsection{General Commands}
% 
% These commands are available within the body of the paper and the
% commands |\captionsetup|, |\showcaptionsetup| and |\clearcaptionsetup|
% are available anytime after loading either the \Lpack{caption} or
% \Lpack{subfig} packages.
%
% \subsubsection{The \cmd{\subfloat} Command}
% \begin{quote}\DescribeMacro{\subfloat}
%   |\subfloat|\oarg{list\_entry}\oarg{sub-caption}\marg{body}
% \end{quote}
% 
% \noindent
% This command creates the sub-float in the floating environment.
% In a \Lenv{figure} environment it creates a subfigure.  The
% required argument contains the sub-float object or ``body''.  This is
% the code that imports or creates the figure portion of the sub-float.
% 
% The two optional arguments control the caption.  If only one
% optional argument is present, than a caption label is generated
% and if any text is included in the optional argument, than it
% becomes the caption argument.
% 
% Normally, if a caption is present, it is also included on the
% List-of-Floats page.  However, if a second optional argument is
% present, than the first one controls what is on the List-of-Floats
% page and the second is the caption text.  If the List-of-Floats
% argument is empty, than nothing is printed on the List-of-Floats
% page.  Otherwise, if there is text in the List-of-Floats argument,
% than that text is used on the List-of-Floats page rather than the text
% in the other optional argument.
% 
% See table~\ref{tab:calling} for more detail on the |\subfloat|
% command's arguments.
% 
% \begin{table}^
%  \centering
%  \caption{\cmd{\subfloat} calling arguments.}^
%  \label{tab:calling}^
%  \vskip-11pt^
%  \hbox to \linewidth{\hss\begingroup\small
%    \begin{tabular}{llc}                                 \\ \toprule
%      {\normalsize Sub-float Command}
%                        & \hbox to 1in{\hss\normalsize List-of-Floats Caption}
%                              & \multicolumn{1}{r}{\hbox to .25in{^
%                                                     \hss\normalsize 
%                                                     Sub-float Caption}}
%                                                         \\ \midrule
%      \cmd{\subfloat}\{body\}
%                        &     &                          \\
%      \cmd{\subfloat}[\space]\{body\}
%                        & (b)\ \ . . . . . . . . . .  
%                              & (b)                      \\
%      \cmd{\subfloat}[Sub-caption.]\{body\}
%                        & (c) Sub-caption. . . .
%                              & (c) Sub-caption.         \\
%      \cmd{\subfloat}[\space][Sub-caption.]\{body\}
%                        &     & (d) Sub-caption.         \\
%      \cmd{\subfloat}[\space][\space]\{body\}
%                        &     & (e)                      \\
%      \cmd{\subfloat}[List\_entry.][Sub-caption.]\{body\}
%                        & (f) List\_entry. . . .
%                              & (f) Sub-caption.          \\
%      \cmd{\subfloat}[List\_entry.][\space]\{body\}
%                        & (g) List\_entry. . . .
%                              & (g)                      \\ \bottomrule
%    \end{tabular}
%  \endgroup\hss}
%  \vspace{-8pt}
% \end{table}
% 
% \subsubsection{The \cmd{\subref} Command}
% \changes{v1.2}{23 January 2004}{Added documentation for the 
% \cmd{\subref*} command.}
% \begin{quote}\DescribeMacro{\subref}\DescribeMacro{\subref*}
%   |\subref|\marg{label}\\
%   |\subref*|\marg{label}
% \end{quote}
% 
% \noindent
% The |\subref| command is provided to give an alternative reference to
% a sub-float.  The standard |\ref| command returns a label built by
% concatenating the |\p@float| $+$ |\thesubfloat|, which is often of the
% form ``1a''.  The |\subref| command returns the label shown on the
% List-of-Floats page, which may be in the format ``(a)'' (\ie, if
% \Lkv{listofformat=subparens}, see section~\ref{sec:listsubcaptions}).
% This may be combined with a reference to the main caption to give 
% something of the form ``1(a)'', or used within the main caption to
% refer to a specific local sub-float.
% 
% By default, the starred form of the command simply returns the 
% |\thesubfloat| value, which, for sub-floats is usually something
% like ``a''.  However, this may be changed by setting \Lkv{subrefformat},
% similar to the above \Lkv{listofformat}, to a predefined format
% (see table~\ref{tab:keywords2} or to a unique format defined with the
% \cmd{\DeclareSubrefFormat} command (section~\ref{sec:declaresubrefformat}).
% 
% \subsubsection{The \cmd{\ContinuedFloat} Command}
% \label{sec:cont}
% \begin{quote}\DescribeMacro{\ContinuedFloat}
%   |\ContinuedFloat|
% \end{quote}
% 
% \begin{figure}^
%   \centering
%   \subfloat[][]{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%   \qquad
%   \subfloat[][]{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}
%   \vskip-4pt
%   \caption{Here are the first two figures of a continued figure.}^
%   \label{fig:cont}^
% \end{figure}
% 
% \begin{figure}^
%   \ContinuedFloat
%   \centering
%   \subfloat[][]{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%   \qquad
%   \subfloat[][]{^
%     \fboxsep=-\fboxrule
%     \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}
%   \vskip-4pt
%   \caption[]{Here are the last two figures of a continued figure.}^
%   \label{fig:cont2}^
% \end{figure}
%
% \noindent
% It sometimes occurs, especially when using sub-floats, that a single
% figure needs to be continued across pages.  The |\ContinuedFloat|
% command is placed at the beginning of the floating environment or
% after changing |\@captype| inside the floating environment to make the
% next figure, table or other floating |\caption| a continuation of the
% last float |\caption| of the same type.  It does this by saving the
% sub-float numbering internally and keeping the float numbering
% from advancing.
% 
% In order to keep subsequent float entries from appearing on the
% List-of-Floats page, you can use the |\caption| command with the
% optional argument present, but empty; as shown in
% figure~\ref{fig:cont} (and on the list-of-figures
% page).\footnote{Note: This only works if the \Lpack{caption} package
% is active.  If the \Lkv{caption=true} option is used to load the
% \Lpack{caption} package or the \Lpack{subfig} package, than an empty
% optional argument to the \cmd{\caption} command generates a
% List-of-Floats entry with no caption text unless the document class
% redefines the \cmd{\caption} command otherwise.}  We also suppress
% the sub-caption entry with the optional List-of-Floats page argument 
% empty since there is no accompanying text.
%
% \begin{verbatim}
%     \begin{figure}%
%       \centering
%       \subfloat[][]{...figure code...}%
%       \qquad
%       \subfloat[][]{...figure code...}
%       \caption{Here are the first two figures of a continued figure.}%
%       \label{fig:cont}%
%     \end{figure}
%
%     \begin{figure}%
%       \ContinuedFloat
%       \centering
%       \subfloat[][]{...figure code...}%
%       \qquad
%       \subfloat[][]{...figure code...}
%       \caption[]{Here are the last two figures of a continued figure.}%
%       \label{fig:cont}%
%     \end{figure}
% \end{verbatim}
% 
% \subsubsection{The \cmd{\listsubcaptions} Command}
% \label{sec:listsubcaptions}
% \begin{quote}\DescribeMacro{\listsubcaptions}
%   |\listsubcaptions|
% \end{quote}
% 
% \noindent
% The last command provided by the \Lpack{subfig} package is the
% |\listsubcaptions|.  This is automatically called in most cases by the
% |\caption| command and at the end of the \Lenv{float} environment.
% However, the following example shows a rare situation in which the
% user will every have to use the |\listsubcaptions| command as shown in
% the definition of the |\zaptype| command.
%
% \begin{quote}
%   |  \documentclass{article}|\\
%   |  \usepackage[lofdepth,lotdepth]{subfig}|\\
%   \null\qquad\vdots\\
%   |  \makeatletter|\\
%   |    \def\zaptype#1{%|\\
%   |        \listsubcaptions  % Finish the last set of sub-floats before|\\
%   |        \def\@captype{#1}}%   switching to another float type.|\\
%   |  \makeatother|\\
%   \null\qquad\vdots\\
%   |  \begin{document}|\\
%   \null\qquad\vdots\\
%   |  \listoffigures|\\
%   |  \listoftables|\\
%   |  \clearpage|\\
%   |  \begin{table}%|\\
%   |    \begin{center}%|\\
%   |      \caption{Table caption.}%|\\
%   |        \subfloat[Tab one]{X}\quad|\\
%   |        \subfloat[Tab two]{X}\\|\\
%   |      %|\\
%   |      \zaptype{figure}%|\\
%   |      %|\\
%   |        \subfloat[Fig one]{Y}\quad|\\
%   |        \subfloat[Fig two]{Y}|\\
%   |      \caption{Figure caption.}%|\\
%   |    \end{center}%|\\
%   |  \end{table}|\\
%   \null\qquad\vdots\\
%   |  \end{document}|
% \end{quote}
% 
% \noindent
% {\scshape\bf Hint}: Don't change the List-of-Floats page properties
% of any sub-floats until just before you use a |\subfloat| command,
% or just after you have executed a |\listsubcaptions| command. 
% Otherwise, the wrong \Lkv{listofformat} or spacing might use the new
% values for sub-floats that have not been fully processed yet.
%
% \subsubsection{The \cmd{\captionsetup} Command}
% \label{sec:layers}
% \begin{quote}\DescribeMacro{\captionsetup}
%   |\captionsetup|\oarg{variable}\marg{KV-list}
% \end{quote}
% 
% \noindent
% The |\captionsetup| command is actually part of the \Lpack{caption}
% package, but is very important is you want to adjust some option in
% the \Lpack{subfig} package.  If the optional \Lvar{variable} is left
% out, than the settings are made at the global level; otherwise, the
% settings are bound to the variable and executed just before being
% used.
% 
% \begin{figure}\centering
%   \begin{picture}(270,180)(0,5)
%     \put(5,155){\makebox(0,0){\large 1.}}
%     \put(158,155){\oval(260,30)}
%     \put(158,155){\makebox(0,0){(global)}}
%     \put(072,140){\vector(0,-1){10}}
%     \put(158,140){\vector(0,-1){10}}
%     \put(244,140){\vector(0,-1){15}}
%     \put(5,115){\makebox(0,0){\large 2.}}
%     \put(072,115){\oval(62,30)}
%     \put(072,115){\makebox(0,0){\Lvar{figure}}}
%     \put(158,115){\oval(62,30)}
%     \put(158,115){\makebox(0,0){\Lvar{table}}}
%     \put(244,115){\makebox(0,0){{\bf\dots}other floats{\bf\dots}}}
%     \put(072,100){\vector(0,-1){10}}
%     \put(158,100){\vector(0,-1){10}}
%     \put(244,105){\vector(0,-1){15}}
%     \put(5,075){\makebox(0,0){\large 3.}}
%     \put(158,075){\oval(260,30)}
%     \put(158,075){\makebox(0,0){\Lvar{subfloat}}}
%     \put(072,060){\vector(0,-1){10}}
%     \put(158,060){\vector(0,-1){10}}
%     \put(244,060){\vector(0,-1){15}}
%     \put(5,035){\makebox(0,0){\large 4.}}
%     \put(072,035){\oval(62,30)}
%     \put(072,035){\makebox(0,0){\Lvar{subfigure}}}
%     \put(158,035){\oval(62,30)}
%     \put(158,035){\makebox(0,0){\Lvar{subtable}}}
%     \put(244,035){\makebox(0,0){{\bf\dots}other sub-floats{\bf\dots}}}
%   \end{picture}^
%   \caption{Levels at which keyword/values pairs may be set to apply to,
%            or override earlier keyword/values pairs, for floats and
%            sub-floats.}^
%   \label{fig:levels}^
% \end{figure}
%
% There are four ``levels'' at which you can define options to apply
% to a sub-float (figure~\ref{fig:levels}.  The first level is the
% default or global values of the various options, which are set either
% by the package, by a configuration file or by the optional Key-Value
% list in the |\usepackage| command when loading the \Lpack{caption} package.
% 
% The second ``level'' consists of those options bound to the various
% floats.  These are set by the |\captionsetup| with the optional argument
% set to the float name.  For example, the command:
% \begin{quote}
%   |\captionsetup|[table]\{position=top\}
% \end{quote}
% would indicate that the \Lvar{table} caption will come before its 
% subfigures rather than after, as is the default.

% The third ``level'' consists of those options bound to the special variable
% \Lvar{subfloat}.  These are value that hold across all sub-floats, but which
% are different than the global or float values.  One such item is the
% ``font'' size, which is usually either null or {\bf normalsized}, but which
% is set to be {\bf footnotesized} for the sub-float captions.
% 
% The fourth ``level'' holds those options bound to a specific sub-float,
% say \Lvar{subfigure}.  An example is the caption \Lkv{position} relative
% to the subfigure itself.
% 
% \section{Options: Keywords and Values}
% \changes{v1.2}{22 January 2004}{Changed \Lkv{indent} to \Lkv{indention}.}
% \changes{v1.3}{10 October 2004}{Added \Lkv{caption}.}
% 
% Table~\ref{tab:keywords} shows all of the formal keywords and values
% from both the \Lpack{caption} and the \Lpack{subfig} packages.  These
% may be used on the |\usepackage| options line, or with the |\captionsetup|
% command.
% 
% \begin{table}^
%   \centering
%   \caption[Keywords with defaults and values.]^
%           {Keywords with defaults and values. (Note: Entries enclosed
%            in `[\ ]' indicate initial values rather than defaults.)}^
%   \label{tab:keywords}^
%   \begin{tabular}{llll}                                            \toprule
%   \multicolumn{1}{c}{\drop{1ex}{\bf PACKAGE}}
%            & \multicolumn{1}{c}{\drop{1ex}{\bf KEYWORD}}
%                              & \multicolumn{1}{c}{\bf DEFAULT}
%                                                & \multicolumn{1}{c}{\drop{1ex}{\bf VALUE(S)}}
%                                                                     \\
%            &                 & \multicolumn{1}{c}{\bf / [INIT]}
%                                                &                    \\ \midrule
%   Caption  & caption\footnotemark
%                              & true            & $<$Boolean$>$      \\[5pt]
%   \drop{-6pt}{Package}
%            & config          & ``caption.cfg'' & $<$filename$>$     \\[5pt]
%            & font (size)     & [default]       & \multirow{8}{*}{^
%                                                    \begin{tabular}{@{}llll}
%                                                        default      &    &    &    \\[3pt]
%                                                        scriptsize   & rm & md & up \\
%                                                        footnotesize & sf & bf & it \\
%                                                        small        & tt &    & sl \\
%                                                        normalsize   &    &    & sc \\
%                                                        large        &    &    &    \\
%                                                        Large        &    &    &    \\
%                                                      \end{tabular}} \\
%            & labelfont       & [default]       \\
%            & textfont        & [default]       \\
%            &                 &                 \\
%            &                 &                 \\
%            &                 &                 \\
%            &                 &                 \\
%            &                 &                 \\[5pt]
%            & style           & [default]       & default            \\
%            &                 &                 & ruled              \\[5pt]
%            & singlelinecheck & true            & $<$Boolean$>$      \\[5pt]
%            & format          & [default]       & default            \\
%            &                 &                 & hang               \\[5pt]
%            & indention       & [0pt]           & $<$length$>$       \\[5pt]
%            & hangindent      & [0pt]           & $<$length$>$       \\[5pt]
%            & width           & [\cmd{\hsize}]  & $<$length$>$       \\
%            & margin          & [0pt]           & $<$length$>$       \\[5pt]
%            & parskip         & [5pt]           & $<$length$>$       \\[5pt]
%            & justification   & [default]       & justified (default)\\
%            &                 &                 & centering          \\
%            &                 &                 & centerfirst        \\
%            &                 &                 & centerlast         \\
%            &                 &                 & raggedleft         \\
%            &                 &                 & raggedright        \\
%            &                 &                 & Centering          \\
%            &                 &                 & RaggedLeft         \\
%            &                 &                 & RaggedRight        \\[5pt]
%            & labelformat     & [default]       & empty              \\
%            &                 &                 & simple (default)   \\
%            &                 &                 & parens             \\[5pt]
%            & aboveskip       & [10pt]          & $<$length$>$       \\[5pt]
%            & belowskip       & [0pt]           & $<$length$>$       \\ \bottomrule
%   \end{tabular}		
% \end{table}

% \changes{v1.1}{12 January 2004}{Updated the values and the default
%  for the keyword \Lkv{listofformat} in table~\ref{tab:keywords2}.}
% \changes{v1.2}{21 January 2004}{Fine-tuned the defaults for \Lkv{farskip},
% \Lkv{topadjust}, \Lkv{captionskip}, and \Lkv{nearskip}.}
% \changes{v1.2}{22 January 2004}{Removed \Lkv{widespace}.}
% \changes{v1.3}{01 March 2004}{Added \Lkv{lofdepth} and \Lkv{lotdepth}. }
% \changes{v1.3}{10 October 2004}{Added \Lkv{caption}.}
% \begin{table}^
%   \ContinuedFloat
%   \centering
%   \caption[]{Keywords with Defaults and Values (cont).}^
%   \label{tab:keywords2}^
%   \begin{tabular}{llll}                                            \toprule
%   \multicolumn{1}{c}{\drop{1ex}{\bf PACKAGE}}
%            & \multicolumn{1}{c}{\drop{1ex}{\bf KEYWORD}}
%                              & \multicolumn{1}{c}{\bf DEFAULT}
%                                                & \multicolumn{1}{c}{\drop{1ex}{\bf VALUE(S)}}
%                                                                     \\
%            &                 & \multicolumn{1}{c}{\bf / [INIT]}
%                                                &                    \\ \midrule
%   Caption  & labelseparator  & [default]       & none               \\
%   Package  & \quad(labelsep) &                 & colon (default)    \\
%   (cont.)  &                 &                 & period             \\
%            &                 &                 & space              \\
%            &                 &                 & quad               \\
%            &                 &                 & newline            \\[5pt]
%            & position\footnotemark
%                              &                 & top (above)        \\
%            &                 &                 & bottom (below)     \\ \midrule
%   Subfig   & caption\addtocounter{footnote}{-2}\footnotemark
%                              & true            & $<$Boolean$>$      \\[5pt]
%   \drop{-6pt}{Package}
%            & config          & ``subfig.cfg''  & $<$filename$>$     \\[5pt]
%            & lofdepth\addtocounter{footnote}{1}\footnotemark
%                              & 1               & $<$number$>$       \\[5pt]
%            & lotdepth\addtocounter{footnote}{-1}\footnotemark
%                              & 1               & $<$number$>$       \\[5pt]
%            & listofformat    & [subparens]     & empty              \\
%            &                 &                 & simple             \\
%            &                 &                 & parens             \\
%            &                 &                 & subsimple          \\
%            &                 &                 & subparens          \\[5pt]
%            & subrefformat    & [subsimple]     & empty              \\
%            &                 &                 & simple             \\
%            &                 &                 & parens             \\
%            &                 &                 & subsimple          \\
%            &                 &                 & subparens          \\[5pt]
%            & listofindent    & 3.8em           & $<$length$>$       \\[5pt]
%            & listofnumwidth  & 2.5em           & $<$length$>$       \\[5pt]
%            & farskip         &10pt             & $<$length$>$       \\[5pt]
%            & captionskip     & 4pt             & $<$length$>$       \\[5pt]
%            & topadjust       & 0pt             & $<$length$>$       \\[5pt]
%            & nearskip        & 0pt             & $<$length$>$       \\ \bottomrule
%   \end{tabular}		
% \end{table}
%   
% If these are not desired, than they may be removed at the beginning of
% a configuration file with the command:
%  \begin{quote}^
%    |  \clearcaptionsetup{subfloat}|
%  \end{quote}
% The options are not added to the \Lvar{subfloat} list until after
% the configuration file(s) are loaded.
%
% \subsection{Options from the \Lpack{Caption} Package}
% \changes{v1.2}{16 January 2004}{Added missing space.}
% 
% The \Lpack{subfig} package uses the \Lpack{caption} package commands
% to typeset the captions under each sub-float.  The settings used in the
% captions come from three sources.  The first is the global settings
% provided by the caption package.  The second is the keys and key/value
% pairs stored on the \Lvar{subfloat} variable.  The third is the keys
% and key/value pairs stored on (for figure sub-floats) the
% \Lvar{subfigure} variable.  In these three sources, if a key appears
% most recent value is used.
% 
% \addtocounter{footnote}{-2}
% \footnotetext{The \Lkv{caption} option is only allowed on the
% \Lpack{caption} or \Lpack{subfigure} package option list.  In
% addition, the \Lkv{caption} option can only be used in the
% \Lpack{subfigure} package option list {\em if} the \Lpack{caption}
% package has {\em not} been loaded.}
% \addtocounter{footnote}{1}
% \footnotetext{Only the \Lkv{top}/\Lkv{above} and \Lkv{bottom}/\Lkv{below}
%               values are allowed for the \Lkv{position} option with the 
%               \Lpack{subfig} package.  If no value is set, than 
%               \Lkv{bottom} is assumed.}%
% \addtocounter{footnote}{1}
% \footnotetext{Similar keywords are created automatically by the
%               \cmd{\newsubfloat} command, see section~\ref{sec:newsubfloat}.}
%
% Therefore, you can keep all of your common settings associated with
% the \Lvar{subfloat} variable and, if needed, special settings for
% individual sub-float types (figure, table, etc.) on the associated
% variable (\eg, \Lvar{subfigure}, \Lvar{subtable}, etc.).
%
% The package options supplied with the \cmd{\usepackage} command are
% bound to the \Lvar{subfloat} variable, and so, affect all of the
% sub-floats.  The one exception to this is the \Lkv{config} or
% \Lkv{config=filename} option that is executed immediately.  This is
% handy for two reasons, the first is that you only want to load a
% configuration file once (not every time you use a sub-float; and,
% second the \Lkv{config} keyword, without a value, will only load the
% ``subfig.cfg'' file when used on the options line, therefore you can
% set common options in both the float and sub-float captions with the
% command:
%
% \begin{quote}
%   |\usepackage|[config, labelfont=\{sf,bf\}, textfont=sf]\{caption,subfig\}
% \end{quote}
% which will load the ``caption.cfg'' file and set the label and text
% fonts and also load the \Lfile{subfig.cfg} file and set the sublabel and
% subtext fonts.  Here we don't use the \Lkv{font} key, since this is
% initialized with the default font sizes to be used and defaults to
% \Lkv{normalsized} for the float captions and to \Lkv{footnotesized} for the
% sub-float captions, as shown in figure~\ref{fig:init}.
% 
% \begin{figure}^
%   \vskip-5pt
%   \centering
%   \subfloat[Sub-float caption.]{\B{white}{Sub-float Body}}^
%   \vskip-5pt
%   \caption{Float caption.}^
%   \label{fig:init}^
% \end{figure}
% 
% Next we will review the options provided by the \Lpack{caption}
% package.  First the font settings, then the shape options, the
% justification and the other caption options that affect the sub-floats.
% Next, we review the options provided by the \Lpack{subfig} package.
% 
% \subsubsection{The \Lpack{Caption} Font Settings}
%
% There are three font variables that can be set to control the float or
% sub-float captions.  They are \Lkv{font}, \Lkv{labelfont} and \Lkv{textfont}.
% The \Lvar{font} variable is applied to both the caption label and text;
% and is usually\footnote{But not always, careful use of these three
% variables can produce useful effects.  Their application is as:
% \begin{quote}^
%   \vspace{-2pt}
%   \{\cmd{\font} \{\cmd{\labelfont} $<$label$><$separator$>$\}\{\cmd{\textfont} $<$text$>$\}
%   \vspace{-5pt}
% \end{quote}}
% used to specify the size of the caption and the other two variables
% are used to specify the other aspects of the font, the family, series
% and shape.  The ``labelfont'' variable is used to specify the font
% used for the caption label and separator, while the ``textfont''
% specifies that for the caption text.
% 
% Each of these variables can have one value from each of the four
% columns in the ``VALUE'' section of table~\ref{tab:keywords}
% associated with the font keywords.  If nothing is specified for one of
% the four sections, than that aspect of the current font is used.
% 
% Figures~\subref*{fig:fontsize-01}--\subref{fig:fontsize-06}
% show the effect of the font size options on the ``font'' variable.
% 
%  \begin{figure}^
%   \vskip4pt
%   \centering
%   \figfont{fig:fontsize-01}{font}{Large}\g
%   \figfont{fig:fontsize-02}{font}{large}\\
%   \figfont{fig:fontsize-03}{font}{normalsize}\g
%   \figfont{fig:fontsize-04}{font}{small}\\
%   \figfont{fig:fontsize-05}{font}{footnotesize}\g
%   \figfont{fig:fontsize-06}{font}{scriptsize}\\[-2pt]
%   \caption{Font size options.}
%   \label{fig:fontsize}
%   \vskip-16pt
% \end{figure}
% \changes{v1.2}{26 January 2004}{Fixed references.}
% \begin{figure}^
%   \centering
%  \figfontlist{fig:textfont-01}{font}{rm,md,up}\g
%  \figfontlist{fig:textfont-02}{font}{rm,md,it}\\
%  \figfontlist{fig:textfont-03}{font}{rm,md,sl}\g
%  \figfontlist{fig:textfont-04}{font}{rm,md,sc}\\
%  \figfontlist{fig:textfont-05}{font}{rm,bf,up}\g
%  \figfontlist{fig:textfont-06}{font}{rm,bf,it}\\
%  \figfontlist{fig:textfont-07}{font}{rm,bf,sl}\g
%  \figfontlistS{fig:textfont-08}{font}{rm,bf,sc}\\
%  \figfontlist{fig:textfont-09}{font}{sf,md,up}\g
%  \figfontlistS{fig:textfont-10}{font}{sf,md,it}\\
%  \figfontlist{fig:textfont-11}{font}{sf,md,sl}\g
%  \figfontlistS{fig:textfont-12}{font}{sf,md,sc}\\
%  \figfontlist{fig:textfont-13}{font}{sf,bf,up}\g
%  \figfontlistS{fig:textfont-14}{font}{sf,bf,it}\\
%  \figfontlistS{fig:textfont-15}{font}{sf,bf,sl}\g
%  \figfontlistS{fig:textfont-16}{font}{sf,bf,sc}\\
%  \figfontlist{fig:textfont-17}{font}{tt,md,up}\g
%  \figfontlist{fig:textfont-18}{font}{tt,md,it}\\
%  \figfontlist{fig:textfont-19}{font}{tt,md,sl}\g
%  \figfontlist{fig:textfont-20}{font}{tt,md,sc}\\
%  \figfontlistS{fig:textfont-21}{font}{tt,bf,up}\g
%  \figfontlistS{fig:textfont-22}{font}{tt,bf,it}\\
%  \figfontlistS{fig:textfont-23}{font}{tt,bf,sl}\g
%  \figfontlistS{fig:textfont-24}{font}{tt,bf,sc}\\
%   \caption[Other Font Options.]%
%           {Other Font Options (shaded boxes indicate
%           font combinations that were not available,
%           see table~\ref{tab:substitutions}).}^
%   \label{fig:textfont}^
% \end{figure}
% 
% \changes{v1.2}{26 January 2004}{Added footnote to reference NFSS.}
% Figures~\subref*{fig:textfont-01}--\subref{fig:textfont-24}
% show the effect of all combinations of the other font settings on the
% ``textfont'' variable.  Note that not all combinations are necessarily
% available.\footnote{To modify the fonts used in your document and make
% specific combinations of family, shape and style available, see the 
% NFSS documentation in The Latex Companion~\cite{Mitt-etal04}.}
% Where the specified font attributes are not available \LaTeX\
% will substitute an alternate font.  For instance, when compiling this file
% on one system, \LaTeX\ substituted alternate fonts for the requested
% ones in ten of the twenty-four cases (see table~\ref{tab:substitutions}).
% Recompiling this documentation on your system and looking at the \LaTeX\
% warnings will show you any combinations that are not available for you.
%
% \subsubsection{The \Lpack{Caption} Shape Settings}
% \changes{v1.2}{16 January 2004}{Removed two extra commas in the 
% figure options lists.}
% \label{sec:shape}
% 
% There are seven options for setting the sub-caption shape or ``format''.
% The default setting is produced by
% \begin{tabbing}
%   \qquad 
%   $\backslash$captionsetup[subfigure]\{\= style=default, margin=0pt, parskip=0pt,\\
%                                        \> hangindent=0pt, indention=0pt, singlelinecheck=true\}
% \end{tabbing}
% which is shown in figure~\ref{fig:shape-01}.
% Figure~\ref{fig:shape-00} shows the same thing, but without setting
% the \Lkv{singlelinecheck} to true.  You can see that the
% \Lkv{singlelinecheck} option only affects the short caption.
% 
% \begin{table}^
%   \def\fig#1{\subref*{fig:textfont-#1}}
%   \def\uch#1{\underline{\smash{\hbox{#1}}}}
%   \caption[Example font attribute substitutions.]^
%           {Example font attribute substitutions.\footnotemark}
%   \label{tab:substitutions}
%   \centering
%   \begin{tabular}{lclc}                                                                        \toprule
%     \multicolumn{1}{l}{{\bf Figure}}
%              & \multicolumn{1}{l}{{\bf Desired Options}}
%                               & \multicolumn{1}{l}{{\bf Substitution Reason}}
%                                                        & \multicolumn{1}{l}{{\bf Actual Options}}
%                                                                                             \\ \midrule
%     \fig{08} & \{{\sf rm,bf,sc}\} & undefined              & \{{\sf rm,bf,\uch{up}}\}       \\
%     \fig{10} & \{{\sf sf,md,it}\} & unavailable in size 10 & \{{\sf sf,md,\uch{sl}}\}       \\
%     \fig{12} & \{{\sf sf,md,sc}\} & unavailable in size 10 & \{{\sf \uch{rm},md,sc}\}       \\
%     \fig{14} & \{{\sf sf,bf,it}\} & undefined              & \{{\sf sf,bf,\uch{up}}\}       \\
%     \fig{15} & \{{\sf sf,bf,sl}\} & undefined              & \{{\sf sf,bf,\uch{up}}\}       \\
%     \fig{16} & \{{\sf sf,bf,sc}\} & undefined              & \{{\sf sf,bf,\uch{up}}\}       \\
%     \fig{21} & \{{\sf tt,bf,up}\} & unavailable in size 10 & \{{\sf tt,\uch{md},up}\}       \\
%     \fig{22} & \{{\sf tt,bf,it}\} & unavailable in size 10 & \{{\sf tt,\uch{md},it}\}       \\
%     \fig{23} & \{{\sf tt,bf,sl}\} & unavailable in size 10 & \{{\sf tt,\uch{md},\uch{up}}\} \\
%     \fig{24} & \{{\sf tt,bf,sc}\} & unavailable in size 10 & \{{\sf tt,\uch{md},\uch{up}}\} \\ \bottomrule
%   \end{tabular}
% \end{table}
% 
% \footnotetext{This table may differ with different distributions of \LaTeX\ 
% and the choice of the base font families.  Examine the \LaTeX\ log for
% font warnings for your specific system.}
% 
% Any or all of the other shape option may be used at one time, since
% they define orthogonal aspects of the caption shape.  The other
% options are:
% \begin{itemize}\parskip-2pt
%   \item \Lkv{singlelinecheck}, (Boolean) which causes a caption that 
%     will fit on one line to be centered below the figure (actually, 
%     to use the singlelinecheck format);
%   \item \Lkv{indention}, (length) which indents the caption text of each 
%     line of each paragraph (except the first line of the first paragraph);
%   \item \Lkv{hangindent}, (length) which indents the caption text of 
%     all but the first line of each paragraph;
%   \item \Lkv{parskip}, (length) which adds some extra space between 
%     separate paragraphs in a caption;
%   \item \Lkv{hang}, which causes the label to hang out to
%     the left of the caption text, \Lkv{normal} turns it off; and,
%   \item \Lkv{margin}, (length) which sets extra space to either side of
%     the caption, the option \Lkv{width} may also be used.  This sets
%     the margins to provide the requested width of the caption.^
%     \footnote{Internally, the initial width of the sub-float is set 
%     equal to the width of the sub-float body (see figure~\ref{fig:layout}).
%     This value is modified by either the \Lkv{margin} {\bf or} the
%     \Lkv{width}, if defined (if both are defined than whichever is
%     specified last is used).  Note that the \Lkv{width} may be larger
%     than the width of the sub-float body, or equivalently, the \Lkv{width}
%     may be negative to provide more room for a caption if the sub-float
%     body is small.  The box holding the caption is centered relative to 
%     the sub-float body.}
% \end{itemize}
% 
% Figures~\ref{fig:shape-00} thru \ref{fig:shape-63} show all of the 
% different combinations of these formats.
%
% \def\exin{10pt}    ^ indention value
% \def\exhi{10pt}    ^ hangindent value
% \def\exps{5pt}     ^ parskip value
% \def\exma{10pt}    ^ margin value
% \figshape{fig:shape-00}{singlelinecheck=false}
% \figshape{fig:shape-01}{ }
% \figshape{fig:shape-02}{indention=\exin,singlelinecheck=false}
% \figshape{fig:shape-03}{indention=\exin}
% \clearpage
% \figshape{fig:shape-04}{hangindent=\exhi,singlelinecheck=false}
% \figshape{fig:shape-05}{hangindent=\exhi}
% \figshape[hangindent=\exhi,indention=\exin,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-06}{hangindent=\exhi,indention=\exin,singlelinecheck=false}
% \figshape{fig:shape-07}{hangindent=\exhi,indention=\exin}
% \figshape{fig:shape-08}{parskip=\exps,singlelinecheck=false}
% \figshape{fig:shape-09}{parskip=\exps}
% \figshape{fig:shape-10}{parskip=\exps,indention=\exin,singlelinecheck=false}
% \figshape{fig:shape-11}{parskip=\exps,indention=\exin}
% \figshape[parskip=\exps,hangindent=\exhi,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-12}{parskip=\exps,hangindent=\exhi,singlelinecheck=false}
% \figshape{fig:shape-13}{parskip=\exps,hangindent=\exhi}
% \figshape[parskip=\exps,hangindent=\exhi,indention=\exin,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-14}{parskip=\exps,hangindent=\exhi,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-15}{parskip=\exps,hangindent=\exhi,indention=\exin}
% \figshape{fig:shape-16}{format=hang,singlelinecheck=false}
% \figshape{fig:shape-17}{format=hang}
% \figshape{fig:shape-18}{format=hang,indention=\exin,singlelinecheck=false}
% \figshape{fig:shape-19}{format=hang,indention=\exin}
% \figshape[format=hang,hangindent=\exhi,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-20}{format=hang,hangindent=\exhi,singlelinecheck=false}
% \figshape{fig:shape-21}{format=hang,hangindent=\exhi}
% \clearpage
% \figshape[format=hang,hangindent=\exhi,indention=\exin,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-22}{format=hang,hangindent=\exhi,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-23}{format=hang,hangindent=\exhi,indention=\exin}
% \figshape{fig:shape-24}{format=hang,parskip=\exps,singlelinecheck=false}
% \figshape{fig:shape-25}{format=hang,parskip=\exps}
% \figshape[format=hang,parskip=\exps,indention=\exin, 
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-26}{format=hang,parskip=\exps,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-27}{format=hang,parskip=\exps,indention=\exin}
% \figshape[format=hang,parskip=\exps,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-28}{format=hang,parskip=\exps,hangindent=\exhi, singlelinecheck=false}
% \figshape{fig:shape-29}{format=hang,parskip=\exps,hangindent=\exhi}
% \figshape[format=hang,parskip=\exps,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ indention=\exin,singlelinecheck=false]%
%          {fig:shape-30}{format=hang,parskip=\exps,hangindent=\exhi, indention=\exin,singlelinecheck=false}
% \figshape[format=hang,parskip=\exps,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ indention=\exin]%
%          {fig:shape-31}{format=hang,parskip=\exps,hangindent=\exhi, indention=\exin}
% \figshape{fig:shape-32}{margin=\exma,singlelinecheck=false}
% \figshape{fig:shape-33}{margin=\exma}
% \figshape{fig:shape-34}{margin=\exma,indention=\exin,singlelinecheck=false}
% \figshape{fig:shape-35}{margin=\exma,indention=\exin}
% \figshape[margin=\exma,hangindent=\exhi,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-36}{margin=\exma,hangindent=\exhi,singlelinecheck=false}
% \figshape{fig:shape-37}{margin=\exma,hangindent=\exhi}
% \clearpage
% \figshape[margin=\exma,hangindent=\exhi,indention=\exin,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-38}{margin=\exma,hangindent=\exhi,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-39}{margin=\exma,hangindent=\exhi,indention=\exin}
% \figshape{fig:shape-40}{margin=\exma,parskip=\exps,singlelinecheck=false}
% \figshape{fig:shape-41}{margin=\exma,parskip=\exps}
% \figshape[margin=\exma,parskip=\exps,indention=\exin,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-42}{margin=\exma,parskip=\exps,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-43}{margin=\exma,parskip=\exps,indention=\exin}
% \figshape[margin=\exma,parskip=\exps,hangindent=\exhi,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-44}{margin=\exma,parskip=\exps,hangindent=\exhi, singlelinecheck=false}
% \figshape{fig:shape-45}{margin=\exma,parskip=\exps,hangindent=\exhi}
% \figshape[margin=\exma,parskip=\exps,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ indention=\exin,singlelinecheck=false]%
%          {fig:shape-46}{margin=\exma,parskip=\exps,hangindent=\exhi, indention=\exin,singlelinecheck=false}
% \figshape[margin=\exma,parskip=\exps,hangindent=\exhi,
%          \hfil\null\string\linebreak\ indention=\exin]%
%          {fig:shape-47}{margin=\exma,parskip=\exps,hangindent=\exhi, indention=\exin}
% \figshape{fig:shape-48}{margin=\exma,format=hang,singlelinecheck=false}
% \figshape{fig:shape-49}{margin=\exma,format=hang}
% \figshape[margin=\exma,format=hang,indention=\exin, 
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-50}{margin=\exma,format=hang,indention=\exin, singlelinecheck=false}
% \figshape{fig:shape-51}{margin=\exma,format=hang,indention=\exin}
% \figshape[margin=\exma,format=hang,hangindent=\exhi,
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-52}{margin=\exma,format=hang,hangindent=\exhi, singlelinecheck=false}
% \figshape{fig:shape-53}{margin=\exma,format=hang,hangindent=\exhi}
% \clearpage
% \figshape[margin=\exma,format=hang,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ indention=\exin,singlelinecheck=false]%
%          {fig:shape-54}{margin=\exma,format=hang,hangindent=\exhi, indention=\exin,singlelinecheck=false}
% \figshape[margin=\exma,format=hang,hangindent=\exhi, 
%          \hfil\null\string\linebreak\ indention=\exin]%
%          {fig:shape-55}{margin=\exma,format=hang,hangindent=\exhi,indention=\exin}
% \figshape[margin=\exma,format=hang,parskip=\exps, 
%          \hfil\null\string\linebreak\ singlelinecheck=false]%
%          {fig:shape-56}{margin=\exma,format=hang,parskip=\exps, singlelinecheck=false}
% \figshape{fig:shape-57}{margin=\exma,format=hang,parskip=\exps}
% \figshape[margin=\exma,format=hang,parskip=\exps,
%          \hfil\null\string\linebreak\ indention=\exin,singlelinecheck=false]%
%          {fig:shape-58}{margin=\exma,format=hang,parskip=\exps,indention=\exin, singlelinecheck=false}
% \figshape[margin=\exma,format=hang,parskip=\exps, 
%          \hfil\null\string\linebreak\ indention=\exin]%
%          {fig:shape-59}{margin=\exma,format=hang,parskip=\exps, indention=\exin}
% \figshape[margin=\exma,format=hang,parskip=\exps,
%          \hfil\null\string\linebreak\ hangindent=\exhi,singlelinecheck=false]%
%          {fig:shape-60}{margin=\exma,format=hang,parskip=\exps,hangindent=\exhi, singlelinecheck=false}
% \figshape[margin=\exma,format=hang,parskip=\exps,
%          \hfil\null\string\linebreak\ hangindent=\exhi]%
%          {fig:shape-61}{margin=\exma,format=hang,parskip=\exps,hangindent=\exhi}
% \clearpage
% \figshape[margin=\exma,format=hang,parskip=\exps,
%          \hfil\null\string\linebreak\ hangindent=\exhi,indention=\exin,singlelinecheck=false]%
%          {fig:shape-62}{margin=\exma,format=hang,parskip=\exps,hangindent=\exhi, indention=\exin,singlelinecheck=false}
% \figshape[margin=\exma,format=hang,parskip=\exps,
%          \hfil\null\string\linebreak\ hangindent=\exhi,indention=\exin]%
%          {fig:shape-63}{margin=\exma,format=hang,parskip=\exps,hangindent=\exhi, indention=\exin}
%
% \subsubsection{The \Lpack{Caption} Justification Options}
% 
% There are nine options for setting the sub-caption format.  The first
% is \Lkv{justified} which produces the format shows in
% figure~\ref{fig:justification-00}.  Only one of these options is
% allowed at a time.  If multiple options appear, then only the last is
% used.  The figures~\ref{fig:justification-01} thru
% \ref{fig:justification-08} show the rest of these formats.  The shape
% options selected along with each format option is the default (see
% figure~\ref{fig:shape-01}), this shows the effect of the justification
% option on a single line caption.
%
% \figshape{fig:justification-00}{justification=justified,singlelinecheck=false}
% \figshape{fig:justification-01}{justification=centerfirst,singlelinecheck=false}
% \figshape{fig:justification-02}{justification=centerlast,singlelinecheck=false}
% \figshape{fig:justification-03}{justification=centering,singlelinecheck=false}
% \figshape{fig:justification-04}{justification=Centering,singlelinecheck=false}
% \figshape{fig:justification-05}{justification=raggedleft,singlelinecheck=false}
% \figshape{fig:justification-06}{justification=RaggedLeft,singlelinecheck=false}
% \figshape{fig:justification-07}{justification=raggedright,singlelinecheck=false}
% \figshape{fig:justification-08}{justification=RaggedRight,singlelinecheck=false}
%
% \subsubsection{The \Lpack{Caption} Label Options}
% 
% There are three options for setting the sub-caption \Lkv{labelformat}
% as shown in figures~\ref{fig:lof-01}--\ref{fig:lof-03}.
% This is the label number and not any following punctuation or separator
% space (see below for setting these).  The three cases are:
% \begin{itemize}\parskip-2pt
%   \item \Lkv{empty}: Without any label.
%   \item \Lkv{simple}: Just the label number.
%   \item \Lkv{parens}: The label number surrounded by '()'.
% \end{itemize}
% The latter option, \Lkv{parens}, is the default for sub-floats.
% \figshape{fig:lof-01}{labelformat=empty}
% \figshape{fig:lof-02}{labelformat=simple}
% \figshape{fig:lof-03}{labelformat=parens}
%
% Figures~\ref{fig:ls-00}--\ref{fig:ls-05} show the options for setting
% the punctuation and separator space following the figure number.  These
% options are set with the \Lkv{labelseparator} keyword.
% 
% The label separator options are:
% \begin{itemize}\parskip-2pt
%   \item \Lkv{none}    Nothing is added after the label.
%   \item \Lkv{colon}   A colon followed by a |\space| is added following the
%                       label.
%   \item \Lkv{period}  A period followed by a |\space| is added following the
%                       label.
%   \item \Lkv{space}   Just a |\space| is added following the label.
%   \item \Lkv{quad}    A |\quad| space is added following the label.
%   \item \Lkv{newline} A new line is inserted after the label.
% \end{itemize}
% 
% \figshape{fig:ls-00}{labelsep=none}
% \figshape{fig:ls-01}{labelsep=colon}
% \figshape{fig:ls-02}{labelsep=period}
% \figshape{fig:ls-03}{labelsep=space}
% \figshape{fig:ls-04}{labelsep=quad}
% \figshape{fig:ls-05}{labelsep=newline}
% 
% \subsubsection{The \Lpack{Caption} Position Option}
% 
% The \Lpack{caption} package \Lkv{position} option specifies whether the
% caption appears before or after the figure or table.  This can adjust
% the relative spacing used to separate the float from the surrounding 
% text.  However, for the \Lpack{subfig} package, it serves a more important
% function.  That is it determines if the sub-floats belong to or are associated
% with the last |\caption| command to be given, or the next one to be executed
% sometime in the future.  If you find that you sub-references do not agree with
% the top-level labels, than you may need to specifically set the \Lkv{position}.
% This is best done when loading the \Lpack{caption} package, but may be done
% at anytime with the |\captionsetup| command.
% 
% \subsection{Options from the \Lpack{Subfig} Package}
% 
% In addition to the options provided by the \Lpack{caption} package, the
% \Lpack{subfig} package provides the options shown in table~\ref{tab:options}.
%
% \begin{table}^
%  \centering
%  \caption{\Lpack{Subfig} specific options.}^
%  \label{tab:options}^
%  \vspace{-10pt}^
%  \hbox to \linewidth{\hss\begingroup\small
%    \begin{tabular}{llp{218bp}}                                                      \\ \toprule
%      {\bf KeyWord}        & {\bf Value}     & {\bf Notes}                           \\ \midrule
%      \Lkv{config}         & $<$filename$>$  & The default value is ``subfig.cfg''   \\ \midrule
%      \Lkv{$<$ext$>$depth}\footnotemark
%                           & $<$number$>$    & The default value is 2.               \\
%      \Lkv{listofformat}   & \Lkv{empty}     & Label format: (none)                  \\
%                           & \Lkv{simple}    & Label format: \#\#                    \\
%                           & \Lkv{parens}    & Label format: \#(\#)                  \\
%                           & \Lkv{subsimple} & Label format: \#                      \\
%                           & \Lkv{subparens} & Label format: (\#)                    \\
%      \Lkv{listofindent}   & $<$length$>$    & Entry indention on List-of-Floats
%                                               page.                                 \\
%      \Lkv{listofnumwidth} & $<$length$>$    & Space allocated for entry label.      \\ \midrule 
%      \Lkv{farskip}        & $<$glue$>$      & Glue placed opposite the sub-float
%                                               caption.                              \\
%      \Lkv{captionskip}    & $<$glue$>$      & Glue placed between the sub-float and
%                                               the caption.                          \\
%      \Lkv{topadjust}      & $<$glue$>$      & Extra glue added to \Lkv{captionskip} 
%                                               when above the sub-float.              \\
%      \Lkv{nearskip}       & $<$glue$>$      & Glue placed opposite the caption from 
%                                               the sub-float.                         \\ \bottomrule
%    \end{tabular}
%  \endgroup\hss}
% \end{table}
%
% \subsubsection{The \Lpack{Subfig} Configuration Specification}
% \label{sec:config}
% \changes{v1.2}{21 January 2004}{Rewrote description of the layout.}
% \changes{v1.3}{18 March 2004}{Moved configuration subsection.}
% 
% The default settings and layout of the \Lpack{subfig} package can be
% modified by loading one or more configuration files.  The \Lpack{subfig}
% \Lkv{config} option loads the configuration file(s) after the package is
% setup, but before the \Lvar{subfigure} or \Lvar{subtable} sub-floats
% have been created (with the |\newsubfloat| command) and before the
% package options have been processed.  See section~\ref{sec:back-compat}
% for an example of using the \Lfile{subfigold.cfg} file to emulate the
% \Lpack{subfigure} package.
% 
% Without a value, the \Lkv{config} keyword loads the file
% \Lfile{subfig.cfg}.  Use the value to load another file, for instance,
% \Lkv{config=altsf.cfg}.  If more than one configuration file is
% specified in the package options, than they are loaded in the order in
% which they appear in the option list.  When used outside the package
% option list, the \Lkv{config} keyword is processed by the \Lpack{caption}
% package and loads \Lfile{caption.cfg} by default.
%
% {\scshape\bf Note}: The package pre-defines the following values by 
% adding them to the \Lvar{subfloat} variable list with the |\captionsetup|
% command before loading the configuration file(s):  
%
%  \begin{quote}^
%    |  \captionsetup[subfloat]{%|\\
%    |      font=footnotesize,|\\
%    |      labelformat=parens,labelsep=space,|\\
%    |      listofformat=subparens}|
%  \end{quote}
% 
% \subsubsection{The \Lpack{Subfig} List-of-Floats Specification}
% \label{sec:lof}
% \changes{v1.1}{12 January 2004}{Added explanation for multiple `\#' signs
% in table~\ref{tab:options}.}
%
% \noindent
% The next two options, \Lkv{lofdepth} and \Lkv{lotdepth}, are created along
% with the internal subfigure and subtable sub-floats.  If other sub-floats are
% created, than the associated depth counter and keyword is created for them if
% it does not already exist.  In order for the sub-captions to be shown in the
% List-of-Floats page, the related depth counter must be set to 2 or greater.
% These keywords allow the counters to be easily set in the option list or with
%^
% \footnotetext{Where \Lkv{$<$ext$>$depth} is initially only \Lkv{lofdepth} 
% and \Lkv{lotdepth}.  More such keywords may be added by the \cmd{\newsubfloat} 
% command (see section~\ref{sec:newsubfloat}.}
%^
% the |\captionsetup| command\@.\footnote{The sub-caption depth counters must be
% set at the ``global'' level (see section~\ref{sec:layers}) and before the
% corresponding \cmd{\listof\dots} command is used.} The default value is 1,
% which turns off the printing of the sub-captions.
%
% The next three options, \Lkv{listofformat}, \Lkv{listofindent}, and
% \Lkv{listofnumwidth}, control and adjust the way that the sub-float number
% is displayed on the respective List-of-Floats page.  The \Lkv{listofformat} 
% shows how or if the sub-float number is shown.  Where there are two `\#' 
% signs in the List-of-Page label formats, the first one stands for the 
% {\bf\cmd{\p@}\textless{\em sub-float\_type}\textgreater} value and the second
% for the {\bf\cmd{\the}\textless{\em sub-float\_type}\textgreater} value.
% Where there is only one `\#' it stands for the latter.
% 
% The \Lkv{listofindent} keyword sets the total indentation from the left
% margin, while the \Lkv{listofnumwidth} keyword controls the width of box 
% for the label number.  This is also the amount of extra indentation added
% to second and later lines of a multiple line entry.
% 
% \subsubsection{The \Lpack{Subfig} Layout}
% 
% The layout of the sub-float contains several internal values which may
% be changed to customize appearance of the object.  The following
% illustration shows the relationship of these values.
% Figure~\subref*{fig:layout-A} shows the standard layout
% with the caption following the figure.  The figure is vertically centered
% with some vertical space added above.  If this is a float at the top
% of the page, than the space is suppressed.  If the caption of the
% float follows the subfigures, than \Lkv{farskip} indicates the amount
% of space to skip.  Otherwise, if the float caption precedes the subfigures,
% than \Lkv{nearskip} indicates the value to use.  The best way to think
% of these two skips is that the \Lkv{nearskip} is closer to the main float
% caption than the \Lkv{farskip}.  After the subfigure, more vertical space,
% \Lkv{captionskip}, is added between the subfigure and the sub-caption.
% Finally, \Lkv{nearskip} (or \Lkv{farskip}) of vertical space added below.
% The baseline is located at the bottom of the figure.  It is along this
% baseline that adjacent subfigure boxes are aligned.
% 
% \begin{figure}
%   \captionsetup[subfloat]{singlelinecheck=true,margin=1cm,^
%                           farskip=0pt,nearskip=10pt}
%   \centering
%   \fboxsep=-\fboxrule
%   \setbox\tempbox\hbox{\Lkv{margin}}
%   \tempdimb \wd\tempbox
%   \tempdima \tempdimb
%   \advance\tempdimb 1mm
%   \setbox\tempbox\hbox to \tempdimb{^ \tempbox holds margin spacer
%     \hfil
%     \vbox to 20pt{^
%       \vskip4.3pt
%       \hbox to \tempdima{\leftarrowfill$\mkern-2.5mu\mathord\rightarrow$}
%       \hbox to \tempdima{\Lkv{margin}}
%       \vfil}^
%     \hfil}
%   \multiply\tempdimb -2
%   \advance\tempdimb 4.5in ^ \tempdimb is width of sub-caption box
%   \setbox\tempbox\hbox to 4.5in{^ \tempbox holds margin/sub-caption/margin
%     \copy\tempbox
%     \fbox{^
%       \vbox to 20pt{
%         \vskip1pt
%         \vbox to 0pt{
%           \hbox to\tempdimb{^
%             \vbox to 0pt{
%               \hbox to \tempdimb{^
%                 \hskip1pt^
%                 \leftarrowfill\Lkv{width}\rightarrowfill^
%                 \hskip1pt}
%               \vss}}
%           \vss}
%         \vfil
%         \hbox to\tempdimb{^
%           \hfil
%           {\scshape sub-caption}^
%           \hfil}
%         \vskip1.5pt}}^
%     \copy\tempbox
%     \hfil}
% ^
%   \subfloat[Standard layout (Sub-float: position=bottom).]{^
%     \label{fig:layout-A}^
%     \fbox{^
%       \parbox{4.5in}{^
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           (\Lkv{farskip} or \Lkv{nearskip})^
%           \hfil}
%         \fbox{^
%           \vbox to 45pt{
%             \vfil\vfil
%             \hbox to 4.5in{^
%               \hfil
%               {\scshape sub-float body}^
%               \hfil}
%             \vfil
%             \vbox to 0pt{
%               \vss
%               \hbox to 4.5in{^
%                 \hskip12pt^
%                 \hbox{\small Baseline}^
%                 \hfil}
%               \vskip1pt}}}
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           \Lkv{captionskip}^
%           \hfil}
%         \copy\tempbox
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           \Lkv{nearskip} or \Lkv{farskip}^
%           \hfil}
%         \vskip1pt}}}\\
% ^
%    \subfloat[Standard layout without a caption (Sub-float: position=bottom)]{^
%     \label{fig:layout-B}^
%     \fbox{^
%       \parbox{4.5in}{
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           (\Lkv{farskip} or \Lkv{nearskip})^
%           \hfil}
%         \fbox{^
%           \vbox to 45pt{
%             \vfil\vfil
%             \hbox to 4.5in{^
%               \hfil
%               {\scshape sub-float body}^
%               \hfil}
%             \vfil
%             \vbox to 0pt{^
%               \vss
%               \hbox to 4.5in{^
%                 \hskip12pt^
%                 {\small Baseline}^
%                 \hfil}
%               \vskip1pt}}}
%       \hbox to 4.5in{^
%         \hskip1.5in^
%         $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%         \Lkv{nearskip} or \Lkv{farskip}^
%         \hfil}
%       \vskip1pt}}}\\
% ^
%   \subfloat[Reversed layout (Sub-float: position=top).]{^
%     \label{fig:layout-C}^
%     \fbox{^
%       \parbox{4.5in}{
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           (\Lkv{farskip} or \Lkv{nearskip})^
%           \hfil}
%         \box\tempbox
%         \hbox to 4.5in{^
%           \hbox to 0pt{^
%             \hskip12pt
%             \smash{\raisebox{-6.5pt}{\small Baseline}}^
%             \hss}^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           \Lkv{captionskip}$+$\Lkv{topadjust}^
%           \hfil}
%         \fbox{^
%           \vbox to 45pt{
%             \vfil
%             \hbox to 4.5in{^
%               \hfil
%               {\scshape sub-float body}^
%               \hfil}
%             \vfil}}
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           \Lkv{nearskip} or \Lkv{farskip}^
%           \hfil}
%         \vskip1pt}}}\\
% ^
%    \subfloat[Standard layout without a caption (Sub-float: position=top)]{^
%     \label{fig:layout-D}^
%     \fbox{^
%       \parbox{4.5in}{
%         \vskip1pt
%         \hbox to 4.5in{^
%           \hbox to 0pt{^
%             \hskip12pt^
%             \smash{\raisebox{-6.5pt}{\small Baseline}}^
%             \hss}^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           (\Lkv{farskip} or \Lkv{nearskip})^
%           \hfil}
%         \fbox{^
%           \vbox to 45pt{
%             \vfil
%             \hbox to 4.5in{^
%               \hfil
%               {\scshape sub-float body}^
%               \hfil}
%             \vfil}}
%         \hbox to 4.5in{^
%           \hskip1.5in^
%           $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$^
%           \Lkv{nearskip} or \Lkv{farskip}^
%           \hfil}
%         \vskip1pt}}}^
% ^
%   \clearcaptionsetup{subfloat}^
%   \vspace{-10pt}^
%   \caption[Sub-float Layout.]{Sub-float Layout.  If the respective float 
%   caption position is \Lkv{bottom}, than the \Lkv{farskip} is used at
%   the top and the \Lkv{nearskip} is used at the bottom.  If the respective
%   float caption  position is \Lkv{top}, than these skips are reversed.
%   Also, the top skip is suppressed at the top of a page.}
%   \label{fig:layout}
% \end{figure}
%
% Figure~\subref*{fig:layout-C} shows the reversed case where
% the sub-caption precedes the figure (\ie, \Lkv{position=top}).  In
% this case the \Lkv{farskip} and \Lkv{nearskip} are placed according to
% the position of the float caption as above and the \Lkv{captionskip} is
% increased by \Lkv{topadjust}.  The other two cases,
% figures~\subref*{fig:layout-B} and \subref{fig:layout-D}),
% show the cases where there is no caption.  Note that the \Lkv{captionskip}
% (and \Lkv{topadjust} is left out when there is no caption.  Again, note
% also, for all of these cases, that the space at the top of the subfigure
% is automatically removed for items that are the first box in a vertical
% list or other than the first box in a horizontal list.  This allows
% tighter packing of the sub-floats and the full use of the page or
% \Lenv{minipage}.
% 
% Each of these values, \Lkv{farskip}, \Lkv{captionskip}, \Lkv{topadjust},
% and \Lkv{nearskip}\footnote{Also the \Lkv{margin} and \Lkv{width} keywords
% affect the \Lpack{subfig} layout, see section~\ref{sec:shape}}, may be
% changed from their defaults (see table~\ref{tab:keywords}) to adjust the
% subfigure for the current layout style.  In addition, they may all assume
% negative values, which in some cases may solve problems with the layout,
% but is not recommended, in general.
% 
% \subsubsection{The \Lpack{Subfig} Package Startup}
% \changes{v1.2}{21 January 2004}{Added ``The \Lpack{Subfig} Package
% Startup'' section.}
%
% The startup sequence for the \Lpack{subfig} package is to first load
% the \Lpack{caption} package (with no options) if it has not already
% been loaded.  Next it sets the following default values on the
% \Lvar{subfloat} variable:
%  \begin{quote}
%    |  \captionsetup[subfloat]{font=footnotesize,|\\
%    |                          labelformat=parens,labelsep=space,|\\
%    |                          listofformat=subparens}|
%  \end{quote}
%
% This overrides the \Lpack{caption} package default in which the font is 
% undefined and uses that of the surrounding document\footnote{If, in fact,
% \Lkv{font} is defined in the \Lpack{caption} options list before loading
% the \Lpack{subfig} package; than the above redefinition on the 
% \Lvar{subfloat} variable will hide that setting from all of the sub-floats.
% If you want them to have the same overall font setting (let's say 
% ``{bf,sl}''), than you will need to add one of the following sets of
% commands:
% \begin{quote}^
%   \cmd{\captionsetup}[subfloat]\{font=\{footnotesize,bf,sl\}\}
% \end{quote}
% or
% \begin{quote}^
%   \cmd{\captionsetup}\{labelfont=\{bf,sl\},textfont=\{bf,sl\}\}
% \end{quote}}; the label is \Lkv{simple} and followed by a \Lkv{colon}
% and space.  It also defines the \Lkv{listofformat} at this level in
% the case that it is added to the \Lpack{caption} package.
% Note that if the default settings to the \Lvar{subfloat} list are not
% desired, they may be removed with a |\clearcaptionsetup| command (see
% section~\ref{sec:config}).  Also the current settings may be checked
% using the following (here for a subfigure):
%  \begin{quote}^
%    |  \showcaptionsetup{figure}|\\
%    |  \showcaptionsetup{subfloat}|\\
%    |  \showcaptionsetup{subfigure}|
%  \end{quote}
% placed just before the |\subfloat| will show in the log what overrides
% are being applied at that point.
% 
% Second, any configuration files are loaded.  If there are more than one
% listed in the |\usepackage| options list, than they are loaded in the
% order specified in the list.
% 
% Next, the other (non-\Lkv{config}) options in the |\usepackage| options
% list are added to the \Lvar{subfloat} list.
% 
% Finally, the \Lpack{subfig} package finishes defining its functions and
% if the configuration file(s) have not already defined the sub-floats:
% \Lvar{subfigure} and \Lvar{subtable}, than they are defined.
% 
% \section{Compatibility With Other Packages.}
%
% This section discusses specific aspects of compatibility
% with other packages with which the subfig package is often
% used.
% 
% \subsection{\Lpack{Caption} Package}
% \changes{v1.2}{16 January 2004}{Removed mention of undocumented
% and/or unreleased \cmd{\topcaption} and \cmd{\bottomcaption} commands.}
% 
% The \Lpack{subfig} package requires the \Lpack{caption} package in
% order to format the sub-float captions.  However, the \Lkv{position}
% keyword option may only take two values when used with the \Lpack{subfig}
% package; those are, \Lkv{top} and \Lkv{bottom}.  Any other value will be
% treated as if \Lkv{position=bottom} was specified.
% 
% {\scshape\bf Warning}: By default (without the \Lfile{subfig.cfg} loaded),
% the \Lkv{position} values are expected to be defined prior to loading
% the \Lpack{subfig} package or defined afterward.  However they are
% defined, it is up to the user to insure that the captions are used
% correctly with the sub-captions, because using a caption, that is
% expected to precede the sub-captions, after the sub-captions 
% (or {\em vise-versa\/}) will cause the List-of-Floats page and float label
% references to be incorrect.
% 
% For compatibility with other packages which modify the caption and
% where the standard \Lpack{caption} package whould interfere with the
% desired layout, the \Lpack{caption} package has a special option,
% \Lkv{caption=false}, which loads the internals (\ie, the ``kernel''
% \Lpack{caption3} package) without modifying the \cmd{\caption} command.
% 
% \subsection{\Lpack{Float} Package}
% \label{sec:customfloat}
% \changes{v1.1}{12 January 2004}{Updated \Lkv{listofformat} value from
% \Lkv{simple} to \Lkv{subsimple}.}
% \changes{v1.2}{16 January 2004}{Removed duplicate line.}
% \changes{v1.2}{22 January 2004}{Removed separate setting of the mapname
% since the \Lpack{caption} package now fixes the float command 
% \cmd{\restylefloat*}.  Also, the same fix in the prolog of this document.}
% 
% To create a new sub-float, you first need a new floating environment.
% If you have that, great, otherwise, load the \Lpack{float} package and
% create one with a series of commands similar to the following.  Here
% we create a new \Lenv{map} environment so that the \Lpack{subfig}
% package will work with it.  For this example we have indicated that we
% expect to place the main float caption before the sub-floats.
% \begin{verbatim}
%     \usepackage{float}
%     \newfloat{map}{tbph}{lom}
%     \restylefloat*{map}
%     \floatstyle{plain}
%     \floatname{map}{Map}
%     \captionsetup[map]{position=top}
%     \newcommand{\listofmaps}{\listof{map}{List of Maps}}
% \end{verbatim}
% 
% Then you can then create the new sub-float with:
% \begin{verbatim}
%     \newsubfloat[position=top,listofformat=subsimple]{map}
% \end{verbatim}
% \noindent
% Here we also indicate that we want the sub-caption to be placed
% above the submaps and that the reference label on the list-of-maps
% page will be in simple plain format without parentheses.
%
% Now the |\subfloat| command will work in the \Lenv{map} environment.
%
% For example, the following code generates map~\ref{map:example}:
% \begin{verbatim}
%     \begin{map}%
%       \centering
%       \caption{This example shows two small maps.}%
%       \label{map:example}%
%       \subfloat[First map.]{...figure code...}%
%       \qquad
%       \subfloat[Second map.]{...figure code...}%
%     \end{map}
% \end{verbatim}
% \begin{map}^
%   \centering
%   \caption{This example shows two small maps.}^
%   \label{map:example}^
%   \subfloat[First map.]{^
%     \begin{picture}(86,42)(0,0)
%       \thicklines
%         \put(0,0){\framebox(86,42){}}
%       \thinlines
%         \qbezier(20,42)(20,38)(10,30)
%         \qbezier(10,30)(0,25)(0,0)
%         \qbezier(25,42)(25,38)(15,30)
%         \qbezier(15,30)(5,25)(5,0)
%         \put(28,38){\circle*{3}}
%         \put(18,8){\circle{15}}
%         \put(35,0){\line(0,1){30.0}}
%         \put(40,0){\line(0,1){30.0}}
%         \put(35,30){\line(1,2){6.0}}
%         \put(40,30){\line(1,2){6.0}}
%         \put(60,20){\circle{10}}
%         \put(57,35){\circle*{3}}
%         \put(70,10){\circle*{3}}
%         \put(65,42){\line(1,-1){21.0}}
%         \put(70,42){\line(1,-1){16.0}}
%     \end{picture}}
%   \qquad
%   \subfloat[Second map.]{^
%     \begin{picture}(86,42)(0,0)
%       \thicklines
%         \put(0,0){\framebox(86,42){}}
%       \thinlines
%         \put(10,35){\circle*{3}}
%         \put(17,10){\circle*{2}}
%         \qbezier(0,42)(43,42)(43,21)
%         \qbezier(43,21)(43,0)(86,0)
%         \qbezier(0,37)(38,37)(38,16)
%         \qbezier(38,16)(38,5)(55,0)
%         \put(45,38){\circle{5}}
%         \put(70,30){\circle*{8}}
%     \end{picture}}
% \end{map}
% 
% \subsection{\Lpack{FloatRow} Package}
% \changes{v1.3}{6 May 2005}{Added compatibility with the \Lpack{floatrow}
% package.}
% 
% This package is compatible with the the \Lpack{floatrow} package and
% contains hooks to allow it to work correctly with subfloats.  In
% particular, the existance of the \cmd{\FBsc@max} command in the package
% turns on the hooks.  See the code for the macros \cmd{\sf@@@subfloat} and
% \cmd{\sf@subcaption} for details.
% 
% The following code and table~\ref{tab:floatrow} show an example of
% using the \Lpack{floatrow} package to align captions.  Without it, the
% first caption, \subref{tab:floatrow:one}, would be located just above
% the first table rather than even with the first line of the second
% caption, \subref{tab:floatrow:two}.
% 
% \begin{quote}\small
%\null\qquad\vdots\\
%|\usepackage{booktabs}|\\
%|\usepackage{subfig}|\\
%|\captionsetup[table]{position=top}|\\
%|\captionsetup[subtable]{position=top}|\\
%\null\qquad\vdots\\
%|\usepackage[heightadjust=all,valign=t]{floatrow,fr-subfig}|\\
%|\floatsetup{style=Plaintop}|\\
%\null\qquad\vdots\\
%|\begin{table}%|\\
%|\floatbox{table}[\FBwidth]%|\\
%|         {\caption{Results in Two Tables.}%|\\
%|          \label{tab:floatrow}}{%|\\
%|  \begin{subfloatrow}|\\
%|    \subfloat[First Table of Results.]{\label{tab:floatrow:one}%|\\
%|      \begin{tabular}{lcc}                                   \toprule|\\
%|        \multicolumn{1}{c}{\raisebox{-1.5ex}{\bf Result Type}}|\\
%|                    & \multicolumn{2}{c}{\bf Result Data} \\ |\\
%|                    & {\bf Set One} & {\bf Set Two}       \\ \midrule|\\
%|        First type  & 0.24          & 4.12                \\|\\
%|        Second type & 1.34          & 2.01                \\|\\
%|        Third type  & 2.99          & 4.13                \\|\\
%|        Fourth type & 2.67          & 0.08                \\ \bottomrule|\\
%|      \end{tabular}}|\\
%|    \subfloat[Second Table of Results.][Second Table of Results.|\\
%|              However, this one has a very long caption that causes|\\
%|              problems with alignment.]{\label{tab:floatrow:two}%|\\
%|      \begin{tabular}{lccc}                                      \toprule|\\
%|        \multicolumn{1}{c}{\raisebox{-1.5ex}{\bf Result Type}}|\\
%|                    & \multicolumn{2}{c}{\bf Result Data}     \\|\\
%|                    & {\bf Set 1} & {\bf Set 2} & {\bf Set 3} \\ \midrule|\\
%|        First type  & 4.20        & blue        & 2.14        \\|\\
%|        Second type & 4.31        & red         & 1.02        \\|\\
%|        Third type  & 4.31        & green       & 8.01        \\ \bottomrule|\\
%|      \end{tabular}}|\\
%|  \end{subfloatrow}}%|
%|\end{table}|
% \end{quote}
% \begin{table}^     When/if the floatrow package becomes generally distributed, 
%   \centering ^                        we can substitute the above example code
%   \caption{Results in Two Tables.}^  for this hacked code, which has to figure 
%   \label{tab:floatrow}^                out the magic numbers: 179bp and 188bp.
%   \captionsetup[subtable]{position=below,captionskip=0pt,farskip=3pt}
%   \subfloat[First Table of Results.]{^
%       \label{tab:floatrow:one}^
%       \vrule height 0pt width 179bp}^
%   \hfill
%   \subfloat[Second Table of Results.][Second Table of Results.
%             However, this one has a very long caption that causes
%             problems with alignment.]{^
%       \label{tab:floatrow:two}^
%       \vrule height 0pt width 188bp}\\
%   \captionsetup[subtable]{position=above}^
%   \subfloat{^
%     \begin{tabular}{lcc}                                   \toprule
%       \multicolumn{1}{c}{\raisebox{-1.5ex}{\bf Result Type}}
%                   & \multicolumn{2}{c}{\bf Result Data} \\ 
%                   & {\bf Set One} & {\bf Set Two}       \\ \midrule
%       First type  & 0.24          & 4.12                \\
%       Second type & 1.34          & 2.01                \\
%       Third type  & 2.99          & 4.13                \\
%       Fourth type & 2.67          & 0.08                \\ \bottomrule
%     \end{tabular}}^
%   \hfill
%   \subfloat{^
%     \begin{tabular}{lccc}                                      \toprule
%       \multicolumn{1}{c}{\raisebox{-1.5ex}{\bf Result Type}}
%                   & \multicolumn{2}{c}{\bf Result Data}     \\
%                   & {\bf Set 1} & {\bf Set 2} & {\bf Set 3} \\ \midrule
%       First type  & 4.20        & blue        & 2.14        \\
%       Second type & 4.31        & red         & 1.02        \\
%       Third type  & 4.31        & green       & 8.01        \\ \bottomrule
%     \end{tabular}}^
% \end{table}
%
% \subsection{\Lpack{verbatim} and \Lpack{fancyvrb} packages}
% \label{sec:verbatim}
% \changes{v1.3}{4 July 2005}{Added documentation about including
% verbatim text in a subfloat.}
% 
% You cannot place a \Lenv{verbatim} environment inside of the
% \cmd{\subfloat} command because the \Lenv{verbatim} environment needs
% to change the character classes before the text in the environment is
% read by \TeX.  Therefore, if you really want to include verbatim text
% inside a sub-float, you will need to place the verbatim text into a
% box and then feed the box to the \cmd{\subfloat} command.
% 
% One way to do this is by defining and using a \Lenv{SubFloat}
% environment, as shown in figure\ref{fig:label}.  Such as placing the
% following in the preamble of your paper:
% 
% \begin{quote}
%   |\makeatletter|\\
%   |\newbox\sf@box|\\
%   |\newenvironment{SubFloat}[2][]%|\\
%   |  {\def\sf@one{#1}%|\\
%   |   \def\sf@two{#2}%|\\
%   |   \setbox\sf@box\hbox|\\
%   |     \bgroup}%|\\
%   |  {  \egroup|\\
%   |   \ifx\@empty\sf@two\@empty\relax|\\
%   |     \def\sf@two{\@empty}|\\
%   |   \fi|\\
%   |   \ifx\@empty\sf@one\@empty\relax|\\
%   |     \subfloat[\sf@two]{\box\sf@box}%|\\
%   |   \else|\\
%   |     \subfloat[\sf@one][\sf@two]{\box\sf@box}%|\\
%   |   \fi}|\\
%   |\makeatother|\\
% \end{quote}
% \noindent
% and then using it in your code as shown below.  While this does not
% exactly produce the options shown in table~\ref{tab:calling}, it is
% close enough for regular use and may be adjusted if necessary.
% 
% \begin{quote}
%   |\begin{figure}|\\
%   |  \centering|\\
%   |  \begin{SubFloat}[Black box]{\label{fig:label1}Caption 1.}%|\\
%   |    \rule{4cm}{3cm}%...blackbox subfigure...|\\
%   |  \end{SubFloat}%|\\
%   |  \hspace{1.5cm}%|\\
%   |  \begin{SubFloat}{\label{fig:label2}Caption 2.}%...verbatim subfigure with |\\
%   |    \begin{minipage}[b]{0.3\linewidth}%  a minipage to control the width...|\\
%   |      \begin{verbatim}|\\
%   |abc  def ghi   jkl|\\
%   |   xx   x   xxx|\\
%   |abc  def ghi   jkl|\\
%   |      \end{verbatim}%|\\
%   |    \end{minipage}%|\\
%   |  \end{SubFloat}|\\
%   |  \caption{Main Caption.}|\\
%   |  \label{fig:label}|\\
%   |\end{figure}|
% \end{quote}
% \begin{figure}
%   \centering
%   \begin{SubFloat}[Black box]{\label{fig:label1}Caption 1.}^
%     \rule{4cm}{3cm}^...blackbox subfigure...
%   \end{SubFloat}^
%   \hspace{1.5cm}^
%   \begin{SubFloat}{\label{fig:label2}Caption 2.}^...verbatim subfigure with 
%     \begin{minipage}[b]{0.3\linewidth}^  a minipage to control the width...
%       \begin{verbatim}
% abc  def ghi   jkl
%    xx   x   xxx
% abc  def ghi   jkl
%       \end{verbatim}^
%     \end{minipage}^
%   \end{SubFloat}
%   \caption{Main Caption.}
%   \label{fig:label}
% \end{figure}
%
% \subsection{\Lpack{IEEEtrans} Class}
%
% The \Lpack{IEEEtrans} Class defines its own caption layout.
% Therefore to use the \Lpack{subfig} package, you need to 
% ``turn off'' the \Lpack{caption} package.  The following
% two setups are the same:
%  \begin{quote}^
%    |  \usepackage[caption=false]{caption}|\\
%    |  \usepackage[...]{subfig}|
%  \end{quote}
% or
%  \begin{quote}^
%    |  \usepackage[caption=false, ...]{subfig}|
%  \end{quote}
%
% \subsection{Other Packages}
% 
% The \Lpack{subfig} package has been tested with the following
% packages and is known to work correctly.\footnote{If you find
% any problem with these or any other package, please create a
% small example demonstrating the problem and send it to the 
% author.}
% 
% \begin{itemize}\parskip-5pt
%   \item \Lpack{fixltx2e}
%   \item \Lpack{captcont}
%   \item \Lpack{hyperref}
%   \item \Lpack{hypcap}
% \end{itemize}
% 
% Further, the following packages are known not to work with, or
% that have some problems when used with the \Lpack{subfig} package:
%
% \begin{itemize}\parskip-5pt
%   \item \Lpack{ccaption}
%   \item \Lpack{hvfloat}
%   \item \Lpack{nonfloat}
% \end{itemize}
% 
% \subsection{Backward Compatibility with the \Lpack{Subfigure} Package}
% \label{sec:back-compat}
% 
% The following code sets up a configuration file to make the \Lpack{subfig}
% package be nearly compatible with the older \Lpack{subfigure} package.
% The first major difference is that the spacing is not quite the same 
% due to internal changes in the sub-float setup and that some of the 
% old tweaks that involved changing internal variables often will no 
% longer work.
%
% The other major change si that the old \Lkv{topskip} and \Lkv{bottomskip}
% no longer exist and their replacements \Lkv{farskip} and \Lkv{nearskip}
% act differently.  The new skips also surround the sub-caption and 
% sub-float body, but where the \Lkv{bottomskip} was always next to the
% sub-caption, the new \Lkv{nearskip} is always nearer the man (float)
% caption.  The other two vary in the same way.  Normally, this difference
% is minor and can be ignored, but in some cases you will need to adjust
% them to get your desired {\em look and feel}.
% 
% \begin{macro}{\subfigure}
% \begin{macro}{\subtable}
% \changes{v1.2}{16 January 2004}{Removed code that forces the figure or
% table to be in some place.  The default will be \Lkv{bottom} if nothing 
% else is set.}
% \changes{v1.2}{28 January 2004}{Added default setting of \Lkv{loose}.}
%
% The first section creates the |\subfigure| and the |\subtable| commands.
% 
% \iffalse
%<*newconf>
% \fi
%
%    \begin{macrocode}
\@ifundefined{c@subfigure}{\newsubfloat{figure}}{}
\def\subfigure{\subfloat}
%    \end{macrocode}
%
%
%    \begin{macrocode}
\@ifundefined{c@subtable}{\newsubfloat{table}}{}
\def\subtable{\subfloat}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \changes{v1.3}{18 March 2004}{Generalized boolean values.}
%
% Next we restore the caption value-keywords for the option list.
% Currently these are available within the main document with the
% |\captionsetup| command.  However, this may change in a later
% release of the \Lpack{subfig} package.
%
%    \begin{macrocode}
\DeclareCaptionOption{normal}[]{\caption@setformat{default}}
\DeclareCaptionOption{isu}[]{\caption@setformat{format=hang}}
\DeclareCaptionOption{format=hang}[]{\caption@setformat{format=hang}}
\DeclareCaptionOption{center}[]{\caption@setjustification{centering}}
\DeclareCaptionOption{anne}[]{\caption@setjustification{centerlast}}
\DeclareCaptionOption{centerlast}[]{\caption@setjustification{centerlast}}
\DeclareCaptionOption{nooneline}[]{\sf@setbool{slc}{0}}
\DeclareCaptionOption{scriptsize}[]{\def\captionfont{\scriptsize}}
\DeclareCaptionOption{footnotesize}[]{\def\captionfont{\footnotesize}}
\DeclareCaptionOption{small}[]{\def\captionfont{\small}}
\DeclareCaptionOption{normalsize}[]{\def\captionfont{\normalsize}}
\DeclareCaptionOption{large}[]{\def\captionfont{\large}}
\DeclareCaptionOption{Large}[]{\def\captionfont{\Large}}
\DeclareCaptionOption{up}[]{\l@addto@macro\captionlabelfont\upshape}
\DeclareCaptionOption{it}[]{\l@addto@macro\captionlabelfont\itshape}
\DeclareCaptionOption{sl}[]{\l@addto@macro\captionlabelfont\slshape}
\DeclareCaptionOption{sc}[]{\l@addto@macro\captionlabelfont\scshape}
\DeclareCaptionOption{md}[]{\l@addto@macro\captionlabelfont\mdseries}
\DeclareCaptionOption{bf}[]{\l@addto@macro\captionlabelfont\bfseries}
\DeclareCaptionOption{rm}[]{\l@addto@macro\captionlabelfont\rmfamily}
\DeclareCaptionOption{sf}[]{\l@addto@macro\captionlabelfont\sffamily}
\DeclareCaptionOption{tt}[]{\l@addto@macro\captionlabelfont\ttfamily}
\DeclareCaptionOption{ruled}[1]{\sf@setbool{ruled}{#1}}
\DeclareCaptionOption{singlelinecheck}[true]{\sf@setbool{slc}{#1}}
\DeclareCaptionOption{oneline}[1]{\sf@setbool{slc}{#1}}
\DeclareCaptionOption{justified}[]{\caption@setjustification{justified}}
\DeclareCaptionOption{centering}[]{\caption@setjustification{centering}}
\DeclareCaptionOption{centerfirst}[]{\caption@setjustification{centerfirst}}
\DeclareCaptionOption{flushright}[]{\caption@setjustification{raggedleft}}
\DeclareCaptionOption{raggedleft}[]{\caption@setjustification{raggedleft}}
\DeclareCaptionOption{raggedright}[]{\caption@setjustification{raggedright}}
\DeclareCaptionOption{RaggedRight}[]{\caption@setjustification{RaggedRight}}
\DeclareCaptionOption{RaggedLeft}[]{\caption@setjustification{RaggedLeft}}
\DeclareCaptionOption{Centering}[]{\caption@setjustification{Centering}}
%    \end{macrocode}
%
% The second list of value-keywords allows the uppercase font options to
% set the font for the caption text.
%
%    \begin{macrocode}
\DeclareCaptionOption{UP}[]{\l@addto@macro\captiontextfont\upshape}
\DeclareCaptionOption{IT}[]{\l@addto@macro\captiontextfont\itshape}
\DeclareCaptionOption{SL}[]{\l@addto@macro\captiontextfont\slshape}
\DeclareCaptionOption{SC}[]{\l@addto@macro\captiontextfont\scshape}
\DeclareCaptionOption{MD}[]{\l@addto@macro\captiontextfont\mdseries}
\DeclareCaptionOption{BF}[]{\l@addto@macro\captiontextfont\bfseries}
\DeclareCaptionOption{RM}[]{\l@addto@macro\captiontextfont\rmfamily}
\DeclareCaptionOption{SF}[]{\l@addto@macro\captiontextfont\sffamily}
\DeclareCaptionOption{TT}[]{\l@addto@macro\captiontextfont\ttfamily}
%    \end{macrocode}
%
% Next, the \Lpack{subfigure} ``\dots topcap'' and ``\dots bottomcap'' options
% are emulated using the new ``position'' option.
%
%    \begin{macrocode}
\DeclareCaptionOption{figbotcap}[]{\captionsetup[figure]{position=bottom}}
\DeclareCaptionOption{tabbotcap}[]{\captionsetup[table]{position=bottom}}
\DeclareCaptionOption{FIGBOTCAP}[]{\captionsetup[figure]{position=bottom}%
                                   \captionsetup[subfigure]{position=bottom}}
\DeclareCaptionOption{TABBOTCAP}[]{\captionsetup[table]{position=bottom}%
                                   \captionsetup[subtable]{position=bottom}}
\DeclareCaptionOption{figtopcap}[]{\captionsetup[figure]{position=top}}
\DeclareCaptionOption{tabtopcap}[]{\captionsetup[table]{position=top}}
\DeclareCaptionOption{FIGTOPCAP}[]{\captionsetup[figure]{position=top}%
                                   \captionsetup[subfigure]{position=top}}
\DeclareCaptionOption{TABTOPCAP}[]{\captionsetup[table]{position=top}%
                                   \captionsetup[subtable]{position=top}}
%    \end{macrocode}
%
% \changes{v1.3}{26 October 2004}{Fixed problem with the ``loose'' and
% ``tight'' options.}
% Then, the ``loose'' and ``tight'' options are approximately
% emulated.
%
%    \begin{macrocode}
\DeclareCaptionOption{loose}[]{%
    \captionsetup{farskip=10pt,topadjust=0pt,captionskip=10pt,%
                            nearskip=10pt,margin=10pt}}
\DeclareCaptionOption{tight}[]{%
    \captionsetup{farskip=5pt,topadjust=0pt,captionskip=3pt,%
                  nearskip=5pt,margin=0pt}}
%    \end{macrocode}
%
% We can now set the sub-float defaults beyond what is set in the
% \Lpack{subfig} package.  We only need to set the default to the 
% \Lkv{loose} settings.
%
%    \begin{macrocode}
\captionsetup[subfloat]{loose}
%    \end{macrocode}
%
% Finally, we redefine the starred form of \cmd{\subref} to 
% \cmd{\Subref}.
% 
%    \begin{macrocode}
\def\Subref{\subref*}
%    \end{macrocode}
%
% \iffalse
%</newconf>
% \fi
%
% \section{Some Examples}
% \changes{v1.2}{16 January 2004}{Fixed typo: ``Someg eneral'' to 
% ``Some general''.}
% \label{sec:examples}
% 
% The easiest way to show the use of this package is to give a few
% examples.  The two most important things to remember when working with
% the \Lpack{subfig} package are that (1) the sub-floats are aligned
% along their baselines (see figure~\ref{fig:layout} and (2) that
% whitespace in the floating environments are significant and affect the
% layout.
% 
% The baseline of the sub-float is usually at the bottom of the sub-float
% body or (when the sub-caption appears at the top) at the bottom of the
% sub-caption {\em and\/} the \Lkv{captionskip} space---which is usually
% the same as the top of the sub-float.  However sometimes, especially
% when using the \Lenv{tabular}, \Lenv{array}, or \Lenv{minipage}
% environments to build the figure, the baseline appears elsewhere.  The
% above three environments are all aligned at their center by default
% but that may be changed with the optional `{\bf [t]}' or `{\bf [b]}'
% arguments.  As a last resort you can wrap all of your figures in a
% |\vtop| box with a |\vbox to 0pt{\null}| at the top followed by the
% sub-float body.
% 
% If your sub-float is not quite centered or where you want it to be, the
% problem is often a space character being placed to one side or the
% other of the sub-float body.  Some general rules of thumb
% are:\footnote{See chapters 7 and 8 of ``The \TeX book'' \cite{Knut86}
% for details.}
% \begin{itemize}\parskip-2pt
%   \item Two end-of-lines following each other (ignoring any
%         whitespace) are turned into a |\par| or paragraph break.
%   \item Multiple whitespace (including the end-of-line) are
%         compressed into a single space.
%   \item The spaces after a macro command name (\eg, |\foo|) 
%         are ignored.
%   \item A `\%' character at the end of the line suppresses the
%         end-of-line and all of the spaces (if any) at the
%         beginning of the next line.
% \end{itemize}
% 
% To suppress significant extra whitespace, you can add some `\%'
% characters at the end of each line that doesn't end with a command name.
% This is more than is required, but extra `\%' usually don't cause a
% problem.
% 
% \subsection{A Simple Example}
% 
% \begin{figure}^
%   \centering
%   \fboxsep=-\fboxrule
%   \fbox{^  
%     \begin{minipage}{4.0in}^
%       \vspace{10pt}^
%       \centering
%       \begin{minipage}{3.5in}^
%         \centering
%           \subfloat[First.]{^
%             \fbox{\hbox to 20mm{\vbox to 15mm{\vfil\null}\hfil}}}\qquad
%           \subfloat[Second figure.]{^
%             \fbox{\hbox to 20mm{\vbox to 10mm{\vfil\null}\hfil}}}\\[6pt]
%           \subfloat[Third.]{\label{3figs-c}^
%             \fbox{\hbox to 20mm{\vbox to 10mm{\vfil\null}\hfil}}}\\
%           \caption{Three sub-floats.}^
%           \label{3figs}^
%           \rr
%           \vspace{15pt}^
%           Figure~\ref{3figs} contains two top `sub-floats' and
%           sub-float~\ref{3figs-c}.$\!$\footnotemark
%         \end{minipage}^
%       \vspace{4pt}^
%     \end{minipage}}
%   \vspace{-5pt}^
% \end{figure}
% \footnotetext{In this and later boxed figures, the boxes are intended to
% represent a portion of the page in which the figure occurs.  This is
% usually to show the figure along with some text or to show the effect
% of some option on multiple pages.}
%
% \noindent
% The first example, shown in figure~\ref{3figs}, specifies |\centering|
% to horizontally center the set of sub-floats, and uses |\\| and some
% horizontal space (using |\qquad|) to control the placement of the
% sub-floats.  Note that the alignment of the top two sub-floats is along
% the bottom of the body portion of each.
% 
% \begin{quote}
%   |  \begin{figure}%|\\
%   |    \centering|\\
%   |    \subfloat[First.]{...}\qquad|\\
%   |    \subfloat[Second figure.]{...}\\|\\
%   |    \subfloat[Third.]{\label{3figs-c}...}%|\\
%   |    \caption{Three sub-floats.}|\\
%   |    \label{3figs}|\\
%   |  \end{figure}|\\
%   \null\qquad\vdots\\
%   |  Figure~\ref{3figs} contains two top `sub-floats' and|\\
%   |  sub-float~\ref{3figs-c}.|
% \end{quote}
% 
% \subsection{A More Advanced Example}
% \changes{v1.1}{12 January 2004}{Updated \Lkv{listofformat} value from
% \Lkv{simple} to \Lkv{subsimple}.}
% \changes{v1.2}{16 January 2004}{Fixed old reference to \cmd{\subfigure}
% to \cmd{\subfloat}.}
% 
% A second example, shown in figure~\ref{fig:ex2}, demonstrates how to
% change the sub-float labels and have the sub-captions printed on the
% List-of-Figures.
% 
% The first |\renewcommand| changes the reference to |\thesubfigure| to
% return both the figure number and the subfigure number separated with
% a period.  The next two |\renewcommand|'s turn off the |\p@subfigure|
% (since it is now included in |\thesubfigure| and adds the colon and
% space to the subfigure label.   Also, the \Lcount{lofdepth} is set to
% ``2'' so as to allow the subfigure captions to show when the
% |\listoffigures| loads the \Lfile{lof} file.  Finally, the \Lenv{figure}
% is defined and a little following text is given that refers to it.
% \begin{quote}
%   |  \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}}|\\
%   |  \captionsetup[subfigure]{labelformat=simple,labelsep=colon,|\\
%   |                           listofformat=subsimple}|\\
%   |  \captionsetup{lofdepth=2}|\\
%   |  \makeatletter|\\
%   |    \renewcommand{\p@subfigure}{}|\\
%   |  \makeatother|\\
%   \null\qquad\vdots\\
%   |  \listoffigures|\\
%   \null\qquad\vdots\\
%   |  \begin{figure}%|\\
%   |    \centering|\\
%   |    \subfloat[First.]{%|\\
%   |      \label{fig:first}%|\\
%   |      ...figure code...}%|\\
%   |    \qquad|\\
%   |    \subfloat[Second.]{%|\\
%   |      \label{fig:second}%|\\
%   |      ...figure code...}%|\\
%   |    \caption{Two sub-floats.}|\\
%   |  \end{figure}|\\
%   \null\qquad\vdots\\
%   |  See figures~\ref{fig:first} and \ref{fig:second}.|
% \end{quote}%
% \begin{figure}^
%   \centering
%   \fboxsep=-\fboxrule
%   \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}}^
%   \captionsetup[subfigure]{labelformat=simple,labelsep=colon,
%                            listofformat=subsimple}
%   \captionsetup{lofdepth=2}^
%   \makeatletter
%     \renewcommand{\p@subfigure}{}^
%   \makeatother
%   \fbox{^
%     \begin{minipage}{4.0in}^
%       \centering
%       \begin{minipage}{3.5in}^
%         \vspace{.1in}^
%         \section*{ List of Figures}^
%         \vspace{-15pt}^
%         \hspace{40pt}\vdots
%         \vspace{3pt}^
%         \contentsline{figure}{\numberline{\ref{fig:ex2}}^
%                      {\ignorespaces Two sub-floats.}}{\pageref{fig:ex2}}^
%                      {figure.93}^
%         \contentsline{subfigure}{\numberline{\ref{fig:first}}^
%                      {\ignorespaces First.}}{\pageref{fig:first}}^
%                      {subfigure.93.1}^
%         \contentsline{subfigure}{\numberline{\ref{fig:second}}^
%                      {\ignorespaces Second.}}{\pageref{fig:second}}^
%                      {subfigure.93.2}^
%         \hspace{40pt}\vdots
%         \vspace{8pt}^
%       \end{minipage}^
%     \end{minipage}}\\
%   \fbox{^
%     \begin{minipage}{4.0in}^
%       \centering
%       \begin{minipage}{3.5in}^
%         \vspace{10pt}^
%         \centering
%         \subfloat[First.]{^
%           \label{fig:first}^
%           \fbox{\hbox to 22mm{\vbox to 15mm{\vfil\null}\hfil}}}^
%         \hspace{14pt}^
%         \subfloat[Second.]{^
%           \label{fig:second}^
%           \fbox{\hbox to 22mm{\vbox to 15mm{\vfil\null}\hfil}}}\\
%         \caption{Two sub-floats.}^
%         \label{fig:ex2}^
%         \rr
%         See figures~\ref{fig:first} and \ref{fig:second}.
%         \vspace{4pt}^
%       \end{minipage}^
%     \end{minipage}}^
% \end{figure}
%
% \subsection{An Example Without Sub-caption Text}
% \label{sec:ex3}
% 
% The next example, shown in figure~\ref{fig:ex3}, demonstrates a
% commonly required format where the subfigure are just labeled and the
% description occurs in the main caption.  This is easy to do by using
% the ``empty'' optional caption arguments ``[\space ][\space ]''.  This
% creates a label for the subfigure in the text, but it does not show on
% the list-of-figures page.  However, by default the caption may not be
% perfectly centered, so |\subfiglabelskip| is reduced to zero points to
% ensure that there is not any extra space hidden in the sub-caption.  To
% refer to the subfigure label within the text or the main caption, you
% can use the |\subref| command, which is similar to the |\ref| command,
% but does not carry the figure number.
%
% \begin{quote}
%   |  \listoffigures|\\
%   \null\qquad\vdots\\
%   |  \begin{figure}%|\\
%   |    \centering|\\
%   |    \subfloat[][]{%|\\
%   |      \label{fig:ex3-a}%|\\
%   |      ...figure code...}%|\\
%   |    \hspace{8pt}%|\\
%   |    \subfloat[][]{%|\\
%   |      \label{fig:ex3-b}%|\\
%   |      ...figure code...}\\|\\
%   |    \subfloat[][]{%|\\
%   |      \label{fig:ex3-c}%|\\
%   |      ...figure code...}%|\\
%   |    \hspace{8pt}%|\\
%   |    \subfloat[][]{%|\\
%   |      \label{fig:ex3-d}%|\\
%   |      ...figure code...}%|\\
%   |    \caption[A set of four sub-floats.]{A set of four sub-floats:|\\
%   |             \subref{fig:ex3-a} describes the first sub-float;|\\
%   |             \subref{fig:ex3-b} describes the second sub-float;|\\
%   |             \subref{fig:ex3-c} describes the third sub-float; and,|\\
%   |             \subref{fig:ex3-d} describes the last sub-float.}%|\\
%   |    \label{fig:ex3}%|\\
%   |  \end{figure}|\\
%   \null\qquad\vdots\\
%   |  The text references the main figure as figure~\ref{fig:ex3}|\\
%   |  or part of it as|\\
%   |  figures~\subref*{fig:ex3-a}--\subref{fig:ex3-c}.|
% \end{quote}%
% \begin{figure}^
%   \centering
%   \fboxsep=-\fboxrule
%   \fbox{^
%     \begin{minipage}{4.0in}^
%       \centering
%       \begin{minipage}{3.5in}^
%         \setcounter{lofdepth}{2}^
%         \vspace{.1in}^
%         \section*{List of Figures}^
%         \vspace{-15pt}^
%         \hspace{40pt}\vdots
%         \vspace{3pt}^
%         \contentsline{figure}{\numberline{\ref{fig:ex3}}^
%                      {\ignorespaces A set of four sub-floats.}}^
%                      {\pageref{fig:ex3}}^
%                      {figure.94}^
%         \hspace{40pt}\vdots
%         \vspace{8pt}^
%       \end{minipage}^
%     \end{minipage}}\\
%   \fbox{^
%     \begin{minipage}{4.0in}^
%       \centering
%       \begin{minipage}{3.5in}^
%         \vspace{7pt}^
%         \centering
%         \makeatletter
%         \subfloat[][]{^
%           \label{fig:ex3-a}^
%           \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%         \hspace{8pt}^
%         \subfloat[][]{^
%           \label{fig:ex3-b}^
%           \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}\\
%         \subfloat[][]{^
%           \label{fig:ex3-c}^
%           \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%         \hspace{8pt}^
%         \subfloat[][]{^
%           \label{fig:ex3-d}^
%           \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}^
%         \caption[A set of four sub-floats.]{A set of four sub-floats:
%                  \subref{fig:ex3-a} describes the first sub-float;
%                  \subref{fig:ex3-b} describes the second sub-float;
%                  \subref{fig:ex3-c} describes the third sub-float; and,
%                  \subref{fig:ex3-d} describes the last sub-float.}^
%         \label{fig:ex3}^
%         \rr
%         The text references the main figure as figure~\ref{fig:ex3}
%         or part of it as 
%         figures~\subref*{fig:ex3-a}--\subref{fig:ex3-c}.
%         \vspace{4pt}^
%       \end{minipage}^
%     \end{minipage}}^
% \end{figure}
% 
% \subsection{Another Example}
% \changes{v1.3}{24 March 2004}{Added another example based on a received
%  question.}
% \label{sec:ex4}
%
% I was asked if it was possible to center a smaller subfigure next to
% a larger one while keeping the sub-captions lined up.  The answer is
% yes.  The older way, shown here, is to vertically center the smaller 
% subfigure in a |\vbox| the same height as the larger subfigure.  To 
% make it more interesting, we will also assume that we are not sure 
% what the height of the larger subfigure will be. 
%
% First we place the larger subfigure in a ``savebox'' and then use
% the height of the ``savebox'' to build the |\vbox| to contain the
% smaller subfigure. The result is shown in figure~\ref{fig:vertcenter}.
%
% \newcommand{\figbox}[3]{{^
%   \fboxsep = -\fboxrule
%   \hbox to #2{^
%     \fbox{^
%       \vbox to #1{^
%         \vfil
%         \hbox to #2{^
%           \hfil
%           #3
%           \hfil}^
%         \vfil}}}}}
% \begin{figure}^
%   \centering
%   \sbox{\tempbox}{\figbox{2in}{2in}{Big box}}^
%   \subfloat[Big figure]{\usebox{\tempbox}}^
%   \qquad
%   \subfloat[Small figure]{^
%     \vbox to \ht\tempbox{^
%       \vfil
%        \figbox{1in}{1in}{Small box}^
%       \vfil}}^
%   \caption{Two more sub-floats.}
%   \label{fig:vertcenter}
% \end{figure}
% \begin{quote}
%   |\newsavebox{\tempbox}|\\
%   \null\qquad\vdots\\
%   |\begin{figure}%|\\
%   |  \centering|\\
%   |  \sbox{\tempbox}{|\dots|figure code|\dots|}%|\\
%   |  \subfloat[Big figure]{\usebox{\tempbox}}%|\\
%   |  \qquad|\\
%   |  \subfloat[Small figure]{%|\\
%   |    \vbox to \ht\tempbox{%|\\
%   |      \vfil|\\
%   |      |\dots|figure code|\dots\\
%   |      \vfil}}%|\\
%   |  \caption{Two more sub-floats.}|\\
%   |  \label{fig:vertcenter}|\\
%   |\end{figure}|
% \end{quote}%
%
% The \Lpack{floatrow} package will automatically check the heights and 
% widths of your figures and captions and can align your subfigures
% pretty much any way that you want.  For more information, see the 
% \Lpack{subfig} package documentation \cite{Lapk05}.
%
% \section{Frequently Asked Questions (FAQs)}
% \label{sec:faq}
% 
% The ten most frequently asked questions about the \Lpack{subfig}
% package are:
% 
% \subsection{``My sub-floats are not aligned along their bottoms. Why?''}
% \label{sec:faq:align}
% 
% Remember! The \Lpack{subfig} package aligns sub-floats along
% their baselines with the sub-caption (if any) sticking out above or
% below.  The above problem is usually due to using a \Lenv{minipage},
% \Lenv{tabular} or \Lenv{array} environment that, by default,
% places the baseline at the center of the box that it generates.  If
% the two sub-floats are different sizes, or if one sub-float is generated
% in some other way with its baseline not at the expected place (perhaps
% an |\includegraphics|), then the sub-float will be misaligned.  One
% solution is to use the environment options `[t]' or `[b]' to move the
% baseline to the top or bottom rather than the center.
% 
% \subsection{``How can I get my floats/sub-floats to line up the way I
% want?''}
% \label{sec:faq:blanks}
% 
% A similar question, but this one is caused by extra whitespace in the
% source text generating spaces next to the floats, and |\par|'s
% generated by blank lines.  The main thing is {\it be aware\/} that
% extra whitespace can move floats and sub-floats around, sometimes a lot
% and sometimes just a little so that they look ``wrong''.  Placing too
% many `\%'s at the end of the lines is better than too few in the
% various float environments.  (See the discussion of ``white space'' in
% section~\ref{sec:examples}.)
% 
% \subsection{``I have too many sub-floats for one page, How can I spread
%             them over two or more pages and continue the numbering?''}
% \label{sec:faq:cont}
% 
% The |\ContinuedFloat| command makes creating continued floating
% environments easy.  See the discussion in section~\ref{sec:cont}.
% 
% \subsection{``Why do I get a garbled caption or an error when I use
%             square brackets?''}
% \label{sec:faq:brackets}
%
% \begin{verbatim}
%   \subfloat[SHIFT: ``register[3] $<<=$ 3;'']{... float text ...}
% \end{verbatim}
% 
% Since the |\subfloat| command has an optional argument, delimited
% with square brackets, before their required argument, you cannot
% use the `]' character at the top level of either the 
% \meta{sub-caption} or \meta{list\_entry} argument.  To overcome this
% problem, you must wrap all or the portion of the text containing
% the `]' character, in a pair of curly brackets (see
% \cite[\textsection~C.1.1]{Lamp94} for more detail). For example:
%
% \begin{verbatim}
%   \subfloat[SHIFT: ``register{[3]} $<<=$ 3;'']{... float text ...}
% \end{verbatim}
% \vspace{-15pt}
% \noindent
% or
% \vspace{-2pt}
% \begin{verbatim}
%   \subfloat[{SHIFT: ``register[3] $<<=$ 3;''}]{... float text ...}.
% \end{verbatim}
% 
% \subsection{``How do I make my subcaptions print on the List-of-Floats
%  pages?''}
% \label{sec:faq:depth}
% \changes{v1.3}{27 February 2004}{Added FAQ for setting the individual
%  List-of-Floats depth variables in order to show the subcaptions.}
%
% You need to set the depth counter for each type of List-of-Floats page
% to ``2'' or greater.  You can do this in two ways.  The first is by
% using the standard |\setcounter| command; for instance, if you want
% to show your subtable captions you will need to set the \Lkv{lotdepth}
% counter before the |\listoftables| command:
%  \begin{quote}^
%    |  \setcounter{lotdepth}{2}|
%  \end{quote}
%
% The other way of setting this is to use the package option list or 
% the |\captionsetup| command and {\bf globally} 
% (see section~\ref{sec:layers}) set the assoicated counter (again
% before using the |\listoftables| command), \eg:
%  \begin{quote}^
%    |  \captionsetup{lotdepth=2}|
%  \end{quote}
%
% \subsection{``I set an option and it had no effect. What is happening?''}
% \label{sec:faq:options_overview}
% 
% Most likely, the option that you set is being overridden.  Reread the
% option scoping in section \ref{sec:layers} and use the following
% commands to find out if your option is being set and if it is being
% overridden (here for a subtable):
%  \begin{quote}^
%    |  \showcaptionsetup{table}|\\
%    |  \showcaptionsetup{subfloat}|\\
%    |  \showcaptionsetup{subtable}|
%  \end{quote}
% For instance, if you change the \Lkv{textfont} at the \Lvar{table} level
% and the \Lvar{subfloat} has another setting for \Lkv{textfont}, than the
% change will work for table floats, but not for subtables, since the 
% \Lvar{subfloat} definition will override it.  You can either add the 
% \Lkv{textfont} change to the \Lvar{subfloat} (which will affect all 
% sub-floats) or to the \Lvar{subtable} (which will affect all subtables)
% to override the overridden change.
%
% \subsection{``How do I make a change in the settings for just a single
% float?''}
% \label{sec:faq:options_specific}
%
% If you change the values using the \cmd{\captionsetup} command within a
% float environment, than the old values will be restored after you exit
% that float environment.
%
% \subsection{``How do I put text labels on an imported sub-float?''}
% \label{sec:faq:picture}
%
% The easiest way is to use the picture commands with the origin
% set at the bottom right corner of the imported image (actually
% at the right side of the image's baseline, which is usually along
% the bottom of the image).  For example, if the imported image is
% $5\times 5$ inches, than the following code  will place the text
% ``Label'' in red at its center ({\scshape\bf Note}: 5 inches is 360
% big points).
%
%  \begin{quote}^
%    |  \usepackage{graphics}|\\
%    |  \usepackage{color}|\\
%    \null\qquad\vdots\\
%    |  \begin{figure}%|\\
%    \null\qquad\vdots\\
%    |    \subfloat[Labeled picture]{%|\\
%    |      \label{fig:labeled-image}%|\\
%    |      \includegraphics{|\dots|path to image file|\dots|}%|\\
%    |      \unitlength=1bp%|\\
%    |      \put(-180,180){\textcolor{red}{\textbf{Label}}}}%|\\
%    \null\qquad\vdots\\
%    |  \end{figure}|\\
%    \null\qquad\vdots
%  \end{quote}
%
% \subsection{``I want my sub-floats to be ordered by column rather
%  than by row, how do I do that?''}
% \label{sec:faq:column}
%
% The following example shows a schematic for laying out six sub-floats
% in column order.  The only problem with this approach is that, if the
% floats and their respective captions are not the same height, than the
% sub-floats will not line up across the page.
%
%  \begin{quote}^
%    |  \begin{figure}|\\
%    |    \begin{minipage}{\columnwidth}|\\
%    \null\qquad\vdots\\
%    |      \dots sub-floats (a)--(c) go here.|\\
%    \null\qquad\vdots\\
%    |    \end{minipage}|\\
%    |    \begin{minipage}{\columnwidth}|\\
%    \null\qquad\vdots\\
%    |      \dots sub-floats (e)--(f) go here.|\\
%    \null\qquad\vdots\\
%    |    \end{minipage}|\\
%    |    \caption{...}|\\
%    |  \end{figure}|\\
%  \end{quote}
%
% \subsection{``How do I put a verbatim environment in a sub-float?''}
% \changes{v1.3}{4 July 2005}{Added FAQ for putting a verbatim 
% environmemnt in a sub-float.}
%
% See section~\ref{sec:verbatim}.
%
% \StopEventually{^
%
% \section{Acknowledgments}
%
% This package was adapted from the \Lpack{subfigure} package, which
% was originally written to automatically line up some figure boxes
% and place labels under them for my Ph.D.\ dissertation, years ago.
% I thought it useful and uploaded it to the Internet community and
% later to CTAN.  Many people have asked questions or given comments
% which collectively have changed and improved the usefulness of that
% package.  In 2002, {\bf Michel Goossens} requested an updated version
% of the \Lpack{subfigure} package to feature in the second edition of 
% The \LaTeX\ Companion.  In collaboration with {\bf Axel Sommerfeldt}
% and with many valuable suggestions from {\bf Frank Mittelbach}, this
% package was developed.  It uses the new version of the \Lpack{caption}
% package (with which the \Lpack{subfigure} had a large overlap in
% function), re-written by {\bf Axel Sommerfeldt} for the same
% book.  This version both simplifies the original package code and,
% unfortunately, forces it to be backward {\em in}-compatible with the
% \Lpack{subfigure} package, therefore the change in the package name
% from \Lpack{subfigure} to \Lpack{subfig}.  Recently, {\bf Olga Lepko}
% further extended the this package by tightly integrating her extended
% \Lpack{floatrow} package.  
%
% Beyond those mentioned above a few other people have made important
% contributions to the development of the prior \Lpack{subfigure}
% package and to the present \Lpack{subfig} package.  I want to thank
% them publicly and they are, alphabetically: {\bf Frederic Darboux},
% {\bf Andrew B. Collier}, {\bf Harald Harders}, {\bf David Kastrup},
% {\bf William `bil' L. Kleb}, {\bf Heiko Oberdiek}, {\bf Axel Reichert},
% and {\bf Peter Wilson}.
% 
% \begin{thebibliography}{6}
% \itemsep=0.8pt
% \bibitem{Somm05}^
%   Axel Sommerfeldt,
%   \emph{The \Lpack{caption} Package},
%   Version 3.0g, 2005/06/28.
%   (Available from CTAN as file 
%   \texttt{/tex-archive/macros/latex/caption.zip}.)
% \bibitem{Lapk05}^
%   Olga Lapko,
%   \emph{The \Lpack{floatrow} Package},
%   Version 0.1f, 2005/07/02.
%   (Available from CTAN as file 
%   \texttt{/tex-archive/macros/latex/floatrow.zip}.)
% \bibitem{Mitt-etal04}^
%   Frank Mittelbach and Michel Goossens, with Johannes Braams, David Carlisle and Chris Rowley,
%   \emph{The \LaTeX\ Companion, 2\raise.7ex\hbox{\small nd} ed.}, 
%   Addison-Wesley, Reading, Massachusetts,
%   2004.
% \bibitem{Carl99}^
%   David Carlisle,
%   \emph{The \Lpack{keyval} Package},
%   Version 1.13, 1999/03/16.
%   (Available from CTAN as file 
%   \texttt{/tex-archive/macros/latex/required/graphics.zip}.)
% \bibitem{Reck97}^
%   Keith Reckdahl,
%   \emph{Using Imported Graphics in \LaTeXe},
%   1997/12/15.
%   (Available from CTAN as file \texttt{/tex-archive/info/epslatex.pdf}.)
% \bibitem{Lamp94}^
%   Leslie Lamport,
%   \emph{LaTeX User's Guide and Reference Manual}, 2nd edition,
%   Addison-Wesley, Reading, Massachusetts,
%   1994.
% \bibitem{Knut86}^
%   Donald Ervin Knuth,
%   \emph{The \TeX book},
%   Addison-Wesley, Reading, Massachusetts,
%   1986.
% \end{thebibliography}}
%
% \iffalse
%<*package>
% \fi
%
% \cleardoublepage
% \section{The Code}
%
% \subsection{Identification}
%
% Check \LaTeX\ release and announce the \Lpack{subfig} package.
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%    \end{macrocode}
%
%    \begin{macrocode}
\ProvidesPackage{subfig}[2005/06/28 ver: 1.3 subfig package]
%    \end{macrocode}
%
% \subsection{Check for Nasty Classes}
% \changes{v1.3}{4 May 2005}{At the request of David Kastrup, added
% code to check for classes that use \cmd{\let} on \cmd{\end@figure}
% and similar; and to print a warning and fix the problem if detected.}
%
% \begin{macro}{\sf@floatfix}
%
% Some ``broken'' document classes use \cmd{\let} on \cmd{\end@figure}
% and similar, which are used as hooks in the end-processing of, in 
% this case, figures.  The following code, courtesy of David Kastrup
% (dak\@gnu.org) fixes the problem and prints a warning.
%    \begin{macrocode}
\def\sf@floatfix#1#2{%
  \ifx#1#2%
    \ifx#1\@undefined\else
      \PackageWarningNoLine{subfig}{%
Your document class has a bad definition^^J
of \string#1, most likely^^J
\string\let\string#1=\string#2^^J
which has now been changed to^^J
\string\def\string#1{\string#2}^^J
because otherwise subsequent changes to \string#2^^J
(like done by several packages changing float behaviour)^^J
can't take effect on \string#1.^^J
Please complain to your document class author}%
      \def#1{#2}%
    \fi
  \fi}
%    \end{macrocode}
%
%    \begin{macrocode}
\begingroup
\def\next#1#2{%
    \endgroup
  \sf@floatfix\endfigure\end@float
  \sf@floatfix\endtable\end@float
  \sf@floatfix#1\end@dblfloat
  \sf@floatfix#2\end@dblfloat}
\expandafter\next\csname endfigure*\expandafter\endcsname
  \csname endtable*\endcsname
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Load The \Lpack{Caption} Package}
%
% This version of the \Lpack{subfig} package is dependent on the new
% \Lpack{caption} package by Axel Sommerfeldt \cite{Somm05}.  The
% \Lpack{caption} and the \Lpack{subfig} (formerly \Lpack{subfigure}) 
% packages were rewritten in order to both improve the processing and
% to reduce the amount of redundant code.
%
% \subsubsection{Load The \Lpack{Keyval} Package and Scan Options}
% \label{sec:scanops}
% \changes{v1.3}{9 September 2004}{Added check for `caption[=val]'.}
% 
% The user may want to load the \Lpack{caption} package without
% affecting the caption setup from the class or other packages.  In this
% case, the user can either separately load the \Lpack{caption} package
% with the \Lkv{caption=false} option or the user may directly invoke
% the \Lpack{subfig} package with this option.  Here we check for the
% latter possibility by scanning the options passed to this package and
% determine the final setting (if any) of this particular option.
%
%    \begin{macrocode}
\RequirePackage{keyval}[1999/03/16]
%    \end{macrocode}
%
% \begin{macro}{\sf@ifinlist}
% \changes{v1.3}{18 March 2004}{Added to generalized boolean values.}
%
% Since the \Lpack{caption} package is not yet available to us, we need
% to check for alternate Boolean values ourselves.  The \cmd{\sf@ifinlist}
% macro checks a value against a list of synonyms.
%
%    \begin{macrocode}
\def\sf@ifinlist#1#2{%
  \let\next\@secondoftwo
  \edef\caption@tempa{#1}%
  \@for\caption@tempb:={#2}\do{%
    \ifx\caption@tempa\caption@tempb
      \let\next\@firstoftwo
    \fi}%
  \next}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@setbool}
% \changes{v1.3}{18 March 2004}{Added to generalized boolean values.}
%
% The \cmd{\sf@setbool} uses \cmd{\sf@ifinlist} to check if its second
% argument is {\em true} or {\em false} and set the associated {\em if}
% (argument one) accordingly.
%
%    \begin{macrocode}
\def\sf@setbool#1#2{%
  \sf@ifinlist{#2}{1,true,yes,on}{%
    \@nameuse{#1true}%
  }{\sf@ifinlist{#2}{0,false,no,off}{%
    \@nameuse{#1false}%
  }{%
    \PackageError{subfig}{Undefined boolean value `#2'}{\@ehc}%
  }}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@split}
%
% Next, we define a simple version of \cmd{\sf@split} here in order to 
% check for the \Lkv{caption} option.  Later, we will redefine it
% to process the rest of the options.  The two new {\em if's} are used
% to keep track of the state of the \Lkv{caption} option and also if
% it occurs in the \Lpack{subfig} options list.
%
%    \begin{macrocode}
\def\sf@split#1=#2=#3\relax{%
  \KV@@sp@def\@tempa{#1}%
  \ifx\@tempa\@empty
  \else\ifx\@tempa\KV@caption
    \sf@usecaptionfoundtrue
    \ifx\@empty#3\@empty
      \sf@usecaptiontrue
    \else
      \KV@@sp@def\@tempb{#2}%
      \sf@setbool{sf@usecaption}{\@tempb}%
    \fi
  \fi\fi}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\KV@caption{caption}
%    \end{macrocode}
%
%    \begin{macrocode}
\newif\ifsf@usecaptionfound
\sf@usecaptionfoundfalse
%    \end{macrocode}
%
%    \begin{macrocode}
\newif\ifsf@usecaption
\sf@usecaptiontrue
%    \end{macrocode}
%
% \end{macro}
%
% Now we get and scan the optionlist for this package and remember
% if the \Lkv{caption} option is set.
%
%    \begin{macrocode}
\edef\sf@temp{\@ptionlist{\@currname.\@currext}}
\let\caption@tempa\@empty
\@for\CurrentOption:=\sf@temp\do{%
  \expandafter\sf@split\CurrentOption==\relax}
%    \end{macrocode}
%
% \subsubsection{Load and Extend the \Lpack{Caption} Package}
%
% First we load the \Lpack{caption} package if it has not already been
% loaded using the \Lkv{caption=false} option if specified.  Note that
% this can cause problems if the \Lpack{caption} was already loaded
% with different options, so we issue warnings if the user as loaded
% the \Lpack{caption} package and used the \Lkv{caption} option with
% the \Lpack{subfig} packare.
%
%    \begin{macrocode}
\ifsf@usecaption 
  \@ifpackageloaded{caption}{%
    \ifsf@usecaptionfound
      \PackageWarning{subfig}{%
          You cannot set the `caption' option here if the\MessageBreak
          caption package is already loaded (the option\MessageBreak
          `caption=true' is ignored)}%
    \fi
  }{%
    \RequirePackage{caption}[2005/06/26]
  }%
\else
  \RequirePackage{caption3}[2005/06/11]
\fi
%    \end{macrocode}
%
% \begin{macro}{\sf@ifpositiontop}
% \noindent
% Then we make certain that the |\caption@position| is recognizable to
% the \Lpack{subfig} package code.  We assume that if it is not the 
% same as |\@firstoftwo| (\eg, \Lkv{top}), than it must be |\@secondoftwo|,
% or \Lkv{bottom} (\ie, anything that isn't designated as 
% \Lkv{[position=top]} is forced to be \Lkv{[position=bottom]}).
%
%    \begin{macrocode}
\def\sf@ifpositiontop{%
  \ifx\caption@position\@firstoftwo \let\next\@firstoftwo \else
  \let\next\@secondoftwo \fi \next}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DeclareCaptionListOfFormat}
% \begin{macro}{\caption@setlistofformat}
% \changes{v1.1}{12 January 2004}{Changed \cmd{\captionlistofformat} to
% \cmd{\caption@lstfmt}.}
%
% Next, we define the \cmd{\DeclareCaptionListOfFormat} command which
% controls how the sub-float captions appear on the List-of-Floats pages.
% Note that this command can only be used to define new formats in the
% preamble of your paper.  The format may be changed at anytime using the 
% \cmd{\captionsetup} command.
%
%    \begin{macrocode}
\def\DeclareCaptionListOfFormat#1{%
  \@namedef{caption@lstfmt@#1}##1##2}
%    \end{macrocode}
%
%    \begin{macrocode}
\@onlypreamble\DeclareCaptionListOfFormat
%    \end{macrocode}
%
%    \begin{macrocode}
\def\caption@setlistofformat#1{%
  \@ifundefined{caption@lstfmt@#1}{%
    \PackageError
      {subfig}%
      {Undefined caption list-of format `#1'}%
      {\caption@eh}%
  }{%
   \expandafter\let\expandafter\caption@lstfmt
         \csname caption@lstfmt@#1\endcsname}}
%    \end{macrocode}
%
% \noindent
% Using the \cmd{\DeclareCaptionListOfFormat} command, we define some common
% formats and the new keyword, \Lkv{listofformat}, which may be used
% in the key/value option list of the \cmd{\usepackage} command or
% with the \cmd{\captionsetup} command to change the listing format of
% the sub-float caption label.
%
%    \begin{macrocode}
\DeclareCaptionListOfFormat{empty}{}
\DeclareCaptionListOfFormat{simple}{#1#2}
\DeclareCaptionListOfFormat{parens}{#1(#2)}
\DeclareCaptionListOfFormat{subsimple}{#2}
\DeclareCaptionListOfFormat{subparens}{(#2)}
%    \end{macrocode}
%
%    \begin{macrocode}
\DeclareCaptionOption{listofformat}{\caption@setlistofformat{#1}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \begin{macro}{\sf@indent}
% \begin{macro}{\sf@numwidth}
%
% We also add two new keywords, \Lkv{listofindent} and 
% \Lkv{listofnumwidth}, which set the lengths used to show where
% and how wide the caption label will be when typeset.  These are
% used as the fourth and fifth arguments of the \cmd{\dottedxxxline}
% command, see section~\ref{sec:dottedxxxline} for more detail.
%
%    \begin{macrocode}
\def\sf@indent{3.8em}
\define@key{caption}{listofindent}[3.8em]{\def\sf@indent{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\sf@numwidth{2.5em}
\define@key{caption}{listofnumwidth}[2.5em]{\def\sf@numwidth{#1}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \begin{macro}{\DeclareSubrefFormat}
% \begin{macro}{\caption@setsubrefformat}
% \changes{v1.3}{27 May 2005}{Added the ability to format the 
% \cmd{\subref*} output.}
%
% We define the \cmd{\DeclareSubreffFormat} command just like the
% above \cmd{\DeclareCaptionListOfFormat} command above.  This format,
% however, controls how the \cmd{\subref*} command formats the sub-float
% label.  Again, this command can only be used to define new formats in
% the preamble of your paper and the format may be changed at anytime
% using the \cmd{\captionsetup} command.
%
%    \begin{macrocode}
\def\DeclareSubrefFormat#1{%
  \@namedef{caption@subreffmt@#1}##1##2##3##4}
%    \end{macrocode}
%
%    \begin{macrocode}
\@onlypreamble\DeclareSubrefFormat
%    \end{macrocode}
%
%    \begin{macrocode}
\def\caption@setsubrefformat#1{%
  \@ifundefined{caption@subreffmt@#1}{%
    \PackageError
      {subfig}%
      {Undefined subref format `#1'}%
      {\caption@eh}%
  }{%
   \expandafter\let\expandafter\caption@subreffmt
         \csname caption@subreffmt@#1\endcsname}}
%    \end{macrocode}
%
% \noindent
% Using the \cmd{\DeclareSubrefFormat} command, we define some common
% formats and the new keyword, \Lkv{subrefformat}, which may be used
% in the key/value option list of the \cmd{\usepackage} command or
% with the \cmd{\captionsetup} command to change the format of
% the \cmd{\subref*} references.
%
%    \begin{macrocode}
\DeclareSubrefFormat{empty}{}
\DeclareSubrefFormat{simple}{#1#2}
\DeclareSubrefFormat{parens}{#1(#2)}
\DeclareSubrefFormat{subsimple}{#2}
\DeclareSubrefFormat{subparens}{(#2)}
%    \end{macrocode}
%
%    \begin{macrocode}
\DeclareCaptionOption{subrefformat}{\caption@setsubrefformat{#1}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \subsection{Options Processing}
%
% \begin{macro}{\KV@config}
% \begin{macro}{\sf@split}
% \changes{v1.3}{9 September 2004}{Added check for \Lkv{caption} keyword.}
% \begin{macro}{\ProcessPackageOptions}
% 
% In order to work within the \Lpack{caption} package, the
% \Lpack{subfig} package saves most of the options provided via
% \cmd{\usepackage} and (re-)applies them each time a sub-float is
% started.  The two exceptions are the \Lkv{caption} keyword, which is
% ignored (see section~\ref{sec:scanops} above), and the \Lkv{config}
% keyword, which is executed immediately.  To accomplish this, we use a
% modified version of the \Lpack{keyval} package processing.
% \Lkv{Config} entries are detected and executed, while other keywords
% are passed back to add to the \Lvar{subfloat} list.  ({\scshape\bf
% Note}: Currently the \Lkv{config} files are unable to use
% |\captionsetup| without its optional argument.  If you need to set a
% global value in a configuration file, than do it directly.)
%
%    \begin{macrocode}
\newcounter{KVtest}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\KV@config{config}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\sf@split#1=#2=#3\relax{%
  \setcounter{KVtest}{1}%
  \KV@@sp@def\@tempa{#1}%
  \ifx\@tempa\@empty
  \else\ifx\@tempa\KV@caption
    \setcounter{KVtest}{2}%
  \else\ifx\@tempa\KV@config
    \setcounter{KVtest}{2}%
    \expandafter\let\expandafter\@tempc
        \csname\KV@prefix\@tempa\endcsname
    \ifx\@tempc\relax
      \KV@errx
          {\@tempa\space undefined}%
    \else\ifx\@empty#3\@empty
      \KV@default
    \else
      \KV@@sp@def\@tempb{#2}%
      \expandafter\@tempc\expandafter{\@tempb}\relax
    \fi\fi
  \fi\fi\fi}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\ProcessPackageOptions{%
  \def\KV@prefix{KV@\@currname @}%
  \let\@tempc\relax
  \let\caption@tempa\@empty
  \@for\CurrentOption:=\@classoptionslist\do{%
    \@ifundefined{KV@caption@\CurrentOption}{}{%
      \edef\caption@tempa{\caption@tempa,\CurrentOption,}%
      \@expandtwoargs\@removeelement\CurrentOption
        \@unusedoptionlist\@unusedoptionlist}}%
  \edef\caption@tempb{\@ptionlist{\@currname.\@currext}}%
  \@for\CurrentOption:=\caption@tempb\do{%
    \expandafter\sf@split\CurrentOption==\relax
    \ifnum\c@KVtest<2\relax
      \edef\caption@tempa{\caption@tempa,\CurrentOption,}%
    \fi}%
  \edef\caption@tempa{%
    \noexpand\captionsetup[subfloat]{\caption@tempa}}%
  \caption@tempa}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Generalized List-of-Floats}
% \changes{v1.2}{22 January 2004}{Changed the first parameter to send float name
%  rather than sub-float name.}
% \label{sec:dottedxxxline}
%
% \begin{macro}{\dottedxxxline}
%
% This is a generalized wrapper for the |\@dottedtocline| command for sub-float
% entries.  It checks for the level based on the output file extension (second
% argument) and not using only the |\@tocdepth|, as the |\@dottedtocline|
% command does.
%
% \noindent
% The arguments of the |\@dottedxxxline| command are:
% \begin{quote}
%   \begin{enumerate}
%     \itemsep -\parsep
%     \item \underline{\smash{\textsf{Main Float Type Relative to the Sub-float}}}.
%     \item \underline{\smash{\textsf{File Extension}}}.  The usual 
%           values are: \Lfile{lof} or \Lfile{lot}.  The internal 
%           values |\ext@subfigure| and |\ext@subtable| hold these
%           extensions.
%     \item \underline{\textsf{Level}}.  By default this is `2'
%           for sub-floats.  If the level is greater than
%           \Lcount{\meta{Ext}depth} (where
%           \underline{\smash{\meta{Ext}}} is the second 
%           argument, above), then no line is produced.  
%     \item \underline{\textsf{Indent}}.  Total indentation
%           from the left margin. 
%     \item \underline{\textsf{Numwidth}}.  Width of box for the
%           label number if the \underline{\textsf{Title}} has a
%           |\numberline| command.   This is also the amount of extra
%           indentation added to second and later lines of a multiple
%           line entry.    
%     \item \underline{\textsf{Title}}.  Contents of entry (\eg, the
%           \meta{list\_entry} or \meta{sub-caption}).
%     \item \underline{\smash{\textsf{Page}}}.  The page number of the
%           figure or table.
%   \end{enumerate}
% \end{quote}
%
% \noindent
% The final two arguments, \underline{\textsf{title}} and
% \underline{\smash{\textsf{page}}}, are automatically appended to the
% value of |\l@subfigure| (and symmetrically for other sub-float types).
%
% \changes{v1.2}{22 January 2004}{Added commands to set the float
% caption keyword/values.}
%
%    \begin{macrocode}
\def\@dottedxxxline#1#2#3#4#5#6#7{%
  \begingroup
    \@ifundefined{caption@setfloattype}%
      \caption@settype
      \caption@setfloattype
          {#1}
    \caption@settype{subfloat}%
    \caption@settype{sub#1}%
    \ifnum #3>\@nameuse{c@#2depth}\else
      \@dottedtocline{\z@}{#4}{#5}{#6}{#7}%
    \fi
  \endgroup}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Create New Sub-floats}
%
% \begin{macro}{\newsubfloat}
% \begin{macro}{\@newsubfloat}
% This command is used to create new types of sub-floats.  It is used
% during the \Lpack{subfig} configuration to create the two standard
% float types: \Lvar{subfigure} and \Lvar{subtable} and may be used
% anywhere in the preamble to create other types of sub-floats (see
% section~\ref{sec:customfloat} and table~\ref{tab:newsubfloat}).
%
%    \begin{macrocode}
\newif\ifmaincaptiontop
%    \end{macrocode}
%
%    \begin{macrocode}
\def\newsubfloat{%
  \@ifnextchar[  %] bracket matching
    {\@newsubfloat}
    {\@newsubfloat[]}}
%    \end{macrocode}
%
% \changes{v1.2}{16 January 2004}{Removed code setting a default 
% \Lkv{position} in the new sub-float based on its corresponding float.}
% \changes{v1.2}{22 January 2004}{Changed first parameter of the 
% \cmd{\dotttedxxxline} to use the float rather than the sub-float name.}
% \changes{v1.3}{27 February 2004}{Added creating the key-value
% options for setting the associated List-of-Floats page depth with a
% default of 2.}
%
%    \begin{macrocode}
\def\@newsubfloat[#1]#2{%
  \@ifundefined{c@sub#2}{%
    \newcounter{sub#2}[#2]
    \newcounter{sub#2@save}%
    \@namedef{sub#2name}{}%
    \@namedef{p@sub#2}{\@nameuse{the#2}}%
    \@namedef{thesub#2}{\alph{sub#2}}%
    \@namedef{ext@sub#2}{\@nameuse{ext@#2}}%
%    \end{macrocode}
%
%    \begin{macrocode}
    \@namedef{l@sub#2}{%
        \@dottedxxxline{#2}%
            {\@nameuse{ext@sub#2}}{2}{\sf@indent}{\sf@numwidth}}%
    \@ifundefined{c@\@nameuse{ext@#2}depth}{%
      \expandafter\newcounter\expandafter{\@nameuse{ext@#2}depth}%
      \expandafter\addtocounter\expandafter{\@nameuse{ext@#2}depth}\@ne}{}%
    \@namedef{KV@caption@\@nameuse{ext@#2}depth@default\expandafter}%
        \expandafter{\csname KV@caption@\@nameuse{ext@#2}depth\endcsname{2}}%
    \@namedef{KV@caption@\@nameuse{ext@#2}depth}##1{%
        \setcounter{\@nameuse{ext@#2}depth}{##1}}%
    \edef\sf@counterlist{%
      \@ifundefined{sf@counterlist}{}%
        {\sf@counterlist,}sub#2}%
    \captionsetup[sub#2]{#1}%
  }{%
    \PackageWarning{subfig}{%
        The sub#2\space type is already defined.}%
  }}
%    \end{macrocode}
%
%    \begin{macrocode}
\@onlypreamble\@newsubfloat
\@onlypreamble\newsubfloat
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \subsection{Layout Parameters}
% \label{sec:layoutparams}
%
% \begin{macro}{\sf@farskip}
% \begin{macro}{\sf@captopadj}
% \begin{macro}{\sf@capskip}
% \begin{macro}{\sf@nearskip}
% \changes{v1.2}{21 January 2004}{Fine-tuned defaults for \Lkv{farskip},
% \Lkv{topadjust}, \Lkv{captionskip}, and \Lkv{nearskip}.}
%
% We now create the sub-float layout parameters.  We do it now so that the 
% values will be available during the configuration and options processing,
% below.  The \Lkv{margin} and \Lkv{width} are already defined in the 
% \Lpack{caption} package.
%
%    \begin{macrocode}
\newskip\sf@farskip
\sf@farskip 10\p@
\define@key{caption}{farskip}[10\p@]{\sf@farskip=#1}
%    \end{macrocode}
%
%    \begin{macrocode}
\newdimen\sf@captopadj
\sf@captopadj \z@
\define@key{caption}{topadjust}[\z@]{\sf@captopadj=#1}
%    \end{macrocode}
%
%    \begin{macrocode}
\newskip\sf@capskip
\sf@capskip 4\p@
\define@key{caption}{captionskip}[4\p@]{\sf@capskip=#1}
%    \end{macrocode}
%
%    \begin{macrocode}
\newskip\sf@nearskip
\sf@nearskip \z@
\define@key{caption}{nearskip}[5\p@]{\sf@nearskip=#1}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\sf@old@caption}
% \begin{macro}{\@caption}
%
% Save the current definition of the \cmd{\@caption} command so that
% we can wrap it with code that first checks if a caption for the 
% current float type comes before (\Lkv{[position=top]}) or after
% (\Lkv{[position=bottom]}) the related sub-floats.  Then the decision
% can be made of whether or not to flush the list of sub-float captions
% to the proper List-of-Floats file.  See the \cmd{\caption@} definition
% in section~\ref{sec:listofprocessing}.
%
%    \begin{macrocode}
\let\sf@old@caption\@caption
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@caption{\caption@}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% 
% \subsection{Process the Package Options}
% \changes{v1.1}{12 January 2004}{Removed \Lkv{position} settings from
% initial setup to allow the class or other external settings to 
% control the initial settings of the default (\Lkv{bottom}) and table
% (\Lkv{top}) positions.}
% \changes{v1.1}{12 January 2004}{Updated \Lkv{listofformat} value from
% \Lkv{simple} to \Lkv{subsimple}.}
%
% \begin{enumerate}
%   \item Set the default (override) values in \Lvar{subfloat}.
%      (It would be nice not to set anything, however, most users will
%      want something like this set so we do so.  If desired, these may
%      be wiped out in a configuration file with \cmd{\clearcaptionsetup}
%      command.)
%
% \changes{v1.2}{21 January 2004}{Removed \cmd{\captionsetup} of defaults
% for \Lkv{farskip}, \Lkv{topadjust}, \Lkv{captionskip}, and 
% \Lkv{nearskip}; because these are defaulted above.  Any change can be 
% added to the \Lvar{subfloat} variable.}
% \changes{v1.3}{27 May 2005}{Added \Lkv{subrefformat} default.}
%
%    \begin{macrocode}
\captionsetup[subfloat]{%
    font=footnotesize,
    labelformat=parens,labelsep=space,
    listofformat=subparens,subrefformat=subsimple}
%    \end{macrocode}
%
%   \item Load the configuration file(s) if `config' keyword is given.
%      (Use |\captionsetup| to change options (remember, due to a known
%      bug, you cannot set global-level values because you have to supply
%      the optional argument in a \Lpack{subfig} package configuration file.)
%
%    \begin{macrocode}
\define@key{subfig}{config}[subfig]{%
  \InputIfFileExists{#1.cfg}{%
    \typeout{***********************************************^^J%
             * Subfig configuration file #1.cfg used ^^J%
             ***********************************************}%
  }{%
    \PackageWarning{subfig}{Configuration file #1.cfg not found}}%
}
%    \end{macrocode}
%
%   \item Process the options list using the KV macros.  (Note, the
%      `config' option is processed before any other option in the
%      package list to load the files in the last step, above.)  The
%      remaining options are added to the end of \Lvar{subfloat} after
%      the configuration process.
%
%    \begin{macrocode}
\ProcessPackageOptions
%    \end{macrocode}
%
%   \item If the \Lkv{subfigure} and the \Lkv{subtable} sub-floats
%      have not been defined during the configuration process, than
%      we define define them now (along with all of the items in 
%      table~\ref{tab:newsubfloat}).
%
%    \begin{macrocode}
\@ifundefined{c@subfigure}{\newsubfloat{figure}}{}
\@ifundefined{c@subtable}{\newsubfloat{table}}{}
%    \end{macrocode}
%
%   \item Finally, we designate those commands that we will not need
%     after this package is finished.  Also, we reset \cmd{\CaptionOption}
%     to keep this package from influencing other packages using the
%      variable.
%
% \changes{v1.2}{21 January 2004}{Added the reset of the 
% \cmd{\CaptionOption} to keep this package from influencing other
% packages using the variable.}
% \changes{v1.3}{10 October 2004}{Added new elements due to the addition
% of the \Lkv{caption} option processing.}
%
%    \begin{macrocode}
\AtEndOfPackage{%
  \global\let\ifsf@usecaption\relax
  \global\let\sf@usecaptiontrue\relax
  \global\let\sf@usecaptionfalse\relax
  \global\let\ifsf@usecaptionfound\relax
  \global\let\sf@usecaptionfoundtrue\relax
  \global\let\sf@usecaptionfoundfalse\relax
  \global\let\KV@caption\relax
  \global\let\KV@subfig@caption\relax
  \global\let\KV@subfig@caption@default\relax
  \global\let\KV@config\relax
  \global\let\KV@subfig@config\relax
  \global\let\KV@subfig@config@default\relax
  \global\let\ProcessPackageOptions\relax
  \global\let\@unprocessedoptions\relax
  \let\CurrentOption\@empty  
}
%    \end{macrocode}
%
%   \item (And, of course, we process calls to |\captionsetup| throughout
%      the paper.)
% \end{enumerate}
%
% \subsection{Define the Sub-float Layout}
%
% The main command is |\subfloat|.  This command takes the figure code and
% the optional caption and builds a vertical box that contains them along
% with some additional padding as defined by the layout parameters defined
% in section~\ref{sec:layoutparams}
%
% \begin{macro}{\sf@top}
% \begin{macro}{\sf@bottom}
% 
% We define two skip variables which are set to the \Lkv{farskip} and the
% \Lkv{nearskip} values, depending on the \Lkv{position} of the 
% corresponding float caption.  These are used, when the time comes, to
% build the sub-float box as illustrated in figure~\ref{fig:layout}.
%
%    \begin{macrocode}
\newskip\sf@top
\newskip\sf@bottom
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \begin{macro}{\subfloat}
%
% This is the ``main'' command.  All it really does is to check that we
% are inside a float environment (or at the very least that someone has
% tricked us by defining \cmd{\@captype}).  If all seems salubrious, than
% we pass all of the arguments to the internal comamnd \cmd{\sf@subfloat}.
%
%    \begin{macrocode}
\def\subfloat{%
  \ifx\@captype\@undefined
    \@latex@error{\noexpand\subfloat outside float}\@ehd
     \expandafter\@gobble
  \else
    \expandafter\@firstofone
  \fi
  {\sf@subfloat}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@subfloat}
% \changes{v1.2}{22 January 2004}{Changed method of setting the float
% caption settings to first check for \cmd{\caption@setfloattype} and
% to use that if present.}
%
% \noindent
% This routine does more setup and at the end begins to parse the
% optional argument.  First the float options are applied and a flag
% \texttt{\char`\\ ifmaincaptiontop} is set for later use; the 
% \Lkv{subfloat} and sub-\cmd{\@captype} options are set and the 
% \cmd{\label} command is temporarily wrapped with \cmd{\subfloat@label}.
%
%    \begin{macrocode}
\def\sf@subfloat{%
  \begingroup
    \@ifundefined{caption@setfloattype}%
      \caption@settype
      \caption@setfloattype
          \@captype
    \sf@ifpositiontop{%
      \maincaptiontoptrue
    }{%
      \maincaptiontopfalse
    }%
    \caption@settype{subfloat}%
    \caption@settype{sub\@captype}%
    \let\sf@oldlabel=\label
    \let\label=\subfloat@label
%    \end{macrocode}
%
% Next, a decision (based on the \texttt{\char`\\ ifmaincaptiontop}
% flag) is made of how to advance the float counter; then the
% sub-float counter is advanced and saved and a check is made if an
% optional argument is present (if not, one is supplied).
%
%    \begin{macrocode}
    \ifmaincaptiontop\else
      \advance\@nameuse{c@\@captype}\@ne
    \fi
    \refstepcounter{sub\@captype}%
    \setcounter{sub\@captype @save}{\value{sub\@captype}}%
    \@ifnextchar [%  %] match left bracket
      {\sf@@subfloat}%
      {\sf@@subfloat[\@empty]}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@@subfloat}
%
% A check is made for a second optional argument, if one is not found,
% than one is supplied.  We are now ready to call the real (internal)
% ``\cmd{\subfloat}'' command, \cmd{\sf@@@subfloat}.
%
%    \begin{macrocode}
\long\def\sf@@subfloat[#1]{%
    \@ifnextchar [%  %] match left bracket
      {\sf@@@subfloat{sub\@captype}[{#1}]}%
      {\sf@@@subfloat{sub\@captype}[\@empty{#1}][{#1}]}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@@@subfloat}
%
% This is the main function in the whole package.  It is the one that builds
% the sub-float box and stuffs it with the various parts from it's arguments
% and the currently set options.
%
% \changes{v1.2}{21 January 2004}{Changed the top and bottom skips
% to be placed opposite the main caption rather than the sub-caption;
% I decided that that looked better.}
% \changes{v1.2}{21 January 2004}{Inserted another \cmd{\hrule} of zero
% size to kill extra vertical space from being added.}
% \changes{v1.3}{6 May 2005}{At the request of Olga Lapko, added a hook
% into the \cmd{\sf@@@subfloat} macro to record the maximum size of
% subfloats on the current row and to set the height/depth of the
% current subfloat.}
%
%    \begin{macrocode}
\long\def\sf@@@subfloat#1[#2][#3]#4{%
%    \end{macrocode}
%
% The next two lines are the first section of a hook for the
% \Lpack{floatrow} package to obtain and save the height of the
% highest subfloat on the current row.
%
%    \begin{macrocode}
    \@ifundefined{FBsc@max}{}%
        {\FB@readaux{\let\FBsuboheight\relax}}%
%    \end{macrocode}
%
% The next section sets a counter, \cmd{\@tempcnta}, depending on the 
% current interpreter mode.  Zero indicates the start of a minipage;
% One is the normal; and, Two indicates that there was a non-zero skip
% preceeding the sub-float.  We save this information for a little later.
%
%    \begin{macrocode}
    \@tempcnta=\@ne
    \if@minipage
      \@tempcnta=\z@
    \else\ifdim \lastskip=\z@ \else
      \@tempcnta=\tw@
    \fi\fi
%    \end{macrocode}
%
% Then, set our \cmd{\sf@top} and \cmd{\sf@bottom} variables with right
% amounts, based on the \texttt{\char`\\ ifmaincaptiontop} flag that we
% set earlier.  Then we insure that we are in horizontal mode and 
% process the sub-float body into a box so that we can measure it.  
% \cmd{\@tempdima} is set to the with of the sub-float body.
%
% NOTE: We need to either add negative margins or widths here or allow them
% to stick out!
%
%    \begin{macrocode}
    \ifmaincaptiontop
      \sf@top=\sf@nearskip
      \sf@bottom=\sf@farskip
    \else
      \sf@top=\sf@farskip
      \sf@bottom=\sf@nearskip
    \fi
    \leavevmode
    \setbox\@tempboxa \hbox{#4}%
    \@tempdima=\wd\@tempboxa
%    \end{macrocode}
%
% The next seven lines are the second section of the \Lpack{floatrow}
% package hook which counts the maximal height of subfloat row.
%
%    \begin{macrocode}
    \@ifundefined{FBsc@max}{}%
        {\global\advance\Xhsize-\wd\@tempboxa
         \dimen@=\ht\@tempboxa
         \advance\dimen@\dp\@tempboxa
         \ifdim\dimen@>\FBso@max
           \global\FBso@max\dimen@
         \fi}%
%    \end{macrocode}
%
% Now, we begin building our sub-float box.  It will be a vertical box
% containing two vertical boxes.  The baseline of the upper box is used
% as the baseline of the final sub-float.  So this section decides what
% order to fill-in the box.  Figure~\ref{fig:layout} shows the different
% ways that we can do this.
%
% The first thing is to decide what skip to add to the top.  Depending on
% the initial mode (stored in \cmd{\@tempcnta}) we may put nothing (and 
% declare \cmd{\@minipagefalse}); the full \cmd{\sf@top} skip; or, the
% larger of the last skip and \cmd{\sf@top}.
%
% ({\scshape\bf Note}: If the \Lkv{debug} option is used in stripping
% this code to a package file, than a vertical rule instead of a skip
% is inserted into the box.)
%
%    \begin{macrocode}
    \vtop\bgroup
      \vbox\bgroup
        \ifcase\@tempcnta
          \@minipagefalse
        \or
%<+debug>          \leaders\vrule\vskip\sf@top
%<-debug>          \vskip\sf@top
        \or
          \ifdim \lastskip=\z@ \else
            \@tempskipb\sf@top\relax\@xaddvskip
          \fi
        \fi
%    \end{macrocode}
%
% Into the top box, after the initial skip (if any), we place either
% the sub-float body or the sub-caption.  We decide which one based
% on the current \Lkv{position} setting.
% Finally, reset the float counter if we changed it above.
%
% ({\scshape\bf Note}: Here also, vertical rules are inserted into the
% box instead of a skip, if the \Lkv{debug} option is used in stripping
% this code to a package file.)
%
%    \begin{macrocode}
        \sf@ifpositiontop{%
          \ifx \@empty#3\relax \else
            \sf@subcaption{#1}{#2}{#3}%
%<+debug>            \leaders\vrule width.8pt\vskip\sf@capskip
%<-debug>            \vskip\sf@capskip
%<+debug>            \leaders\vrule width1.2pt\vskip\sf@captopadj
%<-debug>            \vskip\sf@captopadj
          \fi\egroup
          \hrule width0pt height0pt depth0pt
          \box\@tempboxa
        }{%
%    \end{macrocode}
%
% The next seven lines contain the third section of the \Lpack{floatrow}%
% hook which applies a given height to the subfloat figure section.
%
%    \begin{macrocode}
        \@ifundefined{FBsc@max}%
            {\box\@tempboxa}%
            {\ifx\FBsuboheight\relax
               \box\@tempboxa
             \else
               \vbox to \FBsuboheight{\FBafil\box\@tempboxa\FBbfil}%
             \fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
          \egroup
          \ifx \@empty#3\relax \else
%<+debug>            \leaders\vrule width.8pt\vskip\sf@capskip
%<-debug>            \vskip\sf@capskip
            \hrule width0pt height0pt depth0pt
            \sf@subcaption{#1}{#2}{#3}%
         \fi
        }%
%<+debug>      \leaders\vrule\vskip\sf@bottom
%<-debug>      \vskip\sf@bottom
    \egroup
%    \end{macrocode}
%
% The next five lines contain the fourth section of the \Lpack{floatrow}%
% and the last in this macro.  These add, if necessary, a separator for
% the  subfloats.
%
%    \begin{macrocode}
    \@ifundefined{FBsc@max}{}%
        {\addtocounter{FRobj}{-1}%
         \ifnum\c@FRobj=0\else
           \subfloatrowsep
         \fi}%
%    \end{macrocode}
%
%    \begin{macrocode}
    \ifmaincaptiontop\else
      \global\advance\@nameuse{c@\@captype}\m@ne
    \fi
  \endgroup\ignorespaces}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Use the \Lpack{Caption} Package to Build the Sub-float Captions}
% \changes{v1.1}{12 January 2004}{Changed \cmd{\captionlistofformat} to
% \cmd{\caption@lstfmt}.}
% \changes{v1.3}{6 May 2005}{At the request of Olga Lapko, added a hook
% into the \cmd{\@subcaption} macro to record the maximum size of
% subcaption on the current row and to set  the height/depth of the
% current subcaption.}
%
% \begin{macro}{\sf@updatecaptionlist}
% \changes{v1.3}{20 May 2005}{Added to support the \cmd{\sf@subcaption}.}
%
% This macro is used to setup the \Lpack{hyperref} name, in case it is
% needed.
%
%    \begin{macrocode}
\def\sf@updatecaptionlist#1#2#3#4{%
  \xdef\sf@captionlist{%
    \sf@captionlist,%
        {\protect\numberline{\@subcaplabel}\noexpand{\ignorespaces #2}}%
        {#1.#3.#4}}}
%    \end{macrocode}
%
% \end{macro}
%
%
%
% \begin{macro}{\sf@subcaption}
% \changes{v1.3}{20 May 2005}{Added \cmd{\sf@updatecaptionlist} to
% get unique names for hyper-references.}
%
% This command is called from within \cmd{\sf@@@subfloat} and does two
% things.  First it adds the sub-caption to the list of sub-captions for
% printing later, after the main caption is printed, which is either before
% the next caption or at the end of the current \Lenv{float} environment. 
%
%    \begin{macrocode}
\long\def\sf@subcaption#1#2#3{%
  \ifx \relax#2\relax \else
    \bgroup
      \let\label=\@gobble
      \let\protect=\string
      \def\@subcaplabel{%
        \caption@lstfmt{\@nameuse{p@#1}}{\@nameuse{the#1}}}%
      \sf@updatecaptionlist{#1}{#2}{\the\value{\@captype}}{\the\value{#1}}%
    \egroup
  \fi
%    \end{macrocode}
%
% Next, it makes a box to hold and center the sub-caption and calls the
% \Lpack{caption} package \cmd{\caption@make} command to format it. (NOTE:
% This last section of \cmd{\sf@subcaption} is closely combined with the
% \Lpack{floatrow} package hooks.)
%
%    \begin{macrocode}
  \bgroup
    \ifx \relax#3\relax
      \let\captionlabelsep=\relax
    \fi
%    \end{macrocode}
%
% This next group of code finishes the \Lpack{floatrow} package
% hooks into \Lpack{subfig}.  This gets and saves the maximum
% height/depth of the caption portion of the subfloats on this 
% row and, optionally, sets the height/depth of the current subcaption.
% 
% The first section builds the box and if the marker \cmd{\FBsc@max} is
% not present, than it sets the box.  Otherwise the \Lpack{floatrow}
% code is activated.
% 
%    \begin{macrocode}
    \setbox0\vbox{%
      \hb@xt@\the\@tempdima{%
        \hss
        \parbox[t]{\the\@tempdima}{%
          \caption@make
              {\@nameuse{sub\@captype name}}%
              {\@nameuse{thesub\@captype}}%
              {#3}}%
          \hss}}%
    \@ifundefined{FBsc@max}%
        {\box0}%
%    \end{macrocode}
% 
%    \begin{macrocode}
        {\dimen@\ht0%
         \advance\dimen@\dp0%
         \ifdim\dimen@>\FBsc@max
           \global\FBsc@max\dimen@
         \fi
         \FB@readaux{\let\FBsubcheight\relax}%
         \ifx\FBsubcheight\relax
           \def\next{\parbox[t]{\the\@tempdima}}%
         \else
           \def\next{\parbox[t][\FBsubcheight][t]{\the\@tempdima}}%
         \fi
         \vbox{%
           \hb@xt@\the\@tempdima{%
             \hss
             \next{%
               \caption@make
                   {\@nameuse{sub\@captype name}}%
                   {\@nameuse{thesub\@captype}}%
                   {#3}}%
             \hss}}}%
%    \end{macrocode}
% 
%    \begin{macrocode}
  \egroup}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Subfig Caption Processing for the List-of-Floats Files}
% \label{sec:listofprocessing}
%
% \begin{macro}{\listsubcaptions}
% \begin{macro}{\listsubcaptions*}
%
% The \cmd{\listsubcaptions} command writes the list of sub-captions to the 
% List-of-Floats file.  This is done so that they will follow the associated
% caption in the file.  The \cmd{\listsubcaptions} command is (optionally)
% called by the \cmd{\caption} command and at the end of the float
% environment by the internal \cmd{\end@float} command.  In rare instances
% the user may need to call it also, see section~\ref{sec:listsubcaptions}
% for an example.
%
% The starred form of the comamnd, \cmd{\listsubcaptions*}, is not documented
% as it is not clear that it is of any real use.  It may go away in the 
% future, so it should not be used.
%
%    \begin{macrocode}
\def\listsubcaptions{%
  \@ifstar
    {\gdef\sf@captionlist{}}%
    {\@listsubcaptions{\@captype}}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \begin{macro}{\sf@captionlist}
%
% \cmd{\sf@captionlist} is the internal list of pending sub-captions.
% We initialize it here as an empty list.
%
%    \begin{macrocode}
\def\sf@captionlist{}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\@listsubcaptions}
% \changes{v1.3}{20 May 2005}{Modified the \cmd{\sf@captionlist} to
% have a unique name for hyper references to the subfigures.}
%
% This is the code that actually writes the sub-captions to the appropriate
% List-of-Floats file.  First, we check that \cmd{\@captype} is defined
% and that the current type of sub-float expects to be written to a
% List-of-Floats file (by virtue of the file extension contained in 
% \cmd{\ext@sub}-$<$whatever$>$).
%
% Next we step through the internal list of pending sub-captions and
% write the contents line to the List-of-Floats file for each.  Finally,
% the internal list, \cmd{\sf@captionlist}, is re-initialized.
%
%    \begin{macrocode}
\def\@listsubcaptions#1{%
  \@ifundefined{@captype}{}{%
    \@ifundefined{ext@sub#1}{}{%
      \@for \sf@temp:=\sf@captionlist \do {%
        \ifx \@empty\sf@temp\relax \else
          \begingroup
            \def\@currentHref{\expandafter\@secondoftwo\sf@temp}%
            \sf@addcontentsline
              {\@nameuse{ext@sub#1}}%
              {sub#1}%
              {\expandafter\@firstoftwo\sf@temp}%
          \endgroup
        \fi}}}%
  \gdef\sf@captionlist{}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\caption@}
% \changes{v1.2}{16 January 2004}{Simplified \cmd{\caption@} at the suggestion
% of Axel Sommerfeldt.}
% \changes{v1.2}{22 January 2004}{Changed method of setting the float
% caption settings to first check for \cmd{\caption@setfloattype} and
% to use that if present.}
%
% This last is a wrapper for the standard \cmd{\@caption} command.  It
% is called by the main float \cmd{\caption} command and makes sure that
% the \cmd{\@listsubcaptions} is called at the proper time to either add
% the pending sub-captions for the last caption (if the float caption
% appears {\em before\/} the corresponding sub-captions); or, to first 
% write the float caption and then the pending sub-captions (if the float 
% caption appears {\em after\/} the corresponding sub-captions).
%
% It processes the options for the float and then checks the \Lkv{position}
% setting in order to determine how this float caption is supposed to be
% used.
%
%    \begin{macrocode}
\long\def\caption@#1[#2]#3{%
  \@ifundefined{caption@setfloattype}%
    \caption@settype
    \caption@setfloattype
        \@captype
  \sf@ifpositiontop{%
    \@listsubcaptions{#1}%
    \sf@old@caption{#1}[{#2}]{#3}%
  }{%
    \sf@old@caption{#1}[{#2}]{#3}%
    \@listsubcaptions{#1}%
  }}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@addcontentsline}
%
% Some packages may modify \cmd{\addcontentsline} which is used by 
% \cmd{\@listsubcaptions} to write the sub-captions to the List-of-Float
% files, therefore we wait until the document begins and grab the 
% then-current definition for use by the \cmd{\@listsubcaptions}
% command.
%
%    \begin{macrocode}
\AtBeginDocument{%
  \let\sf@addcontentsline=\addcontentsline}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Sub-float Label Handling}
% \label{sec:subfloatlabel}
%
% The label handling has three aspects.  The first is that the label for
% a sub-float is defined as the 
% {\bf\cmd{\p@}\textless{\em sub-float\_type}\textgreater} value
% prepended to the 
% {\bf\cmd{\the}\textless{\em sub-float\_type}\textgreater} value.
% Secondly, the |\subref| command is similar, except that it shows label
% as formatted on the List-of-Floats page.  Finally, we need to check for the
% \Lpack{hyperref} package and provide the extended reference format if
% it is present (see also, section~\ref{sec:hyperref}).
%
% \begin{macro}{\subfloat@label}
%
% In the \cmd{\sf@subfloat} command, the standard label command,
% \cmd{\label} is stored in \cmd{\sf@oldlabel} while the sub-float
% is being processed and this command, \cmd{\subfloat@label} is 
% substituted for it.
%
% This first part checks for the optional argument, which has
% parentheses rather than square brackets, following the form
% of the similar command in the \Lpack{hyperref} package.  If 
% there is no optional argument, than we supply one.
%
%    \begin{macrocode}
\def\subfloat@label{%
  \@ifnextchar(%   %) match left parenthesis
    {\sf@sub@label}
    {\sf@sub@label(Sub\@captype\space
                   \@ifundefined{thechapter}{}{\@nameuse{thechapter}\space}%
                   \@nameuse{p@sub\@captype}%
                   \@nameuse{thesub\@captype}.)}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@sub@label}
%
% The next portion of this process is to define the 
% \cmd{\@currentlabelname} if the \Lpack{hyperref} package
% is loaded and save it for later; then call \cmd{\sf@@sub@label}
% to finish the job.  We know that the \Lpack{hyperref} package
% is loaded using the \texttt{\char`\\ ifhyperrefloaded} flag
% which is defined here and will be set later in section~\ref{sec:hyperref}.

%    \begin{macrocode}
\newif\ifhyperrefloaded
%    \end{macrocode}
%
%    \begin{macrocode}
\def\sf@sub@label(#1)#2{%
  \ifhyperrefloaded
    \protected@edef\@currentlabelname{%
      \expandafter\strip@period #1\relax.\relax\@@@}%
  \fi
  \sf@@sub@label{#2}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@@sub@label}
% \changes{v1.1}{12 January 2004}{Fixed bug wherein the subreference
% could ignore any prefix numbering when set on the List-of-Floats page.
% Also changed \cmd{\captionlistofformat} to \cmd{\caption@lstfmt}.}
% \changes{v1.2}{23 January 2004}{Changed \cmd{\thepage} to 
% \cmd{\@nameuse}\{thesub-\cmd{\@captype}\} so that a starred-form
% of the \cmd{\subref} command will work to extract the simple
% form of the subfigure number using the \cmd{\pageref} mechanism.}
% \changes{v1.3}{27 May 2005}{Added formatting for the \cmd{\subref*}
% command.}
%
% Finally, we get the the value-added portion.  First, we call the
% standard \cmd{\label} command (via \cmd{\sf@oldlabel}).  Then
% we write the additional information to support the \cmd{\subref[*]}
% command.  This will take two forms, depending on the presence of
% the \Lpack{hyperref} package  However, in either case, we store
% the formatted label and the raw sub-float label in the auxillary
% file.
%
%    \begin{macrocode}
\def\sf@@sub@label#1{%
  \@bsphack
  \sf@oldlabel{#1}%
  \ifhyperrefloaded
    \begingroup
      \edef\@currentlabstr{%
        \expandafter\strip@prefix\meaning\@currentlabelname}%
      \protected@write\@auxout{}{%
          \string\newlabel{sub@#1}{%
              {\caption@lstfmt
                {\@nameuse{p@sub\@captype}}%
                {\@nameuse{thesub\@captype}}}%
              {\caption@subreffmt
                {\@nameuse{p@sub\@captype}}%
                {\@nameuse{thesub\@captype}}%
                {\the\value{\@captype}}%
                {\the\value{sub\@captype}}}%
              {\expandafter\strip@period\@currentlabelname\relax.\relax\@@@}%
              {\@currentHref}%
              {}}}%
    \endgroup
  \else
    \protected@write\@auxout{}{%
        \string\newlabel{sub@#1}{%
            {\caption@lstfmt
              {\@nameuse{p@sub\@captype}}%
              {\@nameuse{thesub\@captype}}}%
            {\caption@subreffmt
              {\@nameuse{p@sub\@captype}}%
              {\@nameuse{thesub\@captype}}%
              {\the\value{\@captype}}%
              {\the\value{sub\@captype}}}}}%
  \fi
  \@esphack}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\subref}
% \begin{macro}{\subref*}
% \begin{macro}{\sf@subref}
% \begin{macro}{\sf@@subref}
% \changes{v1.2}{23 January 2004}{Added a starred-form of the 
% \cmd{\subref} command.}
%
% Now, we can define the \cmd{\subref[*]} commands.  They are
% just like the \cmd{\ref} and \cmd{\pageref} commands.
% The only difference is that they use the alternate
% information placed in the auxillary file above.
%
%    \begin{macrocode}
\def\subref{%
  \@ifstar
    \sf@@subref
    \sf@subref}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\sf@subref#1{\ref{sub@#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\sf@@subref#1{\pageref{sub@#1}}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Support for Continued Figures}
%
% Now we add the ability to have continued floating environments
% and have them work with the sub-floats without having to load the
% \Lpack{captcont} package (but we stay compatible with it if it
% {\em is\/} loaded).
%
% The \Lpack{caption} package now contains a simple version of
% the \cmd{\ContinuedFloat} command, which works fine for regular
% floats.  We redefine it here to also handle the sub-floats.
%
%    \begin{macrocode}
\newif\if@ccflag
\@ccflagfalse
%    \end{macrocode}
%
% \begin{macro}{\ContinuedFloat}
% \changes{v1.3}{06 June 2005}{Fixed bug that required new float
% types to have their corresponding sub-floats defined in order
% to use the \cmd{\ContinuedFloat} command.}
%
% We postpone this definition to the end of the preamble, so that we
% we can check to see if the \Lpack{captcont} package was loaded.  If
% it was, then we change its internal \cmd{\refsteponlycounter} command
% to work with the new and simpler approach to continuing the floats.
%
%    \begin{macrocode}
\AtBeginDocument{%
%    \end{macrocode}
%
%    \begin{macrocode}
  \let\sf@refstepcounter=\refstepcounter
%    \end{macrocode}
%
%    \begin{macrocode}
  \@ifpackageloaded{captcont}{}{%
    \def\refsteponlycounter#1{%
      \if@ccflag
        \global\expandafter\advance\csname c@#1\endcsname\@ne
        \let\sf@temp\protect
        \def\protect{\noexpand\protect\noexpand}%
        \edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}%
        \let\protect\sf@temp
      \else
        \sf@refstepcounter{#1}%
      \fi
      \@ccflagfalse}%
  }%
%    \end{macrocode}
% \changes{v1.3}{26 June 2005}{Added support for the \Lpack{caption}
% package version of the \cmd{\ContinuedFloat} command.}
%
% Next, we re-define the \cmd{\ContinuedFloat} command to, in addition to
% backing up the float counter, check if a sub-float type is defined for
% this float type.  If there is, than it restores the current sub-float
% counter and to sets the \texttt{\char`\\ if@ccflag} true in order to
% enable the alternate code in the above \cmd{\refsteponlycounter}.
%
%    \begin{macrocode}
  \def\ContinuedFloat{%
    \ifx\@captype\@undefined
      \@latex@error{\noexpand\ContinuedFloat outside float}\@ehd
    \else
      \addtocounter{\@captype}{\m@ne}%
      \caption@ContinuedFloat\@captype
      \@ifundefined{c@sub\@captype}{}{%
        \setcounter{sub\@captype}{\value{sub\@captype @save}}%
        \@ccflagtrue}%
    \fi}}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\caption@ContinuedFloat}
% \changes{v1.3}{26 June 2005}{Added \cmd{\caption@ContinuedFloat}
% command to provide support for older versions of the \Lpack{caption}
% package.}
%
% In addition, we provide the \cmd{\caption@ContinuedFloat} so that
% earlier versions of the \Lpack{caption} package will not generate
% an error.
%
%    \begin{macrocode}
  \providecommand*\caption@ContinuedFloat[1]{}
%    \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\sf@caption}
%
% Finally, we define a wrapper for the \cmd{\caption} command now and wait
% until the end of the preamble to exchange it for the \cmd{\caption} command.
% Just in case some other package modifies it.  It is possible that another
% package will also wait until the end of the preamble to change the 
% \cmd{\caption} command.  In that case, it may be necessary to load this
% package and the other in a specific order.  However, this works for now.
%
%    \begin{macrocode}
\def\sf@caption{%
  \let\refstepcounter=\refsteponlycounter
  \sf@savecaption}
%    \end{macrocode}
%
%    \begin{macrocode}
\AtBeginDocument{%
  \let\sf@savecaption=\caption
  \let\caption=\sf@caption
}
%    \end{macrocode}
%
% \end{macro}
%
% \subsection{Automate the Sub-float Listings}
%
% \begin{macro}{\sf@end@float}
% \begin{macro}{\sf@end@dblfloat}
%
% We use the end@float and end@dblfloat hooks to process the List-of-Floats
% sub-captions at the end of a float environment so that the page numbers
% will be correct.  The alternative would be for the user to add a
% \cmd{\listsubcaptions} command at the end of the float environment if
% there is not \cmd{\caption} command between the last sub-float and the
% end of the float envrionment.
%
%    \begin{macrocode}
\let\sf@end@float=\end@float
%    \end{macrocode}
%
%    \begin{macrocode}
\let\sf@end@dblfloat=\end@dblfloat
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \begin{macro}{\end@float}
% \begin{macro}{\end@dblfloat}
%
% These two wrappers are pretty much the same, they first zero out 
% the sub-float counters (for all sub-float types, but not the saved
% counter values).  Next they dump all of the pending sub-captions
% the currnet List-of-Float page.  Finally, they call the \cmd{\end@float}
% or \cmd{\end@dblfloat} command.
%
% There is one problem, the \Lpack{fixltx2e} and (old) \Lpack{fix2col}
% packages redefine \cmd{\end@dblfloat} and assume that the first
% token in \cmd{\end@float} is \cmd{\@endfloatbox}.  Therefore we
% redefine \cmd{\@endfloatbox} below in section ~\ref{sec:endfloat}
% if these packages are loaded.
%
%    \begin{macrocode}
\def\end@float{%
  \@ifundefined{sf@counterlist}{}{%
    \@for\sf@temp:=\sf@counterlist\do{%
      \setcounter{\sf@temp}{\z@}}%
    \@listsubcaptions{\@captype}}%
  \sf@end@float}%
%    \end{macrocode}
%
%    \begin{macrocode}
\def\end@dblfloat{%
  \@ifundefined{sf@counterlist}{}{%
    \@for\sf@temp:=\sf@counterlist\do{%
      \setcounter{\sf@temp}{\z@}}%
    \@listsubcaptions{\@captype}}%
  \sf@end@dblfloat}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
%
% \subsection{Provide Compatibility with Other Packages}
%
% We postpone the following to the end of the preamble in order
% to detect any other packages that are loaded after this one.
%
%    \begin{macrocode}
\AtBeginDocument{%
%    \end{macrocode}
%
% \subsubsection{The \Lpack{Hyperref} Package}
% \label{sec:hyperref}
% \changes{v1.3}{28 June 2005}{Added an update to the 
% \cmd{\H@refstepcounter} so that when it is called within the context
% of a \cmd{\caption} when the \cmd{\@ccflag} is true, the respective
% sub-counter will be restored.  This change allows the correct functioning
% of the \cmd{\ContinuedFloat} command.}
%
% We define a \texttt{\char`\\ ifhyperrefloaded} flag which is used with
% the sub-caption labels (see section~\ref{sec:subfloatlabel}).  If the
% \Lpack{hyperref} package is loaded, we set this flag to true and, for
% each sub-float type, we create a \cmd{\theH$<$sub-float$>$} command that
% it needs.
%
%    \begin{macrocode}
  \@ifpackageloaded{hyperref}{%
    \hyperrefloadedtrue
    %
    \def\sf@setref#1sub#2\relax{%
      \@namedef{theHsub#2\expandafter}{\@nameuse{the#2}.\arabic{sub#2}}%
      \@namedef{toclevel@sub#2}{1}%
    }
    %
    \@for\sf@temp:=\sf@counterlist\do{%
      \expandafter\sf@setref\sf@temp\relax}%
    %
    \global\let\sf@setref\relax
    %
    \let\sf@Hrefstepcounter\H@refstepcounter
    \def\H@refstepcounter#1{%
      \sf@Hrefstepcounter{#1}%
      \@ifundefined{c@sub#1}{}{%
        \if@ccflag
          \setcounter{sub#1}{\value{sub#1@save}}%
        \fi
        \@ccflagfalse}}%    
    %
  }{}%
%    \end{macrocode}
%
% \subsubsection{The \Lpack{Float} Package}
% 
% If the \Lpack{float} package is loaded, we need to modify its wrapper
% for \cmd{\@endfloatbox} so that \cmd{\listsubcaptions} is called before
% finishing the float environment in order to get the page numbers right.
%
%    \begin{macrocode}
  \@ifpackageloaded{float}{%
    \let\sf@endfloatbox=\@endfloatbox
    \def\@endfloatbox{%
      \listsubcaptions
      \sf@endfloatbox}%
  }{}%
%    \end{macrocode}
%
% \subsubsection{The \Lpack{Fixltx2e} Package}
% \label{sec:endfloat}
%
% We also provide compatibility with the older \Lpack{fix2col} package
% that the \Lpack{fixltx2e} package supersedes.  They assume that 
% \cmd{\end@float} command begins with \cmd{\@endfloatbox} which may
% be removed with a \cmd{\@gobble}; however, we redefine the 
% \cmd{\@endfloatbox} making this untrue.  Therefore, we have to fix
% this assumption if one or both of these packages are loaded.
%
%    \begin{macrocode}
  \@ifpackageloaded{fixltx2e}{%
    \def\end@dblfloat{%
      \if@twocolumn
        \@ifundefined{sf@counterlist}{}{%
          \@for\sf@temp:=\sf@counterlist\do{%
            \setcounter{\sf@temp}{\z@}}%
          \@listsubcaptions{\@captype}}%
        \@endfloatbox
        \ifnum\@floatpenalty <\z@
          \@largefloatcheck
          \global\dp\@currbox1sp %
          \expandafter\@gobble\sf@end@float
        \fi
      \else
        \end@float
      \fi}%
  }{%
%    \end{macrocode}
%
%    \begin{macrocode}
    \@ifpackageloaded{fix2col}{%
      \def\end@dblfloat{%
        \if@twocolumn
          \@ifundefined{sf@counterlist}{}{%
            \@for\sf@temp:=\sf@counterlist\do{%
              \setcounter{\sf@temp}{\z@}}%
            \@listsubcaptions{\@captype}}%
          \@endfloatbox
          \ifnum\@floatpenalty <\z@
            \@largefloatcheck
            \global\dp\@currbox1sp %
            \expandafter\@gobble\sf@end@float
          \fi
        \else
          \end@float
        \fi}}{}%
  }
%    \end{macrocode}
%
%    \begin{macrocode}
}
%    \end{macrocode}
%
%    \begin{macrocode}
\endinput
%    \end{macrocode}
%
% \iffalse
%</package>
% \fi
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
% \Finale
back to top