%% %% This is file `subfig.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% subfig.dtx (with options: `package') %% %% Copyright © 2003, 2004, 2005 Steven Douglas Cochran. %% %% This file is NOT the source for the subfig package, because almost %% all comments have been stripped from it. It is NOT the preferred form %% of the subfig package for making modifications to it. %% %% Therefore you can NOT redistribute and/or modify THIS file. You can %% however redistribute the complete source package (README, Makefile, %% subfig.dtx, subfig.ins, and subfig.pdf as well as the test/example %% files test[1-7].tex) and/or modify it under the terms of the LaTeX Project %% Public License, either version 1.3 of this license or (at your option) %% any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "author-maintained". %% %% This Current Maintainer of this work is Steven Douglas Cochran. %% %% This work consists of all files listed under "MANIFEST" in the %% README file distributed with the subfig package. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @LaTeX-style-file{ %% author = "Steven Douglas Cochran", %% version = "1.3", %% date = "2005/07/05", %% time = "04:19:08", %% filename = "subfig.sty", %% address = "Digital Mapping Laboratory, %% School of Computer Science %% Carnegie-Mellon University, %% 5000 Forbes Avenue %% Pittsburgh, PA 15213-3890 %% USA", %% telephone = "+1 412.268.5654", %% fax = "+1 412.268.5576", %% email = "cochran@ieee.org", %% codetable = "ISO/ASCII", %% keywords = "LaTeX, float, sub-float, continued figure", %% supported = "yes", %% abstract = "LaTeX package for providing support for the %% inclusion of small, `sub', figures and tables. It %% simplifies the positioning, captioning and %% labeling of them within a single figure or table %% environment. In addition, this package allows %% such sub-captions to be written to the List of %% Figures or List of Tables if desired." %% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{subfig}[2005/06/28 ver: 1.3 subfig package] \def\sf@floatfix#1#2{% \ifx#1#2% \ifx#1\@undefined\else \PackageWarningNoLine{subfig}{% Your document class has a bad definition^^J of \string#1, most likely^^J \string\let\string#1=\string#2^^J which has now been changed to^^J \string\def\string#1{\string#2}^^J because otherwise subsequent changes to \string#2^^J (like done by several packages changing float behaviour)^^J can't take effect on \string#1.^^J Please complain to your document class author}% \def#1{#2}% \fi \fi} \begingroup \def\next#1#2{% \endgroup \sf@floatfix\endfigure\end@float \sf@floatfix\endtable\end@float \sf@floatfix#1\end@dblfloat \sf@floatfix#2\end@dblfloat} \expandafter\next\csname endfigure*\expandafter\endcsname \csname endtable*\endcsname \RequirePackage{keyval}[1999/03/16] \def\sf@ifinlist#1#2{% \let\next\@secondoftwo \edef\caption@tempa{#1}% \@for\caption@tempb:={#2}\do{% \ifx\caption@tempa\caption@tempb \let\next\@firstoftwo \fi}% \next} \def\sf@setbool#1#2{% \sf@ifinlist{#2}{1,true,yes,on}{% \@nameuse{#1true}% }{\sf@ifinlist{#2}{0,false,no,off}{% \@nameuse{#1false}% }{% \PackageError{subfig}{Undefined boolean value `#2'}{\@ehc}% }}} \def\sf@split#1=#2=#3\relax{% \KV@@sp@def\@tempa{#1}% \ifx\@tempa\@empty \else\ifx\@tempa\KV@caption \sf@usecaptionfoundtrue \ifx\@empty#3\@empty \sf@usecaptiontrue \else \KV@@sp@def\@tempb{#2}% \sf@setbool{sf@usecaption}{\@tempb}% \fi \fi\fi} \def\KV@caption{caption} \newif\ifsf@usecaptionfound \sf@usecaptionfoundfalse \newif\ifsf@usecaption \sf@usecaptiontrue \edef\sf@temp{\@ptionlist{\@currname.\@currext}} \let\caption@tempa\@empty \@for\CurrentOption:=\sf@temp\do{% \expandafter\sf@split\CurrentOption==\relax} \ifsf@usecaption \@ifpackageloaded{caption}{% \ifsf@usecaptionfound \PackageWarning{subfig}{% You cannot set the `caption' option here if the\MessageBreak caption package is already loaded (the option\MessageBreak `caption=true' is ignored)}% \fi }{% \RequirePackage{caption}[2005/06/26] }% \else \RequirePackage{caption3}[2005/06/11] \fi \def\sf@ifpositiontop{% \ifx\caption@position\@firstoftwo \let\next\@firstoftwo \else \let\next\@secondoftwo \fi \next} \def\DeclareCaptionListOfFormat#1{% \@namedef{caption@lstfmt@#1}##1##2} \@onlypreamble\DeclareCaptionListOfFormat \def\caption@setlistofformat#1{% \@ifundefined{caption@lstfmt@#1}{% \PackageError {subfig}% {Undefined caption list-of format `#1'}% {\caption@eh}% }{% \expandafter\let\expandafter\caption@lstfmt \csname caption@lstfmt@#1\endcsname}} \DeclareCaptionListOfFormat{empty}{} \DeclareCaptionListOfFormat{simple}{#1#2} \DeclareCaptionListOfFormat{parens}{#1(#2)} \DeclareCaptionListOfFormat{subsimple}{#2} \DeclareCaptionListOfFormat{subparens}{(#2)} \DeclareCaptionOption{listofformat}{\caption@setlistofformat{#1}} \def\sf@indent{3.8em} \define@key{caption}{listofindent}[3.8em]{\def\sf@indent{#1}} \def\sf@numwidth{2.5em} \define@key{caption}{listofnumwidth}[2.5em]{\def\sf@numwidth{#1}} \def\DeclareSubrefFormat#1{% \@namedef{caption@subreffmt@#1}##1##2##3##4} \@onlypreamble\DeclareSubrefFormat \def\caption@setsubrefformat#1{% \@ifundefined{caption@subreffmt@#1}{% \PackageError {subfig}% {Undefined subref format `#1'}% {\caption@eh}% }{% \expandafter\let\expandafter\caption@subreffmt \csname caption@subreffmt@#1\endcsname}} \DeclareSubrefFormat{empty}{} \DeclareSubrefFormat{simple}{#1#2} \DeclareSubrefFormat{parens}{#1(#2)} \DeclareSubrefFormat{subsimple}{#2} \DeclareSubrefFormat{subparens}{(#2)} \DeclareCaptionOption{subrefformat}{\caption@setsubrefformat{#1}} \newcounter{KVtest} \def\KV@config{config} \def\sf@split#1=#2=#3\relax{% \setcounter{KVtest}{1}% \KV@@sp@def\@tempa{#1}% \ifx\@tempa\@empty \else\ifx\@tempa\KV@caption \setcounter{KVtest}{2}% \else\ifx\@tempa\KV@config \setcounter{KVtest}{2}% \expandafter\let\expandafter\@tempc \csname\KV@prefix\@tempa\endcsname \ifx\@tempc\relax \KV@errx {\@tempa\space undefined}% \else\ifx\@empty#3\@empty \KV@default \else \KV@@sp@def\@tempb{#2}% \expandafter\@tempc\expandafter{\@tempb}\relax \fi\fi \fi\fi\fi} \def\ProcessPackageOptions{% \def\KV@prefix{KV@\@currname @}% \let\@tempc\relax \let\caption@tempa\@empty \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@caption@\CurrentOption}{}{% \edef\caption@tempa{\caption@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist}}% \edef\caption@tempb{\@ptionlist{\@currname.\@currext}}% \@for\CurrentOption:=\caption@tempb\do{% \expandafter\sf@split\CurrentOption==\relax \ifnum\c@KVtest<2\relax \edef\caption@tempa{\caption@tempa,\CurrentOption,}% \fi}% \edef\caption@tempa{% \noexpand\captionsetup[subfloat]{\caption@tempa}}% \caption@tempa} \def\@dottedxxxline#1#2#3#4#5#6#7{% \begingroup \@ifundefined{caption@setfloattype}% \caption@settype \caption@setfloattype {#1} \caption@settype{subfloat}% \caption@settype{sub#1}% \ifnum #3>\@nameuse{c@#2depth}\else \@dottedtocline{\z@}{#4}{#5}{#6}{#7}% \fi \endgroup} \newif\ifmaincaptiontop \def\newsubfloat{% \@ifnextchar[ %] bracket matching {\@newsubfloat} {\@newsubfloat[]}} \def\@newsubfloat[#1]#2{% \@ifundefined{c@sub#2}{% \newcounter{sub#2}[#2] \newcounter{sub#2@save}% \@namedef{sub#2name}{}% \@namedef{p@sub#2}{\@nameuse{the#2}}% \@namedef{thesub#2}{\alph{sub#2}}% \@namedef{ext@sub#2}{\@nameuse{ext@#2}}% \@namedef{l@sub#2}{% \@dottedxxxline{#2}% {\@nameuse{ext@sub#2}}{2}{\sf@indent}{\sf@numwidth}}% \@ifundefined{c@\@nameuse{ext@#2}depth}{% \expandafter\newcounter\expandafter{\@nameuse{ext@#2}depth}% \expandafter\addtocounter\expandafter{\@nameuse{ext@#2}depth}\@ne}{}% \@namedef{KV@caption@\@nameuse{ext@#2}depth@default\expandafter}% \expandafter{\csname KV@caption@\@nameuse{ext@#2}depth\endcsname{2}}% \@namedef{KV@caption@\@nameuse{ext@#2}depth}##1{% \setcounter{\@nameuse{ext@#2}depth}{##1}}% \edef\sf@counterlist{% \@ifundefined{sf@counterlist}{}% {\sf@counterlist,}sub#2}% \captionsetup[sub#2]{#1}% }{% \PackageWarning{subfig}{% The sub#2\space type is already defined.}% }} \@onlypreamble\@newsubfloat \@onlypreamble\newsubfloat \newskip\sf@farskip \sf@farskip 10\p@ \define@key{caption}{farskip}[10\p@]{\sf@farskip=#1} \newdimen\sf@captopadj \sf@captopadj \z@ \define@key{caption}{topadjust}[\z@]{\sf@captopadj=#1} \newskip\sf@capskip \sf@capskip 4\p@ \define@key{caption}{captionskip}[4\p@]{\sf@capskip=#1} \newskip\sf@nearskip \sf@nearskip \z@ \define@key{caption}{nearskip}[5\p@]{\sf@nearskip=#1} \let\sf@old@caption\@caption \def\@caption{\caption@} \captionsetup[subfloat]{% font=footnotesize, labelformat=parens,labelsep=space, listofformat=subparens,subrefformat=subsimple} \define@key{subfig}{config}[subfig]{% \InputIfFileExists{#1.cfg}{% \typeout{***********************************************^^J% * Subfig configuration file #1.cfg used ^^J% ***********************************************}% }{% \PackageWarning{subfig}{Configuration file #1.cfg not found}}% } \ProcessPackageOptions \@ifundefined{c@subfigure}{\newsubfloat{figure}}{} \@ifundefined{c@subtable}{\newsubfloat{table}}{} \AtEndOfPackage{% \global\let\ifsf@usecaption\relax \global\let\sf@usecaptiontrue\relax \global\let\sf@usecaptionfalse\relax \global\let\ifsf@usecaptionfound\relax \global\let\sf@usecaptionfoundtrue\relax \global\let\sf@usecaptionfoundfalse\relax \global\let\KV@caption\relax \global\let\KV@subfig@caption\relax \global\let\KV@subfig@caption@default\relax \global\let\KV@config\relax \global\let\KV@subfig@config\relax \global\let\KV@subfig@config@default\relax \global\let\ProcessPackageOptions\relax \global\let\@unprocessedoptions\relax \let\CurrentOption\@empty } \newskip\sf@top \newskip\sf@bottom \def\subfloat{% \ifx\@captype\@undefined \@latex@error{\noexpand\subfloat outside float}\@ehd \expandafter\@gobble \else \expandafter\@firstofone \fi {\sf@subfloat}} \def\sf@subfloat{% \begingroup \@ifundefined{caption@setfloattype}% \caption@settype \caption@setfloattype \@captype \sf@ifpositiontop{% \maincaptiontoptrue }{% \maincaptiontopfalse }% \caption@settype{subfloat}% \caption@settype{sub\@captype}% \let\sf@oldlabel=\label \let\label=\subfloat@label \ifmaincaptiontop\else \advance\@nameuse{c@\@captype}\@ne \fi \refstepcounter{sub\@captype}% \setcounter{sub\@captype @save}{\value{sub\@captype}}% \@ifnextchar [% %] match left bracket {\sf@@subfloat}% {\sf@@subfloat[\@empty]}} \long\def\sf@@subfloat[#1]{% \@ifnextchar [% %] match left bracket {\sf@@@subfloat{sub\@captype}[{#1}]}% {\sf@@@subfloat{sub\@captype}[\@empty{#1}][{#1}]}} \long\def\sf@@@subfloat#1[#2][#3]#4{% \@ifundefined{FBsc@max}{}% {\FB@readaux{\let\FBsuboheight\relax}}% \@tempcnta=\@ne \if@minipage \@tempcnta=\z@ \else\ifdim \lastskip=\z@ \else \@tempcnta=\tw@ \fi\fi \ifmaincaptiontop \sf@top=\sf@nearskip \sf@bottom=\sf@farskip \else \sf@top=\sf@farskip \sf@bottom=\sf@nearskip \fi \leavevmode \setbox\@tempboxa \hbox{#4}% \@tempdima=\wd\@tempboxa \@ifundefined{FBsc@max}{}% {\global\advance\Xhsize-\wd\@tempboxa \dimen@=\ht\@tempboxa \advance\dimen@\dp\@tempboxa \ifdim\dimen@>\FBso@max \global\FBso@max\dimen@ \fi}% \vtop\bgroup \vbox\bgroup \ifcase\@tempcnta \@minipagefalse \or \vskip\sf@top \or \ifdim \lastskip=\z@ \else \@tempskipb\sf@top\relax\@xaddvskip \fi \fi \sf@ifpositiontop{% \ifx \@empty#3\relax \else \sf@subcaption{#1}{#2}{#3}% \vskip\sf@capskip \vskip\sf@captopadj \fi\egroup \hrule width0pt height0pt depth0pt \box\@tempboxa }{% \@ifundefined{FBsc@max}% {\box\@tempboxa}% {\ifx\FBsuboheight\relax \box\@tempboxa \else \vbox to \FBsuboheight{\FBafil\box\@tempboxa\FBbfil}% \fi}% \egroup \ifx \@empty#3\relax \else \vskip\sf@capskip \hrule width0pt height0pt depth0pt \sf@subcaption{#1}{#2}{#3}% \fi }% \vskip\sf@bottom \egroup \@ifundefined{FBsc@max}{}% {\addtocounter{FRobj}{-1}% \ifnum\c@FRobj=0\else \subfloatrowsep \fi}% \ifmaincaptiontop\else \global\advance\@nameuse{c@\@captype}\m@ne \fi \endgroup\ignorespaces} \def\sf@updatecaptionlist#1#2#3#4{% \xdef\sf@captionlist{% \sf@captionlist,% {\protect\numberline{\@subcaplabel}\noexpand{\ignorespaces #2}}% {#1.#3.#4}}} \long\def\sf@subcaption#1#2#3{% \ifx \relax#2\relax \else \bgroup \let\label=\@gobble \let\protect=\string \def\@subcaplabel{% \caption@lstfmt{\@nameuse{p@#1}}{\@nameuse{the#1}}}% \sf@updatecaptionlist{#1}{#2}{\the\value{\@captype}}{\the\value{#1}}% \egroup \fi \bgroup \ifx \relax#3\relax \let\captionlabelsep=\relax \fi \setbox0\vbox{% \hb@xt@\the\@tempdima{% \hss \parbox[t]{\the\@tempdima}{% \caption@make {\@nameuse{sub\@captype name}}% {\@nameuse{thesub\@captype}}% {#3}}% \hss}}% \@ifundefined{FBsc@max}% {\box0}% {\dimen@\ht0% \advance\dimen@\dp0% \ifdim\dimen@>\FBsc@max \global\FBsc@max\dimen@ \fi \FB@readaux{\let\FBsubcheight\relax}% \ifx\FBsubcheight\relax \def\next{\parbox[t]{\the\@tempdima}}% \else \def\next{\parbox[t][\FBsubcheight][t]{\the\@tempdima}}% \fi \vbox{% \hb@xt@\the\@tempdima{% \hss \next{% \caption@make {\@nameuse{sub\@captype name}}% {\@nameuse{thesub\@captype}}% {#3}}% \hss}}}% \egroup} \def\listsubcaptions{% \@ifstar {\gdef\sf@captionlist{}}% {\@listsubcaptions{\@captype}}} \def\sf@captionlist{} \def\@listsubcaptions#1{% \@ifundefined{@captype}{}{% \@ifundefined{ext@sub#1}{}{% \@for \sf@temp:=\sf@captionlist \do {% \ifx \@empty\sf@temp\relax \else \begingroup \def\@currentHref{\expandafter\@secondoftwo\sf@temp}% \sf@addcontentsline {\@nameuse{ext@sub#1}}% {sub#1}% {\expandafter\@firstoftwo\sf@temp}% \endgroup \fi}}}% \gdef\sf@captionlist{}} \long\def\caption@#1[#2]#3{% \@ifundefined{caption@setfloattype}% \caption@settype \caption@setfloattype \@captype \sf@ifpositiontop{% \@listsubcaptions{#1}% \sf@old@caption{#1}[{#2}]{#3}% }{% \sf@old@caption{#1}[{#2}]{#3}% \@listsubcaptions{#1}% }} \AtBeginDocument{% \let\sf@addcontentsline=\addcontentsline} \def\subfloat@label{% \@ifnextchar(% %) match left parenthesis {\sf@sub@label} {\sf@sub@label(Sub\@captype\space \@ifundefined{thechapter}{}{\@nameuse{thechapter}\space}% \@nameuse{p@sub\@captype}% \@nameuse{thesub\@captype}.)}} \newif\ifhyperrefloaded \def\sf@sub@label(#1)#2{% \ifhyperrefloaded \protected@edef\@currentlabelname{% \expandafter\strip@period #1\relax.\relax\@@@}% \fi \sf@@sub@label{#2}} \def\sf@@sub@label#1{% \@bsphack \sf@oldlabel{#1}% \ifhyperrefloaded \begingroup \edef\@currentlabstr{% \expandafter\strip@prefix\meaning\@currentlabelname}% \protected@write\@auxout{}{% \string\newlabel{sub@#1}{% {\caption@lstfmt {\@nameuse{p@sub\@captype}}% {\@nameuse{thesub\@captype}}}% {\caption@subreffmt {\@nameuse{p@sub\@captype}}% {\@nameuse{thesub\@captype}}% {\the\value{\@captype}}% {\the\value{sub\@captype}}}% {\expandafter\strip@period\@currentlabelname\relax.\relax\@@@}% {\@currentHref}% {}}}% \endgroup \else \protected@write\@auxout{}{% \string\newlabel{sub@#1}{% {\caption@lstfmt {\@nameuse{p@sub\@captype}}% {\@nameuse{thesub\@captype}}}% {\caption@subreffmt {\@nameuse{p@sub\@captype}}% {\@nameuse{thesub\@captype}}% {\the\value{\@captype}}% {\the\value{sub\@captype}}}}}% \fi \@esphack} \def\subref{% \@ifstar \sf@@subref \sf@subref} \def\sf@subref#1{\ref{sub@#1}} \def\sf@@subref#1{\pageref{sub@#1}} \newif\if@ccflag \@ccflagfalse \AtBeginDocument{% \let\sf@refstepcounter=\refstepcounter \@ifpackageloaded{captcont}{}{% \def\refsteponlycounter#1{% \if@ccflag \global\expandafter\advance\csname c@#1\endcsname\@ne \let\sf@temp\protect \def\protect{\noexpand\protect\noexpand}% \edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}% \let\protect\sf@temp \else \sf@refstepcounter{#1}% \fi \@ccflagfalse}% }% \def\ContinuedFloat{% \ifx\@captype\@undefined \@latex@error{\noexpand\ContinuedFloat outside float}\@ehd \else \addtocounter{\@captype}{\m@ne}% \caption@ContinuedFloat\@captype \@ifundefined{c@sub\@captype}{}{% \setcounter{sub\@captype}{\value{sub\@captype @save}}% \@ccflagtrue}% \fi}} \providecommand*\caption@ContinuedFloat[1]{} \def\sf@caption{% \let\refstepcounter=\refsteponlycounter \sf@savecaption} \AtBeginDocument{% \let\sf@savecaption=\caption \let\caption=\sf@caption } \let\sf@end@float=\end@float \let\sf@end@dblfloat=\end@dblfloat \def\end@float{% \@ifundefined{sf@counterlist}{}{% \@for\sf@temp:=\sf@counterlist\do{% \setcounter{\sf@temp}{\z@}}% \@listsubcaptions{\@captype}}% \sf@end@float}% \def\end@dblfloat{% \@ifundefined{sf@counterlist}{}{% \@for\sf@temp:=\sf@counterlist\do{% \setcounter{\sf@temp}{\z@}}% \@listsubcaptions{\@captype}}% \sf@end@dblfloat} \AtBeginDocument{% \@ifpackageloaded{hyperref}{% \hyperrefloadedtrue % \def\sf@setref#1sub#2\relax{% \@namedef{theHsub#2\expandafter}{\@nameuse{the#2}.\arabic{sub#2}}% \@namedef{toclevel@sub#2}{1}% } % \@for\sf@temp:=\sf@counterlist\do{% \expandafter\sf@setref\sf@temp\relax}% % \global\let\sf@setref\relax % \let\sf@Hrefstepcounter\H@refstepcounter \def\H@refstepcounter#1{% \sf@Hrefstepcounter{#1}% \@ifundefined{c@sub#1}{}{% \if@ccflag \setcounter{sub#1}{\value{sub#1@save}}% \fi \@ccflagfalse}}% % }{}% \@ifpackageloaded{float}{% \let\sf@endfloatbox=\@endfloatbox \def\@endfloatbox{% \listsubcaptions \sf@endfloatbox}% }{}% \@ifpackageloaded{fixltx2e}{% \def\end@dblfloat{% \if@twocolumn \@ifundefined{sf@counterlist}{}{% \@for\sf@temp:=\sf@counterlist\do{% \setcounter{\sf@temp}{\z@}}% \@listsubcaptions{\@captype}}% \@endfloatbox \ifnum\@floatpenalty <\z@ \@largefloatcheck \global\dp\@currbox1sp % \expandafter\@gobble\sf@end@float \fi \else \end@float \fi}% }{% \@ifpackageloaded{fix2col}{% \def\end@dblfloat{% \if@twocolumn \@ifundefined{sf@counterlist}{}{% \@for\sf@temp:=\sf@counterlist\do{% \setcounter{\sf@temp}{\z@}}% \@listsubcaptions{\@captype}}% \@endfloatbox \ifnum\@floatpenalty <\z@ \@largefloatcheck \global\dp\@currbox1sp % \expandafter\@gobble\sf@end@float \fi \else \end@float \fi}}{}% } } \endinput %% %% End of file `subfig.sty'.