diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/tocbasic.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/koma-script/tocbasic.dtx | 2471 |
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> |