You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
452 lines
16 KiB
452 lines
16 KiB
%%
|
|
%% This is file `caption2.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% caption2.dtx (with options: `package')
|
|
%%
|
|
%% Copyright (C) 1994-2020 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, caption2.dtx, caption3.dtx,
|
|
%% bicaption.dtx, ltcaption.dtx, subcaption.dtx, totalcount.dtx,
|
|
%% the derived files
|
|
%% caption.sty, caption2.sty, caption3.sty,
|
|
%% bicaption.sty, ltcaption.sty, subcaption.sty, totalcount.sty,
|
|
%% and the user manuals
|
|
%% caption-deu.tex, caption-eng.tex, caption-rus.tex.
|
|
%%
|
|
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
|
|
\ProvidesPackage{caption2}[2020/01/02 v2.2e Customising captions (AR)]
|
|
\PackageWarning{caption2}{%
|
|
****************************************************\MessageBreak
|
|
THIS PACKAGE IS OBSOLETE:\MessageBreak
|
|
This package attempts to provide an `caption2'\MessageBreak
|
|
package v2.0/2.1 author environment so that OLD\MessageBreak
|
|
documents can be successfully processed. It should\MessageBreak
|
|
NOT be used for NEW documents! New documents should\MessageBreak
|
|
use the regular `caption' package v3.x instead.\MessageBreak
|
|
****************************************************\@gobbletwo}%
|
|
\RequirePackage{caption3}[2019/12/31] % should be used with v1.8f or newer
|
|
\let\captionsetup\@undefined
|
|
\let\clearcaptionsetup\@undefined
|
|
\let\showcaptionsetup\@undefined
|
|
\let\DeclareCaptionType\@undefined
|
|
\let\DeclareCaptionSubType\@undefined
|
|
\@ifpackageloaded{caption}{%
|
|
\PackageError{caption2}{%
|
|
You can't use both, the (current) caption *and*\MessageBreak
|
|
the (obsolete) caption2 package}\caption@eh
|
|
\endinput
|
|
}{}
|
|
\newcommand*\captionlabeldelim{}
|
|
\newcommand*\captionlabelsep{}
|
|
\newcommand*\ifcaptionwidth{\ifdim\captionwidth>\z@}
|
|
\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
|
|
\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
|
|
\PackageError{caption2}{Caption style `#1' already defined}{\caption@eh}%
|
|
\expandafter\@gobbletwo
|
|
\fi
|
|
{#1}}
|
|
\newcommand*\renewcaptionstyle[1]{%
|
|
\expandafter\ifx\csname caption@@#1\endcsname\relax
|
|
\PackageError{caption2}{Caption style `#1' undefined}{\caption@eh}%
|
|
\expandafter\@gobbletwo
|
|
\else
|
|
\expandafter\defcaptionstyle
|
|
\fi
|
|
{#1}}
|
|
\newcommand*\dummycaptionstyle[2]{%
|
|
\defcaptionstyle{#1}{%
|
|
\expandafter\ifx\csname caption@@\caption@style\expandafter\endcsname%
|
|
\csname caption@@#1\endcsname
|
|
\PackageError{caption2}{You can't use the caption style `#1' directy}{%
|
|
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\caption@eh}%
|
|
\else
|
|
#2\usecaptionstyle\caption@style
|
|
\fi}}
|
|
\newcommand*\captionstyle[1]{%
|
|
\expandafter\ifx\csname caption@@#1\endcsname\relax
|
|
\PackageError{caption2}{Undefined caption style `#1'}{\caption@eh}%
|
|
\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}}
|
|
\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}
|
|
\DeclareOption{debug}{\caption@setup{debug}}
|
|
\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}
|
|
\caption@ifundefined\abovecaptionskip{%
|
|
\newlength\abovecaptionskip\setlength\abovecaptionskip{10\p@}}{}
|
|
\caption@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]{%
|
|
\caption@ifundefined\captiontext{%
|
|
\PackageError{caption2}{You can't use \protect#1
|
|
in normal text}{The usage of \protect#1 is only
|
|
allowed inside code declared with\MessageBreak \protect\defcaptionstyle,
|
|
\protect\newcaptionstyle \space or \protect\renewcaptionstyle.
|
|
\space\caption@eh}
|
|
}{%
|
|
\@ifundefined{caption@@#1}%
|
|
{\PackageError{caption2}{Caption style `#1' undefined}{\caption@eh}}%
|
|
{\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]{%
|
|
\if1\@nameuse{caption@pkt@#1}%
|
|
\@ifundefined{#2}%
|
|
{\let\next\AtBeginDocument}%
|
|
{\let\next\@firstofone}%
|
|
\else\ifcaption@twozero
|
|
\@ifundefined{#2}%
|
|
{#3\let\next\@gobble}%
|
|
{\let\next\@firstofone}%
|
|
\else
|
|
#3\let\next\@gobble
|
|
\fi\fi
|
|
\expandafter\let\csname caption@pkt@#1\endcsname\undefined
|
|
\caption@ifdebug{%
|
|
\ifx\next\@gobble\PackageInfo{caption2}{#1 => gobble}%
|
|
\else\ifx\next\@firstofone\PackageInfo{caption2}{#1 => firstofone}%
|
|
\else\ifx\next\AtBeginDocument\PackageInfo{caption2}{#1 => AtBeginDocument}%
|
|
\fi\fi\fi}{}%
|
|
\next}
|
|
\caption@ifpackage{float}{floatc@plain}{}{%
|
|
\ifx\floatc@plain\relax
|
|
\PackageWarning{caption2}{%
|
|
Option `float' was set but there is no float package loaded}
|
|
\else
|
|
\PackageInfo{caption2}{float package v1.2 (or newer) detected}
|
|
\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}%
|
|
\caption@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}%
|
|
\fi}
|
|
\caption@ifpackage{longtable}{LT@makecaption}{}{%
|
|
\ifx\LT@makecaption\relax
|
|
\PackageWarning{caption2}{%
|
|
Option `longtable' was set but there is no longtable package loaded}
|
|
\else
|
|
\PackageInfo{caption2}{longtable package v3.15 (or newer) detected}
|
|
\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}}}
|
|
\fi}
|
|
\newcommand*\setsubcapstyle{%
|
|
\caption@ifundefined\subcapraggedrightfalse{%
|
|
\newif\ifsubcapraggedright}{}%
|
|
\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}
|
|
\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}{@makesubfigurecaption}{%
|
|
\let\setsubcapstyle\undefined
|
|
\let\caption@makesubcaption\undefined}{%
|
|
\ifx\@makesubfigurecaption\relax
|
|
\PackageWarning{caption2}{%
|
|
Option `subfigure' was set but there is no subfigure package loaded}
|
|
\let\setsubcapstyle\undefined
|
|
\let\caption@makesubcaption\undefined
|
|
\else
|
|
\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
|
|
\PackageError{caption2}{Undefined caption style `#1'}{\caption@eh}%
|
|
\else
|
|
\def\caption@substyle{#1}%
|
|
\fi}
|
|
\setsubcapstyle
|
|
\renewcommand*\@thesubfigure{\thesubfigure}
|
|
\renewcommand*\@thesubtable{\thesubtable}
|
|
\let\@makesubfigurecaption\caption@makesubcaption
|
|
\let\@makesubtablecaption\caption@makesubcaption
|
|
\fi}
|
|
\let\caption@ifpackage\undefined
|
|
\endinput
|
|
%%
|
|
%% End of file `caption2.sty'.
|
|
|