% \iffalse meta-comment % % This is file `caption2.dtx'. % % Copyright (C) 1994-2004 Axel Sommerfeldt (caption@sommerfeldt.net) % % -------------------------------------------------------------------------- % % 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, caption.xml, and anleitung.tex and the derived files % caption.sty, caption2.sty, caption3.sty, and manual.tex. % % \fi % \CheckSum{843} % % \iffalse %<*driver> \documentclass{ltxdoc} \setlength\parindent{0pt} \setlength\parskip{\smallskipamount} % \ifx\pdfoutput\undefined\else \ifcase\pdfoutput\else \usepackage{mathptmx,courier} \usepackage[scaled=0.90]{helvet} \fi \fi % \usepackage{caption2}[2004/04/16] % \begin{document} \DocInput{caption2.dtx} \end{document} % % \fi % % \newcommand*{\purerm}[1]{{\upshape\mdseries\rmfamily #1}} % \newcommand*{\puresf}[1]{{\upshape\mdseries\sffamily #1}} % \newcommand*{\purett}[1]{{\upshape\mdseries\ttfamily #1}} % \let\package\puresf\def\thispackage{\package{caption2}} % \let\env\purett \let\opt\purett % % \GetFileInfo{caption2.sty} % \title{The \thispackage\ package\thanks{This package has version number % \fileversion, last revised \filedate.}} % \author{Axel Sommerfeldt\\\texttt{caption@sommerfeldt.net}} % \date{2004/08/17} % \maketitle % % \changes{v2.0}{ 9 Oct 95}{New experimental version: Many new commands and features} % \changes{v2.0}{ 9 Oct 95}{Support of the longtable package added} % \changes{v2.1}{20 Feb 02}{Revised: New commands and options} % \changes{v2.1}{26 Feb 02}{Adapted to version 2.1 of the subfigure package} % \changes{v2.1a}{12 Nov 03}{Some minor bug fixes and improved compatibility to v2.0} % \changes{v2.1b}{16 Apr 04}{Some minor bug fixes and improved compatibility to v2.0} % \changes{v2.1c}{10 May 04}{Some minor bug fixes and improved compatibility to v2.0} % % \providecommand\LaTeXcomp{The \LaTeX{} Companion} % % \section*{This package is obsolete!} % % The \package{caption2} package used to be an experimental side-version of % the regular \package{caption} package and has been superseed by the new % release of the regular \package{caption} package version \mbox{3.0} in % December 2003. % % \package{caption2} is still some kind of supported, that means it will be % part of future releases and bugs will still be fixed, so existing documents % using this package will still compile. But I will \emph{not} answer % questions about this package anymore except questions on migrating to the % regular version of the \package{caption} package. And it will \emph{not} be % adapted or enhanced in the future. % % 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 \package{caption2} package should be used instead of the % \package{caption} package -- these hints are outdated since December 2003. % % \StopEventually{} % % \DoNotIndex{\\,\_,\ ,\@@par} % \DoNotIndex{\@classoptionslist,\@currext,\@currname} % \DoNotIndex{\@ehc,\@ehd,\@empty,\@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{\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} % (not documented anymore) % \iffalse %<*package> % \fi % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{caption2}[2004/05/10 v2.1c Customising captions (AS)] %\PackageWarning{caption2}{THIS PACKAGE IS OBSOLETE, USE caption INSTEAD!} \newcommand*\captionfont{} \newcommand*\captionlabelfont{} \newcommand*\captionlabeldelim{} \newcommand*\captionlabelsep{} \newcommand*\captionsize{} \newdimen\captionmargin \newdimen\captionwidth \newif\ifcaptionwidth \newdimen\captionindent \newif\ifcaptionlabel\captionlabeltrue \newif\ifonelinecaptions \newif\ifignoreLTcapwidth \newcommand*\setcaptionmargin{% \captionwidthfalse \setlength\captionmargin} \newcommand*\setcaptionwidth{% \captionwidthtrue \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*\caption@eh{% If you do not understand this error, please take a closer look\MessageBreak at the documentation of the `caption2' package.\MessageBreak \@ehc} \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@make{\caption@makecaption} \newcommand*\caption@@@normal{% \caption@label\captiontext} \newcommand*\caption@@@center{% \centering\caption@label\captiontext}% \newcommand*\caption@centerlast{% \advance\leftskip by 0pt plus 1fil% \advance\rightskip by 0pt plus -1fil% \parfillskip0pt plus 2fil\relax} \newcommand*\caption@@@centerlast{% \caption@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\caption@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@package[1]{\@namedef{caption@pkt@#1}} \DeclareOption{float}{\caption@twozerofalse\caption@package{float}{1}} \DeclareOption{longtable}{\caption@twozerofalse\caption@package{longtable}{1}} \DeclareOption{subfigure}{\caption@twozerofalse\caption@package{subfigure}{1}} \DeclareOption{none}{\caption@twozerofalse \caption@package{float}{0}\caption@package{longtable}{0}% \caption@package{subfigure}{0}} \DeclareOption{all}{\ExecuteOptions{float,longtable,subfigure}} \newif\ifcaption@ruled \DeclareOption{ruled}{\caption@ruledtrue} \DeclareOption{boxed}{} \DeclareOption{ignoreLTcapwidth}{\ignoreLTcapwidthtrue} \DeclareOption{debug}{\caption@debugtrue} \newif\ifcaption@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} \@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}{% \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}}% {\@nameuse{caption@@#1}}% }} \renewcommand\@makecaption[2]{% \vskip\abovecaptionskip \captionlinewidth\hsize \realcaptionwidth\hsize \def\captionlabel{#1}% \def\captiontext{#2}% \usecaptionstyle{\caption@style}% \vskip\belowcaptionskip} \renewcommand*\caption@package[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 \ifcaption@debug \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 \fi \next} \caption@package{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}% \@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@package{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{% \@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\captionwidthtrue\else\captionwidthfalse\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@package{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@package\undefined % \end{macrocode} % % \iffalse % % \fi % % \Finale % \endinput