% \iffalse meta-comment % % This is file `caption2.dtx'. % % Copyright (C) 1994-2023 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) % % -------------------------------------------------------------------------- % % 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. % % \fi % % \CheckSum{818} % % \iffalse %<*driver> \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesFile{caption2.drv}[2023/07/10 v2.2 The (obsolete) caption2 package] %\errorcontextlines=3 % \documentclass{captiondoc} \hypersetup{pdfkeywords={LaTeX, package, caption2}} % \usepackage{caption2}[2008/07/01] % %<+driver>\OnlyDescription % \begin{document} \DocInput{caption2.dtx} \end{document} % % \fi % % \def\thispackage{the \pkg{caption2} package} % \def\Thispackage{The \pkg{caption2} package} % % \GetFileInfo{caption2.drv} % \let\docdate\filedate % \let\docversion\fileversion % \GetFileInfo{caption2.sty} % % \title{The (obsolete) \texorpdfstring{\pkg{caption2} package\thanks{%^^A % This package has version number \docversion.}}%^^A % {caption2 package}} % \author{Axel Sommerfeldt\\ % \url{https://gitlab.com/axelsommerfeldt/caption}} % \date{\docdate} % \maketitle % % \changes{v2.0}{1995/10/09}{New experimental version: Many new commands and features} % \changes{v2.0}{1995/10/09}{Support of the longtable package added} % \changes{v2.1}{2002/02/26}{Adapted to version 2.1 of the subfigure package} % \changes{v2.1a}{2003/11/12}{Some minor bug fixes and improved compatibility to v2.0} % \changes{v2.1b}{2004/04/16}{Some minor bug fixes and improved compatibility to v2.0} % \changes{v2.1c}{2004/05/10}{Some minor bug fixes and improved compatibility to v2.0} % \changes{v2.1d}{2005/10/03}{Some superfluous brackets removed; warning added} % \changes{v2.2}{2007/04/06}{Uses the caption3 kernel now} % % \providecommand\LaTeXcomp{The \LaTeX{} Companion} % % \section*{THIS PACKAGE IS OBSOLETE!} % % The \pkg{caption2} package used to be an experimental side-version of % the regular \pkg{caption} package. It was made public as beta test version % without documentation in 1995 because of the strong demand for new features and % adaptations to other packages like the \pkg{longtable} and % \pkg{subfigure} one. % % But within the next years I found no time to reintegrate some of the % well-tried features into the regular \pkg{caption} package. So I % decided to release a version $2.1$ of the \pkg{caption2} package in 2002 % instead, which included some minor bug fixes and adaptations to the new % version $2.1$ of the \pkg{subfigure} package. Furthermore I started % to write a documentation for this package, but unfortunately did not get % very far with this\ldots % % In 2003 I finally found some (more) time, so a new regular release $3.0$ % of the \pkg{caption} package could be build in cooperation with % Frank Mittelbach and Steven Cochran. % It was released in December 2003 and superseded the neglected % \pkg{caption2} package. % % {\small (In parallel, Steven Cochran released the \pkg{subfig} package which % superseded the \pkg{subfigure} package.)} % % So please don't use this package for new documents. It's old, it's obsolete % and it starts to begin smell bad! % Please ignore all hints in books or other documents which try to tell you % that the \pkg{caption2} package should be used instead of the % \pkg{caption} package -- these hints are outdated since December 2003. % % \vfill % \bigskip % \pagebreak[4] % % \section*{How to migrate to the regular \pkg{caption} package?} % % Usually replacing \pkg{caption2} by \pkg{caption} is sufficient % because the \pkg{caption} package emulates most of the options and % commands offered by the \pkg{caption2} package. % If you get some errors or wired results afterwards, please take a closer % look at the \pkg{caption} package documentation which will hopefully % help you clearing these problems. You will also find a section called % `Compatibility to older versions' there which should help you with the % migration process. % If all this should fail you can write me an e-mail asking for help. % % \section*{What will happen to this package?} % % The \pkg{caption2} package is still some kind of supported, that means % it will be part of future releases of the \pkg{caption} package bundle, % and bugs will still be fixed so existing documents using this package will % still compile. % But it will \emph{not} be enhanced in the future. % % This means migrating to the actual \pkg{caption} package should not be % necessary for old documents -- they should still compile fine as they are. % If not, please don't hesitate to write me an e-mail to % \href{mailto:axel.sommerfeldt@f-m.fm}{\texttt{axel.sommerfeldt@f-m.fm}} % asking for maintainance. % % \StopEventually{} % % \DoNotIndex{\\,\_,\ ,\@@par} % \DoNotIndex{\@bsphack} % \DoNotIndex{\@car,\@cdr,\@classoptionslist,\@cons,\@currext,\@currname} % \DoNotIndex{\@ehc,\@ehd,\@empty,\@esphack,\@expandtwoargs} % \DoNotIndex{\@for,\@firstofone,\@firstoftwo} % \DoNotIndex{\@gobble,\@gobblefour,\@gobbletwo,\@hangfrom} % \DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined,\@latex@error} % \DoNotIndex{\@namedef,\@nameuse} % \DoNotIndex{\@onlypreamble,\@parboxrestore,\@plus,\@ptionlist} % \DoNotIndex{\@removeelement,\@restorepar,\@secondoftwo,\@setpar} % \DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempb,\@tempc} % \DoNotIndex{\@undefined,\@unprocessedoptions,\@unusedoptionlist} % \DoNotIndex{\p@,\z@} % \DoNotIndex{\active,\addtocounter,\addtolength,\advance} % \DoNotIndex{\baselineskip,\begin,\begingroup,\bfseries,\bgroup,\box} % \DoNotIndex{\catcode,\centering,\changes,\csname,\def,\divide,\do,\downarrow} % \DoNotIndex{\edef,\egroup,\else,\empty,\end,\endcsname,\endgraf,\endgroup,\expandafter} % \DoNotIndex{\fi,\footnotesize,\global} % \DoNotIndex{\hangindent,\hbox,\hfil,\hsize,\hskip,\hspace,\hss} % \DoNotIndex{\if,\ifcase,\ifdim,\ifnum,\ifodd,\ifvoid,\ifvmode} % \DoNotIndex{\ifx,\ignorespaces,\itshape} % \DoNotIndex{\kernel@ifnextchar} % \DoNotIndex{\Large,\large,\leavevmode,\leftmargini,\leftskip,\let,\linewidth} % \DoNotIndex{\llap,\long,\m@ne,\margin,\mdseries,\message} % \DoNotIndex{\newcommand,\newdimen,\newlength,\newline,\newif,\newsavebox} % \DoNotIndex{\next,\nobreakspace,\noexpand,\noindent,\numberline} % \DoNotIndex{\normalsize,\or,\par,\parbox,\parfillskip} % \DoNotIndex{\parindent,\parskip,\prevdepth,\protect,\protected@edef,\providecommand} % \DoNotIndex{\quad} % \DoNotIndex{\raggedleft,\raggedright,\relax,\renewcommand,\RequirePackage} % \DoNotIndex{\rightskip,\rmfamily} % \DoNotIndex{\sbox,\scriptsize,\scshape,\setbox,\setlength,\sffamily,\slshape} % \DoNotIndex{\small,\string,\space,\strut} % \DoNotIndex{\textheight,\the,\toks@,\typeout,\ttfamily} % \DoNotIndex{\undefined,\unvbox,\uparrow,\upshape,\usebox,\usepackage} % \DoNotIndex{\vbox,\vsize,\vskip,\wd,\width,\z@skip} % \DoNotIndex{\AtBeginDocument,\AtEndOfPackage,\CurrentOption,\DeclareOption} % \DoNotIndex{\ExecuteOptions,\GenericWarning,\IfFileExists,\InputIfFileExists} % \DoNotIndex{\NeedsTeXFormat,\MessageBreak} % \DoNotIndex{\PackageError,\PackageInfo,\PackageWarning,\PackageWarningNoLine} % \DoNotIndex{\ProcessOptions,\ProvidesPackage} % % \clearpage % % \section{The Implementation} % \iffalse %<*package> % \fi % % \subsection{Identificaton} % % We need at least \LaTeX2e\ version 1994/12/01. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/12/01] % \end{macrocode} % % Bypass the release declarations in case the \LaTeX\ kernel doesn’t know how to deal with them % (as suggested by \url{https://www.latex-project.org/publications/2018-FMi-TUB-tb122mitt-version-rollback.pdf}). % \begin{macrocode} \providecommand\DeclareRelease[3]{} \providecommand\DeclareCurrentRelease[2]{} % \end{macrocode} % % Declare all supported releases. % \begin{macrocode} \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 % \end{macrocode} % % Identify the current version of the package. % \begin{macrocode} \ProvidesPackage{caption2}[2021/01/20 v2.2i Customising captions (AR)] %\PackageWarning{caption2}{THIS PACKAGE IS OBSOLETE, PLEASE USE caption INSTEAD} % \end{macrocode} % % \subsection{Loading the caption3 kernel} % % \begin{macrocode} \RequirePackage{caption3}[2007/03/04] % \end{macrocode} % % \begin{macro}{\captiontwo@Error} % \changes{v2.2f}{2020/09/28}{This macro added} % \changes{v2.2g}{2020/12/25}{Fallback definition of \cs{caption@@eh} added} % |\captiontwo@Error|\marg{message}\\ % issues an error message (with code line indication). % \begin{macrocode} \newcommand*\captiontwo@Error[2][]{% \PackageError{caption2}{#2}{#1\caption@@eh{caption2}}} % \end{macrocode} % \begin{macrocode} \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} % \end{macrocode} % \end{macro} % % \subsection{Check against the regular caption package} % \changes{v2.2}{2007/04/06}{Check against regular \pkg{caption} package added} % \changes{v2.2a}{2007/04/11}{Bugfix: Usage of \cs{caption@error} replaced by \cs{PackageError}} % % \begin{macrocode} \@ifpackageloaded{caption}{% \captiontwo@Error{% You can't use both, the (current) caption *and*\MessageBreak the (obsolete) caption2 package}% \endinput }{} % \end{macrocode} % % \subsection{Preliminary declarations} % % \begin{macro}{\captionlabeldelim} % \begin{macro}{\captionlabelsep} % \cs{captionlabeldelim} \& \cs{captionlabelsep} will hold the iterim % space between caption label and text. % (\cs{captionlabeldelim} will be typeset within \cs{captionlabelfont}, % \cs{captionlabelsep} not.) % \begin{macrocode} \newcommand*\captionlabeldelim{} \newcommand*\captionlabelsep{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\captionwidth} % \changes{v2.2h}{2021/01/19}{Re-added since the \pkg{caption3} kernel uses \cs{caption@width} now} % \begin{macrocode} \@ifundefined{captionwidth} {\let\captionwidth\caption@width} {} % \end{macrocode} % \end{macro} % % \begin{macro}{\ifcaptionwidth} % \changes{v2.2}{2007/04/06}{New implementation, based on \cs{captionwidth}} % Either \cs{captionmargin} (with specifies an extra margin) or \cs{captionwidth} % (with specifies an explicit width) can be set, therefore we need the flag \cs{ifcaptionwidth} % to determine with parameter we should pay attention to. % \begin{macrocode} \newcommand*\ifcaptionwidth{\ifdim\captionwidth>\z@} % \end{macrocode} % \end{macro} % % \begin{macro}{\captionindent} % \changes{v2.2b}{2007/08/12}{Re-added since the \pkg{caption3} kernel uses \cs{caption@indent} now} % \changes{v2.2g}{2020/12/25}{Will only be defined if it is not defined yet} % \cs{captionindent} will be used in caption style \texttt{indent} and specifies the indention % after the first line. (In \pkg{caption3} \version{1.1} \cs{captionindent} was renamed to % \cs{caption@indent} to improve compatibility to the AMS \& SMF document classes.) % \begin{macrocode} \@ifundefined{captionindent} {\let\captionindent\caption@indent} {} % \end{macrocode} % \end{macro} % % \begin{macro}{\ifcaptionlabel} % \changes{v2.1}{2002/02/20}{New switch \cs{ifcaptionlabel}} % If \cs{ifcaptionlabel} is not set the caption label should be suppressed; % we need this flag to support the \cs{caption*} command. % \changes{v2.2}{2007/04/06}{New implementation, based on \cs{ifcaption@star}} % \begin{macrocode} \def\ifcaptionlabel{% \ifcaption@star \@tempswafalse \else \@tempswatrue \fi \if@tempswa} \def\captionlabeltrue{\caption@starfalse} \def\captionlabelfalse{\caption@startrue} % \end{macrocode} % \end{macro} % % \begin{macro}{\ifonelinecaptions} % If \cs{ifonelinecaptions} is set we support the \LaTeX\ base style 'one line captions', % that means the caption will be typeset centered if it fits to one line. % \changes{v2.2}{2007/04/06}{New definition, based on \cs{caption@ifslc}} % \begin{macrocode} \def\ifonelinecaptions{% \caption@ifslc{\@tempswatrue}{\@tempswafalse}% \if@tempswa} \def\onelinecaptionstrue{\caption@setbool{slc}{1}} \def\onelinecaptionsfalse{\caption@setbool{slc}{0}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ifignoreLTcapwidth} % \changes{v2.1}{2002/02/20}{New switch \cs{ifignoreLTcapwidth}} % If \cs{ifignoreLTcapwidth} is set we ignore the \cs{LTcapwidth} of \textsf{longtable}. % \begin{macrocode} \newif\ifignoreLTcapwidth % \end{macrocode} % \end{macro} % % \begin{macro}{\setcaptionmargin} % \changes{v2.2h}{2021/01/19}{Re-added since the \pkg{caption3} kernel does not define it anymore} % \begin{macro}{\setcaptionwidth} % \changes{v2.2h}{2021/01/19}{Re-added since the \pkg{caption3} kernel does not define it anymore} % User-friendly commands to set the caption margin or width. % Note that they additionally set the \cs{ifcaptionwidth} flag. % \begin{macrocode} \providecommand*\setcaptionmargin{% \setlength\captionwidth\z@ \setlength\captionmargin} \providecommand*\setcaptionwidth{% \setlength\captionmargin\z@ \setlength\captionwidth} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\normalcaptionparams} % \cs{normalcaptionparams} resets all caption related parameters to it's normal default values. % \cs{captionfont} will be set to \cs{captionsize} so setting the obsolete \cs{captionsize} will still work. % Same story with \cs{captiondelim} and the obsolete \cs{captionlabeldelim}. % \changes{v2.1}{2002/01/29}{New command \cs{normalcaptionparams}} % \begin{macrocode} \newcommand*\normalcaptionparams{% \let\captionsize\@empty \renewcommand*\captionfont{\captionsize}% \let\captionlabelfont\@empty \renewcommand*\captionlabeldelim{:}% \renewcommand*\captionlabelsep{\space}% \setcaptionmargin\z@ \setlength\captionindent\z@ \onelinecaptionstrue} % \end{macrocode} % \end{macro} % % \begin{macro}{\defcaptionstyle} % \begin{macro}{\newcaptionstyle} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % \begin{macro}{\renewcaptionstyle} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % These macros will define a new caption style. \cs{newcaptionstyle} and \cs{renewcaptionstyle} % will additionally check if the caption style already exists or not. % \begin{macrocode} \newcommand*\defcaptionstyle[1]{% \@namedef{caption@@#1}} % \end{macrocode} % \begin{macrocode} \newcommand*\newcaptionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \expandafter\defcaptionstyle \else \captiontwo@Error{Caption style `#1' already defined}% \expandafter\@gobbletwo \fi {#1}} % \end{macrocode} % \begin{macrocode} \newcommand*\renewcaptionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Caption style `#1' undefined}% \expandafter\@gobbletwo \else \expandafter\defcaptionstyle \fi {#1}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\dummycaptionstyle} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % This macro will also define a new caption style, but a one which is based on the % actual set caption style. Therefore you can't set a caption style made with this % command with \cs{captionstyle} -- we check this to avoid an endless recursion. % \begin{macrocode} \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}} % \end{macrocode} % \end{macro} % % \begin{macro}{\captionstyle} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % \cs{captionstyle} sets the actual caption style. It includes a check if the given caption % style is defined or not. % \begin{macrocode} \newcommand*\captionstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Undefined caption style `#1'}% \else \def\caption@style{#1}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{style `normal'} % \begin{macro}{style `center'} % \begin{macro}{style `centerlast'} % \begin{macro}{style `flushleft'} % \begin{macro}{style `flushright'} % \begin{macro}{style `hang'} % \begin{macro}{style `indent'} % The predefined caption styles `normal', `center', `flushleft', `flushright', `centerlast', % `hang', `hang+X', and `indent'. Because they are quite similar they all are based on the macro % \cs{caption@make}. % \begin{macrocode} \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}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\caption@makecaption} % Our predefined caption styles. \cs{caption@makecaption} takes the style % name as parameter, it does the common stuff and calls a macro % (build out of the style name) to do the uncommon stuff if neccessary. % \changes{v2.1}{2002/02/26}{Renamed from \cs{caption@make} to \cs{caption@makecaption}} % \changes{v2.1b}{2004/04/16}{We offer and use \cs{caption@make}, again} % \changes{v2.1c}{2004/05/10}{Bugfix: Extra \cs{par} added} % \begin{macrocode} \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}} % \end{macrocode} % \end{macro} % % \changes{v2.1}{2002/02/26}{Removed all extra parboxes from caption styles} % \changes{v2.1a}{2003/11/12}{\ldots and put the parbox into \cs{caption@makecaption} instead} % % \begin{macro}{\caption@@@normal} % The `normal' caption style. Just typeset caption (label \& text) as paragraph. % \begin{macrocode} \newcommand*\caption@@@normal{% \caption@label\captiontext} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@center} % The `center' caption style. Typeset the caption centered within a parbox. % \begin{macrocode} \newcommand*\caption@@@center{% \centering\caption@label\captiontext}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@centerlast} % The `centerlast' caption style. % The idea how to do this was taken from Br\"uggemann-Klein\cite{Anne}, % it is also mentioned in Kopka\cite[p227]{Kopka-E}. % \begin{macrocode} % \end{macrocode} % \begin{macrocode} \newcommand*\caption@@@centerlast{% \centerlast\caption@label\captiontext} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@flushleft} % The `flushleft' caption style. Typeset the caption raggedright within a parbox. % \begin{macrocode} \newcommand*\caption@@@flushleft{% \raggedright\caption@label\captiontext}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@flushright} % The `flushright' caption style. Typeset the caption raggedleft within a parbox. % \begin{macrocode} \newcommand*\caption@@@flushright{% \raggedleft\caption@label\captiontext}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@hang} % \begin{macro}{\caption@hangplus} % The `hang' caption style. % This code was taken from \LaTeXcomp\cite[p155]{A-W:GMS94} and modified. % \begin{macrocode} \newcommand*\caption@@@hang{% \sbox\@tempboxa{\caption@label}% \hangindent\wd\@tempboxa\noindent \usebox\@tempboxa\caption@hangplus\captiontext} % \end{macrocode} % \begin{macrocode} \newcommand*\caption@hangplus{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\caption@@@hang@center} % The `hang+flushleft' caption style. % \begin{macrocode} \newcommand*\caption@@@hang@center{% \let\caption@hangplus\centering\caption@@@hang} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@hang@centerlast} % The `hang+flushleft' caption style. % \begin{macrocode} \newcommand*\caption@@@hang@centerlast{% \let\caption@hangplus\centerlast\caption@@@hang} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@hang@flushleft} % The `hang+flushleft' caption style. % \begin{macrocode} \newcommand*\caption@@@hang@flushleft{% \let\caption@hangplus\raggedright\caption@@@hang} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@@@indent} % The `indent' caption style. Is is quite like the `hang' style but the % indention is given as \cs{captionindent}. % \begin{macrocode} \newcommand*\caption@@@indent{% \hangindent\captionindent\noindent \caption@label\captiontext} % \end{macrocode} % \end{macro} % % \subsection{Declaration of options} % % \begin{macro}{normal} % \begin{macro}{center} % \begin{macro}{centerlast,anne} % \begin{macro}{flushleft} % \begin{macro}{flushright} % \begin{macro}{hang,isu} % \begin{macro}{indent} % These options will set the caption style. % (`normal' is the default one.) % % The options `anne' and `isu' are for % backward compatibility only. % \begin{macrocode} \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}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{scriptsize} % \begin{macro}{footnotesize} % \begin{macro}{small} % \begin{macro}{normalsize} % \begin{macro}{large,Large} % These options will set the caption size. We use \cs{g@addto@macro} so more that one % option can be set. % \begin{macrocode} \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} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{up,it,sl,sc} % \begin{macro}{md,bf} % \begin{macro}{rm,sf,tt} % These options will set the caption label. % \begin{macrocode} \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} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{oneline} % \begin{macro}{nooneline} % These options will set the `oneline' flag. % (`oneline' is the default.) % \begin{macrocode} \DeclareOption{oneline}{\onelinecaptionstrue} \DeclareOption{nooneline}{\onelinecaptionsfalse} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\caption@setpackage} % A helper macro, a value of 1 within parameter \#2 will activate the support % of the package given in parameter \#1, a value of 0 will deactivate it. % \begin{macrocode} \newcommand*\caption@setpackage[1]{\@namedef{caption@pkt@#1}} \@onlypreamble\caption@setpackage % \end{macrocode} % \end{macro} % % \begin{macro}{float} % \begin{macro}{longtable} % \begin{macro}{subfigure} % \changes{v2.1}{2002/02/19}{New options for interaction with other packages} % These options will enable or suppress the support of the packages % \textsf{float}, \textsf{longtable}, and \textsf{subfigure}. % \begin{macrocode} \DeclareOption{float}{% \caption@twozerofalse\caption@setpackage{float}{1}} \DeclareOption{longtable}{% \caption@twozerofalse\caption@setpackage{longtable}{1}} \DeclareOption{subfigure}{% \caption@twozerofalse\caption@setpackage{subfigure}{1}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{none} % \begin{macro}{all} % These options will enable or suppress the support of all the above packages. % \begin{macrocode} \DeclareOption{none}{% \caption@twozerofalse \caption@setpackage{float}{0}\caption@setpackage{longtable}{0}% \caption@setpackage{subfigure}{0}} \DeclareOption{all}{\ExecuteOptions{float,longtable,subfigure}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{ruled} % \begin{macro}{boxed} % The option `ruled' introduced in \textsf{caption} v1.2 is obsolete now, but % we will still support it. The option `boxed' was introduced in version 2.0 % and is obsolete now, too. % \begin{macrocode} \newif\ifcaption@ruled \DeclareOption{ruled}{\caption@ruledtrue} \DeclareOption{boxed}{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{ignoreLTcapwidth} % This option will make the caption code ignore the setting of \cs{LTcapwidth} % and use the setting of \cs{setcaptionmargin} or \cs{setcaptionwidth} instead. % \begin{macrocode} \DeclareOption{ignoreLTcapwidth}{\ignoreLTcapwidthtrue} % \end{macrocode} % \end{macro} % % \subsection{Execution of options} % % Now we set the default values and start processing the options. % (If \cs{caption@twozero} is set to true (default) we will emulate the package % load algorithm of \textsf{caption} v2.0: If the package is already loaded % patch it, otherwise do nothing.) % \changes{v2.1}{2002/02/19}{\cs{ProcessOptions} changed to \cs{ProcessOptions*}} % \begin{macrocode} \newif\ifcaption@twozero \normalcaptionparams \ExecuteOptions{none,normal} \caption@twozerotrue \ProcessOptions* \ifcaption@twozero \PackageInfo{caption2}{Running in caption2 v2.0 compatibility mode} \fi % \end{macrocode} % % \subsection{More declarations} % % \begin{macro}{\captionof} % \begin{macro}{\captionof*} % \cs{captionof} or \cs{captionof*} will just set \cs{@captype} and do the normal % \cs{caption} or \cs{caption*}, so we can also typeset captions outside floating % environments. % \changes{v2.1}{2002/02/19}{New commands \cs{captionof} and \cs{captionof*}} % \begin{macrocode} \def\captionof{\@ifstar{\caption@of{\caption*}}{\caption@of\caption}} \newcommand*\caption@of[2]{\def\@captype{#2}#1} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\abovecaptionskip} % \begin{macro}{\belowcaptionskip} % Not all document classes define \cs{abovecaptionskip} and \cs{belowcaptionskip} % (like \textsf{ucthesis}), so we do it here if not already done. % \changes{v2.1}{2002/02/19}{\cs{abovecaptionskip} and \cs{belowcaptionskip} will be defined if neccessary} % \begin{macrocode} \@ifundefined{abovecaptionskip}{% \newlength\abovecaptionskip\setlength\abovecaptionskip{10\p@}}{} \@ifundefined{belowcaptionskip}{% \newlength\belowcaptionskip\setlength\belowcaptionskip{0\p@}}{} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\captionlinewidth} % \changes{v2.1}{2002/02/26}{Renamed from \cs{realcaptionwidth} to \cs{captionlinewidth}} % \changes{v2.1a}{2003/11/12}{We offer \cs{realcaptionwidth}, again} % \begin{macro}{\captionlabel} % \begin{macro}{\captiontext} % These values are only set and used within the caption code itself. % \cs{captionlinewidth} will be set to the given vertical space for the caption, % normally this is \cs{linewidth}. (This value was called \cs{realcaptionwidth} % within \thispackage\ \version{2.0}, so we will offer this, too.) % % \cs{captionlabel} and \cs{captiontext} will be set to the caption label % or the caption text. % (Because \cs{captionlabel} and \cs{captiontext} will be locally defined with % \cs{def} we do not need to define them here.) % \begin{macrocode} \newdimen\captionlinewidth \newdimen\realcaptionwidth % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\usecaptionmargin} % A helper macro for caption style authors: % It calculates \cs{leftskip} and \cs{rightskip} out of % \cs{captionlinewidth} and \cs{captionmargin} or \cs{captionwidth}. % Also \cs{captionlinewidth} will be corrected to the appropriate value. % \begin{macrocode} \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} % \end{macrocode} % \end{macro} % % \begin{macro}{\onelinecaption} % This macro definition helps setting captions the \LaTeX\ base classes way: % If \cs{ifonelinecaptions} is set and the 1st argument fits within \cs{captionlinewidth}, % we typeset it centered -- otherway we typeset the 2nd argument. % (We use the savebox \cs{@tempboxa} as helper for this.) % \begin{macrocode} \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} % \end{macrocode} % \end{macro} % % \begin{macro}{\usecaptionstyle} % \changes{v2.1b}{2004/04/16}{Missing percent added (and extra space removed)} % \changes{v2.2}{2007/04/06}{\cs{let}\cs{caption@make}\cs{caption@makecaption} added} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % First we check if we are inside a caption -- if \cs{captiontext} is undefined we are not. % If we are we call the appropriate caption definition. % \begin{macrocode} \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}}% }} % \end{macrocode} % \end{macro} % % \begin{macro}{\@makecaption} % This is the heart of the \thispackage{} -- the redefinition of the % core caption code. It was taken from the \LaTeXe\ standard classes and modified. % It's very easy -- apart from using \cs{abovecaptionskip} and \cs{belowcaptionskip} % we just set \cs{captionlinewidth}, \cs{captionlabel} and \cs{captiontext} % to its appropriate values and using the code of the actual caption style via % \cs{usecaptionstyle}. % \begin{macrocode} \renewcommand\@makecaption[2]{% \vskip\abovecaptionskip \captionlinewidth\hsize \realcaptionwidth\hsize \def\captionlabel{#1}% \def\captiontext{#2}% \usecaptionstyle\caption@style \vskip\belowcaptionskip} % \end{macrocode} % \end{macro} % % \subsection{Support of other packages} % % \begin{macro}{\caption@ifpackage} % This macro will execute the code needed to support the package named within % argument \#1. % The parameter \#2 contains code which will be executed if the package is loaded. % The parameter \#3 contains code which will be executed if no support is % required -- this is for cleanup purposes. % \changes{v2.1c}{2004/05/09}{Compatibility warning removed} % \changes{v2.2i}{2021/01/20}{Interface and code revised (uses \cs{@ifpackageloaded} now)} % \begin{macrocode} \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}% % \end{macrocode} % \begin{macrocode} \next{% \@ifpackageloaded{#1}{% \PackageInfo{caption2}{#1 package is loaded}% #2}{% \PackageInfo{caption2}{#1 package is not loaded}% #3}}} \@onlypreamble\caption@ifpackage % \end{macrocode} % \end{macro} % % \subsubsection{Support of the float package} % % \begin{macrocode} \caption@ifpackage{float}{% % \end{macrocode} % % \begin{macro}{\caption@floatc} % First we define a helper macro to typeset the caption via \cs{usecaptionstyle}, % the 1st parameter is the caption style name, % the 2nd and 3rd are the caption label and text. % % \textsf{caption2} has the goal not to modify the output just by % loading it (without options), therefore we have to be tricky here to % support \cs{@fs@cfont} which is in fact the same as our \cs{captionlabelfont}. % So we test if a \cs{captionlabelfont} has been set by the user -- if not % \cs{@fs@cfont} will be used, otherwise \cs{captionlabelfont}. % % \changes{v2.1b}{2004/03/19}{\cs{realcaptionwidth}$=$\cs{hsize} was missing here} % \begin{macrocode} \newcommand\caption@floatc[3]{% \ifx\captionlabelfont\@empty \let\captionlabelfont\@fs@cfont \fi \captionlinewidth\hsize \realcaptionwidth\hsize \def\captionlabel{#2}% \def\captiontext{#3}% \usecaptionstyle{#1}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\floatc@plain} % Now we can redefine the caption code of the \textsf{float} package. % Here we redefine \cs{floatc@plain} to use our caption code, so % \texttt{plain} and \texttt{boxed} float types will use the actual % caption style set by the user. % \begin{macrocode} \renewcommand*\floatc@plain{\caption@floatc{\caption@style}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\floatc@ruled} % The support of the \texttt{ruled} float type is a little % more complex. First we define a caption style `ruled' so the end-user % can change this caption style afterwards. If the (obsolete) option % `ruled' is set, we define it in a \textsf{caption} v1.x compatible way, % otherwise we define it in a \textsf{float} compatible way. % % Then we redefine \cs{floatc@ruled} so the caption style `ruled' will % be used. % \begin{macrocode} \ifcaption@ruled \dummycaptionstyle{ruled}{\onelinecaptionsfalse\setcaptionmargin{\z@}}% \else \newcaptionstyle{ruled}{% \ifcaptionlabel {\@fs@cfont\captionlabel}\space% \fi\captiontext\par}% \fi % \end{macrocode} % \begin{macrocode} \renewcommand*\floatc@ruled{\caption@floatc{ruled}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@of} % Typesetting captions outside floats is not so easy with redefined floats, % because % \begin{itemize} % \item The caption code of the \textsf{float} package needs not only % \cs{@captype} defined, but \cs{@fs@capt} (the command which will typeset the % caption itself) either. % \item The caption is only saved within a \cs{vbox}, so the \textsf{float} % package can typeset the caption later at it's float style specific place % (that means at top or at the bottom of the float). % \end{itemize} % % Here is the new code: First we check if it's a restyled float by checking if % \cs{fst@} is defined. If yes, we use this command (it will define % \cs{@fs@capt}). % Then we execute \cs{@float@setevery}, if it exists (that means we are % dealing with the \textsf{float} package 1.3 or newer here). % Now comes the basic trick: % We redefine the caption typesetting command \cs{@fs@capt}, so it will close % the \cs{vbox}, typeset the caption outside the vbox and finally start the % group again so the original \cs{@fs@capt} is happy with closing the group. % % \begin{macrocode} \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}% % \end{macrocode} % % \begin{macrocode} \newcommand\caption@of@float[2]{\egroup \vskip\abovecaptionskip \normalsize\caption@fs@capt{#1}{#2}% \vskip\belowcaptionskip \bgroup}% % \end{macrocode} % \end{macro} % % \begin{macrocode} }{} % \end{macrocode} % % \subsubsection{Support of the longtable package} % % \begin{macrocode} \caption@ifpackage{longtable}{% % \end{macrocode} % % \begin{macro}{\LT@makecaption} % David Carlisle was so kind to introduce a macro called % \cs{LT@makecaption} in version 3.15 of the \textsf{longtable} % package which typeset the caption and can be easily redefined. % % This is the original definition: % \begin{quote} % |\def\LT@makecaption#1#2#3{%|\\ % | \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%|\\ % | |$\langle$\textit{typeset} |#1{#2: }#3| \textit{as caption}$\rangle$\\ % | \endgraf\vskip\baselineskip}%|\\ % | \hss}}}| % \end{quote} % % So we do here: % First we define a new (dummy) caption style `longtable', % than we redefine \cs{LT@makecaption} so this style will be used. % (Remember: |#1| is |\@gobble| in star form of |\caption|, % and |\@firstofone| otherwise.) % \begin{macrocode} \dummycaptionstyle{longtable}{}% % \end{macrocode} % \begin{macrocode} \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}}}% % \end{macrocode} % \end{macro} % % \begin{macrocode} }{} % \end{macrocode} % % \subsubsection{Support of the subfigure package} % % Some of the following code will not work within \cs{if}, % because of the (yet) undefined \cs{if}\textit{xxx}s. So we simply define % the critical code within the helper commands \cs{setsubcapstyle} % and \cs{caption@makesubcaption} already here. % % \begin{macro}{\setsubcapstyle} % This sets the subcaptionstyle to a appropriate value. % \begin{macrocode} \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} % \end{macrocode} % If \cs{ifsubcapraggedright} is undefined (it was introduced % in \version{2.1} of the \textsf{subfigure} package) we define it first. % \begin{macrocode} \AtBeginDocument{% \@ifundefined{subcapraggedrightfalse}{% \newif\ifsubcapraggedright}{}} % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@makesubcaption} % \changes{v2.2c}{2008/07/01}{Bugfix: Usage of \cs{ifcaptionwidth} removed} % This will typeset the subcaption. % We just set all our \cs{caption}\textit{xxx} values to % the values of \cs{subcap}\textit{xxx} and typeset the % caption like \textsf{subfigure} within a \cs{hbox}, % but with the help of \cs{usecaptionstyle}. % % But this is not as easy as it seems. We typeset the caption like this: % \begin{quote} % |\captionfont|\\ % | {\capionlabelfont\captionlabel\captionlabeldelim}%|\\ % |\captionlabelsep\captiontext| % \end{quote} % Within \textsf{subfigure} 2.0 the caption will be set quite similar to: % \begin{quote} % |\subcapsize|\\ % | {\subcaplabelfont\captionlabel}%|\\ % |\space\captiontext| % \end{quote} % But within \textsf{subfigure} 2.1 this has changed to: % \begin{quote} % |\subcapsize|\\ % | {\subcaplabelfont\captionlabel}%|\\ % |\hskip\subfiglabelskip|\\ % | {\subcapfont\captiontext}}| % \end{quote} % So we have to be tricky here: We set \cs{captionlabelfont} to \cs{normalfont} plus % \cs{subcapsize} \& \cs{subcaplabelfont}, so the font setting in \cs{captionfont} % will not affect the caption label in subfigure captions. % % Note that \cs{hfil} has changed to \cs{hss} from subfigure 2.0 to 2.1, % so we use \cs{caption@subfig@hss} instead. (We will define this later on.) % \begin{macrocode} \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}} % \end{macrocode} % \end{macro} % % If the subfigure support is not needed, we throw % the helper macros in the garbage can. % % \begin{macrocode} \caption@ifpackage{subfigure}{% % \end{macrocode} % % Some stuff has changed from version 2.0 to 2.1 of the % \textsf{subfigure} package, so we make a branch here. % If \cs{subcapfont} is undefined we assume v2.0, % otherwise we assume v2.1 or newer. % % \begin{macrocode} \ifx\subcapfont\@undefined \PackageInfo{caption2}{subfigure package v2.0 detected}% % \end{macrocode} % % \begin{macro}{\subcapfont} % We define \cs{subcapfont} here so we can use it later % in common code for \textsf{subfigure} v2.0 and v2.1 (or newer). % \begin{macrocode} \let\subcapfont\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\subfigcapwidth} % \begin{macro}{\setsubcapmargin} % \begin{macro}{\setsubcapwidth} % Analogous to \cs{captionwidth}, \cs{setcaptionmargin}, and % \cs{setcaptionwidth} we define \cs{subfigcapwidth}, % \cs{setsubcapmargin}, and \cs{setsubcapwidth}. % % Note: \cs{subfigcapmargin} is a command in v2.0 of \textsf{subfigure}. % So we make \cs{subfigcapwidth} a command, too. % \begin{macrocode} \newcommand*\subfigcapwidth{\z@}% \newcommand*\setsubcapmargin{% \subfigcapwidthfalse \renewcommand*\subfigcapmargin}% \newcommand*\setsubcapwidth{% \subfigcapwidthtrue \renewcommand*\subfigcapwidth}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\subcaplabelsep} % Analogous to \cs{captionlabelsep} we define \cs{subcaplabelsep}. % \begin{macrocode} \newcommand*\subcaplabelsep{\space}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@subfig@hss} % This will be uses within the caption code itself. % \begin{macrocode} \let\caption@subfig@hss\hfil % \end{macrocode} % \end{macro} % % \begin{macrocode} \else \PackageInfo{caption2}{subfigure package v2.1 (or newer) detected}% % \end{macrocode} % % \begin{macro}{\subfigcapwidth} % \begin{macro}{\setsubcapmargin} % \begin{macro}{\setsubcapwidth} % Analogous to \cs{captionwidth}, \cs{setcaptionmargin}, and % \cs{setcaptionwidth} we define \cs{subfigcapwidth}, % \cs{setsubcapmargin}, and \cs{setsubcapwidth}. % % Note: \cs{subfigcapmargin} is a length in v2.1 of \textsf{subfigure}. % So we make \cs{subfigcapwidth} a length, too. % \begin{macrocode} \newdimen\subfigcapwidth \newcommand*\setsubcapmargin{% \subfigcapwidthfalse \setlength\subfigcapmargin}% \newcommand*\setsubcapwidth{% \subfigcapwidthtrue \setlength\subfigcapwidth}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\subcaplabelsep} % Analogous to \cs{captionlabelsep} we define \cs{subcaplabelsep}. % \begin{macrocode} \newcommand*\subcaplabelsep{\hskip\subfiglabelskip}% % \end{macrocode} % \end{macro} % % \begin{macro}{\caption@subfig@hss} % This will be uses within the caption code itself. % \begin{macrocode} \let\caption@subfig@hss\hss % \end{macrocode} % % \end{macro} % \begin{macrocode} \fi % \end{macrocode} % % Here starts the common code for \textsf{subfigure} v2.0 and v2.1. % % \begin{macro}{\ifsubfigcapwidth} % \begin{macro}{\subcapindent} % \begin{macro}{\subcaplabeldelim} % Analogous to \cs{ifcaptionwidth}, \cs{captionindent} \& \cs{captionlabeldelim} % we define \cs{ifsubfigcapwidth}, \cs{subcapindent} \& \cs{subcaplabeldelim} % \begin{macrocode} \newif\ifsubfigcapwidth \newdimen\subcapindent \newcommand*\subcaplabeldelim{}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\subcapstyle} % \changes{v2.2f}{2020/09/28}{Uses \cs{captiontwo@Error} instead of \cs{PackageError} now} % Analogous to \cs{captionstyle} we define \cs{subcapstyle} % and set it (via \cs{setsubcapstyle}) to a appropriate value. % \begin{macrocode} \newcommand*\subcapstyle[1]{% \expandafter\ifx\csname caption@@#1\endcsname\relax \captiontwo@Error{Undefined caption style `#1'}% \else \def\caption@substyle{#1}% \fi}% \setsubcapstyle % \end{macrocode} % \end{macro} % % \begin{macro}{\@thesubfigure} % \begin{macro}{\@thesubtable} % The \textsf{subfigure} package makes use of \cs{subcaplabelfont} and % \cs{subfiglabelskip} within its \cs{@thesub}\textit{xxx} macros. % This is totally in contrast to the way the \textsf{caption2} package % handle these settings. So we redefine the \cs{@thesub}\textit{xxx} % to be just the plain label and nothing else. % % \begin{macrocode} \renewcommand*\@thesubfigure{\thesubfigure}% \renewcommand*\@thesubtable{\thesubtable}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@makesubfigurecaption} % \begin{macro}{\@makesubtablecaption} % Now we are ready to redefine \cs{@makesubfigurecaption}. % \begin{macrocode} \let\@makesubfigurecaption\caption@makesubcaption \let\@makesubtablecaption\caption@makesubcaption % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macrocode} }{% \let\setsubcapstyle\@undefined \let\caption@makesubcaption\@undefined } % \end{macrocode} % % \iffalse % % \fi % % \clearpage % \begin{thebibliography}{9} % \bibitem{float} % Anselm Lingnau: % \href{http://www.ctan.org/pkg/float}% % {\emph{An Improved Environment for Floats}}, % 2001/11/08 % % \bibitem{longtable} % David Carlisle: % \href{http://www.ctan.org/pkg/longtable}% % {\emph{The longtable package}}, % 2000/10/22 % % \bibitem{rotating} % Sebastian Rahtz and Leonor Barroca: % \href{http://www.ctan.org/pkg/rotating}% % {\emph{A style option for rotated objects in \LaTeX}},\\ % 1997/09/26 % % \bibitem{subfigure} % Steven D. Cochran: % \href{http://www.ctan.org/pkg/subfigure}% % {\emph{The subfigure package}}, % 2002/02/14 % % \bibitem{A-W:GMS94} % Michel Goossens, Frank Mittelbach and Alexander Samarin: % \newblock \textsl{The {\LaTeX} Companion}, % \newblock Addison-Wesley, Reading, Massachusetts, 1994. % % \bibitem{Anne} % Anne Br\"uggemann-Klein: % \textsl{Einf\"uhrung in die Dokumentverarbeitung}, % B.G. Teubner, Stuttgart, 1989 % % \bibitem{Kopka-E} % Helmut Kopka: % \textsl{\LaTeX -- Erweiterungsm\"oglichkeiten}, % 3. \"uberarbeitete Auf\/lage, Addison-Wesley, Bonn, 1991 % \end{thebibliography} % % \Finale % \endinput