%% %% This is file `caption2.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% caption2.dtx (with options: `package') %% %% Copyright (C) 1994-2022 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) %% %% https://gitlab.com/axelsommerfeldt/caption %% %% -------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% This Current Maintainer of this work is Axel Sommerfeldt. %% %% This work consists of the files %% caption.ins, caption.dtx, caption-light.dtx, caption2.dtx, caption3.dtx, %% caption-ams-smf.dtx, caption-beamer.dtx, caption-elsarticle.dtx, %% caption-koma.dtx, caption-memoir.dtx, caption-ntg.dtx, %% caption-thesis.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, %% the derived files %% caption.sty, caption-light.sty, caption2.sty, caption3.sty, %% caption-ams-smf.sto, caption-beamer.sto, caption-elsarticle.sto, %% caption-koma.sto, caption-memoir.sto, caption-ntg.sto, %% caption-thesis.sto, bicaption.sty, ltcaption.sty, subcaption.sty. %% \NeedsTeXFormat{LaTeX2e}[1994/12/01] \providecommand\DeclareRelease[3]{} \providecommand\DeclareCurrentRelease[2]{} \DeclareRelease{v2.0}{1995-10-09}{caption2_1995-10-09.sty} \DeclareRelease{v2.1}{2002-08-03}{caption2_2005-10-03.sty} \DeclareCurrentRelease{v2.2}{2007-04-09} % 1st version using caption3 \ProvidesPackage{caption2}[2021/01/20 v2.2i Customising captions (AR)] \RequirePackage{caption3}[2007/03/04] \newcommand*\captiontwo@Error[2][]{% \PackageError{caption2}{#2}{#1\caption@@eh{caption2}}} \providecommand*\caption@@eh[1]{% If you do not understand this error, please take a closer look\MessageBreak at the documentation of the `#1' package, especially the\MessageBreak section about errors.\MessageBreak\@ehc} \@ifpackageloaded{caption}{% \captiontwo@Error{% You can't use both, the (current) caption *and*\MessageBreak the (obsolete) caption2 package}% \endinput }{} \newcommand*\captionlabeldelim{} \newcommand*\captionlabelsep{} \@ifundefined{captionwidth} {\let\captionwidth\caption@width} {} \newcommand*\ifcaptionwidth{\ifdim\captionwidth>\z@} \@ifundefined{captionindent} {\let\captionindent\caption@indent} {} \def\ifcaptionlabel{% \ifcaption@star \@tempswafalse \else \@tempswatrue \fi \if@tempswa} \def\captionlabeltrue{\caption@starfalse} \def\captionlabelfalse{\caption@startrue} \def\ifonelinecaptions{% \caption@ifslc{\@tempswatrue}{\@tempswafalse}% \if@tempswa} \def\onelinecaptionstrue{\caption@setbool{slc}{1}} \def\onelinecaptionsfalse{\caption@setbool{slc}{0}} \newif\ifignoreLTcapwidth \providecommand*\setcaptionmargin{% \setlength\captionwidth\z@ \setlength\captionmargin} \providecommand*\setcaptionwidth{% \setlength\captionmargin\z@ \setlength\captionwidth} \newcommand*\normalcaptionparams{% \let\captionsize\@empty \renewcommand*\captionfont{\captionsize}% \let\captionlabelfont\@empty \renewcommand*\captionlabeldelim{:}% \renewcommand*\captionlabelsep{\space}% \setcaptionmargin\z@ \setlength\captionindent\z@ \onelinecaptionstrue} \newcommand*\defcaptionstyle[1]{% \@namedef{caption@@#1}} \newcommand*\newcaptionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \expandafter\defcaptionstyle \else \captiontwo@Error{Caption style `#1' already defined}% \expandafter\@gobbletwo \fi {#1}} \newcommand*\renewcaptionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Caption style `#1' undefined}% \expandafter\@gobbletwo \else \expandafter\defcaptionstyle \fi {#1}} \newcommand*\dummycaptionstyle[2]{% \defcaptionstyle{#1}{% \expandafter\ifx\csname caption@@\caption@style\expandafter\endcsname% \csname caption@@#1\endcsname \captiontwo@Error [The caption style `#1' is only a dummy and does not really exists.% \MessageBreak You have to redefine it (with \protect\renewcaptionstyle) before you can select\MessageBreak it with \protect\captionstyle.\space]% {You can't use the caption style `#1' directy}% \else #2\usecaptionstyle\caption@style \fi}} \newcommand*\captionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Undefined caption style `#1'}% \else \def\caption@style{#1}% \fi} \newcaptionstyle{normal}{\caption@make{normal}} \newcaptionstyle{center}{\caption@make{center}} \newcaptionstyle{centerlast}{\caption@make{centerlast}} \newcaptionstyle{flushleft}{\caption@make{flushleft}} \newcaptionstyle{flushright}{\caption@make{flushright}} \newcaptionstyle{hang}{\caption@make{hang}} \newcaptionstyle{hang+center}{\caption@make{hang@center}} \newcaptionstyle{hang+centerlast}{\caption@make{hang@centerlast}} \newcaptionstyle{hang+flushleft}{\caption@make{hang@flushleft}} \newcaptionstyle{indent}{\caption@make{indent}} \newcommand*\caption@makecaption[1]{% \usecaptionmargin \ifcaptionlabel \def\caption@label{% {\captionlabelfont\captionlabel\captionlabeldelim}\captionlabelsep}% \else \let\caption@label\@empty \fi \captionfont \onelinecaption {\caption@label\captiontext}% {\parbox[b]\captionlinewidth{\strut\@nameuse{caption@@@#1}\par}\par}} \newcommand*\caption@@@normal{% \caption@label\captiontext} \newcommand*\caption@@@center{% \centering\caption@label\captiontext}% \newcommand*\caption@@@centerlast{% \centerlast\caption@label\captiontext} \newcommand*\caption@@@flushleft{% \raggedright\caption@label\captiontext}% \newcommand*\caption@@@flushright{% \raggedleft\caption@label\captiontext}% \newcommand*\caption@@@hang{% \sbox\@tempboxa{\caption@label}% \hangindent\wd\@tempboxa\noindent \usebox\@tempboxa\caption@hangplus\captiontext} \newcommand*\caption@hangplus{} \newcommand*\caption@@@hang@center{% \let\caption@hangplus\centering\caption@@@hang} \newcommand*\caption@@@hang@centerlast{% \let\caption@hangplus\centerlast\caption@@@hang} \newcommand*\caption@@@hang@flushleft{% \let\caption@hangplus\raggedright\caption@@@hang} \newcommand*\caption@@@indent{% \hangindent\captionindent\noindent \caption@label\captiontext} \DeclareOption{normal}{\captionstyle{normal}} \DeclareOption{center}{\captionstyle{center}} \DeclareOption{centerlast}{\captionstyle{centerlast}} \DeclareOption{flushleft}{\captionstyle{flushleft}} \DeclareOption{flushright}{\captionstyle{flushright}} \DeclareOption{anne}{\ExecuteOptions{centerlast}} \DeclareOption{hang}{\captionstyle{hang}} \DeclareOption{hang+center}{\captionstyle{hang+center}} \DeclareOption{hang+centerlast}{\captionstyle{hang+centerlast}} \DeclareOption{hang+flushleft}{\captionstyle{hang+flushleft}} \DeclareOption{isu}{\ExecuteOptions{hang}} \DeclareOption{indent}{\captionstyle{indent}} \DeclareOption{scriptsize}{\g@addto@macro\captionsize\scriptsize} \DeclareOption{footnotesize}{\g@addto@macro\captionsize\footnotesize} \DeclareOption{small}{\g@addto@macro\captionsize\small} \DeclareOption{normalsize}{\g@addto@macro\captionsize\normalsize} \DeclareOption{large}{\g@addto@macro\captionsize\large} \DeclareOption{Large}{\g@addto@macro\captionsize\Large} \DeclareOption{up}{\g@addto@macro\captionlabelfont\upshape} \DeclareOption{it}{\g@addto@macro\captionlabelfont\itshape} \DeclareOption{sl}{\g@addto@macro\captionlabelfont\slshape} \DeclareOption{sc}{\g@addto@macro\captionlabelfont\scshape} \DeclareOption{md}{\g@addto@macro\captionlabelfont\mdseries} \DeclareOption{bf}{\g@addto@macro\captionlabelfont\bfseries} \DeclareOption{rm}{\g@addto@macro\captionlabelfont\rmfamily} \DeclareOption{sf}{\g@addto@macro\captionlabelfont\sffamily} \DeclareOption{tt}{\g@addto@macro\captionlabelfont\ttfamily} \DeclareOption{oneline}{\onelinecaptionstrue} \DeclareOption{nooneline}{\onelinecaptionsfalse} \newcommand*\caption@setpackage[1]{\@namedef{caption@pkt@#1}} \@onlypreamble\caption@setpackage \DeclareOption{float}{% \caption@twozerofalse\caption@setpackage{float}{1}} \DeclareOption{longtable}{% \caption@twozerofalse\caption@setpackage{longtable}{1}} \DeclareOption{subfigure}{% \caption@twozerofalse\caption@setpackage{subfigure}{1}} \DeclareOption{none}{% \caption@twozerofalse \caption@setpackage{float}{0}\caption@setpackage{longtable}{0}% \caption@setpackage{subfigure}{0}} \DeclareOption{all}{\ExecuteOptions{float,longtable,subfigure}} \newif\ifcaption@ruled \DeclareOption{ruled}{\caption@ruledtrue} \DeclareOption{boxed}{} \DeclareOption{ignoreLTcapwidth}{\ignoreLTcapwidthtrue} \newif\ifcaption@twozero \normalcaptionparams \ExecuteOptions{none,normal} \caption@twozerotrue \ProcessOptions* \ifcaption@twozero \PackageInfo{caption2}{Running in caption2 v2.0 compatibility mode} \fi \def\captionof{\@ifstar{\caption@of{\caption*}}{\caption@of\caption}} \newcommand*\caption@of[2]{\def\@captype{#2}#1} \@ifundefined{abovecaptionskip}{% \newlength\abovecaptionskip\setlength\abovecaptionskip{10\p@}}{} \@ifundefined{belowcaptionskip}{% \newlength\belowcaptionskip\setlength\belowcaptionskip{0\p@}}{} \newdimen\captionlinewidth \newdimen\realcaptionwidth \newcommand*\usecaptionmargin{% \ifcaptionwidth \leftskip\captionlinewidth \advance\leftskip by -\captionwidth \divide\leftskip by 2 \rightskip\leftskip \captionlinewidth\captionwidth \else \leftskip\captionmargin \rightskip\captionmargin \advance\captionlinewidth by -2\captionmargin \fi \realcaptionwidth\captionlinewidth} \newcommand\onelinecaption[1]{% \let\next\@firstofone \ifonelinecaptions \sbox\@tempboxa{#1}% \ifdim\wd\@tempboxa >\captionlinewidth \else \def\next{{\centering\usebox\@tempboxa\par}\@gobble}% \fi \fi\next} \newcommand*\usecaptionstyle[1]{% \@ifundefined{captiontext}{% \captiontwo@Error [The usage of \protect#1 is only allowed inside code declared with\MessageBreak \protect\defcaptionstyle, \protect\newcaptionstyle \space or \protect\renewcaptionstyle.\space]% {You can't use \protect#1 in normal text}% }{% \@ifundefined{caption@@#1}% {\captiontwo@Error{Caption style `#1' undefined}}% {\let\caption@make\caption@makecaption \@nameuse{caption@@#1}}% }} \renewcommand\@makecaption[2]{% \vskip\abovecaptionskip \captionlinewidth\hsize \realcaptionwidth\hsize \def\captionlabel{#1}% \def\captiontext{#2}% \usecaptionstyle\caption@style \vskip\belowcaptionskip} \newcommand\caption@ifpackage[3]{% \ifcaption@twozero \let\next\@firstofone \else\if1\@nameuse{caption@pkt@#1}% \def\next{\@ifpackageloaded{#1}\@firstofone\AtBeginDocument}% \else \PackageInfo{caption2}{#1 package is disabled}% #3% \let\next\@gobble \fi\fi \@nameundef{caption@pkt@#1}% \next{% \@ifpackageloaded{#1}{% \PackageInfo{caption2}{#1 package is loaded}% #2}{% \PackageInfo{caption2}{#1 package is not loaded}% #3}}} \@onlypreamble\caption@ifpackage \caption@ifpackage{float}{% \newcommand\caption@floatc[3]{% \ifx\captionlabelfont\@empty \let\captionlabelfont\@fs@cfont \fi \captionlinewidth\hsize \realcaptionwidth\hsize \def\captionlabel{#2}% \def\captiontext{#3}% \usecaptionstyle{#1}}% \renewcommand*\floatc@plain{\caption@floatc{\caption@style}}% \ifcaption@ruled \dummycaptionstyle{ruled}{\onelinecaptionsfalse\setcaptionmargin{\z@}}% \else \newcaptionstyle{ruled}{% \ifcaptionlabel {\@fs@cfont\captionlabel}\space% \fi\captiontext\par}% \fi \renewcommand*\floatc@ruled{\caption@floatc{ruled}}% \renewcommand*\caption@of[2]{% \def\@captype{#2}% \@ifundefined{fst@#2}{}{% \@nameuse{fst@#2}% \@ifundefined{@float@setevery}{}{\@float@setevery{#2}}% \let\caption@fs@capt\@fs@capt \let\@fs@capt\caption@of@float}% #1}% \newcommand\caption@of@float[2]{\egroup \vskip\abovecaptionskip \normalsize\caption@fs@capt{#1}{#2}% \vskip\belowcaptionskip \bgroup}% }{} \caption@ifpackage{longtable}{% \dummycaptionstyle{longtable}{}% \renewcommand\LT@makecaption[3]{% \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\hsize{% \ifignoreLTcapwidth \else \setcaptionwidth\LTcapwidth \fi \captionlinewidth\hsize \realcaptionwidth\hsize \captionlabelfalse#1\captionlabeltrue \def\captionlabel{#2}% \def\captiontext{#3}% \usecaptionstyle{longtable}% \endgraf\vskip\baselineskip}% \hss}}}% }{} \newcommand*\setsubcapstyle{% \ifsubcaphang \ifsubcapcenter \subcapstyle{hang+center}% \else\ifsubcapcenterlast \subcapstyle{hang+centerlast}% \else\ifsubcapraggedright \subcapstyle{hang+flushleft}% \else \subcapstyle{hang}% \fi\fi\fi \else\ifsubcapcenter \subcapstyle{center}% \else\ifsubcapcenterlast \subcapstyle{centerlast}% \else\ifsubcapraggedright \subcapstyle{flushleft}% \else \subcapstyle{normal}% \fi\fi\fi\fi} \AtBeginDocument{% \@ifundefined{subcapraggedrightfalse}{% \newif\ifsubcapraggedright}{}} \newcommand\caption@makesubcaption[2]{% \renewcommand*\captionfont{\subcapsize\subcapfont}% \renewcommand*\captionlabelfont{\normalfont\subcapsize\subcaplabelfont}% \let\captionlabeldelim\subcaplabeldelim \let\captionlabelsep\subcaplabelsep \ifsubfigcapwidth \setcaptionwidth\subfigcapwidth \else \setcaptionmargin\subfigcapmargin \fi \setlength\captionmargin\subfigcapmargin \setlength\captionwidth\subfigcapwidth \captionindent\subcapindent \ifsubcapnooneline \onelinecaptionsfalse \else \onelinecaptionstrue \fi \hbox to\@tempdima{% \caption@subfig@hss\parbox[t]\@tempdima{% \captionlinewidth\@tempdima \realcaptionwidth\@tempdima \captionlabeltrue \def\captionlabel{#1}% \def\captiontext{\ignorespaces #2}% \usecaptionstyle\caption@substyle}% \caption@subfig@hss}} \caption@ifpackage{subfigure}{% \ifx\subcapfont\@undefined \PackageInfo{caption2}{subfigure package v2.0 detected}% \let\subcapfont\@empty \newcommand*\subfigcapwidth{\z@}% \newcommand*\setsubcapmargin{% \subfigcapwidthfalse \renewcommand*\subfigcapmargin}% \newcommand*\setsubcapwidth{% \subfigcapwidthtrue \renewcommand*\subfigcapwidth}% \newcommand*\subcaplabelsep{\space}% \let\caption@subfig@hss\hfil \else \PackageInfo{caption2}{subfigure package v2.1 (or newer) detected}% \newdimen\subfigcapwidth \newcommand*\setsubcapmargin{% \subfigcapwidthfalse \setlength\subfigcapmargin}% \newcommand*\setsubcapwidth{% \subfigcapwidthtrue \setlength\subfigcapwidth}% \newcommand*\subcaplabelsep{\hskip\subfiglabelskip}% \let\caption@subfig@hss\hss \fi \newif\ifsubfigcapwidth \newdimen\subcapindent \newcommand*\subcaplabeldelim{}% \newcommand*\subcapstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Undefined caption style `#1'}% \else \def\caption@substyle{#1}% \fi}% \setsubcapstyle \renewcommand*\@thesubfigure{\thesubfigure}% \renewcommand*\@thesubtable{\thesubtable}% \let\@makesubfigurecaption\caption@makesubcaption \let\@makesubtablecaption\caption@makesubcaption }{% \let\setsubcapstyle\@undefined \let\caption@makesubcaption\@undefined } \endinput %% %% End of file `caption2.sty'.