dragonfly/api/latex/etoc_doxygen.sty
Jacob Schmidt c8d81ba3bb
All checks were successful
Build / Build (push) Successful in 39s
docs: Update README.md with detailed documentation
This commit significantly enhances the `README.md` file, providing comprehensive documentation for the ArmaDragonflyClient.

Key changes:

*   **Detailed Function Categories:** Categorized functions for better organization (Core, Basic Data Operations, Hash Operations, List Operations).
*   **Usage Examples:** Added clear and concise usage examples for basic operations, hash operations (context and ID-specific), and list operations.
*   **Function Documentation Structure:** Outlined the structure for individual function documentation.
*   **License Information:** Updated the license information.
2025-03-30 17:15:35 -05:00

2179 lines
74 KiB
TeX

%%
%% This is file etoc_doxygen.sty
%%
%% Apart from this header notice and the renaming from etoc to
%% etoc_doxygen (also in \ProvidesPackage) it is an identical
%% copy of
%%
%% etoc.sty
%%
%% at version 1.2b of 2023/07/01.
%%
%% This file has been provided to Doxygen team courtesy of the
%% author for benefit of users having a LaTeX installation not
%% yet providing version 1.2a or later of etoc, whose
%% deeplevels feature is required.
%%
%% The original source etoc.dtx (only of the latest version at
%% any given time) is available at
%%
%% https://ctan.org/pkg/etoc
%%
%% and contains the terms for copying and modification as well
%% as author contact information.
%%
%% In brief any modified versions of this file must be renamed
%% with new filenames distinct from etoc.sty.
%%
%% Package: etoc
%% Version: 1.2b
%% License: LPPL 1.3c
%% Copyright (C) 2012-2023 Jean-Francois B. <user jfbu at github>
\NeedsTeXFormat{LaTeX2e}[2003/12/01]
\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)]
\newif\ifEtoc@oldLaTeX
\@ifl@t@r\fmtversion{2020/10/01}
{}
{\Etoc@oldLaTeXtrue
\PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak
Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak
as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak
and used to require it (from 1.1a to 1.2).\MessageBreak
This etoc (1.2b) does not *require* it, but has not been\MessageBreak
tested thoroughly on old LaTeX (especially if document\MessageBreak
does not use hyperref) and retrofitting was done only\MessageBreak
on basis of author partial remembrances of old context.\MessageBreak
Reported}}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{prefix=Etoc@}
\newif\ifEtoc@lof
\DeclareVoidOption{lof}{\Etoc@loftrue
\PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak
Barely tested, use at own risk}%
}
\newif\ifEtoc@lot
\DeclareVoidOption{lot}{\Etoc@lottrue
\PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak
Barely tested, use at own risk}%
}
\@ifclassloaded{memoir}{
\PackageInfo{etoc}
{As this is with memoir class, all `...totoc' options\MessageBreak
are set true by default. Reported}
\DeclareBoolOption[true]{maintoctotoc}
\DeclareBoolOption[true]{localtoctotoc}
\DeclareBoolOption[true]{localloftotoc}
\DeclareBoolOption[true]{locallottotoc}
}{
\DeclareBoolOption[false]{maintoctotoc}
\DeclareBoolOption[false]{localtoctotoc}
\DeclareBoolOption[false]{localloftotoc}
\DeclareBoolOption[false]{locallottotoc}
}
\DeclareBoolOption[true]{ouroboros}
\DeclareBoolOption[false]{deeplevels}
\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}}
\ProcessKeyvalOptions*
\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof}
\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot}
\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels}
\def\etocsetup#1{\setkeys{etoc}{#1}}
\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\def\etociflocalloftotoc{\ifEtoc@localloftotoc
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\def\etociflocallottotoc{\ifEtoc@locallottotoc
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\RequirePackage{multicol}
\def\etoc@{\etoc@}
\long\def\Etoc@gobtoetoc@ #1\etoc@{}
\newtoks\Etoc@toctoks
\def\Etoc@par{\par}
\def\etocinline{\def\Etoc@par{}}
\let\etocnopar\etocinline
\def\etocdisplay{\def\Etoc@par{\par}}
\let\Etoc@global\@empty
\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global}
\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty}
\newif\ifEtoc@numbered
\newif\ifEtoc@hyperref
\newif\ifEtoc@parskip
\newif\ifEtoc@tocwithid
\newif\ifEtoc@standardlines
\newif\ifEtoc@etocstyle
\newif\ifEtoc@classstyle
\newif\ifEtoc@keeporiginaltoc
\newif\ifEtoc@skipprefix
\newif\ifEtoc@isfirst
\newif\ifEtoc@localtoc
\newif\ifEtoc@skipthisone
\newif\ifEtoc@stoptoc
\newif\ifEtoc@notactive
\newif\ifEtoc@mustclosegroup
\newif\ifEtoc@isemptytoc
\newif\ifEtoc@checksemptiness
\def\etocchecksemptiness {\Etoc@checksemptinesstrue }
\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse }
\newif\ifEtoc@notocifnotoc
\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue }
\newcounter{etoc@tocid}
\def\Etoc@tocext{toc}
\def\Etoc@lofext{lof}
\def\Etoc@lotext{lot}
\let\Etoc@currext\Etoc@tocext
\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else
\expandafter\@secondoftwo\fi
}
\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext
\expandafter\@firstoftwo\else
\expandafter\@secondoftwo\fi}%
{\@secondoftwo}%
}
\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext
\expandafter\@firstoftwo\else
\expandafter\@secondoftwo\fi}%
{\@secondoftwo}%
}
\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext
\expandafter\@firstoftwo\else
\expandafter\@secondoftwo\fi}%
{\@secondoftwo}%
}
\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@}
\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@}
\expandafter\let\csname Etoc@-1@@\endcsname \m@ne
\expandafter\let\csname Etoc@0@@\endcsname \z@
\expandafter\let\csname Etoc@1@@\endcsname \@ne
\expandafter\let\csname Etoc@2@@\endcsname \tw@
\expandafter\let\csname Etoc@3@@\endcsname \thr@@
\expandafter\chardef\csname Etoc@4@@\endcsname 4
\expandafter\chardef\csname Etoc@5@@\endcsname 5
\expandafter\chardef\csname Etoc@6@@\endcsname 6
\ifEtoc@deeplevels
\expandafter\chardef\csname Etoc@7@@\endcsname 7
\expandafter\chardef\csname Etoc@8@@\endcsname 8
\expandafter\chardef\csname Etoc@9@@\endcsname 9
\expandafter\chardef\csname Etoc@10@@\endcsname 10
\expandafter\chardef\csname Etoc@11@@\endcsname 11
\expandafter\chardef\csname Etoc@12@@\endcsname 12
\fi
\expandafter\let\expandafter\Etoc@maxlevel
\csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname
\edef\etocthemaxlevel{\number\Etoc@maxlevel}
\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}}
\let\Etoc@none@@ \Etoc@minf
\expandafter\let\expandafter\Etoc@all@@
\csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname
\let\Etoc@dolevels\@empty
\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter
{\Etoc@dolevels\Etoc@do{#1}}}
\ifdefined\expanded
\def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}%
\else
\def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}%
\fi
\def\etoc@setlevel#1#2{%
\edef\Etoc@tmp{\the\numexpr#2}%
\if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1%
\ifEtoc@deeplevels
\in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,%
.7,.8,.9,.10,.11,.12,}%
\else
\in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}%
\fi
\ifin@\else\if\@car#1\@nil @\in@true\fi\fi
\ifin@
\PackageWarning{etoc}
{Sorry, but `#1' is forbidden as level name.\MessageBreak
\if\@car#1\@nil @%
(because of the @ as first character)\MessageBreak\fi
Reported}%
\else
\etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
\expandafter\let\csname Etoc@#1@@\expandafter\endcsname
\csname Etoc@\Etoc@tmp @@\endcsname
\expandafter\edef\csname Etoc@@#1@@\endcsname
{\expandafter\noexpand\csname Etoc@#1@@\endcsname}%
\expandafter\edef\csname toclevel@@#1\endcsname
{\expandafter\noexpand\csname toclevel@#1\endcsname}%
\fi
\else
\PackageWarning{etoc}
{Argument `\detokenize{#2}' of \string\etocsetlevel\space should
represent one of\MessageBreak
\ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi,
\the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space
but evaluates to \Etoc@tmp.\MessageBreak
The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak
Tables of contents will ignore `#1' as long\MessageBreak
as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).%
\MessageBreak
Reported}%
\etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
\expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel
\fi
}
\def\etoclevel#1{\csname Etoc@#1@@\endcsname}
\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname}
\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}}
\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{}
\etocsetlevel{part}{-1}
\etocsetlevel{chapter}{0}
\etocsetlevel{section}{1}
\etocsetlevel{subsection}{2}
\etocsetlevel{subsubsection}{3}
\etocsetlevel{paragraph}{4}
\etocsetlevel{subparagraph}{5}
\ifdefined\c@chapter
\etocsetlevel{appendix}{0}
\else
\etocsetlevel{appendix}{1}
\fi
\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}}
\Etoc@dolevels
\let\Etoc@figure@@\Etoc@maxlevel
\let\Etoc@table@@ \Etoc@maxlevel
\let\Etoc@gobblethreeorfour\@gobblefour
\ifdefined\@gobblethree
\let\Etoc@gobblethree\@gobblethree
\else
\long\def\Etoc@gobblethree#1#2#3{}%
\fi
\AtBeginDocument{%
\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}%
\@ifpackageloaded{hyperref}
{\Etoc@hyperreftrue}
{\ifEtoc@oldLaTeX
\let\Etoc@gobblethreeorfour\Etoc@gobblethree
\let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@
\long\def\Etoc@etoccontentsline@#1#2#3{%
\Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}%
}%
\fi
}%
}
\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue }
\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}}
\def\Etoc@stackofends{{-3}{}}
\def\Etoc@doendsandbegin{%
\expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@
}
\def\Etoc@traversestackofends#1{%
\ifnum#1>\Etoc@level
\csname Etoc@end@#1\endcsname
\expandafter\Etoc@traversestackofends
\else
\Etoc@traversestackofends@done{#1}%
\fi
}
\def\Etoc@traversestackofends@done#1#2{#2%
\ifnum#1<\Etoc@level
\csname Etoc@begin@\the\numexpr\Etoc@level\endcsname
\Etoc@global\Etoc@isfirsttrue
\edef\Etoc@tmp{{\the\numexpr\Etoc@level}}%
\else
\Etoc@global\Etoc@isfirstfalse
\let\Etoc@tmp\@empty
\fi
\expandafter\Etoc@updatestackofends\Etoc@tmp{#1}%
}
\def\Etoc@etoccontentsline #1{%
\let\Etoc@next\Etoc@gobblethreeorfour
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
\else
\Etoc@skipthisonefalse
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
\if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
\ifEtoc@localtoc
\ifEtoc@stoptoc
\Etoc@skipthisonetrue
\else
\ifEtoc@notactive
\Etoc@skipthisonetrue
\else
\unless\ifnum\Etoc@level>\etoclocaltop
\Etoc@skipthisonetrue
\global\Etoc@stoptoctrue
\fi
\fi
\fi
\fi
\ifEtoc@skipthisone
\else
\unless\ifnum\Etoc@level>\c@tocdepth
\ifEtoc@standardlines
\let\Etoc@next\Etoc@savedcontentsline
\else
\let\Etoc@next\Etoc@etoccontentsline@
\fi
\fi
\fi
\fi
\Etoc@next{#1}%
}
\def\Etoc@etoccontentsline@ #1#2#3#4{%
\Etoc@doendsandbegin
\Etoc@global\edef\Etoc@prefix {\expandafter\noexpand
\csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }%
\Etoc@global\edef\Etoc@contents{\expandafter\noexpand
\csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }%
\ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi
\global\Etoc@skipprefixfalse
\Etoc@lxyz{#2}{#3}{#4}%
\Etoc@prefix
\Etoc@contents
}
\def\Etoc@lxyz #1#2#3{%
\ifEtoc@hyperref
\Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}%
\else
\Etoc@global\let\etocthelink\@firstofone
\fi
\Etoc@global\def\etocthepage {#2}%
\ifEtoc@hyperref
\ifx\etocthepage\@empty
\Etoc@global\let\etocthelinkedpage\@empty
\else
\Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}%
\fi
\else
\Etoc@global\let\etocthelinkedpage\etocthepage
\fi
\Etoc@global\def\etocthename{#1}%
\futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@
\ifEtoc@hyperref
\def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}%
\expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname
\ifEtoc@numbered
\expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber
\else
\Etoc@global\let\etocthelinkednumber\@empty
\fi
\else
\Etoc@global\let\etocthelinkedname \etocthename
\Etoc@global\let\etocthelinkednumber\etocthenumber
\fi
\Etoc@global\expandafter\let\csname etoclink \endcsname \etocthelink
\Etoc@global\expandafter\let\csname etocname \endcsname \etocthename
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber
\Etoc@global\expandafter\let\csname etocpage \endcsname \etocthepage
\ifEtoc@hyperref
\Etoc@lxyz@linktoc
\fi
}
\def\Etoc@lxyz@linktoc{%
\ifcase\Hy@linktoc
\or
\Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
\or % page
\Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
\else % all
\Etoc@global\expandafter\let\csname etocname \endcsname\etocthelinkedname
\Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
\Etoc@global\expandafter\let\csname etocpage \endcsname\etocthelinkedpage
\fi
}
\def\Etoc@@getnb {%
\let\Etoc@next\Etoc@getnb
\ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi
\ifx\Etoc@getnb@token\bgroup \let\Etoc@next\Etoc@getnb@nonbr\fi
\Etoc@next
}
\def\Etoc@getnb #1{%
\in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}%
\ifin@
\let\Etoc@next\Etoc@getnb@nmbrd
\else
\ifnum\Etoc@level=\m@ne
\let\Etoc@next\Etoc@@getit
\else
\let\Etoc@next\Etoc@getnb@nonbr
\fi
\in@{#1}{\nonumberline}%
\ifin@
\let\Etoc@next\Etoc@getnb@nonumberline
\fi
\fi
\Etoc@next #1%
}
\def\Etoc@getnb@nmbrd #1#2{%
\Etoc@global\Etoc@numberedtrue
\Etoc@global\def\etocthenumber {#2}%
\Etoc@getnb@nmbrd@getname\@empty
}%
\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {%
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
}
\def\Etoc@getnb@nonbr #1\etoc@ {%
\Etoc@global\Etoc@numberedfalse
\Etoc@global\let\etocthenumber \@empty
}
\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {%
\Etoc@global\Etoc@numberedfalse
\Etoc@global\let\etocthenumber \@empty
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}%
}
\def\Etoc@@getit #1\hspace#2{%
\ifx\etoc@#2%
\Etoc@global\Etoc@numberedfalse
\Etoc@global\let\etocthenumber \@empty
\else
\Etoc@global\Etoc@numberedtrue
\Etoc@global\def\etocthenumber {#1}%
\expandafter\Etoc@getit@getname \expandafter\@empty
\fi
}
\def\Etoc@getit@getname #1\hspace\etoc@ {%
\Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
}
\let\etocthename \@empty
\let\etocthenumber \@empty
\let\etocthepage \@empty
\let\etocthelinkedname \@empty
\let\etocthelinkednumber \@empty
\let\etocthelinkedpage \@empty
\let\etocthelink \@firstofone
\DeclareRobustCommand*{\etocname} {}
\DeclareRobustCommand*{\etocnumber}{}
\DeclareRobustCommand*{\etocpage} {}
\DeclareRobustCommand*{\etoclink} {\@firstofone}
\DeclareRobustCommand*{\etocifnumbered}
{\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname
\DeclareRobustCommand*{\etociffirst}
{\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname
\def\Etoc@readtoc {%
\ifeof \Etoc@tf
\else
\read \Etoc@tf to \Etoc@buffer
\Etoc@toctoks=\expandafter\expandafter\expandafter
{\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}%
\expandafter\Etoc@readtoc
\fi
}
\Etoc@toctoks {}% (superfluous, but for clarity)
\AtBeginDocument{\IfFileExists{\jobname.toc}
{{\endlinechar=\m@ne
\makeatletter
\newread\Etoc@tf
\openin\Etoc@tf\@filef@und
\Etoc@readtoc
\global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}%
\closein\Etoc@tf}}
{\typeout{No file \jobname.toc.}}}
\def\Etoc@openouttoc{%
\ifEtoc@hyperref
\ifx\hyper@last\@undefined
\IfFileExists{\jobname .toc}
{\Hy@WarningNoLine
{old toc file detected; run LaTeX again (cheers from `etoc')}%
\global\Etoc@toctoks={}%
}
{}%
\fi
\fi
\if@filesw
\newwrite \tf@toc
\immediate \openout \tf@toc \jobname .toc\relax
\fi
\global\let\Etoc@openouttoc\empty
}
\def\Etoc@toctoc{%
\gdef\Etoc@stackofends{{-3}{}}%
\global\let\Etoc@level\Etoc@minf
\global\let\Etoc@virtualtop\Etoc@minf
\the\Etoc@toctoks
\ifEtoc@notactive
\else
\gdef\Etoc@level{-\thr@@}%
\Etoc@doendsandbegin
\fi
}
\def\Etoc@@startlocaltoc#1#2{%
\ifEtoc@localtoc
\ifnum #1=#2\relax
\global\let\etoclocaltop\Etoc@virtualtop
\Etoc@@startlocaltochook
\etoclocaltableofcontentshook
\ifEtoc@etocstyle
\etocetoclocaltocmaketitle
\fi
\ifx\Etoc@aftertitlehook\@empty
\else
\ifEtoc@localtoctotoc
\ifEtoc@ouroboros
\else
\let\Etoc@tmp\contentsline
\def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}%
\fi
\fi
\fi
\global\Etoc@notactivefalse
\fi
\fi
}
\let\etoc@startlocaltoc\@gobble
\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc
\let\Etoc@@startlocaltochook\@empty
\unless\ifEtoc@deeplevels
\def\etocdivisionnameatlevel#1{%
\ifcase\numexpr#1\relax
\ifdefined\c@chapter chapter\else section\fi%
\or section%
\or subsection%
\or subsubsection%
\or paragraph%
\or subparagraph%
\or empty%
\else\ifnum\numexpr#1<\m@ne
book%
\else
part%
\fi
\fi
}
\else
\def\etocdivisionnameatlevel#1{%
\ifcase\numexpr#1\relax
\ifdefined\c@chapter chapter\else section\fi%
\or section%
\or subsection%
\or subsubsection%
\or subsubsubsection%
\or subsubsubsubsection%
\or subsubsubsubsubsection%
\or subsubsubsubsubsubsection%
\or paragraph%
\or subparagraph%
\else\ifnum\numexpr#1>\z@
empty%
\else\ifnum\numexpr#1=\m@ne
part%
\else
book%
\fi\fi
\fi
}
\fi
\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}}
\def\etocglobalheadtotoc{\addcontentsline{toc}}
\providecommand*\UseName{\@nameuse}
\def\etocetoclocaltocmaketitle{%
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}%
\if@noskipsec\leavevmode\par\fi
\etociflocaltoctotoc
{\etocifisstarred
{}% star variant, do not add to toc
{\etoclocalheadtotoc
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
{\localcontentsname}%
}%
}%
{}%
}%
\def\localcontentsname {\contentsname}%
\let\etoclocaltableofcontentshook\@empty
\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1%
\else
\AtBeginDocument{%
\let\Etoc@originaladdcontentsline\addcontentsline
\def\addcontentsline{\Etoc@hackedaddcontentsline}%
}%
\fi
\ifEtoc@lof
\ifEtoc@lot
\def\Etoc@hackedaddcontentsline#1{%
\expanded{\noexpand\in@{.#1,}}{.lof,.lot,}%
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
\else\expandafter\Etoc@originaladdcontentsline
\fi {#1}}
\else
\def\Etoc@hackedaddcontentsline#1{%
\expanded{\noexpand\in@{.#1,}}{.lof,}%
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
\else\expandafter\Etoc@originaladdcontentsline
\fi {#1}}
\fi
\else
\def\Etoc@hackedaddcontentsline#1{%
\expanded{\noexpand\in@{.#1,}}{.lot,}%
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
\else\expandafter\Etoc@originaladdcontentsline
\fi {#1}}
\fi
\def\Etoc@hackedaddcontentsline@i#1#2#3{%
\expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}%
\ifin@
\addtocontents {toc}{%
\protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
\ifdefined\protected@file@percent\protected@file@percent\fi
}%
\fi
\Etoc@originaladdcontentsline{#1}{#2}{#3}%
}
\unless\ifdefined\expanded
\def\Etoc@hackedaddcontentsline#1{%
{\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}%
\Etoc@tmp
\ifin@\expandafter\Etoc@hackedaddcontentsline@i
\else\expandafter\Etoc@originaladdcontentsline
\fi {#1}%
}
\def\Etoc@hackedaddcontentsline@i#1#2#3{%
{\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}%
\Etoc@tmp{.lof;figure,.lot;table,}%
\ifin@
\addtocontents {toc}{%
\protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
\ifdefined\protected@file@percent\protected@file@percent\fi
}%
\fi
\Etoc@originaladdcontentsline{#1}{#2}{#3}%
}
\fi
\def\Etoc@@startlocallistof#1#2#3{%
\ifEtoc@localtoc
\ifnum #2=#3\relax
\global\let\etoclocaltop\Etoc@virtualtop
\global\Etoc@notactivefalse
\Etoc@@startlocaltochook
\csname etoclocallistof#1shook\endcsname
\ifEtoc@etocstyle
\csname etocetoclistof#1smaketitle\endcsname
\fi
\fi
\fi
}
\def\Etoc@@startlocallistof@setlevels#1{%
\ifnum\etoclocaltop<\z@
\expandafter\let\csname Etoc@#1@@\endcsname\@ne
\else
\expandafter\let\csname Etoc@#1@@\expandafter\endcsname
\csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname
\fi
\def\Etoc@do##1{%
\ifnum\etoclevel{##1}>\etoclocaltop
\expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel
\fi}%
\Etoc@dolevels
}
\def\etoclocallistoffigureshook{\etocstandardlines}
\def\etoclocallistoftableshook {\etocstandardlines}
\def\locallistfigurename{\listfigurename}
\def\locallisttablename {\listtablename}
\def\etocetoclistoffiguresmaketitle{%
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}%
\ifnum\etoclocaltop>\tw@\mbox{}\par\fi
\etociflocalloftotoc
{\etocifisstarred
{}% star variant, do not add to toc
{\etoclocalheadtotoc
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
{\locallistfigurename}%
}%
}%
{}%
}%
\def\etocetoclistoftablesmaketitle{%
\UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}%
\ifnum\etoclocaltop>\tw@\mbox{}\par\fi
\etociflocallottotoc
{\etocifisstarred
{}% star variant, do not add to toc
{\etoclocalheadtotoc
{\etocdivisionnameatlevel{\etoclocaltop+1}}%
{\locallisttablename}%
}%
}%
{}%
}%
\let\Etoc@listofreset\@empty
\ifEtoc@lof
\def\locallistoffigures{%
\def\Etoc@listofreset{%
\let\Etoc@currext\Etoc@tocext
\let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
\let\Etoc@@startlocaltochook\@empty
\let\Etoc@listofreset\@empty
\let\Etoc@listofhook\@empty
}%
\let\Etoc@currext\Etoc@lofext
\def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}%
\def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}%
\def\Etoc@listofhook{%
\def\Etoc@do####1{%
\expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
}%
\Etoc@dolevels
}%
\localtableofcontents
}
\else
\def\locallistoffigures{%
\PackageError{etoc}{%
\string\locallistoffigures \on@line\space but\MessageBreak
package was loaded without `lof' option}%
{Try again with \string\usepackage[lof]{etoc}}%
}
\fi
\ifEtoc@lot
\def\locallistoftables{%
\def\Etoc@listofreset{%
\let\Etoc@currext\Etoc@tocext
\let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
\let\Etoc@@startlocaltochook\@empty
\let\Etoc@listofreset\@empty
\let\Etoc@listofhook\@empty
}%
\let\Etoc@currext\Etoc@lotext
\def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}%
\def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}%
\def\Etoc@listofhook{%
\def\Etoc@do####1{%
\expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
}%
\Etoc@dolevels
}%
\localtableofcontents
}
\else
\def\locallistoftables{%
\PackageError{etoc}{%
\string\locallistoftable \on@line\space but\MessageBreak
package was loaded without `lot' option}%
{Try again with \string\usepackage[lot]{etoc}}%
}
\fi
\def\Etoc@checkifempty {%
\global\Etoc@isemptytoctrue
\global\Etoc@stoptocfalse
\global\let\Etoc@level\Etoc@minf
\global\let\Etoc@virtualtop\Etoc@minf
\gdef\Etoc@stackofends{{-3}{}}%
\begingroup
\ifEtoc@localtoc
\def\etoc@startlocaltoc##1{%
\ifnum##1=\Etoc@tocid\relax
\global\let\etoclocaltop\Etoc@virtualtop
\Etoc@@startlocaltochook
\global\Etoc@notactivefalse
\fi
}%
\let\contentsline\Etoc@testingcontentslinelocal
\else
\let\contentsline\Etoc@testingcontentsline
\fi
\Etoc@storetocdepth
\let\Etoc@setlocaltop@doendsandbegin\@empty
\the\Etoc@toctoks
\Etoc@restoretocdepth
\endgroup
}
\DeclareRobustCommand*\etocifwasempty
{\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi }
\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname
\def\Etoc@testingcontentslinelocal #1{%
\ifEtoc@stoptoc
\else
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
\else
\global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
\if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
\ifEtoc@notactive
\else
\ifnum\Etoc@level>\etoclocaltop
\unless\ifnum\Etoc@level>\c@tocdepth
\global\Etoc@isemptytocfalse
\global\Etoc@stoptoctrue
\fi
\else
\global\Etoc@stoptoctrue
\fi
\fi
\fi
\fi
\Etoc@gobblethreeorfour{}%
}
\def\Etoc@testingcontentsline #1{%
\ifEtoc@stoptoc
\else
\ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
\else
\unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth
\global\Etoc@isemptytocfalse
\global\Etoc@stoptoctrue
\fi
\fi
\fi
\Etoc@gobblethreeorfour{}%
}
\def\Etoc@localtableofcontents#1{%
\gdef\etoclocaltop{-\@m}%
\Etoc@localtoctrue
\global\Etoc@isemptytocfalse
\edef\Etoc@tocid{#1}%
\ifnum\Etoc@tocid<\@ne
\setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}%
\global\Etoc@stoptoctrue
\gdef\etoclocaltop{-\thr@@}%
\Etoc@tableofcontents
\expandafter\Etoc@gobtoetoc@
\fi
\global\Etoc@notactivetrue
\ifEtoc@checksemptiness
\Etoc@checkifempty
\fi
\ifEtoc@isemptytoc
\ifEtoc@notactive
\setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}%
\global\Etoc@isemptytocfalse
\global\Etoc@stoptoctrue
\gdef\etoclocaltop{-\thr@@}%
\Etoc@tableofcontents
\expandafter\expandafter\expandafter\Etoc@gobtoetoc@
\fi
\else
\global\Etoc@stoptocfalse
\global\Etoc@notactivetrue
\edef\etoc@startlocaltoc##1%
{\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}%
\Etoc@tableofcontents
\fi
\@gobble\etoc@
\endgroup\ifEtoc@mustclosegroup\endgroup\fi
\Etoc@tocdepthreset
\Etoc@listofreset
\etocaftertochook
}% \Etoc@localtableofcontents
\def\Etoc@getref #1{%
\@ifundefined{r@#1}
{0}
{\expandafter\Etoc@getref@i\romannumeral-`0%
\expandafter\expandafter\expandafter
\@car\csname r@#1\endcsname0\@nil\@etoc
}%
}
\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi}
\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}}
\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
\def\Etoc@dothis #1#2\etoc@ {\fi #1}
\def\Etoc@t@bleofcontents{%
\gdef\etoclocaltop{-\@M}%
\ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi
\ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi
\ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi
\ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi
\global\Etoc@isemptytocfalse
\ifEtoc@checksemptiness\Etoc@checkifempty\fi
\ifEtoc@isemptytoc
\ifEtoc@notocifnotoc
\expandafter\expandafter\expandafter\@gobble
\fi
\fi
\Etoc@tableofcontents
\endgroup
\ifEtoc@mustclosegroup\endgroup\fi
\Etoc@tocdepthreset
\Etoc@listofreset
\etocaftertochook
\@gobble\etoc@
}% \Etoc@t@bleofcontents
\def\Etoc@table@fcontents{%
\refstepcounter{etoc@tocid}%
\Etoc@tocwithidfalse
\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
}
\def\Etoc@localtable@fcontents{%
\refstepcounter{etoc@tocid}%
\addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}%
\Etoc@tocwithidtrue
\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
}
\def\etoctableofcontents{%
\Etoc@openouttoc
\Etoc@tocdepthset
\begingroup
\@ifstar
{\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents}
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}%
}% \etoctableofcontents
\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty
\expandafter\@firstoftwo\else
\expandafter\@secondoftwo
\fi}
\let\etocoriginaltableofcontents\tableofcontents
\let\tableofcontents\etoctableofcontents
\let\Etoc@listofhook\@empty
\newcommand*\localtableofcontents{%
\Etoc@openouttoc
\Etoc@tocdepthset
\begingroup
\Etoc@listofhook
\@ifstar
{\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents}
{\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}%
}% \localtableofcontents
\newcommand*\localtableofcontentswithrelativedepth[1]{%
\def\Etoc@@startlocaltochook{%
\global\c@tocdepth\numexpr\etoclocaltop+#1\relax
}%
\def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty
\let\Etoc@listofreset\@empty}%
\localtableofcontents
}% \localtableofcontentswithrelativedepth
\newcommand\etocsettocstyle[2]{%
\Etoc@etocstylefalse
\Etoc@classstylefalse
\def\Etoc@tableofcontents@user@before{#1}%
\def\Etoc@tableofcontents@user@after {#2}%
}%
\def\etocstoretocstyleinto#1{%
%% \@ifdefinable#1{%
\edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse
\def\noexpand\Etoc@tableofcontents@user@before{%
\unexpanded\expandafter{\Etoc@tableofcontents@user@before}%
}%
\def\noexpand\Etoc@tableofcontents@user@after{%
\unexpanded\expandafter{\Etoc@tableofcontents@user@after}%
}%
}%
%% }%
}%
\def\Etoc@tableofcontents {%
\Etoc@tableofcontents@etoc@before
\ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
\Etoc@tableofcontents@user@before
\Etoc@tableofcontents@contents
\ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
\Etoc@tableofcontents@user@after
\Etoc@tableofcontents@etoc@after
\@gobble\etoc@
}
\def\Etoc@tableofcontents@etoc@before{%
\ifnum\c@tocdepth>\Etoc@minf
\else
\expandafter\Etoc@gobtoetoc@
\fi
\Etoc@par
\Etoc@beforetitlehook
\etocbeforetitlehook
\Etoc@storetocdepth
\let\Etoc@savedcontentsline\contentsline
\let\contentsline\Etoc@etoccontentsline
\ifEtoc@standardlines
\else
\def\Etoc@do##1{%
\expandafter\def\csname etocsaved##1tocline\endcsname
{\PackageError{etoc}{%
\expandafter\string\csname etocsaved##1tocline\endcsname\space
has been deprecated\MessageBreak
at 1.1a and is removed at 1.2.\MessageBreak
Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak
Reported \on@line}%
{I will use \expandafter\string
\csname l@##1\endcsname\space myself for this time.%
}%
\csname l@##1\endcsname
}%
}%
\Etoc@dolevels
\fi
}%
\def\Etoc@tableofcontents@contents{%
\Etoc@tocdepthset
\ifEtoc@parskip\parskip\z@skip\fi
\Etoc@aftertitlehook
\gdef\etoclocaltop{-\thr@@}%
\Etoc@toctoc
\etocaftercontentshook
}%
\def\Etoc@tableofcontents@etoc@after{%
\@nobreakfalse
\Etoc@restoretocdepth
\ifx\Etoc@global\global
\@ifundefined{tof@finish}
{}
{\ifx\tof@finish\@empty
\else
\global\let\contentsline\Etoc@savedcontentsline
\fi
}%
\fi
}
\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname
\expandafter\Etoc@setstyle@a
\else
\expandafter\Etoc@setstyle@error
\fi {#1}%
}
\def\Etoc@setstyle@error #1{%
\PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak
forget some \string\etocsetlevel{#1}{<level>}?\MessageBreak
Reported}%
\@gobblefour
}
\def\Etoc@setstyle@a #1{%
\edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}%
\if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi
\unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1%
\Etoc@standardlinesfalse
\expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp
\else
\ifnum\Etoc@tmp=\Etoc@maxlevel
\in@{.#1,}{.figure,.table,}%
\ifin@
\PackageWarning{etoc}
{You can not use \string\etocsetstyle\space with `#1'.\MessageBreak
Check the package documentation (in particular about\MessageBreak
\string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)%
\MessageBreak on how to customize
figure and table entries in local\MessageBreak lists. Reported}%
\else
\PackageInfo{etoc}
{Attempt to set the style of `#1',\MessageBreak
whose level is currently the maximal one \etocthemaxlevel,\MessageBreak
which is never displayed. \space This will be ignored\MessageBreak
but note that we do quit compatibility mode.\MessageBreak
Reported}%
\Etoc@standardlinesfalse
\fi
\else
\PackageWarning{etoc}{This should not happen. Reported}%
\fi
\expandafter\@gobblefour
\fi
}
\long\def\Etoc@setstyle@b#1#2#3#4#5{%
\expandafter\def\csname Etoc@begin@#1\endcsname {#2}%
\expandafter\def\csname Etoc@prefix@#1\endcsname {#3}%
\expandafter\def\csname Etoc@contents@#1\endcsname {#4}%
\expandafter\def\csname Etoc@end@#1\endcsname {#5}%
}
\def\Etoc@setstyle@e#1{%
\expandafter\let\csname Etoc@begin@#1\endcsname \@empty
\expandafter\let\csname Etoc@prefix@#1\endcsname \@empty
\expandafter\let\csname Etoc@contents@#1\endcsname \@empty
\expandafter\let\csname Etoc@end@#1\endcsname \@empty
}
\def\Etoc@storelines@a#1{%
\noexpand\Etoc@setstyle@b{#1}%
{\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}%
{\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}%
{\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}%
{\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}%
}
\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}}
\def\etocstorelinestylesinto#1{%
\edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}%
\Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}%
\Etoc@storelines@a {4}\Etoc@storelines@a {5}%
\ifEtoc@deeplevels
\Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}%
\Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}%
\fi
}%
}
\def\etocstorethislinestyleinto#1#2{%
\edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}%
}%
\def\etocfontminustwo {\normalfont \LARGE \bfseries}
\def\etocfontminusone {\normalfont \large \bfseries}
\def\etocfontzero {\normalfont \large \bfseries}
\def\etocfontone {\normalfont \normalsize \bfseries}
\def\etocfonttwo {\normalfont \normalsize}
\def\etocfontthree {\normalfont \footnotesize}
\def\etocsepminustwo {4ex \@plus .5ex \@minus .5ex}
\def\etocsepminusone {4ex \@plus .5ex \@minus .5ex}
\def\etocsepzero {2.5ex \@plus .4ex \@minus .4ex}
\def\etocsepone {1.5ex \@plus .3ex \@minus .3ex}
\def\etocseptwo {.5ex \@plus .1ex \@minus .1ex}
\def\etocsepthree {.25ex \@plus .05ex \@minus .05ex}
\def\etocbaselinespreadminustwo {1}
\def\etocbaselinespreadminusone {1}
\def\etocbaselinespreadzero {1}
\def\etocbaselinespreadone {1}
\def\etocbaselinespreadtwo {1}
\def\etocbaselinespreadthree {.9}
\def\etocminustwoleftmargin {1.5em plus 0.5fil}
\def\etocminustworightmargin {1.5em plus -0.5fil}
\def\etocminusoneleftmargin {1em}
\def\etocminusonerightmargin {1em}
\def\etoctoclineleaders
{\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}}
\def\etocabbrevpagename {p.~}
\def\etocpartname {Part}
\def\etocbookname {Book}
\def\etocdefaultlines{%
\Etoc@standardlinesfalse
\etocdefaultlines@setbook
\etocdefaultlines@setpart
\etocdefaultlines@setchapter
\etocdefaultlines@setsection
\etocdefaultlines@setsubsection
\etocdefaultlines@setsubsubsection
\etocdefaultlines@setdeeperones
}
\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@}
\@ifclassloaded{memoir}{%
\def\etocdefaultlines@setbook{%
\Etoc@setstyle@b
{-2}%
{\addpenalty\@M\etocskipfirstprefix}
{\addpenalty\@secpenalty}
{\begingroup
\etocfontminustwo
\addvspace{\etocsepminustwo}%
\parindent \z@
\leftskip \etocminustwoleftmargin
\rightskip \etocminustworightmargin
\parfillskip \@flushglue
\vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}%
\etocname
\baselineskip\etocbaselinespreadminustwo\baselineskip
\par}%
\addpenalty\@M\addvspace{\etocsepminusone}%
\endgroup}
{}%
}
}{\let\etocdefaultlines@setbook\@empty}
\def\etocdefaultlines@setpart{%
\Etoc@setstyle@b
{-1}%
{\addpenalty\@M\etocskipfirstprefix}
{\addpenalty\@secpenalty}
{\begingroup
\etocfontminusone
\addvspace{\etocsepminusone}%
\parindent \z@
\leftskip \etocminusoneleftmargin
\rightskip \etocminusonerightmargin
\parfillskip \@flushglue
\vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}%
\etocname
\baselineskip\etocbaselinespreadminusone\baselineskip
\par}%
\addpenalty\@M\addvspace{\etocsepzero}%
\endgroup}
{}%
}
\def\etocdefaultlines@setchapter{%
\Etoc@setstyle@b
{0}%
{\addpenalty\@M\etocskipfirstprefix}
{\addpenalty\@itempenalty}
{\begingroup
\etocfontzero
\addvspace{\etocsepzero}%
\parindent \z@ \parfillskip \@flushglue
\vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname
\baselineskip\etocbaselinespreadzero\baselineskip
\par}%
\endgroup}
{\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}%
}
\def\etocdefaultlines@setsection{%
\Etoc@setstyle@b
{1}%
{\addpenalty\@M\etocskipfirstprefix}
{\addpenalty\@itempenalty}
{\begingroup
\etocfontone
\addvspace{\etocsepone}%
\parindent \z@ \parfillskip \z@
\setbox\z@\vbox{\parfillskip\@flushglue
\etocname\par
\setbox\tw@\lastbox
\global\setbox\@ne\hbox{\unhbox\tw@\ }}%
\dimen\z@=\wd\@ne
\setbox\z@=\etoctoclineleaders
\advance\dimen\z@\wd\z@
\etocifnumbered
{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
{\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
\advance\dimen\z@\wd\tw@
\ifdim\dimen\z@ < \linewidth
\vbox{\etocname~%
\leaders\box\z@\hfil\box\tw@
\baselineskip\etocbaselinespreadone\baselineskip
\par}%
\else
\vbox{\etocname~%
\leaders\copy\z@\hfil\break
\hbox{}\leaders\box\z@\hfil\box\tw@
\baselineskip\etocbaselinespreadone\baselineskip
\par}%
\fi
\endgroup}
{\addpenalty\@secpenalty\addvspace{\etocsepzero}}%
}
\def\etocdefaultlines@setsubsection{%
\Etoc@setstyle@b
{2}%
{\addpenalty\@medpenalty\etocskipfirstprefix}
{\addpenalty\@itempenalty}
{\begingroup
\etocfonttwo
\addvspace{\etocseptwo}%
\parindent \z@ \parfillskip \z@
\setbox\z@\vbox{\parfillskip\@flushglue
\etocname\par\setbox\tw@\lastbox
\global\setbox\@ne\hbox{\unhbox\tw@}}%
\dimen\z@=\wd\@ne
\setbox\z@=\etoctoclineleaders
\advance\dimen\z@\wd\z@
\etocifnumbered
{\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
{\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
\advance\dimen\z@\wd\tw@
\ifdim\dimen\z@ < \linewidth
\vbox{\etocname~%
\leaders\box\z@\hfil\box\tw@
\baselineskip\etocbaselinespreadtwo\baselineskip
\par}%
\else
\vbox{\etocname~%
\leaders\copy\z@\hfil\break
\hbox{}\leaders\box\z@\hfil\box\tw@
\baselineskip\etocbaselinespreadtwo\baselineskip
\par}%
\fi
\endgroup}
{\addpenalty\@secpenalty\addvspace{\etocsepone}}%
}
\def\etocdefaultlines@setsubsubsection{%
\Etoc@setstyle@b
{3}%
{\addpenalty\@M
\etocfontthree
\vspace{\etocsepthree}%
\noindent
\etocskipfirstprefix}
{\allowbreak\,--\,}
{\etocname}
{.\hfil
\begingroup
\baselineskip\etocbaselinespreadthree\baselineskip
\par
\endgroup
\addpenalty{-\@highpenalty}}
}
\def\etocdefaultlines@setdeeperones{%
\Etoc@setstyle@e{4}%
\Etoc@setstyle@e{5}%
\ifEtoc@deeplevels
\Etoc@setstyle@e{6}%
\Etoc@setstyle@e{7}%
\Etoc@setstyle@e{8}%
\Etoc@setstyle@e{9}%
\Etoc@setstyle@e{10}%
\Etoc@setstyle@e{11}%
\fi
}
\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex}
\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex}
\def\etoccolumnsep{2em}
\def\etocmulticolsep{0ex}
\def\etocmulticolpretolerance{-1}
\def\etocmulticoltolerance{200}
\def\etocdefaultnbcol{2}
\def\etocinnertopsep{2ex}
\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{%
\etocsettocstyle
{\let\etocoldpar\par
\addvspace{\etocabovetocskip}%
\ifnum #1>\@ne
\expandafter\@firstoftwo
\else \expandafter\@secondoftwo
\fi
{\multicolpretolerance\etocmulticolpretolerance
\multicoltolerance\etocmulticoltolerance
\setlength{\columnsep}{\etoccolumnsep}%
\setlength{\multicolsep}{\etocmulticolsep}%
\begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]}
{#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip
\@@par\endgroup
\fi
\nobreak\addvspace{\etocinnertopsep}%
\pretolerance\etocmulticolpretolerance
\tolerance\etocmulticoltolerance}%
}%
{\ifnum #1>\@ne
\expandafter\@firstofone
\else \expandafter\@gobble
\fi
{\end{multicols}}%
\addvspace{\etocbelowtocskip}}%
}
\def\etocinnerbottomsep{3.5ex}
\def\etocinnerleftsep{2em}
\def\etocinnerrightsep{2em}
\def\etoctoprule{\hrule}
\def\etocleftrule{\vrule}
\def\etocrightrule{\vrule}
\def\etocbottomrule{\hrule}
\def\etoctoprulecolorcmd{\relax}
\def\etocbottomrulecolorcmd{\relax}
\def\etocleftrulecolorcmd{\relax}
\def\etocrightrulecolorcmd{\relax}
\def\etoc@ruledheading #1{%
\hb@xt@\linewidth{\color@begingroup
\hss #1\hss\hskip-\linewidth
\etoctoprulecolorcmd\leaders\etoctoprule\hss
\phantom{#1}%
\leaders\etoctoprule\hss\color@endgroup}%
\nointerlineskip\nobreak\vskip\etocinnertopsep}
\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{%
\etocsettocstyle
{\addvspace{\etocabovetocskip}%
\ifnum #1>\@ne
\expandafter\@firstoftwo
\else \expandafter\@secondoftwo
\fi
{\multicolpretolerance\etocmulticolpretolerance
\multicoltolerance\etocmulticoltolerance
\setlength{\columnsep}{\etoccolumnsep}%
\setlength{\multicolsep}{\etocmulticolsep}%
\begin{multicols}{#1}[\etoc@ruledheading{#2}]}
{\etoc@ruledheading{#2}%
\pretolerance\etocmulticolpretolerance
\tolerance\etocmulticoltolerance}}
{\ifnum #1>\@ne\expandafter\@firstofone
\else \expandafter\@gobble
\fi
{\end{multicols}}%
\addvspace{\etocbelowtocskip}}}
\def\etocframedmphook{\relax}
\long\def\etocbkgcolorcmd{\relax}
\long\def\Etoc@relax{\relax}
\newbox\etoc@framed@titlebox
\newbox\etoc@framed@contentsbox
\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{%
\etocsettocstyle{%
\addvspace{\etocabovetocskip}%
\sbox\z@{#2}%
\dimen\z@\dp\z@
\ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi
\setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup
\hss
\ifx\etocbkgcolorcmd\Etoc@relax
\else
\sbox\tw@{\color{white}%
\vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}%
\ifdim\wd\z@<\linewidth \dp\tw@\z@\fi
\box\tw@
\hskip-\wd\z@
\fi
\copy\z@
\hss
\hskip-\linewidth
\etoctoprulecolorcmd\leaders\etoctoprule\hss
\hskip\wd\z@
\etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}%
\setbox\z@\hbox{\etocleftrule\etocrightrule}%
\dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@
\advance\dimen\tw@-\etocinnerleftsep
\advance\dimen\tw@-\etocinnerrightsep
\setbox\etoc@framed@contentsbox=\vbox\bgroup
\hsize\dimen\tw@
\kern\dimen\z@
\vskip\etocinnertopsep
\hbox\bgroup
\begin{minipage}{\hsize}%
\etocframedmphook
\ifnum #1>\@ne
\expandafter\@firstoftwo
\else \expandafter\@secondoftwo
\fi
{\multicolpretolerance\etocmulticolpretolerance
\multicoltolerance\etocmulticoltolerance
\setlength{\columnsep}{\etoccolumnsep}%
\setlength{\multicolsep}{\etocmulticolsep}%
\begin{multicols}{#1}}
{\pretolerance\etocmulticolpretolerance
\tolerance\etocmulticoltolerance}}
{\ifnum #1>\@ne\expandafter\@firstofone
\else \expandafter\@gobble
\fi
{\end{multicols}\unskip }%
\end{minipage}%
\egroup
\vskip\etocinnerbottomsep
\egroup
\vbox{\hsize\linewidth
\ifx\etocbkgcolorcmd\Etoc@relax
\else
\kern\ht\etoc@framed@titlebox
\kern\dp\etoc@framed@titlebox
\hb@xt@\linewidth{\color@begingroup
\etocleftrulecolorcmd\etocleftrule
\etocbkgcolorcmd
\leaders\vrule
\@height\ht\etoc@framed@contentsbox
\@depth\dp\etoc@framed@contentsbox
\hss
\etocrightrulecolorcmd\etocrightrule
\color@endgroup}\nointerlineskip
\vskip-\dp\etoc@framed@contentsbox
\vskip-\ht\etoc@framed@contentsbox
\vskip-\dp\etoc@framed@titlebox
\vskip-\ht\etoc@framed@titlebox
\fi
\box\etoc@framed@titlebox\nointerlineskip
\hb@xt@\linewidth{\color@begingroup
{\etocleftrulecolorcmd\etocleftrule}%
\hss\box\etoc@framed@contentsbox\hss
\etocrightrulecolorcmd\etocrightrule\color@endgroup}
\nointerlineskip
\vskip\ht\etoc@framed@contentsbox
\vskip\dp\etoc@framed@contentsbox
\hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd
\leaders\etocbottomrule\hss\color@endgroup}}
\addvspace{\etocbelowtocskip}}}
\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{%
\etocmulticolstyle[#1]{#2}%
\tableofcontents}
\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{%
\etocmulticolstyle[#1]{#2}%
\tableofcontents*}
\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{%
\etocmulticolstyle[#1]{#2}%
\localtableofcontents}
\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{%
\etocmulticolstyle[#1]{#2}%
\localtableofcontents*}
\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{%
\etocruledstyle[#1]{#2}%
\tableofcontents}
\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{%
\etocruledstyle[#1]{#2}%
\tableofcontents*}
\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{%
\etocruledstyle[#1]{#2}%
\localtableofcontents}
\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{%
\etocruledstyle[#1]{#2}%
\localtableofcontents*}
\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{%
\etocframedstyle[#1]{#2}%
\tableofcontents}
\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{%
\etocframedstyle[#1]{#2}%
\tableofcontents*}
\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{%
\etocframedstyle[#1]{#2}%
\localtableofcontents}
\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{%
\etocframedstyle[#1]{#2}%
\localtableofcontents*}
\def\etocmulticol{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@multicoltoci}
{\etoc@multicoltoc}}
\def\etocruled{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@ruledtoci}
{\etoc@ruledtoc}}
\def\etocframed{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@framedtoci}
{\etoc@framedtoc}}
\def\etoclocalmulticol{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@local@multicoltoci}
{\etoc@local@multicoltoc}}
\def\etoclocalruled{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@local@ruledtoci}
{\etoc@local@ruledtoc}}
\def\etoclocalframed{\begingroup
\Etoc@mustclosegrouptrue
\@ifstar
{\etoc@local@framedtoci}
{\etoc@local@framedtoc}}
\def\etocmemoirtoctotocfmt #1#2{%
\PackageWarning{etoc}
{\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak
Use in its place \string\etocsettoclineforclasstoc,\MessageBreak
and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}).
I will do this now.\MessageBreak
Reported}%
\etocsettoclineforclasstoc{#1}{#2}%
\etocsettoclineforclasslistof{toc}{#1}{#2}%
}
\def\etocsettoclineforclasstoc #1#2{%
\def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}%
}
\def\etocsettoclineforclasslistof #1#2#3{%
\@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}%
}
\let\etocclasslocaltocaddtotoc\@empty
\let\etocclasslocallofaddtotoc\@empty
\let\etocclasslocallotaddtotoc\@empty
\ifdefined\c@chapter
\def\etocclasslocaltocmaketitle{\section*{\localcontentsname}}
\def\etocclasslocallofmaketitle{\section*{\locallistfigurename}}
\def\etocclasslocallotmaketitle{\section*{\locallisttablename}}
\etocsettoclineforclasstoc {chapter}{\contentsname}
\etocsettoclineforclasslistof{toc}{section}{\localcontentsname}
\etocsettoclineforclasslistof{lof}{section}{\locallistfigurename}
\etocsettoclineforclasslistof{lot}{section}{\locallisttablename}
\else
\def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}%
\def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}%
\def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}%
\etocsettoclineforclasstoc {section}{\contentsname}
\etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname}
\etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename}
\etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename}
\fi
\def\etocclasslocalperhapsaddtotoc #1{%
\etocifisstarred
{}
{\csname ifEtoc@local#1totoc\endcsname
\csname etocclasslocal#1addtotoc\endcsname
\fi
}%
}
\def\etocarticlestyle{%
\etocsettocstyle
{\ifEtoc@localtoc
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\section *{\contentsname
\@mkboth {\MakeUppercase \contentsname}
{\MakeUppercase \contentsname}}%
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
\fi
}
{}%
}
\def\etocarticlestylenomarks{%
\etocsettocstyle
{\ifEtoc@localtoc
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\section *{\contentsname}%
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
\fi
}
{}%
}
\def\etocbookstyle{%
\etocsettocstyle
{\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
\ifEtoc@localtoc
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\chapter *{\contentsname
\@mkboth {\MakeUppercase \contentsname}
{\MakeUppercase \contentsname}}%
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
\fi
}%
{\if@restonecol \twocolumn \fi}%
}
\def\etocbookstylenomarks{%
\etocsettocstyle
{\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
\ifEtoc@localtoc
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\chapter *{\contentsname}%
\etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
\fi
}%
{\if@restonecol \twocolumn \fi}%
}
\let\etocreportstyle\etocbookstyle
\let\etocreportstylenomarks\etocbookstylenomarks
\def\etocmemoirstyle{%
\etocsettocstyle
{\ensureonecol \par \begingroup \phantomsection
\ifx\Etoc@aftertitlehook\@empty
\else
\ifmem@em@starred@listof
\else
\ifEtoc@localtoc
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\ifEtoc@maintoctotoc
\etocclassmaintocaddtotoc
\fi
\fi
\fi
\fi
\ifEtoc@localtoc
\@namedef{@\Etoc@currext maketitle}{%
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
}%
\fi
\@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code
\ifx\Etoc@aftertitlehook\@empty
\else
\Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax
\fi
\parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}%
}%
{\@nameuse {cft\Etoc@currext afterlisthook}%
\endgroup\restorefromonecol
}%
}
\let\Etoc@beforetitlehook\@empty
\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}%
\expandafter\@gobble
\else
\ifdefined\setuptoc
\def\Etoc@beforetitlehook{%
\ifEtoc@localtoc
\etocclasslocalperhapsaddtotoc\Etoc@currext
\setuptoc{\Etoc@currext}{leveldown}%
\else
\etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}%
\fi
}%
\fi
\expandafter\@firstofone
\fi
{\def\etocclasslocalperhapsaddtotoc #1{%
\etocifisstarred
{}%
{\csname ifEtoc@local#1totoc\endcsname
\setuptoc{\Etoc@currext}{totoc}%
\fi
}%
}%
}
\ifdefined\Iftocfeature
\def\etoc@Iftocfeature{\Iftocfeature}%
\else
\def\etoc@Iftocfeature{\iftocfeature}%
\fi
\def\etocscrartclstyle{%
\etocsettocstyle
{\ifx\Etoc@currext\Etoc@tocext
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
{\let\if@dynlist\if@tocleft}%
\edef\@currext{\Etoc@currext}%
\@ifundefined{listof\@currext name}%
{\def\list@fname{\listofname~\@currext}}%
{\expandafter\let\expandafter\list@fname
\csname listof\@currext name\endcsname}%
\etoc@Iftocfeature {\@currext}{onecolumn}
{\etoc@Iftocfeature {\@currext}{leveldown}
{}
{\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }}
{}%
\etoc@Iftocfeature {\@currext}{numberline}%
{\def \nonumberline {\numberline {}}}{}%
\expandafter\tocbasic@listhead\expandafter {\list@fname}%
\begingroup \expandafter \expandafter \expandafter
\endgroup \expandafter
\ifx
\csname microtypesetup\endcsname \relax
\else
\etoc@Iftocfeature {\@currext}{noprotrusion}{}
{\microtypesetup {protrusion=false}%
\PackageInfo {tocbasic}%
{character protrusion at \@currext\space deactivated}}%
\fi
\etoc@Iftocfeature{\@currext}{noparskipfake}{}{%
\ifvmode \@tempskipa\lastskip \vskip-\lastskip
\addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi
}%
\setlength {\parskip }{\z@ }%
\setlength {\parindent }{\z@ }%
\setlength {\parfillskip }{\z@ \@plus 1fil}%
\csname tocbasic@@before@hook\endcsname
\csname tb@\@currext @before@hook\endcsname
}% end of before_toc
{% start of after_toc
\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file
\edef\@currext{\Etoc@currext}%
\csname tb@\@currext @after@hook\endcsname
\csname tocbasic@@after@hook\endcsname
}% end of after_toc
}
\let\etocscrbookstyle\etocscrartclstyle
\let\etocscrreprtstyle\etocscrartclstyle
\def\etocclasstocstyle{\etocarticlestyle}
\newcommand*\etocmarkboth[1]{%
\@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}}
\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]%
{\csname #1\endcsname *{#3}}}
\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]%
{\csname #1\endcsname *{#3\etocmarkboth{#4}}}}
\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]%
{\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}}
\def\Etoc@redefetocstylesforchapters{%
\renewcommand\etoctocstylewithmarks[4][chapter]{%
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}%
}
\renewcommand\etoctocstylewithmarksnouc[4][chapter]{%
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}%
}
\renewcommand\etoctocstyle[3][chapter]{%
\etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}}
}
}
\@ifclassloaded{scrartcl}
{\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{}
\@ifclassloaded{book}
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocclasstocstyle{\etocbookstyle}
\Etoc@redefetocstylesforchapters}{}
\@ifclassloaded{report}
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocclasstocstyle{\etocreportstyle}
\Etoc@redefetocstylesforchapters}{}
\@ifclassloaded{scrbook}
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocclasstocstyle{\etocscrbookstyle}
\Etoc@redefetocstylesforchapters}{}
\@ifclassloaded{scrreprt}
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocclasstocstyle{\etocscrreprtstyle}
\Etoc@redefetocstylesforchapters}{}
\@ifclassloaded{memoir}
{\renewcommand*\etocfontone{\normalfont\normalsize}
\renewcommand*\etocclasstocstyle{\etocmemoirstyle}
\Etoc@redefetocstylesforchapters}{}
\def\etoctocloftstyle {%
\etocsettocstyle{%
\@cfttocstart
\par
\begingroup
\parindent\z@ \parskip\cftparskip
\@nameuse{@cftmake\Etoc@currext title}%
\ifEtoc@localtoc
\etoctocloftlocalperhapsaddtotoc\Etoc@currext
\else
\etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}%
\fi
}%
{%
\endgroup
\@cfttocfinish
}%
}
\def\etoctocloftlocalperhapsaddtotoc#1{%
\etocifisstarred
{}%
{\csname ifEtoc@local#1totoc\endcsname
\ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi
\csname @cftdobib#1\endcsname
\fi
}%
}
\def\etoctocbibindstyle {%
\etocsettocstyle {%
\toc@start
\ifEtoc@localtoc
\@nameuse{etocclasslocal\Etoc@currext maketitle}%
\etocclasslocalperhapsaddtotoc\Etoc@currext
\else
\etoc@tocbibind@dotoctitle
\fi
}%
{\toc@finish}%
}
\def\etoc@tocbibind@dotoctitle {%
\if@bibchapter
\etocifisstarred
{\chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
}%
{\ifEtoc@maintoctotoc
\toc@chapter{\contentsname} %<-space from original
\else
\chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
\fi
}%
\else
\etocifisstarred
{\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space
}
{\ifEtoc@maintoctotoc
\toc@section{\@tocextra}{\contentsname} %<-space from original
\else
\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id.
\fi
}%
\fi
}%
\@ifclassloaded{memoir}
{}
{% memoir not loaded
\@ifpackageloaded{tocloft}
{\if@cftnctoc\else
\ifEtoc@keeporiginaltoc
\else
\AtBeginDocument{\let\tableofcontents\etoctableofcontents}%
\fi
\fi }
{\AtBeginDocument
{\@ifpackageloaded{tocloft}
{\if@cftnctoc\else
\PackageWarningNoLine {etoc}
{Package `tocloft' was loaded after `etoc'.\MessageBreak
To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak
be tricked into believing to have been loaded with its\MessageBreak
option `titles'. \space But this will cause the `tocloft'\MessageBreak
customization of the titles of the main list of figures\MessageBreak
and list of tables to not apply either.\MessageBreak
You should load `tocloft' before `etoc'.}%
\AtEndDocument{\PackageWarning{etoc}
{Please load `tocloft' before `etoc'!\@gobbletwo}}%
\fi
\@cftnctoctrue }%
{}%
}%
}%
}
\@ifclassloaded{memoir}
{}
{% memoir not loaded
\AtBeginDocument{%
\@ifpackageloaded{tocloft}
{%
\def\etocclasstocstyle{%
\etoctocloftstyle
\Etoc@classstyletrue
}%
\ifEtoc@etocstyle
\ifEtoc@classstyle
\etocclasstocstyle
\Etoc@etocstyletrue
\fi
\else
\ifEtoc@classstyle
\etocclasstocstyle
\fi
\fi
}%
{% no tocloft
\@ifpackageloaded {tocbibind}
{\if@dotoctoc
\def\etocclasstocstyle{%
\etoctocbibindstyle
\Etoc@classstyletrue
}%
\ifEtoc@etocstyle
\ifEtoc@classstyle
\etocclasstocstyle
\Etoc@etocstyletrue
\fi
\else
\ifEtoc@classstyle
\etocclasstocstyle
\fi
\fi
\ifEtoc@keeporiginaltoc
\else
\let\tableofcontents\etoctableofcontents
\fi
}%
{}%
}%
\@ifpackageloaded{tocbibind}
{% tocbibind, perhaps with tocloft
\if@dotoctoc
\ifEtoc@keeporiginaltoc
\else
\let\tableofcontents\etoctableofcontents
\fi
\etocsetup{maintoctotoc,localtoctotoc}%
\PackageInfo{etoc}{%
Setting (or re-setting) the options `maintoctotoc' and\MessageBreak
`localtoctotoc' to true as tocbibind was detected and\MessageBreak
found to be configured for `TOC to toc'.\MessageBreak
Reported at begin document}%
\fi
\if@dotoclof
\ifEtoc@lof
\etocsetup{localloftotoc}%
\PackageInfo{etoc}{%
Setting (or re-setting) `localloftotoc=true' as the\MessageBreak
package tocbibind was detected and is configured for\MessageBreak
`LOF to toc'. Reported at begin document}%
\fi
\fi
\if@dotoclot
\ifEtoc@lot
\etocsetup{locallottotoc}%
\PackageInfo{etoc}{%
Setting (or re-setting) `locallottotoc=true' as the\MessageBreak
package tocbibind was detected and is configured for\MessageBreak
`LOT to toc'. Reported at begin document}%
\fi
\fi
}% end of tocbibind branch
{}%
}% end of at begin document
}% end of not with memoir branch
\def\Etoc@addtocontents #1#2{%
\addtocontents {toc}{%
\protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
\ifdefined\protected@file@percent\protected@file@percent\fi
}%
}
\def\Etoc@addcontentsline@ #1#2#3{%
\@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}%
}
\DeclareRobustCommand*{\etoctoccontentsline}
{\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}}
\def\Etoc@addtocontents@immediately#1#2{%
\begingroup
\let\Etoc@originalwrite\write
\def\write{\immediate\Etoc@originalwrite}%
\Etoc@addtocontents{#1}{#2}%
\endgroup
}
\def\Etoc@addcontentsline@@immediately#1#2#3{%
\begingroup
\let\Etoc@originalwrite\write
\def\write{\immediate\Etoc@originalwrite}%
\Etoc@addcontentsline@{#1}{#2}{#3}%
\endgoroup
}
\DeclareRobustCommand*{\etocimmediatetoccontentsline}
{\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}}
\def\Etoc@storetocdepth {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}}
\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax}
\def\etocobeytoctocdepth {\def\etoc@settocdepth
{\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}}
\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth
\global\c@tocdepth\Etoc@savedtocdepth\relax\fi }
\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble }
\def\etocsettocdepth {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth }
\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup
\expandafter\Etoc@set@tocdepth@
\else\expandafter\Etoc@set@toctocdepth
\fi }
\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@}
{\PackageWarning{etoc}
{Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}}
{\global\c@tocdepth\csname Etoc@#1@@\endcsname}%
}
\def\Etoc@set@toctocdepth #1#{\Etoc@set@toctocdepth@ }
\def\Etoc@set@toctocdepth@ #1{%
\@ifundefined{Etoc@#1@@}%
{\PackageWarning{etoc}
{Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}%
{\addtocontents {toc}
{\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}%
}
\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately}
\def\Etoc@set@toctocdepth@immediately #1{%
\@ifundefined{Etoc@#1@@}%
{\PackageWarning{etoc}
{Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}%
{\begingroup
\let\Etoc@originalwrite\write
\def\write{\immediate\Etoc@originalwrite}%
\addtocontents {toc}
{\protect\etoc@settocdepth\expandafter\protect
\csname Etoc@#1@@\endcsname}%
\endgroup
}%
}
\def\etocdepthtag #1#{\Etoc@depthtag }
\def\Etoc@depthtag #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}}
\def\etocimmediatedepthtag #1#{\Etoc@depthtag@immediately }
\def\Etoc@depthtag@immediately #1{%
\begingroup
\let\Etoc@originalwrite\write
\def\write{\immediate\Etoc@originalwrite}%
\addtocontents {toc}{\protect\etoc@depthtag {#1}}%
\endgroup
}
\def\etocignoredepthtags {\let\etoc@depthtag \@gobble }
\def\etocobeydepthtags {\let\etoc@depthtag \Etoc@depthtag@ }
\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}%
{}% ignore in silence if tag has no associated depth
{\afterassignment\Etoc@@nottoodeep
\global\c@tocdepth\csname Etoc@depthof@#1\endcsname}%
}
\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}%
{\PackageWarning{etoc}
{Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}%
{\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}%
}
\def\Etoc@tocvsec@err #1{\PackageError {etoc}
{The command \protect#1\space is incompatible with `etoc'}
{Use \protect\etocsettocdepth.toc as replacement}%
}%
\AtBeginDocument {%
\@ifclassloaded{memoir}
{\PackageInfo {etoc}
{Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak
\protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak
capabilities (see `etoc' manual). \space
Also, \protect\etocsettocdepth\MessageBreak
and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak
`memoir' command \protect\maxtocdepth\@gobble}%
}%
{\@ifpackageloaded {tocvsec2}{%
\def\maxtocdepth #1{\Etoc@tocvsec@err \maxtocdepth }%
\def\settocdepth #1{\Etoc@tocvsec@err \settocdepth }%
\def\resettocdepth {\@ifstar {\Etoc@tocvsec@err \resettocdepth }%
{\Etoc@tocvsec@err \resettocdepth }%
}%
\def\save@tocdepth #1#2#3{}%
\let\reset@tocdepth\relax
\let\remax@tocdepth\relax
\let\tableofcontents\etoctableofcontents
\PackageWarningNoLine {etoc}
{Package `tocvsec2' detected and its modification of\MessageBreak
\protect\tableofcontents\space reverted. \space Use
\protect\etocsettocdepth.toc\MessageBreak as a replacement
for `tocvsec2' toc-related commands}%
}% tocvsec2 loaded
{}% tocvsec2 not loaded
}%
}%
\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }%
\def\invisiblelocaltableofcontents
{\etocsetnexttocdepth {-3}\localtableofcontents }%
\def\etocsetnexttocdepth #1{%
\@ifundefined{Etoc@#1@@}
{\PackageWarning{etoc}
{Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}}
{\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}%
}%
\def\Etoc@setnexttocdepth#1{%
\def\Etoc@tocdepthset{%
\Etoc@tocdepthreset
\edef\Etoc@tocdepthreset {%
\global\c@tocdepth\the\c@tocdepth\space
\global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty
}%
\global\c@tocdepth#1%
\global\let\Etoc@tocdepthset\@empty
}%
}%
\let\Etoc@tocdepthreset\@empty
\let\Etoc@tocdepthset \@empty
\def\etocsetlocaltop #1#{\Etoc@set@localtop}%
\def\Etoc@set@localtop #1{%
\@ifundefined{Etoc@#1@@}%
{\PackageWarning{etoc}
{Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}%
{\addtocontents {toc}
{\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}%
}%
\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}%
\def\Etoc@set@localtop@immediately #1{%
\@ifundefined{Etoc@#1@@}%
{\PackageWarning{etoc}
{Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}%
{\begingroup
\let\Etoc@originalwrite\write
\def\write{\immediate\Etoc@originalwrite}%
\addtocontents {toc}
{\protect\etoc@setlocaltop\expandafter\protect
\csname Etoc@#1@@\endcsname}%
\endgroup
}%
}%
\def\etoc@setlocaltop #1{%
\ifnum#1=\Etoc@maxlevel
\Etoc@skipthisonetrue
\else
\Etoc@skipthisonefalse
\global\let\Etoc@level #1%
\global\let\Etoc@virtualtop #1%
\ifEtoc@localtoc
\ifEtoc@stoptoc
\Etoc@skipthisonetrue
\else
\ifEtoc@notactive
\Etoc@skipthisonetrue
\else
\unless\ifnum\Etoc@level>\etoclocaltop
\Etoc@skipthisonetrue
\global\Etoc@stoptoctrue
\fi
\fi
\fi
\fi
\fi
\let\Etoc@next\@empty
\ifEtoc@skipthisone
\else
\ifnum\Etoc@level>\c@tocdepth
\else
\ifEtoc@standardlines
\else
\let\Etoc@next\Etoc@setlocaltop@doendsandbegin
\fi
\fi
\fi
\Etoc@next
}%
\def\Etoc@setlocaltop@doendsandbegin{%
\Etoc@doendsandbegin
\global\Etoc@skipprefixfalse
}
\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}%
{\let\protect\etoc@startlocaltoc\protect\@gobble
\let\protect\etoc@settocdepth\protect\@gobble
\let\protect\etoc@depthtag\protect\@gobble
\let\protect\etoc@setlocaltop\protect\@gobble}{}}%
\def\etocstandardlines {\Etoc@standardlinestrue}
\def\etoctoclines {\Etoc@standardlinesfalse}
\etocdefaultlines
\etocstandardlines
\def\etocstandarddisplaystyle{%
\PackageWarningNoLine{etoc}{%
\string\etocstandarddisplaystyle \on@line\MessageBreak
is deprecated. \space Please use \string\etocclasstocstyle}%
}
\expandafter\def\expandafter\etocclasstocstyle\expandafter{%
\etocclasstocstyle
\Etoc@classstyletrue
}
\def\etocetoclocaltocstyle{\Etoc@etocstyletrue}
\def\etocusertocstyle{\Etoc@etocstylefalse}
\etocclasstocstyle
\etocetoclocaltocstyle
\etocobeytoctocdepth
\etocobeydepthtags
\let\etocbeforetitlehook \@empty
\let\etocaftertitlehook \@empty
\let\etocaftercontentshook \@empty
\let\etocaftertochook \@empty
\def\etockeeporiginaltableofcontents
{\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}%
\endinput
%%
%% End of file `etoc.sty'.