summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/tocbasic.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/tocbasic.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/tocbasic.dtx2471
1 files changed, 501 insertions, 1970 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/tocbasic.dtx b/Master/texmf-dist/source/latex/koma-script/tocbasic.dtx
index 86d5a72d482..d7cc63d857a 100644
--- a/Master/texmf-dist/source/latex/koma-script/tocbasic.dtx
+++ b/Master/texmf-dist/source/latex/koma-script/tocbasic.dtx
@@ -1,8 +1,8 @@
-% \CheckSum{1465}
+% \CheckSum{1499}
% \iffalse meta-comment
% ======================================================================
% tocbasic.dtx
-% Copyright (c) Markus Kohm, 2008-2015
+% Copyright (c) Markus Kohm, 2008-2016
%
% This file is part of the LaTeX2e KOMA-Script bundle.
%
@@ -17,12 +17,10 @@
%
% The Current Maintainer and author of this work is Markus Kohm.
%
-% This work consists of files `tocbasic.dtx' and `scrlogo.dtx' at least.
-%
% This work consists of all files listed in manifest.txt.
% ----------------------------------------------------------------------
% tocbasic.dtx
-% Copyright (c) Markus Kohm, 2008-2015
+% Copyright (c) Markus Kohm, 2008-2016
%
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
% Version 1.3c, verteilt und/oder veraendert werden.
@@ -57,32 +55,37 @@
% Right brace \} Tilde \~}
%
% \iffalse
-%%% From File: $Id: tocbasic.dtx 2146 2015-06-20 06:38:46Z kohm $
+%%% From File: $Id: tocbasic.dtx 2440 2016-04-29 15:59:32Z kohm $
+%<identify>%%% (run: identify)
+%<prepare>%%% (run: prepare)
+%<option>%%% (run: option)
+%<execoption>%%% (run: execoption)
+%<body>%%% (run: body)
+%<exit>%%% (run: exit)
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
\begingroup
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
- \filedate$Date: 2015-06-20 08:38:46 +0200 (Sat, 20 Jun 2015) $
+ \filedate$Date: 2016-04-29 17:59:32 +0200 (Fri, 29 Apr 2016) $
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
\filerevision$Revision: 1962 $
\endgroup
\ProvidesFile{tocbasic.dtx}[\filedate\space\filerevision\space
%</dtx>
-%<package>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-%<doc>\ProvidesFile{tocbasic.tex}[%
-%<package>\ProvidesPackage{tocbasic}[%
-%<*dtx|package|driver|doc>
+%<package&identify>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+%<package&identify>\ProvidesPackage{tocbasic}[%
+%<*dtx|(package&identify)|driver>
%!KOMAScriptVersion
package
-%</dtx|package|driver|doc>
+%</dtx|(package&identify)|driver>
%<driver> (driver)%
-%<package|doc> (handling toc-files)%
+%<package&identify> (handling toc-files)%
%<*dtx>
(dtx)%
%</dtx>
-%<*dtx|package|driver|doc>
+%<*dtx|(package&identify)|driver>
]
-%</dtx|package|driver|doc>
+%</dtx|(package&identify)|driver>
%<*dtx>
\ifx\documentclass\undefined
\input scrdocstrip.tex
@@ -90,14 +93,21 @@
\@@input scrstrip.inc
\KOMAdefVariable{COPYRIGHTFROM}{2008}
\generate{\usepreamble\defaultpreamble
- \useWarning\@gobbletwo
- \file{tocbasic.tex}{%
- \from{tocbasic.dtx}{doc}%
- }%
- }
- \generate{\usepreamble\defaultpreamble
\file{tocbasic.sty}{%
- \from{tocbasic.dtx}{package}%
+ \from{tocbasic.dtx}{package,identify}%
+ \from{tocbasic.dtx}{package,prepare}%
+ \from{scrkernel-tocstyle.dtx}{package,prepare}%
+ \from{tocbasic.dtx}{package,option}%
+ \from{scrkernel-tocstyle.dtx}{package,option}%
+ \from{tocbasic.dtx}{package,body}%
+ \from{scrkernel-tocstyle.dtx}{package,body}%
+ \from{scrkernel-tocstyle.dtx}{package,style,gobble}%
+ \from{scrkernel-tocstyle.dtx}{package,style,dottedtocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,undottedtocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,largetocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,tocline}%
+ \from{scrkernel-tocstyle.dtx}{package,style,default}%
+ \from{tocbasic.dtx}{package,exit}%
\from{scrlogo.dtx}{logo}%
}%
}%
@@ -127,55 +137,9 @@
\DocInput{\filename}
\end{document}
%</driver>
+%<*dtx>
% \fi
%
-% \providecommand*{\DescribeCounter}{\DescribeMacro}
-% \let\Macro\cs
-% \let\Class\textsf
-% \let\Package\textsf
-% \let\File\texttt
-% \let\Environment\texttt
-% \let\Parameter\marg
-% \let\OParameter\oarg
-% \let\PName\meta
-% \let\PValue\texttt
-% \let\Option\texttt
-% \newenvironment{Example}{\quote
-% \hspace*{-\leftmargin}\textbf{Example:}\enskip\ignorespaces
-% }{\endquote}
-% \newlength\descwidth
-% \newenvironment{desctabular}{
-% \setlength{\descwidth}{\linewidth}
-% \addtolength{\descwidth}{-1em}
-% \addtolength{\descwidth}{-2\tabcolsep}
-% \tabular{@{}lp{\descwidth}@{}}
-% \hline
-% }{%
-% \hline
-% \endtabular
-% }
-% \newcommand{\pventry}[2]{\multicolumn{2}{@{}l@{}}{\PValue{#1}}\\
-% ~ & #2 \\ }
-% \providecommand*{\autoref}[1]{\expandafter\AUTOREF#1:}
-% \newcommand*{\AUTOREF}{}
-% \makeatletter
-% \def\AUTOREF#1:#2:{\edef\@tempa{#1}\edef\@tempb{tab}\ifx\@tempa\@tempb
-% table~\fi
-% \edef\@tempb{sec}\ifx\@tempa\@tempb section~\fi
-% \ref{#1:#2}}
-% \makeatother
-% \providecommand*{\BeginIndex}[2]{}
-% \providecommand*{\IndexPackage}[2][]{\index{#2 (package)}}
-% \providecommand*{\IndexCmd}[2][]{\index{\cs{#2}}}
-% \providecommand*{\Index}[1][]{\index}
-% \providecommand*{\IndexOption}[2][]{\index{#2 (option)}}
-% \providecommand*{\IndexLength}[2][]{\index{\cs{#2} (length)}}
-% \providecommand*{\textnote}[2][]{}
-% \providecommand*{\important}[2][]{}
-% \providecommand*{\KOption}[1]{\texttt{#1=}}
-% \providecommand*{\OptionValue}[2]{\texttt{#1=#2}}
-% \providecommand*{\ChangedAt}[2]{}
-%
% \begin{document}
% \title{\KOMAScript{} \partname\ \texttt{\filename}%
% \thanks{Diese Datei ist Version \fileversion\ von \texttt{\filename}.}}
@@ -183,1680 +147,24 @@
% \author{Markus Kohm\thanks{mailto:komascript(at)gmx.info}}
% \maketitle
% \begin{abstract}
-% \iffalse
-%<*doc>
-
-\translator{Markus Kohm}
-
-% Date of the translated German file: 2012/03/14
-
-\chapter[{Management of Tables and Lists of Contents Using
- \Package{tocbasic}}]
- {Management of Tables and Lists of Contents Using
- \Package{tocbasic}\protect\footnote{This chapter has been generated from the
- source of the package. It's not a 1-to-1 translation of the German
- manual. Currently translation has not been finished}}
-\labelbase{tocbasic}
-
-\BeginIndex{Package}{tocbasic}%
-\BeginIndex{}{table of contents}%
-\BeginIndex{}{list>of contents}%
-\BeginIndex{}{file>extension}%
-%</doc>
-%<*doc|dtx>
-% \fi
-The main purpose of package \Package{tocbasic} is to provide features for
-authors of classes and packages to create own tables or lists of contents like
-the list of figures and the list of tables and thereby allow other classes or
-packages some types of control over these. For examples package
-\Package{tocbasic} delegates language control of all these tables and lists of
-contents to package \Package{babel}\IndexPackage{babel}%^^A
-%\iffalse^^A
-\ (see \cite{package:babel})%^^A
-%\fi^^A
-. So automatic change of language will be provided inside
-all these tables and lists of contents. Using \Package{tocbasic} will
-exculpate authors of classes and packages from implementation of such
-features.
-
-\KOMAScript{} itself uses \Package{tocbasic} not only for the table of
-contents but also for the already mentioned lists of figures and tables.
-% \iffalse
-%<*dtx>
-% \fi
+% The main purpose of package \textsf{tocbasic} is to provide features for
+% authors of classes and packages to create own tables or lists of contents
+% like the list of figures and the list of tables and thereby allow other
+% classes or packages some types of control over these. For examples package
+% \textsf{tocbasic} delegates language control of all these tables and lists
+% of contents to package \textsf{babel}. So automatic change of language
+% will be provided inside all these tables and lists of contents. Using
+% \textsf{tocbasic} will exculpate authors of classes and packages from
+% implementation of such features.
+%
+% \KOMAScript{} itself uses \textsf{tocbasic} not only for the table of
+% contents but also for the already mentioned lists of figures and tables.
% \end{abstract}
%
% \tableofcontents
%
-% \section{Legal Note}
-% \label{sec:tocbasic.legalnote}
-%
-% You are allowed to destribute this part of \KOMAScript{} without the main
-% part of \KOMAScript{}. The files ``\File{scrlogo.dtx}'' and
-% ``\File{tocbasic.dtx}'' may be distributed together under the conditions
-% of the \LaTeX{} Project Public License, either version~1.3c of this license
-% or (at your option) any later version.
-%
-% The latest version of this license is in
-% \mbox{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.
-%
-% The \KOMAScript{} bundle may be found at
-% CTAN:/\mbox{macros}/\linebreak[3]\mbox{latex}/\linebreak[3]\mbox{contrib}/%
-% \linebreak[3]\mbox{koma-script}/.
-% ``CTAN:'' is a shortcut for every ``tex-archive'' directory at every
-% CTAN-server or CTAN-mirror. See \mbox{http://www.ctan.org} for a list of all
-% those servers and mirrors.
-%
-% \section{Using Package \Package{tocbasic}}
-% \label{sec:tocbasic.usage}
-%
-% This package was made to be used by class and package authors. Because of
-% this the package has no options. If different packages would load it with
-% different options a option clash would be the result. So using options
-% wouldn't be a good idea.
-%
-% This package may be used by by other class and package authors. It is also
-% allowed to distribute it without the main part of \KOMAScript{} (see
-% section~\ref{sec:tocbasic.legalnote}. Because of this, it does not use any
-% \KOMAScript{} package, that isn't allowed to be distributed without the main
-% part of \KOMAScript{}, too. Currently \Package{tocbasic} does only need
-% package \Package{keyval} from the graphics bundle.
-%
-% There are two kind of commands. The first kind are basic command. Those
-% are used to inform other packages about the extensions used for files that
-% represent a list of something. Classes or packages may use this information
-% e.\,g, for putting something to every of those files. Packages may also ask,
-% if an extension is already in use. This does even work, if \Macro{nofiles}
-% was used. The second kind are commands to create the list of something.
-% \iffalse
-%</dtx>
-% \fi
-
-\section{Basic Commands}
-\label{sec:tocbasic.basics}
-
-Basic commands are used to handle a list of all extensions\textnote{file
- extension, table or list of contents} known for files representing a table
-of contents or list of something. Entries to such files are typically written
-using \Macro{addtocontents}\important{\Macro{addtocontents},
- \Macro{addcontentsline}} or \Macro{addcontentsline}. There are also
-commands to do something for all known extensions. And there are commands to
-set or unset features of an extension or the file represented by the
-extension. Typically an extension also has an owner\textnote{file owner}.
-This owner may be a class or package or a term decided by the author of the
-class or package using \Package{tocbasic}, e.\,g., \KOMAScript{} uses the
-owner \texttt{float} for list of figures and list of tables, and the file name
-of the class file as owner for the table of contents.
-
-% \iffalse
-\begin{Declaration}
- \Macro{ifattoclist}\Parameter{extension}\Parameter{true
- part}\Parameter{false part}
-\end{Declaration}
-\BeginIndex{Cmd}{ifattoclist}%
-This command
-%<*dtx>
-%\fi
-\DescribeMacro{\ifattoclist}
-Command \Macro{ifattoclist}\Parameter{extension}\Parameter{true
- instructions}\Parameter{false instructions}
-% \iffalse
-%</dtx>
-% \fi
-may be used to ask, wether or not an \PName{extension} is already a known
-extension. If the \PName{extension} is already known the \PName{true
- instructions} will be used, otherwise the \PName{false instructions} will be
-used.
-\begin{Example}
- Maybe you want to know if the extension ``\File{foo}'' is already in use to
- report an error, if you can not use it:
-\begin{lstcode}
- \ifattoclist{foo}{%
- \PackageError{bar}{%
- extension `foo' already in use%
- }{%
- Each extension may be used only
- once.\MessageBreak
- The class or another package already
- uses extension `foo'.\MessageBreak
- This error is fatal!\MessageBreak
- You should not continue!}%
- }{%
- \PackageInfo{bar}{using extension `foo'}%
- }
-\end{lstcode}
-\end{Example}
-% \iffalse
-\EndIndex{Cmd}{ifattoclist}%
-
-\begin{Declaration}
- \Macro{addtotoclist}\OParameter{owner}\Parameter{extension}
-\end{Declaration}
-\BeginIndex{Cmd}{addtotoclist}%
-This command
-%<*dtx>
-%\fi
-\DescribeMacro{\addtotoclist}
-Command \Macro{addtotoclist}\OParameter{owner}\Parameter{extension}
-% \iffalse
-%</dtx>
-% \fi
-adds the \PName{extension} to the list of known extensions. But if the
-\PName{extension} is a known one already, then an error will be reported to
-avoid double usage of the same \PName{extension}.
-
-If the optional argument, \OParameter{owner}, was given this \PName{owner}
-will be stored to be the owner of the \PName{extension}. If the optional
-argument has been omitted, \Package{tocbasic} tries to find out the file name
-of the current processed class or package and stores this as owner.
-This\textnote{Attention!} will fail if \Macro{addtotoclist} was not used,
-loading a class or package but using a command of a class or package after
-loading this class or package. In this case the owner will be set to
-``\PValue{.}''.
-
-Please note\textnote{Attention!} that an empty \PName{owner} is not the same
-like omitting the optional argument with the braces. An empty argument would
-result in an empty owner.
-\begin{Example}
- You want to add the extension ``\File{foo}'' to the list of known extension,
- while loading your package with file name ``\File{bar.sty}'':
-\begin{lstcode}
- \addtotoclist{foo}
-\end{lstcode}%
- This will add the extension ``\PValue{foo}'' with owner ``\PValue{bar.sty}''
- to the list of known extensions, if it was not already on the list of known
- extensions. If the class or another package already added the extension you
- will get the error:
-\begin{lstoutput}
- Package tocbasic Error: file extension `foo' cannot be used twice
-
- See the tocbasic package documentation for explanation.
- Type H <return> for immediate help.
-\end{lstoutput}
- and after typing \texttt{H} and pressing the return key you will get the
- help:
-\begin{lstoutput}
- File extension `foo' is already used by a toc-file, while bar.sty
- tried to use it again for a toc-file.
- This may be either an incompatibility of packages, an error at a package,
- or a mistake by the user.
-\end{lstoutput}
-
- Maybe your package has a command, that creates list of files dynamically. In
- this case you should use the optional argument of \Macro{addtotoclist} to
- set the owner.
-\begin{lstcode}
- \newcommand*{\createnewlistofsomething}[1]{%
- \addtotoclist[bar.sty]{#1}%
- % Do something more to make this list of something available
- }
-\end{lstcode}
- If the user calls now, e.\,g.,
-\begin{lstcode}
- \createnewlistofsomething{foo}
-\end{lstcode}
- this would add the extension ``\PValue{foo}'' with the owner
- ``\PValue{bar.sty}'' to the list of known extension or report an error, if the
- extension is already in use.
-\end{Example}
-You may use any owner you want. But it should be unique! So, if you would
-be, e.\,g., the author of package \Package{float} you could use for example
-owner ``\PValue{float}'' instead of owner ``\PValue{float.sty}'', so the
-\KOMAScript{} options for the list of figures and the list of tables will also
-handle the lists of this package. Those are already added to the known
-extensions when the option is used. This is because \KOMAScript{} already
-registers file extension ``\PValue{lof}'' for the list of figures and file
-extension ``\PValue{lot}'' for the list of tables with owner
-``\PValue{float}'' and sets options for this owner.
-% \iffalse
-\EndIndex{Cmd}{addtotoclist}%
-% \fi
-
-% \iffalse
-\begin{Declaration}
- \Macro{AtAddToTocList}\OParameter{owner}\Parameter{instructions}
-\end{Declaration}
-\BeginIndex{Cmd}{AtAddToTocList}%
-This command
-%<*dtx>
-%\fi
-\DescribeMacro{\AtAddtoTocList}
-Command \Macro{AtAddToTocList}\OParameter{owner}\Parameter{instructions}
-% \iffalse
-%</dtx>
-% \fi
-adds the \PName{instructions} to a internal list of instructions that will be
-processed whenever a file extension with the given \PName{owner} will be
-added to the list of known extensions using \Macro{addtotoclist}. The
-optional argument is handled in the same way as with the command
-\Macro{addtotoclist}. With an empty \PName{owner} you may
-add \Parameter{instructions}, that will be processed at every successful
-\Macro{addtotoclist}, after processing the instructions for the individual
-owner. While processing the \PValue{instructions},
-\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} will be set to
-the extension of the currently added extension.
-\begin{Example}
- \Package{tocbasic} itself uses
-\begin{lstcode}
- \AtAddToTocList[]{%
- \expandafter\tocbasic@extend@babel
- \expandafter{\@currext}%
- }
-\end{lstcode}
- to add every extension to the \Package{tocbasic}-internal babel handling of
- files.
-\end{Example}
-
-The two \Macro{expandafter} commands are needed, because the argument of
-\Macro{tocbasic@extend@babel} has to be expanded! See the description of
-\Macro{tocbasic@extend@babel} at \autoref{sec:tocbasic.internals}%
-% \iffalse
-, \autopageref{desc:tocbasic.cmd.tocbasic@extend@babel}
-% \fi
-for more information.
-% \iffalse
-\EndIndex{Cmd}{AtAddToTocList}%
-% \fi
-
-% \iffalse
-\begin{Declaration}
- \Macro{removefromtoclist}\OParameter{owner}\Parameter{extension}
-\end{Declaration}
-\BeginIndex{Cmd}{removefromtoclist}%
-This command
-%<*dtx>
-%\fi
-\DescribeMacro{\removefromtoclist}
-Command \Macro{removefromtotoclist}\OParameter{owner}\Parameter{extension}
-% \iffalse
-%</dtx>
-% \fi
-removes the \PName{extension} from the list of known extensions. If the
-optional argument, \OParameter{owner}, was given, the \PName{extension} will
-only be removed if it was added by this \PName{owner}. See description of
-\Macro{addtotoclist} for information of omitting optional argument. Note that
-an empty \PName{owner} is not the same like omitting the optional argument,
-but removes the \PName{extension} without any owner test.%
-% \iffalse
-\EndIndex{Cmd}{removefromtoclist}%
-% \fi
-
-% \iffalse
-\begin{Declaration}
- \Macro{doforeachtocfile}\OParameter{owner}\Parameter{instructions}
-\end{Declaration}
-\BeginIndex{Cmd}{doforeachtocfile}%
-%<*dtx>
-% \fi
-\DescribeMacro{\doforeachtocfile}
-% \iffalse
-%</dtx>
-% \fi
-Until now you've learned to know commands that result in more safety in
-handling file extensions, but also needs some additional effort. With
-\Macro{doforeachtocfile}%^^A
-% \iffalse
-%<*dtx>
-% \fi
-\OParameter{owner}\Parameter{instructions}%^^A
-% \iffalse
-%</dtx>
-% \fi
-\ you will win for this. The command provides to processes \PName{instructions}
-for every known file extension of the given \PName{owner}. While processing
-the \PName{instructions} \Macro{@currext} is the extension of the current
-file. If you omit the optional argument, \OParameter{owner}, every known file
-extensions independent from the owner will be used. If the optional argument
-is empty, only file extensions with an empty owner will be processed.
-\begin{Example}
- If you want to type out all known extensions, you may simply write:
-\begin{lstcode}
- \doforeachtocfile{\typeout{\@currext}}
-\end{lstcode}
- and if only the extensions of owner ``\PValue{foo}'' should be typed out:
-\begin{lstcode}
- \doforeachtocfile[foo]{\typeout{\@currext}}
-\end{lstcode}
-\end{Example}
-% \iffalse
-\EndIndex{Cmd}{doforeachtocfile}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasicautomode}
-Command
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{tocbasicautomode}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasicautomode}%
-This command
-% \fi
-redefines \LaTeX{} kernel macro \Macro{@starttoc} to add all not yet added
-extensions to the list of known extensions and use \Macro{tocbasic@starttoc}
-instead of \Macro{@starttoc}. See \autoref{sec:tocbasic.internals}%^^A
-% \iffalse
-, \autopageref{desc:tocbasic.cmd.tocbasic@starttoc}
-% \fi
-for more information about \Macro{tocbasic@starttoc} and \Macro{@starttoc}.
-
-This means that after using \Macro{tocbasicautomode} every table of contents
-or list of something, that will be generated using \Macro{@starttoc} will be
-at least partially under control of \Package{tocbasic}. Whether or not this will
-make the wanted result, depends on the individual table of contents and lists
-of something. At least the \Package{babel} control extension for
-all those tables of contents and lists of something will work. Nevertheless,
-it would be better if the author of the corresponding class or package will
-use \Package{tocbasic} explicitly. In that case additional advantages of
-\Package{tocbasic} may be used that will be described at the following
-sections.%
-% \iffalse
-\EndIndex{Cmd}{tocbasicautomode}%
-% \fi
-
-\section{Creating a Table of Contents or List of Something}
-\label{sec:tocbasic.toc}
-
-In the previous section you've seen commands to handle a list of known
-extensions and to trigger commands while adding a new extension to this
-list. You've also seen a command to do something for all known extensions or
-all known extensions of one owner. In this section you will see commands to
-handle the file corresponding with an extension or the list of known
-extensions.
-
-% \iffalse
-\begin{Declaration}
- \Macro{addtoeachtocfile}\OParameter{owner}\Parameter{content}
-\end{Declaration}
-\BeginIndex{Cmd}{addtoeachtocfile}%
-This command
-%<*dtx>
-% \fi
-\DescribeMacro{\addtoeachtocfile}
-Command \Macro{addtoeachtocfile}\OParameter{owner}\Parameter{content}
-% \iffalse
-%</dtx>
-% \fi
-writes \PName{content} to the files of every known file extension of
-\PName{owner} using \LaTeX{} kernel command \Macro{addtocontents}. If you omit
-the optional argument, \PName{content} is written to the files of every known
-file extension. Furthermore, the practical file name is built from
-\Macro{jobname} and the file extension. While writing the \PName{content},
-\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is the
-extension of the currently handled file.
-\begin{Example}
- You may add a vertical space of one text line to all toc-files.
-\begin{lstcode}
- \addtoeachtocfile{%
- \protect\addvspace{\protect\baselineskip}%
- }
-\end{lstcode}
- And if you want to do this, only for the toc-files of owner
- ``\PValue{foo}'':
-\begin{lstcode}
- \addtoeachtocfile[foo]{%
- \protect\addvspace{\protect\baselineskip}%
- }
-\end{lstcode}
-\end{Example}
-Commands, that shouldn't be expanded while writing, should be prefixed by
-\Macro{protect} in the same way like they should be in the argument of
-\Macro{addtocontents}.
-% \iffalse
-\EndIndex{Cmd}{addtoeachtocfile}%
-% \fi
-
-
-%\iffalse^^A meta-comment
-\begin{Declaration}
-%\fi^^A meta-comment
-% \DescribeMacro{\addxcontentsline}
-% The command
- \Macro{addxcontentsline}%
- \Parameter{extension}\Parameter{level}\OParameter{number}%^^A
- \Parameter{text}
-%\iffalse^^A meta-comment
-\end{Declaration}
-\BeginIndex{Cmd}{addxcontentsline}%
-The command \Macro{addxcontentsline}
-%\fi^^A meta-comment
-adds an entry of given \PName{level} to toc-file with \PName{extension}. If
-the \Parameter{number} is empty or omitted the entry won't have a number for
-the entry with the given \PName{text}. Entries without number may be left
-aligned to the number of the numbered entries of the same \PName{level} or
-indented like the text of the numbered entries of the same \PName{level},
-depending on the \PValue{numberline} feature.
-
-\begin{Example}
- Maybe you are not using a \KOMAScript{} class but need a not numbered
- chapter with entry to the table of contents. This may be done using
-\begin{lstcode}
- \cleardoublepage
- \csname phantomsection\endcsname
- \addxcontentsline{toc}{chapter}
- {Chapters without Numbers}
- \chapter*{Chapters without Numbers}
- \markboth{Chapters without Numbers}{}
-\end{lstcode}
- As you can see, you simply have to replace usual \Macro{addcontentsline} by
- \Macro{addxcontentsline} to support the \Package{tocbasic} feature
- \PValue{numberline}.
-\end{Example}
-
-Note, that \Macro{addxcontentsline} uses
-\Macro{add\PName{level}\PName{extension}entry} if such a macro exists and
-\Macro{tocbasic@addxcontentsline} otherwise. Therefore you cannot define
-a macro \Macro{add\PName{level}\PName{extension}entry} using
-\Macro{addxcontentsline} but \Macro{tocbasic@addxcontentsline}.
-
-It is recommended to use \Macro{addxcontentsline} instead of
-\Macro{addcontentsline} whenever possible.%
-%\iffalse^^A meta-comment
-\EndIndex{Cmd}{addxcontentsline}
-%\fi^^A meta-comment
-
-
-% \iffalse
-\begin{Declaration}
-% \fi
-% \DescribeMacro{\addcontentslinetoeachfile}
-% \DescribeMacro{\addxcontentslinetoeachfile}
-% The command
- \Macro{addcontentslinetoeachtocfile}\OParameter{owner}\Parameter{level}%^^A
- \Parameter{contentsline}\\
-% \iffalse
- \Macro{addxcontentslinetoeachtocfile}\OParameter{owner}%^^A
- \Parameter{level}\OParameter{number}\Parameter{text}
-\end{Declaration}
-\BeginIndex{Cmd}{addcontentslinetoeachtocfile}%
-\BeginIndex{Cmd}{addxcontentslinetoeachtocfile}%
-The first command
-% \fi
-is something like \Macro{addcontentsline} from \LaTeX{} kernel. In difference
-to that it writes the \PName{contentsline} not only
-into one file, but into all files of all known file extensions or of all known
-file extensions of a given owner.
-
-The Command \Macro{addxcontentslinetoeachtocfile}%^^A
-% \OParameter{owner}\Parameter{level}\OParameter{number}\Parameter{text}%^^A
-\ is similar but uses
-\Macro{addxcontentsline} instead of \Macro{addcontentsline} and
-therefore supports \Package{tocbasic} feature \PValue{numberline}.
-\begin{Example}
- You are a class author and want to write the chapter entry not only to the
- table of contents toc-file but to all toc-files, while \texttt{\#1} is the
- title, that should be written to the files.
-\begin{lstcode}
- \addxcontentslinetoeachtocfile
- {chapter}[\thechapter]{#1}%
-\end{lstcode}
- In this case the current chapter number should be expanded while writing
- into the file. So it isn't protected from expansion using \Macro{protect}.
-\end{Example}
-While writing \Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}}
-is the file extension of the file into which \PName{contentsline} will be
-written.
-
-It is recommended to use \Macro{addxcontentslinetoeachtocfile} instead
-of \Macro{addcontentslinetoeachtocfile} whenever possible.
-% \iffalse
-\EndIndex{Cmd}{addxcontentslinetoeachtocfile}%
-\EndIndex{Cmd}{addcontentslinetoeachtocfile}%
-% \fi
-
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\listoftoc}%^^A
-\DescribeMacro{\listoftoc*}%^^A
-\DescribeMacro{\listofeachtoc}%^^A
-Commands
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{listoftoc}\OParameter{list of title}\Parameter{extension}%^^A
-% \iffalse
-\\
-%<*dtx>
-% \fi
-,
-% \iffalse
-%</dtx>
-% \fi
- \Macro{listoftoc*}\Parameter{extension}%^^A
-% \iffalse
-\\
-%<*dtx>
-% \fi
-,
-% \iffalse
-%</dtx>
-% \fi
- \Macro{listofeachtoc}\OParameter{owner}%^^A
-% \iffalse
-\\
-%<*dtx>
-% \fi
-, and
-% \iffalse
-%</dtx>
-% \fi
- \Macro{listof\PName{file-extension}name}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{listoftoc*}%
-\BeginIndex{Cmd}{listoftoc}%
-\BeginIndex{Cmd}{listofeachtoc}%
-\BeginIndex{Cmd}{listof\PName{file-extension}name}%
-These commands
-% \fi
-may be used to set the ``list of'' corresponding to file
-extension. The\important{\Macro{listoftoc*}} star version \Macro{listoftoc*}
-needs only one argument, the extension of the file. It does setup the vertical
-and horizontal spacing of paragraphs, calls before hooks, reads the file, and
-last but not least calls the after hooks. You may interpret it as direct
-replacement of the \LaTeX{} kernel macro
-\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}}.
-
-The\important{\Macro{listoftoc}} version without star, sets the whole file
-with title, optional table of contents entry, and running heads. If the
-optional argument \OParameter{list of title} was given, it will be used as
-title term, optional table of contents entry and running head. Please
-note\textnote{Attention!}: If the optional argument is empty, this term will
-be empty, too! If you omit the optional argument, but
-\Macro{listof\PName{extension}name} was defined, that will be used. If that is
-also not defined, a standard ersatz name will be used and reported by a
-warning message.
-
-The\important{\Macro{listofeachtoc}} command \Macro{listofeachtoc} outputs all
-lists of something of the given \PName{owner} or of all known file
-extensions. Thereby\textnote{Attention!}
-\Macro{listof\PName{file-extension}name} should be defined to get the correct
-titles.
-
-It\textnote{Hint!} is recommended to define
-\Macro{listof\PName{file-extension}name} for all used file extensions, because
-the user itself may use \Macro{listofeachtoc}.
-\begin{Example}
- Assumed, you have a new ``list of algorithms'' with extension \PValue{loa}
- and want to show it:
-\begin{lstcode}
- \listoftoc[List of Algorithms]{loa}
-\end{lstcode}
- will do it for you. But maybe the ``list of algorithms'' should not be set
- with a title. So you may use
-\begin{lstcode}
- \listof*{loa}
-\end{lstcode}
- Note that in this case no entry at the table of contents will be created,
- even if you'd used the setup command above.
- See command \Macro{setuptoc}
-%\iffalse
- at \autopageref{desc:tocbasic.cmd.setuptoc}
-%\fi
- for more information about the
- attribute of generating entries into the table of contents using
- \Macro{setuptoc}.
-
- If you've defined
-\begin{lstcode}
- \newcommand*{\listofloaname}{%
- List of Algorithms%
- }
-\end{lstcode}
- before, then
-\begin{lstcode}
- \listoftoc{loa}
-\end{lstcode}
- would be enough to print the list of algorithms with the wanted heading. For
- the user it may be easier to operate, if you'd define
-\begin{lstcode}
- \newcommand*{\listofalgorithms}{\listoftoc{loa}}
-\end{lstcode}
- additionally.
-\end{Example}
-
-Because\textnote{Attention!} \LaTeX{} normally opens a new file for each of
-those lists of something immediately, the call of each of those commands may
-result in an error like:
-\begin{lstoutput}
- ! No room for a new \write .
- \ch@ck ...\else \errmessage {No room for a new #3}
- \fi
-\end{lstoutput}
-if there are no more write handles left. Loading package
-\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile}
-%\iffalse
-(see \autoref{cha:scrwfile})
-%\fi
-may solve this problem.
-%\iffalse
-\EndIndex{Cmd}{listof\PName{Dateierweiterung}name}%
-\EndIndex{Cmd}{listofeachtoc}%
-\EndIndex{Cmd}{listoftoc*}%
-\EndIndex{Cmd}{listoftoc}%
-%\fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\BeforeStartingTOC}
-\DescribeMacro{\AfterStartingTOC}
-The Commands
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{BeforeStartingTOC}\OParameter{extension}\Parameter{instructions}
-% \iffalse
-\\
-%<*dtx>
-% \fi
-and
-% \iffalse
-%</dtx>
-% \fi
- \Macro{AfterStartingTOC}\OParameter{extension}\Parameter{instructions}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{BeforeStartingTOC}%
-\BeginIndex{Cmd}{AfterStartingTOC}%
-Sometimes it's useful, to process \PName{instructions} immediately before
-reading the helper file of a list of something.
-These commands
-% \fi
-may be used to process \PName{instructions} before or after loading the file
-with given \PName{extension} using \Macro{listoftoc*}, \Macro{listoftoc}, or
-\Macro{listofeachtoc}. If you omit the optional argument (or set an empty
-one) the general hooks will be set. The general before hook will be called
-before the individuel one and the general after hook will be called after the
-individuel one. While calling the hooks
-\Macro{@currext}\IndexCmd{@currext}\important{\Macro{@currext}} is the
-extension of the toc-file and should not be changed.
-% \iffalse
-
-An example\textnote{Example} for usage of \Macro{AfterStartingTOC} may be
-found in \autoref{sec:scrwfile.clonefilefeature} at
-\autopageref{example:scrwfile.AfterStartingTOC}.
-\EndIndex{Cmd}{AfterStartingTOC}%
-\EndIndex{Cmd}{BeforeStartingTOC}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\BeforeTOCHead}
-\DescribeMacro{\AfterTOCHead}
-The Commands
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{BeforeTOCHead}\OParameter{file extension}\Parameter{instructions}
-% \iffalse
-\\
-%<*dtx>
-% \fi
-and
-% \iffalse
-%</dtx>
-% \fi
- \Macro{AfterTOCHead}\OParameter{file extension}\Parameter{instructions}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{BeforeTOCHead}%
-\BeginIndex{Cmd}{AfterTOCHead}%
-This commands
-% \fi
-may be used to process \PName{instructions} before or after setting the title
-of a list of something corresponding to given \PName{file extension} using
-\Macro{listoftoc*} or \Macro{listoftoc}. If you omit the optional argument (or
-set an empty one) the general hooks will be set. The general before hook will
-be called before the individuel one and the general after hook will be called
-after the individuel one. While calling the hooks
-\Macro{@currext}IndexCmd{@currext}\important{\Macro{@currext}} is the
-extension of the corresponding file and should not be changed.
-% \iffalse
-\EndIndex{Cmd}{AfterTOCHead}%
-\EndIndex{Cmd}{BeforeTOCHead}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\MakeMarkcase}
-% \iffalse
-%</dtx>
-\begin{Declaration}
- \Macro{MakeMarkcase}\Parameter{text}
-\end{Declaration}
-\BeginIndex{Cmd}{MakeMarkcase}%
-% \fi
-Whenever \Package{tocbasic} sets a mark for a running head, The text of the
-mark will be an argument of \Macro{MakeMarkcase}%^^A
-%\Parameter{text}^^A
-. This command may be used, to change the case of the letters at the running
-head if wanted. The default is, to use
-\Macro{@firstofone}\IndexCmd{@firstofone}\important{\Macro{@firstofone}} for
-\KOMAScript{} classes. This means the text of the running head will be set
-without change of case.
-\Macro{MakeUppercase}\IndexCmd{MakeUppercase}\important{\Macro{MakeUppercase}}
-will be used for all other classes. If you are the class author you may define
-\Macro{MakeMarkcase} on your own. If \Package{scrlayer} or another package,
-that defines \Macro{MakeMarkcase} will be used, \Package{tocbasic} will not
-overwrite that definition.
-\begin{Example}
- For incomprehensible reasons, you want to set the running heads in lower
- case letters only. To make this automatically for all running heads, that
- will be set by \Package{tocbasic}, you define:
-\begin{lstcode}
- \let\MakeMarkcase\MakeLowercase
-\end{lstcode}
-\end{Example}
-Please\textnote{Hint!} allow me some words about \Macro{MakeUppercase}, First
-of all this command isn't fully expandable. This means, that problems may
-occur using it in the context of other commands. Beyond that typographers
-accord, that whenever setting whole words or phrases in capitals, letter
-spacing is absolutely necessary. But correct letter spacing of capitals
-shouldn't be done with a fix white space between all letters. Different pairs
-of letters need different space between each other. Additional some letters
-build holes in the text, that have to be taken into account. Packages like
-\Package{ulem} or \Package{soul} doesn't provide this and
-\Macro{MakeUppercase} doesn't do anything like this. Also automatic letter
-spacing using package \Package{microtype} is only one step to a less-than-ideal
-solution, because it cannot recognize and take into account the glyphs of the
-letters. Because of this\textnote{Attention!} typesetting whole words and
-phrases is expert work and almost ever must be hand made. So average users are
-recommended to not do that or to use it only spare and not at exposed places
-like running heads.%
-% \iffalse
-\EndIndex{Cmd}{MakeMarkcase}%
-% \fi
-
-% \DescribeMacro{\deftocheading}
-% \iffalse
-\begin{Declaration}
- \Macro{deftocheading}\Parameter{file extension}\Parameter{definition}
-\end{Declaration}
-\BeginIndex{Cmd}{deftocheading}%
-% \fi
-The package \Package{tocbasic} contains a standard definition for typesetting
-headings of tables of contents or lists of something. This standard definition
-is configurable by several features, described at \Macro{setuptoc} next. But
-if all those features are not enough, an alternative heading command may be
-defined using \Macro{deftocheading}%^^A
-%\Parameter{file extension}\Parameter{definition}%^^A
-. Thereby \PName{file extension} is the file extension of the corresponding
-helper file. The \PName{definition} of the heading command may use one single
-parameter \PValue{\#1}. While calling the newly defined command inside of
-\Macro{listoftoc} or \Macro{listofeachtoc} that \PValue{\#1} will be replaced by the
-corresponding heading term.
-% \iffalse
-\EndIndex{Cmd}{deftocheading}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\setuptoc}
-\DescribeMacro{\unsettoc}
-The Commands
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{setuptoc}\Parameter{file extension}\Parameter{feature list}
-% \iffalse
-\\
-%<*dtx>
-% \fi
-and
-% \iffalse
-%</dtx>
-% \fi
- \Macro{unsettoc}\Parameter{file extension}\Parameter{feature list}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{setuptoc}%
-\BeginIndex{Cmd}{unsettoc}%
-This commands
-% \fi
-set up and unset features bound to an \PName{file extension}. The
-\PName{feature list} is a comma seperated list of single
-features. \Package{tocbasic} does know following features:
-\begin{description}
-\item[\texttt{leveldown}] uses not the top level heading below
- \Macro{part}\,---\,\Macro{chapter} if available, \Macro{section}
- otherwise\,---\,but the first sub level. This feature will be evaluated by
- the internal heading command. On the other hand, if an user defined heading
- command has been made with \Macro{deftocheading}, that user is responsible
- for the evaluation of the feature. The \KOMAScript{} classes set this
- feature using option
- \OptionValue{listof}{leveldown}important{\OptionValue{listof}{leveldown}}%
- \IndexOption{listof~=\PValue{leveldown}} for all file extensions of the
- owner \PValue{float}.
-\item[\texttt{nobabel}] prevents usage of the language switch of
- \Package{babel}\IndexPackage{babel} at the helper file with the
- corresponding \PName{file extension}. This feature should be used only for
- helper files, that contain text in one language only. Changes of the
- language inside of the document will not longer regarded at the helper
- file. Package
- \Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile} uses
- this feature also for clone destinations, because those will get the
- language change from the clone source already.
-\item[\texttt{noparskipfake}] prevents\ChangedAt{v3.17}{\Package{tocbasic}}
- usage of an extra \Length{parskip} before switching \Length{parskip} off. In
- general, the consequence of this feature for documents using paragraph
- distance is less vertical space between heading and first entry than between
- normal headings and normal text.
-\item[\texttt{noprotrusion}] prevents\ChangedAt{v3.10}{\Package{tocbasic}}
- disabling character protrusion at the lists of something. Character
- protrusion at the lists will be disabled by default if package
- \Package{microtype}\IndexPackage{microtype} or another package, that
- supports \Macro{microtypesetup}\IndexCmd{microtypesetup}, was loaded. So if
- you want protrusion at the lists, you have to set this feature. But
- note\textnote{Attention!}, that with character protrusion entries at the
- list may be set wrong. This is a known issue of character protrusion.
-\item[\texttt{numbered}] uses a numbered heading for the table of contents or
- list of something and because of this also generates an entry to the table
- of contents. This feature will be evaluated by the internal heading
- command. On the other hand, if an user defined heading command has been made
- with \Macro{deftocheading}, that user is responsible for the evaluation of
- the feature. The \KOMAScript{} classes set this feature using option
- \OptionValue{listof}{numbered}\important{\OptionValue{listof}{numbered}}%
- \IndexOption{listof~=\PValue{numbered}} for all file extensions of the owner
- \PValue{float}.
-\item[\texttt{numberline}] \leavevmode\ChangedAt{v3.12}{\Package{tocbasic}}%
- redefines \Macro{nonumberline} to use \Macro{numberline}. With this the not
- numbered entries generated by \KOMAScript{} or using \Macro{nonumberline} at
- the very beginning of the last argument of \Macro{addcontentline} will also
- be indented like numbered entries of the same type.
-\item[\texttt{onecolumn}] \leavevmode\ChangedAt{v3.01}{\Package{tocbasic}}%
- typesets the corresponding table of contents or list of something with
- internal one column mode of
- \Macro{onecolumn}\IndexCmd{onecolumn}. This\textnote{Attention!} will be
- done only, if the corresponding table of contents or list of something
- doesn't use feature \PValue{leveldown}\important{\PValue{leveldown}}. The
- \KOMAScript{} classes \Class{scrbook} and \Class{scrreprt} activate this
- feature with \Macro{AtAddToTocList} (see \autoref{sec:tocbasic.basics}%^^A
-% \iffalse
- , \autopageref{desc:tocbasic.cmd.AtAddToTocList}%^^A
-% \fi
- ) for all lists of something with owner \PValue{float} or with themselves as
- owner. With this, e.\,g., the table of contents, the list of figures and the
- list of tables of both classes will be single columned automatically. The
- multiple-column-mode of package \Package{multicol}\IndexPackage{multicol}
- will not be recognized or changed by this option.
-\item[\texttt{totoc}] writes the title of the corresponding table of contents
- or the list of something to the table of contents. This feature will be
- evaluated by the internal heading command. On the other hand, if an user
- defined heading command has been made with \Macro{deftocheading}, that user
- is responsible for the evaluation of the feature. The \KOMAScript{} classes
- set this feature using option
- \OptionValue{listof}{totoc}\important{\OptionValue{listof}{totoc}}%
- \IndexOption{listof~=\PValue{totoc}} for all file extensions of the owner
- \PValue{float}.
-\end{description}
-Classes and packages may know features, too, e.\,g, the \KOMAScript{} classes
-know following additional features:
-\begin{description}
-\item[\texttt{chapteratlist}] activates special code to be put into the list
- at start of a new chapter. This code may either be vertical space or the
- heading of the chapter.
-% \iffalse
- See \Option{listof}\IndexOption{listof}\important{\Option{listof}} in
- \autoref{sec:maincls.floats}, \autopageref{desc:maincls.option.listof} for
- more information about such features.
-% \fi
-\end{description}
-\begin{Example}
- Because \KOMAScript{} classes use \Package{tocbasic} for the list of figures
- and list of tables, there's one more way to remove chapter structuring at
- those:
-\begin{lstcode}
- \unsettoc{lof}{chapteratlist}
- \unsettoc{lot}{chapteratlist}
-\end{lstcode}
-
- And if you want to have the chapter structuring of the \KOMAScript{} classes
- at your own list of algorithms with \PName{file extension} ``\PValue{load}''
- from the previous examples, you may use
-\begin{lstcode}
- \setuptoc{loa}{chapteratlist}
-\end{lstcode}
- And if classes with \Macro{chapter} should also force single column mode for
- the list of algorithms you may use
-\begin{lstcode}
- \ifundefinedorrelax{chapter}{}{%
- \setuptoc{loa}{onecolumn}%
- }
-\end{lstcode}
- Usage of \Macro{ifundefinedorrelax} presumes package \Package{scrbase}%^^A
-%\iffalse
- \ (see \autoref{sec:scrbase.if},
- \autopageref{desc:scrbase.cmd.ifundefinedorrelax})%^^A
-%\fi
- .
-
- It\textnote{Hint!} doesn't matter if you're package would be used with
- another class. You should never the less set this feature. And if the other
- class would also recognize the feature your package would automatically use
- the feature of that class.
-\end{Example}
-As you may see, packages, that use \Package{tocbasic}, already provide several
-interesting features, without the need of a lot of implementation effort. Such
-an effort would be needed only without \Package{tocbasic} and because of this,
-most packages currently lack of such features.%
-% \iffalse
-\EndIndex{Cmd}{unsettoc}%
-\EndIndex{Cmd}{setuptoc}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\iftocfeature}
-Command
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{iftocfeature}\Parameter{file extension}\Parameter{feature}%^^A
- \Parameter{true-instructions}%^^A
-%\linebreak[1]^^A
- \Parameter{false-instructions}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{iftocfeature}%
-This command
-% \fi
-may be used, to test, if a \PName{feature} was set for \PName{file
- extension}. If so the \PName{true-instructions} will be processed, otherwise
-the \PName{false-instruction} will be. This may be useful, e.\,g., if you
-define your own heading command using \Macro{deftocheading} but want to
-support the features \PValue{totoc}, \PValue{numbered} or \PValue{leveldown}.
-% \iffalse
-\EndIndex{Cmd}{iftocfeature}%
-% \fi
-
-
-\section{Internal Commands for Class and Package Authors}
-\label{sec:tocbasic.internals}
-
-Commands with prefix \Macro{tocbasic@} are internal but class and package
-authors may use them. But even if you are a class or package author you
-should not change them!
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@extend@babel}
-% \iffalse
-%</dtx>
-\begin{Declaration}
- \Macro{tocbasic@extend@babel}\Parameter{file extension}
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@extend@babel}%
-% \fi
-The Package \Package{babel}\IndexPackage{babel}
-% \iffalse
-(see \cite{package:babel})
-% \fi
-respectively a \LaTeX{} kernel that has been extended by the language
-management of \Package{babel} writes instructions to change the language
-inside of the files with the file extensions \File{toc}, \File{lof}, and
-\File{lot} into those files at every change of the current language
-either at the begin of the document or inside the document. Package
-\Package{tocbasic} extends this mechanism with
-\Macro{tocbasic@extend@babel}
-%\unskip\Parameter{file extension}
-to be used for other file extensions too. Argument \PName{file extension} has
-to be expandable! Otherwise the meaning of the argument may change until it
-will be used really.
-
-Normally this command will be used by default for every \PName{file extension}
-that will be added to the list of known extensions using
-\Macro{addtotoclist}. The may be suppressed using feature
-\PValue{nobabel}\important{\PValue{nobabel}} (see \Macro{setuptoc},
-\autoref{sec:tocbasic.toc}%^^A
-% \iffalse
-, \autopageref{desc:tocbasic.cmd.setuptoc}%^^A
-% \fi
-). For the file extensions \File{toc}, \File{lof}, and \File{lot} this will be
-done automatically by \Package{tocbasic} to avoid double language switching in
-the corresponding files.
-
-Normally there isn't any reason to call this command yourself. But there may
-by lists of something, that should not be under control of \Package{tocbasic},
-and to are not in \Package{tocbasic}'s list of known file extensions, but
-nevertheless should be handled by the language change mechanism of
-\Package{babel}. The command may be used explicitly for those files. But pleas
-note, that this should be done only once per file extension!%
-% \iffalse
-\EndIndex{Cmd}{tocbasic@extend@babel}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@starttoc}
-Command
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{tocbasic@starttoc}\Parameter{extension}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@starttoc}
-This command
-% \fi
-is something like the \LaTeX{} kernel macro
-\Macro{@starttoc}\IndexCmd{@starttoc}\important{\Macro{@starttoc}}. It's the
-command behind \Macro{listoftoc*} (siehe \autoref{sec:tocbasic.toc}%^^A
-% \iffalse
-, \autopageref{desc:tocbasic.cmd.listoftoc*}%^^A
-% \fi
-). Authors of classes or packages who want to participate from the advantages
-of \Package{tocbasic} should at least use this command. Nevertheless it's
-recommended to use \Macro{listoftoc}. Command \Macro{tocbasic@starttoc}
-internally uses \Macro{\@starttoc}, but sets
-% \expandafter\Macro\iffalse
-\Length
-% \fi
-{parskip}\IndexLength{parskip}\important{\Length{parskip}\\
- \Length{parindent}\\
- \Length{parfillskip}} and
-% \expandafter\Macro\iffalse
-\Length
-% \fi
-{parindent}\IndexLength{parindent} to 0 and
-% \expandafter\Macro\iffalse
-\Length
-% \fi
-{parfillskip} to 0 until infinite before. Moreover,
-\Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} will be set to
-the file extension of the current helper file, so this will be available while
-the execution of the hooks, that will be done before and after reading the
-helper files.
-
-Because\textnote{Attention!} of \LaTeX{} will immediately open a new helper
-file for writing after reading that file, the usage of
-\Macro{tocbasic@starttoc} may result in an error message like
-\begin{lstoutput}
- ! No room for a new \write .
- \ch@ck ...\else \errmessage {No room for a new #3}
- \fi
-\end{lstoutput}
-if there are no more unused write handles. This may be solved, e.\,g., using
-package
-\Package{scrwfile}\important{\Package{scrwfile}}\IndexPackage{scrwfile}.
-% \iffalse
-See \autoref{cha:scrwfile} for more information about that package.%
-\EndIndex{Cmd}{tocbasic@starttoc}
-% \fi
-%
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@@before@hook}
-\DescribeMacro{\tocbasic@@after@hook}
-% \iffalse
-%</dtx>
-\begin{Declaration}
- \Macro{tocbasic@@before@hook}\\
- \Macro{tocbasic@@after@hook}
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@@before@hook}%
-\BeginIndex{Cmd}{tocbasic@@after@hook}%
-% \fi
-The hook \Macro{tocbasic@@before@hook} will be executed immediately before
-reading a helper file for a table of contents or list of something even
-before execution of the instructions of a \Macro{BeforeStartingTOC}
-command. It is permitted to extend this hook using
-\Macro{g@addto@macro}\IndexCmd{g@addto@macro}.
-
-Similarly \Macro{tocbasic@@after@hook} will be executed immediately after
-reading such a helper file and before execution of instructions of
-\Macro{AfterStartingTOC}. It is permitted to extend this hook using
-\Macro{g@addto@macro}\IndexCmd{g@addto@macro}.
-
-\KOMAScript{} uses these hooks, to provide the automatic width calculation of
-the place needed by heading numbers. Only classes and packages should use
-these hooks. Users\textnote{Attention!} should really use
-\Macro{BeforeStartingTOC} and \Macro{AfterStartingTOC} instead. Authors of
-packages should also favor those commands! These hooks shouldn't be used to
-generate any output!
-
-If neither\textnote{Attention!} \Macro{listofeachtoc} nor \Macro{listoftoc}
-nor \Macro{listoftoc*} are used for the output of a table of contents or list
-of something, the hooks should be executed explicitly.%
-% \iffalse
-\EndIndex{Cmd}{tocbasic@@before@hook}%
-\EndIndex{Cmd}{tocbasic@@after@hook}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@\PName{extension}@before@hook}
-\DescribeMacro{\tocbasic@\PName{extension}@after@hook}
-% \iffalse
-%</dtx>
-\begin{Declaration}
- \Macro{tocbasic@\PName{extension}@before@hook}\\
- \Macro{tocbasic@\PName{extension}@after@hook}
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@\PName{extension}@before@hook}%
-\BeginIndex{Cmd}{tocbasic@\PName{extension}@after@hook}%
-% \fi
-These hooks are processed after \Macro{tocbasic@@before@hook}, respectively
-before \Macro{tocbasic@@after@hook} before and after loading the helper file
-with the corresponding file \PName{extension}. Authors\textnote{Attention!}
-of classes and packages should never manipulate them! But if
-neither\textnote{Attention!} \Macro{listofeachtoc} nor \Macro{listoftoc} nor
-\Macro{listoftoc*} are used for the output of a table of contents or list of
-something, the hooks should be executed explicitly, if they are
-defined. Please note, that they even can be undefined.%
-% \iffalse
-\EndIndex{Cmd}{tocbasic@\PName{extension}@after@hook}%
-\EndIndex{Cmd}{tocbasic@\PName{extension}@before@hook}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@listhead}
-Command
% \iffalse
%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{tocbasic@listhead}\Parameter{title}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@listhead}%
-This command
-% \fi
-is used by \Macro{listoftoc} to set the heading of the list, either the
-default heading or the individually defined heading. If you define your own
-list command not using \Macro{listoftoc} you may use
-\Macro{tocbasic@listhead}. In this case you should define
-\Macro{@currext}\important{\Macro{@currext}}\IndexCmd{@currext} to be the file
-extension of the corresponding helper file before using
-\Macro{tocbasic@listhead}.
-% \iffalse
-\EndIndex{Cmd}{tocbasic@listhead}%
-% \fi
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\tocbasic@listhead@\PName{extension}}
-Command
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{tocbasic@listhead@\PName{extension}}\Parameter{title}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@listhead@\PName{extension}}%
-This command
-% \fi
-is used in \Macro{tocbasic@listhead} to set the individual headings, optional
-toc-entry, and running head, if it was defined. If it was not defined it will
-be defined and used in \Macro{tocbasic@listhead} automatically.
-% \iffalse
-\EndIndex{Cmd}{tocbasic@listhead@\PName{extension}}%
-% \fi
-
-%\iffalse^^A meta-comment
-\begin{Declaration}
-%\fi^^A meta-comment
-% \DescribeMacro{\tocbasic@addxcontentsline}
-% The command
- \Macro{tocbasic@addxcontentsline}%
- \Parameter{extension}\Parameter{level}\Parameter{number}\Parameter{text}
-%\iffalse^^A meta-comment
-\end{Declaration}
-\BeginIndex{Cmd}{tocbasic@addxcontentsline}%
-This command
-%\fi^^A meta-comment
-uses \Macro{addcontentsline} to either create a numbered or not numbered text
-entry to toc-file with given \PName{extension}. Note, that all parameters of
-\Macro{tocbasic@addxcontentsline} are mandatory. But you may use an
-empty \PName{number} argument, if you don't want a number.
-%\iffalse^^A meta-comment
-\EndIndex{Cmd}{tocbasic@addxcontentsline}
-%\fi^^A meta-comment
-
-
-\section{A Complete Example}
-\label{sec:tocbasic.example}
-
-This section will show you a complete example of a user defined floating
-environment with list of that kind of floats and \KOMAScript{} integration
-using \Package{tocbasic}. This example uses internal commands, that have a
-``\texttt{@}'' in their name. This means\textnote{Attention}, that the code
-has to be put into a own package or class, or has to be placed between
-\Macro{makeatletter}\important[i]{\Macro{makeatletter}\\\Macro{makeatother}}%
-\IndexCmd{makeatletter} and \Macro{makeatother}\IndexCmd{makeatother}.
-
-First\textnote{environment} of all, a new floating environment will be
-needed. This could simply be done using:
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newenvironment{remarkbox}{%
- \@float{remarkbox}%
- }{%
- \end@float
- }
-\end{lstcode}
-To the new environment is named \Environment{remarkbox}.
-
-Each\textnote{placement} floating environment has a default
-placement. This is build by some of the well known placement options:
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\fps@remarkbox}{tbp}
-\end{lstcode}
-So, the new floating environment should be placed by default only either at
-the top of a page, at the bottom of a page, or on a page on its own.
-
-Floating\textnote{type} environments have a numerical floating
-type. Environments with the same active bit at the floating type cannot change
-their order. Figures and table normally use type~1 and 2. So a figure that
-comes later at the source code than a table, may be output earlier than the
-table and vica versa.
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\ftype@remarkbox}{4}
-\end{lstcode}
-The new environment has floating type~4, so it may pass figures and floats and
-may be passed by those.
-
-The\textnote{number} captions of floating environment also have numbers.
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcounter{remarkbox}
- \newcommand*{\remarkboxformat}{%
- Remark~\theremarkbox\csname autodot\endcsname}
- \newcommand*{\fnum@remarkbox}{\remarkboxformat}
-\end{lstcode}
-Here first a new counter has been defined, that is independent from chapters
-or the counters of other structural levels. \LaTeX{} itself also defines
-\Macro{theremarkbox} with the default Arabic representation of the counter's
-value. Afterwards this has been used defining the formatted output of the
-counter. Last this formatted output has been used for the output of the
-environment number of the \Macro{caption} command.
-
-Floating\textnote{file extension} environments have lists of themselves and
-those need a helper file with name \Macro{jobname} and a file extension.
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\ext@remarkbox}{lor}
-\end{lstcode}
-The file extension of the helper file for the list of
-\Environment{remarkbox}es is ``\File{lor}''.
-
-This was the definition of the floating environment. But the list of this new
-environment's captions is still missing. To reduce the implementation effort
-package \Package{tocbasic} will be used for this. This will be loaded using
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \usepackage{tocbasic}
-\end{lstcode}
-inside of document preambles. Authors of classes or packages would use
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \RequirePackage{tocbasic}
-\end{lstcode}
-instead.
-
-Now\textnote{extension} we register the file name extension for package
-\Package{tocbasic}:
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \addtotoclist[float]{lor}
-\end{lstcode}
-Thereby the owner \PValue{float} has been used, to allude all further
-\KOMAScript{} options for lists of something also to the new one.
-
-Next\textnote{title} we define a title or heading for the list of
-\Environment{remarkbox}es:
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\listoflorname}{List of Remarks}
-\end{lstcode}
-You may use package \Package{scrbase} to additionally support titles in other
-languages than English.
-
-Also\textnote{entry} a command is needed to define the layout of the entries
-to the list of remarks:
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\l@remarkbox}{\l@figure}
-\end{lstcode}
-Here simply the entries to the list of remarks get the same layout like the
-entries to the list of figure. This would be the easiest solution. A more
-explicit would be, e.\,g.,
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\l@remarkbox}{\@dottedtocline{1}{1em}{1.5em}}
-\end{lstcode}
-
-Additionally\textnote{chapter entry} you may want structure the list of
-remarks depending on chapters.
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \setuptoc{lor}{chapteratlist}
-\end{lstcode}
-The \KOMAScript{} classes provide that feature and may other classes do so
-too. Unfortunately the standard classes do not.
-
-This\textnote{list of remarks} would already be enough. Now, users may already
-select different kinds of headings either using the corresponding options of
-the \KOMAScript{} classes, or \Macro{setuptoc}, e.\,g., with or without entry
-in the table of contents, with or without number. But a simply
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\listofremarkboxes}{\listoftoc{lor}}
-\end{lstcode}
-may make the usage a little bit easier again.
-
-As you've seen only five commands refers to the list of remarks. Only three of
-them are necessary. Nevertheless the new list of remarks already provides
-optional numbering of the heading and optional not numbered entry into the
-table of contents. Optional even a lower document structure level may be used
-for the heading. Running headers are provides with the \KOMAScript{} classes,
-the standard classes, and all classes that explicitly support
-\Package{tocbasic}. Supporting classes even pay attention to this new list of
-remarks at every new \Macro{chapter}. Even changes of the current language are
-handled inside the list of remarks like they will inside the list of figures
-or inside the list of tables.
-
-Moreover.\textnote{additional features} an author of a package may add more
-features. For example, options to hide \Macro{setuptoc} from the users may be
-added. On the other hand, the \Package{tocbasic} manual may be referenced to
-describe the corresponding features. The advantage of this would be that user
-would get information about new features provides by \Package{tocbasic}. But
-if the user should be able to set the features of the remarks even without
-knowledge about the file extension \File{lor} a simple
-\begin{lstcode}[belowskip=\dp\strutbox plus 1pt]
- \newcommand*{\setupremarkboxes}{\setuptoc{lor}}
-\end{lstcode}
-would be enough to use a list of features argument to
-\Macro{setupremarkboxes} as list of features of file extension \File{lor}.
-
-
-\section{Everything with One Command Only}
-\label{sec:tocbasic.highlevel}
-
-The example from the previous section shows, that using \Package{tocbasic} to
-define floating environments and lists with the captions of those floating
-environments is easy. The following example will show, that is may be even
-easier.
-
-% \iffalse
-%<*dtx>
-% \fi
-\DescribeMacro{\DeclareNewTOC}
-Command
-% \iffalse
-%</dtx>
-\begin{Declaration}
-% \fi
- \Macro{DeclareNewTOC}\OParameter{options}\Parameter{extension}
-% \iffalse
-\end{Declaration}
-\BeginIndex{Cmd}{DeclareNewTOC}%
-This command
-% \fi
-declares\ChangedAt{v3.06}{\Package{tocbasic}} in one step only a new list of
-something, the heading of that list, the term used for the entries to the
-list, and to manage the file name \PName{extension}. Additionally optional
-floating and non-floating environments may be defined, and inside of both such
-environments \Macro{caption}\important{\Macro{caption}}\IndexCmd{caption} may
-be used. The additional features \Macro{captionabove}\important[i]{%
- \Macro{captionabove}\\
- \Macro{captionbelow}}, \Macro{captionbelow}, and \Environment{captionbeside}
-of the \KOMAScript{} classes
-% \iffalse
-(see \autoref{sec:maincls.floats})
-% \fi
-may also be used inside of those environments.
-
-Argument \PName{extension} is the file name extension of the helper file, that
-represents the list of something. See \autoref{sec:tocbasic.basics} for more
-information about this. This argument is mandatory and must not be empty!
-
-Argument \PName{options} is a comma separated list, like you know it from,
-e.\,g., \Macro{KOMAoptions}%
-% \iffalse
-\ (see \autoref{sec:typearea.options})%^^A
-% \fi
-. Nevertheless\textnote{Attention!}, those options cannot be set using
-\Macro{KOMAoptions}\IndexCmd{KOMAoptions}! An overview of all available
-options
-% is shown next.
-% \iffalse
-may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
-% \fi
-
-% \iffalse
-\begin{desclist}
- \renewcommand*{\abovecaptionskipcorrection}{-\normalbaselineskip}%
- \desccaption[{Options for command \Macro{DeclareNewTOC}}]{%
- Options for command
- \Macro{DeclareNewTOC}\ChangedAt{v3.06}{\Package{tocbasic}}%
- \label{tab:tocbasic.DeclareNewTOC-options}%
- }{%
- Options for command \Macro{DeclareNewTOC} (continuation)%
- }%
-% \fi
-%\begin{description}
-% \newcommand{\entry}[2]{\item[\normalfont#1]\hfill\\* #2}
- \entry{\KOption{atbegin}\PName{instructions}}{%
- The \PName{instructions} will be executed at the begin of the floating or
- non-floating environment.%
- }%
- \entry{\KOption{atend}\PName{instructions}}{%
- The \PName{instructions} will be executed at the end of the floating or
- non-floating environment.%
- }%
- \entry{\KOption{counterwithin}\PName{\LaTeX{} counter}}{%
- If you define a float or non-float, the captions will be numbered and a
- counter \PName{type} (see option \Option{type}) will be defined. You may
- declare another counter to be the parent \LaTeX{} counter. In this case,
- the parent counter will be set before the float counter and the float
- counter will be reset whenever the parent counter is increased using
- \Macro{stepcounter} or \Macro{refstepcounter}.%
- }%
-%^^A not yet implemented:
-%^^A \entry{\KOption{captionpos}\PName{position}}{%
-%^^A If \PName{position} is \PValue{top} or \PValue{above} the spacing above
-%^^A and below the caption will be done for captions above objects. If
-%^^A \PName{position} is \PValue{bot}, \PValue{bottom}, or \PValue{below} the
-%^^A spacing above and below the caption will be done for captions below
-%^^A objects.
-%^^A }
- \entry{\Option{float}}{%
- If set, float environments for that type will be defined. The names of the
- environments are the value of \PName{type} and for double column floats
- the value of \PName{type} with addendum ``\PValue{*}''.%
- }%
- \entry{\KOption{floatpos}\PName{float positions}}{%
- The default floating position of the float. If no float position was
- given, ``tbp'' will be used like the standard classes do for figures and
- tables.%
- }%
- \entry{\KOption{floattype}\PName{number}}{%
- The numerical float type of the defined floats. Float types with common
- bits cannot be reordered. At the standard classes figures has float type 1
- and tables has float type 2. If no float type was given, 16 will be used.%
- }%
- \entry{\Option{forcenames}}{%
- If set, the names will be even defined, if they where already defined
- before.%
- }%
- \entry{\KOption{hang}\PName{length}}{%
- The amount of the hanging indent of the entries for that list. If not
- given, 1.5\,em will be used like standard classes use for entries to list
- of figures or list of tables.%
- }%
- \entry{\KOption{indent}\PName{length}}{%
- The indent value for the entries of that list. If not given, 1\,em will be
- used like standard classes use for entries to list of figures or list of
- tables.%
- }%
- \entry{\KOption{level}\PName{number}}{%
- The level of the entries of that list. If not given level 1 will be used
- like standard classes use for entries to list of figures or list of
- tables.%
- }%
- \entry{\KOption{listname}\PName{string}}{%
- The name of the list of foo. If not given the value of \PValue{types} with
- upper case first char prefixed by ``List of '' will be used.%
- }%
- \entry{\KOption{name}\PName{string}}{%
- The name of an element. If no name is given, the value of \PValue{type}
- with upper case first char will be used.%
- }%
- \entry{\Option{nonfloat}}{%
- If set, a non floating environment will be defined. The name of the
- environment is the value of \PName{type} with postfix ``\PValue{-}''.%
- }%
- \entry{\KOption{owner}\PName{string}}{%
- The owner as described in the sections before. If no owner was given owner
- \PValue{float} will be used.%
- }%
- \entry{\KOption{type}\PName{string}}{%
- sets the type of the new declared list. The type will be used e.\,g. to
- defined a \Macro{listof}\PName{string}. If no type is set up the extension
- from the mandatory argument will be used.%
- }%
- \entry{\KOption{types}\PName{string}}{%
- the plural of the type. If no plural was given the value of \PValue{type}
- with addendum ``s'' will be used.%
- }%
-% \end{description}
-% \iffalse
-\end{desclist}
-% \fi
-
-\begin{Example}
- Using \Macro{DeclareNewTOC} reduces the example from
- \autoref{sec:tocbasic.example} to:
-\begin{lstcode}
- \DeclareNewTOC[%
- type=remarkbox,%
- types=remarkboxes,%
- float,% define a floating environment
- floattype=4,%
- name=Remark,%
- listname={List of Remarks}%
- ]{lor}
- \setuptoc{lor}{chapteratlist}
-\end{lstcode}
- Beside environments \Environment{remarkbox} and \Environment{remarkbox*} the
- counter
-% \expandafter\texttt\iffalse
-\Counter
-% \fi
- {remarkbox}, the commands \Macro{theremarkbox},
- \Macro{remarkboxname}, and \Macro{remarkboxformat} that are used for
- captions; the commands \Macro{listremarkboxnames} and
- \Macro{listofremarkboxes} that are used at the list of remarks; and some
- internal commands that depends on the file name extension \File{lor} are
- defined. If the package should use a default for the floating type, option
- Option{floattype} may be omitted. If option \Option{nonfloat} will be used
- additionally, then a non-floating environment \Environment{remarkbox-} will
- be also defined. You may use \Macro{caption}\IndexCmd{caption} inside of
- that non-floating environment as usual for floating environments.
-%\iffalse
- \hyperref[tab:tocbasic.comparison]{Figure~\ref*{tab:tocbasic.comparison}}
- showes a comparison of the commands, counters and environments of the
- example environment \Environment{remarkbox} and of the commands, counters
- and environments for figures.%
- \begin{table}
- \centering
- \caption{Comparison of example environment \Environment{remarkbox}
- and environment \Environment{figure}}
- \label{tab:tocbasic.comparison}
- \begin{tabularx}{\textwidth}{ll>{\raggedright}p{6em}X}
- \toprule
- \Environment{remarkbox} & \Environment{figure}
- & options of \Macro{DeclareNewTOC} & short description \\[1ex]
- \midrule
- \Environment{remarkbox} & \Environment{figure}
- & \Option{type}, \Option{float}
- & floating environments of the respective types\\[1ex]
- \Environment{remarkbox*} & \Environment{figure*}
- & \Option{type}, \Option{float}
- & columns spanning floating environments of the respective types\\[1ex]
- \Counter{remarkbox} & \Counter{figure}
- & \Option{type}, \Option{float}
- & counter used by \Macro{caption}\\[1ex]
- \Macro{theremarkbox} & \Macro{thefigure}
- & \Option{type}, \Option{float}
- & output command to the respective counters\\[1ex]
- \Macro{remarkboxformat} & \Macro{figureformat}
- & \Option{type}, \Option{float}
- & formating command to the respective counters used by
- \Macro{caption}\\[1ex]
- \Macro{remarkboxname} & \Macro{figurename}
- & \Option{type}, \Option{float}, \Option{name}
- & names used in the label of \Macro{caption}\\[1ex]
- \Macro{listofremarkboxes} & \Macro{listoffigures}
- & \Option{types}, \Option{float}
- & command to show the list of the respective environments\\[1ex]
- \Macro{listremarboxname} & \Macro{listfigurename}
- & \Option{type}, \Option{float}, \Option{listname}
- & heading text of the respective list \\[1ex]
- \Macro{fps@remarkbox} & \Macro{fps@figure}
- & \Option{type}, \Option{float}, \Option{floattype}
- & numeric float type for order perputation\\[1ex]
- \File{lor} & \File{lof}
- &
- & file extension of the helper file of the respective list \\
- \bottomrule
- \end{tabularx}
- \end{table}
-%\fi
-
- And now a possible usage of the example environment:
-\begin{lstcode}
- \begin{remarkbox}
- \centering
- Equal should be typeset equally
- and with equal formatting.
- \caption{First theorem of typography}
- \label{rem:typo1}
- \end{remarkbox}
-\end{lstcode}
- A segment of an example page with this environment could be:
- \begin{center}\footnotesize
- \begin{tabular}
- {|!{\hspace{.1\linewidth}}p{.55\linewidth}!{\hspace{.1\linewidth}}|}
- \\
- \centering
- Equal should be typeset equally
- and with equal formatting.\\[\abovecaptionskip]
- {%
- \usekomafont{caption}\footnotesize{\usekomafont{captionlabel}%
- Remark 1: }First theorem of typography
- }\\
- \end{tabular}%
- \end{center}%
-\end{Example}
-% \iffalse
-\EndIndex{Cmd}{DeclareNewTOC}%
-%
-\EndIndex{Package}{tocbasic}%
-\EndIndex{}{table of contents}%
-\EndIndex{}{list>of contents}%
-\EndIndex{}{file>extension}%
-% \fi
-%
-% \iffalse
-%</doc|dtx>
% \fi
%
% \StopEventually{\PrintIndex\PrintChanges}
@@ -1871,6 +179,9 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% packages authors. Macros without \texttt{@} are interface macros and may be
% used by class and package authors and users.
%
+% Note: Parts of the implementation of package \textsf{tocbasic} are
+% out-sourced into file \texttt{scrkernel-tocbasic.dtx}.
+%
% \iffalse
%<*package>
% \fi
@@ -1880,19 +191,25 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
%
% There are no options because the package should be used by class and package
% authors not by users. So the package will be loaded using
-% \Macro{RequiresPackage}. Using different options by different packages would
+% \cs{RequiresPackage}. Using different options by different packages would
% result in an option clash.
% \begin{macrocode}
+%<*option>
\ProcessOptions\relax
+%</option>
% \end{macrocode}
%
%
% \subsection{Required Packages}
% \label{sec:packages}
%
-% Currently only graphics bundle's package \Package{keyval} is needed.
+% Package \textsf{scrbase} is needed to process all macro options. As long as
+% no package options are provided, the \texttt{body}-run is early enough to
+% load it.
% \begin{macrocode}
-\RequirePackage{keyval}
+%<*body>
+\RequirePackage{scrbase}
+%</body>
% \end{macrocode}
% We load it after processing the options, because we don't need it for
% processing options.
@@ -1916,6 +233,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
%
% The initial state of the list will be \emph{empty}.
% \begin{macrocode}
+%<*body>
\newcommand*{\tb@listoftocs}{}
% \end{macrocode}
% \end{macro}
@@ -1942,11 +260,13 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
%
% \begin{macro}{\addtotoclist}
% \changes{v1.0a}{2008/11/11}{internal \cs{@addtotoclist} renamed to
-% \cs{scr@addtotoclist} because of package \textsf{floatfram}}.%
+% \cs{scr@addtotoclist} because of package \textsf{floatfram}}.^^A
% \changes{v1.0a}{2008/11/11}{internal \cs{@@addtotoclist} renamed to
-% \cs{scr@@addtotoclist} because of package \textsf{floatfram}}.%
+% \cs{scr@@addtotoclist} because of package \textsf{floatfram}}.^^A
% \changes{v3.06a}{2010/09/14}{expand the arguments while adding them to the
-% internal list}
+% internal list}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% This command adds an extension to the list of toc-files. The first,
% optional argument is the class or package name with the corresponding
% extension of class or package files. If this argument was omitted
@@ -1957,7 +277,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% empty first argument is not the same like omitting the first argument!
% \begin{macrocode}
\newcommand*{\addtotoclist}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\scr@@addtotoclist\scr@addtotoclist
}
\newcommand*{\scr@addtotoclist}{%
@@ -2006,6 +326,8 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macro}
%
% \begin{macro}{\AtAddToTocList}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% Action to be done, when adding a toc-file of a known owner. The first
% optional argument is the owner. The second, mandatory argument is the
% action. While doing the action \cs{@currext} will be the extension of the
@@ -2021,7 +343,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% toc-files without any owner!
% \begin{macrocode}
\newcommand*{\AtAddToTocList}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@@AtAddToTocList\@AtAddToTocList
}
\newcommand*{\@AtAddToTocList}{%
@@ -2044,11 +366,10 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \cs{tocbasic@extend@babel} must not be a local macro (like \cs{@currext})
% \begin{macrocode}
\newcommand*{\tocbasic@extend@babel}[1]{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \ifx\csname bbl@set@language\endcsname\relax
+ \scr@ifundefinedorrelax{bbl@set@language}{%
\PackageInfo{tocbasic}{babel extension for `#1' omitted\MessageBreak
because of missing \string\bbl@set@language}%
- \else
+ }{%
\iftocfeature{#1}{nobabel}{%
\PackageInfo{tocbasic}{omitting babel extension for `#1'\MessageBreak
because of feature `nobabel' available\MessageBreak
@@ -2061,7 +382,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\addtocontents{#1}{\xstring\select@language{\languagename}}%
}%
}%
- \fi
+ }%
}
% \end{macrocode}
% This feature should be used for all toc-files (unless feature
@@ -2072,13 +393,15 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macro}
%
% \begin{macro}{\removefromtoclist}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% This command will remove an extension from the list of toc-files. If the
% first, optional argument is given, the extension will only be removed, if
% it was added by the given owner. NOTE: An empty first argument is not the
% same like omitting the first argument!
% \begin{macrocode}
\newcommand*{\removefromtoclist}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@removefromtoclist\@@removefromtoclist
}
\newcommand*{\@removefromtoclist}[2][]{%
@@ -2120,7 +443,9 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
%
% \begin{macro}{\doforeachtocfile}
% \changes{v3.09}{2011/03/01}{\cs{@currext} defined using \cs{edef} instead
-% of \cs{def}}
+% of \cs{def}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% This command does the second, mandatory argument for each toc-file at the
% list of toc-files. If the first, optional argument was given this will be
% done only for the toc-files of that owner. NOTE: An empty first argument
@@ -2134,7 +459,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \cs{doforeachtocfile}.
% \begin{macrocode}
\newcommand{\doforeachtocfile}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@doforeachtocfile\@@doforeachtocfile
}
\newcommand{\@doforeachtocfile}[2][]{%
@@ -2165,7 +490,9 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \begin{macro}{\addtoeachtocfile}
% \begin{macro}{\@addtoeachtocfile}
% \begin{macro}{\@@addtoeachtocfile}
-% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}
+% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% This command calls \cs{addtocontents} with the section, mandatory
% argument for each toc-file at the list of toc-files. If the first,
% optional argument was given this will be done only for the toc-files of
@@ -2174,7 +501,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% not be expanded, at the mandatory argument.
% \begin{macrocode}
\newcommand{\addtoeachtocfile}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@addtoeachtocfile\@@addtoeachtocfile
}
\newcommand{\@addtoeachtocfile}[2][]{%
@@ -2183,6 +510,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\newcommand{\@@addtoeachtocfile}[1]{%
\doforeachtocfile{\addtocontents{\@currext}{#1}}%
}
+%</body>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2194,11 +522,14 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% once. And we have some special commands for the table of contents.
%
% \begin{macro}{\addcontentslinetoeachtocfile}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% Something like a combination of \cs{addtoeachtocfile} and
% \cs{addcontentsline}.
% \begin{macrocode}
+%<*body>
\newcommand{\addcontentslinetoeachtocfile}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@addcontentslinetoeachtocfile\@@addcontentslinetoeachtocfile
}
\newcommand{\@addcontentslinetoeachtocfile}[3][]{%
@@ -2213,6 +544,8 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \begin{macro}{\addxcontentsline}
% \changes{v3.12}{2013/09/24}{new}
% \changes{v3.12}{2013/09/24}{Take care of new feature \texttt{numberline}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% \begin{macro}{\@addxcontentsline}
% \changes{v3.12}{2013/09/24}{new (internal)}
% This will be used instead of \cs{addcontentsline} to generate numbered or
@@ -2221,18 +554,17 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% empty and the fourth and last is the entry text.
% \begin{macrocode}
\newcommand*{\addxcontentsline}[2]{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
{\@addxcontentsline{#1}{#2}}%
{\@addxcontentsline{#1}{#2}[]}%
}
\newcommand*{\@addxcontentsline}{}
\def\@addxcontentsline#1#2[#3]#4{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname add#2#1entry\endcsname\relax
+ \scr@ifundefinedorrelax{add#2#1entry}{%
\tocbasic@addxcontentsline{#1}{#2}{#3}{#4}%
- \else
+ }{%
\@nameuse{add#2#1entry}{#3}{#4}%
- \fi
+ }%
}
% \end{macrocode}
% \begin{macro}{\nonumberline}
@@ -2263,10 +595,16 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
%
% \begin{macro}{\addxcontentslinetoeachtocfile}
% \changes{v3.12}{2013/09/24}{new}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% \begin{macro}{\@addxcontentslinetoeachtocfile}
% \changes{v3.12}{2013/09/24}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% \begin{macro}{\@@addxcontentslinetoeachtocfile}
% \changes{v3.12}{2013/09/24}{new (internal)}
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% \begin{macro}{\@@@addxcontentslinetoeachtocfile}
% \changes{v3.12}{2013/09/24}{new (internal)}
% \begin{macro}{\@@@@addxcontentslinetoeachtocfile}
@@ -2275,11 +613,11 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \cs{addxcontentsline} instead of \cs{addcontentsline}.
% \begin{macrocode}
\newcommand{\addxcontentslinetoeachtocfile}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@addxcontentslinetoeachtocfile\@@addxcontentslinetoeachtocfile
}
\newcommand{\@addxcontentslinetoeachtocfile}[2][]{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
{\@@@addxcontentslinetoeachtocfile[{#1}]{#2}}%
{\@@@addxcontentslinetoeachtocfile[{#1}]{#2}[]}
}
@@ -2288,7 +626,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\doforeachtocfile[{#1}]{\addxcontentsline{\@currext}{#2}[#3]{#4}}%
}
\newcommand{\@@addxcontentslinetoeachtocfile}[1]{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
{\@@@@addxcontentslinetoeachtocfile{#1}}%
{\@@@@addxcontentslinetoeachtocfile{#1}[]}%
}
@@ -2296,6 +634,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\def\@@@@addxcontentslinetoeachtocfile#1[#2]#3{%
\doforeachtocfile{\addxcontentsline{\@currext}{#1}[{#2}]{#3}}%
}
+%</body>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2317,6 +656,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% be called, the toc will be started, an individual hook will be called, an
% general hook wil be called, that's it.
% \begin{macrocode}
+%<*body>
\newcommand*{\tocbasic@starttoc}[1]{%
\begingroup
\edef\@currext{#1}%
@@ -2393,18 +733,20 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macro}
%
% \begin{macro}{\listoftoc}
-% \begin{macro}{\listoftoc*}
-% \changes{v1.0a}{2008/11/12}{\cs{twocolumn} fixed}%
-% \changes{v1.01}{2008/11/13}{new feature \texttt{onecolumn}}
+% \changes{v3.20}{2016/04/12}{\cs{@ifstar} durch \cs{kernel@ifstar}
+% ersetzt}^^A
+% \begin{macro}{\@listoftoc}
+% \changes{v1.0a}{2008/11/12}{\cs{twocolumn} fixed}^^A
+% \changes{v1.01}{2008/11/13}{new feature \texttt{onecolumn}}^^A
% \changes{v3.09}{2011/03/01}{\cs{@currext} defined using \cs{edef} instead
-% of \cs{def}}
+% of \cs{def}}^^A
% Command to handle the hole list of something. There are additional hooks
% for this. The first optional argument is the title for this list. If the
% optional argument was omitted \cs{listof\#2name} will be used. The star
% version does not set up a heading or switch the column number!
% \begin{macrocode}
\newcommand*{\listoftoc}{%
- \@ifstar \tocbasic@starttoc\@listoftoc
+ \kernel@ifstar \tocbasic@starttoc\@listoftoc
}
\newcommand*{\@listoftoc}[2][\list@fname]{%
\begingroup
@@ -2432,14 +774,13 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}{}%
\iftocfeature{\@currext}{numberline}{\def\nonumberline{\numberline{}}}{}%
\tocbasic@listhead{#1}%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname microtypesetup\endcsname\relax
- \else
+ \scr@ifundefinedorrelax{microtypesetup}{}{%
\iftocfeature{\@currext}{noprotrusion}{}{%
\microtypesetup{protrusion=false}%
- \PackageInfo{tocbasic}{character protrusion at \@currext\space deactivated}%
+ \PackageInfo{tocbasic}{%
+ character protrusion at \@currext\space deactivated}%
}%
- \fi
+ }%
\tocbasic@starttoc{#2}%
\endgroup
}
@@ -2457,11 +798,13 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \begin{macro}{\listofeachtoc}
% \begin{macro}{\@listofeachtoc}
% \begin{macro}{\@@listofeachtoc}
-% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}
+% \changes{v3.03b}{2009/06/08}{typo fix at usage of \cs{doforeachtocfile}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% Another example of using \cs{doforeachtocfile}.
% \begin{macrocode}
\newcommand*{\listofeachtoc}{%
- \@ifnextchar [%]
+ \kernel@ifnextchar [%]
\@listofeachtoc\@@listofeachtoc
}
\newcommand{\@listofeachtoc}[1][]{%
@@ -2492,8 +835,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \begin{macrocode}
\newcommand*{\tocbasic@listhead}[1]{%
\@ifundefined{tocbasic@listhead@\@currext}{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname chapter\endcsname\relax
+ \scr@ifundefinedorrelax{chapter}{%
\expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{%
\iftocfeature{\@currext}{leveldown}{%
\iftocfeature{\@currext}{numbered}{%
@@ -2533,7 +875,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}%
}%
}%
- \else
+ }{%
\expandafter\def\csname tocbasic@listhead@\@currext\endcsname##1{%
\iftocfeature{\@currext}{leveldown}{%
\iftocfeature{\@currext}{numbered}{%
@@ -2592,7 +934,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}%
}%
}%
- \fi
+ }%
}{}%
\csname tb@@beforehead@hook\endcsname
\csname tb@\@currext @beforehead@hook\endcsname
@@ -2630,6 +972,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}{}%
\expandafter\g@addto@macro\csname tb@#1@afterhead@hook\endcsname{#2}%
}
+%</body>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2638,22 +981,24 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \begin{macro}{\MakeMarkcase}
% Use upper-case or not?
% \begin{macrocode}
+%<*exit>
\AtBeginDocument{%
\@ifundefined{MakeMarkcase}{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname KOMAClassName\endcsname\relax
+ \scr@ifundefinedorrelax{KOMAClassName}{%
\let\MakeMarkcase\MakeUppercase
- \else
+ }{%
\let\MakeMarkcase\@firstofone
- \fi
+ }%
}{}%
}
+%</exit>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\deftocheading}
% Define a toc headings command with one argument (the title).
% \begin{macrocode}
+%<*body>
\newcommand*{\deftocheading}[1]{%
\@namedef{tocbasic@listhead@#1}##1}
% \end{macrocode}
@@ -2721,13 +1066,13 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% We need a test for the features
% \begin{macrocode}
\newcommand*{\iftocfeature}[2]{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname tocbasic@#1@feature@#2\endcsname\relax
+ \scr@ifundefinedorrelax{tocbasic@#1@feature@#2}{%
\expandafter\@secondoftwo
- \else
+ }{%
\expandafter\@firstoftwo
- \fi
+ }%
}
+%</body>
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2737,15 +1082,16 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \changes{v1.0a}{2008/11/11}{use of \cs{addtotoclist} instead of internal}%
% \changes{v3.07a}{2010/11/25}{fix: added missing
% \cs{let}\cs{@starttoc}\cs{tocbasic@starttoc}}%
-% \Package{tocbasic} can overtake \Macro{@starttoc} to automaticly add all
+% \textsf{tocbasic} can overtake \cs{@starttoc} to automaticly add all
% used extensions to the list of known extensions and use
-% \Macro{tocbasic@starttoc} instead of \Macro{@starttoc} from \LaTeX{}
+% \cs{tocbasic@starttoc} instead of \cs{@starttoc} from \LaTeX{}
% kernel. Please note, that we don't need a fix for the unfriendly
-% redefinition of \Macro{@starttoc} by \Package{hyperref}, because hyperref
-% does it only at the first \LaTeX{} run. So this action of \Package{hyperref}
+% redefinition of \cs{@starttoc} by \textsf{hyperref}, because hyperref
+% does it only at the first \LaTeX{} run. So this action of \textsf{hyperref}
% may only result in the need of one more \LaTeX{} run, but not in a permanent
% mistake.
% \begin{macrocode}
+%<*body>
\newcommand*{\tocbasicautomode}{%
\let\tb@saved@starttoc\@starttoc
\let\@starttoc\tocbasic@starttoc
@@ -2756,205 +1102,398 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}%
}%
}
+%</body>
% \end{macrocode}
% \end{macro}
%
%
-% \section{High Level Interface for Generating New TOCs and Floats}
+% \subsection{High Level Interface for Generating New TOCs and Floats}
% \label{sec:newfloats}
%
% \begin{macro}{\DeclareNewTOC}
-% \changes{v3.06}{2010/06/01}{new high level command}%
+% \changes{v3.06}{2010/06/01}{new high level command}^^A
+% \changes{v3.18}{2015/06/20}{\cs{tb@nt@types} and \cs{tb@nt@listname} are
+% initialised \cs{relax}}^^A
+% \changes{v3.20}{2016/04/12}{\cs{@ifnextchar} replaced by
+% \cs{kernel@ifnextchar}}^^A
% This command defines only a new TOC and a new caption command for this
% TOC. It does not define a new foat unless option float was set! It does
% not define a new nonfloat unless option nonfloat was set! The optional
-% argument is used to set up several settings using \Package{keyval}. The
+% argument is used to set up several settings using \textsf{keyval}. The
% mandatory argument is the shortcut. The default type is the shortcut.
% The extension is the shortcut. The default owner is ``\texttt{float}''.
-%
-% But first of all, we define the options used by the optional argument:
+% \begin{macrocode}
+%<*body>
+\DefineFamily{KOMAarg}
+\DefineFamilyMember[.toc]{KOMAarg}
+\newcommand*{\DeclareNewTOC}[2][]{%
+ \newif\iftb@nt@float
+ \newif\iftb@nt@nonfloat
+ \newif\iftb@nt@forcenames
+ \def\tb@nt@floattype{\tb@nt@autofloattype}%
+ \def\tb@nt@floatpos{tbp}%
+ \def\tb@nt@ext{#2}%
+ \edef\tb@nt@type{#2}%
+ \let\tb@nt@types\relax
+ \def\tb@nt@owner{float}%
+ \def\tb@nt@name{\expandafter\protect\expandafter\MakeUppercase\tb@nt@type}%
+ \let\tb@nt@listname\relax
+ \let\tb@nt@counterwithin\@empty
+ \let\tb@nt@atbegin\@empty
+ \let\tb@nt@atend\@empty
+ \def\tb@nt@tocentrystyle{default}%
+% \end{macrocode}
+% \changes{v3.20}{2016/04/29}{need more initialization for empty optional
+% argument}^^A
+% \begin{macrocode}
+ \def\tb@nt@tocstyle@options{level=1}%
+ \IfArgIsEmpty{#1}{%
+% \end{macrocode}
+% Also need to call the style init code, to set the defaults for options
+% \texttt{numwidth} and \texttt{indent}.
+% \begin{macrocode}
+ \begingroup
+ \let\scr@dte@current\tb@nt@type
+ \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}%
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \ifstr{##1}{numwidth}{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,numwidth=1.5em}%
+ }%
+ }{%
+ \ifstr{##1}{indent}{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,indent=1em}%
+ }%
+ }{}%
+ }%
+ \kernel@ifnextchar[%]
+ {\@dodefault}%
+ {}%
+ }%
+ \def\@dodefault[##1]{}%
+ \scr@dte@doopts
+ \do@endgroup
+ }{%
+ \let\tb@nt@extra@relax@opts\@empty
+% \end{macrocode}
+% After initialisation of the local values we need to know the style of the
+% toc entry, to define style dependend options.
+% \begin{macro}{\tb@nt@type}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
% The type of list is used for environment and counter names and as part of
-% several internal and user macros.
+% several internal and user macros. It is needed before defining the style
+% dependend options. So we use a first run to set it up.
% \begin{macrocode}
-\define@key{tocbasic}{type}{%
- \tb@ifvalueisnotempty{type}{#1}{\edef\tb@nt@type{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{type}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@type{##1}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@tocentrystyle}
+% \changes{v3.20}{2015/12/16}{neu (intern)}
+% The style of the toc entry. It is needed before defining the style
+% dependend options. So we use a first run to set it up.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}[default]{%
+ \IfArgIsEmpty{##1}{%
+ \edef\tb@nt@tocentrystyle{##1}%
+ \FamilyKeyStateProcessed
+ }{%
+ \scr@ifundefinedorrelax{scr@dte@def@l@##1}{%
+ \FamilyKeyStateUnknownValue
+ }{%
+ \edef\tb@nt@tocentrystyle{##1}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% After this we define pseudo option \texttt{@else@} to ignore all currently
+% not needed options. After this we do the first option execution run.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{@else@}{\FamilyKeyStateProcessed}%
+ \FamilyExecuteOptions[.toc]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{@else@}%
+% \end{macrocode}
+% For the second run we do not need to set up these options again. So define
+% it as no-opt.
+% \begin{macrocode}
+ \DefineFamilyKey[.toc]{KOMAarg}{type}{\FamilyKeyStateProcessed}%
+ \DefineFamilyKey[.toc]{KOMAarg}{tocentrystyle}{\FamilyKeyStateProcessed}%
+% \end{macrocode}
+% \changes{v3.20}{2015/12/16}{defining toc style depending options}^^A
+% If the toc style is empty we won't define any \cs{l@\dots}. Otherwise we
+% need to define additional options.
+% \begin{macrocode}
+ \ifstr{\tb@nt@tocentrystyle}{}{}{%
+ \begingroup
+ \let\scr@dte@current\tb@nt@type
+ \@ExecuteTOCEntryStyleInitCode{\tb@nt@tocentrystyle}{\tb@nt@type}%
+ \def\do@endgroup{\endgroup}%
+ \def\do##1{%
+ \l@addto@macro\do@endgroup{%
+ \l@addto@macro\tb@nt@extra@relax@opts{%
+ \RelaxFamilyKey[.toc]{KOMAarg}{toc##1}%
+ }%
+ }%
+ \kernel@ifnextchar[%]
+ {\@dodefault{##1}}%
+ {\@donodefault{##1}}%
+ }%
+ \def\@donodefault##1{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.toc]{KOMAarg}{toc##1}{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \def\@dodefault##1[##2]{%
+ \l@addto@macro\do@endgroup{%
+ \DefineFamilyKey[.toc]{KOMAarg}{toc##1}[##2]{%
+ \l@addto@macro{\tb@nt@tocstyle@options}{,##1={####1}}%
+ \FamilyKeyStateProcessed
+ }%
+ }%
+ }%
+ \scr@dte@doopts
+ \do@endgroup
+ }%
+% \end{macrocode}
+% After this, we need to define all the other options and do the real option
+% execution.
+% \begin{macro}{\tb@nt@atbegin}
+% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbegin}}
+% \changes{v3.11c}{2013/02/01}{\texttt{atbegin} argument may be empty}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Additional code executed at the begin of a new defined environment.
+% \begin{macrocode}
+ \FamilyStringKey[.toc]{KOMAarg}{atbegin}{\tb@nt@atbegin}%
% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\tb@nt@atend}
+% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbend}}
+% \changes{v3.11c}{2013/02/01}{\texttt{atend} argument may be empty}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Additional code executed at the end of a new defined environment.
+% \begin{macrocode}
+ \FamilyStringKey[.toc]{KOMAarg}{atend}{\tb@nt@atend}%
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\tb@nt@counterwithin}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
% If a counter will be defined, this counter may depend on another counter
% (like figure counter depends on chapter counter at book classes). If the
% value is empty, the counter does not depend on any other counter.
% \begin{macrocode}
-\define@key{tocbasic}{counterwithin}{%
- \edef\tb@nt@counterwithin{#1}%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\tb@nt@types}
-% Sometimes the plural of the type is needed and may be defined by a
-% seperate option.
-% \begin{macrocode}
-\define@key{tocbasic}{types}{%
- \tb@ifvalueisnotempty{types}{#1}{\edef\tb@nt@types{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{counterwithin}{%
+ \edef\tb@nt@counterwithin{##1}\FamilyKeyStateProcessed
+ }%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tb@nt@ext}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
% Don't tell the user, that the mandatory argument of the command may be
% overloaded by this option. This was only done to simplify the definition.
% \begin{macrocode}
-\define@key{tocbasic}{extension}{%
- \tb@ifvalueisnotempty{extension}{#1}{\edef\tb@nt@ext{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{extension}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@ext{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@owner}
-% The owner of the new list extension.
+% \begin{macro}{\iftb@nt@float}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% \changes{v3.06}{2010/06/01}{new internal}
+% This boolean indicates, that float environments should also be defined.
% \begin{macrocode}
-\define@key{tocbasic}{owner}{%
- \tb@ifvalueisnotempty{owner}{#1}{\edef\tb@nt@owner{#1}}%
-}
+ \FamilyBoolKey[.toc]{KOMAarg}{float}{tb@nt@float}%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@name}
-% We need a name/term for the entries of the new list. This may e.\,g. be used
-% for |caption| output. A |\<type>name| will also be defined.
+% \begin{macro}{\tb@nt@floatpos}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Simply the value for the |\fps@...| macro.
% \begin{macrocode}
-\define@key{tocbasic}{name}{%
- \tb@ifvalueisnotempty{name}{#1}{\edef\tb@nt@name{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{floatpos}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@floatpos{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@listname}
-% \changes{v3.18}{2015/06/20}{using \cs{def} instead of \cs{edef}}
-% The list itself has a heading. A |\list<type>name| will also be defined.
+% \begin{macro}{\tb@nt@floattype}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Simply the value for the |\ftype@...| macro. It has to be
+% $1<=\textrm{value}<=31$.
% \begin{macrocode}
-\define@key{tocbasic}{listname}{%
- \tb@ifvalueisnotempty{listname}{#1}{\def\tb@nt@listname{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{floattype}{%
+ \FamilySetCounterMacro{KOMAarg}{floattype}{\reserved@d}{##1}%
+ \ifx\FamilyKeyState\FamilyKeyStateProcessed
+ \ifnum 0=
+ \ifnum\reserved@d<1 0 \else\ifnum\reserved@d>31 0 \else 1 \fi\fi
+ \FamilyKeyStateUnknownValue
+ \else
+ \let\tb@nt@floattype\reserved@d
+ \fi
+ \fi
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\iftb@forcenames}
+% \begin{macro}{\iftb@nt@forcenames}
% \changes{v3.06}{2010/06/01}{new internal}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
% The |\...name| commands will only be defined, if they are not already
% defined. But some users may want to define their own names even if there
% are already definitions. So this boolean option may switch to force the
% definition.
% \begin{macrocode}
-\newif\iftb@forcenames
-\define@key{tocbasic}{forcenames}[true]{%
- \lowercase{\tb@boolkey{#1}}{forcenames}%
-}
+ \FamilyBoolKey[.toc]{KOMAarg}{forcenames}{tb@nt@forcenames}%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@level}
-% Each entry to a TOC/list of has a numeric level. You may set up your own
-% level.
+% \begin{macro}{\tb@nt@hang}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Earch entry of a TOC/list of is idented on the left side. This is the
+% amount of the indention of the text of the entry.
% \begin{macrocode}
-\define@key{tocbasic}{level}{%
- \tb@ifvalueisnotempty{level}{#1}{\tb@numkey\tb@nt@level{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{hang}{%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `hang'.\MessageBreak
+ Option will be ignored, because toc entry style\MessageBreak
+ `\tb@nt@tocentrystyle' does not provide option `numwidth'%
+ }%
+ }{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `hang'.\MessageBreak
+ You should replace option `hang' by option\MessageBreak
+ `tocnumwidth'%
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,numwidth={##1}}%
+ }%
+ \FamilyKeyStateProcessed
+ }%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocnumwidth}{}{%
+ \l@addto@macro\tb@nt@tocstyle@options{,numwidth=1.5em}%
+ }%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tb@nt@indent}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
% Earch entry of a TOC/list of is idented on the left side. This is the
% amount of the indention of the number part.
% \begin{macrocode}
-\define@key{tocbasic}{indent}{%
- \tb@ifvalueisnotempty{indent}{#1}{\tb@dimkey\tb@nt@indent{#1}}%
-}
-% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\tb@nt@hang}
-% Earch entry of a TOC/list of is idented on the left side. This is the
-% amount of the indention of the text of the entry.
-% \begin{macrocode}
-\define@key{tocbasic}{hang}{%
- \tb@ifvalueisnotempty{hang}{#1}{\tb@dimkey\tb@nt@hang{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{indent}{%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `indent'.\MessageBreak
+ Option will be ignored, because toc entry style\MessageBreak
+ `\tb@nt@tocentrystyle' does not provide option `indent'%
+ }%
+ }{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `indent'.\MessageBreak
+ You should replace option `indent' by option\MessageBreak
+ `tocindent'%
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,indent={##1}}%
+ }%
+ \FamilyKeyStateProcessed
+ }%
+ \scr@ifundefinedorrelax{KV@KOMAarg.toc@tocindent}{}{%
+ \l@addto@macro\tb@nt@tocstyle@options{,indent=1em}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\iftb@float}
-% \changes{v3.06}{2010/06/01}{new internal}
-% This boolean indicates, that float environments should also be defined.
+% \begin{macro}{\tb@nt@level}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Each entry to a TOC/list of has a numeric level. You may set up your own
+% level.
% \begin{macrocode}
-\newif\iftb@float
-\define@key{tocbasic}{float}[true]{%
- \lowercase{\tb@boolkey{#1}}{float}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{level}{%
+ \PackageWarning{tocbasic}{%
+ deprecated option `level'.\MessageBreak
+ You should replace option `level' by option\MessageBreak
+ `toclevel'
+ }%
+ \l@addto@macro\tb@nt@tocstyle@options{,level={##1}}%
+ \FamilyKeyStateProcessed
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\iftb@nonfloat}
-% \changes{v3.06}{2010/06/01}{new internal}
-% This boolean indicates, that non-float environment should also be
-% defined. The environment has the postfix ``-''.
+% \begin{macro}{\tb@nt@listname}
+% \changes{v3.18}{2015/06/20}{using \cs{def} instead of \cs{edef}}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% The list itself has a heading. A |\list<type>name| will also be defined.
% \begin{macrocode}
-\newif\iftb@nonfloat
-\define@key{tocbasic}{nonfloat}[true]{%
- \lowercase{\tb@boolkey{#1}}{nonfloat}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{listname}{%
+ \tb@ifvalueisnotempty{##1}{\def\tb@nt@listname{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@floattype}
-% Simply the value for the |\ftype@...| macro. It has to be
-% $1<=\textrm{value}<=31$.
+% \begin{macro}{\tb@nt@name}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% We need a name/term for the entries of the new list. This may e.\,g. be used
+% for |caption| output. A |\<type>name| will also be defined.
% \begin{macrocode}
-\define@key{tocbasic}{floattype}{%
- \tb@ifvalueisnotempty{floattype}{#1}{\tb@numkey\tb@nt@floattype{#1}}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{name}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@name{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@floatpos}
-% Simply the value for the |\fps@...| macro.
+% \begin{macro}{\iftb@nt@nonfloat}
+% \changes{v3.06}{2010/06/01}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% This boolean indicates, that non-float environment should also be
+% defined. The environment has the postfix ``-''.
% \begin{macrocode}
-\define@key{tocbasic}{floatpos}{%
- \tb@ifvalueisnotempty{floatpos}{#1}{\edef\tb@nt@floatpos{#1}}%
-}
+ \FamilyBoolKey[.toc]{KOMAarg}{nonfloat}{tb@nt@nonfloat}%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@atbegin}
-% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbegin}}
-% \changes{v3.11c}{2013/02/01}{\texttt{atbegin} argument may be empty}
-% Additional code executed at the begin of a new defined environment.
+% \begin{macro}{\tb@nt@owner}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% The owner of the new list extension.
% \begin{macrocode}
-\define@key{tocbasic}{atbegin}{%
- \def\tb@nt@atbegin{#1}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{owner}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@owner{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\tb@nt@atend}
-% \changes{v3.09}{2011/03/01}{new optional identifier \texttt{atbend}}
-% \changes{v3.11c}{2013/02/01}{\texttt{atend} argument may be empty}
-% Additional code executed at the end of a new defined environment.
+% \begin{macro}{\tb@nt@types}
+% \changes{v3.20}{2015/12/16}{local valid only}^^A
+% Sometimes the plural of the type is needed and may be defined by a
+% seperate option.
% \begin{macrocode}
-\define@key{tocbasic}{atend}{%
- \def\tb@nt@atend{#1}%
-}
+ \DefineFamilyKey[.toc]{KOMAarg}{types}{%
+ \tb@ifvalueisnotempty{##1}{\edef\tb@nt@types{##1}}%
+ }%
% \end{macrocode}
% \end{macro}
-% Now the command to define a new list and maybe float or nonfloat.
-% \changes{v3.18}{2015/06/20}{\cs{tb@nt@types} and \cs{tb@nt@listname} are
-% initialised \cs{relax}}^^A
-% \begin{macrocode}
-\newcommand*{\DeclareNewTOC}[2][]{%
- \tb@floatfalse
- \tb@nonfloatfalse
- \tb@forcenamesfalse
- \def\tb@nt@floattype{\tb@nt@autofloattype}%
- \def\tb@nt@floatpos{tbp}%
- \def\tb@nt@ext{#2}%
- \def\tb@nt@type{#2}%
- \let\tb@nt@types\relax
- \def\tb@nt@owner{float}%
- \def\tb@nt@name{\expandafter\protect\expandafter\MakeUppercase\tb@nt@type}%
- \let\tb@nt@listname\relax
- \def\tb@nt@level{1}%
- \def\tb@nt@indent{1em}%
- \def\tb@nt@hang{1.5em}%
- \let\tb@nt@counterwithin\@empty
- \let\tb@nt@atbegin\@empty
- \let\tb@nt@atend\@empty
- \setkeys{tocbasic}{#1}%
+% Last but not least we have to execute the options and reset the option
+% definitions.
+% \begin{macrocode}
+ \FamilyExecuteOptions[.toc]{KOMAarg}{#1}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{types}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{owner}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{nonfload}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{name}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{listname}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{level}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{indent}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{hang}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{forcenames}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{floatpos}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{float}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{extension}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{counterwithin}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{atend}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{atbegin}%
+ \tb@nt@extra@relax@opts
+ \RelaxFamilyKey[.toc]{KOMAarg}{tocentrystyle}%
+ \RelaxFamilyKey[.toc]{KOMAarg}{type}%
+ }%
% \end{macrocode}
% First of all, every TOC needs a extension, that should be added to the
% list of known extensions.
@@ -2974,7 +1513,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\@ifundefined{\tb@nt@type name}{%
\expandafter\protected@edef\csname \tb@nt@type name\endcsname{\tb@nt@name}%
}{%
- \iftb@forcenames
+ \iftb@nt@forcenames
\expandafter\protected@edef\csname \tb@nt@type name\endcsname
{\tb@nt@name}%
\fi
@@ -2982,7 +1521,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\@ifundefined{list\tb@nt@type name}{%
\expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname
}{%
- \iftb@forcenames
+ \iftb@nt@forcenames
\expandafter\let\csname list\tb@nt@type name\endcsname\tb@nt@listname
\fi
}%
@@ -2995,12 +1534,26 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
}\@tempa
% \end{macrocode}
% The list entry:
-% \begin{macrocode}
- \begingroup\edef\@tempa{\endgroup
- \noexpand\newcommand*\csname l@\tb@nt@type\endcsname{%
- \noexpand\@dottedtocline{\tb@nt@level}{\tb@nt@indent}{\tb@nt@hang}%
+% \changes{v3.20}{2016/04/05}{warning if \cs{l@\dots} is undefined}^^A
+% \begin{macrocode}
+ \ifstr{\tb@nt@tocentrystyle}{}{%
+ \@ifundefined{l@\tb@nt@type}{%
+ \PackageWarning{tocbasic}{%
+ \expandafter\string\csname l@\tb@nt@type\endcsname\space
+ undefined!\MessageBreak
+ I hope you know, what you are doing, but\MessageBreak
+ maybe it would be better to use proper\MessageBreak
+ `tocentrystyle` settings%
+ }%
+ }{}%
+ }{%
+ \edef\reserved@a{%
+ \noexpand\DeclareTOCStyleEntry[%
+ {\unexpanded\expandafter{\tb@nt@tocstyle@options}}%
+ ]{\tb@nt@tocentrystyle}{\tb@nt@type}%
}%
- }\@tempa
+ \reserved@a
+ }%
% \end{macrocode}
% \changes{v3.12}{2013/05/03}{fixed: definition of
% \cs{listof\meta{type}entryname} added as explained in the manual}
@@ -3022,7 +1575,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \changes{v3.09a}{2011/05/30}{fixed: floats may have an optional argument}
% \changes{v3.12}{2013/12/10}{fixed: usage of default placement}
% \begin{macrocode}
- \iftb@float
+ \iftb@nt@float
\expandafter\newcommand\expandafter*\csname fps@\tb@nt@type\expandafter
\endcsname\expandafter{\tb@nt@floatpos}%
\expandafter\newcommand\expandafter*\csname ftype@\tb@nt@type\expandafter
@@ -3031,7 +1584,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\edef\@tempa{%
\noexpand\endgroup
\noexpand\newenvironment{\tb@nt@type}{%
- \noexpand\@ifnextchar[%]
+ \noexpand\kernel@ifnextchar[%]
{\noexpand\tb@atbegin@after\noexpand\@float{\tb@nt@type}}%
{\noexpand\edef\noexpand\reserved@a{%
\noexpand\noexpand\noexpand\tb@atbegin@after
@@ -3043,7 +1596,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
\noexpand\end@float
}%
\noexpand\newenvironment{\tb@nt@type*}{%
- \noexpand\@ifnextchar[%]
+ \noexpand\kernel@ifnextchar[%]
{\noexpand\tb@atbegin@after\noexpand\@dblfloat{\tb@nt@type}}%
{\noexpand\edef\noexpand\reserved@a{%
\noexpand\noexpand\noexpand\tb@atbegin@after
@@ -3061,7 +1614,7 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macrocode}
% The nonfloat environment:
% \begin{macrocode}
- \iftb@nonfloat
+ \iftb@nt@nonfloat
\begingroup
\edef\@tempa{%
\noexpand\endgroup
@@ -3081,9 +1634,9 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macrocode}
% The counter and hooks of float and nonfloat environments:
% \changes{v3.10b}{2012/04/04}{\cs{noexpand} added to fix problems using
-% \cs{autodot}}%^^A
+% \cs{autodot}}^^A
% \changes{v3.13}{2014/07/31}{add \cs{autodot} only to hierachical
-% counters}%^^A
+% counters}^^A
% \begin{macrocode}
\if@tempswa
\@ifundefined{c@\tb@nt@type}{%
@@ -3142,66 +1695,44 @@ may be found in \autoref{tab:tocbasic.DeclareNewTOC-options}.
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tb@ifvalueisnotempty}
-% \changes{v3.06}{2010/05/21}{new internal}%
+% \changes{v3.06}{2010/05/21}{new internal}^^A
+% \changes{v3.20}{2015/12/16}{simpler definition}^^A
% This is only a helper for defining some of the keys.
% \begin{macrocode}
-\newcommand*{\tb@ifvalueisnotempty}[2]{%
- \begingroup
- \edef\@tempa{#2}\ifx\@tempa\@empty
- \PackageError{tocbasic}{empty value for key `#1'}{%
- The argument of key `#1' may not by empty!}%
- \aftergroup\@gobble
- \else
- \aftergroup\@firstofone
- \fi
- \endgroup
+\newcommand*{\tb@ifvalueisnotempty}[1]{%
+ \ifstr{#1}{}{%
+ \FamilyKeyStateUnknownValue
+ \expandafter\@gobble
+ }{%
+ \FamilyKeyStateProcessed
+ \expandafter\@firstofone
+ }%
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tb@boolkey}
-% \changes{v3.06}{2010/05/21}{new internal}%
-% This is only a helper for boolean keys.
-% \begin{macrocode}
-\newcommand*{\tb@boolkey}[2]{%
- \csname tb@#2\ifx\relax#1\relax true\else#1\fi\endcsname
-}
-% \end{macrocode}
+% \changes{v3.06}{2010/05/21}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{undefined}^^A
% \end{macro}
% \begin{macro}{\tb@dimkey}
-% \changes{v3.06}{2010/05/21}{new internal}%
-% This is only a helper for dimension keys.
-% \begin{macrocode}
-\newcommand*{\tb@dimkey}[2]{%
- \begingroup
- \@defaultunits\@tempdima#2pt\relax\@nnil
- \edef\@tempa{\noexpand\endgroup\noexpand\def\noexpand#1{\the\@tempdima}}
- \@tempa
-}
-% \end{macrocode}
+% \changes{v3.06}{2010/05/21}{new (internal)}^^A
+% \changes{v3.20}{2015/12/16}{undefined}^^A
% \end{macro}
-% \begin{macro}{\tb@dimkey}
+% \begin{macro}{\tb@numkey}
% \changes{v3.06}{2010/05/21}{new internal}%
-% This is only a helper for numerical keys.
-% \begin{macrocode}
-\newcommand*{\tb@numkey}[2]{%
- \begingroup
- \afterassignment\remove@to@nnil\@tempcnta#2\relax\@nnil
- \edef\@tempa{\noexpand\endgroup\noexpand\def\noexpand#1{\the\@tempcnta}}
- \@tempa
-}
-% \end{macrocode}
+% \changes{v3.20}{2015/12/16}{undefined}^^A
% \end{macro}
% \begin{macro}{\tb@nt@autofloattype}
% \changes{v3.06}{2010/06/01}{new internal}
% This macro saves the float type for auto generated float types.
% \begin{macrocode}
\newcommand*{\tb@nt@autofloattype}{16}
+%</body>
% \end{macrocode}
% \end{macro}
% \end{macro}
%
%
-%
% \iffalse
%</package>
%<*load>