%%
%% 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'.
