% \iffalse % hhsubfigure.dtx % Subfigure/subtable macros for use with the LaTeX figure/table environments. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright (C) 2003 Harald Harders. % % This is a slightly modified version of the `subfigure' package by % Steven Douglas Cochran. The origianl package can be downloaded from % . % % The hhsubfigure package is free software; it may be distributed under % the conditions of the LaTeX Project Public License, either version 1.1 % 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.1 or later is part of all distributions of LaTeX version % 1999/06/01 or later. % % The captcont package is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % LaTeX Project Public License for more details. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @LaTeX-style-file{ %% author = "Steven Douglas Cochran (modified by Harald Harders)", %% version = "2.1.4", %% date = "2003/09/14", %% time = "09:34:13", %% filename = "hhsubfigure.sty", %% email = "h.harders@tu-bs.de", %% codetable = "ISO/ASCII", %% keywords = "LaTeX, float, figure, table, captcont", %% 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 subcaptions to be written to the List of %% Figures or List of tables if desired." %% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %<*driver> \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesFile{hhsubfigure.dtx} \documentclass{ltxdoc} \usepackage[tight,TABTOPCAP]{hhsubfigure}[2002/03/15] \setlength\hfuzz{100pt} \setlength\vfuzz{100pt} \clubpenalty=10000 \widowpenalty=10000 \displaywidowpenalty=5000 \brokenpenalty=5000 \begin{document} \DocInput{hhsubfigure.dtx} \end{document} % % %<*ltxdoc> \AtBeginDocument{ % \OnlyDescription % comment out for implementation details \EnableCrossrefs \RecordChanges \CodelineIndex} \AtEndDocument{ \PrintChanges \PrintIndex} % % % \fi % \catcode`\^=14 ^^A We will use a ^ for a comment rather than ^^A. % \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 % ^ NOTE: Hacks added to make the final format are marked ``^finalhack''. % % \changes{v1.0}{05 Mar 1986}{Created.} % % \changes{v1.1}{02 Nov 1988}{Initial revision.} % % \changes{v1.2}{30 Aug 1989}{Added a separate bottom margin and % expanded the comments.} % % \changes{v1.3}{22 Oct 1990}{Changed test for empty subcaption inside % of \cmd{\@subfigure} to compare tokens and not the subcaption vs.\ % \cmd{\@empty}. The former (incorrect) test caused an error when the % first two letters of the subcaption were the same.} % % \changes{v1.4}{27 Jun 1992}{Added a hack to allow the \cmd{\label} % command to be used within the body of the subfigure giving a % reference label in the form \cmd{\arabic{thefigure}\thesubfigure}. % Added standard file header for style.} % % \changes{v1.5}{11 Aug 1992}{Fixed a bug which caused a problem with % subcaptions that contained expressions like \cmd{\sqrt}; This was % pointed out by Tom Scavo (scavo\@cie.uoregon.edu). A separate bug % was fixed which caused different sized subcaptions to be misaligned; % This problem was pointed out by Simon Marshall % (S.Marshal\@Hull.ac.uk). Also cleaned up the code a mite and % {\bf changed} the figure spacing so that if no optional section is % given, then the figure is only followed by \cmd{\subfigbottomskip} % and not that plus $(\cmd{\subfigcapskip}+\cmd{\strut}\hbox{height})$. % This should make it easier to adjust spacing as desired.} % % \changes{v1.6}{13 May 1993}{Changed to use the \cmd{\thefigure} % command in building the referenced label. The old form caused a % problem when used with the report.sty as pointed out by Andrew % Anselmo (anselmo\@cumesb.mech.columbia.edu). Also modified to % restrict the scope of the subfigure \cmd{\label} to the body of the % subfigure. Added \cmd{\@thesubfigure} to allow a separate labeling % of the subfigure in the figure and in the text. By default it is % the same as \cmd{\thesubfigure} with space appended. Added some % code to print the subfigure captions to the List-of-Figures file % if desired. Finally, added the corresponding support for subtables % as well as subfigures. NOTE: the optional subcaption is now a moving % argument and any fragile commands that appear in the subcaption must % be preceded by a \cmd{\protect} (just like that of the \cmd{\caption} % command).} % % \changes{v2.0}{06 Mar 1995}{This version of \cmd{\subfigure} is the % first to be ported to \LaTeXe\ (with backward compatibility to % \LaTeX2.09). \cmd{\subfigure} and \cmd{\subtable} are now identical % and the environment controls internal differences between them. Now, % the subcaption setting portion of \cmd{\@subfloat} is broken into the % separate commands \cmd{\@makesubfigurecaption} and % \cmd{\@makesubtablecaption} to allow a separate hook for the % modification of how the subcaption is constructed and to allow the % subtable and subfigure captions to be different. In addition, support % of the \Lopt{normal}, \Lopt{hang}, \Lopt{center}, \Lopt{centerlast}, % \Lopt{nooneline}; \Lopt{scriptsize}, \ldots, \Lopt{Large}; \Lopt{up}, % \Lopt{it}, \Lopt{sl}, \Lopt{sc}, \Lopt{md}, \Lopt{bf}, \Lopt{rm}, % \Lopt{sf}, and \Lopt{tt} package options were added for compatibility % with the caption.sty by H.A. Sommerfeldt.} % % \changes{v2.1}{23 Jan 2002}{Upgraded to fix a \cmd{\protect} bug that % crept in due to changes in \LaTeXe\ and to enhance the interaction % with the ``List-of'' files. Backward compatibility with \LaTeX2.09 is % \textbf{not} supported. This version allows optional subcaption % strings for the ``List-of'' files and the companion captcont.sty % allows further extensions. Added check for \Lfile{subfigure.cfg} file % for automatic configuration. Added more options for adjustment of the % look-and-feel of the subcaption. Added the ability to independently % move the float caption and subcaption before or after the figure. % Removed extra space from the top of a figure at the top of a page and % some accidental whitespace. Reduced the default space around the % figure and made it actual skips. Updated the documentation to % describe the new changes and to make some points more clear.} % % \DoNotIndex{\@@@,\@auxout,\@bsphack,\@dottedtocline,\@empty,\@esphack} % \DoNotIndex{\@flushglue,\@for,\@gobble,\@ifnextchar,\@ifpackageloaded} % \DoNotIndex{\@ifstar,\@ifundefined,\@minipagefalse,\@nameuse,\@ne} % \DoNotIndex{\@rightskip,\@tempboxa,\@tempcnta,\@tempdima} % \DoNotIndex{\@tempdimb,\@tempskipb,\@xaddvskip,\addcontentsline} % \DoNotIndex{\addtolength,\advance,\alph,\arabic,\AtBeginDocument} % \DoNotIndex{\AtEndOfPackage,\begingroup,\bfseries,\bgroup,\box} % \DoNotIndex{\DeclareOption,\def,\do,\edef,\egroup,\else,\endgroup} % \DoNotIndex{\ExecuteOption,\ExecuteOptions,\ext@figure,\ext@table} % \DoNotIndex{\familydefault,\fi,\footnotesize,\fontfamily,\fontseries} % \DoNotIndex{\fontshape,\gdef,\global,\hbox,\hfil,\hskip,\hss,\if@minipage} % \DoNotIndex{\ifcase,\ifdim,\ifnum,\ifx,\ignorespaces,\InputIfFileExists} % \DoNotIndex{\itshape,\label,\lastskip,\leftskip,\Large,\large,\leavevmode} % \DoNotIndex{\let,\long,\m@ne,\mdseries,\multiply,\NeedsTeXFormat} % \DoNotIndex{\newcommand,\newcounter,\newdimen,\newif,\newlabel,\newskip} % \DoNotIndex{\noexpand,\normalsize,\numberline,\or,\p@,\par,\parbox} % \DoNotIndex{\parfillskip,\parindent,\ProcessOptions,\protect} % \DoNotIndex{\protected@write,\protected@edef,\providecommand} % \DoNotIndex{\ProvidesPackage,\ref,\refstepcounter,\relax,\renewcommand} % \DoNotIndex{\RequirePackage,\rightskip,\rmfamily,\sbox,\scriptsize} % \DoNotIndex{\scshape,\selectfont,\seriesdefault,\setbox,\setcounter} % \DoNotIndex{\setlength,\sffamily,\shapedefault,\slshape,\small,\space} % \DoNotIndex{\string,\strut,\thefigure,\thepage,\thetable,\ttfamily,\tw@} % \DoNotIndex{\typeout,\undefined,\upshape,\usebox,\vbox,\vskip,\vspace} % \DoNotIndex{\vtop,\wd,\xdef,\z@,\z@skip} % % \CheckSum{770}% % ^ Allow a little more freedom in typesetting floats. % \setcounter{topnumber}{8} % \def\topfraction{.8} % \setcounter{bottomnumber}{8} % \def\bottomfraction{.8} % \setcounter{totalnumber}{8} % \def\textfraction{.2} % \def\floatpagefraction{.8} % \setcounter{dbltopnumber}{8} % \def\dbltopfraction{.8} % \def\dblfloatpagefraction{.8} % % ^ Add some space above any footnotes. % \skip\footins=1.5\baselineskip % % \makeatletter % % ^ Remove some space above minipage footnotes. % \skip\@mpfootins=2.6\p@ % % ^ Define a raggedright for use in tabular's. % \newcommand{\rr}{^ % \@rightskip\@flushglue % \rightskip\@rightskip % \leftskip\z@ % \parindent\z@} % % ^ Turn off any list entries by ``eating'' any \addcontentsline stuff. % \newcommand*{\eatthree}[3]{}^ % \newcommand*{\turnofflistentry}{\let\addcontentsline=\eatthree} % % ^ Print text (#2) only if reference (r@#1) is defined. % \newcommand{\PrintIfDefined}[3]{^ % \@bsphack % \@ifundefined{r@#1}{#3}{#2}^ % \@esphack} % % \makeatother % % \def\docdate{2002/07/02} % \def\fileversion{v2.1.4a} % \def\filedate{2003/09/14} % \def\filename{hhsubfigure.dtx} % % \title{The \Lpack{hhsubfigure} Package\footnote{This paper documents % the \Lpack{hhsubfigure} package \fileversion, last revised \filedate.}} % \author{Steven Douglas Cochran\\[5pt] % Digital Mapping Laboratory, School of Computer Science \\ % Carnegie-Mellon University, 5000 Forbes Avenue \\ % Pittsburgh, PA 15213--3890, USA\\[5pt] % \texttt{sdc+@cs.cmu.edu}} % \date{\docdate} % % \maketitle % % \begin{abstract} % \noindent % This article documents the \LaTeX\ package `\Lpack{hhsubfigure}', 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. In addition, this package allows such subcaptions to be % written to a List-of-Figures or List-of-Tables if desired. The % `\Lpack{hhsubfigure}' package also cooperates with the `\Lpack{caption}' % and `\Lpack{caption2}' packages by H.A. Sommerfeldt % \cite{Somm95a,Somm95b}, the `\Lpack{ccaption}' and `\Lpack{tocloft}' % packages \cite{Wils01,Wils01B} by Peter Wilson, the `\Lpack{hyperref}' % package by Sebastian Rahtz \cite{Raht02}, the `\Lpack{captcont}' package % \cite{Coch02}, and should be compatible with all other packages that % modify or extend the \Lenv{float} environment or the \cmd{\caption} or % \cmd{\label} commands. % % \end{abstract} % % \newpage % \tableofcontents % % \newpage % \setcounter{lotdepth}{2}^ % \listoftables % \setcounter{lofdepth}{2}^ % \listoffigures % % \newpage % \section{Introduction} % \enlargethispage{24pt}^finalhack % % This package provides support for the manipulation and reference of % small or `sub' figures and tables within a single \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 % subfigures are to be separately captioned, referenced, or when such % subcaptions are to be included in the List-of-Figures. % % Before using the \Lpack{hhsubfigure} package, consider the following to % see if you really need it. If you simply want to center your figure, % then you can use |\centerline|, |\centering| or the \Lenv{center} % environment to do so. 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. For example, % the following will put two images side-by-side in a single figure as % shown in figure~\ref{fig:1figs}:\footnote{You might have to use the % optional position arguments `[b]' or `[t]' if the figures are of % different heights.} % % \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} % \vspace{-1\baselineskip} % \begin{figure}^ % \abovecaptionskip=6pt^ % \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{-10pt} % \end{figure} % % \noindent % Further, 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} % \vspace{-\baselineskip} % \begin{figure}^ % \abovecaptionskip=2pt^ % \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{-10pt} % \end{figure} % % For more information on typesetting figures and tables, see the % document ``Using Imported Graphics in \LaTeXe'' by Keith Reckdahl % \cite{Reck97}. % % \section{The User Interface} % \vspace{-5pt}^finalhack % \enlargethispage{12pt}^finalhack % % To use this package place % \begin{quote} % |\usepackage|\oarg{options}\marg{hhsubfigure} % \end{quote} % in the preamble of your document. The supported options are shown in % table~\ref{tab:options}. % \DescribeMacro{\subfigure} % \DescribeMacro{\subtable} % Within a \Lenv{figure} or \Lenv{table} % environment, you can use the following commands to create a subfigure % or subtable ``box'' with an optional subcaption underneath. % \vspace{-2pt} % \begin{quote} % |\subfigure|\oarg{list\_entry}\oarg{subcaption}\marg{figure}\\ % |\subtable|\oarg{list\_entry}\oarg{subcaption}\marg{figure} % \end{quote} % \vspace{-2pt} % % \noindent % If a subcaption argument is given (including the null subcaption % `{\ttfamily [$\;$]}') then the subfigure is labeled with a counter % formatted by the command `|\thesubfigure|' which returns, by default, % `(a)', `(b)', etc. The counter used for labeling the subfigures is % \Lcount{hhsubfigure} and is incremented for each subfigure regardless of % whether a subcaption was printed. The internals of the |\subtable| % command are symmetric to those of the |\subfigure| command. Further, % if a List-of-Figures (or List-of-Tables) is generated, then the % \meta{list\_entry} argument controls how the caption text is used % there. Table~\ref{tab:calling} shows the possibilities. % % \changes{v2.1.4}{30 Apr 2002}{Changed the label and caption defaults % from \cmd{\rmfamily}\cmd{\mdseries}\cmd{\upshape} to % \cmd{\familydefault}\cmd{\seriesdefault} \cmd{\shapedefault}.} % \DeleteShortVerb{\|} % \begin{table} % \def\M#1{\vspace*{#1}} % \centering % \caption{\Lpack{hhsubfigure} package options.} % \label{tab:options} % \vspace{8pt} % \fbox{\begin{tabular}{|p{0.36\textwidth}|p{0.63\textwidth}|} \hline % \multicolumn{1}{|c|}{{\large\bf\strut Option}} % & \multicolumn{1}{c|}{{\large\bf Description}} % \\ \hline\hline % \Lopt{normal} & \rr Provides `normal' subcaptions, this is the % default. \\ \hline % \raisebox{-1.4ex}{\Lopt{hang}, \Lopt{isu}} % & \rr Causes the label to be a hanging % indentation to the subcaption paragraph. % (\Lopt{isu} is a synonym for \Lopt{hang}.) % \\ \hline % \raisebox{-1.4ex}{\Lopt{center}} % & \rr Causes each line of the paragraph to be % separately centered. Overrides % \Lopt{centerlast}.\\ \hline % \raisebox{-1.4ex}{\Lopt{centerlast}, \Lopt{anne}} % & \rr Causes the last line only to be centered. % Overrides \Lopt{nooneline}. (\Lopt{anne} is % a synonym for \Lopt{centerlast}.) \\ \hline % \raisebox{-2.6ex}{\Lopt{nooneline}} % & \rr If a subcaption fits on one line it will, by % default, be centered. This option % treats a single line like a mid-line of a % multi-line caption.\\ \hline % \raisebox{-1.4ex}{\Lopt{raggedright}} % & \rr Causes the subcaption text to be raggedright. % Overrides \Lopt{center} and \Lopt{centerlast}. % \\ \hline % \raisebox{-1.4ex}{\Lopt{RaggedRight}} % & \rr Causes the subcaption text to be % raggedright with hyphenation (using the % ragged2e package). % Overrides \Lopt{center} and \Lopt{centerlast}. % \\ \hline\hline % \Lopt{scriptsize{\rm,} footnotesize{\rm,} small{\rm,}\hfil\null\linebreak % normalsize{\rm,} large{\rm,} Large} % & \rr Sets the font size of the subcaptions (both % the label and the text), \Lopt{footnotesize} % is default. \\ \hline % \M{1.8ex} % \Lopt{rm{\rm,} sf{\rm,} tt{\rm,} md{\rm,} bf{\rm,}\efill % up{\rm,} it{\rm,} sl{\rm,} sc{\rm,}}\hfil\null\linebreak % \Lopt{RM{\rm,} SF{\rm,} TT{\rm,} MD{\rm,} BF{\rm,}\efill % UP{\rm,} IT{\rm,} SL{\rm,} SC} % & \rr The lowercase commands set the font attributes % of the subcaption label. The capitalized version % sets the font attributes of the text. Family, % shape and style attributes may be mixed. % The default is to set the document defaults for % the family, series and shape.\\ \hline\hline % \M{4ex} % \Lopt{figbotcap}{\rm,} \Lopt{tabbotcap}{\rm,}\hfil\null\linebreak % \Lopt{FIGBOTCAP}{\rm,} \Lopt{TABBOTCAP} % & \rr Sets the figure or table numbering based on % the assumption that the figure or table caption % comes after the subfigures or subtables. The % capitalized version also places the subcaption % after the figure (``\Lopt{FIGBOTCAP}'' and % ``\Lopt{TABBOTCAP}'' are the default settings). % \\ \hline % \M{3.9ex} % \Lopt{figtopcap}{\rm,} \Lopt{tabtopcap}{\rm,}\hfil\null\linebreak % \Lopt{FIGTOPCAP}{\rm,} \Lopt{TABTOPCAP} % & \rr Sets the figure or table numbering based on % the assumption that the figure or table caption % precedes the subfigures or subtables. The % capitalized version also places the subcaption % before the figure (``\Lopt{TABTOPCAP}'' is the % preferred table setting, see % section~\ref{sec:position} for details). % \\ \hline\hline % \M{2.6ex} % \Lopt{loose}{\rm,} \Lopt{tight} % & \rr The (default) \Lopt{loose} option sets the % historically normal whitespace around the subfloat. % The \Lopt{tight} option sets less space around the % subfigure (this is the preferred setting). % \\ \hline % \end{tabular}}% % \end{table} % \MakeShortVerb{\|} % % \begin{table} % \centering % \caption{\cmd{\subfigure} calling arguments.} % \label{tab:calling} % \begingroup\small % \begin{tabular}{llc} \\ \hline % {\normalsize Subfigure Command} % & {\normalsize LoF/LoT} % & \multicolumn{1}{r}{\hbox to .25in{% % \hss\normalsize % Subfigure Caption}} % \\ \hline % \cmd{\subfigure}\{\dots fig\dots\} % & & \\ % \cmd{\subfigure}[~]\{\dots fig\dots\} % & (b)\ \ . . . . . . . . . . % & (b) \\ % \cmd{\subfigure}[Subcaption.]\{\dots fig\dots\} % & (c) Subcaption. . . . % & (c) Subcaption. \\ % \cmd{\subfigure}[\space][Subcaption.]\{\dots fig\dots\} % & & (d) Subcaption. \\ % \cmd{\subfigure}[\space][\space]\{\dots fig\dots\} % & & (e) \\ % \cmd{\subfigure}[List\_entry.][Subcaption.]\{\dots fig\dots\} % & (f) List\_entry. . . . % & (f) Subcaption. \\ % \cmd{\subfigure}[List\_entry.][~]\{\dots fig\dots\} % & (g) List\_entry. . . . % & (g) \\ \hline % \end{tabular} % \endgroup % \vspace{-8pt} % \end{table} % % If you wish to reference a specific subfigure or subtable, you can % include a |\label| inside the body of either the \meta{subcaption} or % \meta{figure} argument to the command (but not the \meta{list\_entry} % argument). If supplied by itself, the \meta{subcaption} is a ``moving % argument''\footnote{See \cite[\textsection~4.7 and % \textsection~C.1.3]{Lamp94} for a more detailed description of % ``moving arguments'' and ``fragile'' commands.} and, therefore, any % ``fragile'' commands contained within it must be |\protect|'ed. If % the \meta{list\_entry} argument is supplied, then the % \meta{subcaption} is not a ``moving argument''; however, the % \meta{list\_entry} is. % % {\bf Note:} since the |\subfigure| and |\subtable| commands have optional % arguments, delimited with square brackets, before their required argument, % you cannot use the `]' character at the top level of either the % \meta{subcaption} or \meta{list\_entry} argument. To overcome this % problem, you must wrap the portion of the text containing the `]' % character (or the entire argument), in a pair of curly brackets (see % \cite[\textsection~C.1.1]{Lamp94} for more detail). For example: % % \begin{verbatim} % \subfigure[This does not $sqrt[3]{8}$ work.]{... figure text ...} % \subfigure[This works {$sqrt[3]{8}$} fine.]{... figure text ...} % \subfigure[{This also works $sqrt[3]{8}$ fine.}]{... figure text ...} % \end{verbatim} % % One final note, the |\subfigure| and |\subtable| commands are % actually identical and it is the surrounding environment that defines % actually identical and it is the surrounding environment that defines % whether a subtable or subfigure will be generated and not which command % is used. At the user level, the choice of names is purely cosmetic % (and historical). Therefore you can use |\subfigure| for any float % ({\it e.g.\/}, \Lenv{figure}, \Lenv{table}, or other) environment. % % \subsection{Format Options} % \label{sec:format} % % There are six options for formatting the layout of the caption label % and text. The first is \Lopt{normal}, which produces the style shown % in figure~\ref{fig:format-01}. The other options may be used in % various combinations to produce the layouts shown in % figures~\ref{fig:format-02} thru \ref{fig:format-14}. Note that some % combinations, like \Lopt{center} and \Lopt{centerlast} do not make % sense since \Lopt{center} overrides \Lopt{centerlast}. Also, % \Lopt{nooneline}, when combined with either \Lopt{center} or % \Lopt{centerlast} has no effect (unless the \Lopt{hang} option is % also set); and, \Lopt{raggedright} overrides both \Lopt{center} and % \Lopt{centerlast}. % % \begingroup % \def\sc{Short.} % \def\lc{This is a long caption of gibberish: Aafas d taed % gaihgghn adf irin sadf aets etsd na.} % \def\b{\fboxsep=-\fboxrule % \fbox{\hbox to 2.0in{\vbox to 2mm{\vfil\null}\hfil}}} % \def\g{\hspace{.5in}} % \subfigtopskip=20pt % \subfigcapskip=-3pt % \subfigbottomskip=0pt % \abovecaptionskip=5pt % \begin{figure}^ % \centering % \turnofflistentry % \subcaphangfalse % \subcapcenterfalse % \subcapcenterlastfalse % \subcapnoonelinefalse % \subcapraggedrightfalse % \subfigure[\sc]{\b}\g\subfigure[\lc]{\b}\\ % \caption{Format option [\Lopt{normal}].}^ % \label{fig:format-01}^ % \subcapnoonelinetrue % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format option [\Lopt{nooneline}].}^ % \label{fig:format-02}^ % \subcapcenterlasttrue % \subcapnoonelinefalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format option [\Lopt{centerlast}]; \Lopt{centerlast} overrides % \Lopt{nooneline}.\footnotemark} % \label{fig:format-03}^ % \subcapcentertrue % \subcapcenterlastfalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format option [\Lopt{center}]; \Lopt{center} overrides % \Lopt{nooneline} and \Lopt{centerlast}.}^ % \label{fig:format-04}^ % \subcaphangtrue % \subcapcenterfalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format option [\Lopt{hang}].} % \label{fig:format-05} % \subcapnoonelinetrue % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{hang},\Lopt{nooneline}].} % \label{fig:format-06} % \subcapcenterlasttrue % \subcapnoonelinefalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{\Lpack{Hhsubfigure}\ format options [\Lopt{hang},^ % \Lopt{centerlast}].} % \label{fig:format-07} % \vspace{2\baselineskip} % \begin{minipage}{\linewidth} % \footnotetext{\raise1ex\hbox to 0pt{\hss\tiny\thefootnote}^ % So this is the same as [\Lopt{centerlast},\Lopt{nooneline}]. Only % the shortest number of options to achieve an effect is shown. % Adding any combination of overridden options has no effect.} % \end{minipage} % \end{figure} % % \begin{figure} % \turnofflistentry % \centering % \subcaphangtrue % \subcapcenterfalse % \subcapcenterlasttrue % \subcapnoonelinetrue % \subcapraggedrightfalse % \subfigure[][\sc]{\label{fig:format-08A}\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{hang},\Lopt{centerlast},\Lopt{nooneline}].} % \label{fig:format-08} % \subcapcentertrue % \subcapcenterlastfalse % \subcapnoonelinefalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{hang},\Lopt{center}]; % \Lopt{center} overrides \Lopt{centerlast}.} % \label{fig:format-09} % \subcapnoonelinetrue % \subfigure[][\sc]{\label{fig:format-10A}\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{hang},\Lopt{center},\Lopt{nooneline}]; % \Lopt{center} overrides \Lopt{centerlast}.} % \label{fig:format-10} % \subcaphangfalse % \subcapcenterfalse % \subcapnoonelinefalse % \subcapraggedrighttrue % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format option [\Lopt{raggedright}]; % \Lopt{raggedright} overrides \Lopt{center} and \Lopt{centerlast}.} % \label{fig:format-11} % \subcapnoonelinetrue % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{raggedright},\Lopt{noonelirne}]; % \Lopt{raggedright} overrides \Lopt{center} and \Lopt{centerlast}.} % \label{fig:format-12} % \subcaphangtrue % \subcapnoonelinefalse % \subfigure[][\sc]{\b}\g\subfigure[][\lc]{\b}\\ % \caption{Format options [\Lopt{hang},\Lopt{raggedright}]; % \Lopt{raggedright} overrides \Lopt{center} and \Lopt{centerlast}.} % \label{fig:format-13} % \subcapnoonelinetrue % \subfigure[][\sc]{\label{fig:format-14A}\b}\g\subfigure[][\lc]{\b}\\ % \caption{\Lpack{hhsubfigure}\ format options [\Lopt{hang},\Lopt{raggedright}, % \Lopt{nooneline}]; \Lopt{raggedright} overrides \Lopt{center} % and \Lopt{centerlast}.} % \label{fig:format-14} % \end{figure} % \endgroup % % \addtocontents{lof}{^ % \string\contentsline % {figure} % {\numberline{\ref{fig:format-01}--\ref{fig:format-14}}^ % {\ignorespaces \Lpack{Hhsubfigure}\ format options.}}^ % {\pageref{fig:format-01}--\pageref{fig:format-14}}} % % \subsection{Font Size and Style Options} % \label{sec:font} % % There are twenty-four options for setting the font of the subcaption. % The first six set the size of both the subcaption label and text. % They are: \Lopt{scriptsize}, \Lopt{footnotesize} (default), % \Lopt{small}, \Lopt{normalsize}, \Lopt{large}, and \Lopt{Large}. % Their effect is shown in figure~\ref{fig:font1}. % % The next nine, \Lopt{rm}: \Lopt{sf}, \Lopt{tt}, \Lopt{md}, \Lopt{bf}, % \Lopt{up}, \Lopt{it}, \Lopt{sl}, and \Lopt{sc}, set the family, series % or shape of the subcaption label, as shown in % figures~\ref{fig:font2A}--~\ref{fig:font2I}. The last nine: % \Lopt{RM}, \Lopt{SF}, \Lopt{TT}, \Lopt{MD}, \Lopt{BF}, \Lopt{UP}, % \Lopt{IT}, \Lopt{SL}, and \Lopt{SC}, do the same for the text of the % subcaption, as shown in figure~\ref{fig:font2J}--\ref{fig:font2R}. % These size and style options may be combined in 3456 ways to set the % label and text of the subcaption (as long as the selected font % combination exists\@!) The font family for the text and label may be % set as roman (\Lopt{rm}/\Lopt{RM}), sans serif (\Lopt{sf}/\Lopt{SF}), % and typewriter (\Lopt{tt}/\Lopt{TT}). These may be combined with % those for the font series, medium (\Lopt{md}/\Lopt{MD}) and bold % (\Lopt{bf}/\Lopt{BF}); and the font shape, upright % (\Lopt{up}/\Lopt{UP}), italic (\Lopt{it}/\Lopt{IT}), slanted % (\Lopt{sl}/\Lopt{SL}), and small caps (\Lopt{sc}/\Lopt{SC}). % % \begin{figure}^ % \def\b{\fboxsep=-\fboxrule % \fbox{\hbox to 2.0in{\vbox to 2mm{\vfil\null}\hfil}}}^ % \subfigtopskip=8pt^ % \subfigcapskip=0pt^ % \subfigbottomskip=4pt^ % \centering % {\renewcommand{\subcapsize}{\scriptsize}^ % \subfigure[][Font option {[scriptsize]}.]{\b}}\qquad % {\renewcommand{\subcapsize}{\footnotesize}^ % \subfigure[][Font option {[footnotesize]}.]{\b}}\\ % {\renewcommand{\subcapsize}{\small}^ % \subfigure[][Font option {[small]}.]{\b}}\qquad % {\renewcommand{\subcapsize}{\normalsize}^ % \subfigure[][Font option {[normalsize]}.]{\b}}\\ % {\renewcommand{\subcapsize}{\large}^ % \subfigure[][Font option {[large]}.]{\b}}\qquad % {\renewcommand{\subcapsize}{\Large}^ % \subfigure[][Font option {[Large]}.]{\b}}% % \caption[\Lpack{Hhsubfigure} font size options.]{% % \Lpack{Hhsubfigure} font size options. (Default: % \Lopt{footnotesize}).}^ % \label{fig:font1}^ % \end{figure} % % \begin{figure}^ % \def\b{\fboxsep=-\fboxrule % \fbox{\hbox to 2.0in{\vbox to 2mm{\vfil\null}\hfil}}}^ % \subfigtopskip=8pt^ % \subfigcapskip=0pt^ % \subfigbottomskip=4pt^ % \centering % \begin{minipage}{2.0in}^ % {\renewcommand{\subcaplabelfont}{\rmfamily}^ % \subfigure[][Subcaption label font option {[\Lopt{rm}]}.]{\b^ % \label{fig:font2A}}}\\ % {\renewcommand{\subcaplabelfont}{\sffamily}^ % \subfigure[][Subcaption label font option {[\Lopt{sf}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\ttfamily}^ % \subfigure[][Subcaption label font option {[\Lopt{tt}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\mdseries}^ % \subfigure[][Subcaption label font option {[\Lopt{md}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\bfseries}^ % \subfigure[][Subcaption label font option {[\Lopt{bf}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\upshape}^ % \subfigure[][Subcaption label font option {[\Lopt{up}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\itshape}^ % \subfigure[][Subcaption label font option {[\Lopt{it}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\slshape}^ % \subfigure[][Subcaption label font option {[\Lopt{sl}]}.]{\b}}\\ % {\renewcommand{\subcaplabelfont}{\scshape}^ % \subfigure[][Subcaption label font option {[\Lopt{sc}]}.]{^ % \label{fig:font2I}\b}}\\ % \end{minipage}^ % \qquad % \begin{minipage}{2.0in}^ % {\renewcommand{\subcapfont}{\rmfamily}^ % \subfigure[][Subcaption font option {[\Lopt{RM}]}.]{^ % \label{fig:font2J}\b}}\\ % {\renewcommand{\subcapfont}{\sffamily}^ % \subfigure[][Subcaption font option {[\Lopt{SF}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\ttfamily}^ % \subfigure[][Subcaption font option {[\Lopt{TT}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\mdseries}^ % \subfigure[][Subcaption font option {[\Lopt{MD}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\bfseries}^ % \subfigure[][Subcaption font option {[\Lopt{BF}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\upshape}^ % \subfigure[][Subcaption font option {[\Lopt{UP}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\itshape}^ % \subfigure[][Subcaption font option {[\Lopt{IT}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\slshape}^ % \subfigure[][Subcaption font option {[\Lopt{SL}]}.]{\b}}\\ % {\renewcommand{\subcapfont}{\scshape}^ % \subfigure[][Subcaption font option {[\Lopt{SC}]}.]{^ % \label{fig:font2R}\b}}^ % \end{minipage}^ % \caption[\Lpack{Hhsubfigure} font style options.]{% % \Lpack{Hhsubfigure} font style options. (Default: % \Lopt{rm,md,up,RM,MD,UP}). Note: The above single options % are loaded after the default settings and multiple options are % allowed, see the text, section~\ref{sec:font}.}^ % \label{fig:font2}^ % \end{figure} % % \subsection{Caption Position Options} % \enlargethispage{12pt}^finalhack % \label{sec:position} % % There are eight options that control the {\em position\/} of the % subcaption and how the subcaption {\em numbering\/} is related to the % ``containing'' figure or table's caption. The following shows only % the subfigure-related options, but the subtable options are symmetric. % % The first option, \Lopt{figbotcap} tells the subfigure command that % the ``containing'' figure's |\caption| occurs {\bf after} the % subfigures. This information is needed to decide if the current % figure counter shows the number for the last figure (\Lopt{figbotcap}) % or for the current one (\Lopt{figtopcap}, see below). % % The second option, \Lopt{figtopcap} tells the subfigure command that % the ``containing'' figure's |\caption| occurs {\bf before} the % subfigures. The subcaption is automatically placed below the figure % for each of these options. % % The third option, \Lopt{FIGBOTCAP}, is similar to \Lopt{figbotcap}, % except that it also forces the subcaption to be placed under the % figure. This is the default setting for figures (and \Lopt{TABBOTCAP} % for tables) and is shown in figure~\ref{fig:position1}. % % The fourth option, \Lopt{FIGTOPCAP}, is similar to \Lopt{figtopcap}, % except that it forces the subcaption to be placed above the figure % box. (While not the default, it is the preferred format for tables, % which uses the option \Lopt{TABTOPCAP}\@.) An example of this option % is shown in figure~\ref{fig:position2}. Note that the baseline of the % subfigure is along the top of the two subfigures. See % section~\ref{sec:custom-position} for another way of positioning the % caption when captions are placed above the figure or table. % % \begin{figure}^ % \subfigtopskip=8pt^ % \subfigcapskip=0pt^ % \subfigbottomskip=4pt^ % \abovecaptionskip=5pt^ % \centering % \subfigure[First caption.]{^ % \fbox{\hbox to 1.5in{\vbox to 15mm{\vfil\null}\hfil}}}^ % \hspace{0.2in}^ % \subfigure[Second long, long, long, long, long, long, caption.]{^ % \fbox{\hbox to 1.5in{\vbox to 10mm{\vfil\null}\hfil}}}^ % \caption{Subcaption position option [\Lopt{FIGBOTCAP}].} % \label{fig:position1}^ % \end{figure} % % \begin{figure}^ % \subfigtopskip=8pt^ % \subfigcapskip=0pt^ % \subfigbottomskip=0pt^ % \belowcaptionskip=5pt^ % \caption{Subcaption position option: [\Lopt{FIGTOPCAP}].}^ % \label{fig:position2}^ % \centering % \figuretopcaptrue % \subfiguretopcaptrue % \subfigure[First caption.]{^ % \fbox{\hbox to 1.5in{\vbox to 15mm{\vfil\null}\hfil}}}^ % \hspace{0.2in}^ % \subfigure[Second long, long, long, long, long, long caption.]{^ % \fbox{\hbox to 1.5in{\vbox to 10mm{\vfil\null}\hfil}}}^ % \setcounter{subfigure}{0}^ % \vspace{-18pt} % \end{figure} % % \subsection{Recent Changes and Backward Compatibility} % \enlargethispage{24pt}^finalhack % \label{sec:back-compat} % % There are some significant changes in this version of the % \Lpack{hhsubfigure} package. One of them was to pack the subfigure % tighter together by removing the space at the top of the subfigure at % the beginning of a page, or minipage, and to reduce the spacing around % the subfigure, see table~\ref{tab:spacing}. If you have been using an % older version of the \Lpack{hhsubfigure} package ({\it i.e.\/}, version % 2.0 or eariler) than the default (\Lopt{loose}) setting will not cause % any change in your existing documents.\footnote{If you have been using % a beta release version of \Lpack{subfigure} 2.1, than you will need to % use the \Lopt{tight} option in order to maintain the ``look-and-feel'' % that you are used to.} % % If you want to use the new and preferred, \Lopt{tight} option, your % subfigures will take up less space and should provide a more balanced % visual appearance for your paper. % % The second significant change is the ability to make the text on the % List-of-Figures page different than that in the subcaption. The use % of a second optional argument to the |\subfigure| command is shown in % table~\ref{tab:calling}. This should not cause any compatibility % problems. % % The third significant change is the it is now possible to have the % captions and subcaptions come before or after the corresponding % figure/table portion. While the default settings support the old view % of the subcaptions following the figure/table and, in turn, followed % by the main caption. The preferred format is for figures to retain % that layout and for tables to have both their subcaption and main % captions come before the table portion. This preferred setting may be % specified by adding the option \Lopt{TABTOPCAP} when loading the % \Lpack{hhsubfigure} package. % % The fourth update is that the font style options have been generalized % so that an option from each of the family, series and shape, may be % combined, as long as that combination exists; and you can set the font % of the label and text separately. In addition, the the |\space| that % separated the label from the text in the subcaption has been replaced % with a horizontal skip of |\subfiglabelskip| which has the default % value of |0.33em plus 0.07em minus 0.03em|. This extension should not % cause any compatibility problems. % % The last major change is that there is now a |\subref| command that % allows a reference to the subfigure without the figure number. An % example of the use of this command is shown later in % section~\ref{sec:ex3}. Associated with this change is that the % |\label| command will accept an optional argument, for use with the % \Lpack{hyperref} package, when used within the scope of the % |\subfigure| or |\subtable|, see section~\ref{sec:hyperref} for details. % % \DeleteShortVerb{\|} % \MakeShortVerb{\/} % \begin{table}^ % \def\pz{\phantom{0}}^ % \centering % \caption{\Lpack{hhsubfigure} spacing changes.}^ % \label{tab:spacing}^ % \vspace{4pt}^ % \begin{tabular}{|l|c|c|c|} \hline % \multicolumn{1}{|c|}{\bf{\Lpack{hhsubfigure}}} % & \multicolumn{1}{c|}{{\bf Old (v2.0)}} % & \multicolumn{1}{c|}{\bf\Lopt{loose}} % & \multicolumn{1}{c|}{\bf\Lopt{tight}} \\ % \multicolumn{1}{|c|}{{\bf Constant}} % & \multicolumn{1}{c|}{{\bf Value}} % & \multicolumn{1}{c|}{{\bf Option}} % & \multicolumn{1}{c|}{{\bf Option}} % \\ \hline % /\subfigtopskip/ & 10 pt & 10 pt & 5 pt \\ % /\subfigcapskip/ & 10 pt & 10 pt & 0 pt \\ % /\subfigcaptopadj/ & | &\pz0 pt & 3 pt \\ % /\subfigbottomskip/ & 10 pt & 10 pt & 5 pt \\ % /\subfigcapmargin/ & 10 pt & 10 pt & 0 pt \\ % /\subfiglabelskip/ & | & 0.33 em & % \vtop{\hbox to 1.2in{0.33 em plus 0.07 em} % \hbox to 1.2in{\hfill minus 0.03 em}} % \\[8pt] \hline % \end{tabular}^ % \end{table} % \DeleteShortVerb{\/} % \MakeShortVerb{\|} % % The \Lpack{hhsubfigure} package checks for and loads a configuration % file called \Lfile{subfigure.cfg} which is placed anywhere that \LaTeX\ % will look for classes or packages (see % section~\ref{sec:customization}). By default, the \Lfile{subfigure.sty} % file tries to look unchanged from older versions. In order to % have it automatically use the preferred settings, you can add a % configuration file containing the options \Lopt{tight} to reduce the % extra whitespace around the subfigures and \Lopt{TABTOPCAP} to show % that table captions will come before the table and the the subcaptions % for tables should be set above the subtable. The following line is all % you need in your configuration file: % % \iffalse %<*newconf> % \fi % \begin{macrocode} \ExecuteOptions{tight,TABTOPCAP} % \end{macrocode} % \iffalse % % \fi % % You could also load the subfigure package with the options with the % following in your \LaTeX\ preamble: % \begin{quote} % |\usepackage[tight,TABTOPCAP]{hhsubfigure}| % \end{quote} % % \subsection{Frequently Asked Questions} % \label{sec:faq} % % The four most frequently asked questions about the \Lpack{hhsubfigure} % package are: % % \begin{enumerate} % \item ``My subfigures are not aligned along their bottoms. Why?'' % % Remember! The \Lpack{hhsubfigure} package aligns subfigure along % their baselines with the subcaption (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 subfigures are different sizes, or if one subfigure is % generated in some other way with its baseline not at the expected % place (perhaps an |\includegraphics|), then the subfigures 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. % % \item ``How can I get my figures/subfigures to line up the way I want?'' % % A similar question, but this one is caused by extra whitespace in % the source text generating spaces next to the figures, and |\par|'s % generated by blanklines. The main thing is {\it be aware\/} that % extra whitespace can move figures and subfigures 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 figure and table environments. (See the discussion of % ``white space'' in section~\ref{sec:examples}.) % % \item ``I have too many subfigures for one page, How can I spread % them over two or more pages and continue the numbering?'' % \begin{description} % \item[Option 1:] Adjust the \Lcount{figure} and \Lcount{subfigure} % counters (or the \Lcount{table} and % \Lcount{subtable} counters) as needed before and % after each figure (or table) See, for example % \emph{Using Imported Graphics in \LaTeXe} % \cite[\textsection~30]{Reck97}. % \item[Option 2:] Use the \Lpack{ccaption} package by Peter Wilson % \cite{Wils01}. % \item[Option 3:] Use the simpler \Lpack{captcont} package by % Steven Cochran \cite{Coch02}. % \end{description} % All of these options work well. Of the packages, the % \Lpack{ccaption} package is bigger and offers more control over % what is done (and things to do) at the expense of being a little % harder to use. The \Lpack{captcont} package is easier to use, % but only provides for continued floats. % \newpage^finalhack % \item ``Why do I get a garbled caption or an error when I use % square brackets?'' % \vspace{-2pt} % \begin{verbatim} % \subfigure[SHIFT: ``register[3] $<<=$ 3;'']{... figure text ...} % \end{verbatim} % \vspace{-12pt} % Since the |\subfigure| and |\subtable| commands have optional % arguments, delimited with square brackets, before their required % argument, you cannot use the `]' character at the top level of % either the \meta{subcaption} 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} % \subfigure[SHIFT: ``register{[3]} $<<=$ 3;'']{... figure text ...} % \end{verbatim} % \vspace{-16pt} % \noindent % or % \vspace{-4pt} % \begin{verbatim} % \subfigure[{SHIFT: ``register[3] $<<=$ 3;''}]{... figure text ...}. % \end{verbatim} % \vspace{-12pt} % \end{enumerate} % % \section{Three Examples} % \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{hhsubfigure} package are that (1) the subfigures are % aligned along their baselines (see figure~\ref{fig:layout} and % section~\ref{sec:customlayout}) and (2) that whitespace in the % \Lenv{figure} environment are significant and affect the layout. % % The baseline of the subfigure is usually at the bottom of the % subfigure or (when the subcaption appears at the top) at the bottom of % the subcaption {\em and\/} the |\subfigcapskip| space---which is usually % the same as the top of the subfigure. However sometimes, especially % when using the \Lenv{tabular}, \Lenv{array}, or \Lenv{minipage} % environments to build the figure, the baseline appears elsewhere. The % above 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 figure. % % If your figure 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 figure. Some general rules of thumb are:\footnote{See % chapters 7 and 8 of ``The \TeX book'' \cite{Knut86} for details.} % \begin{itemize}\itemsep0pt % \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 ({\it e.g.\/}, |\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. % % The other case where things are not correctly centered is when the % subfigure uses only the label for the subcaption. This is often the % case when the description for each subfigure is given in the figure % caption rather than in each subcaption. In this case, the default % label has the form `(a)\ \ ' where the trailing space is defined by % |\subfiglabelskip|. In this case the style should redefine this space % as `0pt' so that the label is perfectly centered (see % section~\ref{sec:ex3}, below for an example). % % \subsection{A Simple Example} % \enlargethispage{12pt} % % The first example, shown in figure~\ref{3figs}, specifies |\centering| % \DescribeMacro{\subfigure} % to horizontally center the set of subfigures, and uses |\\| and % some horizontal space (using |\qquad|) to control the placement of % the subfigures. Note that the alignment of the top two subfigures % is along the bottom of the figure portion of each. % % \begin{figure}^ % \centering % \fboxsep=-\fboxrule % \fbox{^ % \begin{minipage}{4.0in}^ % \vspace{10pt}^ % \centering % \begin{minipage}{3.5in}^ % \subfigtopskip=3pt^ % \subfigcapskip=-2pt^ % \subfigbottomskip=5pt^ % \subfigcapmargin=3pt^ % \abovecaptionskip=5pt^ % \centering % \subfigure[First.]{^ % \fbox{\hbox to 20mm{\vbox to 15mm{\vfil\null}\hfil}}}\qquad % \subfigure[Second figure.]{^ % \fbox{\hbox to 20mm{\vbox to 10mm{\vfil\null}\hfil}}}\\[6pt] % \subfigure[Third.]{\label{3figs-c}^ % \fbox{\hbox to 20mm{\vbox to 10mm{\vfil\null}\hfil}}}\\ % \caption{Three subfigures.}^ % \label{3figs}^ % \rr % \vspace{15pt}^ % Figure~\ref{3figs} contains two top `subfigures' and % figure~\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.} % % \begin{verbatim} % \begin{figure}% % \centering % \subfigure[First.]{...}\qquad % \subfigure[Second figure.]{...}\\ % \subfigure[Third.]{\label{3figs-c}...}% % \caption{Three subfigures.} % \label{3figs} % \end{figure} % ... % Figure~\ref{3figs} contains two top `subfigures' and % figure~\ref{3figs-c}. % \end{verbatim} % % \subsection{A More Advanced Example} % % A second example, shown in figure~\ref{fig:ex2}, demonstrates how to % change the subfigure labels and have the subfigure captions printed in % 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. Later in the file, the % \Lcount{lofdepth} is set to ``2'' so allow the subfigure captions to % show and the |\listoffigures| is loaded. Finally, the \Lenv{figure} % is defined and a little following text is given that refers to it. % % \begin{verbatim} % \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}} % \makeatletter % \renewcommand{\p@subfigure}{} % \renewcommand{\@thesubfigure}{\thesubfigure:\hskip\subfiglabelskip} % \makeatother % ... % \setcounter{lofdepth}{2} % \listoffigures % ... % \begin{figure}% % \centering % \subfigure[First.]{% % \label{fig:first}% % ...}% % \qquad % \subfigure[Second.]{% % \label{fig:second}% % ...}% % \caption{Two subfigures.} % \end{figure} % ... % See figures~\ref{fig:first} and \ref{fig:second}. % \end{verbatim}% % % \begin{figure}^ % \centering % \fboxsep=-\fboxrule % \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}}^ % \makeatletter % \renewcommand{\p@subfigure}{}^ % \renewcommand{\@thesubfigure}{\thesubfigure:\hskip\subfiglabelskip}^ % \makeatother % \fbox{^ % \begin{minipage}{4.0in}^ % \centering % \begin{minipage}{3.5in}^ % \setcounter{lofdepth}{2}^ % \vspace{.1in}^ % \section*{ List of Figures}^ % \vspace{-15pt}^ % \hspace{40pt}\dots % \vspace{3pt}^ % \contentsline{figure}{\numberline{\ref{fig:ex2}}^ % {\ignorespaces Two subfigures.}}{\pageref{fig:ex2}}^ % \contentsline{subfigure}{\numberline{\ref{fig:first}}^ % {\ignorespaces First.}}{\pageref{fig:first}}^ % \contentsline{subfigure}{\numberline{\ref{fig:second}}^ % {\ignorespaces Second.}}{\pageref{fig:second}}^ % \hspace{40pt}\dots % \vspace{8pt}^ % \end{minipage}^ % \end{minipage}}\\ % \fbox{^ % \begin{minipage}{4.0in}^ % \centering % \begin{minipage}{3.5in}^ % \subfigtopskip=3pt^ % \subfigcapskip=-2pt^ % \abovecaptionskip=5pt^ % \vspace{10pt}^ % \centering % \subfigure[First.]{^ % \label{fig:first}^ % \fbox{\hbox to 22mm{\vbox to 15mm{\vfil\null}\hfil}}}^ % \hspace{14pt}^ % \subfigure[Second.]{^ % \label{fig:second}^ % \fbox{\hbox to 22mm{\vbox to 15mm{\vfil\null}\hfil}}}\\ % \caption{Two subfigures.}^ % \label{fig:ex2}^ % \rr % \vspace{15pt}^ % See figures~\ref{fig:first} and \ref{fig:second}. % \vspace{4pt}^ % \end{minipage}^ % \end{minipage}}^ % \vspace{-8pt} % \end{figure} % \vspace{-12pt}^finalhack % % \subsection{An Example Without Subcaption Text} % \label{sec:ex3} % % The last example, shown in figure~\ref{fig:ex3}, demonstrates a % \DescribeMacro{\subref} % \DescribeMacro{\Subref} % \enlargethispage{12pt} % 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 subcaption. 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. (The |\Subref| command is the % same but sets it with |\subcaplabelfont|). % % \begin{figure}^ % \centering % \fboxsep=-\fboxrule % \subfiglabelskip=0pt % \fbox{^ % \begin{minipage}{4.0in}^ % \centering % \begin{minipage}{3.5in}^ % \setcounter{lofdepth}{2}^ % \vspace{.1in}^ % \section*{ List of Figures}^ % \vspace{-15pt}^ % \hspace{40pt}\dots % \vspace{3pt}^ % \contentsline{figure}{\numberline{\ref{fig:ex3}}^ % {\ignorespaces A set of four subfigures.}}^ % {\pageref{fig:ex3}}^ % \hspace{40pt}\dots % \vspace{8pt}^ % \end{minipage}^ % \end{minipage}}\\ % \fbox{^ % \begin{minipage}{4.0in}^ % \centering % \begin{minipage}{3.5in}^ % \subfigtopskip=3pt^ % \subfigcapskip=-2pt^ % \subfigbottomskip=3pt^ % \abovecaptionskip=5pt^ % \vspace{7pt}^ % \centering % \makeatletter % \subfigure[][]{^ % \label{fig:ex3-a}^ % \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}% % \hspace{8pt}% % \subfigure[][]{^ % \label{fig:ex3-b}^ % \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}\\ % \subfigure[][]{^ % \label{fig:ex3-c}^ % \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}% % \hspace{8pt}% % \subfigure[][]{^ % \label{fig:ex3-d}^ % \fbox{\hbox to 1.2in{\vbox to 15mm{\null\vfil}\hfil}}}% % \caption[A set of four subfigures.]{A set of four subfigures: % \subref{fig:ex3-a} describes the first subfigure; % \subref{fig:ex3-b} describes the second subfigure; % \subref{fig:ex3-c} describes the third subfigure; and, % \subref{fig:ex3-d} describes the last subfigure.}^ % \label{fig:ex3}^ % \rr % \vspace{15pt}^ % The text references the main figure as figure~\ref{fig:ex3} % or part of it as figures~\ref{fig:ex3-a}--\subref{fig:ex3-c}. % \vspace{4pt}^ % \end{minipage}^ % \end{minipage}}^ % \vspace{-12pt} % \end{figure} % % \enlargethispage{12pt} % \begin{verbatim} % \subfiglabelskip=0pt % ... % \listoffigures % ... % \begin{figure}% % \centering % \subfigure[][]{% % \label{fig:ex3-a}% % ...figure code...}% % \hspace{8pt}% % \subfigure[][]{% % \label{fig:ex3-b}% % ...figure code...}\\ % \subfigure[][]{% % \label{fig:ex3-c}% % ...figure code...}% % \hspace{8pt}% % \subfigure[][]{% % \label{fig:ex3-d}% % ...figure code...}% % \caption[A set of four subfigures.]{A set of four subfigures: % \subref{fig:ex3-a} describes the first subfigure; % \subref{fig:ex3-b} describes the second subfigure; % \subref{fig:ex3-c} describes the third subfigure; and, % \subref{fig:ex3-d} describes the last subfigure.}% % \label{fig:ex3}% % \end{figure} % ... % The text references the main figure as figure~\ref{fig:ex3} or part % of it as figures~\ref{fig:ex3-a}--\subref{fig:ex3-c}. % \end{verbatim}% % % \section{Customization} % \label{sec:customization} % % The following sections describe the internal parameters used by the % \Lpack{hhsubfigure} package to define the layout of the subfigures % or tables, as well as the labels and captions the accompany them. % In addition, adjustments to the entries on a ``List-of'' page and % the addition of new \Lenv{float} environments are described. % % Adjusting these values allows extensive customization of the % \Lpack{hhsubfigure} package. If you want to customize the package, an % alternative to actually changing the code is to create a a file called % \Lfile{subfigure.cfg} and place it anywhere that \LaTeX\ will look for % classes or packages. Any changes placed in the file will affect the % predefined parameters and you can override the default settings. Any % user options will be processed after this file is loaded. % % In order to change the major commands in the \Lpack{hhsubfigure} package % with this configure file, you will need to use the |\AtEndOfPackage| % command to defer that portion of your changes until the end of the % package. % % \subsection{Changing the Layout} % \enlargethispage{15pt}^finalhack % \label{sec:customlayout} % % \noindent % The layout of the |\subfigure| or |\subtable| is defined by several % internal values which may be changed to customize appearance of the % object. The following illustration shows the relationship of these % values. Figure~\ref{fig:layout-A} shows the standard layout with the % caption following the figure. The figure is vertically centered with % |\subfigtopskip| of space added above, then |\subfigcapskip| of % space is added below the figure followed by the subcaption and, % finally, |\subfigbottomskip| of space added at the bottom. The baseline % is located at the bottom of the figure. It is along this baseline that % adjacent subfigure boxes are aligned. Figure~\ref{fig:layout-C} shows % the case where the caption precedes the figure ({\it ie.\/}, % |\subfiguretopcaptrue| or |\subtabletopcaptrue|). In this case the % various boxes and glue are reversed,$\!$\footnote{The \cmd{\subfigtopskip} % and \cmd{\subfigbottomskip} actually follow the \Lif{figuretopcap} % and \Lif{tabletopcap} flags, so that the actual top spacing used is % \cmd{\subfigtopskip} when the flags are {\bf false} and % \cmd{\subfigbottomskip} when they are {\bf true}.} % except that the |\subfigcapskip| is increased by |\subfigcaptopadj|. % The other two cases, figures~\ref{fig:layout-B} and % \subref{fig:layout-D}, show the cases where there is no caption. Note % that the |\subfigcapskip| is left out when there is no caption. % 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 subfigures and the full use of % the page or \Lenv{minipage}. % % Each of these values |\subfigtopskip|, |\subfigcapskip|, and % |\subfigbottomskip|; as well as |\subfigcapmargin| and % |\subfiglabelskip| (the latter not shown in figure~\ref{fig:layout}) % may be changed from their defaults (see % table~{\PrintIfDefined{tab:defaults}{\ref{tab:defaults}}{\ref{tab:spacing}}}) % 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. Even though these constants are ``skips'', % only the last two (|\subfigcapmargin| and |\subfiglabelskip|) will % shrink or expand since the others assume their natural size in the % subfigure box and are fixed at that size. % % \begin{figure}[p] % \subfigtopskip=10pt^ % \subfigcapskip=4pt^ % \subfigbottomskip=12pt^ % \abovecaptionskip=3pt^ % \centering % \fboxsep=-\fboxrule % \newbox{\tempbox} % \newdimen{\tempdima} % \newdimen{\tempdimb} % \setbox\tempbox\hbox{ % $\stackrel{\longleftrightarrow}{\cs{subfigcapmargin}}$} % \setbox\tempbox\hbox{\cs{subfigcapmargin}} % \tempdimb \wd\tempbox % \setbox\tempbox\hbox to \tempdimb{^ % \kern -.5mm\hbox{$\leftarrow$}\kern -.5mm^ % \leaders\hrule width1pt height2.6pt depth-2.2pt\hfill % \kern -.13mm$\rightarrow$} % \tempdima \wd\tempbox % \advance\tempdima 1mm % \tempdimb \tempdima % \multiply\tempdimb -2 % \advance\tempdimb 4.5in % \advance\tempdimb -4mm % \subfigure[Standard layout {[FIGBOTCAP] or [TABBOTCAP]}.]{ % \label{fig:layout-A} % \fbox{\parbox{4.5in}{ % \vspace{1pt} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % (\cs{subfigtopskip}) % \hfil} % \fbox{\vbox to 45pt{ % \vskip1pt % \vskip\baselineskip % \vfil % \hbox to 4.5in{ % \hfil % {\scshape subfigure} or {\scshape subtable} % \hfil} % \vfil % \vbox to 0pt{% % \vss % \hbox to 4.5in{ % \hspace{9pt} % {\small Baseline} % \hfil}} % \vspace{1pt}}} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigcapskip} % \hfil} % \hbox to 4.5in{ % \hbox to\tempdima{ % \vbox to 20pt{ % \vfil % \copy\tempbox % \vfil % \hbox{\kern .5mm\cs{subfigcapmargin}} % \vfil}} % \fbox{\vbox to 20pt{ % \vfil % \hbox to\tempdimb{ % \hfil % {\scshape subcaption} % \hfil} % \vfil}} % \hbox to\tempdima{ % \vbox to 20pt{ % \vfil % \copy\tempbox % \vfil % \hbox{\kern .5mm\cs{subfigcapmargin}} % \vfil}} % \hfill} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigbottomskip} % \hfil}}}} % % \subfigure[Standard layout {[FIGBOTCAP] or [TABBOTCAP]} with no % caption present.]{ % \label{fig:layout-B} % \fbox{\parbox{4.5in}{ % \vspace{1pt} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % (\cs{subfigtopskip}) % \hfil} % \fbox{\vbox to 45pt{ % \vskip1pt % \vskip\baselineskip % \vfil % \hbox to 4.5in{ % \hfil % {\scshape subfigure} or {\scshape subtable} % \hfil} % \vfil % \hbox to 4.5in{ % \hspace{9pt} % {\small Baseline} % \hfil} % \vspace{1pt}}} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigbottomskip} % \hfil}}}} % % \subfigure[Reversed layout {[FIGTOPCAP] or [TABTOPCAP]}.]{ % \label{fig:layout-C} % \fbox{\parbox{4.5in}{ % \vspace{1pt} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % (\cs{subfigbottomskip}) % \hfil} % \hbox to 4.5in{ % \hbox to\tempdima{ % \vbox to 20pt{ % \vfil % \copy\tempbox % \vfil % \hbox{\kern -.5mm\cs{subfigcapmargin}} % \vfil}} % \fbox{\vbox to 20pt{ % \vfil % \hbox to\tempdimb{ % \hfil % {\scshape subcaption} % \hfil} % \vfil}} % \hbox to\tempdima{ % \vbox to 20pt{ % \vfil % \box\tempbox % \vfil % \hbox{\kern -.5mm\cs{subfigcapmargin}} % \vfil}} % \hfill} % \hbox to 4.5in{ % \hbox to 0pt{ % \hspace{9pt} % \smash{\raisebox{-6.5pt}{\small Baseline}} % \hss} % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigcapskip}$+$\cs{subfigcaptopadj} % \hfil} % \fbox{\vbox to 45pt{ % \vfil % \hbox to 4.5in{ % \hfil % {\scshape subfigure} or {\scshape subtable} % \hfil} % \vfil}} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigtopskip} % \hfil}}}} % % \subfigure[Reversed layout {[FIGTOPCAP] or [TABTOPCAP]} with no % caption present.]{ % \label{fig:layout-D} % \fbox{\parbox{4.5in}{ % \vspace{1pt} % \hbox to 4.5in{ % \hbox to 0pt{ % \hspace{9pt} % \smash{\raisebox{-6.5pt}{\small Baseline}} % \hss} % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % (\cs{subfigbottomskip}) % \hfil} % \fbox{\vbox to 45pt{ % \vfil % \hbox to 4.5in{ % \hfil % {\scshape subfigure} or {\scshape subtable} % \hfil} % \vfil}} % \hbox to 4.5in{ % \hspace{1.5in} % $\left\updownarrow\vrule width0pt height11pt depth1pt\right.$ % \cs{subfigtopskip} % \hfil}}}} % \caption{Subfigure and subtable layout.} % \label{fig:layout} % \end{figure} % % \subsection{Adjusting the Subcaption} % \label{sec:customlabel} % % The subfigure label has three forms. The first is the one that % \DescribeMacro{\subref} % \DescribeMacro{\Subref} % appears in the text when you use the |\ref| command; the second is the % one that appears on the List-of-Figures page and may be used to % reference individual subfigures within the figure and subfigure captions, % using the |\subref| or |\Subref| commands; and the third is the fully % formatted version used under the subfigure as the label part of the caption. % % The |\ref| command yields the string, saved by the |\label| command, % composed by concatenating the value of |\p@subfigure| to % |\thesubfigure|. By default these are defined by: ``|\thefigure|'' % and ``|(\alph{subfigure})|'', respectively, which produces a reference % of the figure number followed by the subfigure letter in parentheses. % % The label used on the List-of-Figures page may be retrieved with the % |\subref| command (this value is saved by the |\label| command when % the |\label| command is used within the scope of the subfigure. This is % the string defined by |\@@thesubfigure|, which, by default, is the % value ``|\thesubfigure|'' (or ``|(\alph{subfigure})|''). % % The label used with the subcaption text is defined by the internal % value |\@thesubfigure|, which, by default, has the % value\hfil\null\linebreak % \centerline{``\cmd{\thesubfigure}\cmd{\hskip}\cmd{\subfiglabelskip}''.} % It is prefixed by |\subcapsize\subcaplabelfont| and followed by the % subcaption text which is set with |\subcapfont|. % % \changes{v2.1.4}{30 Apr 2002}{Changed the label and caption defaults % from \cmd{\rmfamily}\cmd{\mdseries}\cmd{\upshape} to % \cmd{\familydefault}\cmd{\seriesdefault} \cmd{\shapedefault}.} % Note that by default |\subcaplabelfont| has the default value % ``|{\familydefault| |\seriesdefault\shapedefault}|''. The package % options described in table~\ref{tab:options} allow you to set these % values for your paper. If you update the |\@subfigure| command, you % should include any separator character or spacing between the label % and the start of the subcaption text. The default is % |\hskip\subfiglabelskip| placed after the label. % % Finally, the text of the subcaption is prefixed by |\subcapfont| which % may be changed using the set of nine lower-case font options described % in table~\ref{tab:options}\@.$\!$\footnote{It is also prefixed by % \cmd{\subcapsize} as part of the overall label and caption.} \ One other % way of changing the layout of the lapel and caption is by replacing % the |\@makesubfigurecaption| or |\@makesubtablecaption| command (which % by default are identical). % % \subsection{Adjusting the Subfigure and Subtable Counters} % \label{sec:counters} % % To create some special effects, such as continuing the subfigure % \DescribeMacro{\c@figure} % \DescribeMacro{\c@table} % numbering across several pages as part of one long continued figure, % you can back off the number change from a caption with the command: % \begin{quote} % |\addtocounter{|\Lcount{figure}|}{|-1|}| % \end{quote} % within the \Lenv{figure} environment. In addition, you can adjust for % previous subfigures or subtables with one of the following (here % we assume that two subfigures or subtables appeared in the previous % pages: % \begin{quote} % |\addtocounter{|\Lcount{subfigure}|}{|2|}| % \end{quote} % \vspace{-5pt} % \noindent % or % \vspace{-5pt} % \begin{quote} % |\addtocounter{|\Lcount{subtable}|}{|2|}|. % \end{quote} % % Two other things that may be necessary, if you switch between figures % and tables in the same \Lenv{figure} environment ({\it e.g.\/}, by % changing |\@captype|, see section~\ref{sec:float_env}), is to add the % command |\listsubcaptions| following the last subfigure when the % subfigure is using the \Lopt{TOPCAP} or \Lopt{topcap} option. This is % necessary to flush the list of subcaptions before the next % \Lenv{subfigure} or \Lenv{subtable}. This also may be necessary if % you switch between |\figuretopcaptrue| and |\figuretopcapfalse|. The % other thing that may be required in some cases, is to reset the % subfigure counter by entering: % \begin{quote} % |\setcounter{|\Lcount{subfigure}|}{|0|}| % \end{quote} % \noindent % This should only be necessary if you are dynamically switching between % different \Lpack{hhsubfigure} options, or changing the |\@captype|, % within a float environment. % % \subsection{Modifying the List-of-Figures and List-of-Tables} % \label{sec:listof} % % To generate a List-of-Figures, or List-of-Tables, page you need to % \DescribeMacro{\l@subfigure} % \DescribeMacro{\@dottedxxxline} % add a |\listoffigures| or |\listoftables| command where % you want the list to appear. These % commands also cause the appropriate captions and subcaptions to be % written to a file with the extensions \Lfile{lof} (\Lfile{lot}). If % you want the subcaption text to appear in the List-of-Figures or % List-of-Tables page, you need to change the value of the counter % \Lcount{lofdepth} (\Lcount{lotdepth}) counter from its default of `1'. % For example, to have the \Lpack{hhsubfigure} subcaptions to appear on % the List-of-Figures, add the following to the preamble of your % paper: % \begin{quote} % |\setcounter{|\Lcount{lofdepth}|}{2}| % \end{quote} % % If you want to change how the subcaption appears on the ``List-of'' % pages you can change its format by redefining the |\l@subfigure| % or |\l@subtable| command. Usually you will want to use the % |\@dottedxxxline| command % \PrintIfDefined{sec:dl}{(section~\ref{sec:dl}, % page~\pageref{sec:dl})\space}{} to help with the formatting. For % instance the default value of |\l@subfigure| is: % % \begin{verbatim} % \newcommand{\l@subfigure}{% % \@dottedxxxline{\ext@subfigure}{2}{3.8em}{2.5em}} % \end{verbatim} % \vspace{-10pt} % % \noindent % The arguments of the |\@dottedxxxline| command are: % \begin{quote} % \begin{enumerate} % \itemsep -\parsep % \item \underline{\smash{\textsf{Type}}}. The usual values are % : \Lfile{lof} or \Lfile{lot}. The internal % values |\ext@subfigure| and |\ext@subtable| stand for % these extensions. % \item \underline{\textsf{Level}}. By default this is `2' % for the \Lcount{subfigure} and \Lcount{subtable}. If the level % is greater than \Lcount{\meta{Type}depth} (where % \underline{\smash{\meta{Type}}} is the first 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 ({\it e.g.\/} the % \meta{list\_entry} or \meta{subcaption}). % \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 |\l@subtable|). % % For example, to change the amount of space reserved for the label % (if, for instance, you have a lot of figures and the and you need extra % space for the figure number) you could widen the % \texttt{2.5em} space for the label to \texttt{4.0em}: % \begin{verbatim} % \makeatletter % \renewcommand{\l@subfigure}{% % \@dottedxxxline{\ext@subfigure}{2}{3.8em}{4.0em}} % \makeatother % \end{verbatim} % % \subsection{Aligning Captions Above the Figure} % \label{sec:custom-position} % % \begin{figure}^ % \figuretopcaptrue % \subfigtopskip=-5pt^ % \subfigcapskip=-3pt^ % \subfigbottomskip=2pt^ % \centering % \caption{Caption position option: [\Lopt{figtopcap}] with changing % settings of \cmd{\subfiguretopcap}.}^ % \label{fig:position3}^ % \subfiguretopcapfalse % \subfigure[First caption.]{\hbox to 1.5in{\hfil\null}}^ % \hspace{0.2in}^ % \subfigure[Second long, long, long, long, % long, long, long, long caption.]{^ % \hbox to 1.5in{\hfil\null}}\\[5pt] % \subfiguretopcaptrue % \subfigure{\fbox{\hbox to 1.5in{\vbox to 15mm{\vfil\null}\hfil}}}^ % \hspace{0.2in}^ % \subfigure{\fbox{\hbox to 1.5in{\vbox to 10mm{\vfil\null}\hfil}}}^ % \setcounter{subfigure}{0} % \end{figure} % % \noindent % For unbalanced sets of captions placed, above the figures or tables, % \DescribeMacro{\subfiguretopcaptrue} % \DescribeMacro{\subfiguretopcapfalse} % \DescribeMacro{\figuretopcaptrue} % the caption portion looks unbalanced, such as the ones in % figure~\ref{fig:position2}. If you prefer to have the caption portion % aligned along the top rather than the bottom, as shown in % figure~\ref{fig:position3}, you can use the % \Lopt{figtopcap} option as in figure~\ref{fig:position2}, but use % two ``empty'' subfigures to position the captions followed by % two more containing the figures, but without captions. The code % to produce this example is: % % \begin{verbatim} % \begin{figure}% % \centering % \caption{Caption position option: [\Lopt{figtopcap}] with changing % settings of \subfiguretopcap.}% % \label{fig:position3}% % \subfiguretopcapfalse % \subfigure[First caption.]{\hbox to 1.5in{\hfil\null}}% % \hspace{0.2in}% % \subfigure[Second long, long, long, long, % long, long, long, long caption.]{% % \hbox to 1.5in{\hfil\null}}\\[5pt] % \subfiguretopcaptrue % \subfigure{\fbox{\hbox to 1.5in{\vbox to 15mm{\vfil\null}\hfil}}}% % \hspace{0.2in}% % \subfigure{\fbox{\hbox to 1.5in{\vbox to 10mm{\vfil\null}\hfil}}}% % \end{figure} % \end{verbatim} % % This example makes use of one of the four flags that control how the % caption labels are numbered and where the subcaption appears. Two are % for |\subfigure| and two for |\subtable|. The first of each set tell % the |\subfigure| or |\subtable| command that the related main caption % appears before or after the set of subfloats. |\figuretopcaptrue| and % |\tabletopcaptrue| indicate that the caption appears before and % |\figureotopcapfalse| and |\tabletopcapfalse| indicate that the it % appears after. The other two flags force the subcaption to be placed % before (|\subfiguretopcaptrue| and |\subtabletopcaptrue|) or after the % actual subfigure or subtable (|\subfiguretopcapfalse| and % |\subtabletopcapfalse|). % % There are two difficulties with this approach, first, you need to keep % changing the setting of |\subfiguretopcap|, and second, if you have % more than one row of subfigures or subtables, then you will need to % fiddle with the counter (see section~\ref{sec:counters} to keep the % numbers straight. The reason that this format is not supported by the % \Lpack{hhsubfigure} package is that you need information about all of % the subfigure or subtables on a row to box the figures correctly and % this information is not available locally. % % \subsection{Adding Subfloats to New Environments} % \enlargethispage{15pt}^finalhack % \label{sec:customfloat} % % It is easy to add a \Lenv{subfloat} command to a new environment. For % instance, let us assume we have a new \Lenv{float} % environment\footnote{For information on creating new float % environments, see any of the following: \cite{Lamp01}, \cite{Wils01} % or \cite{Ling01}.} called ``\Lenv{map}'' in which various maps are % displayed and for which a List-of-Maps is to be generated in the % contents section. If we wanted to have \Lenv{submaps}, then we could % define the following: % % \vspace{-4pt} % \begin{verbatim} % \makeatletter % \newcounter{submap}[map] % \newif\ifmaptopcap % \newif\ifsubmaptopcap % \newcommand{\p@submap}{\themap} % \newcommand{\thesubmap}{(\alph{submap})} % \newcommand{\@thesubmap}{\themap\hskip\subfiglabelskip} % \newcommand{\@@thesubmap}{\themap} % \newcommand{\ext@submap}{\ext@map} % \newcommand{\l@submap}{\@dottedxxxline{\ext@submap}{2}{3.8em}{2.5em}} % \newcounter{lomdepth} % \setcounter{lomdepth}{1} % \newcommand{\submap}{\subfigure} % \newcommand{\@makesubmapcaption}{\@makesubfigurecaption} % \ifhyperrefloaded % \newcommand\theHsubmap{\themap.\arabic{submap}} % \newcommand{\toclevel@submap}{1} % \fi % \makeatother % \end{verbatim} % \vspace{-14pt} % % The first and last lines make the character `@' act like a letter % between them and therefore it may be part of a command name used there. % First a new counter for the \Lpack{submap} is created along with two % conditionals that define where the position ({\i.e.\/}, above or % below) of the main caption and subcaption is with respect to the % submap. Then the four commands that define the \Lpack{submap} label % are created. The first two, |\p@submap| and |\thesubmap| define the % standard label returned by |\ref|. The next, |\@thesubmap| gives the % label as shown under or over the submap with the subcaption and the % last, |\@@thesubmap| shows how the label is displayed on the List-of-Maps % and/or referenced with the |\subref| command. % % The next four lines show where and how to print to the List-of-Maps % page: |\ext@submap| gives the List-of-Maps file extension; |\l@submap| % shows how to print the submap line on the List-of-Maps page; and the last % two lines show how to create and set the counter \Lcount{lomdepth}, which % controls how many caption levels are shown on the page when it is printed. % % The next two lines create the |\submap| and |\@makesubmapcaption| % commands by making them the same as the |\subfigure| and % |\@makesubfigurecaption| commands. % % The last four lines conditionally create the |\theHsubmap| and % |\toclevel@submap| commands which are used by the \Lpack{hyperref} % Package to name the item and to control the presence of the item % bookmark. % % Of course, this is where the \Lpack{ccaption} package \cite{Wils01} % comes in handy since it will do all of the above with one command: % % \vspace{-4pt} % \begin{verbatim} % \newsubfloat{map} % \end{verbatim} % \vspace{-10pt} % % % \subsection{Interaction with Other Parts of \LaTeX} % In the following sections, the interaction of the \Lpack{hhsubfigure} % package with other parts of \LaTeX\ is documented. These ``other % parts'' may be either part of the the \LaTeX\ base or contributed % packages or classes. % % \subsubsection{\TeX 's ``Mouth''} % The most important thing to remember when laying out your figures % within a \Lenv{float} environment is that spaces take room. If you % have an extra space between two figures, then they will be separated % by a little bit. % % \TeX 's state varies as it reads a line of text from a file. It % ignores some spaces and carriage-returns and converts others to % |\space|'s or |\par|'s. You can use a `|%|' to insure that you only % have real spaces where you want them. To understand which spaces % are significant, you should read chapters~7 and 8 of the \TeX book % \cite{Knut86}. However, the main source of unexpected % extra spacing is carriage-returns which are turned in to |\space|'s. % As a general rule: if in doubt, then add a `|%|' immediately after % the last significant character of the line. % % \subsubsection{The Float Environment} % \label{sec:float_env} % % Although the \Lpack{hhsubfigure} package was designed to work within a % \Lenv{float} environment ({\it e.g.\/}, \Lenv{figure} or % \Lenv{table}), it can be used outside with the following two caveats: % \begin{enumerate}\itemsep=5pt % \item You need to define |\@captype|. This is usually either % \Lenv{figure} or \Lenv{table}. For example add the following % to the preamble of your document: % \begin{verbatim} % \makeatletter % \newcommand{\change_cap_type}[1]{% % \renewcommand{\@captype}{#1}} % \makeatother % \end{verbatim}\vspace{-15pt} % Then use the new command to switch in the middle of a given % \Lenv{float} environment, say from ``figure'' to ``table'' with % the command |\change_cap_type{table}|. % \item If you want to define references using |\label|, then you also % need to redefine the \LaTeX\ internal |\@currentlabel|. For % example: % \begin{verbatim} % \makeatletter % \edef\@currentlabel{\p@subfigure\thesubfigure} % \makeatother % \end{verbatim}\vspace{-15pt} % before using the |\label| command. NOTE: Many other commands change % |\@currentlabel|, including all of the ``section'' commands, % |\caption|, \Lenv{equation}'s, and \Lenv{theorem}'s. % \end{enumerate} % % \subsubsection{Interaction with Other Packages} % % \changes{v2.1}{22 Jan 2001}{Added \Lpack{ccaption} reference.} % % \changes{v2.1}{11 Oct 1996}{Revised subsubsection on use with % the caption package and extended this section to talk about the % \Lpack{captcont} package.} % % \noindent % The only packages that directly interact with the \Lpack{hhsubfigure} % package are the \Lpack{caption}/\Lpack{caption2} packages by % H.A. Sommerfeldt \cite{Somm95a,Somm95b}, the \Lpack{ccaption} package % and \Lpack{tocloft} packages by Peter Wilson \cite{Wils01,Wils01B}, % and the \Lpack{captcont} package by S.D. Cochran \cite{Coch02}. % % \paragraph{\Lpack{caption}} % % If you load the \Lpack{hhsubfigure} package {\bf before} the % \Lpack{caption} package, then the \Lpack{caption} package will detect % that fact and will change the |\subcapsize| when the options % \Lopt{scriptsize}, \ldots, \Lopt{Large} are specified (overriding such % options used when loading the \Lpack{hhsubfigure} package). In % addition, it redefines |\@thesubfigure| and |\@thesubtable| to use % |\captionlabelfont|. It also uses an older layout of % |\@thesubsubfigure| and |\@thesubtable|. % % The best plan is to load the \Lpack{caption} package {\bf before} the % \Lpack{hhsubfigure} package. In addition, you should try to coordinate % the ``look and feel'' of the two packages. This limits you a little % since, although the two packages have similar options, the options in % the \Lpack{caption} package do not combine the same way. You can pick % one from each column:\par\null % % \DeleteShortVerb{\|} % \noindent\hfil\begin{tabular}{*{4}{p{17mm}|}p{17mm}} % \rr \Lopt{normal}, \Lopt{hang}, \Lopt{center}, \Lopt{centerlast} & % \rr \Lopt{nooneline} & % \rr \Lopt{scriptsize}, \Lopt{footnotesize}, \Lopt{small}, % \Lopt{normalsize}, \Lopt{large}, \Lopt{Large} & % \rr \Lopt{up}, \Lopt{it}, \Lopt{sl}, \Lopt{sc}, \Lopt{md}, % \Lopt{bf}, \Lopt{rm}, \Lopt{sf}, \Lopt{tt} & % \rr (Other options---see package.) % \end{tabular} % \MakeShortVerb{\|} % \vskip14pt % % \paragraph{\Lpack{caption2}} % % This package acts similarly to the \Lpack{caption} package. If you % specify the \Lopt{subfigure} it will try to support the subfigure % package, if you specify \Lopt{nosubfigure} than it will not. If % neither option is specified, than load order matters. If loaded % {\bf before} the \Lpack{hhsubfigure} package, than it will not try to % support the package and if loaded {\bf after} it will. % % Again, the best plan is to load the \Lpack{caption2} package % {\bf before} the \Lpack{hhsubfigure} package, and specify the % \Lopt{nosubfigure} option. In addition, you should try to coordinate % the ``look and feel'' of the two packages. This limits you a little % since, although the two packages have similar options, they are not % exactly the same; however, most of the good looking combinations are % easily available. You can pick one from each column:\par\null % % \DeleteShortVerb{\|} % \noindent\hfil\begin{tabular}{*{5}{p{17mm}|}p{17mm}} % \rr \Lopt{nosubfigure}, \Lopt{subfigure} & % \rr \Lopt{normal}, \Lopt{hang}, \Lopt{center}, \Lopt{centerlast} % \Lopt{flushleft}, \Lopt{indent} & % \rr \Lopt{oneline}, \Lopt{nooneline} & % \rr \Lopt{scriptsize}, \Lopt{footnotesize}, \Lopt{small}, % \Lopt{normalsize}, \Lopt{large}, \Lopt{Large} & % \rr \Lopt{up}, \Lopt{it}, \Lopt{sl}, \Lopt{sc}, \Lopt{md}, % \Lopt{bf}, \Lopt{rm}, \Lopt{sf}, \Lopt{tt}^, %^ \Lopt{UP}, \Lopt{IT}, \Lopt{SL}, \Lopt{SC}, \Lopt{MD}, %^ \Lopt{BF}, \Lopt{RM}, \Lopt{SF}, \Lopt{TT} % & % \rr (Other options---see package.) % \end{tabular} % \MakeShortVerb{\|} % % \paragraph{\Lpack{ccaption}} % % The \Lpack{ccaption} package provides for all sorts of extensions and % style options for \Lenv{float} |\captions|. It also provides for the % use of the |\caption| command outside of a \Lenv{float} environment and % a mechanism for creating new types of \Lenv{float} environments. % % In order to use it with the \Lpack{hhsubfigure} package, you need to % pass the \Lopt{subfigure} option when loading it: % % \begin{quote} % |\usepackage|[subfigure]\{ccaption\} % \end{quote} % % \paragraph{\Lpack{tocloft}} % % The \Lpack{tocloft} package gives the user the ability to easily % configure the ``List-of'' pages. It takes a \Lopt{subfigure} option % so it doesn't matter which package is loaded first. % % \begin{quote} % |\usepackage|[subfigure]\{tocloft\} % \end{quote} % % \paragraph{\Lpack{hyperref}} % \label{sec:hyperref} % % \changes{v2.1.2}{26 Mar 2002}{Improved coordination with the hyperref % package.} % % \changes{v2.1.1}{15 Mar 2002}{Added coordination with the hyperref % package. There is some interaction with the \cmd{label} command as % pointed out by Martin.Bernreuther@po.uni-stuttgart.de.} % % The \Lpack{hyperref} package extends the functionality of all of the % \LaTeX\ cross-referencing commands to produce hypertext links. In % addition, it provides new commands to allow the user to insert % hypertext links. When used with the \Lpack{hhsubfigure} package, they % may be loaded in any order; however, it might be better if the % \Lpack{hhsubfigure} package is loaded {\bf first}. % % To more fully support the \Lpack{hyperref} package, the |\label| % \DescribeMacro{\subfloat@label} % command, when used within the scope of the |\subfigure| or |\subtable| % commands takes an optional argument (note the parentheses rather than % square brackets): % \vspace{-2pt} % \begin{quote} % |\label|\parg{bookmark}\marg{key} % \end{quote} % \vspace{-2pt} % % \noindent % We would like to use the subcaption as the bookmark text, but the % |\label| command is often processed before the subcaption. Therefore, % this optional argument may be used to supply this information if % desired. By default a bookmark field of the form % ``Subfigure\textvisiblespace 1(a)'' will be generated. % \footnote{If the document class is \Lpack{report} or other class that % defines \cmd{\thechapter}, than the default bookmark field will be of the % form ``Subfigure\textvisiblespace 1 \textvisiblespace 1(a)''.} % % % \paragraph{\Lpack{captcont}} % % This package may be used with or without the \Lpack{hhsubfigure} package % \DescribeMacro{\caption} % \DescribeMacro{\caption*} % \DescribeMacro{\captcont} % \DescribeMacro{\captcont*} % to extend figure or table numbering across multiple pages. This % package knows about how the \Lpack{hhsubfigure} package interacts with % the List-of-Figures and List-of-Tables and does the right thing when % used with \Lenv{subfigure}'s and \Lenv{subtable}'s. % % The \Lpack{captcont} package may be loaded either {\bf before} or % {\bf after} the \Lpack{hhsubfigure} and it has four options: % \Lopt{figbotcap} or \Lopt{figtopcap} and \Lopt{tabbotcap} or % \Lopt{tabtopcap}. These are the same as the \Lpack{hhsubfigure} % options. When the \Lpack{captcont} package is used with the % \Lpack{hhsubfigure} package, only the \Lpack{hhsubfigure} options matter. % Any given with the \Lpack{captcont} package are ignored. % % The thing to remember about the \Lpack{captcont} package is that if % you normally place the |\caption| {\bf before} your subfigures or % subtables ({\it i.e.\/}, \Lopt{figtopcap} or \Lopt{tabtopcap} % respectively), then you start a series of continued \Lenv{figure}'s % with the |\caption[*]| and use |\contcapt[*]| in each of the rest of % the figures. If you {\bf follow} your subfigures or subtables with a % caption ({\it i.e.\/}, \Lopt{figbotcap} or \Lopt{tabbotcap} % respectively), then you start the series with the |\contcapt[*]| in % the first \Lenv{figure} environment and all but the last where you use % the |\caption[*]|. % % \subsubsection{Creating a \Lenv{subfigure} Environment} % % \changes{v2.1.4}{24 Apr 2002}{Added \cmd{\label} command handling % example in the \Lenv{subfloat} environment, thanks to Lars Clausen.} % % Some people have wanted to use the \Lenv{verbatim} environment within % \DescribeEnv{subfloat} % the \cmd{\subfigure} command and run into the restriction that the % \Lenv{verbatim} environment cannot be nested. To include verbatim text in % a subfigure, you can define a new environment, in which verbatim % text may be enclosed, and which calls the \cmd{\subfigure} command. % \vspace{-2pt} % \begin{verbatim} % \newbox\subfigbox % Create a box to hold the subfigure. % \makeatletter % \newenvironment{subfloat}% % Create the new environment. % {\def\caption##1{\gdef\subcapsave{\relax##1}}% % \let\subcapsave=\@empty % Save the subcaption text. % \let\sf@oldlabel=\label % \def\label##1{\xdef\sublabsave{\noexpand\label{##1}}}% % \let\sublabsave\relax % Save the label key. % \setbox\subfigbox\hbox % \bgroup}% % Open the box... % {\egroup % ... close the box and call \subfigure. % \let\label=\sf@oldlabel % \subfigure[\subcapsave]{\box\subfigbox}}% % \makeatother % \end{verbatim} % \enlargethispage{12pt}^finalhack % \noindent % The following is an example of this \Lenv{subfloat} environment begin % used to produce figure~\ref{fig:verbatim}. Note that you need to % supply the width of the \Lenv{verbatim}; here we use a section using a % \Lenv{minipage}). % \begingroup % \newbox\subfigbox % \makeatletter % \newenvironment{subfloat}^ % {\def\caption##1{\gdef\subcapsave{\relax##1}}^ % \let\subcapsave=\@empty % \let\sf@oldlabel=\label % \def\label##1{\xdef\sublabsave{\noexpand\label{##1}}}^ % \let\sublabsave\relax % \setbox\subfigbox\hbox % \bgroup}^ % {\egroup % \let\label=\sf@oldlabel % \subfigure[\subcapsave]{\box\subfigbox\sublabsave}}^ % \makeatother % \begin{figure} % \centering % \subfigtopskip=0pt^ % \subfigcapskip=0pt^ % \subfigbottomskip=0pt^ % \begin{subfloat}^ % \begin{minipage}{2.1in} % \begin{verbatim} % This text should be % verbatim. And not % messed with in any way ! % \end{verbatim} % \end{minipage}^ % \caption{First subcaption.}^ % \label{fig:verbone} % \end{subfloat}^ % \hspace{10pt}^ % \begin{subfloat}^ % \begin{minipage}{2.1in} % \begin{verbatim} % This text (also)should be % verbatim. And not % messed with in any way ! % \end{verbatim} % \end{minipage}^ % \caption{Second subcaption.}^ % \label{fig:verbtwo} % \end{subfloat} % \caption{Subfigures~\subref{fig:verbone} and \subref{fig:verbtwo} % show examples of using verbatim text in a subfigure.} % \label{fig:verbatim} % \end{figure} % \endgroup % \begin{quote}\ % |\begin{figure}| \\ % | \centering| % | \begin{subfloat}%| \\ % | \begin{minipage}{2.1in}| \\ % | \begin{verbatim}| \\ % | This text should be| \\ % |verbatim. And not| \\ % | messed with in any way !| \\ % | \end{verbatim}| \\ % | \end{minipage}%| \\ % | \caption{First subcaption.}%| \\ % | \label{fig:verbone}| \\ % | \end{subfloat}%| \\ % | \qquad| \\ % | \begin{subfloat}%| \\ % | \begin{minipage}{2.1in}| \\ % | \begin{verbatim}| \\ % | This text (also)should be| \\ % |verbatim. And not| \\ % | messed with in any way !| \\ % | \end{verbatim}| \\ % | \end{minipage}%| \\ % | \caption{Second subcaption.}%| \\ % | \label{fig:verbtwo}| \\ % | \end{subfloat}| \\ % | \caption{Subfigures~\subref{fig:verbone} and \subref{fig:verbtwo}| \\ % | show examples of using verbatim text in a subfigure.}| \\ % | \label{fig:verbatim}| \\ % |\end{figure}| % \end{quote} % % % \StopEventually{^ % \section{Acknowledgements} % % This package was originally written to automatically line up some % figure boxes and place labels under them for a paper that I was % writing. 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 this package. % % A few people have contributed more than most and I want to thank % them publicly, but in no particular order: % % \begin{itemize}\itemsep=-2pt^finalhack % \item{\bf Harald Axel Sommerfeldt} for the work that he did to adjust % his \Lpack{caption} and \Lpack{caption2} packages as necessary to % support the \Lpack{hhsubfigure} package when they are loaded together. % \item {\bf Peter Wilson} for the work that he did to adjust his % \Lpack{ccaption} package (and other packages) as necessary to support % the \Lpack{hhsubfigure} package when they are loaded together. % \item {\bf William `bil' L. Kleb} for his extensive list of errors and % suggestions to this documentation. % \item{\bf Axel Reichert} for his request for a `hang' caption style % since the subcaptions tend to have a short width. And, for his % request for some way of referencing the individual subfigures in % the main caption without the figure number. % \item{\bf Harald Harders} for his suggestion of the \cmd{\subref} % command and modifying \cmd{\label} within the \Lpack{hhsubfigure} % package to save local references to the subfigures that are often % needed. % \item{\bf Heiko Oberdiek} and {\bf James A. Bednar} for their help % with coexisting with the \Lpack{hyperref} and \Lpack{html} packages. % Also, {\bf Ingele Roelens} for pointing out some further compatibility % problems when using the \Lpack{hyperref} package with PDF\LaTeX. % \item{\bf Frederic Darboux} for searching out and finding several % incompatibilities with other packages. % % \end{itemize} % % \newpage^finalhack % % \begin{thebibliography}{6}^\itemsep=-2pt^finalhack % \itemsep=0.8pt % \bibitem{Somm95a}^ % Harald Axel Sommerfeldt, % \emph{The \Lpack{caption} Package}, % Version 1.4b, 1995/04/05. % (Available from CTAN as file \texttt{caption.dtx}.) % \bibitem{Somm95b}^ % Harald Axel Sommerfeldt, % \emph{The \Lpack{caption} Package}, % Version 2.0(beta), 1995/10/09. % (Available from CTAN as file \texttt{caption2.dtx}.) % \bibitem{Wils01}^ % Peter Wilson, % \emph{The \Lpack{ccaption} Package}, % Version 1.0a, 2001/08/15. % (Available from CTAN as file \texttt{ccaption.dtx}.) % \bibitem{Wils01B}^ % Peter Wilson, % \emph{The \Lpack{tocloft} Package}, % Version 2.2, 2001/14/17. % (Available from CTAN as file \texttt{ccaption.dtx}.) % \bibitem{Raht02}^ % Sebastian Rahtz, % \emph{Hypertext marks in \LaTeX}, % 2002/04/05/. % (Available from CTAN as file \texttt{hyperref.dtx}.) % \bibitem{Coch02}^ % Steven Douglas Cochran, % \emph{The \Lpack{captcont} Package}, % 2002/02/14/. % (Available from CTAN as file \texttt{captcont.dtx}.) % \bibitem{Reck97}^ % Keith Reckdahl, % \emph{Using Imported Graphics in \LaTeXe}, % 1997/12/15. % (Available from CTAN as file \texttt{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. % \bibitem{Lamp01}^ % Leslie Lamport, Frank Mittelbach, and Johannes Braams, % \emph{Standard Document Classes for \LaTeX\ version 2e} % Version 1.4e, 2001/04/01. % (Available from CTAN as file \texttt{classes.dtx}.) % \bibitem{Ling01}^ % Anselm Lingnau, % \emph{An Improved Environment for Floats.} % Version 1.3d, 2001/11/08. % (Available from CTAN as file \texttt{float.dtx}.) % \end{thebibliography}} % % \section{The Code} % \iffalse %<*package> % \fi % \subsection{Identification} % % \changes{v2.1}{23 Jan 2002}{Updated the release date.} % % \changes{v2.1}{11 Oct 1996}{Removed compatibility with \LaTeX2.09.} % % Announce the \Lpack{hhsubfigure} package. % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{hhsubfigure}[2003/09/14 v2.1.4a (hh)subfigure package] % \end{macrocode} % % \subsection{Check for the \Lpack{hyperref} Package} % % \changes{v2.1.4}{02 Jul 2002}{Added the \cmd{\theHsubfigure} and % \cmd{\theHsubtable} commands to avoid duplicate names in a PDF % file when using the \Lpack{hyperref} Package.} % % \changes{v2.1.3}{17 Apr 2002}{Changed \cmd{\newcommand} to % \cmd{\providecommand} to allow other packages to set the % \cmd{\toclevel@subfigure} and \cmd{\toclevel@subtable}.} % % \changes{v2.1.2}{26 Mar 2002}{Changed to simplify the interaction % with the hyperref package and avoid loading nameref.} % % \changes{v2.1.1}{15 Mar 2002}{Added coordination with the hyperref % package.} % % \begin{macro}{\toclevel@subfigure} % \begin{macro}{\toclevel@subtable} % % After every package is loaded, check to see if the \Lpack{hyperref} % package was among them, if so, then make sure that the |\ifhyperrefloaded| % switch is set so that the |\subfloat@label| command will write the correct % form of the |\newlabel| to the \Lfile{aux} file. Also define the % ``TOC level'' of the subfigure and subtable. We fix these at one since % the default figure and table levels are zero. Finally, we add definitions % for |\theHsubfigure| and |\theHsubtable| to avoid duplicate names in % the PDF file when using the \Lpack{hyperref} Package. % % \begin{macrocode} \newif\ifhyperrefloaded \AtBeginDocument{% \@ifpackageloaded{hyperref}{% \hyperrefloadedtrue \providecommand\theHsubfigure{\thefigure.\arabic{subfigure}}% \providecommand\theHsubtable{\thetable.\arabic{subtable}}% \providecommand{\toclevel@subfigure}{1}% \providecommand{\toclevel@subtable}{1}}{}} % \end{macrocode} % % \end{macro} % \end{macro} % % \subsection{Initialization and Shared Constants} % \begin{macro}{\ifsubcaphang} % \begin{macro}{\ifsubcapcenter} % \begin{macro}{\ifsubcapcenterlast} % \begin{macro}{\ifsubcapnooneline} % \begin{macro}{\ifsubcapraggedright} % % \changes{v2.1}{23 Jan 2002}{Added.} % % These five flags control how the style in which the subfloat label and % caption are printed. The \Lif{subcaphang} flag is first checked and % if true, causes the subcaption label to be typeset separately and % placed to the upper left of the space available for the subcaption. % The \Lif{subcapcenter} flag centers each line of the subcaption. The % \Lif{subcapcenterlast} centers the last line of the subcaption (this % is a {\sc nop} if the \Lif{subcapcenter} flag is true. If the % \Lif{subcapnooneline} is false, then the label plus the text of the % subcaption are centered. If it is true, than the other flags may % cause something different to happen. The purpose of this flag, % generally, is to cause a single line to be left justified when there % is a very short caption. The last flag is the \Lif{subcapraggedright} % which typsets its text without lining up the right side. This is % useful for the subcaptions since they are usually short and prone to % generating hyphenated words unless allowed to be ragged. % % \begin{macrocode} \newif\ifsubcaphang \newif\ifsubcapcenter \newif\ifsubcapcenterlast \newif\ifsubcapnooneline \newif\ifsubcapraggedright \newif\ifsubcapRaggedRight % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \noindent % Table~\ref{tab:defaults} gives the initial (default) values of the % internals that are used to control the placement and printing of the % subfloats. % % \changes{v2.1.4}{30 Apr 2002}{Changed the label and caption defaults % from \cmd{\rmfamily}\cmd{\mdseries}\cmd{\upshape} to % \cmd{\familydefault}\cmd{\seriesdefault} \cmd{\shapedefault}.} % \DeleteShortVerb{\|} % \MakeShortVerb{\/} % \begin{table}^ % \def\pz{\phantom{0}}^ % \def\M#1{\vspace*{#1}} % \caption[Default values of the Subfigure constants.]% % {Default values of the Subfigure constants. These % values are set during the options processing (see % section~\ref{sec:startup}).}^ % \label{tab:defaults}^ % \vspace{5pt}^ % \begin{minipage}{4.8in}^ % \setlength\tabcolsep{5pt}^ % \rr % \begin{tabular}{|l|c|p{1.3in}|p{1.963in}|}\hline % \multicolumn{1}{|c|}{\raisebox{-1.5ex}{\bf Command}} % & \multicolumn{1}{c|}{\bf \Lopt{loose}} % & \multicolumn{1}{c|}{\bf \Lopt{tight}} % & % \multicolumn{1}{c|}{\raisebox{-1.5ex}{\bf Description}} % \\ % & \multicolumn{1}{c|}{\bf Option} % & \multicolumn{1}{c|}{\bf Option} % & \\ \hline % \raisebox{-2.1ex}{\cmd{\subfigtopskip}} % & \raisebox{-2.1ex}{10 pt} % & \M{0.6ex}\hfil 5 pt % & \rr Length from the top of the subfloat % box to the beginning of the figure. % \\ \hline % \raisebox{-1.5ex}{\cmd{\subfigcapskip}} % & \raisebox{-1.5ex}{10 pt} % & \M{0.0ex}\hfil 0 pt % & \rr Length between the baseline of the % subcaption and the figure. % \\ \hline % \raisebox{-2.1ex}{\cmd{\subfigcaptopadj}} % & \raisebox{-2.1ex}{\pz0 pt} % & \M{0.4ex}\hfil 3 pt % & \rr Length added to /\subfigcapskip/ % when the caption is above the figure. % \\ \hline % \raisebox{-2.1ex}{\cmd{\subfigbottomskip}} % & \raisebox{-2.1ex}{10 pt} % & \M{0.7ex}\hfil 5 pt % & \rr Length from the bottom of the % subcaption to the bottom of the % subfloat. % \\ \hline % \raisebox{-3.5ex}{\cmd{\subfigcapmargin}} % & \raisebox{-3.5ex}{10 pt} % & \M{2.0ex}\hfil 0 pt % & \rr Indentation of the subcaption from % the sides of the subfloat box. (This % should always be positive or zero.) % \\ \hline % \raisebox{-1.5ex}{\cmd{\subfiglabelskip}} % & \raisebox{-1.5ex}{0.33 em} % & \raggedleft 0.33 em plus 0.07 em minus 0.03 em % & \rr Space between the label and the % text of the subcaption. % \\ \hline % \raisebox{-1.5ex}{\cmd{\subcapsize}} % & \multicolumn{2}{c|}{\raisebox{-1.5ex}{footnotesize}} % & \rr Size for the text portion of the % subcaption font. % \\ \hline % \raisebox{-1.5ex}{\cmd{\subcaplabelfont}} % & \multicolumn{2}{c|}{\raisebox{-1.5ex}{(Default family, series and shape)}} % & \rr Font for the label portion of the % subcaption. % \\ \hline % \raisebox{-1.5ex}{\cmd{\subcapfont}} % & \multicolumn{2}{c|}{\raisebox{-1.5ex}{(Default family, series and shape)}} % & \rr Font for the text portion of the % subcaption. % \\ \hline % \end{tabular} % \end{minipage} % \end{table} % \DeleteShortVerb{\/} % \MakeShortVerb{\|} % % \begin{macro}{\subfigtopskip} % \begin{macro}{\subfigcapskip} % \begin{macro}{\subfigcaptopadj} % \begin{macro}{\subfigbottomskip} % % \changes{v2.1}{22 Jan 1997}{Reduced the space to the values separating % subfloat caption and figure box and its top and bottom. Added % \cmd{\subfigcaptopadj} in case it is needed in styles that with figure % subcaptions on the bottom and table subcaptions on the top.} % % See figure~\ref{fig:layout} for details of where these take effect. % Generally the |\subfigtopskip| appears between the figure or table and % the edge of the box. |\subfigbottomskip| appears between the % subcaption and the edge of the box. If the subcaption follows the % figure or table, then |\subfigcapskip| is placed before it along with % ({\it i.e.\/}, in addition to) a |\baselineskip|. If the subcaption % comes before the figure or table then |\subfigcapskip| is placed % after it along with |\subfigcaptopadj|. Although several of the above % are {\tt skip}'s they are typset at their base size and will not % shrink or expand. % % \begin{macrocode} \newskip\subfigtopskip \subfigtopskip = 5\p@ \newskip\subfigcapskip \subfigcapskip = 0\p@ \newdimen\subfigcaptopadj \subfigcaptopadj = 3\p@ \newskip\subfigbottomskip \subfigbottomskip = 5\p@ % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\subfigcapmargin} % % \changes{v2.1}{22 Jan 1997}{Reduced \cmd{\subfigcapmargin} to zero.} % \begin{macro}{\subfiglabelskip} % % \changes{v2.1}{23 Jan 2002}{Added to replace the space between the % subcaption label and text.} % % These two values are used to typeset the subcaption The width of the % subcaption is the same as that of its associated figure or table % width. |\subfigcapmargin| is placed on either side of the caption and % |\subfiglabelskip| is placed between the subcaption label and the % subcaption text. Depending on the manner of typesetting the % subcaption, this may shrink or expand. By default, the % |\subfigcapmargin| is zero to allow as much room of the subcaption as % possible. % % \begin{macrocode} \newdimen\subfigcapmargin \subfigcapmargin = \z@ \newskip\subfiglabelskip \subfiglabelskip = 0.33em plus 0.07em minus 0.03em % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\subcapsize} % % |\subcapsize| is used to set the size of both the subcaption label and % the subcaption text. The options allow it to be set to any of the % following: |\scriptsize|, |\footnotesize|, |\small|, |\normalsize|, % |\large|, |\Large|. It may also be set to |\tiny|, |\LARGE|, |\huge| % or |\HUGE| by hand if need be for special instances. % % \begin{macrocode} \newcommand*{\subcapsize}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\subcaplabelfont} % \begin{macro}{\subcaplabelfont@f} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcaplabelfont@f} % default value to \cmd{\familydefault}.} % % \begin{macro}{\subcaplabelfont@c} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcaplabelfont@c} % default value to \cmd{\seriesdefault}.} % % \begin{macro}{\subcaplabelfont@s} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcaplabelfont@s} % default value to \cmd{\shapedefault}.} % % The |\subcaplabelfont| is composed of three parts, the font family, % such as roman, san serif or typewriter; the font series, such as % medium or bold; and the font shape, such as italic, slanted, small % caps or upright. These are combined along with the |\subcapsize| to % select the font for the subcaption label. % % \begin{macrocode} \newcommand*{\subcaplabelfont}{% \subcaplabelfont@f\subcaplabelfont@c\subcaplabelfont@s} \newcommand*{\subcaplabelfont@f}{\fontfamily{\familydefault}\selectfont} \newcommand*{\subcaplabelfont@c}{\fontseries{\seriesdefault}\selectfont} \newcommand*{\subcaplabelfont@s}{\fontshape{\shapedefault}\selectfont} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\subcapfont} % % \changes{v2.1}{11 Dec 1996}{Added.} % % \begin{macro}{\subcapfont@f} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcapfont@f} default % value to \cmd{\familydefault}.} % % \begin{macro}{\subcapfont@c} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcapfont@s} default % value to \cmd{\seriesdefault}.} % % \begin{macro}{\subcapfont@s} % % \changes{v2.1.4}{30 Apr 2002}{Changed the \cmd{\subcapfont@s} default % value to \cmd{\shapedefault}.} % % The |\subcapfont| is the same as the |\subcaplabelfont| except that it % is applied to the subcaption text rather than the label. % % \begin{macrocode} \newcommand*{\subcapfont}{% \subcapfont@f\subcapfont@c\subcapfont@s} \newcommand*{\subcapfont@f}{\fontfamily{\familydefault}\selectfont} \newcommand*{\subcapfont@c}{\fontseries{\seriesdefault}\selectfont} \newcommand*{\subcapfont@s}{\fontshape{\shapedefault}\selectfont} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\ifsf@tight} % % Create an `if' to control whether the check for the top-of-page is % performed in the |\@subfloat| command. This is necessary to preserve % the look-and-feel of the older versions of this package. The % \Lopt{loose} option turns this flag off (no check) and the % \Lopt{tight} option turns it on (do the check). % % \begin{macrocode} \newif\ifsf@tight \sf@tighttrue % \end{macrocode} % \end{macro} % % \subsection{Subfigure Constants} % \label{sec:fig_constants} % \begin{macro}{\c@subfigure} % Subfigure counter. % % \begin{macrocode} \newcounter{subfigure}[figure] % \end{macrocode} % \end{macro} % % \begin{macro}{\iffiguretopcap} % % \changes{v2.1}{23 Jan 2002}{Added check for existing % \cmd{\figuretopcaptrue} so that this package will work with the % captcont package.} % % \changes{v2.1}{22 Jan 1997}{Added to control label numbering for % captions at the top vs.\ at the bottom.} % % \begin{macro}{\ifsubfiguretopcap} % % \changes{v2.1}{15 Nov 1997}{Added to control placement of the % subcaption at the top vs.\ at the bottom.} % % These control how the \Lpack{hhsubfigure} \Lcount{caption} numbering is % obtained and where the figure caption and subcaption should appear % relative to the body of the \Lenv{subfigure}. The boolean % |\iffiguretopcap| indicates that the \Lcount{caption} counter is % current and there is no need to increment it. The boolean % |\ifsubfiguretopcap| indicates that the subcaption will be printed % above the body portion of the \Lpack{subfigure}. % % \begin{macrocode} \@ifundefined{figuretopcaptrue}{\newif\iffiguretopcap}{} \newif\ifsubfiguretopcap % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\p@subfigure} % \begin{macro}{\thesubfigure} % \begin{macro}{\@thesubfigure} % \begin{macro}{\@@thesubfigure} % % \changes{v2.1}{23 Jan 2002}{Added.} % % The |\thesubfigure| command defines the label for text references % (prefixed by |\p@subfigure|). This is the value saved by the |\label| % and retrieved by the |\ref| commands. In the case of a % conflict between this package and a prior one over the definition % of |\thesubfigure|, this package will win. This is insured by first % specifying the |\providecommand| for the |\thesubfigure| and then % |\renewcommand|. This is necessary because some packages incorrectly % insert this command. % % The |\@thesubfigure| value defines the the caption label complete % offset from the beginning of the caption text. It is used in the % subfigure caption and normally takes the label portion as defined % by |\thesubfigure|. % % Finally, the value defined by |\@@thesubfigure| is also saved by the % |\label| command and may be retrieved with the |\subref| command. This is % often useful in the subcaption or caption text when referring to the % individual subfigures. This value is also the one that is used in % the List-of-Figures. % % These multiple ``views'' of the \Lcount{subfigure} counter allow a % style to define the way the label looks in the figure, for example % ``{\bf (a)}\textvisiblespace''. Then references to it with |\ref| % have the form ``2.1a'', and with |\subref| ``(a)'' (This latter form % is also used to label references in the List-of-Figures section). % % \begin{macrocode} \let\p@subfigure=\thefigure \providecommand*{\thesubfigure}{(\alph{subfigure})} \renewcommand*{\thesubfigure}{(\alph{subfigure})} \newcommand*{\@thesubfigure}{\thesubfigure\hskip\subfiglabelskip} \newcommand*{\@@thesubfigure}{\thesubfigure} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\ext@subfigure} % \begin{macro}{\l@subfigure} % % \changes{v2.1}{11 Oct 1996}{Changed the indentation of the % List-of-Figures line from 2.3em to 2.5em.} % % \begin{macro}{\c@lofdepth} % % These values define how and if the subfigure caption will appear in a % List-of-Figures file. |\ext@subfigure| defines the default subfigure % file extension (which is the same as |\ext@figure| --- the % List-of-Figures file, \Lcount{lof}). |\l@subfigure| % shows how to print an \Lfile{lof} subfigure line and defines that line % at level two. |\c@lofdepth| is an extension of the Table-of-Contents % depth value and controls the depth to which captions in the file are % printed to the actual page. By default, the subcaptions are not. % % \begin{macrocode} \let\ext@subfigure=\ext@figure % \end{macrocode} % % \begin{macrocode} \newcommand*{\l@subfigure}{% \@dottedxxxline{\ext@subfigure}{2}{3.8em}{2.5em}} % \end{macrocode} % % \begin{macrocode} \newcounter{lofdepth} \setcounter{lofdepth}{1} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Subtable Constants} % This section is symmetric to section~\ref{sec:fig_constants}. % \begin{macro}{\c@subtable} % Subtable counter. % % \begin{macrocode} \newcounter{subtable}[table] % \end{macrocode} % \end{macro} % % \begin{macro}{\iftabletopcap} % % \changes{v2.1}{23 Jan 2002}{Added check for existing % \cmd{\tabeltopcaptrue} so that this package will work with the % captcont package.} % % \changes{v2.1}{22 Jan 1997}{Added to control label numbering for % captions at the top vs.\ at the bottom.} % % \begin{macro}{\ifsubtabletopcap} % \changes{v2.1}{15 Nov 1997}{Added to control placement of the % subcaption at the top vs.\ at the bottom.} % % These define the form that the subcaption prefix is generated. The % boolean |\iftabletopcap| works with the numbering of the subcaption % label and uses the current \Lcount{table} counter value if true and % the next value if false. The boolean |\ifsubtabletopcap| sets the % subcaption before the main body of the subfigure, if true; and, after % it, if false. % % \begin{macrocode} \@ifundefined{tabletopcaptrue}{\newif\iftabletopcap}{} \newif\ifsubtabletopcap % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\p@subtable} % \begin{macro}{\thesubtable} % \begin{macro}{\@thesubtable} % \begin{macro}{\@@thesubtable} % % \changes{v2.1}{23 Jan 2002}{Added.} % % The |\thesubtable| command defines the label for text references % (prefixed by |\p@subtable|), while the |\@thesubtable| command defines % what appears in the subcaption under or over the subtable. The % |\@@thesubtable| command defines an alternative reference to the label % for use in the subcaption and caption of the table (see the discussion % above for the equivalent figure values). The latter form is also used % for the List-of-Tables label. As above, the |\thesubtable| command is % twice specified % % \begin{macrocode} \let\p@subtable=\thetable \providecommand*{\thesubtable}{(\alph{subtable})} \renewcommand*{\thesubtable}{(\alph{subtable})} \newcommand*{\@thesubtable}{\thesubtable\hskip\subfiglabelskip} \newcommand*{\@@thesubtable}{\thesubtable} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\ext@subtable} % \begin{macro}{\l@subtable} % % \changes{v2.1}{11 Oct 1996}{Changed the indentation of the % List-of-Tables line from 2.3em to 2.5em.} % % \begin{macro}{\c@lotdepth} % % These define how and if the subtable caption will appear in a % List-of-Tables file. |\ext@subtable| defines the default subtable % file extension (which is the same as |\ext@table| --- the % List-of-Tables file, \Lcount{lot}). |\l@subtable| shows how to print % an \Lfile{lot} subtable line and defines that line at level two. % |\c@lotdepth| is an extension of the table-of-contents depth value and % controls the depth to which captions in the file are printed to the % actual page. By default, the subcaptions are not printed. % % \begin{macrocode} \let\ext@subtable=\ext@table % \end{macrocode} % % \begin{macrocode} \newcommand*{\l@subtable}{% \@dottedxxxline{\ext@subtable}{2}{3.8em}{2.5em}} % \end{macrocode} % % \begin{macrocode} \newcounter{lotdepth} \setcounter{lotdepth}{1} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Declaration of Options} % % The following options allow general compatibility with the % \Lpack{caption} and \Lpack{caption2} packages by H.A. Sommerfeldt % \cite{Somm95a}. There are six different subcaption layout options % supported: \Lopt{normal}, \Lopt{hang} (or \Lopt{isu}), \Lopt{center}, % \Lopt{centerlast} (or \Lopt{anne}), \Lopt{nooneline} and % \Lopt{raggedright}. The \Lopt{hang} subcaption may be combined with % the \Lopt{center} or \Lopt{centerlast} options. The \Lopt{nooneline} % may be combined with any of the other options (but it's effect is % negated or looks bad with either of \Lopt{center} or \Lopt{centerlast} % unless the \Lopt{hang} option is also used). \Lopt{raggedright} % overrides the \Lopt{center} or \Lopt{centerlast} options. % % \begin{macrocode} \DeclareOption{normal}{% \subcaphangfalse \subcapcenterfalse \subcapcenterlastfalse \subcapnoonelinefalse \subcapraggedrightfalse \subcapRaggedRightfalse} % \end{macrocode} % % \begin{macrocode} \DeclareOption{hang}{\subcaphangtrue} \DeclareOption{center}{\subcapcentertrue} \DeclareOption{centerlast}{\subcapcenterlasttrue} \DeclareOption{nooneline}{\subcapnoonelinetrue} \DeclareOption{raggedright}{\subcapraggedrighttrue} \DeclareOption{RaggedRight}{\subcapRaggedRighttrue} % \end{macrocode} % % \begin{macrocode} \DeclareOption{isu}{\ExecuteOption{hang}} \DeclareOption{anne}{\ExecuteOption{centerlast}} % \end{macrocode} % % \newpage^finalhack % % \noindent % There are options for six different font sizes available. % % \begin{macrocode} \DeclareOption{scriptsize}{\renewcommand*{\subcapsize}{\scriptsize}} \DeclareOption{footnotesize}{\renewcommand*{\subcapsize}{\footnotesize}} \DeclareOption{small}{\renewcommand*{\subcapsize}{\small}} \DeclareOption{normalsize}{\renewcommand*{\subcapsize}{\normalsize}} \DeclareOption{large}{\renewcommand*{\subcapsize}{\large}} \DeclareOption{Large}{\renewcommand*{\subcapsize}{\Large}} % \end{macrocode} % % \noindent % There are eighteen options available to set the font attributes of the % subcaptions. The first nine affect only the subcaption label % The last nine affect only the subcaption text. % % \changes{v2.1}{22 Jan 1997}{Changed order of font options.} % % \changes{v2.1}{15 Nov 1997}{Added nine new options to set the format % of the caption text separately from the caption label.} % % \begin{macrocode} \DeclareOption{rm}{\renewcommand*{\subcaplabelfont@f}{\rmfamily}} \DeclareOption{sf}{\renewcommand*{\subcaplabelfont@f}{\sffamily}} \DeclareOption{tt}{\renewcommand*{\subcaplabelfont@f}{\ttfamily}} \DeclareOption{md}{\renewcommand*{\subcaplabelfont@c}{\mdseries}} \DeclareOption{bf}{\renewcommand*{\subcaplabelfont@c}{\bfseries}} \DeclareOption{up}{\renewcommand*{\subcaplabelfont@s}{\upshape}} \DeclareOption{it}{\renewcommand*{\subcaplabelfont@s}{\itshape}} \DeclareOption{sl}{\renewcommand*{\subcaplabelfont@s}{\slshape}} \DeclareOption{sc}{\renewcommand*{\subcaplabelfont@s}{\scshape}} % \end{macrocode} % % \begin{macrocode} \DeclareOption{RM}{\renewcommand*{\subcapfont@f}{\rmfamily}} \DeclareOption{SF}{\renewcommand*{\subcapfont@f}{\sffamily}} \DeclareOption{TT}{\renewcommand*{\subcapfont@f}{\ttfamily}} \DeclareOption{MD}{\renewcommand*{\subcapfont@c}{\mdseries}} \DeclareOption{BF}{\renewcommand*{\subcapfont@c}{\bfseries}} \DeclareOption{IT}{\renewcommand*{\subcapfont@s}{\itshape}} \DeclareOption{SL}{\renewcommand*{\subcapfont@s}{\slshape}} \DeclareOption{SC}{\renewcommand*{\subcapfont@s}{\scshape}} \DeclareOption{UP}{\renewcommand*{\subcapfont@s}{\upshape}} % \end{macrocode} % % \noindent % There are eight options available to control the caption placement % and the proper numbering in association with the figure or table % caption placement. The first four affect only the caption numbering % by informing the internals that the associated figure or table % caption appears before or after the subfloat. The second four do % this and, in addition, shift the subfloat caption to the bottom or % top of the subfloat. The |\subfigure| and |\subtable| commands each % have a set of flags since it is often the case that a document style % requires that figure captions follow the figure and table captions % precede the table. % % \begin{macrocode} \DeclareOption{figbotcap}{\figuretopcapfalse} \DeclareOption{figtopcap}{\figuretopcaptrue} \DeclareOption{tabbotcap}{\tabletopcapfalse} \DeclareOption{tabtopcap}{\tabletopcaptrue} % \end{macrocode} % % \begin{macrocode} \DeclareOption{FIGBOTCAP}{\ExecuteOptions{figbotcap}\subfiguretopcapfalse} \DeclareOption{FIGTOPCAP}{\ExecuteOptions{figtopcap}\subfiguretopcaptrue} \DeclareOption{TABBOTCAP}{\ExecuteOptions{tabbotcap}\subtabletopcapfalse} \DeclareOption{TABTOPCAP}{\ExecuteOptions{tabtopcap}\subtabletopcaptrue} % \end{macrocode} % % \newpage^finalhack % % \begin{macro}{\subfigtopskip} % \begin{macro}{\subfigcapskip} % \begin{macro}{\subfigcaptopadj} % \begin{macro}{\subfigbottomskip} % \begin{macro}{\subfigcapmargin} % \begin{macro}{\subfiglabelskip} % % \noindent % The last two options control the overall ``look-and-feel'' of the % subfloat. The \Lopt{loose} option is the default and makes the % subfloat look like it always has with lots of extra room around the % subfigure and subcaption. % % \begin{macrocode} \DeclareOption{loose}{% \subfigtopskip = 10\p@ \subfigcapskip = 10\p@ \subfigcaptopadj = 0\p@ \subfigbottomskip = 10\p@ \subfigcapmargin = 10\p@ \subfiglabelskip = 0.33em % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@thesubfigure} % \begin{macro}{\@thesubtable} % Next, it replaces the glue at the end of the subcaption label with a % |\space| like the older version of the \Lpack{subfigure} package. % % \begin{macrocode} \renewcommand*{\@thesubfigure}{\thesubfigure\space} \renewcommand*{\@thesubtable}{\thesubtable\space} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ifsf@tight} % % Finally, set the \Lif{sf@tight} flag to make the |\@subfloat| command % skip its check for the top of a page or minipage and to always add % its topmost vertical spacing. (For more details about the % |\@subfloat| command, see section~\ref{sec:mainmacros}.) % % \begin{macrocode} \sf@tightfalse} % \end{macrocode} % \end{macro} % % % \begin{macro}{\subfigtopskip} % \begin{macro}{\subfigcapskip} % \begin{macro}{\subfigcaptopadj} % \begin{macro}{\subfigbottomskip} % \begin{macro}{\subfigcapmargin} % \begin{macro}{\subfiglabelskip} % % The \Lopt{tight} option is the is the preferred version and has less white % space around the subfloat. It also will omit the space above the subfloat % at the top of the page or minipage. % % \begin{macrocode} \DeclareOption{tight}{% \subfigtopskip = 5\p@ \subfigcapskip = 0\p@ \subfigcaptopadj = 3\p@ \subfigbottomskip = 5\p@ \subfigcapmargin = \z@ \subfiglabelskip = 0.33em plus 0.07em minus 0.03em % \end{macrocode} % % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@thesubfigure} % \begin{macro}{\@thesubtable} % Next, it keeps the glue at the end of the subcaption label to allow % better subcaption fitting. % % \begin{macrocode} \renewcommand*{\@thesubfigure}{\thesubfigure\hskip\subfiglabelskip} \renewcommand*{\@thesubtable}{\thesubtable\hskip\subfiglabelskip} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ifsf@tight} % % Finally, set the \Lif{sf@tight} flag to make the |\@subfloat| command % check for the top of a page or minipage and to skip adding any vertical % space there. (For more details about the |\@subfloat| command, see % section~\ref{sec:mainmacros}.) % % \begin{macrocode} \sf@tighttrue} % \end{macrocode} % \end{macro} % % \subsection{Execution of Options} % \label{sec:startup} % % \changes{v2.1}{11 Oct 1996}{Added a check for a local configuration file.} % % \changes{v2.1}{15 Nov 1997}{Added the \Lopt{FIGBOTCAP} and % \Lopt{TABBOTCAP} options.} % % \changes{v2.1.4}{30 Apr 2002}{Changed the subcaption label defaults % to be hard coded above and no longer in the options list.} % % The \Lopt{normal} type of subcaption is preselected, the standard % subcaption size is set to \Lopt{footnotesize}, and the font for both % the subcaption label and text is set above to the global defaults for % family, series, and shape. Also, the subcaptions for the subfigure % and subtable are placed after the figure box and it is assumed that % the figure or table caption follows all of the associated subfloats. % Finally, the \Lopt{loose} form is selected in order to cause minimal % change to existing papers using the \Lpack{subfigure} package. % % The preferred form would be to have the \Lopt{TABTOPCAP} and % \Lopt{tight} be the defaults, but this would adversely affect the % existing papers that have used the official releases of this package. % % \begin{macrocode} \ExecuteOptions{normal,footnotesize,FIGBOTCAP,TABBOTCAP,loose} \InputIfFileExists{subfigure.cfg}{% \typeout{****************************************^^J% * Local config file subfigure.cfg used *^^J% ****************************************}}{} \ProcessOptions % \end{macrocode} % % \subsection{The Subfigure and Subtable Commands} % \label{sec:mainmacros} % % \changes{v2.1}{23 Jan 2002}{Added setting \cmd{\label} to % \cmd{\subfloat@label}.} % % \changes{v2.1}{11 Oct 1996}{Added command lines. The subfigure % command was updated to allow a second optional argument. This % causes changes all the way down to the \cmd{\@subcaption} command.} % % \begin{macro}{\subfigure} % \label{sec:subfigure} % % \changes{v2.1.2}{26 Mar 2002}{Added check to see if \cmd{\subfig@oldlabel} % is defined and if not to save the current definition.} % % \changes{v2.1}{22 Jan 1997}{Changed the counter advance to occur % only if the related boolean is false. This allows \cmd{\caption}'s % to occur before the subfloats rather than after.} % % \changes{v2.1}{07 Mar 1997}{Moved \cmd{\leavevmode} to \cmd{\@subfloat}.} % % The |\subfigure| command acts as cover function for the |\@subfloat| % command. It locally changes the |\label| command to our special version % that supports the |\subref|'s (see section~\ref{sec:patches}). It % insures that the proper counter is used and has the correct value. % Since the caption is usually generated later, we must locally % anticipate the future value of its counter by adding one to it within % a local group. Upon leaving |\subfigure|, the old value is restored. % % \begin{macrocode} \newcommand*{\subfigure}{% \bgroup \let\subfig@oldlabel=\label \let\label=\subfloat@label \@nameuse{if\@captype topcap}\else \advance\@nameuse{c@\@captype}\@ne \fi \refstepcounter{sub\@captype}% \@ifnextchar [% {\@subfigure}% {\@subfigure[\@empty]}} % \end{macrocode} % \end{macro} % % \begin{macro}{\subtable} % % The |\subtable| command is identical to |\subfigure|. The of names % at the user level is purely cosmetic (and historical). % % \begin{macrocode} \let\subtable=\subfigure % \end{macrocode} % \end{macro} % % % \enlargethispage{-24pt}^finalhack % % \begin{macro}{\@subfigure} % \changes{v2.1.4}{07 Jun 2002}{Added curly brackets around the % argument when passing it on as an optional argument.} % % Here we are still setting up for the main |\@subfloat| command. We % check for a second optional argument. If one is not found, than any % optional argument from the last |\subfigure| or |\subtable| becomes % the main caption and we give |\@empty| as the default list-entry % caption. If we see another optional argument, then we make that one % the main caption and use any prior optional argument as the list-entry % caption. See Table~\ref{tab:calling} for how this looks to the user. % % \begin{macrocode} \def\@subfigure[#1]{% \@ifnextchar [% {\@subfloat{sub\@captype}[{#1}]}% {\@subfloat{sub\@captype}[\@empty{#1}][{#1}]}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@subfloat} % % \changes{v2.1.4}{24 Apr 2002}{Changed \cmd{\@subfloat} to globally % reset the figure/table counter if it was incremented so that any % subfloat body that resets the counters globally will not cause % errors ({\it e.g.\/}, the \Lpack{tabularx} package} % % \changes{v2.1}{23 Jan 2002}{Now using \cmd{\@nameuse} to build names. % Made the \cmd{\def} a \cmd{\long}\cmd{\def}.} % % \changes{v2.1}{22 Apr 1998}{Added some percents to keep out whitespace} % % \changes{v2.1}{07 Mar 1997}{Changed the addition of the % \cmd{\subfigtopskip} to be added only if not at the top of the % float and only in vertical mode. Moved \cmd{\leavevmode} from % \cmd{\subfigure} to after the topskip addition.} % % \changes{v2.1}{17 Jan 1997}{Added swap of the top and bottom space % when in TOPCAP mode.} % % This is the common code for setting up the subfloat box and drawing % the subcaption under it. The two skips are used only here to keep % track of what vertical space is to be placed before and after the % figure. % % The first argument is the type of object being generated: that is, % a |subfigure| or a |subtable|. The second and third are the % \texttt{subcaption} and \texttt{subfigure} arguments from the % calling |\subfigure| or |\subtable| command. % % \begin{macrocode} \newskip\subfig@top \newskip\subfig@bottom % \end{macrocode} % % If \Lif{ifsf@tight} is true, then the |\@subfloat| command checks to % see if it is at the top of a page or a minipage and will suppress the % top vertical space in that case; otherwise, it always adds the space. % % \begin{macrocode} \long\def\@subfloat#1[#2][#3]#4{% \@tempcnta=1 \ifsf@tight \if@minipage \@tempcnta=\z@ \else\ifdim \lastskip=\z@ \else \@tempcnta=2 \fi\fi \fi % \end{macrocode} % % Based on the |\iffiguretopcap| or |\iftabletopcap| flags we % select which vertical space is to be placed above and below the figure % or table and save it in |\subfig@top| and |\subfig@bottom|. % % \begin{macrocode} \@nameuse{if\@captype topcap}% \subfig@top=\subfigbottomskip \subfig@bottom=\subfigtopskip \else \subfig@top=\subfigtopskip \subfig@bottom=\subfigbottomskip \fi % \end{macrocode} % % The |\leavevmode| is here to inhibit any \LaTeX\ errors that the % surreounding environment might generate if we stay in vertical mode. % Then it determines the width of the figure or table by placing it in a % box and testing the box. % % \begin{macrocode} \leavevmode \setbox\@tempboxa \hbox{#4}% \@tempdima=\wd\@tempboxa % \end{macrocode} % % Finally we put the figure together in a vertical box. At the very top % goes any vertical space, but only if we are not at the top of the page % or minipage as determined above. % % \begin{macrocode} \vtop\bgroup \vbox\bgroup \ifcase\@tempcnta \@minipagefalse \or \vspace{\subfig@top}% \or \ifdim \lastskip=\z@ \else \@tempskipb\subfig@top\relax\@xaddvskip \fi \fi % \end{macrocode} % % Next, based on the `topcap' flags, we check if the subcaption or the % figure goes next. If it is the subcaption, then we add some extra % |\subfigcaptopadj| space between the subcaption and the figure and % table in addtion to the regular |\subfigcapskip| space. This finishes % off the top box and establishes our baseline. % % After that we add in either the figure or subcaption (whichever we % have not typeset yet and follow it with the bottom vertical space. % (see figure~\ref{fig:layout-C} for a diagram of this layout). % % Finally, we globally ({\bf !}) reset the \Lcount{figure} or % \Lcount{table} counter, if we incremented it at the beginning of the % |\subfigure| or |\subtable| command so that any functions used inside % the command body which globally sets the counters ({\it e.g.\/}, the % \Lpack{tabularx} package) will not cause problems. % % \begin{macrocode} \@nameuse{if#1topcap}% \ifx \@empty#3\relax \else \@subcaption{#1}{#2}{#3}% \vskip\subfigcapskip \vskip\subfigcaptopadj \fi\egroup \box\@tempboxa \else \box\@tempboxa\egroup \ifx \@empty#3\relax \else \vskip\subfigcapskip \@subcaption{#1}{#2}{#3}% \fi \fi \vspace{\subfig@bottom}% \egroup \@nameuse{if\@captype topcap}\else \global\advance\@nameuse{c@\@captype}\m@ne \fi \egroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\@subfigcaptionlist} % % \begin{macro}{\@subcaption} % % \changes{v2.1}{23 Jan 2002}{Now using \cmd{\@nameuse} to build names. % Also use \@@thesubfigure and \@@thesubtable stored label.} % % \begin{macro}{\listsubcaptions} % % \changes{v2.1.4}{09 Jul 2002}{Changed \cmd{\@tempa} to \cmd{\sf@temp} % at the request of Donald Arseneau to remove the potential of problems % with others using the same variable.} % \changes{v2.1}{22 Oct 1996}{Added to allow the user to cause a dump % of the currently queued subcaptions to the ``List-of'' page. This % is necessary when the \cmd{caption} is placed before the subfloats % as is often the case for subtables.} % % \changes{v2.1}{11 Oct 1996}{Fixed \cmd{\protect} related bug caused by % a change in \LaTeX3.} % \begin{macro}{\@listsubcaptions} % % \changes{v2.1}{23 Jan 2002}{Added checks for undefined \cmd{\@captype} % and \cmd{ext@<\@captype>} just in case the \cmd{caption} is called % outside the \Lenv{float} or the current float type does not support % subfigures.} % % \changes{v2.1}{11 Oct 1996}{Added to print the queued subcaptions. % This is also used by the \Lpack{captcont} package to correctly print % the subcaptions.} % % \changes{v2.1}{17 Jan 1997}{Changed the source of the label for the % ``List-of'' pages to use the \cmd{\thesubfigure} or \cmd{\thesubtable} % value rather than the \cmd{\@currentlabel}. This usually will be % cleaner since the figure number won't be repeated.} % % \changes{v2.1}{05 Jan 1998}{Changed \cmd{\edef} to \cmd{\def} and added % back the \cmd{\protect} due to changes in the use of the % \cmd{\@subcaption}.} % % The following series of commands control exactly how the subcaption is % typeset. The |\@subcaption| command adds the subcaption to the current % list of subcaptions to be added to the ``List-of'' page as soon as % the major caption is declared (see |\@caption| below). % ({\scshape Note}: only one list is kept because that seems right; % if there is a mix of tables and figures, they will be grouped % under the next |\caption|\@.) Next |\@subcaption| calls the % appropriate float-type specific command to decide how to size and shape % the subcaption text. % % \begin{macrocode} \newcommand*{\@subfigcaptionlist}{} % \end{macrocode} % \begin{macrocode} \newcommand{\@subcaption}[3]{% \ifx \relax#2\relax \else \bgroup \let\label=\@gobble \let\protect=\string \def\@subcaplabel{\@nameuse{@@the#1}}% \xdef\@subfigcaptionlist{% \@subfigcaptionlist,% {\protect\numberline{\@subcaplabel}\noexpand{\ignorespaces #2}}}% \egroup \fi \@nameuse{@make#1caption}{\@nameuse{@the#1}}{#3}} % \end{macrocode} % % \begin{macrocode} \newcommand*{\listsubcaptions}{% \@ifstar {\gdef\@subfigcaptionlist{}}% {\@listsubcaptions{\@captype}}} % \end{macrocode} % % \begin{macrocode} \newcommand*{\@listsubcaptions}[1]{% \@ifundefined{@captype}{}{% \@ifundefined{ext@sub#1}{}{% \@for \sf@temp:=\@subfigcaptionlist \do {% \ifx \@empty\sf@temp\relax \else \addcontentsline {\@nameuse{ext@sub#1}}% {sub#1}% {\sf@temp}% \fi}}}% \gdef\@subfigcaptionlist{}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@makesubfigurecaption} % \begin{macro}{\@makesubtablecaption} % % \changes{v2.1}{17 Jan 1997}{Added the new font control.} % % By default, the |\@subfigurecaption| and |\@subtablecaption| % commands are identical. Unlike the standard |\@makecaption| command, % we assume that the first argument (the label number produced by % the |\@thesubfigure| or the |\@thesubtable|) contains any trailing % separator characters or spacing (which makes it easier to customize). % % \newpage^finalhack % % The |\@makesubfigurecaption| command first checks the size of the % caption typeset as a single line. It knocks off twice the % |\subfigcapmargin| (at it's regular size) to determine the with of the % caption and label. % % \begin{macrocode} \newcommand{\@makesubfigurecaption}[2]{% \setbox\@tempboxa\hbox{% \subcapsize {\subcaplabelfont #1}% {\subcapfont\ignorespaces #2}}% \@tempdimb=-\subfigcapmargin \multiply\@tempdimb\tw@ \advance\@tempdimb\@tempdima % \end{macrocode} % % Next it creates a horizontal box of that width and if the label plus % the text was too wide or if the \Lif{subcapnooneline} flag is true, % then it sends off the label and subcaption to |\subfig@caption| to % typset as a paragraph. NOTE: |\subfig@caption| assumes that % |\@tempbdimb| has the calculated width for the paragraph. % % If the label plus the text will fit and the \Lif{subcapnooneline} flag % is false, then we just return them (from box |\@tempboxa|). % % \begin{macrocode} \hbox to\@tempdima{% \hss \ifdim \wd\@tempboxa >\@tempdimb \subfig@caption{#1}{#2}% \else\ifsubcapnooneline \subfig@caption{#1}{#2}% \else \box\@tempboxa \fi\fi \hss}} % \end{macrocode} % % \begin{macrocode} \let\@makesubtablecaption=\@makesubfigurecaption % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\subfig@caption} % % \changes{v2.1}{23 Jan 2002}{Added \cmd{\subcapfont} and % \cmd{\ignorespaces} before the caption text. So that it does not % interfere with the label font settings. This fixes a bug found by % Axel Sommerfeldt.} % % \begin{macro}{\subfig@captionpar} % % \changes{v2.1}{23 Jan 2002}{Simplified by removing the font settings. % It is up to the caller to enforce these! This fixes a bug found by % Axel Sommerfeldt.} % % \changes{v2.1}{17 Jan 1997}{Added the new font control.} % % These commands are called to typeset a multiple-line subcaption (or a % single line when \Lif{subcapnooneline} is true). Depending on the % \Lif{subcapcenter} and \Lif{subcapcenterlast} flags, the text will be % justified (both false), centered (\Lif{subcapcenter} true), or % justified with the last line centered (only the flag % \Lif{subcapcenterlast} set true). % % \begin{macrocode} \newcommand{\subfig@caption}[2]{% \ifsubcaphang \sbox{\@tempboxa}{\subcapsize\subcaplabelfont #1}% \addtolength{\@tempdimb}{-\wd\@tempboxa}% \usebox{\@tempboxa}% \subfig@captionpar{\@tempdimb}{% {\subcapfont\ignorespaces #2}}% \else \subfig@captionpar{\@tempdimb}{% {\subcaplabelfont #1}% {\subcapfont\ignorespaces #2}}% \fi} % \end{macrocode} % % \begin{macrocode} \newcommand{\subfig@captionpar}[2]{% \parbox[t]{#1}{% \subcapsize \ifsubcapraggedright \setlength{\leftskip}{\z@}% \setlength{\@rightskip}{\@flushglue}% \setlength{\rightskip}{\@rightskip}% \setlength{\parindent}{\z@}% \else\ifsubcapRaggedRight \setlength{\leftskip}{\z@}% \setlength{\@rightskip}{\z@ plus \tw@ em}% \setlength{\rightskip}{\@rightskip}% \setlength{\parfillskip}{\z@ plus \@ne fil}% \setlength{\parindent}{\z@}% \else\ifsubcapcenter \setlength{\leftskip}{\@flushglue}% \setlength{\rightskip}{\@flushglue}% \setlength{\parfillskip}{\z@skip}% \else\ifsubcapcenterlast \addtolength{\leftskip}{\z@ plus 1fil}% \addtolength{\rightskip}{\z@ plus -1fil}% \setlength{\parfillskip}{\z@ plus 2fil}% \fi\fi\fi\fi #2}} % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Patches to the Standard Environment} % \label{sec:patches} % % The following adjust the standard environment for the % \Lpack{subfigure} package. They are designed as wrappers to the % current definition of the standard commands to minimize any chance of % conflict with other packages or to extend \LaTeX. % % \begin{macro}{\@dottedxxxline} % \label{sec:dl} % This is a generalized wrapper for the |\@dottedtocline| command. % It checks for the level based on the output file (first argument) % and not using only |\@tocdepth|. (See section~\ref{sec:listof} % for a description of the arguments.) % % \begin{macrocode} \newcommand*{\@dottedxxxline}[6]{% \ifnum #2>\@nameuse{c@#1depth}\else \@dottedtocline{0}{#3}{#4}{#5}{#6} \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\subfig@end@float} % \begin{macro}{\subfig@end@dblfloat} % \begin{macro}{\end@float} % \begin{macro}{\end@dblfloat} % % \changes{v2.1}{05 Jan 1998}{Added this section to minimize the need % for \cmd{\listofcaptions}.} % % These commands patch the end of the \Lenv{float} environment so that it will % dump out the subcaptions if any remain at this point. This can occur % when using the \Lopt{TOPCAP} options. % \begin{macrocode} \let\subfig@end@float=\end@float % \end{macrocode} % % \begin{macrocode} \renewcommand*{\end@float}{% \@listsubcaptions{\@captype}% \subfig@end@float} % \end{macrocode} % % \begin{macrocode} \let\subfig@end@dblfloat=\end@dblfloat % \end{macrocode} % % \begin{macrocode} \renewcommand*{\end@dblfloat}{% \@listsubcaptions{\@captype}% \subfig@end@dblfloat} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \newpage^finalhack % % \begin{macro}{\subfig@oldcaption} % \begin{macro}{\@caption} % % \changes{v2.1}{23 Jan 2002}{Now using \cmd{\@nameuse} to build names. % Added a check for topcap flag. If it is not defined, we assume that % this float type does not support subfigures.} % % \changes{v2.1}{05 Jan 1998}{Changed to print the subcaptions before % or after the caption, depending on the TOPCAP setting of the current % environment.} % % Next, we redefine the current |\@caption| command to dump any % subcaptions saved. First the `old' caption command is called to % add the line to the ``List-of'' file and then the list of % subcaptions, |\@subfigcaptionlist| is written to the same file. % Lastly, the |\@subfigcaptionlist| is reinitialized. % % \begin{macrocode} \let\subfig@oldcaption=\@caption % \end{macrocode} % % \begin{macrocode} \long\def\@caption#1[#2]#3{% \@ifundefined{if#1topcap}% {\subfig@oldcaption{#1}[{#2}]{#3}}% {\@nameuse{if#1topcap}% \@listsubcaptions{#1}% \subfig@oldcaption{#1}[{#2}]{#3}% \else \subfig@oldcaption{#1}[{#2}]{#3}% \@listsubcaptions{#1}% \fi}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\subfig@oldlabel} % % To support the redefinition of the |\label| command within the body of % the subfloats, we will use |\subfig@oldlabel| to save the current % definition of |\label| and create the |\subfloat@label| command to take its % place during the processing of the |\subfigure| command. Since the % definition of |\label| may change as packages are loaded, we save the % definition each time that |\label| is replaced with |\sub@label| % (see \ref{sec:subfigure} above). % % \begin{macrocode} \let\subfig@oldlabel=\relax % \end{macrocode} % \end{macro} % % \begin{macro}{\subfloat@label} % \begin{macro}{\sub@label} % % \changes{v2.1.4}{02 Jul 2002}{Added reference to this command via % the name \cmd{subfloat@label} to avoid packages that replace the % name without the support of the optional argument. The old name % is still here to decoy the other packages. Added chapter number % in the automatically generated label to increase uniqueness.} % % One difference from the regular |\label| command is that there is an % optional argument (note with parentheses rather than square brackets) % that is only used with the \Lpack{hyperref} package to define the % {\em bookmark\/} argument to the label. Typically, this would be a % copy or paraphrase of the subcaption text. If this is not given and % the \Lpack{hyperref} package is being used, then the {\em bookmark\/} % argument is of the form ``Subfigure\textvisiblespace 1(a)''. % % \begin{macrocode} \newcommand*{\subfloat@label}{% \@ifnextchar( {\sf@sub@label} {\sf@sub@label(Sub\@captype\space \@ifundefined{thechapter}{}{% \@nameuse{thechapter}\space}% \@nameuse{p@sub\@captype}% \@nameuse{thesub\@captype}.)}} % \end{macrocode} % \begin{macrocode} \let\sub@label\subfloat@label % \end{macrocode} % % \end{macro} % \end{macro} % % \newpage^finalhack % % \begin{macro}{\sf@sub@label} % % \changes{v2.1.4}{02 Jul 2002}{Moved \cmd{\relax} from the % \cmd{\sf@@sub@label} to here.} % % \changes{v2.1.1}{15 Mar 2002}{Added coordination with the hyperref % package.} % % The |\sf@sub@label| parses the optional argument and (if the % \Lpack{hyperref} Package is loaded) saves the {\em bookmark\/} text % as |\@currentlabelname|. It then calls the |\sf@@sub@label| command % to the real processing of the label. % % \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{v2.1.4}{02 Jul 2002}{Moved \cmd{\relax} from here to the % \cmd{\sf@sub@label}.} % % \changes{v2.1.2}{26 Mar 2002}{Changed to simplify the operation and % to avoid a bug in the hyperref package.} % % \changes{v2.1.1}{15 Mar 2002}{Added coordination with the hyperref % package.} % % In order to support the \Lpack{hyperref} package we check if it was % loaded and use the proper form of the |\newlabel| command. |\sf@@sub@label| % operates by first calling the old |\label| definition (which adds a % |\newlabel| command to the \Lfile{*.aux} file) and then adds another % |\newlabel| command to the \Lfile{*.aux} file with a similar reference % name (with `sub@' prepended) and the value of |\@@thesubfigure| or % |\@@thesubtable|. % % If the |\ifhyperrefloaded| flag is set, then the |\newlabel| command % has three extra fields, the first is the value of |\@currentlabelname|, % which is either of the form ``Subfigure\textvisiblespace1(a)'' or % was defined by the optional argument to |\label| (actually % |\sub@label|). The second extra field is the hypertext anchor name % and the third is unused. Otherwise, the we us the standard |\newlabel| % form to write the sub-reference. % % \begin{macrocode} \newcommand*{\sf@@sub@label}[1]{% \@bsphack \subfig@oldlabel{#1}% \ifhyperrefloaded \protected@write\@auxout{}{% \string\newlabel{sub@#1}% {{\@nameuse{@@thesub\@captype}}% {\thepage}% {\expandafter\strip@period\@currentlabelname\relax.\relax\@@@}% {\@currentHref}% {}}}% \else \protected@write\@auxout{}{% \string\newlabel{sub@#1}% {{\@nameuse{@@thesub\@captype}}% {\thepage}}}% \fi \@esphack} % \end{macrocode} % % \end{macro} % % \enlargethispage{24pt}^finalhack % \vspace{-10pt}^finalhack % % \begin{macro}{\subref} % % The |\subref| command is the same as the |\ref| command except that % |\@@thesubtable| instead of |\p@subfigure\thesubfigure| or % |\p@subtable\thesubtable|. This is often of use for local references % within the figure where the figure number may be assumed; or, for ease % in constructing a range of references within a figure with many % subfigures. % % \begin{macrocode} \newcommand\subref[1]{% \ref{sub@#1}} % \end{macrocode} % % \end{macro} % % \begin{macro}{\Subref} % % \changes{v2.1.2}{26 Mar 2002}{Changed \cmd{\subref*} to \cmd{\Subref} to % avoid problems in writing to the \Lfile{aux} file.} % % \changes{v2.1}{23 Jan 2002}{Added \cmd{\subref*} at the request of Benoit % Hudson (bhudson\@cs.cmu.edu).} % % The |\Subref| command is the same as |\subref|, except that it adds % |\subcaplabelfont| before the reference so that it uses the same font % (except that the current font size is maintained). % % \begin{macrocode} \newcommand\Subref[1]{% {\subcaplabelfont \ref{sub@#1}}} % \end{macrocode} % \end{macro} % % \iffalse % % \fi % % \Finale % \endinput