mosesdecoder/report/subfig.dtx

4715 lines
189 KiB
TeX
Executable File

% \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