summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/scrkernel-listsof.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/scrkernel-listsof.dtx')
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-listsof.dtx1241
1 files changed, 1241 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrkernel-listsof.dtx b/macros/latex/contrib/koma-script/scrkernel-listsof.dtx
new file mode 100644
index 0000000000..10a333e1a4
--- /dev/null
+++ b/macros/latex/contrib/koma-script/scrkernel-listsof.dtx
@@ -0,0 +1,1241 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-listsof.dtx
+% Copyright (c) Markus Kohm, 2002-2022
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in MANIFEST.md.
+% ======================================================================
+%%% From File: $Id: scrkernel-listsof.dtx 3892 2022-06-17 16:26:06Z kohm $
+%<prepare>%%% (run: prepare)
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2022-06-17 18:26:06 +0200 (Fr, 17. Jun 2022) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3892 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-listsof.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (lists of)]%
+ }%
+\reserved@a
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\usepackage{hvlogos}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+\DocInput{scrkernel-listsof.dtx}
+\end{document}
+%</dtx>
+% \fi
+%
+% \changes{v2.95}{2002/06/28}{first version after splitting \file{scrclass.dtx}}
+% \changes{v3.36}{2022/02/28}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/02/28}{whole implementation documentation in English}
+%
+% \GetFileInfo{scrkernel-listsof.dtx}
+% \title{Table of Contents, List of Figures, and List of Tables Within
+% \href{https://komascript.de}{\KOMAScript} Classes}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Revision \fileversion{} of \filedate}
+% \maketitle
+% \begin{abstract}
+% \LaTeX{} classes provides a number of directories like the table of
+% contents, list of figures, and list of
+% tables. \file{scrkernel-listsof.dtx} provides parts of the implementation
+% of them. But note: Since the \KOMAScript{} classes use \pkg*{tocbasic} for
+% all these tables and lists, most of the code has been moved to
+% \file{tocbasic.dtx} and \file{scrkernel-tocstyle.dtx}.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user documentation the commands implemented here in the
+% \KOMAScript{} manual, either the German \file{scrguide} or the English
+% \file{scrguien}.
+%
+% \MaybeStop{\PrintIndex}
+%
+% \section{Implementation of the table of contents and similar lists in the
+% \KOMAScript{} classes}
+%
+% Only \cls*{scrartcl}, \cls*{scrbook} and \cls{scrreprt} provide floats and
+% headings. So only these need to provide tables and lists of such
+% elements. Especially the letter class \cls*{scrlttr2} does not need any of
+% this code.
+%
+% \begin{macrocode}
+%<*!letter>
+% \end{macrocode}
+%
+% \subsection{Code used by all of the tables and lists of content}
+%
+% Before doing anything with the tocs we need package \pkg*{tocbasic}:
+% \begin{macrocode}
+%<*prepare>
+\RequirePackage{tocbasic}[%
+%!KOMAScriptVersion
+]
+%</prepare>
+% \end{macrocode}
+%
+% \begin{macro}{\numberline@numberpostfix}
+% \changes{v3.20}{2016/03/15}{used to add \cs{autodot}}
+% We extend this macro of \pkg*{tocbasic} to add the \cs{autodot} to the
+% numbers.
+% \begin{description}
+% \item[ToDo:] Replace this by any kind of \emph{addto hook command}, maybe
+% even by a generic \LaTeX{} hook.
+% \end{description}
+% \begin{macrocode}
+%<*body>
+\g@addto@macro{\numberline@numberpostfix}{\autodot}
+%</body>
+% \end{macrocode}
+% \end{macro}%^^A \numberline@numberpostfix
+%
+% \begin{command}{\numberline}
+% \changes{v3.20}{2016/03/15}{using definition of \pkg*{tocbasic}}
+% Just activate the usage of the \pkg*{tocbasic} definition of
+% \cs{numberline}.
+% \begin{macrocode}
+%<*body>
+\usetocbasicnumberline[%
+ \ClassInfo{\KOMAClassName}{Redefining `\string\numberline'}%
+]
+%</body>
+% \end{macrocode}
+% \end{command}%^^A \numberline
+%
+% \changes{v3.06}{2010/06/02}{activating \pkg*{tocbasic} feature
+% \texttt{chapteratlist}}
+% For classes with chapters we use the \pkg*{tocbasic} feature
+% \texttt{chapteratlist} for all directories of category/owner
+% \texttt{float}. This is done not only for already existing directories for
+% also for those, that will be added later (using \pkg*{tocbasic}). Note: By
+% default this feature is used to add a vertical distance to, e.g., the list
+% of figures and the list of tables with each new chapter.
+% \begin{macrocode}
+%<*body&(book|report)>
+\doforeachtocfile[float]{%
+ \setuptoc{\@currext}{chapteratlist}%
+}
+\AtAddToTocList[float]{%
+ \setuptoc{\@currext}{chapteratlist}%
+}
+%</body&(book|report)>
+% \end{macrocode}
+%
+% \begin{macro}{\before@starttoc,\after@starttoc}
+% \changes{v2.8q}{2001/11/14}{added}
+% If either \texttt{tocleft} or \texttt{listsleft} is used, we need to collect
+% additional information about the natural width of the numbers and also have
+% to change the used width of the numbers. So we have two macros, that will be
+% added to the \pkg*{tocbasic} hooks. \cs{before@starttoc} does some internal
+% changes before \cs{@starttoc} to collect and use the
+% information. \cs{after@starttoc} writes the information to the \file{aux}
+% file after \cs{@starttoc}.
+% \begin{macro}{\scr@dottedtocline}
+% \changes{v2.9k}{2003/01/03}{also change the third argument}^^A
+% \begin{macro}{\scr@numberline}
+% \changes{v3.06}{2010/05/18}{removed}^^A
+% \end{macro}
+% \begin{macro}{\last@l@number}
+% The \KOMAScript{} classes themselves use the \pkg*{tocbasic} entry style
+% \texttt{tocline}. However other packages may use the \LaTeX{} kernel command
+% \cs{@dottedtocline}. Currently we support these too. But to do so, we need
+% to locally redefine \cs{@dottedtocline} to change the second and third
+% argument. The second is the \meta{indent} and has always to be 0 (with
+% \texttt{listsleft}). The third is the number width and has to be
+% \cs{last@l@number}. I do not like to redefine \LaTeX{} kernel macros, so
+% maybe the support for list entries, which use \cs{@dottedtocline}, will be
+% removed in future. However, in this case we still would need some of the
+% code or similar code to initialize values and features of \pkg*{tocbasic}.
+% At loading time we only need to \emph{reserve} the macros. The real
+% definition will be done when reading the auxiliary files of the lists or the
+% main \file{aux} file.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\scr@dottedtocline}{}
+\newcommand*{\last@l@number}{}
+% \end{macrocode}
+% \end{macro}^^A \last@l@number
+% \end{macro}^^A \scr@dottedtocline
+% \begin{macro}{\@l@number,\set@l@number}
+% \changes{v2.8q}{2001/11/14}{added}
+% We also need local macros to store the currently maximal number width while
+% reading an auxiliary file. \cs{set@l@number} not only has to update
+% \cs{@l@number} but also to set \len{@temdima} to the real maximum. It is
+% used inside \cs{numberline@box}, which is used inside \cs{numberline}, if
+% the \pkg*{tocbasic} definition of \cs{numberline} is used.
+% \begin{macrocode}
+\newcommand*{\@l@number}{}
+\newcommand*{\set@l@number}[1]{%
+ \settowidth{\@tempdima}{#1\enskip}%
+ \ifdim\@tempdima >\@l@number
+ \xdef\@l@number{\the\@tempdima}%
+ \fi%
+ \ifdim\@tempdima >\last@l@number \else
+ \setlength{\@tempdima}{\last@l@number}%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}^^A \@l@number,\set@l@number
+% \changes{v2.95a}{2006/07/12}{empty case initialization}
+% \changes{v3.06}{2010/05/18}{re-defining \cs{numberline} instead of
+% \cs{numberline@box}}
+% \changes{v3.37}{2022/06/17}{typofix}
+% The usage of all these local macros has to be initialized in
+% \cs{before@starttoc}.
+% \begin{macrocode}
+\newcommand*{\before@starttoc}[1]{%
+ \let\scr@dottedtocline=\@dottedtocline
+ \renewcommand*{\@dottedtocline}[3]{%
+ \scr@dottedtocline{##1}{\z@}{\last@l@number}}%
+ \renewcommand*{\numberline@box}[1]{%
+ \set@l@number{##1}\hb@xt@\@tempdima{##1}}%
+ \gdef\@l@number{\z@}%
+ \@ifundefined{#1@l@number}{%
+ \def\last@l@number{2em}%
+ }{%
+ \expandafter\ifx\csname #1@l@number\endcsname\@empty
+ \let\last@l@number\z@
+ \else
+ \expandafter\let\expandafter\last@l@number
+ \expandafter=\csname#1@l@number\endcsname
+ \fi
+ }%
+% \end{macrocode}
+% \changes{v3.20}{2015/11/26}{initialization of \pkg*{tocbasic} values}
+% We also have to locally change the indent and number width values of the
+% \pkg*{tocbasic} styles.
+% \begin{macrocode}
+ \begingroup
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \scr@ifundefinedorrelax{scr@tso@##1@numwidth}{}{%
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ Setting numwidth of `##1' to \last@l@number}%
+%</trace>
+ \l@addto@macro\do@endgroup{%
+ \@namedef{scr@tso@##1@numwidth}{\last@l@number}%
+ }%
+ }%
+ \scr@ifundefinedorrelax{scr@tso@##1@indent}{}{%
+%<*trace>
+ \ClassInfo{\KOMAClassName}{%
+ Setting indent of `##1' to \string\z@}%
+%</trace>
+ \l@addto@macro\do@endgroup{%
+ \@namedef{scr@tso@##1@indent}{\z@}%
+ }%
+ }%
+ }%
+ \@nameuse{scr@dte@donumwidth}%
+ \do@endgroup
+}
+\newcommand*{\after@starttoc}[1]{%
+ \protected@write\@auxout{}{%
+ \string\gdef\expandafter\string\csname#1@l@number\endcsname{%
+ \@l@number}}%
+}
+% \end{macrocode}
+% Last but not least we have to add the code to the \pkg*{tocbasic} hooks
+% before and after \cs{@starttoc}. Note: This is also used for the table of
+% contents, but in this case \cs{if@dynlist} will be used different.
+% \begin{description}
+% \item[ToDo:] A better suggestion could be to use \meta{category} dependent
+% code here to use \cs{if@dynlist} only for \meta{category} \texttt{float}
+% but \cs{if@tocleft} for \meta{category} \texttt{ToC}. So the support for
+% things like \emph{table of appendix contents} could be benefit.
+% \end{description}
+% \begin{macrocode}
+\g@addto@macro\tocbasic@@before@hook{%
+ \if@dynlist\expandafter\before@starttoc\expandafter{\@currext}\fi
+}
+\g@addto@macro\tocbasic@@after@hook{%
+ \if@dynlist\expandafter\after@starttoc\expandafter{\@currext}\fi
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \@dottedtocline
+%
+%
+% \subsection{The table of contents}
+%
+% \changes{v3.27}{2019/05/11}{init code moved from \file{tocbasic.dtx}}
+% \changes{v3.01}{2008/11/13}{auto-activation of feature \texttt{onecolumn}}
+% Set feature \texttt{onecolumn} for every ToC file.
+% \begin{macrocode}
+%<*prepare&(book|report)>
+\AtAddToTocList[\@currname.\@currext]{\setuptoc{\@currext}{onecolumn}}%
+\AtAddToTocList[ToC]{\setuptoc{\@currext}{onecolumn}}%
+%</prepare&(book|report)>
+% \end{macrocode}
+% Tell the package, what files are used:
+% \changes{v3.27}{2019/05/11}{use category \texttt{ToC} for the table of
+% contents}
+% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}}%^^A
+% \begin{macrocode}
+%<*prepare>
+\addtotoclist[ToC]{toc}
+\Ifstr{\ext@toc}{toc}{}{%
+ \expandafter\addtotoclist
+ \expandafter[\expandafter T\expandafter o\expandafter C\expandafter ]%
+ \expandafter{\ext@toc}%
+}
+%</prepare>
+% \end{macrocode}
+%
+% \begin{macro}{\@tocleftfalse,\@tocleftrue,\if@tocleft}
+% \changes{v2.8q}{2001/11/14}{added}
+% \changes{v2.98c}{2008/03/05}{earlier definition}
+% The switch is used to store the information whether to use a flat
+% (\cs{@toclefttrue}) or a graduated (\cs{@tocleftalse}) table of contents.
+% \begin{macrocode}
+%<*option>
+\newif\if@tocleft
+%</option>
+% \end{macrocode}
+% \end{macro}^^A … \if@tocleft
+%
+% \begin{option}{toc}
+% \changes{v2.98c}{2008/03/04}{added}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}}
+% \changes{v3.12}{2013/08/26}{\cs{KOMA@options} replaced by
+% \cs{KOMAExecuteOptions}}
+% \changes{v3.12a}{2014/01/17}{\cs{KOMAExecuteOptions} replaced by
+% \cs{KOMAoptions}}
+% \changes{v3.18}{2015/06/15}{value \opt{\quotechar=indexnumbered} added}
+% The main features of the table of contents can be configured by this
+% option.
+% \begin{macrocode}
+%<*option>
+\KOMA@key{toc}{%
+ \KOMA@set@ncmdkey{toc}{@tempa}{%
+% \end{macrocode}
+% \changes{v3.28}{2019/10/21}{several alias values added}
+% The provided values are (aliases are also available):
+% \begin{description}
+% \item[\opt{=noindex}:] (default) for the index neither add an entry to the
+% table of contents nor number the heading of the index.
+% \end{description}
+% \begin{macrocode}
+ {noindex}{0},{noidx}{0},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=index}:] for the index add an entry to the table of contents,
+% but do not number the index.
+% \end{description}
+% \begin{macrocode}
+ {index}{1},{idx}{1},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=indexnumbered}:] number the index and therefore also add an
+% entry to the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {indexnumbered}{2},{idxnumbered}{2},{numberedindex}{2},{numberedidx}{2},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=nolistof}:] (default) for any list with category/owner
+% \texttt{float} neither add an entry to the table of contents, nor
+% number the heading of the list of the floats.
+% \end{description}
+% \begin{macrocode}
+ {nolistof}{3},{nolistsof}{3},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=listof}:] for each list with category/owner \texttt{float} add an
+% entry to the table of contents, but do not number the list of the floats.
+% \end{description}
+% \begin{macrocode}
+ {listof}{4},{listsof}{4},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=listofnumbered}:] for each list of category/owner \texttt{float}
+% number the list of floats and therefore add an entry to table of contents.
+% \end{description}
+% \begin{macrocode}
+ {listofnumbered}{5},{numberedlistof}{5},%
+ {listsofnumbered}{5},{numberedlistsof}{5},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=nobibliography}:] (default) for the bibliography neither add an
+% entry to the table if contents nor number the heading.
+% \end{description}
+% \begin{macrocode}
+ {nobibliography}{6},{nobib}{6},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=bibliography}:] for the bibliography add an entry to the table
+% of contents, but do not number the bibliography.
+% \end{description}
+% \begin{macrocode}
+ {bibliography}{7},{bib}{7},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=bibliographynumbered}:] number the bibliography and therefore
+% add an entry to the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {bibliographynumbered}{8},{bibnumbered}{8},{numberedbibliography}{8},%
+ {numberedbib}{8},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=flat}:] use the flat version of the table of contents (all
+% numbers are at one column, all texts in another one).
+% \end{description}
+% \begin{macrocode}
+ {flat}{9},{left}{9},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=graduated}:] (default) use a hierarchical indented table of
+% contents similar to the standard classes.
+% \end{description}
+% \begin{macrocode}
+ {graduated}{10},{indent}{10},{indented}{10},%
+% \end{macrocode}
+% \changes{v3.12}{2014/09/24}{values \opt{\quotechar=numberline} and
+% \opt{\quotechar=nonumberline} etc. added}
+% \begin{description}
+% \item[\opt{=numberline}:] indent entries without number like entries with
+% number.
+% \end{description}
+% \begin{macrocode}
+ {indenttextentries}{11},{indentunnumbered}{11},{numberline}{11},%
+% \end{macrocode}
+% \begin{macrocode}
+% \begin{description}
+% \item[\opt{nonumberline}:] (default) do not indent the first line of an
+% entry without number
+% \end{description}
+% \begin{macrocode}
+ {leftaligntextentries}{12},{leftalignunnumbered}{12},{nonumberline}{12},%
+% \end{macrocode}
+% \changes{v3.15}{2015/01/14}{values \opt{\quotechar=chapterentrywithdots},
+% \opt{\quotechar=chapterentrywithoutdot} resp.
+% \opt{\quotechar=sectionentrywithdots},
+% \opt{\quotechar=sectionentrywithoutdot} added}
+% \begin{description}
+% \item[\opt{=chapterentrywithdots}:] classes with \cs{chapter} provide a dot
+% filler also for chapter entries.
+% \end{description}
+% \begin{macrocode}
+%<book|report> {chapterentrywithdots}{13},{chapterentrydotfill}{13},
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=chapterentrywithoutdots}:] (default) classes with \cs{chapter} use
+% a space filler for chapter entries.
+% \end{description}
+% \begin{macrocode}
+%<book|report> {chapterentrywithoutdots}{14},{chapterentryfill}{14}%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=sectionentrywithdots}:] classes without \cs{chapter} use
+% dot filler also for section entries.
+% \end{description}
+% \begin{macrocode}
+%<article> {sectionentrywithdots}{13},{sectionentrydotfill}{13},
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=sectionentrywithoutdots}:] (default) classes without
+% \cs{chapter} use a space filler for section entries.
+% \end{description}
+% \begin{macrocode}
+%<article> {sectionentrywithoutdots}{14},{sectionentryfill}{14}%
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax % noindex
+ \KOMAoptions{index=notoc}%
+ \or % index
+ \KOMAoptions{index=totoc}%
+ \or % indexnumbered
+ \KOMAoptions{index=numbered}%
+ \or % listof
+ \KOMAoptions{listof=notoc}%
+ \or % nolistof
+ \KOMAoptions{listof=totoc}%
+ \or % listofnumbered
+ \KOMAoptions{listof=numbered}%
+ \or % nobibliography
+ \KOMAoptions{bibliography=nottotoc}%
+ \or % bibliography
+ \KOMAoptions{bibliography=totoc}%
+ \or % bibliographynumbered
+ \KOMAoptions{bibliography=totocnumbered}%
+ \or % flat
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{flat}%
+ \@toclefttrue
+ \or % graduated
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{graduated}%
+ \@tocleftfalse
+ \or % indenttextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \expandafter\setuptoc\expandafter{\ext@toc}{numberline}%
+ \or % leftaligntextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{leftaligntextentries}%
+ \expandafter\unsettoc\expandafter{\ext@toc}{numberline}%
+ \or % chapterentrywithdots/sectionentrywithdots
+%<book|report> \KOMAoptions{chapterentrydots=true}%
+%<article> \KOMAoptions{sectionentrydots=true}%
+ \or % chapterentrywithoutdots/sectionentrywithoutdots
+%<book|report> \KOMAoptions{chapterentrydots=false}%
+%<article> \KOMAoptions{sectionentrydots=false}%
+ \fi
+ \fi
+}
+%</option>
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{tocleft,tocindent}
+% \changes{v2.8q}{2001/11/14}{added}
+% \changes{v2.98c}{2008/03/05}{obsolet}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareDeprecatedOption{tocleft}{toc=flat}
+\KOMA@DeclareDeprecatedOption{tocindent}{toc=graduated}
+%</option>
+% \end{macrocode}
+% \end{option}^^A tocleft,tocindent
+%
+% \begin{command}{\contentsname}
+% \begin{command}{\listoftocname}
+% \changes{v3.00}{2008/07/03}{added to be used by \pkg*{tocbasic}}
+% \changes{v3.27}{2019/05/11}{language dependency added}
+% The name of the table of contents.
+% \begin{macrocode}
+%<*body>
+\newcommand*\contentsname{Contents}
+\newcommand*\listoftocname{\contentsname}
+\providecaptionname{american,australian,british,canadian,english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\contentsname{Contents}%
+%</body>
+% \end{macrocode}
+% \end{command}^^A \listoftocname
+% \end{command}^^A \contentsname
+%
+% \begin{counter}{tocdepth}
+% The counter is used to define, down to which level the entries are shown in
+% the table of contents (resp. list of floats, because the same value is used
+% there). Note: We don't use symbolic values here, because usage of symbolic
+% values would add an additional order dependency with the corresponding
+% \cs{DeclareSecionCommand}.
+% \begin{macrocode}
+%<*body>
+%<book|report>\setcounter{tocdepth}{2}
+%<article>\setcounter{tocdepth}{3}
+%</body>
+% \end{macrocode}
+% \end{counter}^^A tocdepth
+%
+% \begin{macro}{\toc@heading}
+% \changes{v2.3h}{1995/01/21}{added for \cls*{scrartcl}}
+% \changes{v2.95}{2002/06/28}{added for \cls*{scrreprt}and \cls*{scrbook}}
+% \changes{v3.00}{2008/07/04}{deprecated}
+% \changes{v3.10}{2011/08/31}{using \cs{MakeMarkcase}}
+% \changes{v3.30}{2020/02/24}{white space at end of warning removed}
+% This has been defined before usage of \pkg*{tocbasic}. Internally it is not
+% used any longer.
+% \begin{macrocode}
+%<*body>
+\newcommand*\toc@heading{%
+ \ClassWarning{\KOMAClassName}{%
+ usage of deprecated \string\toc@heading!\MessageBreak
+ You should use the features of package `tocbasic'\MessageBreak
+ instead of \string\toc@heading.\MessageBreak
+ Definition of \string\toc@heading\space may be removed from\MessageBreak
+ KOMA-Script soon, so it should not be used%
+ }%
+%<article> \section*{\contentsname}%
+%<book|report> \chapter*{\contentsname}%
+ \@mkboth{\MakeMarkcase{\contentsname}}{\MakeMarkcase{\contentsname}}%
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \toc@heading
+%
+% \begin{macro}{\toc@l@number}
+% \changes{v2.8q}{2001/11/14}{added}
+% The number length storage used by \cs{before@starttoc} for \meta{extension}
+% \texttt{toc}. For safety we just \emph{reserve} it.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\toc@l@number}{}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \toc@l@number
+%
+% \begin{command}{\tableofcontents}
+% \changes{v2.3h}{1995/01/21}{using \cs{toc@heading}}
+% \changes{v2.8l}{2001/08/16}{group added an \len{parskip} set to 0}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse} and \cs{@parskip@indent}}
+% \changes{v2.8q}{2001/11/14}{\cs{if@tocleft} changed}
+% \changes{v2.95}{2002/06/28}{\cls*{scrartcl} also uses \cs{if@tocleft}}
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} and \cs{@parskip@indent} replaced}
+% \changes{v3.00}{2008/07/04}{re-implementation using \pkg*{tocbasic}}
+% The table of contents. See the note above about the local change of
+% \cs{if@dynlist}.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\tableofcontents}{%
+ \begingroup
+ \let\if@dynlist\if@tocleft
+ \expandafter\listoftoc\expandafter{\ext@toc}%
+ \endgroup
+}
+%</body>
+% \end{macrocode}
+% \end{command}^^A \tableofcontents
+%
+% \begin{command}{\addtocentrydefault}
+% \changes{v3.08}{2010/11/01}{added}
+% \changes{v3.12}{2013/09/24}{using new \pkg*{tocbasic} macro
+% \cs{tocbasic@addxcontentsline}}
+% Instead of making the entries into the table of contents directly with
+% the \LaTeX{} low level command \cs{addcontentsline} we provide a class
+% specific low level user command
+% \begin{quote}
+% \cs{addtocentrydefault}\marg{level name}\marg{formatted number}\marg{entry text}
+% \end{quote}
+% that uses the \pkg*{tocbasic} package author command
+% \cs{tocbasic@addctontentsline}. We cannot use \cs{addxcontentsline} because
+% this will run \cs{add\meta{level name}\meta{toc}entry} if available and
+% \cs{addtocentrydefault} is used by the entry commands
+% \cs{addchaptertocentry}, \cs{addsectiontocentry}. So \cs{addtoentrydefault}
+% is a helper for the callbacks from \cs{addxcontentsline} and needs to use
+% the package author interface instead of the user interface. For not numbered
+% entries the \meta{formatted number} should be empty (not only expand to no
+% output). Note: Entries with empty \meta{entry text} will be omitted.
+% \begin{macrocode}
+%<*body>
+\newcommand{\addtocentrydefault}[3]{%
+ \expandafter\tocbasic@addxcontentsline\expandafter{\ext@toc}{#1}{#2}{#3}%
+}
+%</body>
+% \end{macrocode}
+% \end{command}
+%
+%
+% \subsection{The lists of floats (or similar environments)}
+%
+% The list of tables, list of figures and similar lists of environments with
+% category/owner \texttt{float} are very similar to the table of contents. But
+% they use a own set of options and also some commands.
+%
+% \changes{v3.25}{2017/10/10}{extension \texttt{lof} not added explicitely}
+% \changes{v3.25}{2017/10/10}{extension \texttt{lot} not added explicitely}
+% Note: We must not add extensions \texttt{lof} and \texttt{lot} explicitely,
+% because these files will be prepared using \cs{DeclareNewTOC} that also
+% registers the extension.
+%
+% \changes{v3.01}{2008/11/13}{auto-activation of feature \texttt{onecolumn}}
+% Set feature \texttt{onecolumn} for every float list file.
+% \begin{macrocode}
+%<*prepare&(book|report)>
+\AtAddToTocList[float]{\setuptoc{\@currext}{onecolumn}}%
+%</prepare&(book|report)>
+% \end{macrocode}
+%
+% \begin{macro}{\float@@listhead}
+% \changes{v2.98c}{2008/03/05}{added}
+% \changes{v3.01}{2008/11/14}{deprecated}
+% Prints only the heading, nothing else. The heading text is the argument.
+% \begin{macrocode}
+%<*option>
+\newcommand*{\float@@listhead}{%
+%<article> \section*
+%<report|book> \chapter*
+}
+%</option>
+% \end{macrocode}
+% \end{macro}^^A \float@@listhead
+%
+% \begin{macro}{\@dynlistfalse,\@dynlisttrue,\if@dynlist}
+% \changes{v2.8q}{2001/11/14}{added}
+% The switch to select the flat (\cs{@dynlisttrue}) or graduated
+% (\cs{@dynlistfalse)} list type.
+% \begin{macrocode}
+%<*option>
+\newif\if@dynlist
+%</option>
+% \end{macrocode}
+% \end{macro}^^A … \if@dynlist
+%
+% \begin{option}{listof}
+% \changes{v2.98c}{2008/03/05}{added}
+% \changes{v3.06}{2010/06/02}{options for \pkg*{tocbasic} features do not only
+% work for the currently defined lists but all future lists of category
+% \texttt{float}}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyState}}
+% \changes{v3.12}{2013/06/26}{\cs{KOMA@options} replaced by
+% \cs{KOMAExecuteOptions}}
+% \changes{v3.12a}{2014/01/17}{\cs{KOMAExecuteOptions} replaced by
+% \cs{KOMAoptions}}
+% The main features of the lists of floats can be configured by this option.
+% \begin{macrocode}
+%<*option>
+\KOMA@key{listof}{%
+ \KOMA@set@ncmdkey{listof}{@tempa}{%
+% \end{macrocode}
+% The provided values are (aliases are also available):
+% \begin{description}
+% \item[\opt{=notoc}:] (default) neither number the lists of floats nor add
+% entries to them into the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {notoc}{0},{nottotoc}{0},{plainheading}{0},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=totoc}:] do not number the lists of floats but nevertheless add
+% an entry for each of them to the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {totoc}{1},{toc}{1},{notnumbered}{1},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=numbered}:] number the lists of floats and therefore also add an
+% for each of them to the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},%
+ {numberedtoc}{2},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=flat}:] use the flat version of the lists of floats (all
+% numbers are at one column, all texts in another one). Usually this only
+% removes the indent and calculates the needed width of the numbers. But,
+% e.g., if chapters are added, it does work over all levels.
+% \end{description}
+% \begin{macrocode}
+ {flat}{3},{left}{3},%
+% \item[\opt{=graduated}:] (default) use hierarchical indented lists of
+% floats similar to the standard classes.
+% \end{description}
+% \begin{macrocode}
+ {graduated}{4},{indent}{4},{indented}{4},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=leveldown}:] Use for the lists of floats a section hierarchy one
+% level below the standard level.
+% \end{description}
+% \begin{macrocode}
+ {leveldown}{5},
+% \end{macrocode}
+% \changes{v3.25}{2017/12/04}{value \opt{\quotechar=standardlevel} added}
+% \begin{description}
+% \item[\opt{=standardlevel}:] (default) Use for the lists of floats the
+% standard hierarchy.
+% \end{description}
+% \begin{macrocode}
+ {standardlevel}{6},
+% \end{macrocode}
+% \changes{v3.06}{2010/05/18}{value \opt{\quotechar=entryprefix} added}
+% \begin{description}
+% \item[\opt{=entryprefix}:] Prefix the number of each entry with
+% \cs{listof\meta{toc}entryprefix}. Note: This is more or less senseless and
+% does not work correctly with chapter entries in the lists of floats. It is
+% recommended to reconfigure the entries, e.g., using
+% \cs{DeclareTOCStyleEntry} or redefining \cs{add\meta{level
+% name}\meta{toc}entry} instead. Note: \opt{listof=entryprefix} also
+% activates \opt{listof=flat}.
+% \end{description}
+% \begin{macrocode}
+ {entryprefix}{7},
+% \end{macrocode}
+% \changes{v3.12}{2014/09/24}{values \opt{\quotechar=numberline} and
+% \opt{\quotechar=nonumberline} etc. added}
+% \begin{description}
+% \item[\opt{=numberline}:] indent entries without number like entries with
+% number.
+% \end{description}
+% \begin{macrocode}
+ {indenttextentries}{8},{indentunnumbered}{8},{numberline}{8},%
+% \end{macrocode}
+% \begin{macrocode}
+% \begin{description}
+% \item[\opt{=nonumberline}:] (default) do not indent the first line of an
+% entry without number
+% \end{description}
+% \begin{macrocode}
+ {leftaligntextentries}{9},{leftalignunnumbered}{9},{nonumberline}{9}%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=chapterentry}:] \cls*{scrbook} and \cls*{scrreprt} provides
+% chapter entries into the lists of floats.
+% \end{description}
+% \begin{macrocode}
+%<*book|report>
+ ,{chapterentry}{10},{withchapterentry}{10},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=nochaptergap}:] Alternatively the lists of floats can ignore chapters.
+% \end{description}
+% \begin{macrocode}
+ {nochaptergap}{11},{ignorechapter}{11},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=chaptergapsmall}:] (default) chapters can add a small
+% vertical distance into the lists of floats.
+% \end{description}
+% \begin{macrocode}
+ {chaptergapsmall}{12},{smallchaptergap}{12},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=chaptergapline}:] chapters can add an empty line to the lists of
+% floats.
+% \end{description}
+% \begin{macrocode}
+ {chaptergapline}{13},{onelinechaptergap}{13}%
+%</book|report>
+ }{#1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifcase \@tempa\relax % notoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \section*
+%<report|book> \chapter*
+ }%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \unsettoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \unsettoc{\@currext}{totoc}%
+ }%
+ \or% totoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{totoc}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \addsec
+%<report|book> \addchap
+ }%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \or% numbered
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nolistof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listof}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{listofnumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{numbered}%
+ \renewcommand*{\float@@listhead}{%
+%<article> \section
+%<report|book> \chapter
+ }%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{numbered}%
+ \setuptoc{\@currext}{totoc}%
+ }%
+ \or% flat
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{flat}%
+ \@dynlisttrue
+ \or% graduated
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{flat}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{graduated}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}%
+ \@dynlistfalse
+ \or% leveldown
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{leveldown}%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{leveldown}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{leveldown}%
+ }%
+ \or% standardlevel
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leveldown}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{standardlevel}%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{leveldown}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{leveldown}%
+ }%
+ \or% entryprefix
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{entryprefix}%
+ \@dynlisttrue
+ \doforeachtocfile[float]{%
+ \BeforeStartingTOC[\@currext]{%
+ \scr@ifundefinedorrelax{listof\@currext entryname}{}{%
+ \expandafter\def\expandafter\numberline@prefix
+ \expandafter{\csname listof\@currext entryname\endcsname
+ \nobreakspace}%
+ }%
+ }%
+ }%
+ \AtAddToTocList[float]{%
+ \BeforeStartingTOC[\@currext]{%
+ \scr@ifundefinedorrelax{listof\@currext entryname}{}{%
+ \expandafter\def\expandafter\numberline@prefix
+ \expandafter{\csname listof\@currext entryname\endcsname
+ \nobreakspace}%
+ }%
+ }%
+ }%
+ \or% indenttextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \doforeachtocfile[float]{%
+ \setuptoc{\@currext}{numberline}%
+ }%
+ \AtAddToTocList[float]{%
+ \setuptoc{\@currext}{numberline}%
+ }
+ \or% leftaligntextentries
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{indenttextentries}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}%
+ \doforeachtocfile[float]{%
+ \unsettoc{\@currext}{numberline}%
+ }%
+ \AtAddToTocList[float]{%
+ \unsettoc{\@currext}{numberline}%
+ }
+%<*book|report>
+ \or% chapterentry
+ \KOMAoptions{chapteratlists=entry}%
+ \or% chaptergap
+ \KOMAoptions{chapteratlists=\z@}%
+ \or% chaptergapsmall
+ \KOMAoptions{chapteratlists=10\p@}%
+ \or% chaptergapline
+ \KOMAoptions{chapteratlists=\baselineskip}%
+%</book|report>
+ \fi
+ \fi
+}
+\KOMA@kav@add{.\KOMAClassFileName}{toc}{nolistof}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{notoc}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{graduated}
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{leftaligntextentries}
+%</option>
+% \end{macrocode}
+% \end{option}^^A listof
+%
+% \begin{option}{liststotoc}
+% \changes{v2.3h}{1995/01/21}{added}
+% \changes{v2.8b}{2001/06/26}{using \cs{float@headings}}
+% \changes{v2.4a}{1996/03/13}{\cs{listtabelname} relaces by \cs{listtablename}}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} renamed to
+% \cs{float@listhead}}
+% \changes{v2.98c}{2008/03/05}{obsolet}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareDeprecatedOption{liststotoc}{listof=totoc}
+%</option>
+% \end{macrocode}
+% \end{option}^^A liststotoc
+%
+% \begin{option}{liststotocnumbered}
+% \changes{v2.8q}{2002/04/08}{added}
+% \changes{v2.9p}{2003/07/07}{number also in the running head}
+% \changes{v2.98c}{2008/03/05}{obsolet}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareDeprecatedOption{liststotocnumbered}{listof=numbered}
+%</option>
+% \end{macrocode}
+% \end{option}^^A liststotocnumbered
+%
+%
+% \begin{option}{listsleft,listsindent}
+% \changes{v2.8q}{2001/11/14}{added}
+% \changes{v2.98c}{2008/03/05}{obsolet}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{macrocode}
+%<*option>
+\KOMA@DeclareDeprecatedOption{listsleft}{listof=flat}
+\KOMA@DeclareDeprecatedOption{listsindent}{listof=graduated}
+%</option>
+% \end{macrocode}
+% \end{option}^^A listsleft,listsindent
+%
+% \begin{option}{chapteratlists}
+% \changes{v2.96a}{2006/12/03}{added}
+% \changes{v2.98c}{2008/03/05}{not with \cls*{scrartcl}}
+% \changes{v3.12a}{2014/01/17}{missing \cs{FamilyKeyStateProcessed} added}
+% \changes{v3.17}{2015/03/12}{internal value storage}
+% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}}
+% \begin{macro}{\@chaptertolistsfalse,\@chaptertoliststrue,\if@chaptertolists}
+% \changes{v2.96a}{2006/12/03}{added}
+% \changes{v3.12}{2013/09/24}{don't add lists to lists}
+% \begin{macro}{\@chapterlistsgap}
+% \changes{v2.96a}{2006/12/03}{added}
+% We can do several special treatments inside the lists of floats, when a new
+% chapter starts.
+% \begin{macrocode}
+%<*option&(book|report)>
+\newcommand*{\@chapterlistsgap}{10\p@}
+\newif\if@chaptertolists\@chaptertolistsfalse
+\KOMA@key{chapteratlists}[entry]{%
+ \FamilyKeyStateProcessed
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chapterentry}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergap}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{listof}{chaptergapline}%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=entry}:] add the chapter heading also to the lists of
+% float. \cs{@chaptertolisttrue} is used and the distance \cs{@chapterlistgap}
+% is set to \len{z@}.
+% \end{description}
+% \begin{macrocode}
+ \Ifstr{#1}{entry}{%
+ \@chaptertoliststrue\renewcommand*{\@chapterlistsgap}{\z@}%
+ \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}{entry}%
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chapterentry}%
+ }{%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=\meta{distance}}:] use a vertical \meta{distance}.
+% \end{description}
+% \begin{macrocode}
+ \@chaptertolistsfalse\renewcommand*{\@chapterlistsgap}{#1}%
+ \KOMA@kav@replacevalue{.\KOMAClassFileName}{chapteratlists}%
+ {\@chapterlistsgap}%
+ \def\reserved@a{\z@}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergap}%
+ \else
+ \def\reserved@a{10\p@}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+ \else
+ \def\reserved@a{\baselineskip}%
+ \ifx\@chapterlistsgap\reserved@a
+ \KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapline}%
+ \fi
+ \fi
+ \fi
+ }%
+}
+\BeforeTOCHead{\@chaptertolistsfalse}
+\KOMA@kav@add{.\KOMAClassFileName}{chapteratlists}{10\p@}%
+\KOMA@kav@add{.\KOMAClassFileName}{listof}{chaptergapsmall}%
+%</option&(book|report)>
+% \end{macrocode}
+% \end{macro}^^A \@chapterlistgap
+% \end{macro}^^A \if@chaptertolists
+% \end{option}^^A chapteratlists
+%
+%
+% \begin{macro}{\float@listhead}
+% \changes{v2.8b}{2001/06/26}{added}
+% \changes{v2.8g}{2001/07/18}{\cs{float@headings} renamed to
+% \cs{float@listhead}}
+% \changes{v2.98c}{2008/03/05}{using \cs{float@@listhead}}
+% \changes{v3.00}{2008/07/04}{deprecated}
+% \changes{v3.10}{2011/08/31}{using\cs{MakeMarkcase}}
+% In 2001 I've designed an interface to allow other package authors to set the
+% headings of lists of floats the same way \KOMAScript{} classes do. Anselm
+% Lingnau accepted this interface (but did not like may macro names, so these
+% were changed in \KOMAScript{} 2.8g). But for \KOMAScript{} 3 I've needed a
+% more powerful interface. So this became deprecated. Unfortunately Anselm is
+% not willing to use the new \pkg*{tocbasic} for \pkg{float}. See
+% \pkg*{scrhack} for a solution and how \pkg{float} could benefit from using
+% \pkg*{tocbasic}.
+% \begin{macrocode}
+%<*body>
+\newcommand*{\float@listhead}[1]{%
+ \scr@float@listhead@warning
+ \float@@listhead{#1}%
+ \@mkboth{\MakeMarkcase{#1}}{\MakeMarkcase{#1}}%
+% \end{macrocode}
+% \changes{v2.8q}{2001/11/14}{support for dynamic number width}
+% This is the best occasion to also add the code for the dynamic number width.
+% \begin{macrocode}
+ \if@dynlist%
+ \newcommand*{\scr@starttoc}{}%
+ \let\scr@starttoc=\@starttoc
+ \renewcommand*{\@starttoc}[1]{%
+ \before@starttoc{##1}\scr@starttoc{##1}\after@starttoc{##1}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@float@listhead@warning,\scr@float@addtolists@warning}
+% \changes{v3.01}{2008/11/13}{added}
+% \changes{v3.12}{2013/09/25}{text changed}
+% \changes{v3.12a}{2014/03/05}{text corrected}
+% \changes{v3.30}{2020/02/25}{spurious space at end of warning message
+% removed}
+% Here the warning messages, that are used for using the deprecated interface.
+% \begin{macrocode}
+\newcommand*{\scr@float@listhead@warning}{%
+ \ClassWarning{\KOMAClassName}{%
+ \string\float@listhead\space detected!\MessageBreak
+ Implementation of \string\float@listhead\space became\MessageBreak
+ deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
+ has been replaced by several more flexible\MessageBreak
+ features of package `tocbasic`.\MessageBreak
+ Maybe implementation of \string\float@listhead\space will\MessageBreak
+ be removed from KOMA-Script soon.\MessageBreak
+ Loading of package `scrhack' may help to\MessageBreak
+ avoid this warning, if you are using a\MessageBreak
+ a package that still implements the\MessageBreak
+ deprecated \string\float@listhead\space interface%
+ }%
+}
+\newcommand*{\scr@float@addtolists@warning}{%
+ \ClassWarningNoLine{\KOMAClassName}{%
+ \string\float@addtolists\space detected!\MessageBreak
+ Implementation of \string\float@addtolist\space became\MessageBreak
+ deprecated in KOMA-Script v3.01 2008/11/14 and\MessageBreak
+ has been replaced by several more flexible\MessageBreak
+ features of package `tocbasic`.\MessageBreak
+ Since Version 3.12 support for deprecated\MessageBreak
+ \string\float@addtolist\space interface has been\MessageBreak
+ restricted to only some of the KOMA-Script\MessageBreak
+ features and been removed from others.\MessageBreak
+ Loading of package `scrhack' may help to\MessageBreak
+ avoid this warning, if you are using a\MessageBreak
+ a package that still implements the\MessageBreak
+ deprecated \string\float@addtolist\space interface%
+ }%
+ \global\let\scr@float@addtolists@warning\relax
+}
+%</body>
+% \end{macrocode}
+% \end{macro}^^A \scr@float@listhead@warning,scr@float@addtolists@warning
+% \end{macro}^^A \float@listhead
+%
+% \begin{command}{\listfigurename,\listtablename}
+% \begin{command}{\listoflofname,\listoflotname,
+% \listoflofentryname,\listoflotentryname}
+% \changes{v3.00}{2008/07/03}{neu für Paket \pkg*{tocbasic}}
+% \changes{v3.25}{2017/10/10}{\cs{renewcommand} statt \cs{newcommand}}%^^A
+% The names used by \pkg*{tocbasic}.
+% \begin{macrocode}
+%<*body>
+\renewcommand*\listfigurename{List of Figures}
+\providecaptionname{american,australian,british,canadian,english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\listfigurename{List of Figures}
+\renewcommand*\listoflofname{\listfigurename}
+\renewcommand*\listoflofentryname{\figurename}
+\renewcommand*\listtablename{List of Tables}
+\providecaptionname{american,australian,british,canadian,english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\listtablename{List of Tables}
+\renewcommand*\listoflotname{\listtablename}
+\renewcommand*\listoflotentryname{\tablename}
+%</body>
+% \end{macrocode}
+% \end{command}^^A \listoflofname … \listoflotentryname
+% \end{command}^^A \listfigurename,\listtablename
+%
+% \begin{command}{\listoffigures}
+% \changes{v2.3h}{1995/01/21}{using \cs{lof@heading}}
+% \changes{v2.4k}{1996/12/13}{\cs{lof@heading} for all classes}
+% \changes{v2.8l}{2001/08/16}{group added an \len{parskip} set to 0}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} and \cs{@parskip@indent}
+% replaced}
+% \changes{v3.00}{2008/07/04}{using \pkg*{tocbasic}}
+% \changes{v3.23}{2017/03/24}{using \cs{ext@figure} instead of \file{lof}}
+% \changes{v3.25}{2017/10/10}{implicit definition by \cs{DeclareNewTOC}}
+% The list of figures.
+% \end{command}^^A \listoffigures
+%
+% \begin{macro}{\l@figure}
+% \changes{v3.25}{2017/10/10}{implicit definition by \cs{DeclareNewTOC}}
+% Entry command for the list of figures.
+% \end{macro}^^A \l@figure
+%
+% \begin{command}{\listoftables}
+% \changes{v2.3h}{1995/01/21}{using \cs{lot@heading}}
+% \changes{v2.4k}{1996/12/13}{\cs{lot@heading} for all classes}
+% \changes{v2.8l}{2001/08/16}{group added an \len{parskip} set to 0}
+% \changes{v2.8q}{2001/11/13}{\cs{@parskipfalse}\cs{@parskip@indent}}
+% \changes{v2.95}{2004/11/05}{\cs{@parskipfalse} and \cs{@parskip@indent}
+% replaced}
+% \changes{v3.00}{2008/07/04}{using \pkg*{tocbasic}}
+% \changes{v3.23}{2017/03/24}{using \cs{ext@table} instead of \file{lot}}
+% \changes{v3.25}{2017/10/10}{implicit definition by \cs{DeclareNewTOC}}
+% The list of figures.
+% \end{command}^^A \listoftables
+%
+% \begin{macro}{\l@table}
+% \changes{v3.25}{2017/10/10}{implicit definition by \cs{DeclareNewTOC}}
+% Entry command for the list of tables.
+% \end{macro}^^A \l@table
+%
+% \begin{macrocode}
+%</!letter>
+% \end{macrocode}
+%
+%
+% \Finale
+% \PrintChanges
+%
+\endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% TeX-engine: luatex-dev
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End: