diff options
author | Karl Berry <karl@freefriends.org> | 2023-10-02 19:45:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-10-02 19:45:00 +0000 |
commit | ed82be3bc9926dd99332606c08157600e06be582 (patch) | |
tree | 972b52059e89f86adf9d26bea74f3ea47c62357e /Master/texmf-dist/source | |
parent | bcdff285146400297340750ba36ad53315eb261d (diff) |
newfloat (2oct23)
git-svn-id: svn://tug.org/texlive/trunk@68434 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
4 files changed, 4128 insertions, 107 deletions
diff --git a/Master/texmf-dist/source/latex/newfloat/fallback/v1.0/newfloat.dtx b/Master/texmf-dist/source/latex/newfloat/fallback/v1.0/newfloat.dtx new file mode 100644 index 00000000000..990772946a8 --- /dev/null +++ b/Master/texmf-dist/source/latex/newfloat/fallback/v1.0/newfloat.dtx @@ -0,0 +1,1667 @@ +% \iffalse meta-comment +% +% This is file `newfloat.dtx'. +% +% Copyright (C) 2011-2012 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 "unmaintained". +% +% This work consists of the files caption.ins, caption.dtx, caption2.dtx, +% caption3.dtx, bicaption.dtx, ltcaption.dtx, subcaption.dtx, and newfloat.dtx, +% the derived files caption.sty, caption2.sty, caption3.sty, +% bicaption.sty, ltcaption.sty, subcaption.sty, and newfloat.sty, +% and the user manuals caption-deu.tex, caption-eng.tex, and caption-rus.tex. +% +% \fi +% \CheckSum{1291} +% +% \iffalse +%<*driver> +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesFile{newfloat.drv}% + [2012/05/18 v1.0 This package offers a command for defining new floating environments] +\hbadness=9999 \newcount\hbadness \hfuzz=48pt % Make TeX shut up. +% +\documentclass{ltxdoc} +\setlength\parindent{0pt} +\setlength\parskip{\smallskipamount} +% +\usepackage{ifpdf} +\ifpdf + \usepackage{mathptmx,courier} + \usepackage[scaled=0.90]{helvet} +% \addtolength\marginparwidth{15pt} +\fi +% +\usepackage[bottom]{footmisc} +% +\usepackage{hypdoc} +\ifpdf\usepackage{hypdestopt}\fi +\hypersetup{pdfkeywords={LaTeX, package, newfloat},pdfstartpage={},pdfstartview={}} +% +\usepackage{newfloat} +% +\DeclareRobustCommand*\eTeX{\texorpdfstring + {\leavevmode\hbox{$\varepsilon$}-\TeX}% + {e-TeX}} +\DeclareRobustCommand*\AmS{\texorpdfstring + {{\protect\usefont{OMS}{cmsy}{m}{n}A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}% + {AMS}} +\DeclareRobustCommand*\KOMAScript{\texorpdfstring + {\textsf{K\kern.05em O\kern.05em M\kern.05em A\kern.1em-\kern.1em Script}}% + {KOMA-Script}} +\DeclareRobustCommand*\NTG{NTG} +\DeclareRobustCommand*\SmF{SMF} +% +\begin{document} + \DocInput{newfloat.dtx} +\end{document} +%</driver> +% \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 +% \let\env\purett \let\opt\purett +% +% \def\thispackage{the \package{newfloat} package} +% \def\Thispackage{The \package{newfloat} package} +% +% \newcommand*\csmarg[1]{\texttt{\char`\{#1\char`\}}} +% \newcommand*\csoarg[1]{\texttt{\char`\[#1\char`\]}} +% \newcommand*\version[2][]{\textit{v#2}} +% +% \setlength\leftmargini{1.5em} +% +% \GetFileInfo{newfloat.drv} +% \let\docdate\filedate +% \GetFileInfo{newfloat.sty} +% +% \title{\texorpdfstring{\Thispackage\thanks{%^^A +% This package has version number \fileversion, last revised \filedate.}}%^^A +% {The newfloat package}} +% \author{Axel Sommerfeldt\\ +% \href{mailto:axel.sommerfeldt@f-m.fm}{\texttt{axel.sommerfeldt@f-m.fm}}} +% \date{\docdate} +% \maketitle +% +% \begin{abstract} +% \centering +% This package offers the command +% |\Declare|\-|Floating|\-|Environment| for defining new floating environments +% which behave like |figure| and |table|. +% \end{abstract} +% +% \tableofcontents +% +% \clearpage +% \section{Loading the package} +% +% First of all you need to include this package into your document with +% \begin{quote} +% |\usepackage|\oarg{options}|{newfloat}| +% \end{quote} +% where \meta{options} are one or more of +% \begin{quote}\begin{tabular}{r@{\,}l} +% |within=| & \meta{``within'' counter} \emph{or} \texttt{none}\quad\\ +% |chapterlistsgap=| & \meta{value}~\footnotemark[1] +% \end{tabular}\end{quote} +% +% The ``within'' counter specifies the counter which will be used to reset +% the counter of the floating environments |figure| and |table| . +% (Furthermore this setting will be used as default setting for +% |\Declare|\-|Floating|\-|Environment|.) +% +% So for example |within=chapter| will give you a numbering scheme +% \meta{chapter}.\meta{x} for floating environments, +% while |within=section| will give you a numbering scheme +% \meta{chapter}.\meta{section}.\meta{x}, or \meta{section}.\meta{x} +% if the document class does not offer |\chapter|. +% |within=none| will result in a continuous numbering throughout the document, +% i.e.~the numbering scheme will be simply \meta{x}. +% +% The option |chapterlistsgap=|\meta{value} sets the amount of the +% vertical gap inserted into the ``List of Figure'', ``List of Tables'', +% and all lists created with |\Declare|\-|Floating|\-|Environment| +% when a new chapter will be started. +% The default value is |10pt|. +% (This option will only be available if the document class used offer +% the usage of chapters, e.g.~the |book| or |report| document class.) +% +% \pagebreak[3] +% Both options can be changed later on, too, by using the command +% \begin{quote} +% |\newfloatsetup|\meta{options}\quad, +% \end{quote} +% +% \pagebreak[3] +% \section{\cs{DeclareFloatingEnvironment}} +% +% After loading \thispackage\ you can define your own floating environments with +% \begin{quote} +% \iffalse +% \setlength{\leftmargin}{6cm} +% \fi +% |\DeclareFloatingEnvironment|\oarg{options}\marg{type}% +% \iffalse +% \oarg{name}\oarg{list name} +% \fi +% \end{quote} +% where \meta{options} are one or more of +% \begin{quote}\begin{tabular}{r@{\,}l} +% |fileext=| & \meta{file extension}\\ +% |listname=| & \meta{list name}\\ +% |name=| & \meta{prosa name}\\ +% |placement=| & \meta{combination of \,\purett{htbp}}\\ +% |within=| & \meta{``within'' counter} \emph{or} \texttt{none}\\ +% |chapterlistsgaps=| & \texttt{on} \emph{or} \texttt{off}~\footnotemark[1] +% \end{tabular}\end{quote} +% \footnotetext[1]{Please note that although \thispackage\ tries hard to offer this +% option it may not be available or is working incorrectly in cooperation with +% your document class since there is no standard interface which we could use +% for that purpose. Therefore we have to try to patch the \cs{chapter} command, +% and if this fails, we try to patch \cs{addtocontents} (in an unusual way) instead.} +% +% If no \meta{options} are given, +% ``lo\meta{type}'' will be used as \meta{file extension} for the list, +% ``List of \meta{name}s'' as \meta{list name}. +% ``\meta{name}'' as \meta{name} (but with the first letter capitalized), +% ``|tbp|'' as \meta{placement} specifier, +% and ``|chapter|'' resp. ``|none|'' as \meta{``within'' counter}, +% i.e., the counter which resets the numbering. +% +% The default value of the |chapterlistsgaps=| option depends on the +% ``within'' setting, it is set to |on| if |chapter| or |section| is selected, +% otherwise it is set to |off|. +% (This option will only be available if the document class used offer +% the usage of chapters, e.g.~the |book| or |report| document class.) +% +% The list will be typeset using the command |\list|\-|of|\meta{type}|s| +% resp.~|\list|\-|of|\meta{type}|es|, +% analogous to |\list|\-|of|\-|figures| and |\list|\-|of|\-|tables|. +% +% If the \package{fltpage} package is loaded, an environment called +% |FP|\meta{type} will be defined additionally, same for |sideways|\meta{type} +% (\package{rotating} package), |SC|\meta{type} (\package{sidecap} package), +% and |wrap|\meta{type} (\package{wrapfig} package). +% +% \bigskip +% +% \pagebreak[3] +% So for example +% \begin{quote} +% |\DeclareFloatingEnvironment{diagram}| +% \end{quote} +% will define a new floating environment called |diagram|, +% the list will be stored in a file with the extension |lodiagram|, the name +% (used for the caption) will be ``Diagram'' and the list name +% ``List of Diagrams''. +% The list could be typeset with |\list|\-|of|\-|diagrams|. +% Dependent on which packages are loaded, the environments |FP|\-|diagram|, +% |sideways|\-|diagram|, |SC|\-|diagram|, and |wrap|\-|diagram| will be defined additionally. +% +% \pagebreak[3] +% Another example: +% \begin{quote} +% |\DeclareFloatingEnvironment[|\\ +% | fileext=lox,|\\ +% | listname={List of Matrixes},|\\ +% | name=Matrix,|\\ +% | placement=p,|\\ +% | within=section,|\\ +% | chapterlistsgaps=off,|\\ +% | ]{matrix}| +% \end{quote} +% will define a new floating environment called |matrix| with the given settings. +% Please note that names which contain spaces needs to be enclosed in curly braces. +% +% \pagebreak[3] +% \section{\cs{SetupFloatingEnvironment}} +% +% While |\DeclareFloatingEnvironment| will create new floating environments, +% \begin{quote} +% |\SetupFloatingEnvironment|\marg{floating environment}\marg{options} +% \end{quote} +% will change the settings of existing ones, i.e. either |figure| or |table|, +% or a one created with |\Declare|\-|Floating|\-|Environment|, +% or a one created with |\new|\-|float| offered by the \package{float} package, +% or a one created with |\new|\-|float| offered by the \package{memoir} document class, +% or a one created with |\Declare|\-|New|\-|Float|\-|Type| offered by the \package{floatrow} package, +% or \ldots +% +% The \meta{options} are the same as the options for +% |\Declare|\-|Floating|\-|Environment|, +% but one should avoid changing the file extension +% of existing floating environments, +% i.e.~using the |fileext=| option within |\Setup|\-|Floating|\-|Environment| +% is usually a very bad idea. +% +% \bigskip +% +% \pagebreak[3] +% An example: +% \begin{quote} +% |\SetupFloatingEnvironment{lstlisting}{chapterlistsgaps=off}| +% \end{quote} +% will switch off the chapter lists gaps for |lstlisting| environments +% offered by the \package{listings} package. +% +% \pagebreak[3] +% \section{\cs{ForEachFloatingEnvironment}} +% +% \begin{quote} +% |\ForEachFloatingEnvironment|\meta{code with \#1} +% \end{quote} +% will execute the given \meta{code} for all known floating environments, +% and for ones defined with |\Declare|\-|Floating|\-|Environment| later on. +% +% \pagebreak[3] +% So for example the \package{subcaption} packages uses +% \begin{quote} +% |\ForEachFloatingEnvironment{\DeclareCaptionSubType{#1}}| +% \end{quote} +% for initializing itself for all floating environments which are +% known to \thispackage. +% +% \medskip +% +% There is also a starred variant |\For|\-|Each|\-|Floating|\-|Environment*| +% which will execute the given code for already existing floating environments +% only, i.e.~no hook will be placed inside |\Declare|\-|Floating|\-|Environment|. +% +% \pagebreak[3] +% An example: +% \begin{quote} +% |\ForEachFloatingEnvironment*{\typeout{#1}}| +% \end{quote} +% will typeout the names of all already known floating environments to the terminal +% and log file. +% +% \iffalse +% \pagebreak[3] +% \section{For \LaTeX{} package authors} +% +% |\For|\-|Each|\-|Floating|\-|Environment| without \package{newfloat} package: +% \begin{quote} +% |\newcommand\mypackage@foreachfloat[1]{%|\\ +% | \@ifundefined{ForEachFloatingEnvironment}%|\\ +% | {\def\@elt##1{#1}%|\\ +% | \@ifundefined{c@figure}\@gobble\@elt{figure}%|\\ +% | \@ifundefined{c@table}\@gobble\@elt{table}%|\\ +% | \let\@elt\relax|\\ +% | \newfloat@addtohook{#1}}%|\\ +% | {\ForEachFloatingEnvironment{#1}}}|\\ +% |\providecommand\newfloat@addtohook[1]{%|\\ +% | \toks@=\expandafter{\newfloat@hook{##1}#1}%|\\ +% | \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}%|\\ +% | \@tempa}|\\ +% |\providecommand*\newfloat@hook[1]{}| +% \end{quote} +% +% \pagebreak[3] +% Adding environment to list of floating environments: +% \begin{quote} +% |\SetupFloatingEnvironment|\marg{environment}|{}| +% \end{quote} +% or (without \package{newfloat} package loaded): +% \begin{quote} +% |\providecommand\newfloat@list{}|\\ +% |\@cons\newfloat@list{|\marg{environment}|}| +% \end{quote} +% (Please note the doubled curly braces around the environment name.) +% \fi +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \StopEventually{%^^A +% \pagebreak[3] +% \begin{thebibliography}{9} +% +% \bibitem{memoir} +% Peter Wilson:\\ +% \href{http://www.ctan.org/pkg/memoir}% +% {\emph{The Memoir Class for Configurable Typesetting}},\\ +% 2011/03/06 +% +% \bibitem{NTGclasses} +% Victor Eijkhout:\\ +% \href{http://www.ctan.org/pkg/ntgclass}% +% {\emph{An introduction to the Dutch \LaTeX\ document classes}},\\ +% \mbox{3~September~1989} +% +% \bibitem{KOMAScript} +% Markus Kohm \& Jens-Uwe-Morawski:\\ +% \href{http://www.ctan.org/pkg/koma-script}% +% {\emph{KOMA-Script -- a versatile \LaTeXe\ bundle}},\\ +% 2007-01-09 +% +% \bibitem{float} +% Anselm Lingnau:\\ +% \href{http://www.ctan.org/pkg/float}% +% {\emph{An Improved Environment for Floats}},\\ +% 2001/11/08 +% +% \bibitem{fltpage} +% Sebastian Gross:\\ +% \href{http://www.ctan.org/pkg/fltpage}% +% {\emph{Welcome to the beta test of fltpage package!}},\\ +% 1998/11/13 +% +% \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{sidecap} +% Rolf Niepraschk \& Hubert G\"a\ss lein:\\ +% \href{http://www.ctan.org/pkg/sidecap}% +% {\emph{The sidecap package}},\\ +% 2003/06/06 +% +% \bibitem{wrapfig} +% Donald Arseneau:\\ +% \href{http://www.ctan.org/pkg/wrapfig}% +% {\emph{WRAPFIG.STY ver 3.6}},\\ +% 2003/01/31 +% +% \end{thebibliography} +% } +% +% \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{\@ifnextchar,\@ifpackagelater,\@ifpackageloaded} +% \DoNotIndex{\@ifstar,\@ifundefined,\@latex@error,\@namedef,\@nameuse} +% \DoNotIndex{\@onlypreamble,\@parboxrestore,\@plus,\@ptionlist} +% \DoNotIndex{\@removeelement,\@restorepar,\@secondoftwo,\@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{\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} +% \changes{v1.0}{2011/10/30}{First release as \package{newfloat} package, +% outsourced from the \package{caption3} package and revised} +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \clearpage +% \section{The Implementation} +% \iffalse +%<*package> +% \fi +% +% \pagebreak[3] +% \subsection{Identification} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesPackage{newfloat}[2012/05/19 v1.0b Defining new floating environments (AR)] +% \end{macrocode} +% +% \begin{macro}{\newfloat@Info} +% \begin{macro}{\newfloat@InfoNoLine} +% |\newfloat@Info|\marg{message} +% \begin{macrocode} +\newcommand*\newfloat@Info[1]{% + \PackageInfo{newfloat}{#1}} +\newcommand*\newfloat@InfoNoLine[1]{% + \newfloat@Info{#1\@gobble}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newfloat@Error} +% |\newfloat@Error|\marg{message} +% \begin{macrocode} +\newcommand*\newfloat@Error[1]{% + \PackageError{newfloat}{#1}\newfloat@eh} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@eh{% + If you do not understand this error, please take a closer look\MessageBreak + at the documentation of the `newfloat' package.\MessageBreak\@ehc} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{Using the keyval package} +% +% We need the \package{keyval} package for option handling, so we load it here. +% \begin{macrocode} +\RequirePackage{keyval}[1997/11/10] +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{\cs{DeclareFloatingEnvironment}} +% +% \begin{macro}{\DeclareFloatingEnvironment} +% \changes{v1.0a}{2011/11/16}{Bugfix: Undefines \cs{fst@}\meta{environment} now} +% |\DeclareFloatingEnvironment|\oarg{options}\marg{environment}\oarg{name}\oarg{list name} +% \begin{macrocode} +\newcommand*\DeclareFloatingEnvironment{% + \@testopt\@DeclareFloatingEnvironment{}} +\@onlypreamble\DeclareFloatingEnvironment +% \end{macrocode} +% \begin{macrocode} +\def\@DeclareFloatingEnvironment[#1]#2{% +% \end{macrocode} +% First of all, we set |\newfloat@Type| to the type name\par +% \begin{macrocode} + \newfloat@Info{New float `#2' with options `#1'}% + \edef\newfloat@Type{\def\noexpand\newfloat@Type{\@car#2\@nil}}% + \uppercase\expandafter{\newfloat@Type}% + \edef\@tempa{% + \noexpand\g@addto@macro\noexpand\newfloat@Type{\@cdr#2\@nil}}% + \@tempa +% \end{macrocode} +% Define a counter with the same name as the floating environment +% \begin{macrocode} + \newcounter{#2}% +% \end{macrocode} +% Set |\ftype@|\meta{type} which contains the type number for floats of type \meta{type}\par +% (See also \url{http://tex.stackexchange.com/q/32359/2574}) +% \begin{macrocode} + \ifdefined\c@float@type % from float package + \expandafter\edef\csname ftype@#2\endcsname{\the\value{float@type}}% + \addtocounter{float@type}{\value{float@type}}% + \else\ifdefined\c@newflo@tctr % from memoir document class + \expandafter\edef\csname ftype@#2\endcsname{\the\c@newflo@tctr}% + \advance\c@newflo@tctr \c@newflo@tctr + \else + \ifdefined\newfloat@ftype \else + \newcount\newfloat@ftype + \newfloat@ftype=8\relax + \fi + \expandafter\xdef\csname ftype@#2\endcsname{\the\newfloat@ftype}% + \advance\newfloat@ftype\newfloat@ftype + \fi\fi + \newfloat@Info{float type `#2'=\@nameuse{ftype@#2}}% +% \end{macrocode} +% Define |\fnum@|\meta{type}, a macro to generate the figure number for a caption +% \begin{macrocode} + \@namedef{fnum@#2}{\@nameuse{#2name}\nobreakspace\@nameuse{the#2}}% +% \end{macrocode} +% Define |\|\meta{type}|name| used by |\fnum@|\meta{type} as \meta{type}, +% but with first letter capitalized +% \begin{macrocode} + \expandafter\newcommand\csname #2name\endcsname{}% + \expandafter\let\csname #2name\endcsname\newfloat@Type + \@namedef{fleg#2}{\@nameuse{#2name}}% legend naming (memoir) +% \end{macrocode} +% Legend name in ToC (memoir document class) +% \begin{macrocode} + \@namedef{flegtoc#2}##1{}% +% \end{macrocode} +% Define the floating environment +% \begin{macrocode} + \newenvironment{#2}{\@float{#2}}{\end@float}% + \newenvironment{#2*}{\@dblfloat{#2}}{\end@dblfloat}% +% \end{macrocode} +% Define the listing command |\listof|\meta{type}(|e|)|s| +% \begin{macrocode} + \expandafter\newcommand\csname listof#2s\endcsname{\newfloat@listof{#2}}% + \expandafter\newcommand\csname listof#2es\endcsname{\newfloat@listof{#2}}% + \ifdefined\l@figure + \expandafter\let\csname l@#2\endcsname\l@figure + \else + \@namedef{l@#2}{\@dottedtocline{1}{1.5em}{2.3em}}% + \fi + \expandafter\newcommand\csname list#2name\endcsname{}% + \expandafter\xdef\csname list#2name\endcsname{List of \newfloat@Type s}% +% \end{macrocode} +% We undefine |\fst@|\meta{environment} so the new environment +% will not be recognized as defined by the \package{float} package. +% (|\fst@|\meta{type} use to hold the float style, see \package{float} package +% implementation for details.) +% \begin{macrocode} + \expandafter\let\csname fst@#2\endcsname\@undefined +% \end{macrocode} +% Set default parameters +% \begin{macrocode} + \newfloat@setplacement{#2}{tbp}% + \newfloat@setfileext{#2}{lo#2}% +% \end{macrocode} +% Apply given options +% \begin{macrocode} + \newfloat@setoptions*{#2}{#1}% +% \end{macrocode} +% Announce the new floating environment to other packages +% \begin{macrocode} + \@expandtwoargs\newfloat@announce{#2}{\@nameuse{ext@#2}}% +% \end{macrocode} +% Apply the last two optional arguments for setting names +% \begin{macrocode} + \@ifnextchar[\newfloat@DFE@setname\relax} +\@onlypreamble\@DeclareFloatingEnvironment +% \end{macrocode} +% \begin{macrocode} +\def\newfloat@DFE@setname[#1]{% + \KV@@newfloat@name{#1}% + \@ifnextchar[\newfloat@DFE@setlistname\relax} +\@onlypreamble\newfloat@DFE@setname +% \end{macrocode} +% \begin{macrocode} +\def\newfloat@DFE@setlistname[#1]{% + \KV@@newfloat@listname{#1}} +\@onlypreamble\newfloat@DFE@setlistname +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@listof} +% |\newfloat@listof|\marg{float type} typesets the list +% \begin{macrocode} +\newcommand*\newfloat@listof[1]{% + \ifcsname listoftoc\endcsname + \expandafter\listoftoc\expandafter{\@nameuse{ext@#1}}% + \else + \begingroup + \expandafter\let\expandafter\listfigurename\csname list#1name\endcsname + \expandafter\let\expandafter\ext@figure\csname ext@#1\endcsname + \let\newfloat@ORI@starttoc\@starttoc + \renewcommand*\@starttoc[1]{% + \expandafter\newfloat@ORI@starttoc\expandafter{\ext@figure}}% + \listoffigures + \endgroup + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setoptions} +% |\newfloat@setoptions*|\marg{environment}\marg{options} +% \begin{macrocode} +\newcommand*\newfloat@setoptions{% + \@ifstar + {\newfloat@@setoptions\@firstofone}% + {\newfloat@@setoptions\@gobble}} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@@setoptions[3]{% + \let\newfloat@within@value\@undefined + \let\newfloat@chapterlistsgaps@value\@undefined + #1{\KV@@newfloat@within\newfloat@within@default}% set default value for new floats + \def\newfloat@type{#2}% + \setkeys{@newfloat}{#3}% + \ifx\newfloat@within@value\@undefined \else + \newfloat@setoption{within}\newfloat@within@value + \fi + \ifx\newfloat@chapterlistsgaps@value\@undefined \else + \newfloat@setoption{chapterlistsgaps}\newfloat@chapterlistsgaps@value + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@within@default} +% The default `within' value. +% This one will be used if no option |within=|\meta{counter} is given. +% \begin{macrocode} +\newcommand*\newfloat@within@default{% + \ifcsname c@chapter\endcsname chapter\else none\fi} +\@onlypreamble\newfloat@within@default +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setoption} +% |\newfloat@setoption|\marg{option name}{options} +% \begin{macrocode} +\newcommand*\newfloat@setoption[1]{% + \expandafter\@expandtwoargs\csname newfloat@set#1\endcsname\newfloat@type} +% \end{macrocode} +% \end{macro} +% +% The available \meta{options} are: +% |fileext=|\meta{file extension}, +% |listname=|\meta{list name}, +% |name=|\meta{prosa name}, +% |placement=|\meta{htbp}, +% |within=|\meta{none,chapter,section}, and +% |without|. +% +% \begin{macro}{\newfloat@setfileext} +% |\newfloat@setfileext|\marg{environment}\marg{file extension} +% \begin{macrocode} +\newcommand*\newfloat@setfileext[2]{% + \@namedef{ext@#1}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{fileext}{% + \newfloat@setoption{fileext}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setlistname} +% |\newfloat@setlistname|\marg{environment}\marg{list name} +% \begin{macrocode} +\newcommand*\newfloat@setlistname[2]{% + \@namedef{list#1name}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{listname}{% + \newfloat@setoption{listname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setname} +% |\newfloat@setname|\marg{environment}\marg{name} +% \begin{macrocode} +\newcommand*\newfloat@setname[2]{% + \newfloat@@setname{#1}{#2}% + \begingroup + \ifcsname languagename\endcsname + \ifcsname captions\languagename\endcsname + \expandafter\g@addto@macro\csname captions\languagename\endcsname + {\newfloat@@setname{#1}{#2}}% + \fi + \fi + \endgroup} +%%\AtBeginDocument{\let\newfloat@setname\newfloat@@setname} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@@setname[2]{% + \@namedef{#1name}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{name}{% + \newfloat@setoption{name}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setplacement} +% |\newfloat@setplacement|\marg{environment}\marg{float placement} +% \begin{macrocode} +\newcommand*\newfloat@setplacement[2]{% + \@namedef{fps@#1}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{placement}{% + \newfloat@setoption{placement}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setwithin} +% |\newfloat@setwithin|\marg{environment}\marg{counter}\par +% setup the counter for working ``within'' a given counter. +% Furthermore the chapters lists gap will be switched on +% (if counter $=$ |chapter|) or off (otherwise). +% \begin{macrocode} +\newcommand*\newfloat@setwithin[2]{% + \ifcsname c@chapter\endcsname + \@removefromreset{#1}{chapter}% + \fi + \@removefromreset{#1}{section}% +% \end{macrocode} +% \begin{macrocode} + \edef\@tempa{#2}% + \ifx\@tempa\@empty + \def\@tempa{none}% + \fi + \def\@tempb{none}% + \ifx\@tempa\@tempb + \ifcsname c@chapter\endcsname + \@chapterlistsgap@off{#1}% + \fi + \newfloat@@setwithin{#1}{}{}% + \else + \def\@tempb{chapter}% + \ifx\@tempa\@tempb + \@addtoreset{#1}{chapter}% + \@chapterlistsgap@on{#1}% + \newfloat@@setwithin{#1}{\ifnum\c@chapter>\z@ \thechapter.\fi}{\theHchapter.}% + \else + \def\@tempb{section}% + \ifx\@tempa\@tempb + \@addtoreset{#1}{section}% + \ifcsname c@chapter\endcsname + \@addtoreset{#1}{chapter}% + \@chapterlistsgap@on{#1}% + \newfloat@@setwithin{#1}{\thesection.}{\theHsection.}% + \else + \newfloat@@setwithin{#1}{\ifnum\c@section>\z@ \thesection.\fi}{\theHsection.}% + \fi + \else + \newfloat@Error{Invalid value `#2' for option `within'}% + \fi + \fi + \fi} +% \end{macrocode} +% Note: Since the \package{hyperref} package with version $<$ 6.82k defines +% |\the|\-|H|\-|figure| and |\the|\-|H|\-|table| with |\new|\-|command|, +% |\newfloat@@setwithin| will yield to an error message when using with an +% old version of \package{hyperref}, +% e.g. ``\texttt{LaTeX Error: Command \cs{theHfigure} already defined}''. +% \begin{macrocode} +\newcommand*\newfloat@@setwithin[3]{% + \global\@namedef{the#1}{#2\arabic{#1}}% + \global\@namedef{theH#1}{#3\arabic{#1}}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{within}{% + \def\newfloat@within@value{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setwithout} +% |\newfloat@setwithout|\marg{environment} +% \begin{macrocode} +\newcommand*\newfloat@setwithout[1]{% + \newfloat@setwithin{#1}{none}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{without}[]{% + \def\newfloat@within@value{none}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setchapterlistsgaps} +% |\newfloat@setchapterlistsgaps|\marg{environment}\marg{on/off} +% \begin{macrocode} +\newcommand*\newfloat@setchapterlistsgaps[2]{% + \edef\@tempa{#2}% + \def\@tempb{off}% + \ifx\@tempa\@tempb + \@chapterlistsgap@off{#1}% + \else + \def\@tempb{on}% + \ifx\@tempa\@tempb + \@chapterlistsgap@on{#1}% + \else + \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}% + \fi + \fi} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{chapterlistsgaps}{% + \def\newfloat@chapterlistsgaps@value{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@removefromreset} +% This code was taken from the \package{remreset} package +% which is part of the `carlisle' package bundle. +% (Copyright 1997 David Carlisle) +% \begin{macrocode} +\providecommand*\@removefromreset[2]{{% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else + \noexpand\@elt{##1}% + \fi}% + \expandafter\xdef\csname cl@#2\endcsname{% + \csname cl@#2\endcsname}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@announce} +% |\newfloat@announce|\marg{environment name}\marg{list file extension} +% \begin{macrocode} +\newcommand*\newfloat@announce[2]{% +% \end{macrocode} +% \begin{macrocode} + \@cons\newfloat@list{{#1}}% + \@cons\newfloat@@list{{#1}}% +% \end{macrocode} +% \begin{macrocode} + \@ifundefined{newfloat@ext@#2}{% + \@namedef{newfloat@ext@#2}{#1}% +% \end{macrocode} +% Support of \package{memoir} document class +% \begin{macrocode} + \ifcsname c@lofdepth\endcsname + \@ifundefined{c@#2depth}{% + \newcounter{#2depth}% + \setcounter{#2depth}{1}% + }{}% + \fi +% \end{macrocode} +% Support of \package{tocbasic} package +% \begin{macrocode} + \ifcsname addtotoclist\endcsname + \addtotoclist[float]{#2}% + \@namedef{listof#2name}{\@nameuse{list#1name}}% + \fi +% \end{macrocode} +% \begin{macrocode} + }{}% +% \end{macrocode} +% Support of \package{titletoc} package +% \begin{macrocode} + \ifcsname contentsuse\endcsname + \contentsuse{#1}{#2}% + \fi +% \end{macrocode} +% \begin{macrocode} + \newfloat@hook{#1}} +\@onlypreamble\newfloat@announce +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@@list} +% |\newfloat@@list| is an \cs{@elt}-list containing the floating environments defined +% with |\Declare|\-|Floating|\-|Environment| only. +% \begin{macrocode} +\newcommand*\newfloat@@list{} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{SetupFloatingEnvironment}} +% +% \begin{macro}{\SetupFloatingEnvironment} +% |\SetupFloatingEnvironment|\marg{environment}\marg{options} +% \begin{macrocode} +\newcommand*\SetupFloatingEnvironment[1]{% + \newfloat@addtolist{#1}% + \newfloat@setoptions{#1}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{ForEachFloatingEnvironment}} +% +% \begin{macro}{\ForEachFloatingEnvironment} +% |\ForEachFloatingEnvironment|\marg{code} +% will execute the given code for each floating environment. +% The starred variant will only work for already existing environment, +% i.e.~no hook will be placed inside |\Declare|\-|Floating|\-|Environment|. +% \begin{macrocode} +\newcommand\ForEachFloatingEnvironment{% + \@ifstar + {\@ForEachFloatingEnvironment\@gobble}% + {\@ForEachFloatingEnvironment\@iden}} +% \end{macrocode} +% \begin{macrocode} +\newcommand\@ForEachFloatingEnvironment[2]{% + \def\@elt##1{#2}% + \newfloat@list + \let\@elt\relax + #1{\newfloat@addtohook{#2}}} +% \end{macrocode} +% \begin{macrocode} +\providecommand\newfloat@addtohook[1]{% + \toks@=\expandafter{\newfloat@hook{##1}#1}% + \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}% + \@tempa} +% \end{macrocode} +% \begin{macrocode} +\providecommand*\newfloat@hook[1]{} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{The list of floating environments} +% +% \begin{macro}{\newfloat@list} +% |\newfloat@list| is an \cs{@elt}-list containing the already existising floating +% environments as well the ones defined with |\Declare|\-|Floating|\-|Environment|. +% \begin{macrocode} +\newcommand*\newfloat@list{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@addtolist} +% \changes{v1.0b}{2012/05/18}{Bugfix: Definition of \cs{@ifchapterlistsgap@}\meta{environment} added} +% |\newfloat@addtolist|\marg{environment} +% adds an environment to the list of floating environments. +% \begin{macrocode} +\newcommand*\newfloat@addtolist[1]{% + \newfloat@ifinlist{#1}{}{% + \ifcsname ext@#1\endcsname + \@cons\newfloat@list{{#1}}% + \@namedef{newfloat@ext@\@nameuse{ext@#1}}{#1}% + \@ifundefined{@ifchapterlistsgap@#1}{% + \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden}{}% + \else + \newfloat@Error{`#1' does not seem to be a floating environment}% + \fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@ifinlist} +% |\newfloat@ifinlist|\marg{environment}\marg{yes code}\marg{no code} +% tests if an environment is an element of the list of floating environments. +% \begin{macrocode} +\newcommand*\newfloat@ifinlist[1]{% + \let\next\@secondoftwo + \begingroup + \expandafter\let\csname c@#1\endcsname\newfloat@ifinlist + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\newfloat@ifinlist + \global\let\next\@firstoftwo + \fi}% + \newfloat@list + \endgroup + \next} +% \end{macrocode} +% \end{macro} +% +% Add |figure| and |table| to the list of floating environments. +% \begin{macrocode} +\ifcsname ext@figure\endcsname + \newfloat@addtolist{figure} +\fi +\ifcsname ext@table\endcsname + \newfloat@addtolist{table} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Chapter lists gaps} +% +% \begin{macrocode} +\ifcsname @chapter\endcsname +% \end{macrocode} +% +% \begin{macro}{\@chapterlistsgap} +% The amount of the chapter lists gap, the default one is |10pt|. +% (This command is already defined in \KOMAScript.) +% \begin{macrocode} + \providecommand*\@chapterlistsgap{10\p@}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@addchapterlistsgap} +% |\@addchapterlistsgap|\marg{float type}\marg{file extension}\par +% will add the chapter lists gap for the given float type. +% \begin{macrocode} + \providecommand*\@addchapterlistsgap[2]{% + \@nameuse{@ifchapterlistsgap@#1}{% if switched on + \@@addchapterlistsgap{#1}{#2}}} +% \end{macrocode} +% \begin{macrocode} + \providecommand*\@@addchapterlistsgap[2]{% + \@ifundefined{@addchapterlistsgap@#2}{% only once per extension + \@namedef{@addchapterlistsgap@#2}{#1}% + \@@@addchapterlistsgap{#2}}{}} +% \end{macrocode} +% \begin{macrocode} + \providecommand*\@@@addchapterlistsgap[1]{% + \ifdim \@chapterlistsgap>\z@ + \addtocontents{#1}{\protect\addvspace{\@chapterlistsgap}}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@addchapterlistsgaps} +% \changes{v1.0b}{2012/05/18}{Bugfix: Group added to make \cs{@addchapterlistsgap} work correctly} +% |\@addchapterlistsgaps|\par +% will add the chapter lists gaps for all floating environments in |\newfloat@list|. +% \begin{macrocode} + \providecommand*\@addchapterlistsgaps{% + \begingroup + \def\@elt##1{% + \@expandtwoargs\@addchapterlistsgap{##1}{\@nameuse{ext@##1}}}% + \newfloat@list + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chapterlistsgap@off} +% |\@chapterlistsgap@off|\marg{float type}\par +% switches the chapter lists gap off for the given float type. +% Since \KOMAScript{} (still) supports |\float@exts| we need to handle +% this locally, too, even if |\unsettoc| is offered by the \package{tocbasic} package. +% (Otherwise our handling could be moved into the |\else| branch.) +% \begin{macrocode} + \providecommand*\@chapterlistsgap@off[1]{% + \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@gobble + \ifcsname unsettoc\endcsname + \@expandtwoargs\unsettoc{\@nameuse{ext@#1}}{chapteratlist}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chapterlistsgap@on} +% |\@chapterlistsgap@off|\marg{float type}\par +% switches the chapter lists gap on for the given float type. +% \begin{macrocode} + \providecommand*\@chapterlistsgap@on[1]{% + \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden + \ifcsname setuptoc\endcsname + \@expandtwoargs\setuptoc{\@nameuse{ext@#1}}{chapteratlist}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Global options} +% +% \begin{macro}{chapterlistsgap=} +% The |chapterlistsgap=| option sets the vertical skip added to each list when +% starting a new chapter. +% \begin{macrocode} +\define@key{newfloat}{chapterlistsgap}{% + \renewcommand*\@chapterlistsgap{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{within=} +% The |within=| option redefines the default value and modifies all +% existing floating environments. +% \begin{macrocode} +\define@key{newfloat}{within}{% + \def\newfloat@within@default{#1}% set new default value + \def\@elt##1{\newfloat@setwithin{##1}{#1}}% + \newfloat@list + \let\@elt\relax} +% \end{macrocode} +% \begin{macrocode} +\define@key{newfloat}{without}[]{% + \KV@newfloat@within{none}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{figurename=} +% \begin{macro}{listfigurename=} +% \begin{macro}{figurewithin=} +% We define these options not only for |figure| but for all existing floating environments. +% \begin{macrocode} +\def\@elt#1{% + \define@key{newfloat}{#1name}{% + \newfloat@setname{#1}{##1}}% + \define@key{newfloat}{list#1name}{% + \newfloat@setname{list#1}{##1}}% + \define@key{newfloat}{#1within}{% + \newfloat@setwithin{#1}{##1}}% + \define@key{newfloat}{#1without}[]{% + \newfloat@setwithout{#1}}% +}% +\newfloat@list +\let\@elt\relax +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{planb=} +% \changes{v1.0b}{2012/05/18}{This option added} +% This option switches the `Plan B' on or off. (default$=$off) +% \begin{macrocode} +\define@key{newfloat}{planb}[true]{% + \def\@tempa{#1}% + \def\@tempb{false}% + \ifx\@tempa\@tempb + \let\newfloat@ifplanb\@gobble + \else + \def\@tempb{true}% + \ifx\@tempa\@tempb + \let\newfloat@ifplanb\@iden + \else + \newfloat@Error{Invalid value `#1' for option `planb'}% + \fi + \fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{planb-filext=} +% \changes{v1.0b}{2012/05/19}{This option added} +% This option sets the file extension used for `Plan B'. +% (default$=$use the 1st one which seem to fit) +% \begin{macrocode} +\define@key{newfloat}{planb-fileext}{% + \newfloat@Info{Setting Plan B file extension to `#1'} + \xdef\newfloat@addtocontents@ext{#1}} +% \end{macrocode} +% \end{macro} + +% +% Process the package options: +% We use |\setkeys| here instead of |\ProcessOptions|. +% \begin{macrocode} +\let\@tempc\relax +\@expandtwoargs\setkeys{newfloat}{planb,\@ptionlist{\@currname.\@currext}}% +\AtEndOfPackage{\let\@unprocessedoptions\relax} +% \end{macrocode} +% +% \begin{macro}{\newfloatsetup} +% |\newfloatsetup|\marg{options} +% sets global options after loading the package. +% \begin{macrocode} +\newcommand*\newfloatsetup{\setkeys{newfloat}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{Patching \cs{chapter}} +% +% \begin{macro}{\newfloat@replace@chapter} +% |\newfloat@replace@chapter|\marg{original code}\marg{replacement code}\par +% tries to patch |\@chapter| so |\@add|\-|chapter|\-|lists|\-|gaps| will be supported. +% It checks for |\Hy@org@chapter|, too, since the original code will be stored here +% if the \package{hyperref} package was loaded. +% \begin{macrocode} +\newcommand\newfloat@replace@chapter[2]{% + \begingroup + \let\if@twocolumn\iffalse + \let\if@mainmatter\iffalse + \let\if@thema\iffalse + \def\@tempa[##1]##2{#1}% + \ifx\@tempa\@chapter + \gdef\@chapter[##1]##2{#2}% + \global\let\newfloat@replace@chapter\@gobbletwo + \else\ifx\@tempa\Hy@org@chapter + \gdef\Hy@org@chapter[##1]##2{#2}% + \global\let\newfloat@replace@chapter\@gobbletwo + \fi\fi + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\ifcsname @chapter\endcsname \else + \let\newfloat@replace@chapter\@gobbletwo +\fi +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{Standard \LaTeX{} document classes} +% +% \begin{macrocode} +% report.cls [2005/09/16 v1.4f Standard LaTeX document class] +\newfloat@replace@chapter{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macrocode} +% book.cls [2005/09/16 v1.4f Standard LaTeX document class] +\newfloat@replace@chapter{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\AmS{} \& \SmF{} document classes} +% +% \begin{macrocode} +% amsbook.cls [2004/08/06 v2.20] +% smfbook.cls [1999/11/15 v1.2f Classe LaTeX pour les monographies editees par la SMF] +\newfloat@replace@chapter{% + \refstepcounter{chapter}% + \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty + \else \let\@secnumber\thechapter \fi + \typeout{\chaptername\space\@secnumber}% + \def\@toclevel{0}% + \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% + \else \@tocwriteb\tocchapter{chapter}{#2}\fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \@makechapterhead{#2}\@afterheading +}{% + \refstepcounter{chapter}% + \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty + \else \let\@secnumber\thechapter \fi + \typeout{\chaptername\space\@secnumber}% + \def\@toclevel{0}% + \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% + \else \@tocwriteb\tocchapter{chapter}{#2}\fi + \chaptermark{#1}% + \@addchapterlistsgaps + \@makechapterhead{#2}\@afterheading} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\KOMAScript{} document classes} +% +% If a \KOMAScript{} document class or the \package{tocbasic} package is used +% we don't need to patch anything. +% Instead we use |\setup|\-|toc| and |\un|\-|set|\-|toc| to setup the +% chapters gap in |\@chapter|\-|lists|\-|gap@on| and |\@chapter|\-|lists|\-|gap@off|. +% \begin{macrocode} +\@ifpackageloaded{tocbasic}{% + \let\newfloat@replace@chapter\@gobbletwo}{} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{memoir document classes} +% +% If the \package{memoir} document class is used, +% replacing |\insert|\-|chapter|\-|space| by |\@add|\-|chapter|\-|lists|\-|gaps| is sufficient. +% \begin{macrocode} +\ifcsname insertchapterspace\endcsname + \renewcommand*\insertchapterspace{\@addchapterlistsgaps} + \let\newfloat@replace@chapter\@gobbletwo +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{NTG document classes} +% +% \begin{macrocode} +% rapport1/3.cls [2004/06/07 v2.1a NTG LaTeX document class] +\newfloat@replace@chapter{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% \begin{macrocode} + % boek(3).cls [2004/06/07 v2.1a NTG LaTeX document class] +\newfloat@replace@chapter{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{The thesis document class} +% +% \begin{macrocode} +% thesis.cls [1996/25/01 1.0g LaTeX document class (wm).] +\newfloat@replace@chapter{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\chaptername\space\thechapter.} + \if@thema + \ifx\@shortauthor\@empty + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}% + \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% + \fi + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \chaptermark{#1} + \addtocontents{lof}{\protect\addvspace{10pt}} + \addtocontents{lot}{\protect\addvspace{10pt}} + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}] + \else + \@makechapterhead{#2} + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\chaptername\space\thechapter.}% + \if@thema + \ifx\@shortauthor\@empty + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}% + \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% + \fi + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{Compatibility warning} +% +% \begin{macrocode} +\ifx\newfloat@replace@chapter\@gobbletwo \else +% \end{macrocode} +% If we were not able to patch |\@chapter| an info message is issued +% since we may not be able to support chapter lists gaps then. +% \begin{macrocode} + \newfloat@InfoNoLine{% + Unsupported document class, or \noexpand\@chapter\MessageBreak + was already redefined by another package} + \newfloat@InfoNoLine{\string\@chapter\space=\space\meaning\@chapter} + \newfloat@InfoNoLine{\string\Hy@org@chapter\space=\space\meaning\Hy@org@chapter} +% \end{macrocode} +% Plan B: We patch |\addtocontents| instead, and keep our fingers crossed in the hope +% that this redefinition actually will fit. +% \begin{macrocode} + \newfloat@ifplanb{% + \newfloat@InfoNoLine{Trying Plan B..}% + \let\newfloat@addtocontents@ORI\addtocontents + \long\def\addtocontents#1#2{% + \newfloat@addtocontents{#1}{#2}#2\addvspace\newfloat@nil}% + \long\def\newfloat@addtocontents#1#2#3\addvspace#4\newfloat@nil{% + \def\newfloat@tempa{#4}% + \ifx\newfloat@tempa\@empty + \newfloat@addtocontents@ORI{#1}{#2}% + \else + \ifx\newfloat@addtocontents@ext\@undefined + \newfloat@Info{Setting Plan B file extension to `#1'...}% + \xdef\newfloat@addtocontents@ext{#1}% + \fi + \edef\newfloat@tempa{#1}% + \ifx\newfloat@tempa\newfloat@addtocontents@ext + \begingroup + \let\addtocontents\newfloat@addtocontents@ORI + \@addchapterlistsgaps + \endgroup + \fi + \fi}} +% \end{macrocode} +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Support of other packages} +% +% \begin{macro}{\newfloat@ForEachNew} +% |\newfloat@ForEachNew|\oarg{command}\marg{code} +% will execute the given code for every floating environment defined with +% |\Declare|\-|Floating|\-|Environment|. +% This will be done |\At|\-|Begin|\-|Document| so the affected package could be loaded +% after \thispackage. +% (If a \meta{command} is given this will only be done if \meta{command} is +% defined.) +% \begin{macrocode} +\newcommand\newfloat@ForEachNew[2][newfloat@@list]{% + \AtBeginDocument{% + \ifcsname#1\endcsname + \def\@elt##1{#2}% + \newfloat@@list + \let\@elt\relax + \fi}}% +\@onlypreamble\newfloat@ForEachNew +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{\package{float}} +% +% If the \package{float} package is used we fill up |\float@exts| with our file +% extensions, too. Since this list will be used for inserting chapters gaps +% we only add the ones which are configured for chapters gaps on. +%% \begin{macrocode} +\newfloat@ForEachNew[float@exts]{% + \@nameuse{@ifchapterlistsgap@#1}{% if switched on + \let\float@do=\relax + \edef\@tempa{% + \noexpand\float@exts{\the\float@exts\float@do{\@nameuse{ext@#1}}}}% + \@tempa}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{fltpage}} +% +% We define a FP-variant of new floating environments here. +% \begin{macrocode} +\newfloat@ForEachNew[FP@floatBegin]{% + \newcounter{FP@#1C}% + \newenvironment{FP#1}{\FP@floatBegin{#1}}{\FP@floatEnd}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{listings}} +% +% \begin{macro}{\ext@lstlisting} +% Since the \package{listings} package do not define |\ext@lst|\-|listing| +% but we needed it when |Setup|\-|Floating|\-|Environment{lst|\-|listing}{|\ldots|}| +% will be done by the end user, we define it here. +% \begin{macrocode} +\providecommand*\ext@lstlisting{lol}% +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{\package{rotating}} +% +% We define a sideways-variant of new floating environments here. +% \begin{macrocode} +\newfloat@ForEachNew[@rotfloat]{% + \newenvironment{sideways#1}{\@rotfloat{#1}}{\end@rotfloat}% + \newenvironment{sideways#1*}{\@rotdblfloat{#1}}{\end@rotdblfloat}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{sidecap}} +% +% We define a SC-variant of new floating environments here. +% \begin{macrocode} +\newcommand*\newfloat@For@SC[2]{% + \def#1{b}% = \sidecaptionvpos{#2}{b} (v1.6) + \newenvironment{SC#2}% + {\SC@float[#1]{#2}}{\endSC@float}% + \newenvironment{SC#2*}% + {\SC@dblfloat[#1]{#2}}{\endSC@dblfloat}} +\@onlypreamble\newfloat@For@SC +% \end{macrocode} +% \begin{macrocode} +\newfloat@ForEachNew[SC@float]{% + \expandafter\newfloat@For@SC\csname SC@#1@vpos\endcsname{#1}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{wrapfig}} +% +% We define a wrap-variant of new floating environments here. +% \begin{macrocode} +\newfloat@ForEachNew[wrapfloat]{% + \newenvironment{wrap#1}{\wrapfloat{#1}}{\endwrapfloat}} +% \end{macrocode} +% \iffalse +%</package> +% \fi +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/newfloat/fallback/v1.1/newfloat.dtx b/Master/texmf-dist/source/latex/newfloat/fallback/v1.1/newfloat.dtx new file mode 100644 index 00000000000..7d0cabc8b7c --- /dev/null +++ b/Master/texmf-dist/source/latex/newfloat/fallback/v1.1/newfloat.dtx @@ -0,0 +1,2135 @@ +% \iffalse meta-comment +% +% This is file `newfloat.dtx'. +% +% Copyright (C) 2011-2021 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 "unmaintained". +% +% This work consists of the files newfloat.ins, newfloat.dtx, +% and the derived file newfloat.sty. +% +% \fi +% \CheckSum{1634} +% +% \iffalse +%<*driver> +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\ProvidesFile{newfloat.drv}[2021/02/27 v1.1 This package offers a command for defining new floating environments] +\hbadness=9999 \newcount\hbadness \hfuzz=48pt % Make TeX shut up. +% +\documentclass{ltxdoc} +\setlength\parindent{0pt} +\setlength\parskip{\smallskipamount} +% +\usepackage{ifpdf} +\ifpdf + \usepackage{mathptmx,courier} + \usepackage[scaled=0.90]{helvet} +% \addtolength\marginparwidth{15pt} +\fi +% +\usepackage[bottom]{footmisc} +% +\usepackage{hypdoc} +\ifpdf\usepackage{hypdestopt}\fi +\hypersetup{pdfkeywords={LaTeX, package, newfloat},pdfstartpage={},pdfstartview={}} +% +\usepackage{newfloat} +% +\DeclareRobustCommand*\eTeX{\texorpdfstring + {\leavevmode\hbox{$\varepsilon$}-\TeX}% + {e-TeX}} +\DeclareRobustCommand*\AmS{\texorpdfstring + {{\protect\usefont{OMS}{cmsy}{m}{n}A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}% + {AMS}} +\DeclareRobustCommand*\KOMAScript{\texorpdfstring + {\textsf{K\kern.05em O\kern.05em M\kern.05em A\kern.1em-\kern.1em Script}}% + {KOMA-Script}} +\DeclareRobustCommand*\NTG{NTG} +\DeclareRobustCommand*\SmF{SMF} +% +\begin{document} + \DocInput{newfloat.dtx} +\end{document} +%</driver> +% \fi +% +% \newcommand*\purerm[1]{{\upshape\mdseries\rmfamily #1}} +% \newcommand*\puresf[1]{{\upshape\mdseries\sffamily #1}} +% \newcommand*\purett[1]{{\upshape\mdseries\ttfamily #1}} +% \let\class\puresf \let\package\puresf +% \let\env\purett \let\opt\purett +% +% \def\thispackage{the \package{newfloat} package} +% \def\Thispackage{The \package{newfloat} package} +% +% \newcommand*\csmarg[1]{\texttt{\char`\{#1\char`\}}} +% \newcommand*\csoarg[1]{\texttt{\char`\[#1\char`\]}} +% \newcommand*\version[2][]{\textit{v#2}} +% +% \setlength\leftmargini{1.5em} +% +% \GetFileInfo{newfloat.drv} +% \let\docdate\filedate +% \let\docversion\fileversion +% \GetFileInfo{newfloat.sty} +% +% \title{\texorpdfstring{\Thispackage\thanks{%^^A +% This package has version number \docversion.}}%^^A +% {The newfloat package}} +% \author{Axel Sommerfeldt\\ +% \url{https://gitlab.com/axelsommerfeldt/newfloat}} +% \date{\docdate} +% \maketitle +% +% \begin{abstract} +% \centering +% This package offers the command +% |\Declare|\-|Floating|\-|Environment| for defining new floating environments +% which behave like |figure| and |table|. +% \end{abstract} +% +% \tableofcontents +% +% \clearpage +% \section{Loading the package} +% +% First of all you need to include this package into your document with +% \begin{quote} +% |\usepackage|\oarg{options}|{newfloat}| +% \end{quote} +% where \meta{options} are one or more of +% \begin{quote}\begin{tabular}{r@{\,}l} +% |within=| & \meta{``within'' counter} \emph{or} \texttt{none}\quad\\ +% |chapterlistsgap=| & \meta{value}~\footnotemark[1] +% \end{tabular}\end{quote} +% +% The ``within'' counter specifies the counter which will be used to reset +% the counter of the floating environments |figure| and |table| . +% (Furthermore this setting will be used as default setting for +% |\Declare|\-|Floating|\-|Environment|.) +% +% So for example |within=chapter| will give you a numbering scheme +% \meta{chapter}.\meta{x} for floating environments, +% while |within=section| will give you a numbering scheme +% \meta{chapter}.\meta{section}.\meta{x}, or \meta{section}.\meta{x} +% if the document class does not offer |\chapter|. +% |within=none| will result in a continuous numbering throughout the document, +% i.e.~the numbering scheme will be simply \meta{x}. +% +% The option |chapterlistsgap=|\meta{value} sets the amount of the +% vertical gap inserted into the ``List of Figure'', ``List of Tables'', +% and all lists created with |\Declare|\-|Floating|\-|Environment| +% when a new chapter will be started. +% The default value is |10pt|. +% (This option will only be available if the document class used offer +% the usage of chapters, e.g.~the |book| or |report| document class.) +% +% \pagebreak[3] +% Both options can be changed later on, too, by using the command +% \begin{quote} +% |\newfloatsetup|\meta{options}\quad, +% \end{quote} +% +% \pagebreak[3] +% \section{\cs{DeclareFloatingEnvironment}} +% +% After loading \thispackage\ you can define your own floating environments with +% \begin{quote} +% \iffalse +% \setlength{\leftmargin}{6cm} +% \fi +% |\DeclareFloatingEnvironment|\oarg{options}\marg{type}% +% \iffalse +% \oarg{name}\oarg{list name} +% \fi +% \end{quote} +% where \meta{options} are one or more of +% \begin{quote}\begin{tabular}{r@{\,}l} +% |fileext=| & \meta{file extension}\\ +% |listname=| & \meta{list name}\\ +% |name=| & \meta{prosa name}\\ +% |placement=| & \meta{combination of \,\purett{htbp}}\\ +% |within=| & \meta{``within'' counter} \emph{or} \texttt{none}\\ +% |chapterlistsgaps=| & \texttt{on} \emph{or} \texttt{off}~\footnotemark[1] +% \end{tabular}\end{quote} +% \footnotetext[1]{Please note that although \thispackage\ tries hard to offer this +% option it may not be available or is working incorrectly in cooperation with +% your document class since there is no standard interface which we could use +% for that purpose. Therefore we have to try to patch the \cs{chapter} command, +% and if this fails, we try to patch \cs{addtocontents} (in an unusual way) instead.} +% +% If no \meta{options} are given, +% ``lo\meta{type}'' will be used as \meta{file extension} for the list, +% ``List of \meta{name}s'' as \meta{list name}. +% ``\meta{name}'' as \meta{name} (but with the first letter capitalized), +% ``|tbp|'' as \meta{placement} specifier, +% and ``|chapter|'' resp. ``|none|'' as \meta{``within'' counter}, +% i.e., the counter which resets the numbering. +% +% The default value of the |chapterlistsgaps=| option depends on the +% ``within'' setting, it is set to |on| if |chapter| or |section| is selected, +% otherwise it is set to |off|. +% (This option will only be available if the document class used offer +% the usage of chapters, e.g.~the |book| or |report| document class.) +% +% The list will be typeset using the command |\list|\-|of|\meta{type}|s| +% resp.~|\list|\-|of|\meta{type}|es|, +% analogous to |\list|\-|of|\-|figures| and |\list|\-|of|\-|tables|. +% +% If the \package{fltpage} package is loaded, an environment called +% |FP|\meta{type} will be defined additionally, same for |sideways|\meta{type} +% (\package{rotating} package), |SC|\meta{type} (\package{sidecap} package), +% and |wrap|\meta{type} (\package{wrapfig} package). +% +% \bigskip +% +% \pagebreak[3] +% So for example +% \begin{quote} +% |\DeclareFloatingEnvironment{diagram}| +% \end{quote} +% will define a new floating environment called |diagram|, +% the list will be stored in a file with the extension |lodiagram|, the name +% (used for the caption) will be ``Diagram'' and the list name +% ``List of Diagrams''. +% The list could be typeset with |\list|\-|of|\-|diagrams|. +% Dependent on which packages are loaded, the environments |FP|\-|diagram|, +% |sideways|\-|diagram|, |SC|\-|diagram|, and |wrap|\-|diagram| will be defined additionally. +% +% \pagebreak[3] +% Another example: +% \begin{quote} +% |\DeclareFloatingEnvironment[|\\ +% | fileext=lox,|\\ +% | listname={List of Matrixes},|\\ +% | name=Matrix,|\\ +% | placement=p,|\\ +% | within=section,|\\ +% | chapterlistsgaps=off|\\ +% | ]{matrixx}| +% \end{quote} +% will define a new floating environment called |matrixx| with the given settings. +% Please note that names which contain spaces needs to be enclosed in curly braces. +% +% \pagebreak[3] +% \section{\cs{SetupFloatingEnvironment}} +% +% While |\DeclareFloatingEnvironment| will create new floating environments, +% \begin{quote} +% |\SetupFloatingEnvironment|\marg{floating environment}\marg{options} +% \end{quote} +% will change the settings of existing ones, i.e. either |figure| or |table|, +% or a one created with |\Declare|\-|Floating|\-|Environment|, +% or a one created with |\new|\-|float| offered by the \package{float} package, +% or a one created with |\new|\-|float| offered by the \package{memoir} document class, +% or a one created with |\Declare|\-|New|\-|Float|\-|Type| offered by the \package{floatrow} package, +% or \ldots +% +% The \meta{options} are the same as the options for +% |\Declare|\-|Floating|\-|Environment|, +% but one should avoid changing the file extension +% of existing floating environments, +% i.e.~using the |fileext=| option within |\Setup|\-|Floating|\-|Environment| +% is usually a very bad idea. +% +% \bigskip +% +% \pagebreak[3] +% An example: +% \begin{quote} +% |\SetupFloatingEnvironment{lstlisting}{chapterlistsgaps=off}| +% \end{quote} +% will switch off the chapter lists gaps for |lstlisting| environments +% offered by the \package{listings} package. +% +% \pagebreak[3] +% \section{\cs{ForEachFloatingEnvironment}} +% +% \begin{quote} +% |\ForEachFloatingEnvironment|\marg{code with \#1} +% \end{quote} +% will execute the given \meta{code} for all known floating environments, +% and for ones defined with |\Declare|\-|Floating|\-|Environment| later on. +% +% \pagebreak[3] +% So for example the \package{subcaption} packages uses +% \begin{quote} +% |\ForEachFloatingEnvironment{\DeclareCaptionSubType{#1}}| +% \end{quote} +% for initializing itself for all floating environments which are +% known to \thispackage. +% +% \medskip +% +% There is also a starred variant |\For|\-|Each|\-|Floating|\-|Environment*| +% which will execute the given code for already existing floating environments +% only, i.e.~no hook will be placed inside |\Declare|\-|Floating|\-|Environment|. +% +% \pagebreak[3] +% An example: +% \begin{quote} +% |\ForEachFloatingEnvironment*{\typeout{#1}}| +% \end{quote} +% will typeout the names of all already known floating environments to the terminal +% and log file. +% +% \pagebreak[3] +% \section{\cs{PrepareListOf}} +% +% Unfortunately there is no standardized way of typesetting and customizing +% lists of floating environments, i.e.~every document class offers it's own stuff here, +% and there are plenty of \LaTeXe\ packages for this purpose. +% +% \pagebreak[3] +% For that reason the \thispackage\ simply typesets the lists of newly +% defined floating environments as ``List of Figure'' internally (using |\list|\-|of|\-|figure|) +% but using a different list (the right one, of course) and using a different list name, +% the one you have specified with either |\Declare|\-|Floating|\-|Environment| or +% |\Setup|\-|Floating|\-|Environment|.\footnote{Please note that this is not the +% fact when using a \KOMAScript\ document class, not \cs{listoffigure} but \cs{listoftoc} +% will be used here, and therefore no problems should occur.} +% +% \pagebreak[3] +% While this usually results in the same layout as the ``List of Figure'' and +% is sufficient for most cases, there are some cases where this might +% lead to an unwanted side effect. +% +% \pagebreak[3] +% Therefore the \thispackage\ offers +% \begin{quote} +% |\PrepareListOf|\marg{floating environment}\marg{code} +% \end{quote} +% which will execute the given \meta{code} right before actually typesetting the list +% with |\list|\-|of|\-|figures| internally. +% +% \pagebreak[3] +% One example: +% \begin{quote} +% |\PrepareListOf{diagram}{%|\\ +% | \renewcommand{\cftfigpresnum}{Diagram~}}| +% \end{quote} +% will change the part typeset in front of the diagram number within the +% ``List of Diagrams'' when using the \package{tocloft} package~\cite{tocloft}. +% Without the code above you will get the part defined for figures instead. +% +% \pagebreak[3] +% However, when dealing with the \package{tocloft} package it's a better +% idea not to use |\Prepare|\-|List|\-|Of| but the customization facilities of that package +% instead, e.g.: +% \begin{quote} +% |\documentclass{book}|\\ +% \ldots\\ +% |\usepackage{newfloat,tocloft}|\\ +% |\newlistof{diagram}{lod}{List of Diagrams}|\\ +% |\DeclareFloatingEnvironment[name=Diagram,fileext=lod]{diagram}|\\ +% | % Note: Due of a bug in tocloft the file extension|\\ +% | % must be repeated at \DeclareFloatingEnvironment,|\\ +% | % otherwise you will get an empty list.|\\ +% ||\\ +% |% Customize `List of Figures'|\\ +% |\renewcommand{\cftfigpresnum}{Figure~}|\\ +% |\setlength{\cftfignumwidth}{2cm}|\\ +% ||\\ +% |% Customize `List of Diagrams'|\\ +% |\renewcommand{\cftdiagrampresnum}{Diagram~}|\\ +% |\setlength{\cftdiagramnumwidth}{2cm}|\\ +% ||\\ +% \ldots\\ +% ||\\ +% |\begin{document}|\\ +% \ldots\\ +% |\listoffigures|\\ +% |\listofdiagrams|\\ +% \ldots\\ +% |\end{document}| +% \end{quote} +% +% \iffalse +% \pagebreak[3] +% \section{For \LaTeX{} package authors} +% +% |\For|\-|Each|\-|Floating|\-|Environment| without \package{newfloat} package: +% \begin{quote} +% |\newcommand\mypackage@foreachfloat[1]{%|\\ +% | \@ifundefined{ForEachFloatingEnvironment}%|\\ +% | {\def\@elt##1{#1}%|\\ +% | \@ifundefined{c@figure}\@gobble\@elt{figure}%|\\ +% | \@ifundefined{c@table}\@gobble\@elt{table}%|\\ +% | \let\@elt\relax|\\ +% | \newfloat@addtohook{#1}}%|\\ +% | {\ForEachFloatingEnvironment{#1}}}|\\ +% |\providecommand\newfloat@addtohook[1]{%|\\ +% | \toks@=\expandafter{\newfloat@hook{##1}#1}%|\\ +% | \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}%|\\ +% | \@tempa}|\\ +% |\providecommand*\newfloat@hook[1]{}| +% \end{quote} +% +% \pagebreak[3] +% Adding environment to list of floating environments: +% \begin{quote} +% |\SetupFloatingEnvironment|\marg{environment}|{}| +% \end{quote} +% or (without \package{newfloat} package loaded): +% \begin{quote} +% |\providecommand\newfloat@list{}|\\ +% |\@cons\newfloat@list{|\marg{environment}|}| +% \end{quote} +% (Please note the doubled curly braces around the environment name.) +% \fi +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \StopEventually{%^^A +% \pagebreak[4] +% \begin{thebibliography}{9} +% +% \bibitem{memoir} +% Peter Wilson:\\ +% \href{http://www.ctan.org/pkg/memoir}% +% {\emph{The Memoir Class for Configurable Typesetting}},\\ +% 2011/03/06 +% +% \bibitem{NTGclasses} +% Victor Eijkhout:\\ +% \href{http://www.ctan.org/pkg/ntgclass}% +% {\emph{An introduction to the Dutch \LaTeX\ document classes}},\\ +% \mbox{3~September~1989} +% +% \bibitem{KOMAScript} +% Markus Kohm \& Jens-Uwe-Morawski:\\ +% \href{http://www.ctan.org/pkg/koma-script}% +% {\emph{KOMA-Script -- a versatile \LaTeXe\ bundle}},\\ +% 2012-07-22 +% +% \bibitem{float} +% Anselm Lingnau:\\ +% \href{http://www.ctan.org/pkg/float}% +% {\emph{An Improved Environment for Floats}},\\ +% 2001/11/08 +% +% \bibitem{fltpage} +% Sebastian Gross:\\ +% \href{http://www.ctan.org/pkg/fltpage}% +% {\emph{Welcome to the beta test of fltpage package!}},\\ +% 1998/11/13 +% +% \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{sidecap} +% Rolf Niepraschk \& Hubert G\"a\ss lein:\\ +% \href{http://www.ctan.org/pkg/sidecap}% +% {\emph{The sidecap package}},\\ +% 2003/06/06 +% +% \bibitem{tocloft} +% Peter Wilson, Herries Press, Will Robertson:\\ +% \href{http://www.ctan.org/pkg/tocloft}% +% {\emph{The tocloft package}},\\ +% 2010/10/13 +% +% \bibitem{wrapfig} +% Donald Arseneau:\\ +% \href{http://www.ctan.org/pkg/wrapfig}% +% {\emph{WRAPFIG.STY ver 3.6}},\\ +% 2003/01/31 +% +% \end{thebibliography} +% } +% +% \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,\@gobbletwo,\@gobblethree,\@gobblefour,\@hangfrom} +% \DoNotIndex{\@ifnextchar,\@ifpackagelater,\@ifpackageloaded} +% \DoNotIndex{\@ifstar,\@ifundefined,\@latex@error,\@namedef,\@nameuse} +% \DoNotIndex{\@onlypreamble,\@parboxrestore,\@plus,\@ptionlist} +% \DoNotIndex{\@removeelement,\@restorepar,\@secondoftwo,\@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{\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} +% \changes{v1.0}{2011/10/30}{First release as \package{newfloat} package, +% outsourced from the \package{caption3} package and revised} +% \changes{v1.1}{2013/04/27}{Adapted to the \package{tocloft} package} +% \changes{v1.1}{2013/04/27}{New command \cs{PrepareListOf} added} +% \changes{v1.1d}{2019/03/16}{Adapted to the \package{dgruyter} package} +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \clearpage +% \section{The Implementation} +% \iffalse +%<*package> +% \fi +% +% \pagebreak[3] +% \subsection{Identification} +% +% 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{v1.0}{2011-10-30}{newfloat_v1.0.sty} +\DeclareCurrentRelease{v1.1}{2013-05-12} % 1st CTAN release of v1.1 +% \end{macrocode} +% +% Identify the current version of the package. +% \begin{macrocode} +\ProvidesPackage{newfloat}[2021/02/27 v1.1p Defining new floating environments (AR)] +% \end{macrocode} +% +% \begin{macro}{\newfloat@Info} +% \begin{macro}{\newfloat@InfoNoLine} +% |\newfloat@Info|\marg{message} +% \begin{macrocode} +\newcommand*\newfloat@Info[1]{% + \PackageInfo{newfloat}{#1}} +\newcommand*\newfloat@InfoNoLine[1]{% + \newfloat@Info{#1\@gobble}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newfloat@Warning} +% \begin{macro}{\newfloat@WarningNoLine} +% |\newfloat@Warning|\marg{message} +% \begin{macrocode} +\newcommand*\newfloat@Warning[1]{% + \PackageWarning{newfloat}{#1}} +\newcommand*\newfloat@WarningNoLine[1]{% + \newfloat@Warning{#1\@gobble}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newfloat@Error} +% |\newfloat@Error|\marg{message} +% \begin{macrocode} +\newcommand*\newfloat@Error[1]{% + \PackageError{newfloat}{#1}\newfloat@eh} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@eh{% + If you do not understand this error, please take a closer look\MessageBreak + at the documentation of the `newfloat' package.\MessageBreak\@ehc} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{Using the keyval package} +% +% We need the \package{keyval} package for option handling, so we load it here. +% \begin{macrocode} +\RequirePackage{keyval}[1997/11/10] +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Helper macros} +% +% \begin{macro}{\newfloat@def} +% \changes{v1.1}{2013/04/27}{This macro added} +% |\newfloat@def|\marg{macro name}\marg{definition} +% \begin{macrocode} +\newcommand*\newfloat@def[2]{% + \newfloat@ifundefined{#1}{% + \@namedef{#1}{#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@let} +% \changes{v1.1}{2013/04/27}{This macro added} +% |\newfloat@let|\marg{macro name}\marg{macro} +% \begin{macrocode} +\newcommand*\newfloat@let[2]{% + \newfloat@ifundefined{#1}{% + \expandafter\let\csname #1\endcsname#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@ifundefined} +% \changes{v1.1}{2013/04/27}{This macro added} +% |\newfloat@ifundefined|\marg{macro name}\marg{code} +% \begin{macrocode} +\newcommand*\newfloat@ifundefined[2]{% + \@ifundefined{#1}{#2}{% + \newfloat@Info{% + \expandafter\string\csname#1\endcsname\space is already defined}}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{DeclareFloatingEnvironment}} +% +% \begin{macro}{\DeclareFloatingEnvironment} +% \changes{v1.0a}{2011/11/16}{Bugfix: Undefines \cs{fst@}\meta{environment} now} +% \changes{v1.1}{2013/04/27}{Revised, only defines stuff yet undefined now} +% \changes{v1.1}{2013/11/03}{Uses \cs{newfloat@capitalize} now} +% \changes{v1.1}{2015/09/16}{Support of \cs{autodot} (offered by the \KOMAScript\ classes) added} +% \changes{v1.1}{2018/03/04}{Usage of \cs{ifdefined} replaced by \cs{@ifundefined} to improve compatibility with the \package{listings} package} +% \changes{v1.1b}{2018/12/26}{Bugfix: Missing curly braces added} +% \changes{v1.1c}{2019/01/10}{Bugfix: Support of \cs{autodot} fixed} +% \changes{v1.1k}{2019/09/01}{Adapted to the \class{beamer} document class} +% |\DeclareFloatingEnvironment|\oarg{options}\marg{environment}\oarg{name}\oarg{list name} +% \begin{macrocode} +\newcommand*\DeclareFloatingEnvironment{% + \@testopt\@DeclareFloatingEnvironment{}} +\@onlypreamble\DeclareFloatingEnvironment +% \end{macrocode} +% \begin{macrocode} +\def\@DeclareFloatingEnvironment[#1]#2{% + \newfloat@Info{New float `#2' with options `#1'}% +% \end{macrocode} +% Define a counter with the same name as the floating environment +% \begin{macrocode} + \newfloat@ifundefined{c@#2}{\newcounter{#2}}% +% \end{macrocode} +% Set |\ftype@|\meta{type} which contains the type number for floats of type \meta{type}\par +% (See also \url{http://tex.stackexchange.com/q/32359/2574}) +% \begin{macrocode} + \@ifundefined{c@float@type}% from float package + {\@ifundefined{c@newflo@tctr}% from memoir document class + {\ifdefined\newfloat@ftype \else + \newcount\newfloat@ftype + \newfloat@ftype=8\relax + \fi + \expandafter\xdef\csname ftype@#2\endcsname{\the\newfloat@ftype}% + \advance\newfloat@ftype\newfloat@ftype}% + {\expandafter\edef\csname ftype@#2\endcsname{\the\c@newflo@tctr}% + \advance\c@newflo@tctr \c@newflo@tctr}}% + {\expandafter\edef\csname ftype@#2\endcsname{\the\value{float@type}}% + \addtocounter{float@type}{\value{float@type}}}% +% \end{macrocode} +% \begin{macrocode} + \newfloat@Info{float type `#2'=\@nameuse{ftype@#2}}% +% \end{macrocode} +% Define |\fnum@|\meta{type}, a macro to generate the figure number for a caption +% \begin{macrocode} + \newfloat@def{fnum@#2}% + {\@nameuse{#2name}\nobreakspace\@nameuse{the#2}% + \ifdefined\autodot\expandafter\autodot\fi}% +% \end{macrocode} +% Define |\|\meta{type}|name| used by |\fnum@|\meta{type} as \meta{type}, +% but with first letter capitalized +% \begin{macrocode} + \newfloat@capitalize\newfloat@Type{#2}% + \newfloat@let{#2name}{\newfloat@Type}% + \newfloat@def{fleg#2}{\@nameuse{#2name}}% legend naming (memoir) +% \end{macrocode} +% Legend name in ToC (memoir document class) +% \begin{macrocode} + \newfloat@ifundefined{flegtoc#2}{\@namedef{flegtoc#2}##1{}}% +% \end{macrocode} +% Define the floating environment\par +% If the \class{tufte} document class is loaded, +% |\@tufte@float| and |\end@tufte@float| will be used instead of +% |\@float|, |\end@float|, |\@dblfloat|, and |\end@dblfloat|.\par +% If the \class{beamer} document class is loaded, +% |\beamer@float| and |\end@beamer@float| will be used. +% \begin{macrocode} + \ifcsname @tufte@float\endcsname + \newenvironment{#2}[1][htbp]% + {\begin{@tufte@float}[{##1}]{#2}{}}% + {\end{@tufte@float}}% + \newenvironment{#2*}[1][htbp]% + {\begin{@tufte@float}[{##1}]{#2}{star}}% + {\end{@tufte@float}}% + \else + \@ifclassloaded{beamer}{% + \newenvironment{#2}[1][]{\beamer@float{#2}}{\end@beamer@float}% + }{% + \newenvironment{#2}{\@float{#2}}{\end@float}% + \newenvironment{#2*}{\@dblfloat{#2}}{\end@dblfloat}% + }% + \fi +% \end{macrocode} +% Define the listing command |\listof|\meta{type}(|e|)|s| +% \changes{v1.1}{2013/04/27}{Definition of list hook added} +% \begin{macrocode} + \newfloat@def{listof#2}{\newfloat@listof{#2}}% + \newfloat@def{listof#2s}{\@nameuse{listof#2}}% + \newfloat@def{listof#2es}{\@nameuse{listof#2s}}% + \newfloat@def{newfloat@listof#2@hook}{}% + \ifdefined\l@figure + \newfloat@let{l@#2}{\l@figure}% + \else + \newfloat@def{l@#2}{\@dottedtocline{1}{1.5em}{2.3em}}% + \fi + \edef\newfloat@tempa{List of \newfloat@Type s}% + \newfloat@let{list#2name}{\newfloat@tempa}% +% \end{macrocode} +% We undefine |\fst@|\meta{environment} so the new environment +% will not be recognized as defined by the \package{float} package. +% (|\fst@|\meta{type} use to hold the float style, see \package{float} package +% implementation for details.) +% \begin{macrocode} + \expandafter\let\csname fst@#2\endcsname\@undefined +% \end{macrocode} +% Set default parameters +% \begin{macrocode} + \newfloat@ifundefined{fps@#2}{\newfloat@setplacement{#2}{tbp}}% + \newfloat@ifundefined{ext@#2}{\newfloat@setfileext{#2}{lo#2}}% +% \end{macrocode} +% Apply given options +% \begin{macrocode} + \newfloat@setoptions*{#2}{#1}% +% \end{macrocode} +% Announce the new floating environment to other packages +% \begin{macrocode} + \@expandtwoargs\newfloat@announce{#2}{\@nameuse{ext@#2}}% +% \end{macrocode} +% Apply the last two optional arguments for setting names +% \begin{macrocode} + \@ifnextchar[\newfloat@DFE@setname\relax} +\@onlypreamble\@DeclareFloatingEnvironment +% \end{macrocode} +% \begin{macrocode} +\def\newfloat@DFE@setname[#1]{% + \KV@@newfloat@name{#1}% + \@ifnextchar[\newfloat@DFE@setlistname\relax} +\@onlypreamble\newfloat@DFE@setname +% \end{macrocode} +% \begin{macrocode} +\def\newfloat@DFE@setlistname[#1]{% + \KV@@newfloat@listname{#1}} +\@onlypreamble\newfloat@DFE@setlistname +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@capitalize} +% \changes{v1.1}{2013/11/03}{Code extracted from \cs{DeclareFloatingEnvironment}} +% \changes{v1.1}{2013/11/03}{Uses \cs{newfloat@tempa} instead of \cs{@tempa} now} +% |\newfloat@capitalize|\marg{command}\marg{name}\\ +% Defines \meta{command} to \meta{name}, but with first letter capitalized. +% \begin{macrocode} +\newcommand*\newfloat@capitalize[2]{% + \edef\newfloat@tempa{\gdef\noexpand#1{\@car#2\@nil}}% + \uppercase\expandafter{\newfloat@tempa}% + \edef\newfloat@tempa{% + \noexpand\g@addto@macro\noexpand#1{\@cdr#2\@nil}}% + \newfloat@tempa} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@listof} +% \changes{v1.1}{2013/04/27}{Revised} +% \changes{v1.1g}{2019/08/28}{Starred variant added} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} +% |\newfloat@listof|\marg{float type}\\ +% typesets the list, using |\listoffigure| with patched list name and file extension. +% \begin{macrocode} +\newcommand*\newfloat@listof[1]{% + \@ifstar + {\newfloat@list@of{#1}*}% + {\newfloat@list@of{#1}\relax}} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@list@of[1]{% + \@expandtwoargs\newfloat@list@of@{#1}{\newfloat@ext{#1}}} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@list@of@[3]{% + \begingroup + \expandafter\let\expandafter\listfigurename\csname list#1name\endcsname + \def\ext@figure{#2}% + \let\newfloat@starttoc\@starttoc + \def\@starttoc##1{\newfloat@starttoc{#2}}% + \let\newfloat@listoftoc\listoftoc + \def\listoftoc##1{\newfloat@listoftoc{#2}}% + \@nameuse{newfloat@listof#1@hook}% + \listoffigures#3% + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setoptions} +% |\newfloat@setoptions*|\marg{environment}\marg{options} +% \begin{macrocode} +\newcommand*\newfloat@setoptions{% + \@ifstar + {\newfloat@@setoptions\@firstofone}% + {\newfloat@@setoptions\@gobble}} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@@setoptions[3]{% + \let\newfloat@within@value\@undefined + \let\newfloat@chapterlistsgaps@value\@undefined + #1{\KV@@newfloat@within\newfloat@within@default}% set default value for new floats + \def\newfloat@type{#2}% + \setkeys{@newfloat}{#3}% + \ifx\newfloat@within@value\@undefined \else + \newfloat@setoption{within}\newfloat@within@value + \fi + \ifx\newfloat@chapterlistsgaps@value\@undefined \else + \newfloat@setoption{chapterlistsgaps}\newfloat@chapterlistsgaps@value + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@within@default} +% The default `within' value. +% This one will be used if no option |within=|\meta{counter} is given. +% \begin{macrocode} +\newcommand*\newfloat@within@default{% + \ifcsname c@chapter\endcsname chapter\else none\fi} +\@onlypreamble\newfloat@within@default +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setoption} +% \changes{v1.1}{2015/09/15}{\cs{@expandtwoargs} replaced by own expansion so the option value do not get expanded anymore} +% \changes{v1.1m}{2020/10/11}{Usage of \cs{caption@tempa} replaced by \cs{newfloat@tempa}} +% |\newfloat@setoption|\marg{option name}{options} +% \begin{macrocode} +\newcommand*\newfloat@setoption[1]{% + \edef\newfloat@tempa{\noexpand\@nameuse{newfloat@set#1}{\newfloat@type}}% + \newfloat@tempa} +% \end{macrocode} +% \end{macro} +% +% The available \meta{options} are: +% |fileext=|\meta{file extension}, +% |listname=|\meta{list name}, +% |name=|\meta{prosa name}, +% |placement=|\meta{htbp}, +% |within=|\meta{none,chapter,section}, and +% |without|. +% +% \begin{macro}{\newfloat@setfileext} +% |\newfloat@setfileext|\marg{environment}\marg{file extension} +% \begin{macrocode} +\newcommand*\newfloat@setfileext[2]{% + \@namedef{ext@#1}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{fileext}{% + \newfloat@setoption{fileext}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setlistname} +% |\newfloat@setlistname|\marg{environment}\marg{list name} +% \begin{macrocode} +\newcommand*\newfloat@setlistname[2]{% + \@namedef{list#1name}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{listname}{% + \newfloat@setoption{listname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setname} +% |\newfloat@setname|\marg{environment}\marg{name} +% \begin{macrocode} +\newcommand*\newfloat@setname[2]{% + \newfloat@@setname{#1}{#2}% + \begingroup + \ifcsname languagename\endcsname + \ifcsname captions\languagename\endcsname + \expandafter\g@addto@macro\csname captions\languagename\endcsname + {\newfloat@@setname{#1}{#2}}% + \fi + \fi + \endgroup} +%%\AtBeginDocument{\let\newfloat@setname\newfloat@@setname} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@@setname[2]{% + \@namedef{#1name}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{name}{% + \newfloat@setoption{name}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setplacement} +% |\newfloat@setplacement|\marg{environment}\marg{float placement} +% \begin{macrocode} +\newcommand*\newfloat@setplacement[2]{% + \@namedef{fps@#1}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{placement}{% + \newfloat@setoption{placement}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setwithin} +% |\newfloat@setwithin|\marg{environment}\marg{counter}\par +% setup the counter for working ``within'' a given counter. +% Furthermore the chapters lists gap will be switched on +% (if counter $=$ |chapter|) or off (otherwise). +% \begin{macrocode} +\newcommand*\newfloat@setwithin[2]{% + \ifcsname c@chapter\endcsname + \@removefromreset{#1}{chapter}% + \fi + \@removefromreset{#1}{section}% +% \end{macrocode} +% \begin{macrocode} + \edef\@tempa{#2}% + \ifx\@tempa\@empty + \def\@tempa{none}% + \fi + \def\@tempb{none}% + \ifx\@tempa\@tempb + \ifcsname c@chapter\endcsname + \@chapterlistsgap@off{#1}% + \fi + \newfloat@@setwithin{#1}{}{}% + \else + \def\@tempb{chapter}% + \ifx\@tempa\@tempb + \@addtoreset{#1}{chapter}% + \@chapterlistsgap@on{#1}% + \newfloat@@setwithin{#1}{\ifnum\c@chapter>\z@ \thechapter.\fi}{\theHchapter.}% + \else + \def\@tempb{section}% + \ifx\@tempa\@tempb + \@addtoreset{#1}{section}% + \ifcsname c@chapter\endcsname + \@addtoreset{#1}{chapter}% + \@chapterlistsgap@on{#1}% + \newfloat@@setwithin{#1}{\thesection.}{\theHsection.}% + \else + \newfloat@@setwithin{#1}{\ifnum\c@section>\z@ \thesection.\fi}{\theHsection.}% + \fi + \else + \newfloat@Error{Invalid value `#2' for option `within'}% + \fi + \fi + \fi} +% \end{macrocode} +% Note: Since the \package{hyperref} package with version $<$ 6.82k defines +% |\the|\-|H|\-|figure| and |\the|\-|H|\-|table| with |\new|\-|command|, +% |\newfloat@@setwithin| will yield to an error message when using with an +% old version of \package{hyperref}, +% e.g. ``\texttt{LaTeX Error: Command \cs{theHfigure} already defined}''. +% \begin{macrocode} +\newcommand*\newfloat@@setwithin[3]{% + \global\@namedef{the#1}{#2\arabic{#1}}% + \global\@namedef{theH#1}{#3\arabic{#1}}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{within}{% + \def\newfloat@within@value{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setwithout} +% |\newfloat@setwithout|\marg{environment} +% \begin{macrocode} +\newcommand*\newfloat@setwithout[1]{% + \newfloat@setwithin{#1}{none}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{without}[]{% + \def\newfloat@within@value{none}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setchapterlistsgaps} +% |\newfloat@setchapterlistsgaps|\marg{environment}\marg{on/off} +% \begin{macrocode} +\newcommand*\newfloat@setchapterlistsgaps[2]{% + \edef\@tempa{#2}% + \newfloat@setchapterlistsgaps@{off}{off}{#1}% + \newfloat@setchapterlistsgaps@{false}{off}{#1}% + \newfloat@setchapterlistsgaps@{on}{on}{#1}% + \newfloat@setchapterlistsgaps@{true}{on}{#1}% + \ifx\@tempa\newfloat@setchapterlistsgaps@ \else + \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}% + \fi} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@setchapterlistsgaps@[3]{% + \def\@tempb{#1}% + \ifx\@tempa\@tempb + \newfloat@chapterlistsgap@{#2}{#3}% + \let\@tempa\newfloat@setchapterlistsgaps@ + \fi} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@chapterlistsgap@[1]{% + \@ifundefined{@chapterlistsgap@#1}% + {\@gobble}% + {\@nameuse{@chapterlistsgap@#1}}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{chapterlistsgaps}{% + \def\newfloat@chapterlistsgaps@value{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@removefromreset} +% This code was taken from the \package{remreset} package +% which is part of the `carlisle' package bundle. +% (Copyright 1997 David Carlisle) +% \begin{macrocode} +\providecommand*\@removefromreset[2]{{% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else + \noexpand\@elt{##1}% + \fi}% + \expandafter\xdef\csname cl@#2\endcsname{% + \csname cl@#2\endcsname}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@announce} +% \changes{v1.1n}{2021/02/27}{Defines \cs{newfloat@env@xxx} now instead of \cs{newfloat@ext@xxx}} +% |\newfloat@announce|\marg{environment name}\marg{list file extension} +% \begin{macrocode} +\newcommand*\newfloat@announce[2]{% +% \end{macrocode} +% \begin{macrocode} + \@cons\newfloat@list{{#1}}% + \@cons\newfloat@@list{{#1}}% +% \end{macrocode} +% \begin{macrocode} + \newfloat@ifundefined{newfloat@env@#2}{% + \@namedef{newfloat@env@#2}{#1}% +% \end{macrocode} +% Support of \package{memoir} document class +% \begin{macrocode} + \ifcsname c@lofdepth\endcsname + \newfloat@ifundefined{c@#2depth}{% + \newcounter{#2depth}% + \setcounter{#2depth}{1}}% + \fi +% \end{macrocode} +% Support of \package{tocbasic} package +% \begin{macrocode} + \ifcsname addtotoclist\endcsname + \addtotoclist[float]{#2}% + \newfloat@def{listof#2name}{\@nameuse{list#1name}}% + \fi +% \end{macrocode} +% \begin{macrocode} + }% +% \end{macrocode} +% Support of \package{titletoc} package +% \begin{macrocode} + \ifcsname contentsuse\endcsname + \contentsuse{#1}{#2}% + \fi +% \end{macrocode} +% \begin{macrocode} + \newfloat@hook{#1}} +\@onlypreamble\newfloat@announce +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@ext} +% \changes{v1.1n}{2021/02/27}{This macro added} +% |\newfloat@ext|\marg{environment} +% expands to the file extension used for the given \meta{environment}. +% \begin{macrocode} +\newcommand*\newfloat@ext[1]{\@nameuse{ext@#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@@list} +% |\newfloat@@list| is an \cs{@elt}-list containing the floating environments defined +% with |\Declare|\-|Floating|\-|Environment| only. +% \begin{macrocode} +\newcommand*\newfloat@@list{} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{SetupFloatingEnvironment}} +% +% \begin{macro}{\SetupFloatingEnvironment} +% |\SetupFloatingEnvironment|\marg{environment}\marg{options} +% \begin{macrocode} +\newcommand*\SetupFloatingEnvironment[1]{% + \newfloat@addtolist{#1}% + \newfloat@setoptions{#1}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{ForEachFloatingEnvironment}} +% +% \begin{macro}{\ForEachFloatingEnvironment} +% |\ForEachFloatingEnvironment|\marg{code with \#1}\par +% will execute the given code for each (known) floating environment. +% The starred variant will only work for already existing environments, +% i.e.~no hook will be placed inside |\Declare|\-|Floating|\-|Environment|. +% \begin{macrocode} +\newcommand*\ForEachFloatingEnvironment{% + \@ifstar + {\newfloat@foreach\@gobble}% + {\newfloat@foreach\@iden}} +% \end{macrocode} +% \begin{macrocode} +\newcommand\newfloat@foreach[2]{% + \def\@elt##1{#2}% + \newfloat@list + \let\@elt\relax + #1{\newfloat@addtohook{#2}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@addtohook} +% |\newfloat@addtohook|\marg{code with \#1}\par +% adds code to the hook called in |\Declare|\-|Floating|\-|Environment|.\par +% Note: We use |\provide|\-|command| instead of |\new|\-|command| here since the +% exact same code is defined for |\For|\-|Each|\-|Caption|\-|Type| offered by +% the \package{caption3} package. +% \begin{macrocode} +\providecommand\newfloat@addtohook[1]{% + \toks@=\expandafter{\newfloat@hook{##1}#1}% + \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}% + \@tempa} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@hook} +% Hook used in |\Declare|\-|Floating|\-|Environment|. +% \begin{macrocode} +\providecommand*\newfloat@hook[1]{} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{\cs{PrepareListOf}} +% +% \begin{macro}{\PrepareListOf} +% \changes{v1.1}{2013/04/27}{This macro added} +% |\PrepareListOf|\marg{float type}\marg{code}\\ +% adds \meta{code} to the one which prepares typesetting the list, +% just before |\listoffigures|. +% \begin{macrocode} +\newcommand\PrepareListOf[1]{% + \expandafter\g@addto@macro\csname newfloat@listof#1@hook\endcsname} +\@onlypreamble\PrepareListOf +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{The list of floating environments} +% +% \begin{macro}{\newfloat@list} +% |\newfloat@list| is an \cs{@elt}-list containing the already existising floating +% environments as well the ones defined with |\Declare|\-|Floating|\-|Environment|. +% \begin{macrocode} +\newcommand*\newfloat@list{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@addtolist} +% \changes{v1.0b}{2012/05/18}{Bugfix: Definition of \cs{@ifchapterlistsgap@}\meta{environment} added} +% \changes{v1.1n}{2021/02/27}{Defines \cs{newfloat@env@xxx} now instead of \cs{newfloat@ext@xxx}} +% |\newfloat@addtolist|\marg{environment} +% adds an environment to the list of floating environments. +% \begin{macrocode} +\newcommand*\newfloat@addtolist[1]{% + \newfloat@ifinlist{#1}{}{% + \ifcsname ext@#1\endcsname + \@cons\newfloat@list{{#1}}% + \@namedef{newfloat@env@\@nameuse{ext@#1}}{#1}% + \newfloat@let{@ifchapterlistsgap@#1}{\@iden}% + \else + \newfloat@Error{`#1' does not seem to be a floating environment}% + \fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@ifinlist} +% |\newfloat@ifinlist|\marg{environment}\marg{yes code}\marg{no code} +% tests if an environment is an element of the list of floating environments. +% \begin{macrocode} +\newcommand*\newfloat@ifinlist[1]{% + \let\next\@secondoftwo + \begingroup + \expandafter\let\csname c@#1\endcsname\newfloat@ifinlist + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\newfloat@ifinlist + \global\let\next\@firstoftwo + \fi}% + \newfloat@list + \endgroup + \next} +% \end{macrocode} +% \end{macro} +% +% Add |figure| and |table| to the list of floating environments. +% \begin{macrocode} +\ifcsname ext@figure\endcsname + \newfloat@addtolist{figure} +\fi +\ifcsname ext@table\endcsname + \newfloat@addtolist{table} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Chapter lists gaps} +% +% \begin{macrocode} +\ifcsname @chapter\endcsname +% \end{macrocode} +% +% \begin{macro}{\@chapterlistsgap} +% The amount of the chapter lists gap, the default one is |10pt|. +% (This command is already defined in \KOMAScript.) +% \begin{macrocode} + \providecommand*\@chapterlistsgap{10\p@}% +% \end{macrocode} +% If the \package{dgruyter} package is loaded, the default gap is |13pt|. +% \begin{macrocode} + \@ifpackageloaded{dgruyter}{\renewcommand*\@chapterlistsgap{13\p@}}{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@addchapterlistsgap} +% |\@addchapterlistsgap|\marg{float type}\marg{file extension}\par +% will add the chapter lists gap for the given float type. +% \begin{macrocode} + \providecommand*\@addchapterlistsgap[2]{% + \@nameuse{@ifchapterlistsgap@#1}{% if switched on + \@@addchapterlistsgap{#1}{#2}}} +% \end{macrocode} +% \begin{macrocode} + \providecommand*\@@addchapterlistsgap[2]{% + \@ifundefined{@addchapterlistsgap@#2}{% only once per extension + \@namedef{@addchapterlistsgap@#2}{#1}% + \@@@addchapterlistsgap{#2}}{}} +% \end{macrocode} +% \begin{macrocode} + \providecommand*\@@@addchapterlistsgap[1]{% + \ifdim \@chapterlistsgap>\z@ + \addtocontents{#1}{\protect\addvspace{\@chapterlistsgap}}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@addchapterlistsgaps} +% \changes{v1.0b}{2012/05/18}{Bugfix: Group added to make \cs{@addchapterlistsgap} work correctly} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} +% |\@addchapterlistsgaps|\par +% will add the chapter lists gaps for all floating environments in |\newfloat@list|. +% \begin{macrocode} + \providecommand*\@addchapterlistsgaps{% + \begingroup + \def\@elt##1{% + \@expandtwoargs\@addchapterlistsgap{##1}{\newfloat@ext{##1}}}% + \newfloat@list + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chapterlistsgap@off} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} +% |\@chapterlistsgap@off|\marg{float type}\par +% switches the chapter lists gap off for the given float type. +% Since \KOMAScript{} (still) supports |\float@exts| we need to handle +% this locally, too, even if |\unsettoc| is offered by the \package{tocbasic} package. +% (Otherwise our handling could be moved into the |\else| branch.) +% \begin{macrocode} + \providecommand*\@chapterlistsgap@off[1]{% + \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@gobble + \ifcsname unsettoc\endcsname + \@expandtwoargs\unsettoc{\newfloat@ext{#1}}{chapteratlist}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@chapterlistsgap@on} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} +% |\@chapterlistsgap@off|\marg{float type}\par +% switches the chapter lists gap on for the given float type. +% \begin{macrocode} + \providecommand*\@chapterlistsgap@on[1]{% + \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden + \ifcsname setuptoc\endcsname + \@expandtwoargs\setuptoc{\newfloat@ext{#1}}{chapteratlist}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Global options} +% +% \begin{macro}{chapterlistsgap=} +% The |chapterlistsgap=| option sets the vertical skip added to each list when +% starting a new chapter. +% \begin{macrocode} +\define@key{newfloat}{chapterlistsgap}{% + \renewcommand*\@chapterlistsgap{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{within=} +% The |within=| option redefines the default value and modifies all +% existing floating environments. +% \begin{macrocode} +\define@key{newfloat}{within}{% + \def\newfloat@within@default{#1}% set new default value + \def\@elt##1{\newfloat@setwithin{##1}{#1}}% + \newfloat@list + \let\@elt\relax} +% \end{macrocode} +% \begin{macrocode} +\define@key{newfloat}{without}[]{% + \KV@newfloat@within{none}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{figurename=} +% \begin{macro}{listfigurename=} +% \begin{macro}{figurewithin=} +% We define these options not only for |figure| but for all existing floating environments. +% \begin{macrocode} +\def\@elt#1{% + \define@key{newfloat}{#1name}{% + \newfloat@setname{#1}{##1}}% + \define@key{newfloat}{list#1name}{% + \newfloat@setname{list#1}{##1}}% + \define@key{newfloat}{#1within}{% + \newfloat@setwithin{#1}{##1}}% + \define@key{newfloat}{#1without}[]{% + \newfloat@setwithout{#1}}% +}% +\newfloat@list +\let\@elt\relax +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{planb=} +% \changes{v1.0b}{2012/05/18}{This option added} +% This option switches the `Plan B' on or off. (default$=$true) +% \begin{macrocode} +\define@key{newfloat}{planb}[true]{% + \def\@tempa{#1}% + \def\@tempb{false}% + \ifx\@tempa\@tempb + \let\newfloat@ifplanb\@gobble + \else + \def\@tempb{true}% + \ifx\@tempa\@tempb + \let\newfloat@ifplanb\@iden + \else + \newfloat@Error{Invalid value `#1' for option `planb'}% + \fi + \fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{planb-filext=} +% \changes{v1.0b}{2012/05/19}{This option added} +% This option sets the file extension used for `Plan B'. +% (default$=$use the 1st one which seem to fit) +% \begin{macrocode} +\define@key{newfloat}{planb-fileext}{% + \newfloat@Info{Setting Plan B file extension to `#1'} + \xdef\newfloat@addtocontents@ext{#1}} +% \end{macrocode} +% \end{macro} +% +% Process the package options: +% We use |\set|\-|keys| here instead of |\Process|\-|Options|. +% \begin{macrocode} +\let\@tempc\relax +\@expandtwoargs\setkeys{newfloat}{planb,\@ptionlist{\@currname.\@currext}}% +\AtEndOfPackage{\let\@unprocessedoptions\relax} +% \end{macrocode} +% +% \begin{macro}{\newfloatsetup} +% |\newfloatsetup|\marg{options} +% sets global options after loading the package. +% \begin{macrocode} +\newcommand*\newfloatsetup{\setkeys{newfloat}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{Patching \cs{chapter}} +% +% \begin{macro}{\newfloat@replace@chapter} +% \changes{v1.1f}{2019/08/25}{Parameter \meta{class name} added to macro} +% \changes{v1.1i}{2019/08/31}{Local definition of \cs{if@chapnum} added} +% \changes{v1.1o}{2021/02/27}{Support of the \package{algorithm2e} package added} +% |\newfloat@replace@chapter|\marg{class name}\marg{original code}\marg{replacement code}\par +% tries to patch |\@chapter| so |\@add|\-|chapter|\-|lists|\-|gaps| will be supported. +% It checks for |\Hy@org@chapter|, too, since the original code will be stored here +% if the \package{hyperref} package was loaded. +% \begin{macrocode} +\newcommand\newfloat@replace@chapter[3]{% + \begingroup + \let\if@twocolumn\iffalse + \let\if@mainmatter\iffalse + \let\if@thema\iffalse + \let\if@chapnum\iffalse + \def\@tempa[##1]##2{#2}% + \newfloat@replace@chapter@\@chapter{original}{#1}{#3}% + \newfloat@replace@chapter@\Hy@org@chapter{hyperref}{#1}{#3}% + \newfloat@replace@chapter@\algocf@original@chapter{algorithm2e}{#1}{#3}% + \endgroup} +% \end{macrocode} +% \begin{macrocode} +\newcommand\newfloat@replace@chapter@[4]{% + \ifx\@tempa#1% + \newfloat@InfoNoLine{Document class `#3' detected (#2)}% + \global\def#1[##1]##2{#4}% + \global\let\newfloat@replace@chapter\newfloat@dont@replace@chapter + \global\let\newfloat@replace@chapter@\@gobblefour + \fi} +% \end{macrocode} +% \begin{macrocode} +\newcommand\newfloat@dont@replace@chapter[3]{} +% \end{macrocode} +% \begin{macrocode} +\ifcsname @chapter\endcsname \else + \let\newfloat@replace@chapter\newfloat@dont@replace@chapter +\fi +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{Standard \LaTeX{} document classes} +% +% \begin{macrocode} +% report.cls [2005/09/16 v1.4f Standard LaTeX document class] +\newfloat@replace@chapter{report}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \begin{macrocode} +% book.cls [2005/09/16 v1.4f Standard LaTeX document class] +\newfloat@replace@chapter{book}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\AmS{} \& \SmF{} document classes} +% +% \begin{macrocode} +% amsbook.cls [2004/08/06 v2.20] +% smfbook.cls [1999/11/15 v1.2f Classe LaTeX pour les monographies editees par la SMF] +\newfloat@replace@chapter{amsbook}{% + \refstepcounter{chapter}% + \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty + \else \let\@secnumber\thechapter \fi + \typeout{\chaptername\space\@secnumber}% + \def\@toclevel{0}% + \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% + \else \@tocwriteb\tocchapter{chapter}{#2}\fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \@makechapterhead{#2}\@afterheading +}{% + \refstepcounter{chapter}% + \ifnum\c@secnumdepth<\z@ \let\@secnumber\@empty + \else \let\@secnumber\thechapter \fi + \typeout{\chaptername\space\@secnumber}% + \def\@toclevel{0}% + \ifx\chaptername\appendixname \@tocwriteb\tocappendix{chapter}{#2}% + \else \@tocwriteb\tocchapter{chapter}{#2}\fi + \chaptermark{#1}% + \@addchapterlistsgaps + \@makechapterhead{#2}\@afterheading} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\KOMAScript{} document classes} +% +% If a \KOMAScript{} document class or the \package{tocbasic} package is used +% we don't need to patch anything. +% Instead we use |\setup|\-|toc| and |\un|\-|set|\-|toc| to setup the +% chapters gap in |\@chapter|\-|lists|\-|gap@on| and |\@chapter|\-|lists|\-|gap@off|. +% \begin{macrocode} +\@ifpackageloaded{tocbasic}{% + \let\newfloat@replace@chapter\newfloat@dont@replace@chapter}{} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{memoir document classes} +% +% If the \package{memoir} document class is used, +% replacing |\insert|\-|chapter|\-|space| by |\@add|\-|chapter|\-|lists|\-|gaps| is sufficient. +% \begin{macrocode} +\ifcsname insertchapterspace\endcsname + \renewcommand*\insertchapterspace{\@addchapterlistsgaps} + \let\newfloat@replace@chapter\newfloat@dont@replace@chapter +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{NTG document classes} +% +% \begin{macrocode} +% rapport1/3.cls [2004/06/07 v2.1a NTG LaTeX document class] +\newfloat@replace@chapter{rapport}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% \begin{macrocode} +% boek(3).cls [2004/06/07 v2.1a NTG LaTeX document class] +\newfloat@replace@chapter{boek}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}\toc@font0 #1}% + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \else + \addcontentsline{toc}{chapter}{\toc@font0 #1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{The thesis document class} +% +% \begin{macrocode} +% thesis.cls [1996/25/01 1.0g LaTeX document class (wm).] +\newfloat@replace@chapter{thesis}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\chaptername\space\thechapter.} + \if@thema + \ifx\@shortauthor\@empty + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}% + \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% + \fi + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \chaptermark{#1} + \addtocontents{lof}{\protect\addvspace{10pt}} + \addtocontents{lot}{\protect\addvspace{10pt}} + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}] + \else + \@makechapterhead{#2} + \@afterheading + \fi +}{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\chaptername\space\thechapter.}% + \if@thema + \ifx\@shortauthor\@empty + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}% + \@shortauthor\hfill\mbox{}\vskip\normallineskip #1}% + \fi + \else + \addcontentsline{toc}{chapter}{% + \protect\numberline{\thechapter.}#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{The Springer Verlag document classes} +% \changes{v1.1f}{2019/08/25}{Support of \package{svmono} and \package{svmult} document classes added} +% +% \begin{macrocode} +% svmono.cls [2018/06/25 v5.6 Springer Verlag global LaTeX document class for monographs] +% svmult.cls [2018/01/11 v5.5 Springer Verlag global LaTeX document class for multi authored books] +\newfloat@replace@chapter{svmono}{% + \if@chapnum % war mal \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \if@mainmatter + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}{\protect + \numberline{\thechapter\thechapterend}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \if@chapnum % war mal \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \if@mainmatter + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}{\protect + \numberline{\thechapter\thechapterend}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{The dgruyter package} +% \changes{v1.1j}{2019/08/31}{Extended support of \package{dgruyter} package added} +% +% \begin{macrocode} +% dgruyter.sty [2017/09/19 v2.00 De Gruyter layout] +\newfloat@replace@chapter{dgruyter}{% + \let\thesection\theinchapsection + \let\theequation\theinchapequation + \let\thefigure\theinchapfigure + \let\thetable\theinchaptable + \ifx\bookDOI\@undefined + \else + \@tempcnta\numexpr\componentd@i+\@ne\relax + \xdef\componentd@i{\the\@tempcnta}% + \xdef\@DOI{% + https://doi.org/\bookDOI + -\ifx\thepage\thefrontmatterpage2\else\ifnum\@tempcnta<100 0\fi\fi + \ifnum\@tempcnta<10 0\fi\componentd@i}% + \fi + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{schapter}{#1}% + \fi + \else + \addcontentsline{toc}{schapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{13\p@}}% + \addtocontents{lot}{\protect\addvspace{13\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi +}{% + \let\thesection\theinchapsection + \let\theequation\theinchapequation + \let\thefigure\theinchapfigure + \let\thetable\theinchaptable + \ifx\bookDOI\@undefined + \else + \@tempcnta\numexpr\componentd@i+\@ne\relax + \xdef\componentd@i{\the\@tempcnta}% + \xdef\@DOI{% + https://doi.org/\bookDOI + -\ifx\thepage\thefrontmatterpage2\else\ifnum\@tempcnta<100 0\fi\fi + \ifnum\@tempcnta<10 0\fi\componentd@i}% + \fi + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{schapter}{#1}% + \fi + \else + \addcontentsline{toc}{schapter}{#1}% + \fi + \chaptermark{#1}% + \@addchapterlistsgaps + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{Compatibility warning} +% +% \begin{macrocode} +\ifx\newfloat@replace@chapter\newfloat@dont@replace@chapter \else +% \end{macrocode} +% If we were not able to patch |\@chapter| an info message is issued +% since we may not be able to support chapter lists gaps then. +% \begin{macrocode} + \newfloat@InfoNoLine{% + Unsupported document class, or \noexpand\@chapter\MessageBreak + was already redefined by another package} + \newfloat@InfoNoLine{\string\@chapter\space=\space\meaning\@chapter} + \newfloat@InfoNoLine{\string\Hy@org@chapter\space=\space\meaning\Hy@org@chapter} + \newfloat@InfoNoLine{\string\algocf@original@chapter\space=\space\meaning\algocf@original@chapter} +% \end{macrocode} +% Plan B: We patch |\add|\-|to|\-|contents| instead, and keep our fingers crossed +% in the hope that this redefinition actually will fit. +% (Note: Since \package{biblatex} patches |\add|\-|to|\-|contents| as well we do +% this using |\At||Begin||Document|.) +% \changes{v1.1f}{2019/08/25}{Plan B will now be done using \cs{AtBeginDocument}} +% \begin{macrocode} + \newfloat@ifplanb{\AtBeginDocument{% + \newfloat@InfoNoLine{Trying Plan B..}% + \let\newfloat@addtocontents@ORI\addtocontents + \long\def\addtocontents#1#2{% + \newfloat@addtocontents{#1}{#2}#2\addvspace\newfloat@nil}% + \long\def\newfloat@addtocontents#1#2#3\addvspace#4\newfloat@nil{% + \def\newfloat@tempa{#4}% + \ifx\newfloat@tempa\@empty + \newfloat@addtocontents@ORI{#1}{#2}% + \else + \ifx\newfloat@addtocontents@ext\@undefined + \newfloat@Info{Setting Plan B file extension to `#1'...}% + \xdef\newfloat@addtocontents@ext{#1}% + \fi + \edef\newfloat@tempa{#1}% + \ifx\newfloat@tempa\newfloat@addtocontents@ext + \begingroup + \let\addtocontents\newfloat@addtocontents@ORI + \@addchapterlistsgaps + \endgroup + \fi + \fi}}} +% \end{macrocode} +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \pagebreak[3] +% \subsection{Support of document classes} +% +% \subsubsection{The beamer document class} +% +% \begin{macro}{\beamer@float} +% \changes{v1.1k}{2019/09/01}{This macro added} +% Unfortunately the \class{beamer} document class does not offer +% |\beamer@float| and |\end@beamer@float| (yet), so we have to define them +% for ourself. +% (This code was taken from beamerbaselocalstructure.sty [2019/07/23 v3.56] and adapted.) +% \begin{macrocode} +\ifcsname beamer@float\endcsname \else +% \end{macrocode} +% \begin{macrocode} + \def\beamer@float#1{% + \ifcsname caption@settype\endcsname + \caption@settype{#1}% + \else + \def\@captype{#1}% + \fi + \par\nobreak\begin{center}\nobreak} +% \end{macrocode} +% \begin{macrocode} + \def\end@beamer@float{% + \par\nobreak\end{center}} +% \end{macrocode} +% \begin{macrocode} +\fi +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsection{Support of other packages} +% +% \begin{macro}{\newfloat@IfPackageLoaded} +% \changes{v1.1e}{2019/03/17}{This macro revised} +% \changes{v1.1h}{2019/08/31}{This macro revised again and renamed from \cs{newfloat@ForEachNew} to \cs{newfloat@IfPackageLoaded}} +% |\newfloat@IfPackageLoaded|\marg{package name}\marg{command}\marg{code} +% will execute the given code for every floating environment defined with +% |\Declare|\-|Floating|\-|Environment| if \meta{command} is not defined yet. +% (If \meta{command} is already defined a warning will be issued.) +% This will be tried |\At|\-|Begin|\-|Document| additionally so the affected package could +% be loaded after \thispackage. +% \begin{macrocode} +\newcommand\newfloat@IfPackageLoaded[3]{% + \@ifpackageloaded{#1}{% + \newfloat@@IfPackageLoaded{#1}{#2}{#3}% + }{% + \AtBeginDocument{% + \@ifpackageloaded{#1}{% + \newfloat@@IfPackageLoaded{#1}{#2}{#3}% + }{}}% + }} +\@onlypreamble\newfloat@IfPackageLoaded +% \end{macrocode} +% \begin{macrocode} +\newcommand\newfloat@@IfPackageLoaded[3]{% + \newfloat@InfoNoLine{`#1' package detected}% + % Execute code for every previous \DeclareFloatingEnvironment + \def\@elt##1{\newfloat@@@IfPackageLoaded{#1}{#2}{#3}}% + \newfloat@@list + \let\@elt\relax + % Execute code for every future \DeclareFloatingEnvironment + \newfloat@addtohook{\newfloat@@@IfPackageLoaded{#1}{#2}{#3}}} +\@onlypreamble\newfloat@@IfPackageLoaded +% \end{macrocode} +% \begin{macrocode} +\newcommand\newfloat@@@IfPackageLoaded[3]{% + \ifcsname#2\endcsname + \newfloat@WarningNoLine{% + Command \@backslashchar#2 already defined.\MessageBreak + (`#1' package support)}% + \else + #3% + \fi} +\@onlypreamble\newfloat@@@IfPackageLoaded +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{\package{dgruyter}} +% +% The De Gruyter layout package (for preparing books for Walter de Gruyter GmbH) +% is defining |\plist@figure| and |\plist@table|, and expects this to be +% defined for other floating environments as well. +% (This will be used as prefix for the ``List of''.) +% \begin{macrocode} +\newfloat@IfPackageLoaded{dgruyter}{plist@#1}{% + \expandafter\newcommand\csname plist@#1\endcsname{% + \@nameuse{#1name}\space}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{float}} +% +% If the \package{float} package is used we fill up |\float@exts| with our file +% extensions, too. Since this list will be used for inserting chapters gaps +% we only add the ones which are configured for chapters gaps on.\par +% Note: This has to be done |\At|\-|Begin|\-|Document| so the settings for +% chapter gaps could be changed by the user within the preamble of the document. +% \begin{macrocode} +\AtBeginDocument{% + \ifcsname float@exts\endcsname + \newfloat@@IfPackageLoaded{float}{newfloat@undefined}{% + \@nameuse{@ifchapterlistsgap@#1}{% if switched on + \let\float@do=\relax + \edef\@tempa{% + \noexpand\float@exts{\the\float@exts\float@do{\@nameuse{ext@#1}}}}% + \@tempa}}% + \fi} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{fltpage}} +% +% We define a FP-variant of new floating environments here. +% \begin{macrocode} +\newfloat@IfPackageLoaded{fltpage}{FP#1}{% + \newcounter{FP@#1C}% + \newenvironment{FP#1}{\FP@floatBegin{#1}}{\FP@floatEnd}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{listings}} +% +% \begin{macro}{\ext@lstlisting} +% Since the \package{listings} package do not define |\ext@lst|\-|listing| +% but we needed it when |Setup|\-|Floating|\-|Environment{lst|\-|listing}{|\ldots|}| +% will be done by the end user, we define it here. +% \begin{macrocode} +\providecommand*\ext@lstlisting{lol}% +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{\package{rotating}} +% +% We define a sideways-variant of new floating environments here. +% \begin{macrocode} +\newfloat@IfPackageLoaded{rotating}{sideways#1}{% + \newenvironment{sideways#1}{\@rotfloat{#1}}{\end@rotfloat}% + \newenvironment{sideways#1*}{\@rotdblfloat{#1}}{\end@rotdblfloat}} +% \end{macrocode} +% +% \pagebreak[3] +% \subsubsection{\package{sidecap}} +% +% We define a SC-variant of new floating environments here. +% \begin{macro}{\SC@float} +% \changes{v1.1b}{2018/12/26}{Bugfix: Missing curly braces added} +% \begin{macrocode} +\newcommand*\newfloat@For@SC[2]{% + \def#1{b}% = \sidecaptionvpos{#2}{b} (v1.6) + \newenvironment{SC#2}% + {\SC@float[{#1}]{#2}}{\endSC@float}% + \newenvironment{SC#2*}% + {\SC@dblfloat[{#1}]{#2}}{\endSC@dblfloat}} +\@onlypreamble\newfloat@For@SC +% \end{macrocode} +% \begin{macrocode} +\newfloat@IfPackageLoaded{sidecap}{SC#1}{% + \expandafter\newfloat@For@SC\csname SC@#1@vpos\endcsname{#1}} +% \end{macrocode} +% \end{macro} +% +% \pagebreak[3] +% \subsubsection{\package{wrapfig}} +% +% We define a wrap-variant of new floating environments here. +% \begin{macrocode} +\newfloat@IfPackageLoaded{wrapfig}{wrap#1}{% + \newenvironment{wrap#1}{\wrapfloat{#1}}{\endwrapfloat}} +% \end{macrocode} +% +% \iffalse +%</package> +% \fi +% +% \iffalse +% --------------------------------------------------------------------------- % +% \fi +% +% \Finale +% +\endinput + diff --git a/Master/texmf-dist/source/latex/newfloat/newfloat.dtx b/Master/texmf-dist/source/latex/newfloat/newfloat.dtx index eed00a0f96b..a3327248643 100644 --- a/Master/texmf-dist/source/latex/newfloat/newfloat.dtx +++ b/Master/texmf-dist/source/latex/newfloat/newfloat.dtx @@ -2,7 +2,7 @@ % % This is file `newfloat.dtx'. % -% Copyright (C) 2011-2019 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) +% Copyright (C) 2011-2023 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) % % -------------------------------------------------------------------------- % @@ -14,21 +14,18 @@ % 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 has the LPPL maintenance status "unmaintained". % % This work consists of the files newfloat.ins, newfloat.dtx, % and the derived file newfloat.sty. % % \fi -% \CheckSum{1609} +% \CheckSum{1665} % % \iffalse %<*driver> \NeedsTeXFormat{LaTeX2e}[1994/12/01] -\ProvidesFile{newfloat.drv}% - [2013/04/27 v1.1 This package offers a command for defining new floating environments] +\ProvidesFile{newfloat.drv}[2023/10/01 v1.2 This package offers a command for defining new floating environments] \hbadness=9999 \newcount\hbadness \hfuzz=48pt % Make TeX shut up. % \documentclass{ltxdoc} @@ -71,11 +68,11 @@ % \newcommand*\purerm[1]{{\upshape\mdseries\rmfamily #1}} % \newcommand*\puresf[1]{{\upshape\mdseries\sffamily #1}} % \newcommand*\purett[1]{{\upshape\mdseries\ttfamily #1}} -% \let\class\puresf \let\package\puresf +% \let\cls\puresf \let\pkg\puresf % \let\env\purett \let\opt\purett % -% \def\thispackage{the \package{newfloat} package} -% \def\Thispackage{The \package{newfloat} package} +% \def\thispackage{the \pkg{newfloat} package} +% \def\Thispackage{The \pkg{newfloat} package} % % \newcommand*\csmarg[1]{\texttt{\char`\{#1\char`\}}} % \newcommand*\csoarg[1]{\texttt{\char`\[#1\char`\]}} @@ -163,6 +160,8 @@ % |fileext=| & \meta{file extension}\\ % |listname=| & \meta{list name}\\ % |name=| & \meta{prosa name}\\ +% |autorefname=| & \meta{name used in \cs{autoref} offered by \pkg{hyperref}}\\ +% |legendname=| & \meta{name used in \cs{legend} offered by \cls{memoir}}\\ % |placement=| & \meta{combination of \,\purett{htbp}}\\ % |within=| & \meta{``within'' counter} \emph{or} \texttt{none}\\ % |chapterlistsgaps=| & \texttt{on} \emph{or} \texttt{off}~\footnotemark[1] @@ -176,7 +175,7 @@ % If no \meta{options} are given, % ``lo\meta{type}'' will be used as \meta{file extension} for the list, % ``List of \meta{name}s'' as \meta{list name}. -% ``\meta{name}'' as \meta{name} (but with the first letter capitalized), +% ``\meta{name}'' as \meta{name}, \meta{autoref name}, and \meta{legend name} (but with the first letter capitalized), % ``|tbp|'' as \meta{placement} specifier, % and ``|chapter|'' resp. ``|none|'' as \meta{``within'' counter}, % i.e., the counter which resets the numbering. @@ -191,10 +190,10 @@ % resp.~|\list|\-|of|\meta{type}|es|, % analogous to |\list|\-|of|\-|figures| and |\list|\-|of|\-|tables|. % -% If the \package{fltpage} package is loaded, an environment called +% If the \pkg{fltpage} package is loaded, an environment called % |FP|\meta{type} will be defined additionally, same for |sideways|\meta{type} -% (\package{rotating} package), |SC|\meta{type} (\package{sidecap} package), -% and |wrap|\meta{type} (\package{wrapfig} package). +% (\pkg{rotating} package), |SC|\meta{type} (\pkg{sidecap} package), +% and |wrap|\meta{type} (\pkg{wrapfig} package). % % \bigskip % @@ -220,10 +219,10 @@ % | name=Matrix,|\\ % | placement=p,|\\ % | within=section,|\\ -% | chapterlistsgaps=off,|\\ -% | ]{matrix}| +% | chapterlistsgaps=off|\\ +% | ]{matrixx}| % \end{quote} -% will define a new floating environment called |matrix| with the given settings. +% will define a new floating environment called |matrixx| with the given settings. % Please note that names which contain spaces needs to be enclosed in curly braces. % % \pagebreak[3] @@ -235,10 +234,10 @@ % \end{quote} % will change the settings of existing ones, i.e. either |figure| or |table|, % or a one created with |\Declare|\-|Floating|\-|Environment|, -% or a one created with |\new|\-|float| offered by the \package{float} package, -% or a one created with |\new|\-|float| offered by the \package{memoir} document class, -% or a one created with |\Declare|\-|New|\-|Float|\-|Type| offered by the \package{floatrow} package, -% or \ldots +% or a one created with |\new|\-|float| offered by the \pkg{float} package, +% or a one created with |\new|\-|float| offered by the \pkg{memoir} document class, +% or a one created with |\Declare|\-|New|\-|Float|\-|Type| offered by the \pkg{floatrow} package, +% or a one created by a document class or any other package. % % The \meta{options} are the same as the options for % |\Declare|\-|Floating|\-|Environment|, @@ -255,7 +254,7 @@ % |\SetupFloatingEnvironment{lstlisting}{chapterlistsgaps=off}| % \end{quote} % will switch off the chapter lists gaps for |lstlisting| environments -% offered by the \package{listings} package. +% offered by the \pkg{listings} package. % % \pagebreak[3] % \section{\cs{ForEachFloatingEnvironment}} @@ -267,7 +266,7 @@ % and for ones defined with |\Declare|\-|Floating|\-|Environment| later on. % % \pagebreak[3] -% So for example the \package{subcaption} packages uses +% So for example the \pkg{subcaption} packages uses % \begin{quote} % |\ForEachFloatingEnvironment{\DeclareCaptionSubType{#1}}| % \end{quote} @@ -324,11 +323,11 @@ % | \renewcommand{\cftfigpresnum}{Diagram~}}| % \end{quote} % will change the part typeset in front of the diagram number within the -% ``List of Diagrams'' when using the \package{tocloft} package~\cite{tocloft}. +% ``List of Diagrams'' when using the \pkg{tocloft} package~\cite{tocloft}. % Without the code above you will get the part defined for figures instead. % % \pagebreak[3] -% However, when dealing with the \package{tocloft} package it's a better +% However, when dealing with the \pkg{tocloft} package it's a better % idea not to use |\Prepare|\-|List|\-|Of| but the customization facilities of that package % instead, e.g.: % \begin{quote} @@ -359,11 +358,110 @@ % |\end{document}| % \end{quote} % +% \pagebreak[3] +% \section{Multi-language support} +% +% The options \opt{name=} etc.~will set names for the current language only. +% If support for multiple languages is needed, the command |\addto\captions|\meta{language} +% offered by the \pkg{babel} package needs to be used to set names for all the different languages. +% +% These are the corresponding command names: +% +% \nobreak\medskip\nobreak\noindent +% \begin{minipage}{\linewidth} +% \centering +% \begin{tabular}{lll} +% Option & Command & Description \\ +% \hline +% \opt{listname=} & |\list|\meta{float}|name| & Heading of the list \\ +% \opt{name=} & |\|\meta{float}|name| & Name used in |\caption| \\ +% \opt{autorefname=} & |\|\meta{float}|autorefname| & Name used in |\autoref| \\ +% \opt{legendname=} & |\fleg|\meta{float} & Name used in |\legend| \\ +% \end{tabular} +% \end{minipage} +% +% \medskip +% +% \pagebreak[3] +% Example code: +% \nobreak\begin{quote} +% |\documentclass{book}|\\ +% \ldots\\ +% |\usepackage[T1]{fontenc}|\\ +% |\usepackage[english,french,german]{babel}|\\ +% \ldots\\ +% |\usepackage{newfloat}|\\ +% |\DeclareFloatingEnvironment{diagram}|\\ +% |% Set names for the English language|\\ +% |\addto\captionsenglish{%|\\ +% | \renewcommand\diagramname{Diagram}%|\\ +% | \renewcommand\listdiagramname{List of Diagrams}%|\\ +% |}|\\ +% |% Set names for the French language|\\ +% |\addto\captionsfrench{%|\\ +% | \renewcommand\diagramname{Diagramme}%|\\ +% | \renewcommand\listdiagramname{Liste des diagrammes}%|\\ +% |}|\\ +% |% Set names for the German language|\\ +% |\addto\captionsgerman{%|\\ +% | \renewcommand\diagramname{Diagramm}%|\\ +% | \renewcommand\listdiagramname{Liste der Diagramme}%|\\ +% |}|\\ +% \ldots +% \end{quote} +% +% \pagebreak[3] +% \emph{Note:} +% As default the names for |\autoref| and |\legend| point to the one used for captions, +% so these names only need to be set if they should differ from it. +% +% \pagebreak[3] +% \section{Important notes for \LaTeX\ document class maintainers} +% +% If you are a maintainer of a \LaTeX\ document class and want to support this package +% you could tell this package to keep its fingers from your definition of |\chapter| by defining +% |\new|\-|float@dont@patch@chapter| to anything. (The content of the definition does not matter +% since the \pkg{newfloat} package only checks if this macro is defined or not.) +% +% If |\new|\-|float@dont@patch@chapter| is defined, the \pkg{newfloat} package does not try to patch +% |\chapter| but assumes that |\@add|\-|chapter|\-|lists|\-|gaps| is already used by the document class inside +% its definition of |\chapter|, so it only needs to re-define |\@add|\-|chapter|\-|lists|\-|gaps| +% to use the settings configured by |\De|\-|clare|\-|Float|\-|ing|\-|En|\-|vi|\-|ron|\-|ment| +% or |\Setup|\-|Float|\-|ing|\-|En|\-|vi|\-|ron|\-|ment|. +% +% \medskip +% +% \pagebreak[3] +% Example code: +% \nobreak\begin{quote} +% |\newcommand\@chapterlistsgap{10\p@}|\\ +% ||\\ +% |\newcommand\@addchapterlistsgaps{%|\\ +% | % Add a gap to List of Figures and List of Tables|\\ +% | % (This macro will be re-defined if the newfloat package|\\ +% | % is loaded by the user later on.)|\\ +% | \addtocontents{lof}{\protect\addvspace{\@chapterlistsgap}}%|\\ +% | \addtocontents{lot}{\protect\addvspace{\@chapterlistsgap}}%|\\ +% |}|\\ +% ||\\ +% |\newcommand\chapter{%|\\ +% | |\ldots\\ +% | \secdef\@chapter\@schapter}|\\ +% |\def\@chapter[#1]#2{%|\\ +% | |\ldots\\ +% | \@addchapterlistsgaps|\\ +% | |\ldots\\ +% |}|\\ +% ||\\ +% |% Hey newfloat package, don't patch my \chapter!|\\ +% |\def\newfloat@dont@patch@chapter{}| +% \end{quote} +% % \iffalse % \pagebreak[3] -% \section{For \LaTeX{} package authors} +% \section{Notes for \LaTeX{} package authors} % -% |\For|\-|Each|\-|Floating|\-|Environment| without \package{newfloat} package: +% |\For|\-|Each|\-|Floating|\-|Environment| without \pkg{newfloat} package: % \begin{quote} % |\newcommand\mypackage@foreachfloat[1]{%|\\ % | \@ifundefined{ForEachFloatingEnvironment}%|\\ @@ -385,7 +483,7 @@ % \begin{quote} % |\SetupFloatingEnvironment|\marg{environment}|{}| % \end{quote} -% or (without \package{newfloat} package loaded): +% or (without \pkg{newfloat} package loaded): % \begin{quote} % |\providecommand\newfloat@list{}|\\ % |\@cons\newfloat@list{|\marg{environment}|}| @@ -509,11 +607,11 @@ % \fi % % \setlength{\parskip}{0pt plus 1pt} -% \changes{v1.0}{2011/10/30}{First release as \package{newfloat} package, -% outsourced from the \package{caption3} package and revised} -% \changes{v1.1}{2013/04/27}{Adapted to the \package{tocloft} package} +% \changes{v1.0}{2011/10/30}{First release as \pkg{newfloat} package, +% outsourced from the \pkg{caption3} package and revised} +% \changes{v1.1}{2013/04/27}{Adapted to the \pkg{tocloft} package} % \changes{v1.1}{2013/04/27}{New command \cs{PrepareListOf} added} -% \changes{v1.1d}{2019/03/16}{Adapted to the \package{dgruyter} package} +% \changes{v1.1d}{2019/03/16}{Adapted to the \pkg{dgruyter} package} % % \iffalse % --------------------------------------------------------------------------- % @@ -528,9 +626,28 @@ % \pagebreak[3] % \subsection{Identification} % +% We need at least \LaTeX2e\ version 1994/12/01. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[1994/12/01] -\ProvidesPackage{newfloat}[2019/09/02 v1.1l Defining new floating environments (AR)] +% \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{v1.0}{2011-10-30}{newfloat_v1.0.sty} +\DeclareRelease{v1.1}{2013-05-12}{newfloat_v1.1.sty} +\DeclareCurrentRelease{v1.2}{2023-10-01} +% \end{macrocode} +% +% Identify the current version of the package. +% \begin{macrocode} +\ProvidesPackage{newfloat}[2023/10/01 v1.2 Defining new floating environments (AR)] % \end{macrocode} % % \begin{macro}{\newfloat@Info} @@ -573,7 +690,7 @@ % \pagebreak[3] % \subsection{Using the keyval package} % -% We need the \package{keyval} package for option handling, so we load it here. +% We need the \pkg{keyval} package for option handling, so we load it here. % \begin{macrocode} \RequirePackage{keyval}[1997/11/10] % \end{macrocode} @@ -620,10 +737,11 @@ % \changes{v1.1}{2013/04/27}{Revised, only defines stuff yet undefined now} % \changes{v1.1}{2013/11/03}{Uses \cs{newfloat@capitalize} now} % \changes{v1.1}{2015/09/16}{Support of \cs{autodot} (offered by the \KOMAScript\ classes) added} -% \changes{v1.1}{2018/03/04}{Usage of \cs{ifdefined} replaced by \cs{@ifundefined} to improve compatibility with the \package{listings} package} +% \changes{v1.1}{2018/03/04}{Usage of \cs{ifdefined} replaced by \cs{@ifundefined} to improve compatibility with the \pkg{listings} package} % \changes{v1.1b}{2018/12/26}{Bugfix: Missing curly braces added} % \changes{v1.1c}{2019/01/10}{Bugfix: Support of \cs{autodot} fixed} -% \changes{v1.1k}{2019/09/01}{Adapted to the \class{beamer} document class} +% \changes{v1.1k}{2019/09/01}{Adapted to the \cls{beamer} document class} +% \changes{v1.2}{2021/02/28}{Definition of \cs{xxxautorefname} added} % |\DeclareFloatingEnvironment|\oarg{options}\marg{environment}\oarg{name}\oarg{list name} % \begin{macrocode} \newcommand*\DeclareFloatingEnvironment{% @@ -667,18 +785,19 @@ % but with first letter capitalized % \begin{macrocode} \newfloat@capitalize\newfloat@Type{#2}% - \newfloat@let{#2name}{\newfloat@Type}% - \newfloat@def{fleg#2}{\@nameuse{#2name}}% legend naming (memoir) + \newfloat@let{#2name}{\newfloat@Type}% \caption naming + \newfloat@def{#2autorefname}{\@nameuse{#2name}}% \autoref naming (hyperref) + \newfloat@def{fleg#2}{\@nameuse{#2name}}% \legend naming (memoir) % \end{macrocode} % Legend name in ToC (memoir document class) % \begin{macrocode} \newfloat@ifundefined{flegtoc#2}{\@namedef{flegtoc#2}##1{}}% % \end{macrocode} % Define the floating environment\par -% If the \class{tufte} document class is loaded, +% If the \cls{tufte} document class is loaded, % |\@tufte@float| and |\end@tufte@float| will be used instead of % |\@float|, |\end@float|, |\@dblfloat|, and |\end@dblfloat|.\par -% If the \class{beamer} document class is loaded, +% If the \cls{beamer} document class is loaded, % |\beamer@float| and |\end@beamer@float| will be used. % \begin{macrocode} \ifcsname @tufte@float\endcsname @@ -713,8 +832,8 @@ \newfloat@let{list#2name}{\newfloat@tempa}% % \end{macrocode} % We undefine |\fst@|\meta{environment} so the new environment -% will not be recognized as defined by the \package{float} package. -% (|\fst@|\meta{type} use to hold the float style, see \package{float} package +% will not be recognized as defined by the \pkg{float} package. +% (|\fst@|\meta{type} use to hold the float style, see \pkg{float} package % implementation for details.) % \begin{macrocode} \expandafter\let\csname fst@#2\endcsname\@undefined @@ -768,6 +887,7 @@ % \begin{macro}{\newfloat@listof} % \changes{v1.1}{2013/04/27}{Revised} % \changes{v1.1g}{2019/08/28}{Starred variant added} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} % |\newfloat@listof|\marg{float type}\\ % typesets the list, using |\listoffigure| with patched list name and file extension. % \begin{macrocode} @@ -778,7 +898,7 @@ % \end{macrocode} % \begin{macrocode} \newcommand*\newfloat@list@of[1]{% - \@expandtwoargs\newfloat@list@of@{#1}{\@nameuse{ext@#1}}} + \@expandtwoargs\newfloat@list@of@{#1}{\newfloat@ext{#1}}} % \end{macrocode} % \begin{macrocode} \newcommand*\newfloat@list@of@[3]{% @@ -830,12 +950,13 @@ % \end{macro} % % \begin{macro}{\newfloat@setoption} -% \changes{v1.1}{2015/09/15}{Bugfix: \cs{@expandtwoargs} replaced by own expansion so the option value do not get expanded anymore} +% \changes{v1.1}{2015/09/15}{\cs{@expandtwoargs} replaced by own expansion so the option value do not get expanded anymore} +% \changes{v1.1m}{2020/10/11}{Usage of \cs{caption@tempa} replaced by \cs{newfloat@tempa}} % |\newfloat@setoption|\marg{option name}{options} % \begin{macrocode} \newcommand*\newfloat@setoption[1]{% - \edef\caption@tempa{\noexpand\@nameuse{newfloat@set#1}{\newfloat@type}}% - \caption@tempa} + \edef\newfloat@tempa{\noexpand\@nameuse{newfloat@set#1}{\newfloat@type}}% + \newfloat@tempa} % \end{macrocode} % \end{macro} % @@ -896,6 +1017,34 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\newfloat@setautorefname} +% \changes{v1.2}{2023/10/01}{This macro and corresponding option \opt{autorefname=} added} +% |\newfloat@setautorefname|\marg{environment}\marg{autoref name}\par +% This name is used in |\autoref| offered by the \pkg{hyperref} package. +% \begin{macrocode} +\newcommand*\newfloat@setautorefname[2]{% + \@namedef{#1autorefname}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{autorefname}{% + \newfloat@setoption{autorefname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@setlegendname} +% \changes{v1.2}{2023/10/01}{This macro and corresponding option \opt{legendname=} added} +% |\newfloat@setlegendname|\marg{environment}\marg{legend name} +% This name is used in |\legend| offered by the \cls{memoir} document class. +% \begin{macrocode} +\newcommand*\newfloat@setlegendname[2]{% + \@namedef{fleg#1}{#2}} +% \end{macrocode} +% \begin{macrocode} +\define@key{@newfloat}{legendname}{% + \newfloat@setoption{legendname}{#1}} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\newfloat@setplacement} % |\newfloat@setplacement|\marg{environment}\marg{float placement} % \begin{macrocode} @@ -954,10 +1103,10 @@ \fi \fi} % \end{macrocode} -% Note: Since the \package{hyperref} package with version $<$ 6.82k defines +% Note: Since the \pkg{hyperref} package with version $<$ 6.82k defines % |\the|\-|H|\-|figure| and |\the|\-|H|\-|table| with |\new|\-|command|, % |\newfloat@@setwithin| will yield to an error message when using with an -% old version of \package{hyperref}, +% old version of \pkg{hyperref}, % e.g. ``\texttt{LaTeX Error: Command \cs{theHfigure} already defined}''. % \begin{macrocode} \newcommand*\newfloat@@setwithin[3]{% @@ -987,26 +1136,36 @@ % \begin{macrocode} \newcommand*\newfloat@setchapterlistsgaps[2]{% \edef\@tempa{#2}% - \def\@tempb{off}% + \newfloat@setchapterlistsgaps@{off}{off}{#1}% + \newfloat@setchapterlistsgaps@{false}{off}{#1}% + \newfloat@setchapterlistsgaps@{on}{on}{#1}% + \newfloat@setchapterlistsgaps@{true}{on}{#1}% + \ifx\@tempa\newfloat@setchapterlistsgaps@ \else + \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}% + \fi} +% \end{macrocode} +% \begin{macrocode} +\newcommand*\newfloat@setchapterlistsgaps@[3]{% + \def\@tempb{#1}% \ifx\@tempa\@tempb - \@chapterlistsgap@off{#1}% - \else - \def\@tempb{on}% - \ifx\@tempa\@tempb - \@chapterlistsgap@on{#1}% - \else - \newfloat@Error{Invalid value `#2' for option `chapterlistsgaps'}% - \fi + \newfloat@chapterlistsgap@{#2}{#3}% + \let\@tempa\newfloat@setchapterlistsgaps@ \fi} % \end{macrocode} % \begin{macrocode} +\newcommand*\newfloat@chapterlistsgap@[1]{% + \@ifundefined{@chapterlistsgap@#1}% + {\@gobble}% + {\@nameuse{@chapterlistsgap@#1}}} +% \end{macrocode} +% \begin{macrocode} \define@key{@newfloat}{chapterlistsgaps}{% \def\newfloat@chapterlistsgaps@value{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@removefromreset} -% This code was taken from the \package{remreset} package +% This code was taken from the \pkg{remreset} package % which is part of the `carlisle' package bundle. % (Copyright 1997 David Carlisle) % \begin{macrocode} @@ -1023,6 +1182,7 @@ % \end{macro} % % \begin{macro}{\newfloat@announce} +% \changes{v1.1n}{2021/02/27}{Defines \cs{newfloat@env@xxx} now instead of \cs{newfloat@ext@xxx}} % |\newfloat@announce|\marg{environment name}\marg{list file extension} % \begin{macrocode} \newcommand*\newfloat@announce[2]{% @@ -1032,10 +1192,10 @@ \@cons\newfloat@@list{{#1}}% % \end{macrocode} % \begin{macrocode} - \newfloat@ifundefined{newfloat@ext@#2}{% - \@namedef{newfloat@ext@#2}{#1}% + \newfloat@ifundefined{newfloat@env@#2}{% + \@namedef{newfloat@env@#2}{#1}% % \end{macrocode} -% Support of \package{memoir} document class +% Support of \pkg{memoir} document class % \begin{macrocode} \ifcsname c@lofdepth\endcsname \newfloat@ifundefined{c@#2depth}{% @@ -1043,7 +1203,7 @@ \setcounter{#2depth}{1}}% \fi % \end{macrocode} -% Support of \package{tocbasic} package +% Support of \pkg{tocbasic} package % \begin{macrocode} \ifcsname addtotoclist\endcsname \addtotoclist[float]{#2}% @@ -1053,7 +1213,7 @@ % \begin{macrocode} }% % \end{macrocode} -% Support of \package{titletoc} package +% Support of \pkg{titletoc} package % \begin{macrocode} \ifcsname contentsuse\endcsname \contentsuse{#1}{#2}% @@ -1065,6 +1225,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\newfloat@ext} +% \changes{v1.1n}{2021/02/27}{This macro added} +% |\newfloat@ext|\marg{environment} +% expands to the file extension used for the given \meta{environment}. +% \begin{macrocode} +\newcommand*\newfloat@ext[1]{\@nameuse{ext@#1}} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\newfloat@@list} % |\newfloat@@list| is an \cs{@elt}-list containing the floating environments defined % with |\Declare|\-|Floating|\-|Environment| only. @@ -1089,29 +1258,41 @@ % \subsection{\cs{ForEachFloatingEnvironment}} % % \begin{macro}{\ForEachFloatingEnvironment} -% |\ForEachFloatingEnvironment|\marg{code} -% will execute the given code for each floating environment. +% |\ForEachFloatingEnvironment|\marg{code with \#1}\par +% will execute the given code for each (known) floating environment. % The starred variant will only work for already existing environments, % i.e.~no hook will be placed inside |\Declare|\-|Floating|\-|Environment|. % \begin{macrocode} -\newcommand\ForEachFloatingEnvironment{% +\newcommand*\ForEachFloatingEnvironment{% \@ifstar - {\@ForEachFloatingEnvironment\@gobble}% - {\@ForEachFloatingEnvironment\@iden}} + {\newfloat@foreach\@gobble}% + {\newfloat@foreach\@iden}} % \end{macrocode} % \begin{macrocode} -\newcommand\@ForEachFloatingEnvironment[2]{% +\newcommand\newfloat@foreach[2]{% \def\@elt##1{#2}% \newfloat@list \let\@elt\relax #1{\newfloat@addtohook{#2}}} % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@addtohook} +% |\newfloat@addtohook|\marg{code with \#1}\par +% adds code to the hook called in |\Declare|\-|Floating|\-|Environment|.\par +% Note: We use |\provide|\-|command| instead of |\new|\-|command| here since the +% exact same code is defined for |\For|\-|Each|\-|Caption|\-|Type| offered by +% the \pkg{caption3} package. % \begin{macrocode} \providecommand\newfloat@addtohook[1]{% \toks@=\expandafter{\newfloat@hook{##1}#1}% \edef\@tempa{\def\noexpand\newfloat@hook####1{\the\toks@}}% \@tempa} % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat@hook} +% Hook used in |\Declare|\-|Floating|\-|Environment|. % \begin{macrocode} \providecommand*\newfloat@hook[1]{} % \end{macrocode} @@ -1145,6 +1326,7 @@ % % \begin{macro}{\newfloat@addtolist} % \changes{v1.0b}{2012/05/18}{Bugfix: Definition of \cs{@ifchapterlistsgap@}\meta{environment} added} +% \changes{v1.1n}{2021/02/27}{Defines \cs{newfloat@env@xxx} now instead of \cs{newfloat@ext@xxx}} % |\newfloat@addtolist|\marg{environment} % adds an environment to the list of floating environments. % \begin{macrocode} @@ -1152,7 +1334,7 @@ \newfloat@ifinlist{#1}{}{% \ifcsname ext@#1\endcsname \@cons\newfloat@list{{#1}}% - \@namedef{newfloat@ext@\@nameuse{ext@#1}}{#1}% + \@namedef{newfloat@env@\@nameuse{ext@#1}}{#1}% \newfloat@let{@ifchapterlistsgap@#1}{\@iden}% \else \newfloat@Error{`#1' does not seem to be a floating environment}% @@ -1201,7 +1383,7 @@ % \begin{macrocode} \providecommand*\@chapterlistsgap{10\p@}% % \end{macrocode} -% If the \package{dgruyter} package is loaded, the default gap is |13pt|. +% If the \pkg{dgruyter} package is loaded, the default gap is |13pt|. % \begin{macrocode} \@ifpackageloaded{dgruyter}{\renewcommand*\@chapterlistsgap{13\p@}}{}% % \end{macrocode} @@ -1231,41 +1413,50 @@ % % \begin{macro}{\@addchapterlistsgaps} % \changes{v1.0b}{2012/05/18}{Bugfix: Group added to make \cs{@addchapterlistsgap} work correctly} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} +% \changes{v1.2}{2023/10/01}{A previous definition of this macro will be overwritten if \cs{newfloat@dont@patch@chapter} is defined} % |\@addchapterlistsgaps|\par % will add the chapter lists gaps for all floating environments in |\newfloat@list|. % \begin{macrocode} + \ifcsname newfloat@dont@patch@chapter\endcsname + \let\@addchapterlistsgaps\@undefined % force a re-definition + \fi +% \end{macrocode} +% \begin{macrocode} \providecommand*\@addchapterlistsgaps{% \begingroup \def\@elt##1{% - \@expandtwoargs\@addchapterlistsgap{##1}{\@nameuse{ext@##1}}}% + \@expandtwoargs\@addchapterlistsgap{##1}{\newfloat@ext{##1}}}% \newfloat@list \endgroup} % \end{macrocode} % \end{macro} % % \begin{macro}{\@chapterlistsgap@off} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} % |\@chapterlistsgap@off|\marg{float type}\par % switches the chapter lists gap off for the given float type. % Since \KOMAScript{} (still) supports |\float@exts| we need to handle -% this locally, too, even if |\unsettoc| is offered by the \package{tocbasic} package. +% this locally, too, even if |\unsettoc| is offered by the \pkg{tocbasic} package. % (Otherwise our handling could be moved into the |\else| branch.) % \begin{macrocode} \providecommand*\@chapterlistsgap@off[1]{% \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@gobble \ifcsname unsettoc\endcsname - \@expandtwoargs\unsettoc{\@nameuse{ext@#1}}{chapteratlist}% + \@expandtwoargs\unsettoc{\newfloat@ext{#1}}{chapteratlist}% \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\@chapterlistsgap@on} +% \changes{v1.1n}{2021/02/27}{Uses \cs{newfloat@ext} now instead of \cs{ext@xxx}} % |\@chapterlistsgap@off|\marg{float type}\par % switches the chapter lists gap on for the given float type. % \begin{macrocode} \providecommand*\@chapterlistsgap@on[1]{% \expandafter\let\csname @ifchapterlistsgap@#1\endcsname\@iden \ifcsname setuptoc\endcsname - \@expandtwoargs\setuptoc{\@nameuse{ext@#1}}{chapteratlist}% + \@expandtwoargs\setuptoc{\newfloat@ext{#1}}{chapteratlist}% \fi} % \end{macrocode} % \end{macro} @@ -1355,7 +1546,7 @@ % \end{macro} % % Process the package options: -% We use |\setkeys| here instead of |\ProcessOptions|. +% We use |\set|\-|keys| here instead of |\Process|\-|Options|. % \begin{macrocode} \let\@tempc\relax \@expandtwoargs\setkeys{newfloat}{planb,\@ptionlist{\@currname.\@currext}}% @@ -1373,13 +1564,22 @@ % \pagebreak[3] % \subsection{Patching \cs{chapter}} % +% Since the \LaTeX\ team has refused to replace the hard coded |10pt| skip inside |\chapter| +% (for lists of floating environments like |figure| or |table|) +% with a proper interface~\footnote{I have asked David Carlisle in 2018, Frank Mittelbach in 2020, and Frank again at a later date.}, +% we need to patch |\chapter|. (Sigh!) +% +% And since most document class authors takes \cls{article}, \cls{report}, or \cls{book} as template for own classes, +% they inherit the same problem: Hard coded skips we need to replace with an interface for ourself. (Sigh!) +% % \begin{macro}{\newfloat@replace@chapter} % \changes{v1.1f}{2019/08/25}{Parameter \meta{class name} added to macro} % \changes{v1.1i}{2019/08/31}{Local definition of \cs{if@chapnum} added} +% \changes{v1.1o}{2021/02/27}{Support of the \pkg{algorithm2e} package added} % |\newfloat@replace@chapter|\marg{class name}\marg{original code}\marg{replacement code}\par % tries to patch |\@chapter| so |\@add|\-|chapter|\-|lists|\-|gaps| will be supported. % It checks for |\Hy@org@chapter|, too, since the original code will be stored here -% if the \package{hyperref} package was loaded. +% if the \pkg{hyperref} package was loaded. % \begin{macrocode} \newcommand\newfloat@replace@chapter[3]{% \begingroup @@ -1388,18 +1588,21 @@ \let\if@thema\iffalse \let\if@chapnum\iffalse \def\@tempa[##1]##2{#2}% - \ifx\@tempa\@chapter - \newfloat@InfoNoLine{Document class `#1' detected}% - \gdef\@chapter[##1]##2{#3}% - \global\let\newfloat@replace@chapter\newfloat@dont@replace@chapter - \else\ifx\@tempa\Hy@org@chapter - \newfloat@InfoNoLine{Document class `#1' detected (Hy)}% - \gdef\Hy@org@chapter[##1]##2{#3}% - \global\let\newfloat@replace@chapter\newfloat@dont@replace@chapter - \fi\fi + \newfloat@replace@chapter@\@chapter{original}{#1}{#3}% + \newfloat@replace@chapter@\Hy@org@chapter{hyperref}{#1}{#3}% + \newfloat@replace@chapter@\algocf@original@chapter{algorithm2e}{#1}{#3}% \endgroup} % \end{macrocode} % \begin{macrocode} +\newcommand\newfloat@replace@chapter@[4]{% + \ifx\@tempa#1% + \newfloat@InfoNoLine{Document class `#3' detected (#2)}% + \global\def#1[##1]##2{#4}% + \global\let\newfloat@replace@chapter\newfloat@dont@replace@chapter + \global\let\newfloat@replace@chapter@\@gobblefour + \fi} +% \end{macrocode} +% \begin{macrocode} \newcommand\newfloat@dont@replace@chapter[3]{} % \end{macrocode} % \begin{macrocode} @@ -1409,6 +1612,19 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\newfloat@dont@patch@chapter} +% \changes{v1.2}{2023/10/01}{Detection of this macro added} +% If |\newfloat@dont@patch@chapter| is defined, we don't try to patch |\chapter| +% but assume that the document class is already using |\@add|\-|chapter|\-|lists|\-|gaps| +% inside its definition of |\chapter|. +% \begin{macrocode} +\ifcsname newfloat@dont@patch@chapter\endcsname + \newfloat@InfoNoLine{\noexpand\newfloat@dont@patch@chapter is set} + \let\newfloat@replace@chapter\newfloat@dont@replace@chapter +\fi +% \end{macrocode} +% \end{macro} +% % \pagebreak[3] % \subsubsection{Standard \LaTeX{} document classes} % @@ -1532,7 +1748,7 @@ % \pagebreak[3] % \subsubsection{\KOMAScript{} document classes} % -% If a \KOMAScript{} document class or the \package{tocbasic} package is used +% If a \KOMAScript{} document class or the \pkg{tocbasic} package is used % we don't need to patch anything. % Instead we use |\setup|\-|toc| and |\un|\-|set|\-|toc| to setup the % chapters gap in |\@chapter|\-|lists|\-|gap@on| and |\@chapter|\-|lists|\-|gap@off|. @@ -1544,7 +1760,7 @@ % \pagebreak[3] % \subsubsection{memoir document classes} % -% If the \package{memoir} document class is used, +% If the \pkg{memoir} document class is used, % replacing |\insert|\-|chapter|\-|space| by |\@add|\-|chapter|\-|lists|\-|gaps| is sufficient. % \begin{macrocode} \ifcsname insertchapterspace\endcsname @@ -1715,7 +1931,7 @@ % % \pagebreak[3] % \subsubsection{The Springer Verlag document classes} -% \changes{v1.1f}{2019/08/25}{Support of \package{svmono} and \package{svmult} document classes added} +% \changes{v1.1f}{2019/08/25}{Support of \pkg{svmono} and \pkg{svmult} document classes added} % % \begin{macrocode} % svmono.cls [2018/06/25 v5.6 Springer Verlag global LaTeX document class for monographs] @@ -1767,7 +1983,7 @@ % % \pagebreak[3] % \subsubsection{The dgruyter package} -% \changes{v1.1j}{2019/08/31}{Extended support of \package{dgruyter} package added} +% \changes{v1.1j}{2019/08/31}{Extended support of \pkg{dgruyter} package added} % % \begin{macrocode} % dgruyter.sty [2017/09/19 v2.00 De Gruyter layout] @@ -1854,10 +2070,11 @@ was already redefined by another package} \newfloat@InfoNoLine{\string\@chapter\space=\space\meaning\@chapter} \newfloat@InfoNoLine{\string\Hy@org@chapter\space=\space\meaning\Hy@org@chapter} + \newfloat@InfoNoLine{\string\algocf@original@chapter\space=\space\meaning\algocf@original@chapter} % \end{macrocode} % Plan B: We patch |\add|\-|to|\-|contents| instead, and keep our fingers crossed % in the hope that this redefinition actually will fit. -% (Note: Since \package{biblatex} patches |\add|\-|to|\-|contents| as well we do +% (Note: Since \pkg{biblatex} patches |\add|\-|to|\-|contents| as well we do % this using |\At||Begin||Document|.) % \changes{v1.1f}{2019/08/25}{Plan B will now be done using \cs{AtBeginDocument}} % \begin{macrocode} @@ -1895,7 +2112,7 @@ % % \begin{macro}{\beamer@float} % \changes{v1.1k}{2019/09/01}{This macro added} -% Unfortunately the \class{beamer} document class does not offer +% Unfortunately the \cls{beamer} document class does not offer % |\beamer@float| and |\end@beamer@float| (yet), so we have to define them % for ourself. % (This code was taken from beamerbaselocalstructure.sty [2019/07/23 v3.56] and adapted.) @@ -1969,7 +2186,7 @@ % \end{macro} % % \pagebreak[3] -% \subsubsection{\package{dgruyter}} +% \subsubsection{\pkg{dgruyter}} % % The De Gruyter layout package (for preparing books for Walter de Gruyter GmbH) % is defining |\plist@figure| and |\plist@table|, and expects this to be @@ -1982,9 +2199,9 @@ % \end{macrocode} % % \pagebreak[3] -% \subsubsection{\package{float}} +% \subsubsection{\pkg{float}} % -% If the \package{float} package is used we fill up |\float@exts| with our file +% If the \pkg{float} package is used we fill up |\float@exts| with our file % extensions, too. Since this list will be used for inserting chapters gaps % we only add the ones which are configured for chapters gaps on.\par % Note: This has to be done |\At|\-|Begin|\-|Document| so the settings for @@ -2002,7 +2219,7 @@ % \end{macrocode} % % \pagebreak[3] -% \subsubsection{\package{fltpage}} +% \subsubsection{\pkg{fltpage}} % % We define a FP-variant of new floating environments here. % \begin{macrocode} @@ -2012,10 +2229,10 @@ % \end{macrocode} % % \pagebreak[3] -% \subsubsection{\package{listings}} +% \subsubsection{\pkg{listings}} % % \begin{macro}{\ext@lstlisting} -% Since the \package{listings} package do not define |\ext@lst|\-|listing| +% Since the \pkg{listings} package do not define |\ext@lst|\-|listing| % but we needed it when |Setup|\-|Floating|\-|Environment{lst|\-|listing}{|\ldots|}| % will be done by the end user, we define it here. % \begin{macrocode} @@ -2024,7 +2241,7 @@ % \end{macro} % % \pagebreak[3] -% \subsubsection{\package{rotating}} +% \subsubsection{\pkg{rotating}} % % We define a sideways-variant of new floating environments here. % \begin{macrocode} @@ -2034,7 +2251,7 @@ % \end{macrocode} % % \pagebreak[3] -% \subsubsection{\package{sidecap}} +% \subsubsection{\pkg{sidecap}} % % We define a SC-variant of new floating environments here. % \begin{macro}{\SC@float} @@ -2055,7 +2272,7 @@ % \end{macro} % % \pagebreak[3] -% \subsubsection{\package{wrapfig}} +% \subsubsection{\pkg{wrapfig}} % % We define a wrap-variant of new floating environments here. % \begin{macrocode} @@ -2074,3 +2291,4 @@ % \Finale % \endinput + diff --git a/Master/texmf-dist/source/latex/newfloat/newfloat.ins b/Master/texmf-dist/source/latex/newfloat/newfloat.ins index 889504d5346..d440d497e78 100644 --- a/Master/texmf-dist/source/latex/newfloat/newfloat.ins +++ b/Master/texmf-dist/source/latex/newfloat/newfloat.ins @@ -6,7 +6,7 @@ \preamble -Copyright (C) 2011-2019 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) +Copyright (C) 2011-2023 Axel Sommerfeldt (axel.sommerfeldt@f-m.fm) https://gitlab.com/axelsommerfeldt/newfloat @@ -20,9 +20,7 @@ The latest version of this license is in 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 has the LPPL maintenance status "unmaintained". This work consists of the files newfloat.ins, newfloat.dtx, and the derived file newfloat.sty. @@ -31,10 +29,13 @@ and the derived file newfloat.sty. \generate{\file{newfloat.sty}{\from{newfloat.dtx}{package}}} +\generate{\file{newfloat_v1.0.sty}{\from{fallback/v1.0/newfloat.dtx}{package}}} +\generate{\file{newfloat_v1.1.sty}{\from{fallback/v1.1/newfloat.dtx}{package}}} + \Msg{***********************************************************} \Msg{*} -\Msg{* To finish the installation you have to move the file} -\Msg{* `newfloat.sty' into a directory searched by TeX.} +\Msg{* To finish the installation you have to move the files} +\Msg{* `*.sty' into a directory searched by TeX.} \Msg{*} \Msg{* To produce the documentation run the file} \Msg{* `newfloat.dtx' through LaTeX.} |