From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/subfig/subfig.dtx | 4714 ++++++++++++++++++++++++++++++++
 1 file changed, 4714 insertions(+)
 create mode 100644 macros/latex/contrib/subfig/subfig.dtx

(limited to 'macros/latex/contrib/subfig/subfig.dtx')

diff --git a/macros/latex/contrib/subfig/subfig.dtx b/macros/latex/contrib/subfig/subfig.dtx
new file mode 100644
index 0000000000..1b1a89a1fd
--- /dev/null
+++ b/macros/latex/contrib/subfig/subfig.dtx
@@ -0,0 +1,4714 @@
+% \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
-- 
cgit v1.2.3

