% \iffalse meta-comment % % This is file `caption-memoir.dtx'. % % Copyright (C) 2011-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{90} % % \iffalse %<*driver> \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesFile{caption-memoir.drv}[2023/07/10 v2.2 Implementation of the caption-memoir package] %\errorcontextlines=3 % \documentclass{captiondoc} \hypersetup{pdfkeywords={LaTeX, package, caption-memoir}} % \begin{document} \DocInput{caption-memoir.dtx} \end{document} % % \fi % % \GetFileInfo{caption-memoir.drv} % \let\docdate\filedate % \let\docversion\fileversion % \GetFileInfo{caption-memoir.sto} % % \title{\texorpdfstring % {The adaption of the \pkg{caption} package to the \cls{memoir} document class\thanks{%^^A % This adaption has version number \docversion.}}%^^A % {The adaption of the caption package to the memoir document class}} % \author{Axel Sommerfeldt\\ % \url{https://gitlab.com/axelsommerfeldt/caption}} % \date{\docdate} % \maketitle % % \begin{abstract} % This package adapts the \pkg{caption} package to the \cls{memoir} document class. % \end{abstract} % % \section*{User manual} % % This document is describing the code implementation only. % The user documentation can be found in % \nopagebreak\begin{quote} % \begin{tabular}{ll} % \href{http://mirror.ctan.org/macros/latex/contrib/caption/caption.pdf}% % {\texttt{caption.pdf}} & The caption package documentation \\ % \end{tabular} % \end{quote} % % \StopEventually{} % \iffalse % \clearpage % \tableofcontents % \fi % % \iffalse % --------------------------------------------------------------------------- % % \fi % % \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{\if@minipage,\@ifnextchar,\@ifpackagelater,\@ifpackageloaded} % \DoNotIndex{\@ifstar,\@ifundefined,\@latex@error,\@minipagefalse,\@minipagetrue} % \DoNotIndex{\@namedef,\@nameuse} % \DoNotIndex{\@onlypreamble,\@parboxrestore,\@plus,\@ptionlist} % \DoNotIndex{\@removeelement,\@restorepar,\@secondoftwo,\@setminipage,\@setpar} % \DoNotIndex{\@tempa,\@tempboxa,\@tempdima,\@tempdimb,\@tempdimc,\@tempb,\@tempc} % \DoNotIndex{\@testopt} % \DoNotIndex{\@undefined,\@unprocessedoptions,\@unusedoptionlist} % \DoNotIndex{\p@,\z@} % \DoNotIndex{\active,\addtocounter,\addtolength,\advance,\aftergroup} % \DoNotIndex{\baselineskip,\begin,\begingroup,\bfseries,\box} % \DoNotIndex{\catcode,\centering,\changes,\csname,\def,\divide,\do,\downarrow} % \DoNotIndex{\edef,\else,\empty,\end,\endcsname,\endgraf,\endgroup,\expandafter} % \DoNotIndex{\fi,\footnotesize,\global} % \DoNotIndex{\hangindent,\hbox,\hfil,\hsize,\hskip,\hspace,\hss} % \DoNotIndex{\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,\nobreak,\nobreakspace,\noexpand,\noindent,\numberline} % \DoNotIndex{\normalcolor,\normalfont,\normalsize,\or,\par,\parbox,\parfillskip} % \DoNotIndex{\parindent,\parskip,\prevdepth,\protect,\protected@edef,\protected@write} % \DoNotIndex{\providecommand,\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{\unvbox,\uparrow,\upshape,\usebox,\usepackage} % \DoNotIndex{\value,\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{\PassOptionsToPackage,\ProcessOptions,\ProvidesPackage} % % \iffalse % --------------------------------------------------------------------------- % % \fi % % \setlength{\parskip}{0pt plus 1pt} % \newcommand*\Note[2][Note]{\par{\small\emph{#1:} #2}\par} % % \changes{v1.4a}{2011/10/21}{\cls{memoir} class support added} % \changes{v2.0}{2020/07/27}{\cls{memoir} class support adapted to \pkg{caption3}~\version{2.0}} % % \iffalse % --------------------------------------------------------------------------- % % \fi % % \clearpage % % \iffalse %<*package> % \fi % % \section{Identification} % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesFile{caption-memoir.sto}[2023/09/08 v2.2c Adaption of the caption package to the memoir document class (AR)] % \end{macrocode} % % \section{Adaptions already included in the caption package} % % The following adaptions to the \cls{memoir} document class are already included in the \pkg{caption} package: % \begin{itemize} % \item \cs{@caption} expands \cs{memcaptioninfo} % \item \cs{caption@prepareanchor} expands \cs{M@gettitle} % \item \cs{caption@refstepcounter} expands \cs{donemaincaptiontrue} % \item All sub-caption counters will be reset at |\@mem|\-|reset|\-|sub|\-|counter|, % even if they weren't defined by the \cls{memoir} document class itself. % As work-around this command will be patched to protect the counters % defined by |\Declare|\-|Caption|\-|Sub|\-|Type|. % \end{itemize} % % \section{Single-line-check} % % \begin{macro}{\pagenote} % \changes{v1.4a}{2011/10/21}{Re-definition of \cs{pagenote} added} % We re-define \cs{pagenote} here so it won't disturb the single-line-check. % \begin{macrocode} \providecommand*\AtCaptionSingleLineCheck{\g@addto@macro\caption@prepareslc} % for caption v3.5 \AtCaptionSingleLineCheck{% \let\pagenote\caption@gobble} % \end{macrocode} % \end{macro} % % \section{Label separator} % % The `default' caption label separator maps to \cs{@contdelim}. % \begin{macrocode} \DeclareCaptionLabelSeparator{@contdelim}{\@contdelim} \SetCaptionDefault{labelseparator}{@contdelim} % \end{macrocode} % % \begin{macro}{\captiondelim} % \changes{v2.1}{2020/10/10}{Re-definition of \cs{captiondelim} added} % We re-define |\caption|\-|delim| so it will set the \pkg{caption3} label separator setting, too. % \begin{macrocode} \let\caption@memoir@delim\captiondelim \renewcommand\captiondelim{% \captionsetup{labelsep=@contdelim}% \caption@memoir@delim} % \end{macrocode} % \end{macro} % % \changes{v2.0a}{2020/10/10}{Re-definition of label separator `gobble' added} % If |\fnum@figure| (or |\fnum@table| or\ldots) ends with |\@gobble|, the `:' part of the caption % label separator will be suppressed when a standard document class (\cls{article}, \cls{report}, % or \cls{book}) will be used, leaving the following space character intact. % This is different when using the \cls{memoir} document class, in this case the complete % label separator will be suppressed. For this reason we re-define the pre-defined caption label % separator `gobble' to emulate this behaviour. % % \begin{macrocode} \DeclareCaptionLabelSeparator{gobble}{} % \end{macrocode} % % \section{Fonts} % % The `default' caption fonts map to \cs{@contnfont} or \cs{conttfont}. % \begin{macrocode} \DeclareCaptionFont{@contnfont}{\@contnfont} \SetCaptionDefault{labelfont}{@contnfont} % \end{macrocode} % \begin{macrocode} \DeclareCaptionFont{@conttfont}{\@conttfont} \SetCaptionDefault{textfont}{@conttfont} % \end{macrocode} % % \begin{macro}{\captionnamefont} % \changes{v2.1}{2020/10/10}{Re-definition of \cs{captionnamefont} added} % We re-define |\caption|\-|delim| so it will set the \pkg{caption3} label separator setting, too. % \begin{macrocode} \let\caption@memoir@namefont\captionnamefont \renewcommand\captionnamefont{% \captionsetup{labelfont=@contnfont}% \caption@memoir@namefont} % \end{macrocode} % \end{macro} % % \begin{macro}{\captiontitlefont} % \changes{v2.1}{2020/10/10}{Re-definition of \cs{captiontitlefont} added} % We re-define |\caption|\-|delim| so it will set the \pkg{caption3} label separator setting, too. % \begin{macrocode} \let\caption@memoir@titlefont\captiontitlefont \renewcommand\captiontitlefont{% \captionsetup{textfont=@conttfont}% \caption@memoir@titlefont} % \end{macrocode} % \end{macro} % % \section{Vertical spaces before and after captions} % % The \cls{memoir} document classes uses |\above|\-|caption|\-|skip| and |\below|\-|caption|\-|skip| % different than the standard document classes and the \pkg{caption} package: % They always typeset |\above|\-|caption|\-|skip| before the caption and % |\below|\-|caption|\-|skip| after the captions. Both are preset to |0.5\one|\-|line|\-|skip|. % % For this reason we have to set the |\below|\-|caption|\-|skip| to |0pt| if the \pkg{caption} % package is used, so no extra vertical space will be created. % % \begin{macrocode} \AtCaptionPackage{% \setlength\belowcaptionskip{0pt}} % \end{macrocode} % % Furthermore we adapt the `auto' positioning algorithm to match the one implemented % in the \cls{memoir} document class. % (Note: This needs at least \pkg{caption3} \version{2.3}.) % % \begin{macrocode} \@ifundefined{DeclareCaptionAutoPosition}{}{% \DeclareCaptionAutoPosition{% \ifvmode \ifdim\prevdepth>-99\p@#2\else#1\fi \else #2% \fi}}% % \end{macrocode} % % \section{Side captions} % % \begin{macro}{\endsidecaption} % \changes{v2.2c}{2023/09/08}{This re-definition added} % The \env{sidecaption} environment uses |\ref|\-|step|\-|counter| (if \pkg{hyperref} is not loaded) % or |\H@ref|\-|step|\-|counter| plus |\hyper@make|\-|current| (if \pkg{hyperref} is loaded). % We need to patch it so |\caption@ref|\-|step|\-|counter| is used instead to get a proper hyperlink reference. % Since the definition could be overwritten by |memhfixc.sty|, we need to define it using |\At|\-|Begin|\-|Document|. % \begin{macrocode} \AtBeginDocument{\renewcommand*\endsidecaption{% \m@mscapend@fbox \caption@refstepcounter\@captype \m@mscaplabel \csname m@mscapcheckside\endcsname %<--- added 2012/08/19 \begin{lrbox}{\m@mscap@capbox}% \begin{minipage}[c]{\sidecapwidth}% \sidecapstyle \@caption\@captype[\m@mscap@fortoc]{\m@mscap@forcap} \end{minipage}% \end{lrbox}% \m@mscapopboxes}} % \end{macrocode} % \end{macro} % % \section{TODO} % % \begin{macrocode} % TODO: \captionstyle % TODO: \captionwidth, \changecaptionwidth, \normalcaptionwidth % TODO: \hangcaption, \indentcaption, \normalcaption % TODO: \precaption, \postcaption, \midbicaption % TODO: \captiontitlefinal % TODO: \contcaption % TODO: \newfixedcaption, \renewfixedcaption, \providefixedcaption % % \end{macrocode} % % \iffalse % % \fi % % \iffalse % --------------------------------------------------------------------------- % % \fi % % \clearpage % \Finale % \endinput