From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/subfig/subfig.dtx | 4714 ++++++++++++++++++++++++++++++++ 1 file changed, 4714 insertions(+) create mode 100644 macros/latex/contrib/subfig/subfig.dtx (limited to 'macros/latex/contrib/subfig/subfig.dtx') diff --git a/macros/latex/contrib/subfig/subfig.dtx b/macros/latex/contrib/subfig/subfig.dtx new file mode 100644 index 0000000000..1b1a89a1fd --- /dev/null +++ b/macros/latex/contrib/subfig/subfig.dtx @@ -0,0 +1,4714 @@ +% \iffalse % meta-comment +% subfig.dtx +% Sub-float macros for use with the LaTeX figure/table environments. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Copyright © 2003, 2004, 2005 Steven Douglas Cochran. +% +% This work (the subfig package) may be distributed and/or modified +% under the conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "author-maintained". +% +% This Current Maintainer of this work is Steven Douglas Cochran. +% +% This work consists of all files listed under "MANIFEST" in the +% README file distributed with the subfig package. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% @LaTeX-style-file{ +%% author = "Steven Douglas Cochran", +%% version = "1.3", +%% date = "2005/07/05", +%% time = "04:19:08", +%% filename = "subfig.sty", +%% address = "Digital Mapping Laboratory, +%% School of Computer Science +%% Carnegie-Mellon University, +%% 5000 Forbes Avenue +%% Pittsburgh, PA 15213-3890 +%% USA", +%% telephone = "+1 412.268.5654", +%% fax = "+1 412.268.5576", +%% email = "cochran@ieee.org", +%% codetable = "ISO/ASCII", +%% keywords = "LaTeX, float, sub-float, continued figure", +%% supported = "yes", +%% abstract = "LaTeX package for providing support for the +%% inclusion of small, `sub', figures and tables. It +%% simplifies the positioning, captioning and +%% labeling of them within a single figure or table +%% environment. In addition, this package allows +%% such sub-captions to be written to the List of +%% Figures or List of Tables if desired." +%% } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \fi +% +% \catcode`\^=14 ^ We will use a ^ for a comment. +% +% \def\filename{subfig.dtx} +% \def\fileversion{version 1.3} +% \def\filedate{2005/06/28} ^ Last code change +% \def\docdate{2005/07/05} ^ Last documentation change +% +% \CheckSum{1183} +% +% \iffalse +%<*driver> +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesFile{subfig.dtx} +\documentclass[a4paper]{ltxdoc} +\usepackage{hyperref} +\makeatletter + \@twosidetrue + \def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} + \def\cmd@to@cs#1#2{#2} + \DeclareRobustCommand\cs[1]{\textbackslash #1} + % + % Widen the standard ltxdoc pagesize, just a little. + % + \setlength\topmargin {0pt} + \setlength\headheight {12pt} + \setlength\headsep {24pt} + \setlength\@tempdima {\paperheight} + \addtolength\@tempdima {-2in} + \addtolength\@tempdima {-\headheight} + \addtolength\@tempdima {-\headsep} + \divide\@tempdima \baselineskip + \@tempcnta \@tempdima + \setlength\textheight {\@tempcnta\baselineskip} + % + \setlength\textwidth {\paperwidth} + \addtolength\textwidth {-3in} + \addtolength\textwidth {-20pt} + \setlength\oddsidemargin {1in} + \addtolength\textwidth {20pt} + \setlength\evensidemargin {\oddsidemargin} + % + \setlength\marginparsep {8pt} + \setlength\marginparwidth {2in} +\makeatother +\RequirePackage[format=hang,justification=RaggedRight]{caption}[2005/06/26] +\RequirePackage[format=default,justification=justified,% + lofdepth=2,lotdepth=2,subrefformat=parens]{subfig}[2005/06/28] +% Create map and submap floats for example +\usepackage{float} +\newfloat{map}{tbph}{lom} +\restylefloat*{map} +\floatstyle{plain} +\floatname{map}{Map} +\captionsetup[map]{position=top} +\newsubfloat[position=top,listofformat=simple]{map} +\newcommand{\listofmaps}{\listof{map}{List of Maps}} +\setcounter{lomdepth}{2} +% Other packages +\usepackage{color} +\definecolor{lightgray}{gray}{.8} +\IfFileExists{booktabs.sty}{% + \usepackage{booktabs}% +}{% + \PackageWarning{subfig}% + {booktabs.sty is missing.\MessageBreak + I'm emulating the needed commands, but you should\MessageBreak + install it for better results.}% + \let\toprule\hline + \let\midrule\hline + \let\bottomrule\hline +} +% Handy temp values. +\newbox{\tempbox} +\newdimen{\tempdima} +\newdimen{\tempdimb} +% Make a SubFloat environment. +\makeatletter +\newbox\sf@box +\newenvironment{SubFloat}[2][]% + {\def\sf@one{#1}% + \def\sf@two{#2}% + \setbox\sf@box\hbox + \bgroup}% + { \egroup + \ifx\@empty\sf@two\@empty\relax + \def\sf@two{\@empty} + \fi + \ifx\@empty\sf@one\@empty\relax + \subfloat[\sf@two]{\box\sf@box}% + \else + \subfloat[\sf@one][\sf@two]{\box\sf@box}% + \fi} +\makeatother +% Adjust internal stuff +\makeatletter +\IfFileExists{multirow.sty}{% + \usepackage{multirow}% +}{% + \PackageWarning{subfig}% + {multirow.sty is missing.\MessageBreak + I'm emulating the needed command, but you should\MessageBreak + install it for better results.}% + \def\multirow##1##2##3{% + \@tempcnta=##1% + \@tempdima\@tempcnta\ht\@arstrutbox + \advance\@tempdima\@tempcnta\dp\@arstrutbox + \ifnum\@tempcnta<0% + \@tempdima=-\@tempdima + \fi + \if*##2 + \setbox0\vtop to \@tempdima{% + \vfill + \raggedright + \hbox{\strut##3\strut}% + \vfill}% + \else + \setbox0\vtop to \@tempdima{% + \hsize##2 + \@parboxrestore + \vfill + \raggedright + \strut##3\strut\par + \vfill}% + \fi + \ht0\z@ + \dp0\z@ + \ifnum\@tempcnta<0% + \advance\@tempdima-\dp\@arstrutbox + \else + \@tempdima=\ht\@arstrutbox + \fi + \leavevmode + \vtop{% + \vskip-\@tempdima + \box0% + \vss}}} +\makeatother +% Penalty Settings +\setlength\hfuzz{100pt} \setlength\vfuzz{100pt} \clubpenalty=10000 +\widowpenalty=10000 \displaywidowpenalty=5000 \brokenpenalty=5000 +\begin{document} + \pagestyle{empty} + \DocInput{subfig.dtx} +\end{document} +% +% +%<*ltxdoc> +\AtBeginDocument{% +% \OnlyDescription % comment out for implementation details + \EnableCrossrefs + \RecordChanges + \CodelineIndex +} +\AtEndDocument{ + \newpage + \PrintChanges + \newpage + \PrintIndex +} +% +% +% \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@} type and the +% \cmd{\the} 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 +% +% \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 +% +% \fi +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% \Finale -- cgit v1.2.3